diff --git a/CHANGELOG_OLD.md b/CHANGELOG_OLD.md index 962f28243..5b8023c62 100644 --- a/CHANGELOG_OLD.md +++ b/CHANGELOG_OLD.md @@ -1,4 +1,8 @@ The newest change log is in README.md +## 8.0.2 (2024-04-08) + +* (klein0r) Forced downgrade of socket-client (object change issues) + ## 8.0.1 (2024-04-08) * (klein0r) Fixed some missing translations (uk) diff --git a/README.md b/README.md index 81109b228..9af9206e3 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Since v5.5.0 of the JavaScript adapter the following locations (relative to the -### **WORK IN PROGRESS** +### 8.3.0 (2024-05-09) * (klein0r) Added createTempFile to sandbox * (klein0r) Fixed log message on script start @@ -65,10 +65,6 @@ Since v5.5.0 of the JavaScript adapter the following locations (relative to the * (klein0r) Updates dependencies (latest adapter-react-v5 framework) -### 8.0.2 (2024-04-08) - -* (klein0r) Forced downgrade of socket-client (object change issues) - ## License The MIT License (MIT) diff --git a/admin/asset-manifest.json b/admin/asset-manifest.json index 01c4f798c..5a6d5b63e 100644 --- a/admin/asset-manifest.json +++ b/admin/asset-manifest.json @@ -1,38 +1,38 @@ { "files": { - "main.js": "/static/js/main.567b63d3.js", + "main.js": "/static/js/main.7a2f8fd5.js", "static/css/373.d5afd7f9.chunk.css": "/static/css/373.d5afd7f9.chunk.css", - "static/js/373.121bcab3.chunk.js": "/static/js/373.121bcab3.chunk.js", + "static/js/373.618c56e7.chunk.js": "/static/js/373.618c56e7.chunk.js", "static/js/966.088c1225.chunk.js": "/static/js/966.088c1225.chunk.js", "static/js/30.8bf17a3b.chunk.js": "/static/js/30.8bf17a3b.chunk.js", "static/js/704.4ede9892.chunk.js": "/static/js/704.4ede9892.chunk.js", "static/js/586.cfd14ef3.chunk.js": "/static/js/586.cfd14ef3.chunk.js", "static/js/173.4e774f7f.chunk.js": "/static/js/173.4e774f7f.chunk.js", "static/js/146.6a8cfa64.chunk.js": "/static/js/146.6a8cfa64.chunk.js", - "static/js/43.e64c0f8f.chunk.js": "/static/js/43.e64c0f8f.chunk.js", - "static/js/950.90994e9b.chunk.js": "/static/js/950.90994e9b.chunk.js", + "static/js/43.67f9143e.chunk.js": "/static/js/43.67f9143e.chunk.js", + "static/js/950.394dda0b.chunk.js": "/static/js/950.394dda0b.chunk.js", "static/js/972.193715b2.chunk.js": "/static/js/972.193715b2.chunk.js", "static/js/765.0c5ed962.chunk.js": "/static/js/765.0c5ed962.chunk.js", "static/js/892.01fa21a3.chunk.js": "/static/js/892.01fa21a3.chunk.js", "static/js/61.54b23816.chunk.js": "/static/js/61.54b23816.chunk.js", "static/js/68.2a2f8109.chunk.js": "/static/js/68.2a2f8109.chunk.js", "static/js/585.35111b99.chunk.js": "/static/js/585.35111b99.chunk.js", - "static/js/674.eb172e03.chunk.js": "/static/js/674.eb172e03.chunk.js", + "static/js/674.510fefd8.chunk.js": "/static/js/674.510fefd8.chunk.js", "static/js/869.9f712f3c.chunk.js": "/static/js/869.9f712f3c.chunk.js", - "static/js/424.ae779d44.chunk.js": "/static/js/424.ae779d44.chunk.js", + "static/js/424.6e0b385f.chunk.js": "/static/js/424.6e0b385f.chunk.js", "static/js/462.3871f0a4.chunk.js": "/static/js/462.3871f0a4.chunk.js", "static/js/894.49a00423.chunk.js": "/static/js/894.49a00423.chunk.js", "static/js/152.4318951d.chunk.js": "/static/js/152.4318951d.chunk.js", "static/js/734.ee435db8.chunk.js": "/static/js/734.ee435db8.chunk.js", "static/js/63.0ce6c42b.chunk.js": "/static/js/63.0ce6c42b.chunk.js", "static/js/826.549b32d7.chunk.js": "/static/js/826.549b32d7.chunk.js", - "static/js/982.a80cd517.chunk.js": "/static/js/982.a80cd517.chunk.js", + "static/js/982.8ded96b3.chunk.js": "/static/js/982.8ded96b3.chunk.js", "static/js/721.08eb88a4.chunk.js": "/static/js/721.08eb88a4.chunk.js", "static/js/335.9591bd2c.chunk.js": "/static/js/335.9591bd2c.chunk.js", "static/js/9.1974e3b5.chunk.js": "/static/js/9.1974e3b5.chunk.js", - "static/js/310.13fa5162.chunk.js": "/static/js/310.13fa5162.chunk.js", - "static/js/823.dfc6b5cf.chunk.js": "/static/js/823.dfc6b5cf.chunk.js", - "static/js/516.837647f3.chunk.js": "/static/js/516.837647f3.chunk.js", + "static/js/310.86fe0cef.chunk.js": "/static/js/310.86fe0cef.chunk.js", + "static/js/275.88f32e0b.chunk.js": "/static/js/275.88f32e0b.chunk.js", + "static/js/456.e92b95ee.chunk.js": "/static/js/456.e92b95ee.chunk.js", "static/media/tileRules.png": "/static/media/tileRules.7ed5885a66686cc288b1.png", "static/media/docs.md": "/static/media/docs.1f96bec81cf08933d921.md", "static/media/back.jpg": "/static/media/back.bda2bbe51be338a0f657.jpg", @@ -162,41 +162,41 @@ "static/media/Garage Doors.svg": "/static/media/Garage Doors.0c2a1cfca7ad1ea59625.svg", "static/media/Outdoor Blinds.svg": "/static/media/Outdoor Blinds.37b85a9c060a4af48da9.svg", "static/media/Upstairs.svg": "/static/media/Upstairs.441813e54e0daca0882d.svg", - "main.567b63d3.js.map": "/static/js/main.567b63d3.js.map", + "main.7a2f8fd5.js.map": "/static/js/main.7a2f8fd5.js.map", "373.d5afd7f9.chunk.css.map": "/static/css/373.d5afd7f9.chunk.css.map", - "373.121bcab3.chunk.js.map": "/static/js/373.121bcab3.chunk.js.map", + "373.618c56e7.chunk.js.map": "/static/js/373.618c56e7.chunk.js.map", "966.088c1225.chunk.js.map": "/static/js/966.088c1225.chunk.js.map", "30.8bf17a3b.chunk.js.map": "/static/js/30.8bf17a3b.chunk.js.map", "704.4ede9892.chunk.js.map": "/static/js/704.4ede9892.chunk.js.map", "586.cfd14ef3.chunk.js.map": "/static/js/586.cfd14ef3.chunk.js.map", "173.4e774f7f.chunk.js.map": "/static/js/173.4e774f7f.chunk.js.map", "146.6a8cfa64.chunk.js.map": "/static/js/146.6a8cfa64.chunk.js.map", - "43.e64c0f8f.chunk.js.map": "/static/js/43.e64c0f8f.chunk.js.map", - "950.90994e9b.chunk.js.map": "/static/js/950.90994e9b.chunk.js.map", + "43.67f9143e.chunk.js.map": "/static/js/43.67f9143e.chunk.js.map", + "950.394dda0b.chunk.js.map": "/static/js/950.394dda0b.chunk.js.map", "972.193715b2.chunk.js.map": "/static/js/972.193715b2.chunk.js.map", "765.0c5ed962.chunk.js.map": "/static/js/765.0c5ed962.chunk.js.map", "892.01fa21a3.chunk.js.map": "/static/js/892.01fa21a3.chunk.js.map", "61.54b23816.chunk.js.map": "/static/js/61.54b23816.chunk.js.map", "68.2a2f8109.chunk.js.map": "/static/js/68.2a2f8109.chunk.js.map", "585.35111b99.chunk.js.map": "/static/js/585.35111b99.chunk.js.map", - "674.eb172e03.chunk.js.map": "/static/js/674.eb172e03.chunk.js.map", + "674.510fefd8.chunk.js.map": "/static/js/674.510fefd8.chunk.js.map", "869.9f712f3c.chunk.js.map": "/static/js/869.9f712f3c.chunk.js.map", - "424.ae779d44.chunk.js.map": "/static/js/424.ae779d44.chunk.js.map", + "424.6e0b385f.chunk.js.map": "/static/js/424.6e0b385f.chunk.js.map", "462.3871f0a4.chunk.js.map": "/static/js/462.3871f0a4.chunk.js.map", "894.49a00423.chunk.js.map": "/static/js/894.49a00423.chunk.js.map", "152.4318951d.chunk.js.map": "/static/js/152.4318951d.chunk.js.map", "734.ee435db8.chunk.js.map": "/static/js/734.ee435db8.chunk.js.map", "63.0ce6c42b.chunk.js.map": "/static/js/63.0ce6c42b.chunk.js.map", "826.549b32d7.chunk.js.map": "/static/js/826.549b32d7.chunk.js.map", - "982.a80cd517.chunk.js.map": "/static/js/982.a80cd517.chunk.js.map", + "982.8ded96b3.chunk.js.map": "/static/js/982.8ded96b3.chunk.js.map", "721.08eb88a4.chunk.js.map": "/static/js/721.08eb88a4.chunk.js.map", "335.9591bd2c.chunk.js.map": "/static/js/335.9591bd2c.chunk.js.map", "9.1974e3b5.chunk.js.map": "/static/js/9.1974e3b5.chunk.js.map", - "310.13fa5162.chunk.js.map": "/static/js/310.13fa5162.chunk.js.map", - "823.dfc6b5cf.chunk.js.map": "/static/js/823.dfc6b5cf.chunk.js.map", - "516.837647f3.chunk.js.map": "/static/js/516.837647f3.chunk.js.map" + "310.86fe0cef.chunk.js.map": "/static/js/310.86fe0cef.chunk.js.map", + "275.88f32e0b.chunk.js.map": "/static/js/275.88f32e0b.chunk.js.map", + "456.e92b95ee.chunk.js.map": "/static/js/456.e92b95ee.chunk.js.map" }, "entrypoints": [ - "static/js/main.567b63d3.js" + "static/js/main.7a2f8fd5.js" ] } \ No newline at end of file diff --git a/admin/google-blockly/own/blocks_trigger.js b/admin/google-blockly/own/blocks_trigger.js index c60905aec..39d16bdae 100644 --- a/admin/google-blockly/own/blocks_trigger.js +++ b/admin/google-blockly/own/blocks_trigger.js @@ -1297,6 +1297,7 @@ Blockly.Blocks['onFile_data'] = { [Blockly.Translate('onFile_data_size'), 'size'], [Blockly.Translate('onFile_data_mimeType'), 'mimeType'], [Blockly.Translate('onFile_data_id'), 'id'], + [Blockly.Translate('onFile_data_tempFile'), 'TEMP_FILE_PATH'], ]), 'ATTR'); this.setInputsInline(true); @@ -1339,7 +1340,11 @@ Blockly.Blocks['onFile_data'] = { Blockly.JavaScript['onFile_data'] = function(block) { const attr = block.getFieldValue('ATTR'); - return [attr, Blockly.JavaScript.ORDER_ATOMIC]; + if (attr === 'TEMP_FILE_PATH') { + return [`createTempFile(fileName, data)`, Blockly.JavaScript.ORDER_ATOMIC]; + } else { + return [attr, Blockly.JavaScript.ORDER_ATOMIC]; + } }; // --- onFile ----------------------------------------------------------- diff --git a/admin/google-blockly/own/blocks_words.js b/admin/google-blockly/own/blocks_words.js index fd7435302..4947e34df 100644 --- a/admin/google-blockly/own/blocks_words.js +++ b/admin/google-blockly/own/blocks_words.js @@ -566,6 +566,7 @@ Blockly.Words['onFile_data_filename'] = { en: 'file name', Blockly.Words['onFile_data_size'] = { en: 'file size', de: 'Dateigröße', ru: 'Размер файла', pt: 'Tamanho do arquivo', nl: 'Bestandsgrootte', fr: 'Taille du fichier', it: 'Dimensione del file', es: 'Tamaño del archivo', pl: 'Rozmiar pliku', uk: 'Розмір файлу', 'zh-cn': '文件大小' }; Blockly.Words['onFile_data_mimeType'] = { en: 'mimeType', de: 'mimeType', ru: 'mimeType', pt: 'mimeType', nl: 'mimeType', fr: 'mimeType', it: 'mimeType', es: 'mimeType', pl: 'mimeType', uk: 'mimeType', 'zh-cn': 'mimeType' }; Blockly.Words['onFile_data_id'] = { en: 'id', de: 'id', ru: 'id', pt: 'id', nl: 'id', fr: 'id', it: 'id', es: 'id', pl: 'id', uk: 'id', 'zh-cn': 'id' }; +Blockly.Words['onFile_data_tempFile'] = { en: 'temporary file path', de: 'Temporärer Dateipfad', ru: 'Временный путь файла', pt: 'Caminho de arquivo temporário', nl: 'Tijdelijk bestandspad', fr: 'Chemin temporaire du fichier', it: 'Percorso di file temporaneo', es: 'Carril de archivo temporal', pl: 'Ścieżka pliku tymczasowego', uk: 'Тимчасовий шлях файлу', 'zh-cn': '临时文件路径' }; Blockly.Words['onFile_data_warning'] = { en: 'This block must be used inside of file trigger blocks', de: 'Dieser Block muss innerhalb von Datei-Trigger-Blöcken verwendet werden', ru: 'Этот блок должен быть использован внутри файловых триггерных блоков', pt: 'Este bloco deve ser usado dentro de blocos de gatilho de arquivo', nl: 'Dit blok moet worden gebruikt binnen bestand trigger blokken', fr: 'Ce bloc doit être utilisé à l\'intérieur des blocs de déclenchement de fichier', it: 'Questo blocco deve essere utilizzato all\'interno dei blocchi di file trigger', es: 'Este bloque debe ser utilizado dentro de bloques de activación de archivos', pl: 'Ten blok musi być użyty wewnątrz bloków wyzwalających plik', uk: 'Цей блок повинен бути використаний всередині блоків запуску файлів', 'zh-cn': '此块必须在文件触发块内使用' }; Blockly.Words['onFile_data_tooltip'] = { en: 'Information about updated file', de: 'Informationen über die aktualisierte Datei', ru: 'Информация об обновленном файле', pt: 'InformaçÃμes sobre o arquivo atualizado', nl: 'Informatie over bijgewerkt bestand', fr: 'Informations sur le fichier mis à jour', it: 'Informazioni sul file aggiornato', es: 'Información sobre el archivo actualizado', pl: 'Informacje o zaktualizowanym pliku', uk: 'Інформація про оновлений файл', 'zh-cn': '关于更新文件的信息' }; diff --git a/admin/static/js/275.88f32e0b.chunk.js b/admin/static/js/275.88f32e0b.chunk.js new file mode 100644 index 000000000..5650a856e --- /dev/null +++ b/admin/static/js/275.88f32e0b.chunk.js @@ -0,0 +1,3 @@ +/*! For license information please see 275.88f32e0b.chunk.js.LICENSE.txt */ +(self.webpackChunkjs=self.webpackChunkjs||[]).push([[275],{10860:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=s(n(53482)),c=n(32496),l=n(65298),d=a(n(12539)),u=a(n(50256)),h=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],p=["January","February","March","April","May","June","July","August","September","October","November","December"];function m(e,t){let n=[];if("*"===e){if(24===t||60===t||7===t)for(let e=0;e1){const t=parseInt(e[1],10);for(let r=parseInt(e[0],10);r<=t;r++)n.push(r)}else n.push(parseInt(r[o],10))}n.sort();for(let o=n.length-1;o>=0;o--)n[o]===n[o+1]&&n.splice(o+1,1);return n}function f(e,t){if("object"!==typeof e&&(e=[e]),e.length===t)return"*";const n=[];if(!e.length)return"-";(e=e.map((e=>parseInt(e,10)))).sort(((e,t)=>e-t));let r=e[0],o=e[0];for(let s=1;sthis.props.onChange&&this.props.onChange(this.state.cron)),100)}static cron2state(e){const t=(e=e.replace(/['"]/g,"").trim()).split(" ").map((e=>e.trim()));let n;return n=6===t.length?{seconds:t[0]||"*",minutes:t[1]||"*",hours:t[2]||"*",dates:t[3]||"*",months:t[4]||"*",dow:t[5]||"*"}:{seconds:!1,minutes:t[0]||"*",hours:t[1]||"*",dates:t[2]||"*",months:t[3]||"*",dow:t[4]||"*"},n}static state2cron(e){let t="".concat(e.minutes," ").concat(e.hours," ").concat(e.dates," ").concat(e.months," ").concat(e.dow);return!1!==e.seconds&&(t="".concat(e.seconds," ").concat(t)),t}recalcCron(){const e=_.state2cron(this.state);e!==this.state.cron&&this.setState({cron:e},(()=>this.props.onChange&&this.props.onChange(this.state.cron)))}onChange(e){e!==this.state.cron&&(this.setState({cron:e}),this.props.onChange&&this.props.onChange(e))}onToggle(e,t,n){if(!0===e)this.setCronAttr(t,"*");else if(!1===e)60===n||24===n?this.setCronAttr(t,"0"):this.setCronAttr(t,"1");else{const r=m(this.state[t],n),o=r.indexOf(e);-1!==o?r.splice(o,1):(r.push(e),r.sort()),this.setCronAttr(t,f(r,n))}}getDigitsSelector(e,t){let n=[];if(7===t)n=[1,2,3,4,5,6,0];else if(60===t||24===t)for(let o=0;othis.onToggle(!1,e,t)},d.default.t("ra_Deselect all")),i.default.createElement(l.Button,{key:"addall",variant:"contained",className:this.props.classes.numberButton,color:"secondary",onClick:()=>this.onToggle(!0,e,t)},d.default.t("ra_Select all")),i.default.createElement("div",{key:"all"},n.map((n=>[7===t&&4===n||12===t&&7===n||31===t&&!((n-1)%10)||60===t&&n&&!(n%10)||24===t&&n&&!(n%6)?i.default.createElement("div",{key:"allInner".concat(n),style:{width:"100%"}}):null,i.default.createElement(l.Button,{key:"_".concat(n),variant:-1!==r.indexOf(n)?"contained":"outlined",className:this.props.classes.numberButton,color:-1!==r.indexOf(n)?"secondary":"primary",onClick:()=>this.onToggle(n,e,t)},7===t?d.default.t(h[n]):12===t?p[n-1]:n)])))]}getPeriodsTab(e,t){let n,r=this.state[e],o="*"===r,s=void 0!==r&&null!==r&&r.toString().includes("/");if(null===this.state.modes[e]){n=o?"every":s?"everyN":"specific";const t=JSON.parse(JSON.stringify(this.state.modes));return t[e]=n,setTimeout((()=>this.setState({modes:t},(()=>this.recalcCron()))),100),null}o="every"===this.state.modes[e],s="everyN"===this.state.modes[e],n=this.state.modes[e];let a=1;return s&&r&&(a=parseInt(r.replace("*/",""),10)||1),i.default.createElement("div",null,i.default.createElement(l.Select,{variant:"standard",className:this.props.classes.periodSelect,style:{verticalAlign:"bottom"},value:n,onChange:n=>{const r=JSON.parse(JSON.stringify(this.state.modes));if(r[e]=n.target.value,"every"===n.target.value)this.setCronAttr(e,"*",r);else if("everyN"===n.target.value){const t=parseInt((this.state[e]||"").toString().replace("*/",""),10)||1;this.setCronAttr(e,"*/".concat(t),r)}else if("specific"===n.target.value){let n=parseInt((this.state[e]||"").toString().split(",")[0],10)||0;n||"months"!==e&&"dates"!==e||(n=1),this.setCronAttr(e,f(n,t),r)}}},i.default.createElement(l.MenuItem,{key:"every",value:"every"},d.default.t("sc_every_".concat(e))),i.default.createElement(l.MenuItem,{key:"everyN",value:"everyN"},d.default.t("sc_everyN_".concat(e))),i.default.createElement(l.MenuItem,{key:"specific",value:"specific"},d.default.t("sc_specific_".concat(e)))),s&&!1,s&&i.default.createElement(l.TextField,{variant:"standard",key:"interval",label:d.default.t("sc_".concat(e)),value:a,inputProps:{min:1,max:t},onChange:t=>{this.setState({[e]:"*/".concat(t.target.value)},(()=>this.recalcCron()))},InputLabelProps:{shrink:!0},type:"number",margin:"normal"}),!o&&!s&&this.getDigitsSelector(e,t))}static convertCronToText(e,t){return e.split(" ").includes("-")?d.default.t("ra_Invalid CRON"):(0,u.default)(e,t)}setCronAttr(e,t,n){n?"seconds"===e?this.setState({seconds:t,modes:n},(()=>this.recalcCron())):"minutes"===e?this.setState({minutes:t,modes:n},(()=>this.recalcCron())):"hours"===e||"dates"===e?this.setState({hours:t,modes:n},(()=>this.recalcCron())):"months"===e?this.setState({months:t,modes:n},(()=>this.recalcCron())):"dow"===e?this.setState({dow:t,modes:n},(()=>this.recalcCron())):this.setState({modes:n},(()=>this.recalcCron())):"seconds"===e?this.setState({seconds:t},(()=>this.recalcCron())):"minutes"===e?this.setState({minutes:t},(()=>this.recalcCron())):"hours"===e||"dates"===e?this.setState({hours:t},(()=>this.recalcCron())):"months"===e?this.setState({months:t},(()=>this.recalcCron())):"dow"===e&&this.setState({dow:t},(()=>this.recalcCron()))}render(){const e=!1!==this.state.seconds?this.state.tab:this.state.tab+1;return i.default.createElement("div",{className:this.props.classes.mainDiv},i.default.createElement("div",{style:{paddingLeft:8,width:"100%"}},i.default.createElement(l.TextField,{variant:"standard",style:{width:"100%"},value:this.state.cron,disabled:!0})),i.default.createElement("div",{style:{paddingLeft:8,width:"100%",height:60}},_.convertCronToText(this.state.cron,this.props.language||"en")),i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Checkbox,{checked:!!this.state.seconds,onChange:e=>this.setState({seconds:!!e.target.checked&&"*"},(()=>this.recalcCron()))}),label:d.default.t("ra_use seconds")}),i.default.createElement(l.AppBar,{position:"static",classes:{root:this.props.classes.appBar},color:"secondary"},i.default.createElement(l.Tabs,{value:this.state.tab,className:this.props.classes.appBar,color:"secondary",onChange:(e,t)=>this.setState({tab:t})},!1!==this.state.seconds&&i.default.createElement(l.Tab,{id:"sc_seconds",label:d.default.t("sc_seconds")}),i.default.createElement(l.Tab,{id:"minutes",label:d.default.t("sc_minutes")}),i.default.createElement(l.Tab,{id:"hours",label:d.default.t("sc_hours")}),i.default.createElement(l.Tab,{id:"dates",label:d.default.t("sc_dates")}),i.default.createElement(l.Tab,{id:"months",label:d.default.t("sc_months")}),i.default.createElement(l.Tab,{id:"dow",label:d.default.t("sc_dows")}))),0===e&&i.default.createElement("div",{className:this.props.classes.tabContent},this.getPeriodsTab("seconds",60)),1===e&&i.default.createElement("div",{className:this.props.classes.tabContent},this.getPeriodsTab("minutes",60)),2===e&&i.default.createElement("div",{className:this.props.classes.tabContent},this.getPeriodsTab("hours",24)),3===e&&i.default.createElement("div",{className:this.props.classes.tabContent},this.getPeriodsTab("dates",31)),4===e&&i.default.createElement("div",{className:this.props.classes.tabContent},this.getPeriodsTab("months",12)),5===e&&i.default.createElement("div",{className:this.props.classes.tabContent},this.getPeriodsTab("dow",7)))}}t.default=(0,c.withStyles)({mainDiv:{width:"100%",height:"100%"},periodSelect:{display:"block",width:200},slider:{marginTop:20,display:"block",width:"100%"},tabContent:{padding:20,height:"calc(100% - 240px)",overflow:"auto"},numberButton:{padding:4,minWidth:40,margin:5},numberButtonBreak:{display:"block"},appBar:{color:"white"}})(_)},35494:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={"text/plain":"Text","text/html":"Url",default:"Text"};t.default=function(e,t){let r,o,s,a,i=!1;const c=(t=t||{}).debug||!1;try{r=function(){const e=document.getSelection();if(!(null===e||void 0===e?void 0:e.rangeCount))return()=>{};let t=document.activeElement;const n=[];for(let r=0;r{"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((t=>e.addRange(t))),t&&t.focus()}}(),o=document.createRange(),s=document.getSelection(),a=document.createElement("span"),a.textContent=e,a.ariaHidden="true",a.style.all="unset",a.style.position="fixed",a.style.top="0px",a.style.clip="rect(0, 0, 0, 0)",a.style.whiteSpace="pre",a.style.webkitUserSelect="text",a.style.MozUserSelect="text",a.style.msUserSelect="text",a.style.userSelect="text",a.addEventListener("copy",(r=>{var o,s,a,i;if(r.stopPropagation(),null===t||void 0===t?void 0:t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){c&&console.warn("unable to use e.clipboardData"),c&&console.warn("trying IE specific stuff"),null===(o=window.clipboardData)||void 0===o||o.clearData();const r=n[t.format]||n.default;null===(s=window.clipboardData)||void 0===s||s.setData(r,e)}else null===(a=r.clipboardData)||void 0===a||a.clearData(),null===(i=r.clipboardData)||void 0===i||i.setData(t.format,e)})),document.body.appendChild(a),o.selectNodeContents(a),null===s||void 0===s||s.addRange(o);if(!document.execCommand("copy"))throw new Error("copy command was unsuccessful");i=!0}catch(l){c&&console.error("unable to copy using execCommand: ",l),c&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),i=!0}catch(d){c&&console.error("unable to copy using clipboardData: ",d),c&&console.error("falling back to prompt");const n=function(e){const t="".concat(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl","+C");return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message||"":"Copy to clipboard: #{key}, Enter");window.prompt(n,e)}}finally{s&&(o&&"function"===typeof s.removeRange?s.removeRange(o):s.removeAllRanges()),a&&document.body.removeChild(a),r&&r()}return i}},81363:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getSelectIdIcon=t.getSystemIcon=void 0;const o=r(n(53482)),s=r(n(82239)),a=n(21839),i=r(n(53905)),c=r(n(653));t.getSystemIcon=function(e){let t;const n=null===e||void 0===e?void 0:e._id;return n?(n.startsWith("_design/")||"system"===n?t=o.default.createElement(a.SettingsApplications,{className:"iconOwn"}):"0_userdata"===n||"0_userdata.0"===n?t=o.default.createElement(a.Photo,{className:"iconOwn"}):"alias"===n||"alias.0"===n?t=o.default.createElement(i.default,{className:"iconOwn"}):"system.adapter"===n?t=o.default.createElement(a.SettingsApplications,{className:"iconOwn"}):"system.group"===n?t=o.default.createElement(a.SupervisedUserCircle,{className:"iconOwn"}):"system.user"===n?t=o.default.createElement(a.PersonOutlined,{className:"iconOwn"}):"system.host"===n?t=o.default.createElement(a.Router,{className:"iconOwn"}):n.endsWith(".connection")||n.endsWith(".connected")?t=o.default.createElement(a.Wifi,{className:"iconOwn"}):n.endsWith(".info")?t=o.default.createElement(a.Info,{className:"iconOwn"}):"meta"===(null===e||void 0===e?void 0:e.type)&&(t=o.default.createElement(a.Description,{className:"iconOwn"})),t||null):null},t.getSelectIdIcon=function(e,t){t=t||".";let n="";const r=null===e||void 0===e?void 0:e.common;if(r){const o=r.icon;if(o)if(o.startsWith("data:image/"))n=o;else{if(!o.includes("."))return null;{let s;"instance"===e.type||"adapter"===e.type?n="".concat(t,"/adapter/").concat(r.name,"/").concat(o):e._id&&e._id.startsWith("system.adapter.")?(s=e._id.split(".",3),"/"===o[0]?s[2]+=o:s[2]+="/".concat(o),n="".concat(t,"/adapter/").concat(s[2])):(s=e._id.split(".",2),"/"===o[0]?s[0]+=o:s[0]+="/".concat(o),n="".concat(t,"/adapter/").concat(s[0]))}}}return n||null};const l=window.location.hostname.includes("iobroker.in"),d=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")+1);t.default=e=>{var t,n,r;if(e.src){if("string"===typeof e.src){if(e.src.length<3)return o.default.createElement("span",{title:e.title||void 0,style:Object.assign({height:27,marginTop:-8},e.styleUTF8||e.style),className:c.default.clsx(e.className,"iconOwn")},e.src);if(e.src.startsWith("data:image/svg"))return o.default.createElement(s.default,{title:e.title||void 0,src:e.src,className:c.default.clsx(e.className,"iconOwn"),width:(null===(t=e.style)||void 0===t?void 0:t.width)||28,height:(null===(n=e.style)||void 0===n?void 0:n.height)||(null===(r=e.style)||void 0===r?void 0:r.width)||28,style:e.style||{}});if(l&&!e.src.startsWith("http://")&&!e.src.startsWith("https://")){let t=e.src;return t.startsWith("./")?t=d+t.substring(2):t.startsWith("/")||(t=d+t),o.default.createElement("img",{title:e.title||void 0,style:e.style||{},className:c.default.clsx(e.className,"iconOwn"),src:"https://remote-files.iobroker.in".concat(t),alt:e.alt||void 0,ref:e.ref,onError:t=>{e.onError&&e.onError(t)}})}return o.default.createElement("img",{title:e.title||void 0,style:e.style||{},className:c.default.clsx(e.className,"iconOwn"),src:e.src,alt:e.alt||void 0,ref:e.ref,onError:e.onError})}return e.src}return null}},95881:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const a=s(n(53482));t.default=function(e){(0,a.useEffect)((()=>{if(!window.document.getElementById("loader-iobroker-component")){const e=window.document.createElement("style");e.setAttribute("id","loader-iobroker-component"),e.innerHTML="\n/**\n * Copyright 2018-2024 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\n\n.logo-background-light, .logo-background-colored {\n background: white;\n}\n.logo-background-dark, .logo-background-blue {\n background: black;\n}\n.logo-div {\n position: absolute;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n overflow: hidden;\n border-radius: 50%;\n z-index: 2;\n}\n.logo-border {\n /*border-color: #164477;*/\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n.logo-top {\n position: absolute;\n width: 4.5%;\n height: 16%;\n top: 0;\n z-index: 2;\n}\n.logo-i {\n position: absolute;\n width: 14.5%;\n height: 60%;\n top: 20%;\n left: 42%;\n background: #3399CC;\n}\n.logo-i-top {\n position: absolute;\n width: 14.5%;\n height: 4%;\n left: 42%;\n background: #3399CC;\n border-radius: 100%;\n}\n.logo-back {\n width: 100%;\n height: 100%;\n z-index: 0;\n overflow: hidden;\n}\n@keyframes logo-grow {\n 0% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(1);\n opacity: 1\n }\n 99% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(10);\n opacity: 0;\n }\n 100% {\n width: 0;\n height: 0;\n opacity: 0;\n }\n}\n@keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }\n@keyframes logo-color-inside-light {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-dark {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-colored {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-blue {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n\n@keyframes logo-color-outside-light {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-dark {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-colored {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-blue {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n\n.logo-animate-wait {\n animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite;\n}\n\n.logo-animate-grow-light {\n background: #DDD;\n}\n.logo-animate-grow-dark {\n background: #1d1d1d;\n}\n.logo-animate-grow-colored {\n background: #DDD;\n}\n.logo-animate-grow-blue {\n background: #1d1d1d;\n}\n\n.logo-animate-grow {\n display: inline-block;\n text-align: center;\n z-index: 1;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n width: 245px;\n height: 245px;\n border-radius: 50%;\n position: absolute;\n animation: logo-grow 1s 1 ease forwards;\n}\n\n.logo-animate-color-inside-light {\n animation: logo-color-inside-light 2.5s;\n}\n.logo-animate-color-inside-dark {\n animation: logo-color-inside-dark 2.5s;\n}\n.logo-animate-color-inside-colored {\n animation: logo-color-inside-colored 2.5s;\n}\n.logo-animate-color-inside-blue {\n animation: logo-color-inside-blue 2.5s;\n}\n\n.logo-animate-color-outside-light {\n animation: logo-color-outside-light 1.5s;\n}\n.logo-animate-color-outside-dark {\n animation: logo-color-outside-dark 1.5s;\n}\n.logo-animate-color-outside-colored {\n animation: logo-color-outside-colored 1.5s;\n}\n.logo-animate-color-outside-blue {\n animation: logo-color-outside-blue 1.5s;\n}\n",window.document.head.appendChild(e)}}),[]);const t=e.size||234,n=e.themeName||e.theme||e.themeType||"light";return a.default.createElement("div",{className:"logo-back logo-background-".concat(n),style:{backgroundImage:e.backgroundImage&&"@@loginBackgroundImage@@"!==e.backgroundImage?e.backgroundImage:window.loadingBackgroundImage&&"@@loginBackgroundImage@@"!==window.loadingBackgroundImage?"url(".concat(window.loadingBackgroundImage,")"):void 0,backgroundColor:e.backgroundColor&&"@@loginBackgroundColor@@"!==e.backgroundColor?e.backgroundColor:window.loadingBackgroundColor&&"@@loginBackgroundColor@@"!==window.loadingBackgroundColor?window.loadingBackgroundColor:void 0,backgroundSize:"cover"}},"true"===window.loadingHideLogo?null:a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{className:"logo-div",style:{width:t,height:t}},a.default.createElement("div",{className:"logo-top logo-background-".concat(n),style:{left:"37%"}}),a.default.createElement("div",{className:"logo-top logo-background-".concat(n),style:{left:"57%"}}),a.default.createElement("div",{className:"logo-border logo-background-".concat(n," logo-animate-wait"),style:{borderWidth:.132*t}}),a.default.createElement("div",{className:"logo-i logo-animate-color-inside-".concat(n)}),a.default.createElement("div",{className:"logo-i-top logo-animate-color-inside-".concat(n),style:{top:"18%"}}),a.default.createElement("div",{className:"logo-i-top logo-animate-color-inside-".concat(n),style:{bottom:"18%"}})),a.default.createElement("div",{className:"logo-animate-grow logo-animate-grow-".concat(n),style:{width:t+11,height:t+11}})))}},96205:function(e,t,n){"use strict";var r,o,s=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&s(t,e,n);return a(t,e),t},c=this&&this.__classPrivateFieldGet||function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)},l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ITEM_IMAGES=t.getSelectIdIconFromObjects=void 0;const d=i(n(53482)),u=n(32496),h=l(n(82239)),p=n(65298),m=n(21839),f=l(n(8225)),_=l(n(40626)),g=l(n(68230)),v=l(n(80156)),y=l(n(97075)),b=l(n(46172)),w=l(n(34070)),S=l(n(36198)),k=l(n(42204)),C=l(n(3553)),E=l(n(47389)),x=l(n(47478)),T=l(n(17111)),O=l(n(81363)),N=l(n(72524)),D=l(n(653)),I=l(n(66556)),j=l(n(17030)),A=l(n(80918)),M=24,R=32,F=20,L=e=>"dark"===e?"#62ff25":"#37c400",z=e=>"dark"===e?"#ee56ff":"#a204b4",P=e=>"#ff6d69",B=e=>"#5773ff",W="#ff413c",U="#86211f",J="#57ff45",H="#098c04",V="#f3ad11",q="#6c5008";function G(e,t,n){return Array.isArray(e)?function(e,t){const n=[];for(let r=0;r{if(void 0===r||null===r)return;const s="object"===typeof r;n&&s&&"string"===typeof r.en&&"string"===typeof r.de?e[o]=r.en:e[o]=s?G(r,t,n):r})):function(e,t){const n={};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&t(n,e[r],r);return n}(e,((e,r,o)=>{if(void 0===r||null===r)return;if(t.includes(o))return;const s="object"===typeof r;n&&s&&"string"===typeof r.en&&"string"===typeof r.de?e[o]=r.en:e[o]=s?G(r,t,n):r}))}function K(e,t,n){const r=document.createElement("a"),o=[];n.excludeSystemRepositories&&o.push("system.repositories");const s=o.length>0||n.excludeTranslations?G(t,o,n.excludeTranslations):t,a=n.beautify?JSON.stringify(s,null,2):JSON.stringify(s);r.setAttribute("href","data:application/json;charset=utf-8,".concat(encodeURIComponent(a))),r.setAttribute("download",e),r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r)}function Y(e,t,n,r){if(n=n||0,void 0===r&&!(r=e.length-1))return e[0]===t;const o=Math.floor((n+r)/2);return t===e[o]||(r-1===n?e[n]===t||e[r]===t:t>e[o]?Y(e,t,o,r):te.role.startsWith(t)))||(y=!0)):y=!0),!y&&"_"===(null===(_=a.common)||void 0===_?void 0:_.custom)&&(null===e||void 0===e?void 0:e.custom))y=!0;else if(!y&&(null===(g=a.common)||void 0===g?void 0:g.custom)&&"_"!==(null===(v=a.common)||void 0===v?void 0:v.custom)){const t=a.common.custom;if(null===e||void 0===e?void 0:e.custom)if("_dataSources"===t)Object.keys(e.custom).find((e=>e.startsWith("history.")||e.startsWith("sql.")||e.startsWith("influxdb.")))||(y=!0);else if(Array.isArray(t)){const n=Object.keys(e.custom);t.find((e=>n.find((t=>t.startsWith(e)))))&&(y=!0)}else!0===t||Object.keys(e.custom).find((e=>e.startsWith(t)))||(y=!0);else y=!0}y||t.expertMode||(y="system"===b.id||"enum"===b.id||b.id.startsWith("system.")||b.id.startsWith("enum.")||b.id.startsWith("_design/")||b.id.endsWith(".admin")||!!(null===e||void 0===e?void 0:e.expert)),!y&&o.id&&(void 0===b.fID&&(b.fID=b.id.toLowerCase()),y=!b.fID.includes(o.id)),!y&&o.name&&(e?(void 0===b.fName&&(b.fName=e&&Z(e.name,n)||"",b.fName=b.fName.toLowerCase()),y=!b.fName.includes(o.name)):y=!0),!y&&t.role&&e&&(y=!e||!(e.role&&e.role.startsWith(o.role))),!y&&o.room&&(y=!o.room.find((e=>e===b.id||b.id.startsWith("".concat(e,"."))))),!y&&o.func&&(y=!o.func.find((e=>e===b.id||b.id.startsWith("".concat(e,"."))))),!y&&o.type&&(y=!(b.obj&&b.obj.type&&b.obj.type===o.type)),!y&&i&&(y=!(b.obj&&b.obj.type&&i.includes(b.obj.type))),!y&&o.custom&&(y=!e||("_"===o.custom?!!e.custom:!e.custom||!e.custom[o.custom]))}return b.visible=!y,b.hasVisibleChildren=!1,e.children&&c<20&&e.children.forEach((e=>{Q(e,t,n,r,o,s,a,i,c+1)&&(b.hasVisibleChildren=!0)})),b.sumVisibility=b.visible||b.hasVisibleChildren,s&&b.sumVisibility&&s.count++,b.id&&b.sumVisibility&&e.children&&e.children.forEach((e=>e.data.hasVisibleParent=!0)),b.visible||b.hasVisibleChildren}function $(e,t,n,r){var o;r=r||[];const s=e.data;return s.sumVisibility&&(s.id&&n[s.id]&&(!t||n[s.id].type===t)&&r.push(s.id),null===(o=e.children)||void 0===o||o.forEach((e=>$(e,t,n,r)))),r}function ee(e,t,n,r,o){let s;return"alias"===t||"alias.0"===t?s=d.default.createElement(m.Link,{className:"iconOwn",style:{color:z(r)}}):"0_userdata"===t||"0_userdata.0"===t?s=d.default.createElement(m.DataObject,{className:"iconOwn",style:{color:L(r)}}):t.startsWith("_design/")||"system"===t?s=d.default.createElement(m.SettingsApplications,{className:"iconOwn",style:{color:P(r)}}):"system.adapter"===t?s=d.default.createElement(m.SettingsApplications,{className:"iconOwn",style:{color:B(r)}}):"system.group"===t?s=d.default.createElement(m.SupervisedUserCircle,{className:"iconOwn"}):"system.user"===t?s=d.default.createElement(m.PersonOutlined,{className:"iconOwn"}):"system.host"===t?s=d.default.createElement(m.Router,{className:"iconOwn"}):t.endsWith(".connection")||t.endsWith(".connected")?s=d.default.createElement(m.Wifi,{className:"iconOwn"}):t.endsWith(".info")?s=d.default.createElement(m.Info,{className:"iconOwn"}):e[t]&&"meta"===e[t].type?s=d.default.createElement(m.Description,{className:"iconOwn"}):n<2&&e["system.adapter.".concat(t)]&&(s=X(e,"system.adapter.".concat(t),o)),s||null}function te(e,t){var n,r;return(null===(r=null===(n=null===e||void 0===e?void 0:e.obj)||void 0===n?void 0:n.common)||void 0===r?void 0:r.desc)&&Z(e.obj.common.desc,t)||null}function ne(e,t,n){const r=te(e,n);return(null===r||void 0===r?void 0:r.startsWith("http"))?d.default.createElement("a",{className:D.default.clsx(t.cellIdTooltipLink),href:r,target:"_blank",rel:"noreferrer"},r):d.default.createElement("span",{className:D.default.clsx(t.cellIdTooltip)},r||e.id||"")}function re(e,t){var n,r,o,s,a;const i=t.imagePrefix||".";let c=Object.keys(e);c.sort(((e,t)=>e===t?0:(e=e.replace(/\./g,"!!!"))>(t=t.replace(/\./g,"!!!"))?1:-1)),t.root&&(c=c.filter((e=>e===t.root||e.startsWith("".concat(t.root,".")))));let l=[],d="",u=0;const h={data:{name:"",id:""},children:[]},p={funcEnums:[],roomEnums:[],roles:[],ids:[],types:[],objects:e,customs:["_"],enums:[],hasSomeCustoms:!1};let m=h;for(let f=0;f1){let n=d;for(let r=u;re.data.name===v[r])));else{const o={data:{name:v[r],parent:m,id:n,obj:e[n],level:r,icon:ee(e,n,r,t.themeType,i),generated:!0}};m.children=m.children||[],m.children.push(o),m=o,p.ids.push(n)}}const n={data:{name:v[v.length-1],title:Z(null===(r=null===g||void 0===g?void 0:g.common)||void 0===r?void 0:r.name,t.lang),obj:g,parent:m,icon:X(e,_,i)||ee(e,_,0,t.themeType,i),id:_,hasCustoms:!(!(null===(o=g.common)||void 0===o?void 0:o.custom)||!Object.keys(g.common.custom).length),level:v.length-1,generated:!1,button:"state"===g.type&&!!(null===(s=g.common)||void 0===s?void 0:s.role)&&"string"===typeof g.common.role&&g.common.role.startsWith("button")&&!1!==(null===(a=g.common)||void 0===a?void 0:a.write)}};m.children=m.children||[],m.children.push(n),m=n,u=v.length,l=v,d=_}else{let e=0;for(;l[e]===v[e];)e++;if(e>0){let t=l.length;for(l=l.splice(0,e),u=e,d=l.join(".");t>e;)m.data.parent?m=m.data.parent:console.error("Parent is null for ".concat(_," ").concat(d," ").concat(l.join("."))),t--}else m=h,l=[],d="",u=0;y=!0}}while(y)}return p.roomEnums.sort(((n,r)=>{var o,s,a,i;const c=Z(null===(s=null===(o=e[n])||void 0===o?void 0:o.common)||void 0===s?void 0:s.name,t.lang)||n.split(".").pop(),l=Z(null===(i=null===(a=e[r])||void 0===a?void 0:a.common)||void 0===i?void 0:i.name,t.lang)||r.split(".").pop();return c>l?1:c{var o,s,a,i;const c=Z(null===(s=null===(o=e[n])||void 0===o?void 0:o.common)||void 0===s?void 0:s.name,t.lang)||n.split(".").pop(),l=Z(null===(i=null===(a=e[r])||void 0===a?void 0:a.common)||void 0===i?void 0:i.name,t.lang)||r.split(".").pop();return c>l?1:cr)break}return s?(o=o||0,oe(s,t,n,"".concat(r,".").concat(n[o+1]),o+1)):null}function se(e,t,n,r){var o,s;if(!t)return{rooms:[],per:!1};r=r||[];for(const c of e.roomEnums){const a=null===(o=e.objects[c])||void 0===o?void 0:o.common;if(!a)continue;const i=Z(a.name,n);(null===(s=a.members)||void 0===s?void 0:s.includes(t))&&!r.includes(i)&&r.push(i)}let a;const i=t.split(".");return i.pop(),t=i.join("."),e.objects[t]&&(a=r.length,se(e,t,n,r)),{rooms:r,per:!a}}function ae(e,t,n,r){var o,s;if(!t)return[];r=r||[];for(let a=0;a=n)o.push(0);else if(r({badge:{right:3,top:3,border:"2px solid ".concat(e.palette.background.paper),padding:"0 4px"}})))(p.Badge),de={xs:{idWidth:"100%",fields:[],widths:{}},sm:{idWidth:300,fields:["room","val"],widths:{room:100,val:200}},md:{idWidth:300,fields:["room","func","val","buttons"],widths:{name:200,room:150,func:150,val:120,buttons:120}},lg:{idWidth:300,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:300,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:165,lastChange:165}},xl:{idWidth:550,fields:["name","type","role","room","func","val","buttons","changedFrom","qualityCode","timestamp","lastChange"],widths:{name:400,type:80,role:120,room:180,func:180,val:140,buttons:120,changedFrom:120,qualityCode:100,timestamp:170,lastChange:170}}};let ue=!1;const he={id:"",name:"",room:"",func:"",role:"",type:"",custom:"",expertMode:!1};class pe extends d.Component{constructor(e){super(e),this.localStorage=window._localStorage||window.localStorage,this.lastAppliedFilter=null,this.pausedSubscribes=!1,this.selectedFound=!1,this.root=null,this.states={},this.subscribes=[],this.unsubscribeTimer=null,this.statesUpdateTimer=null,this.objectsUpdateTimer=null,this.filterTimer=null,this.adapterColumns=[],this.edit={id:"",val:"",q:0,ack:!1},this.customWidth=!1,this.resizeTimeout=null,this.resizerNextName=null,this.resizerActiveName=null,this.resizerCurrentWidths={},this.resizeLeft=!1,this.resizerOldWidth=0,this.resizerMin=0,this.resizerNextMin=0,this.resizerOldWidthNext=0,this.resizerPosition=0,this.resizerActiveDiv=null,this.resizerNextDiv=null,this.storedWidths=null,this.defaultHistory="",this.changedIds=null,this.contextMenu=null,this.recordStates=[],this.customColumnDialog=null,this.onContextMenu=e=>{this.contextMenu&&Date.now()-this.contextMenu.ts<2e3?(e.preventDefault(),this.setState({showContextMenu:{item:this.contextMenu.item}})):this.state.showContextMenu&&(e.preventDefault(),this.setState({showContextMenu:null})),this.contextMenu=null},this.onStateChange=(e,t)=>{if(console.log("> stateChange ".concat(e)),this.states[e]){const t=this.findItem(e);(null===t||void 0===t?void 0:t.data.state)&&(t.data.state=void 0)}t?this.states[e]=t:delete this.states[e],this.pausedSubscribes?this.statesUpdateTimer&&(clearTimeout(this.statesUpdateTimer),this.statesUpdateTimer=null):this.statesUpdateTimer||(this.statesUpdateTimer=setTimeout((()=>{this.statesUpdateTimer=null,this.forceUpdate()}),300))},this.onObjectChangeFromWorker=e=>{if(Array.isArray(e)){let t=null;e.forEach((e=>{const{newInnerState:n,filtered:r}=this.processOnObjectChangeElement(e.id,e.obj);r||(n&&t?Object.assign(t,n):t=n)})),t&&this.setState(t),this.afterObjectUpdated()}},this.onObjectChange=(e,t)=>{const{newInnerState:n,filtered:r}=this.processOnObjectChangeElement(e,t);r||(n&&this.setState(n),this.afterObjectUpdated())},this.getEnumsForId=e=>{const t=[];return this.info.enums.forEach((n=>{var r,o,s;if(null===(s=null===(o=null===(r=this.objects[n])||void 0===r?void 0:r.common)||void 0===o?void 0:o.members)||void 0===s?void 0:s.includes(e)){const e={_id:this.objects[n]._id,common:JSON.parse(JSON.stringify(this.objects[n].common)),native:this.objects[n].native,type:"enum"};e.common&&(delete e.common.members,delete e.common.custom,delete e.common.mobile),t.push(e)}})),t.length?t:void 0},this._createAllEnums=async(e,t)=>{var n,r;for(let o=0;o{var e,t;const{t:n}=this.props;let r=[d.default.createElement("div",{key:1},n("ra_Only following structures of objects are available:")),d.default.createElement("div",{key:2},n("ra_Folder \u2192 State")),d.default.createElement("div",{key:3},n("ra_Folder \u2192 Channel \u2192 State")),d.default.createElement("div",{key:4},n("ra_Folder \u2192 Device \u2192 Channel \u2192 State")),d.default.createElement("div",{key:5},n("ra_Device \u2192 Channel \u2192 State")),d.default.createElement("div",{key:6},n("ra_Channel \u2192 State")),d.default.createElement("div",{key:7,style:{height:10}}),d.default.createElement("div",{key:8},n('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),d.default.createElement("div",{key:9},n('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];if(this.state.selected.length||this.state.selectedNonObject){const o=this.state.selected[0]||this.state.selectedNonObject;if(o.split(".").length<2||this.objects[o]&&"state"===(null===(e=this.objects[o])||void 0===e?void 0:e.type));else if(this.state.filter.expertMode)switch(null===(t=this.objects[o])||void 0===t?void 0:t.type){case"device":r=[d.default.createElement("div",{key:1},n("ra_Only following structures of objects are available:")),d.default.createElement("div",{key:5},n("ra_Device \u2192 Channel \u2192 State")),d.default.createElement("div",{key:7,style:{height:10}}),d.default.createElement("div",{key:8},n('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),d.default.createElement("div",{key:9},n('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"folder":r=[d.default.createElement("div",{key:1},n("ra_Only following structures of objects are available:")),d.default.createElement("div",{key:2},n("ra_Folder \u2192 State")),d.default.createElement("div",{key:3},n("ra_Folder \u2192 Channel \u2192 State")),d.default.createElement("div",{key:4},n("ra_Folder \u2192 Device \u2192 Channel \u2192 State")),d.default.createElement("div",{key:7,style:{height:10}}),d.default.createElement("div",{key:8},n('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),d.default.createElement("div",{key:9},n('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))];break;case"channel":r=[d.default.createElement("div",{key:1},n("ra_Only following structures of objects are available:")),d.default.createElement("div",{key:1},n("ra_Channel \u2192 State")),d.default.createElement("div",{key:7,style:{height:10}}),d.default.createElement("div",{key:8},n('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),d.default.createElement("div",{key:9},n('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))]}else(o.startsWith("alias.0")||o.startsWith("0_userdata"))&&(r=[d.default.createElement("div",{key:1},n("ra_Only following structures of objects are available:")),d.default.createElement("div",{key:2},n("ra_Folder \u2192 State")),d.default.createElement("div",{key:3},n("ra_Folder \u2192 Channel \u2192 State")),d.default.createElement("div",{key:4},n("ra_Folder \u2192 Device \u2192 Channel \u2192 State")),d.default.createElement("div",{key:5},n("ra_Device \u2192 Channel \u2192 State")),d.default.createElement("div",{key:6},n("ra_Channel \u2192 State")),d.default.createElement("div",{key:7,style:{height:10}}),d.default.createElement("div",{key:7},n('ra_Non-experts may create new objects only in "0_userdata.0" or "alias.0".')),d.default.createElement("div",{key:8},n('ra_The experts may create objects everywhere but from second level (e.g. "vis.0" or "javascript.0").'))])}return r.length?r:n("ra_Add new child object to selected parent")},this.renderTooltipAccessControl=e=>{if(!e)return null;const t=[{value:"0x400",valueNum:1024,title:"read",group:"Owner"},{value:"0x200",valueNum:512,title:"write",group:"Owner"},{value:"0x40",valueNum:64,title:"read",group:"Group"},{value:"0x20",valueNum:32,title:"write",group:"Group"},{value:"0x4",valueNum:4,title:"read",group:"Everyone"},{value:"0x2",valueNum:2,title:"write",group:"Everyone"}],n=[],r=r=>{const o=e[r];t.forEach(((e,t)=>{o&e.valueNum&&n.push(d.default.createElement("span",{key:r+t},this.texts["acl".concat(e.group,"_").concat(e.title,"_").concat(r)],",",d.default.createElement("span",{className:"object"===r?this.props.classes.rightsObject:this.props.classes.rightsState},e.value)))}))};return n.push(d.default.createElement("span",{key:"group"},"".concat(this.texts.ownerGroup,": ").concat((e.ownerGroup||"").replace("system.group.","")))),n.push(d.default.createElement("span",{key:"owner"},"".concat(this.texts.ownerUser,": ").concat((e.owner||"").replace("system.user.","")))),r("object"),e.state&&r("state"),n.length?d.default.createElement("span",{className:this.props.classes.tooltipAccessControl},n.map((e=>e))):null},this.resizerMouseMove=e=>{if(this.resizerActiveDiv){let t,n;this.resizeLeft?(t=this.resizerOldWidth-e.clientX+this.resizerPosition,n=this.resizerOldWidthNext+e.clientX-this.resizerPosition):(t=this.resizerOldWidth+e.clientX-this.resizerPosition,n=this.resizerOldWidthNext-e.clientX+this.resizerPosition),this.resizerActiveName&&this.resizerNextName&&(!this.resizerMin||t>this.resizerMin)&&(!this.resizerNextMin||n>this.resizerNextMin)&&(this.resizerCurrentWidths[this.resizerActiveName]=t,this.resizerCurrentWidths[this.resizerNextName]=n,this.resizerActiveDiv.style.width="".concat(t,"px"),this.resizerNextDiv&&(this.resizerNextDiv.style.width="".concat(n,"px")),this.columnsVisibility[this.resizerActiveName]=t,this.columnsVisibility[this.resizerNextName]=n,"nameHeader"===this.resizerNextName?(this.columnsVisibility.name=n-this.state.scrollBarWidth,this.resizerCurrentWidths.name=n-this.state.scrollBarWidth):"nameHeader"===this.resizerActiveName&&(this.columnsVisibility.name=t-this.state.scrollBarWidth,this.resizerCurrentWidths.name=t-this.state.scrollBarWidth),this.customWidth=!0,this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout((()=>{this.resizeTimeout=null,this.forceUpdate()}),200))}},this.resizerMouseUp=()=>{this.localStorage.setItem("".concat(this.props.dialogName||"App",".table"),JSON.stringify(this.resizerCurrentWidths)),this.resizerActiveName=null,this.resizerNextName=null,this.resizerActiveDiv=null,this.resizerNextDiv=null,window.removeEventListener("mousemove",this.resizerMouseMove),window.removeEventListener("mouseup",this.resizerMouseUp)},this.resizerMouseDown=e=>{if(this.storedWidths=this.storedWidths||JSON.parse(JSON.stringify(de[this.props.width||"lg"])),this.resizerCurrentWidths=this.resizerCurrentWidths||{},this.resizerActiveDiv=e.target.parentNode,this.resizerActiveName=this.resizerActiveDiv.dataset.name||null,this.resizerActiveName){let t=0;if("true"===e.target.dataset.left){this.resizeLeft=!0,this.resizerNextDiv=this.resizerActiveDiv.previousElementSibling;let e=this.resizerNextDiv.querySelector(".".concat(this.props.classes.resizeHandle));for(;this.resizerNextDiv&&!e&&t<10;)this.resizerNextDiv=this.resizerNextDiv.previousElementSibling,e=this.resizerNextDiv.querySelector(".".concat(this.props.classes.resizeHandle)),t++;"true"!==(null===e||void 0===e?void 0:e.dataset.left)&&(this.resizerNextDiv=this.resizerNextDiv.nextElementSibling)}else this.resizeLeft=!1,this.resizerNextDiv=this.resizerActiveDiv.nextElementSibling;this.resizerNextName=this.resizerNextDiv.dataset.name||null,this.resizerMin=parseInt(this.resizerActiveDiv.dataset.min,10)||0,this.resizerNextMin=parseInt(this.resizerNextDiv.dataset.min,10)||0,this.resizerPosition=e.clientX,this.resizerCurrentWidths[this.resizerActiveName]=this.resizerActiveDiv.offsetWidth,this.resizerOldWidth=this.resizerCurrentWidths[this.resizerActiveName],this.resizerNextName&&(this.resizerCurrentWidths[this.resizerNextName]=this.resizerNextDiv.offsetWidth,this.resizerOldWidthNext=this.resizerCurrentWidths[this.resizerNextName]),window.addEventListener("mousemove",this.resizerMouseMove),window.addEventListener("mouseup",this.resizerMouseUp)}},this.resizerReset=()=>{this.customWidth=!1,de[this.props.width||"lg"]=JSON.parse(JSON.stringify(this.storedWidths)),this.calculateColumnsVisibility(),this.localStorage.removeItem("".concat(this.props.dialogName||"App",".table")),this.forceUpdate()};const t=this.localStorage.getItem("".concat(e.dialogName||"App",".objectSelected"))||"[]";try{this.lastSelectedItems=JSON.parse(t),"object"!==typeof this.lastSelectedItems&&(this.lastSelectedItems=[this.lastSelectedItems]),this.lastSelectedItems=this.lastSelectedItems.filter((e=>e))}catch(_){this.lastSelectedItems=[]}let n;const r=this.localStorage.getItem("".concat(e.dialogName||"App",".objectExpanded"))||"[]";try{n=JSON.parse(r)}catch(_){n=[]}let o;const s=e.defaultFilters?"":this.localStorage.getItem("".concat(e.dialogName||"App",".objectFilter"))||"";if(s)try{o=JSON.parse(s)}catch(_){o=Object.assign({},he)}else o=e.defaultFilters&&"object"===typeof e.defaultFilters?Object.assign({},e.defaultFilters):Object.assign({},he);if(o.expertMode=void 0!==e.expertMode?e.expertMode:"true"===(window._sessionStorage||window.sessionStorage).getItem("App.expertMode"),this.tableRef=(0,d.createRef)(),this.filterRefs={},Object.keys(he).forEach((e=>this.filterRefs[e]=(0,d.createRef)())),this.visibleCols=e.columns||de[e.width||"lg"].fields,e.types&&1===e.types.length){const e=this.visibleCols.indexOf("type");-1!==e&&this.visibleCols.splice(e,1)}this.possibleCols=de.xl.fields;let a,i=null;if(e.router){const t=e.router.getLocation();t.id&&"customs"===t.dialog&&(i=[t.id],this.pauseSubscribe(!0))}a=Array.isArray(e.selected)?e.selected:[e.selected||""],a=a.map((e=>e.replace(/["']/g,""))).filter((e=>e));const c=this.localStorage.getItem("".concat(e.dialogName||"App",".columns"));let l;try{l=c?JSON.parse(c):null}catch(_){l=null}let u,h=null;try{h=h?JSON.parse(h):{}}catch(_){h={}}this.imagePrefix=e.imagePrefix||".";const p=this.localStorage.getItem("".concat(e.dialogName||"App",".foldersFirst"));u="false"!==p&&("true"===p||(void 0===e.foldersFirst||e.foldersFirst));let m=!1;try{m=this.props.objectStatesView&&JSON.parse(this.localStorage.getItem("".concat(e.dialogName||"App",".objectStatesView"))||"")||!1}catch(g){}this.state={loaded:!1,foldersFirst:u,selected:a,selectedNonObject:this.localStorage.getItem("".concat(e.dialogName||"App",".selectedNonObject"))||"",filter:o,filterKey:0,depth:0,expandAllVisible:!1,expanded:n,toast:"",scrollBarWidth:16,customDialog:i,editObjectDialog:"",editObjectAlias:!1,viewFileDialog:"",showAliasEditor:"",enumDialog:null,roleDialog:null,statesView:m,columns:l,columnsForAdmin:null,columnsSelectorShow:!1,columnsAuto:"false"!==this.localStorage.getItem("".concat(e.dialogName||"App",".columnsAuto")),columnsWidths:h,columnsDialogTransparent:100,columnsEditCustomDialog:null,customColumnDialogValueChanged:!1,showExportDialog:!1,showAllExportOptions:!1,linesEnabled:"true"===this.localStorage.getItem("".concat(e.dialogName||"App",".lines")),showDescription:"false"!==this.localStorage.getItem("".concat(e.dialogName||"App",".desc")),showContextMenu:null,noStatesByExportImport:!1,beautifyJsonExport:!0,excludeSystemRepositoriesFromExport:!0,excludeTranslations:!1},this.texts={value:e.t("ra_tooltip_value"),ack:e.t("ra_tooltip_ack"),ts:e.t("ra_tooltip_ts"),lc:e.t("ra_tooltip_lc"),from:e.t("ra_tooltip_from"),user:e.t("ra_tooltip_user"),c:e.t("ra_tooltip_comment"),quality:e.t("ra_tooltip_quality"),editObject:e.t("ra_tooltip_editObject"),deleteObject:e.t("ra_tooltip_deleteObject"),customConfig:e.t("ra_tooltip_customConfig"),copyState:e.t("ra_tooltip_copyState"),editState:e.t("ra_tooltip_editState"),close:e.t("ra_Close"),filter_id:e.t("ra_filter_id"),filter_name:e.t("ra_filter_name"),filter_type:e.t("ra_filter_type"),filter_role:e.t("ra_filter_role"),filter_room:e.t("ra_filter_room"),filter_func:e.t("ra_filter_func"),filter_custom:e.t("ra_filter_customs"),filterCustomsWithout:e.t("ra_filter_customs_without"),objectChangedByUser:e.t("ra_object_changed_by_user"),objectChangedBy:e.t("ra_object_changed_by"),objectChangedFrom:e.t("ra_state_changed_from"),stateChangedBy:e.t("ra_state_changed_by"),stateChangedFrom:e.t("ra_state_changed_from"),ownerGroup:e.t("ra_Owner group"),ownerUser:e.t("ra_Owner user"),deviceError:e.t("ra_Error"),deviceDisconnected:e.t("ra_Disconnected"),deviceConnected:e.t("ra_Connected"),aclOwner_read_object:e.t("ra_aclOwner_read_object"),aclOwner_read_state:e.t("ra_aclOwner_read_state"),aclOwner_write_object:e.t("ra_aclOwner_write_object"),aclOwner_write_state:e.t("ra_aclOwner_write_state"),aclGroup_read_object:e.t("ra_aclGroup_read_object"),aclGroup_read_state:e.t("ra_aclGroup_read_state"),aclGroup_write_object:e.t("ra_aclGroup_write_object"),aclGroup_write_state:e.t("ra_aclGroup_write_state"),aclEveryone_read_object:e.t("ra_aclEveryone_read_object"),aclEveryone_read_state:e.t("ra_aclEveryone_read_state"),aclEveryone_write_object:e.t("ra_aclEveryone_write_object"),aclEveryone_write_state:e.t("ra_aclEveryone_write_state"),create:e.t("ra_Create"),createBooleanState:e.t("ra_create_boolean_state"),createNumberState:e.t("ra_create_number_state"),createStringState:e.t("ra_create_string_state"),createState:e.t("ra_create_state"),createChannel:e.t("ra_create_channel"),createDevice:e.t("ra_create_device"),createFolder:e.t("ra_Create folder")},this.levelPadding=e.levelPadding||16;const f=this.localStorage.getItem("".concat(this.props.dialogName||"App",".table"));if(f)try{const e=JSON.parse(f),t=this.props.width||"lg";this.storedWidths=JSON.parse(JSON.stringify(de[t])),Object.keys(e).forEach((n=>{"id"===n?de[t].idWidth=e.id:"nameHeader"===n?de[t].widths.name=e[n]:void 0!==de[t].widths[n]&&(de[t].widths[n]=e[n])})),this.customWidth=!0}catch(_){}this.calculateColumnsVisibility()}async loadAllObjects(e){const t=this.props;try{await new Promise((e=>{this.setState({updating:!0},(()=>e()))}));const n=(this.props.objectsWorker?await this.props.objectsWorker.getObjects(e):await t.socket.getObjects(e,!0))||{};if(t.types&&T.default.isWeb())for(let e=0;e{try{if(e(n[t]))this.objects[t]=n[t];else{const e=n[t]&&n[t].type;!e||"channel"!==e&&"device"!==e&&"folder"!==e&&"adapter"!==e&&"instance"!==e||(this.objects[t]=n[t])}}catch(r){console.log('Error by filtering of "'.concat(t,'": ').concat(r))}}))}else if(t.types){this.objects={};const e=t.types;Object.keys(n).forEach((t=>{const r=n[t]&&n[t].type;r&&("channel"===r||"device"===r||"enum"===r||"folder"===r||"adapter"===r||"instance"===r||e.includes(r))&&(this.objects[t]=n[t])}))}else this.objects=n;t.setObjectsReference&&t.setObjectsReference(this.objects),this.defaultHistory=this.systemConfig.common.defaultHistory,this.defaultHistory&&t.socket.getState("system.adapter.".concat(this.defaultHistory,".alive")).then((e=>{e&&e.val||(this.defaultHistory="")})).catch((e=>window.alert("Cannot get state: ".concat(e))));const r=await this.getAdditionalColumns();this.calculateColumnsVisibility(null,null,r);const{info:o,root:s}=re(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=s,this.info=o;const a=this.state.selected&&this.state.selected.length&&oe(this.root,this.state.selected[0]);this.lastAppliedFilter=null,a&&!Q(a,this.state.filter,this.props.lang,this.objects,void 0,void 0,t.customFilter,t.types)?this.setState({filter:Object.assign({},he),columnsForAdmin:r},(()=>{this.setState({loaded:!0,updating:!1},(()=>this.expandAllSelected((()=>this.onAfterSelect()))))})):this.setState({loaded:!0,updating:!1,columnsForAdmin:r},(()=>this.expandAllSelected((()=>this.onAfterSelect()))))}catch(n){this.showError(n)}}static isNonExpertId(e){return!!c(r,r,"f",o).find((t=>e.startsWith(t)))}expandAllSelected(e){const t=[...this.state.expanded];let n=!1;this.state.selected.forEach((e=>{const r=e.split("."),o=[];for(let s=0;sthis.props.onSelect&&this.props.onSelect([],""))):this.props.onSelect&&this.props.onSelect([],"")}static getDerivedStateFromProps(e,t){const n={};let r=!1;return void 0!==e.expertMode&&e.expertMode!==t.filter.expertMode&&(r=!0,n.filter=Object.assign({},t.filter),n.filter.expertMode=e.expertMode),r?n:null}async componentDidMount(){await this.loadAllObjects(!ue),this.props.objectsWorker?this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker):await this.props.socket.subscribeObject("*",this.onObjectChange),ue=!0,window.addEventListener("contextmenu",this.onContextMenu,!0)}componentWillUnmount(){this.filterTimer&&clearTimeout(this.filterTimer),this.filterTimer=null,window.removeEventListener("contextmenu",this.onContextMenu,!0),this.props.objectsWorker?this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker,!0):this.props.socket.unsubscribeObject("*",this.onObjectChange),this.subscribes.forEach((e=>{console.log("- unsubscribe ".concat(e)),this.props.socket.unsubscribeState(e,this.onStateChange)})),this.subscribes=[],this.objects={}}showDeleteDialog(e){var t,n;const{id:r,obj:o,item:s}=e,a=Object.keys(this.objects);a.sort();let i=0;const c="".concat(r,".");for(let l=0;lc)break;this.props.onObjectDelete&&this.props.onObjectDelete(r,!!(null===(t=s.children)||void 0===t?void 0:t.length),!(null===(n=o.common)||void 0===n?void 0:n.dontDelete),i+1)}refreshComponent(){this.subscribes.forEach((e=>{console.log("- unsubscribe ".concat(e)),this.props.socket.unsubscribeState(e,this.onStateChange)})),this.subscribes=[],this.loadAllObjects(!0).then((()=>console.log("updated!")))}renderErrorDialog(){return this.state.error?d.default.createElement(p.Dialog,{open:!0,maxWidth:"sm",fullWidth:!0,onClose:()=>this.setState({error:""}),"aria-labelledby":"error-dialog-title","aria-describedby":"error-dialog-description"},d.default.createElement(p.DialogTitle,{id:"alert-dialog-title"},this.props.t("ra_Error")),d.default.createElement(p.DialogContent,null,d.default.createElement(p.DialogContentText,{id:"alert-dialog-description"},this.state.error)),d.default.createElement(p.DialogActions,null,d.default.createElement(p.Button,{variant:"contained",onClick:()=>this.setState({error:""}),color:"primary",autoFocus:!0,startIcon:d.default.createElement(m.Check,null)},this.props.t("ra_Ok")))):null}showError(e){this.setState({error:"object"===typeof e?e&&"function"===typeof e.toString?e.toString():JSON.stringify(e):e})}onSelect(e,t,n){if(this.props.multiSelect){if(this.objects[e]&&(!this.props.types||this.props.types.includes(this.objects[e].type))){this.localStorage.removeItem("".concat(this.props.dialogName||"App",".selectedNonObject"));const r=[...this.state.selected],o=r.indexOf(e);-1===o?(r.push(e),r.sort()):t||r.splice(o,1),this.setState({selected:r,selectedNonObject:""},(()=>{this.onAfterSelect(t),n&&n()}))}}else!this.objects[e]||this.props.types&&!this.props.types.includes(this.objects[e].type)?(this.localStorage.setItem("".concat(this.props.dialogName||"App",".selectedNonObject"),e),this.setState({selected:[],selectedNonObject:e},(()=>{this.onAfterSelect(),n&&n()}))):(this.localStorage.removeItem("".concat(this.props.dialogName||"App",".selectedNonObject")),this.state.selected[0]!==e?this.setState({selected:[e],selectedNonObject:""},(()=>{this.onAfterSelect(t),n&&n()})):t&&this.props.onSelect&&this.onAfterSelect(t))}_renderDefinedList(e){const t=[...this.possibleCols];if(t.unshift("id"),this.props.columns&&!this.props.columns.includes("buttons")){const e=t.indexOf("buttons");-1!==e&&t.splice(e,1)}return t.filter((t=>e&&("val"===t||"buttons"===t)||!e&&"val"!==t&&"buttons"!==t)).map((e=>{var t;return d.default.createElement(p.ListItemButton,{onClick:()=>{if(!this.state.columnsAuto&&"id"!==e){const t=[...this.state.columns||[]],n=t.indexOf(e);-1===n?(t.push(e),t.sort()):t.splice(n,1),this.localStorage.setItem("".concat(this.props.dialogName||"App",".columns"),JSON.stringify(t)),this.calculateColumnsVisibility(null,t),this.setState({columns:t})}},key:e},d.default.createElement(p.Checkbox,{edge:"start",disabled:"id"===e||this.state.columnsAuto,checked:"id"===e||!!(this.state.columnsAuto?this.visibleCols.includes(e):null===(t=this.state.columns)||void 0===t?void 0:t.includes(e)),disableRipple:!0}),d.default.createElement(p.ListItemText,{primary:this.texts["filter_".concat(e)]||this.props.t("ra_".concat(e))}))}))}renderColumnsSelectorDialog(){return this.state.columnsSelectorShow?d.default.createElement(p.Dialog,{onClose:()=>this.setState({columnsSelectorShow:!1}),open:!0,classes:{root:D.default.clsx(this.props.classes.dialogColumns,this.props.classes["transparent_".concat(this.state.columnsDialogTransparent)])}},d.default.createElement(p.DialogTitle,{className:this.props.classes.fontSizeTitle},this.props.t("ra_Configure")),d.default.createElement(p.DialogContent,{className:this.props.classes.fontSizeTitle},d.default.createElement(p.FormControlLabel,{className:this.props.classes.switchColumnAuto,control:d.default.createElement(p.Switch,{checked:this.state.foldersFirst,onChange:()=>{this.localStorage.setItem("".concat(this.props.dialogName||"App",".foldersFirst"),this.state.foldersFirst?"false":"true"),this.setState({foldersFirst:!this.state.foldersFirst})}}),label:this.props.t("ra_Folders always first")}),d.default.createElement(p.FormControlLabel,{className:this.props.classes.switchColumnAuto,control:d.default.createElement(p.Switch,{checked:this.state.linesEnabled,onChange:()=>{this.localStorage.setItem("".concat(this.props.dialogName||"App",".lines"),this.state.linesEnabled?"false":"true"),this.setState({linesEnabled:!this.state.linesEnabled})}}),label:this.props.t("ra_Show lines between rows")}),d.default.createElement(p.FormControlLabel,{className:this.props.classes.switchColumnAuto,control:d.default.createElement(p.Switch,{checked:this.state.columnsAuto,onChange:()=>{this.localStorage.setItem("".concat(this.props.dialogName||"App",".columnsAuto"),this.state.columnsAuto?"false":"true"),this.state.columnsAuto?this.state.columns?(this.calculateColumnsVisibility(!1),this.setState({columnsAuto:!1})):(this.calculateColumnsVisibility(!1,[...this.visibleCols]),this.setState({columnsAuto:!1,columns:[...this.visibleCols]})):(this.calculateColumnsVisibility(!0),this.setState({columnsAuto:!0}))}}),label:this.props.t("ra_Auto (no custom columns)")}),d.default.createElement(p.List,null,this._renderDefinedList(!1),this.state.columnsForAdmin&&Object.keys(this.state.columnsForAdmin).sort().map((e=>this.state.columnsForAdmin&&this.state.columnsForAdmin[e].map((t=>{var n;return d.default.createElement(p.ListItemButton,{onClick:()=>{if(!this.state.columnsAuto){const n=[...this.state.columns||[]],r="_".concat(e,"_").concat(t.path),o=n.indexOf(r);-1===o?(n.push(r),n.sort()):n.splice(o,1),this.calculateColumnsVisibility(null,n),this.localStorage.setItem("".concat(this.props.dialogName||"App",".columns"),JSON.stringify(n)),this.setState({columns:n})}},key:"".concat(e,"_").concat(t.name)},d.default.createElement(p.ListItemIcon,null,d.default.createElement(p.Checkbox,{disabled:this.state.columnsAuto,edge:"start",checked:!this.state.columnsAuto&&(null===(n=this.state.columns)||void 0===n?void 0:n.includes("_".concat(e,"_").concat(t.path))),disableRipple:!0})),d.default.createElement(p.ListItemText,{primary:"".concat(t.name," (").concat(e,")")}))})))),this._renderDefinedList(!0))),d.default.createElement(p.DialogActions,null,d.default.createElement(p.Button,{variant:"contained",onClick:()=>this.setState({columnsSelectorShow:!1}),color:"primary",startIcon:d.default.createElement(m.Close,null)},this.texts.close))):null}async getAdditionalColumns(){try{const e=await this.props.socket.getAdapters();let t=null;return e.forEach((e=>t=this.parseObjectForAdmins(t,e))),t}catch(e){return console.error("Cannot get adapters: ".concat(e)),null}}checkUnsubscribes(){for(let e=this.subscribes.length-1;e>=0;e--)!this.recordStates.includes(this.subscribes[e])&&this.unsubscribe(this.subscribes[e]);this.recordStates=[]}findItem(e,t,n,r){if(t=t||e.split("."),!(n=n||this.root)||!t.length)return null;if(r=(r?"".concat(r,"."):"")+t.shift(),n.children){const o=n.children.find((e=>e.data.id===r));if(!o)return null;if(o.data.id===e)return o;if(t.length)return this.findItem(e,t,o,r)}return null}parseObjectForAdmins(e,t){if(t.common&&t.common.adminColumns&&t.common.name){let n,r=t.common.adminColumns;r&&"object"!==typeof r&&(r=[r]),n=r?r.map((e=>{if("object"!==typeof e)return{path:e,name:e.split(".").pop()};const n=e;return n.objTypes&&"object"!==typeof n.objTypes?n.objTypes=[n.objTypes]:n.objTypes||(n.objTypes=null),!n.name&&n.path?{path:n.path,name:n.path.split(".").pop(),width:n.width,edit:!!n.edit,type:n.type,objTypes:n.objTypes}:n.path?{path:n.path,name:Z(n.name||"",this.props.lang),width:n.width,edit:!!n.edit,type:n.type,objTypes:n.objTypes}:(console.warn("Admin columns for ".concat(t._id," ignored, because path not found")),null)})).filter((e=>e)):null,(null===n||void 0===n?void 0:n.length)&&((e=e||{})[t.common.name]=n.sort(((e,t)=>e.path>t.path?-1:e.path{this.objectsUpdateTimer=null;const{info:e,root:t}=re(this.objects,{imagePrefix:this.props.imagePrefix,root:this.props.root,lang:this.props.lang,themeType:this.props.themeType});this.root=t,this.info=e,this.lastAppliedFilter=null,this.pausedSubscribes||this.forceUpdate()}),500))}processOnObjectChangeElement(e,t){console.log("> objectChange ".concat(e));const n=null===t||void 0===t?void 0:t.type;if(t&&"function"===typeof this.props.filterFunc&&!this.props.filterFunc(t)&&"channel"!==n&&"device"!==n&&"folder"!==n&&"adapter"!==n&&"instance"!==n)return{newInnerState:null,filtered:!0};let r=null;if(e.startsWith("system.adapter.")&&t&&"adapter"===t.type){const e=JSON.parse(JSON.stringify(this.state.columnsForAdmin));this.parseObjectForAdmins(e,t),JSON.stringify(this.state.columnsForAdmin)!==JSON.stringify(e)&&(r={columnsForAdmin:e})}return this.objects=this.objects||{},t?this.objects[e]=t:this.objects[e]&&delete this.objects[e],{newInnerState:r,filtered:!1}}subscribe(e){this.subscribes.includes(e)||(this.subscribes.push(e),console.log("+ subscribe ".concat(e)),!this.pausedSubscribes&&this.props.socket.subscribeState(e,this.onStateChange))}unsubscribe(e){const t=this.subscribes.indexOf(e);-1!==t&&(this.subscribes.splice(t,1),this.states[e]&&delete this.states[e],console.log("- unsubscribe ".concat(e)),this.props.socket.unsubscribeState(e,this.onStateChange),this.pausedSubscribes&&console.warn("Unsubscribe during pause?"))}pauseSubscribe(e){!this.pausedSubscribes&&e?(this.pausedSubscribes=!0,this.subscribes.forEach((e=>this.props.socket.unsubscribeState(e,this.onStateChange)))):this.pausedSubscribes&&!e&&(this.pausedSubscribes=!1,this.subscribes.forEach((e=>this.props.socket.subscribeState(e,this.onStateChange))))}onFilter(e,t){this.filterTimer=null;const n=Object.assign({},this.state.filter);Object.keys(this.filterRefs).forEach((e=>{if(this.filterRefs[e]&&this.filterRefs[e].current){const t=this.filterRefs[e].current;for(let r=0;rthis.props.onFilterChanged&&this.props.onFilterChanged(n))))}clearFilter(){const e=Object.assign({},this.state.filter);Object.keys(this.filterRefs).forEach((t=>{if(this.filterRefs[t]&&this.filterRefs[t].current){const n=this.filterRefs[t].current;for(let r=0;rthis.props.onFilterChanged&&this.props.onFilterChanged(e))))}isFilterEmpty(){return!Object.keys(this.state.filter).find((e=>"expertMode"!==e&&this.state.filter[e]))}getFilterInput(e){var t,n,r;return d.default.createElement(p.FormControl,{className:D.default.clsx(this.props.classes.headerCellInput,this.props.classes.filterInput),key:"".concat(e,"_").concat(this.state.filterKey),margin:"dense"},d.default.createElement(p.Input,{ref:this.filterRefs[e],classes:{underline:"no-underline"},id:e,placeholder:this.texts["filter_".concat(e)],defaultValue:this.state.filter[e]||"",onChange:()=>{this.filterTimer&&clearTimeout(this.filterTimer),this.filterTimer=setTimeout((()=>this.onFilter()),400)},autoComplete:"off"}),(null===(r=null===(n=null===(t=this.filterRefs[e])||void 0===t?void 0:t.current)||void 0===n?void 0:n.firstChild)||void 0===r?void 0:r.value)?d.default.createElement("div",{style:{position:"absolute",right:0}},d.default.createElement(p.IconButton,{size:"small",onClick:()=>{var t;(null===(t=this.filterRefs[e].current)||void 0===t?void 0:t.firstChild).value="",this.onFilter(e,"")}},d.default.createElement(m.Close,null))):null)}getFilterSelect(e,t){var n,r,o;const s=!!(null===t||void 0===t?void 0:t.find((e=>e.icon)));return d.default.createElement("div",{style:{position:"relative"}},d.default.createElement(p.Select,{variant:"standard",key:"".concat(e,"_").concat(this.state.filterKey),ref:this.filterRefs[e],className:"".concat(this.props.classes.headerCellInput," no-underline"),onChange:()=>{this.filterTimer&&clearTimeout(this.filterTimer),this.filterTimer=setTimeout((()=>this.onFilter()),400)},defaultValue:this.state.filter[e]||"",inputProps:{name:e,id:e},displayEmpty:!0},d.default.createElement(p.MenuItem,{key:"empty",value:""},d.default.createElement("span",{className:this.props.classes.selectNone},this.texts["filter_".concat(e)])),null===t||void 0===t?void 0:t.map((e=>{let t,n,r;return"object"===typeof e?(t=e.value,n=e.name,r=e.icon):(t=e,n=e),d.default.createElement(p.MenuItem,{className:this.props.classes.headerCellSelectItem,key:t,value:t},r||(s?d.default.createElement("div",{className:"itemIcon"}):null),n)}))),(null===(o=null===(r=null===(n=this.filterRefs[e])||void 0===n?void 0:n.current)||void 0===r?void 0:r.childNodes[1])||void 0===o?void 0:o.value)?d.default.createElement("div",{className:D.default.clsx(this.props.classes.selectClearButton)},d.default.createElement(p.IconButton,{size:"small",onClick:()=>{var t;const n=Object.assign({},this.state.filter);n[e]="",(null===(t=this.filterRefs[e].current)||void 0===t?void 0:t.childNodes[1]).value="",this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectFilter"),JSON.stringify(n)),this.setState({filter:n,filterKey:this.state.filterKey+1},(()=>this.props.onFilterChanged&&this.props.onFilterChanged(n)))}},d.default.createElement(m.Close,null))):null)}getFilterSelectRole(){return this.getFilterSelect("role",this.info.roles)}getFilterSelectRoom(){const e=this.info.roomEnums.map((e=>{var t,n,r,o;return{name:Z(null===(n=null===(t=this.objects[e])||void 0===t?void 0:t.common)||void 0===n?void 0:n.name,this.props.lang)||e.split(".").pop(),value:e,icon:d.default.createElement(O.default,{src:(null===(o=null===(r=this.objects[e])||void 0===r?void 0:r.common)||void 0===o?void 0:o.icon)||"",className:this.props.classes.selectIcon})}}));return this.getFilterSelect("room",e)}getFilterSelectFunction(){const e=this.info.funcEnums.map((e=>{var t,n,r,o;return{name:Z(null===(n=null===(t=this.objects[e])||void 0===t?void 0:t.common)||void 0===n?void 0:n.name,this.props.lang)||e.split(".").pop(),value:e,icon:d.default.createElement(O.default,{src:(null===(o=null===(r=this.objects[e])||void 0===r?void 0:r.common)||void 0===o?void 0:o.icon)||"",className:this.props.classes.selectIcon})}}));return this.getFilterSelect("func",e)}getFilterSelectType(){const e=this.info.types.map((e=>({name:e,value:e,icon:t.ITEM_IMAGES[e]||null})));return this.getFilterSelect("type",e)}getFilterSelectCustoms(){if(this.info.customs.length>1){const e=this.info.customs.map((e=>({name:"_"===e?this.texts.filterCustomsWithout:e,value:e,icon:"_"===e?null:d.default.createElement(O.default,{src:X(this.objects,e,this.imagePrefix)||"",className:this.props.classes.selectIcon})})));return this.getFilterSelect("custom",e)}return null}onExpandAll(e,t){var n;const r=e||this.root;t=t||[],null===(n=null===r||void 0===r?void 0:r.children)||void 0===n||n.forEach((e=>{e.data.sumVisibility&&(t.push(e.data.id),this.onExpandAll(e,t))})),r===this.root&&(t.sort(),this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectExpanded"),JSON.stringify(t)),this.setState({expanded:t}))}onCollapseAll(){this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectExpanded"),JSON.stringify([])),this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectSelected"),"[]"),this.setState({expanded:[],depth:0,selected:[]},(()=>this.onAfterSelect()))}expandDepth(e,t,n){var r;e=e||this.root,t>0&&(null===(r=e.children)||void 0===r||r.forEach((e=>{e.data.sumVisibility&&(Y(n,e.data.id)||(n.push(e.data.id),n.sort()),t-1>0&&this.expandDepth(e,t-1,n))})))}static collapseDepth(e,t){return t.filter((t=>t.split(".").length<=e))}onExpandVisible(){if(this.state.depth<9){const e=this.state.depth+1,t=[...this.state.expanded];this.root&&this.expandDepth(this.root,e,t),this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectExpanded"),JSON.stringify(t)),this.setState({depth:e,expanded:t})}}onStatesViewVisible(){const e=!this.state.statesView;this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectStatesView"),JSON.stringify(e)),this.setState({statesView:e})}onCollapseVisible(){if(this.state.depth>0){const e=this.state.depth-1,t=r.collapseDepth(e,this.state.expanded);this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectExpanded"),JSON.stringify(t)),this.setState({depth:e,expanded:t})}}async loadObjects(e){if(e)for(const r in e){if(!Object.prototype.hasOwnProperty.call(e,r)||!e[r])continue;const o=e[r];let s,a,i=null;o&&o.common&&o.common.enums?(i=o.common.enums,delete o.common.enums):i=null,(o.val||0===o.val)&&(s=o.val,delete o.val),void 0!==o.ack&&(a=o.ack,delete o.ack);try{if(await this.props.socket.setObject(r,o),i&&await this._createAllEnums(i,o._id),"state"===o.type)if(void 0!==s&&null!==s)try{await this.props.socket.setState(o._id,s,void 0===a||a)}catch(t){window.alert('Cannot set state "'.concat(o._id," with ").concat(s,'": ').concat(t))}else try{const e=await this.props.socket.getState(o._id);if(!e||null===e.val)try{await this.props.socket.setState(o._id,o.common&&void 0!==o.common.def?o.common.def:null,!0)}catch(t){window.alert('Cannot set state "'.concat(o._id,'": ').concat(t))}}catch(t){window.alert('Cannot read state "'.concat(o._id,'": ').concat(t))}}catch(n){window.alert(n)}}}_getSelectedIdsForExport(){if(this.state.selected.length||this.state.selectedNonObject){const e=[],t=Object.keys(this.objects);t.sort();const n=this.state.selected[0]||this.state.selectedNonObject,r="".concat(n,"."),o=r.length;for(let s=0;sr)break}return e}return[]}async _exportObjects(e){var t;if(e.isAll)return void K("allObjects.json",this.objects,e);if(!this.state.selected.length&&!this.state.selectedNonObject)return void window.alert(this.props.t("ra_Save of objects-tree is not possible"));const n={},r=this.state.selected[0]||this.state.selectedNonObject,o=this._getSelectedIdsForExport();for(const s of o){if(n[s]=JSON.parse(JSON.stringify(this.objects[s])),"state"===(null===(t=n[s])||void 0===t?void 0:t.type)&&!e.noStatesByExportImport){const e=await this.props.socket.getState(s);e&&(n[s].val=e.val,n[s].ack=e.ack)}if(n[s].common){const e=this.getEnumsForId(s);e&&(n[s].common.enums=e)}}K("".concat(r,".json"),n,e)}renderExportDialog(){return!1===this.state.showExportDialog?null:d.default.createElement(p.Dialog,{open:!0,maxWidth:"lg"},d.default.createElement(p.DialogTitle,null,this.props.t("ra_Select type of export")),d.default.createElement(p.DialogContent,null,d.default.createElement(p.DialogContentText,null,this.state.filter.expertMode||this.state.showAllExportOptions?d.default.createElement(d.default.Fragment,null,this.props.t("ra_You can export all objects or just the selected branch."),d.default.createElement("br",null),this.props.t("ra_Selected %s object(s)",this.state.showExportDialog),d.default.createElement("br",null),d.default.createElement(p.FormControlLabel,{control:d.default.createElement(p.Checkbox,{checked:this.state.noStatesByExportImport,onChange:e=>this.setState({noStatesByExportImport:e.target.checked})}),label:this.props.t("ra_Do not export values of states")}),d.default.createElement("br",null),this.props.t("These options can reduce the size of the export file:"),d.default.createElement(p.FormControlLabel,{control:d.default.createElement(p.Checkbox,{checked:this.state.beautifyJsonExport,onChange:e=>this.setState({beautifyJsonExport:e.target.checked})}),label:this.props.t("Beautify JSON output")}),d.default.createElement("br",null),d.default.createElement(p.FormControlLabel,{control:d.default.createElement(p.Checkbox,{checked:this.state.excludeSystemRepositoriesFromExport,onChange:e=>this.setState({excludeSystemRepositoriesFromExport:e.target.checked})}),label:this.props.t("Exclude system repositories from export JSON")}),d.default.createElement(p.FormControlLabel,{control:d.default.createElement(p.Checkbox,{checked:this.state.excludeTranslations,onChange:e=>this.setState({excludeTranslations:e.target.checked})}),label:this.props.t("Exclude translations (except english) from export JSON")})):null)),d.default.createElement(p.DialogActions,null,this.state.filter.expertMode||this.state.showAllExportOptions?d.default.createElement(p.Button,{color:"grey",variant:"outlined",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},(()=>this._exportObjects({isAll:!0,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations})))},d.default.createElement("span",{style:{marginRight:8}},this.props.t("ra_All objects")),"(",Object.keys(this.objects).length,")"):d.default.createElement(p.Button,{color:"grey",variant:"outlined",startIcon:d.default.createElement(f.default,null),onClick:()=>this.setState({showAllExportOptions:!0})},this.props.t("ra_Advanced options")),d.default.createElement(p.Button,{color:"primary",variant:"contained",autoFocus:!0,onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1},(()=>this._exportObjects({isAll:!1,noStatesByExportImport:this.state.noStatesByExportImport,beautify:this.state.beautifyJsonExport,excludeSystemRepositories:this.state.excludeSystemRepositoriesFromExport,excludeTranslations:this.state.excludeTranslations})))},d.default.createElement("span",{style:{marginRight:8}},this.props.t("ra_Only selected")),"(",this.state.showExportDialog,")"),d.default.createElement(p.Button,{color:"grey",variant:"contained",onClick:()=>this.setState({showExportDialog:!1,showAllExportOptions:!1}),startIcon:d.default.createElement(m.Close,null)},this.props.t("ra_Cancel"))))}handleJsonUpload(e){var t;const n=e.target,r=(null===(t=n.files)||void 0===t?void 0:t.length)&&n.files[0];if(r){const e=new FileReader;e.onload=async e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;try{const e=JSON.parse(n),t=Object.keys(e).length,o=e._id;if(void 0===o&&t)await this.loadObjects(e),window.alert(this.props.t("ra_%s object(s) processed",t));else{if(!o)return window.alert(this.props.t("ra_Invalid structure"));try{let t,n,r;if(e.common.enums&&(t=e.common.enums,delete e.common.enums),e.val&&(n=e.val,delete e.val),void 0!==e.ack&&(r=e.ack,delete e.ack),await this.props.socket.setObject(e._id,e),"state"===e.type)if(void 0!==n&&null!==n)await this.props.socket.setState(e._id,n,void 0===r||r);else{const t=await this.props.socket.getState(e._id);t&&null!==t.val&&void 0!==t.val||await this.props.socket.setState(e._id,void 0===e.common.def?null:e.common.def,!0)}t&&await this._createAllEnums(t,e._id),window.alert(this.props.t("ra_%s was imported",e._id))}catch(r){window.alert(r)}}}catch(r){window.alert(r)}return null},e.readAsText(r)}else window.alert(this.props.t("ra_Failed to open JSON File"))}getToolbar(){let e=!1;if(this.state.selected.length||this.state.selectedNonObject){const t=this.state.selected[0]||this.state.selectedNonObject;t.split(".").length<2||this.objects[t]&&"state"===this.objects[t].type?e=!1:(this.state.filter.expertMode||t.startsWith("alias.0")||t.startsWith("0_userdata"))&&(e=!0)}return d.default.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},d.default.createElement("div",{style:{display:"flex",width:"100%",alignItems:"center"}},d.default.createElement(p.Tooltip,{title:this.props.t("ra_Refresh tree"),classes:{popper:this.props.classes.tooltip}},d.default.createElement("div",null,d.default.createElement(p.IconButton,{onClick:()=>this.refreshComponent(),disabled:this.state.updating,size:"large"},d.default.createElement(m.Refresh,null)))),this.props.showExpertButton&&!this.props.expertMode&&d.default.createElement(p.Tooltip,{title:this.props.t("ra_expertMode"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{key:"expertMode",color:this.state.filter.expertMode?"secondary":"default",onClick:()=>this.onFilter("expertMode",!this.state.filter.expertMode),size:"large"},d.default.createElement(f.default,null))),!this.props.disableColumnSelector&&d.default.createElement(p.Tooltip,{title:this.props.t("ra_Configure"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{key:"columnSelector",color:this.state.columnsAuto?"primary":"default",onClick:()=>this.setState({columnsSelectorShow:!0}),size:"large"},d.default.createElement(m.ViewColumn,null))),this.state.expandAllVisible&&d.default.createElement(p.Tooltip,{title:this.props.t("ra_Expand all nodes"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{key:"expandAll",onClick:()=>this.onExpandAll(),size:"large"},d.default.createElement(E.default,null))),d.default.createElement(p.Tooltip,{title:this.props.t("ra_Collapse all nodes"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{key:"collapseAll",onClick:()=>this.onCollapseAll(),size:"large"},d.default.createElement(C.default,null))),d.default.createElement(p.Tooltip,{title:this.props.t("ra_Expand one step node"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{key:"expandVisible",color:"primary",onClick:()=>this.onExpandVisible(),size:"large"},d.default.createElement(le,{badgeContent:this.state.depth,color:"secondary"},d.default.createElement(E.default,null)))),d.default.createElement(p.Tooltip,{title:this.props.t("ra_Collapse one step node"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{key:"collapseVisible",color:"primary",onClick:()=>this.onCollapseVisible(),size:"large"},d.default.createElement(le,{badgeContent:this.state.depth,color:"secondary"},d.default.createElement(C.default,null)))),this.props.objectStatesView&&d.default.createElement(p.Tooltip,{title:this.props.t("ra_Toggle the states view"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{onClick:()=>this.onStatesViewVisible(),size:"large"},d.default.createElement(m.LooksOne,{color:this.state.statesView?"primary":"inherit"}))),d.default.createElement(p.Tooltip,{title:this.props.t("ra_Show/Hide object descriptions"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{onClick:()=>{this.localStorage.setItem("".concat(this.props.dialogName||"App",".desc"),this.state.showDescription?"false":"true"),this.setState({showDescription:!this.state.showDescription})},size:"large"},d.default.createElement(m.TextFields,{color:this.state.showDescription?"primary":"inherit"}))),this.props.objectAddBoolean?d.default.createElement(p.Tooltip,{title:this.toolTipObjectCreating(),classes:{popper:this.props.classes.tooltip}},d.default.createElement("div",null,d.default.createElement(p.IconButton,{disabled:!e,onClick:()=>this.setState({modalNewObj:{id:this.state.selected[0]||this.state.selectedNonObject}}),size:"large"},d.default.createElement(m.Add,null)))):null,this.props.objectImportExport&&d.default.createElement(p.Tooltip,{title:this.props.t("ra_Add objects tree from JSON file"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{onClick:()=>{const e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("id","files"),e.setAttribute("opacity","0"),e.addEventListener("change",(e=>this.handleJsonUpload(e)),!1),e.click()},size:"large"},d.default.createElement(m.Publish,null))),this.props.objectImportExport&&(!!this.state.selected.length||this.state.selectedNonObject)&&d.default.createElement(p.Tooltip,{title:this.props.t("ra_Save objects tree as JSON file"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{onClick:()=>this.setState({showExportDialog:this._getSelectedIdsForExport().length}),size:"large"},d.default.createElement(m.Publish,{style:{transform:"rotate(180deg)"}})))),!!this.props.objectBrowserEditObject&&d.default.createElement("div",{style:{display:"flex",whiteSpace:"nowrap"}},"".concat(this.props.t("ra_Objects"),": ").concat(Object.keys(this.info.objects).length,", ").concat(this.props.t("ra_States"),": ").concat(Object.keys(this.info.objects).filter((e=>"state"===this.info.objects[e].type)).length)),this.props.objectEditBoolean&&d.default.createElement(p.Tooltip,{title:this.props.t("ra_Edit custom config"),classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{onClick:()=>{var e;const t=this.root?$(this.root,"state",this.objects):[];t.length?(this.pauseSubscribe(!0),1===t.length&&(this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectSelected"),this.state.selected[0]),null===(e=this.props.router)||void 0===e||e.doNavigate(null,"custom",this.state.selected[0])),this.setState({customDialog:t,customDialogAll:!0})):this.setState({toast:this.props.t("ra_please select object")})},size:"large"},d.default.createElement(m.Build,null))))}toggleExpanded(e){const t=JSON.parse(JSON.stringify(this.state.expanded)),n=t.indexOf(e);-1===n?(t.push(e),t.sort()):t.splice(n,1),this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectExpanded"),JSON.stringify(t)),this.setState({expanded:t})}onCopy(e,t){e.stopPropagation(),e.preventDefault(),D.default.copyToClipboard(t),t.length<50?this.setState({toast:this.props.t("ra_Copied %s",t)}):this.setState({toast:this.props.t("ra_Copied")})}renderColumnButtons(e,t,n){var o,s,a;if(!t.data.obj)return this.props.onObjectDelete||this.props.objectEditOfAccessControl?d.default.createElement("div",{className:n.buttonDiv},this.state.filter.expertMode&&this.props.objectEditOfAccessControl?d.default.createElement(p.IconButton,{className:D.default.clsx(n.cellButtonsButton,n.cellButtonsEmptyButton,n.cellButtonMinWidth),onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},"---"):null,this.props.onObjectDelete&&t.children&&t.children.length?d.default.createElement(p.IconButton,{className:D.default.clsx(n.cellButtonsButton,n.cellButtonsButtonAlone),size:"small","aria-label":"delete",title:this.texts.deleteObject,onClick:()=>{var n;const r=Object.keys(this.objects);r.sort();let o=0;const s="".concat(e,".");for(let e=0;es)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!(null===(n=t.children)||void 0===n?void 0:n.length),!1,o+1)}},d.default.createElement(m.Delete,{className:n.cellButtonsButtonIcon})):null):null;t.data.aclTooltip=t.data.aclTooltip||this.renderTooltipAccessControl(t.data.obj.acl);const i=t.data.obj.acl?"state"===t.data.obj.type?t.data.obj.acl.state:t.data.obj.acl.object:0,c=t.data.obj.acl&&("state"===t.data.obj.type?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object),l=this.state.filter.expertMode||r.isNonExpertId(t.data.id);return[this.state.filter.expertMode&&this.props.objectEditOfAccessControl?d.default.createElement(p.Tooltip,{key:"acl",title:t.data.aclTooltip,classes:{popper:this.props.classes.tooltip}},d.default.createElement(p.IconButton,{className:n.cellButtonMinWidth,onClick:()=>this.setState({modalEditOfAccess:!0,modalEditOfAccessObjData:t.data}),size:"large"},d.default.createElement("div",{className:n.aclText},Number.isNaN(Number(i))?Number(c).toString(16):Number(i).toString(16)))):d.default.createElement("div",{key:"aclEmpty",className:n.cellButtonMinWidth}),l?d.default.createElement(p.IconButton,{key:"edit",className:n.cellButtonsButton,size:"small","aria-label":"edit",title:this.texts.editObject,onClick:()=>{this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectSelected"),e),this.setState({editObjectDialog:e,editObjectAlias:!1})}},d.default.createElement(m.Edit,{className:n.cellButtonsButtonIcon})):d.default.createElement("div",{key:"editDisabled",className:n.cellButtonsButton}),!this.props.onObjectDelete||!(null===(o=t.children)||void 0===o?void 0:o.length)&&(null===(s=t.data.obj.common)||void 0===s?void 0:s.dontDelete)?null:d.default.createElement(p.IconButton,{key:"delete",className:n.cellButtonsButton,size:"small","aria-label":"delete",onClick:()=>{var n,r,o;const s=Object.keys(this.objects);s.sort();let a=0;const i="".concat(e,".");for(let e=0;ei)break;this.props.onObjectDelete&&this.props.onObjectDelete(e,!!(null===(n=t.children)||void 0===n?void 0:n.length),!(null===(o=null===(r=t.data.obj)||void 0===r?void 0:r.common)||void 0===o?void 0:o.dontDelete),a)},title:this.texts.deleteObject},d.default.createElement(m.Delete,{className:n.cellButtonsButtonIcon})),this.props.objectCustomDialog&&this.info.hasSomeCustoms&&"state"===t.data.obj.type&&"file"!==(null===(a=t.data.obj.common)||void 0===a?void 0:a.type)?d.default.createElement(p.IconButton,{className:D.default.clsx(n.cellButtonsButton,t.data.hasCustoms?n.cellButtonsButtonWithCustoms:n.cellButtonsButtonWithoutCustoms),key:"custom",size:"small","aria-label":"config",title:this.texts.customConfig,onClick:()=>{var t;this.localStorage.setItem("".concat(this.props.dialogName||"App",".objectSelected"),e),this.pauseSubscribe(!0),null===(t=this.props.router)||void 0===t||t.doNavigate(null,"customs",e),this.setState({customDialog:[e],customDialogAll:!1})}},d.default.createElement(m.Settings,{className:n.cellButtonsButtonIcon})):null]}readHistory(e){var t,n;if(window.sparkline&&this.defaultHistory&&(null===(n=null===(t=this.objects[e])||void 0===t?void 0:t.common)||void 0===n?void 0:n.custom)&&this.objects[e].common.custom[this.defaultHistory]){const t=new Date;t.setHours(t.getHours()-24),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0);const n=t.getTime();this.props.socket.getHistory(e,{instance:this.defaultHistory,start:n,end:Date.now(),step:36e5,from:!1,ack:!1,q:!1,addID:!1,aggregate:"minmax"}).then((t=>{const r=window.document.getElementsByClassName("sparkline");for(let o=0;oconsole.warn("Cannot read history: ".concat(e))))}}renderColumnValue(e,t,n){var r,o,s;const a=t.data.obj;if(!a||!this.states)return null;if("file"===(null===(r=a.common)||void 0===r?void 0:r.type))return d.default.createElement("div",{className:D.default.clsx(n.cellValueText,n.cellValueFile)},"[file]");if(!this.states[e])return"state"===a.type&&(!this.recordStates.includes(e)&&this.recordStates.push(e),this.states[e]={val:null},this.subscribe(e)),null;!this.recordStates.includes(e)&&this.recordStates.push(e);const i=this.states[e];let c=t.data.state;if(!c){const{valFull:l,valText:u}=function(e){const{dateFormat:t,state:n,isFloatComma:o,texts:s,obj:a}=e,i=D.default.getStates(a),c=a.common;let l="file"===(null===c||void 0===c?void 0:c.type)?"[file]":n&&null!==n.val?void 0===n.val?"[undef]":n.val:"(null)";const d=typeof l;if((null===c||void 0===c?void 0:c.role)&&"string"===typeof c.role&&c.role.match(/^value\.time|^date/))if(l&&"string"===typeof l)if(D.default.isStringInteger(l))l=new Date(parseInt(l,10)).toString();else try{const e=new Date(l);D.default.isValidDate(e)&&(l=e.toString())}catch(r){}else l>946681200&&l<9466812e5&&(l*=1e3),l=l?new Date(l).toString():l;else"number"===d?Number.isInteger(l)||(l=Math.round(1e8*l)/1e8,o&&(l=l.toString().replace(".",","))):"object"===d?l=JSON.stringify(l):"string"!==d&&(l=l.toString()),"string"!==typeof l&&(l=l.toString());const u={v:l};i&&void 0!==i[l]&&l!==i[l]&&(u.s=l,l=i[l],u.v=l),(null===c||void 0===c?void 0:c.unit)&&(u.u=c.unit);const h=[{t:s.value,v:l}];if(n){if(void 0!==n.ack&&null!==n.ack&&h.push({t:s.ack,v:n.ack.toString()}),n.ts&&h.push({t:s.ts,v:n.ts?D.default.formatDate(new Date(n.ts),t):""}),n.lc&&h.push({t:s.lc,v:n.lc?D.default.formatDate(new Date(n.lc),t):""}),n.from){let e=n.from.toString();e.startsWith("system.adapter.")&&(e=e.substring(15)),h.push({t:s.from,v:e})}if(n.user){let e=n.user.toString();e.startsWith("system.user.")&&(e=e.substring(12)),h.push({t:s.user,v:e})}n.c&&h.push({t:s.c,v:n.c}),h.push({t:s.quality,v:D.default.quality2text(n.q||0).join(", "),nbr:!0})}return{valText:u,valFull:h}}({state:i,obj:a,texts:this.texts,dateFormat:this.props.dateFormat||this.systemConfig.common.dateFormat,isFloatComma:void 0===this.props.isFloatComma?this.systemConfig.common.isFloatComma:this.props.isFloatComma}),h=[],p=[];t.data.state={valFullRx:h,valTextRx:p},l.forEach((e=>{e.t===this.texts.quality&&i.q?(h.push(d.default.createElement("div",{className:n.cellValueTooltipBoth,key:e.t},e.t,":\xa0",e.v)),!e.nbr&&h.push(d.default.createElement("br",{key:"".concat(e.t,"_br")}))):(h.push(d.default.createElement("div",{className:n.cellValueTooltipTitle,key:e.t},e.t,":\xa0")),h.push(d.default.createElement("div",{className:n.cellValueTooltipValue,key:"".concat(e.t,"_v")},e.v)),!e.nbr&&h.push(d.default.createElement("br",{key:"".concat(e.t,"_br")})))})),this.defaultHistory&&(null===(s=null===(o=this.objects[e])||void 0===o?void 0:o.common)||void 0===s?void 0:s.custom)&&this.objects[e].common.custom[this.defaultHistory]&&h.push(d.default.createElement("svg",{key:"sparkline",className:"sparkline","data-id":e,style:{fill:"#3d85de"},width:"200",height:"30",strokeWidth:"3"}));const m=u.v||"";p.push(d.default.createElement("span",{className:n.newValue,key:"".concat(u.v.toString(),"valText")},u.v.toString())),u.u&&p.push(d.default.createElement("span",{className:D.default.clsx(n.cellValueTextUnit,n.newValue),key:"".concat(u.v.toString(),"unit")},u.u)),void 0!==u.s&&p.push(d.default.createElement("span",{className:D.default.clsx(n.cellValueTextState,n.newValue),key:"".concat(u.v.toString(),"states")},"(",u.s,")")),p.push(d.default.createElement(v.default,{className:D.default.clsx(n.cellButtonsValueButton,"copyButton",n.cellButtonsValueButtonCopy),onClick:e=>this.onCopy(e,m),key:"cc"})),c=t.data.state}c.style=function(e){const{state:t,isExpertMode:n,isButton:r}=e;let o=(null===t||void 0===t?void 0:t.ack)?t.q?"#ffa500":"":"#ff2222c9";return!n&&r&&(o=""),{color:o}}({state:i,isExpertMode:this.state.filter.expertMode,isButton:t.data.button});let l=c.valTextRx;return!this.state.filter.expertMode&&t.data.button&&(l=[d.default.createElement(m.RoomService,{className:this.props.classes.cellValueButton})]),d.default.createElement(p.Tooltip,{key:"value",title:c.valFullRx,classes:{tooltip:this.props.classes.cellValueTooltip,popper:this.props.classes.cellValueTooltipBox},onOpen:()=>this.readHistory(e)},d.default.createElement("div",{style:c.style,className:n.cellValueText},l))}_syncEnum(e,t,n,r){var o,s,a;if(!t||!t.length)return void(r&&r());const i=t.pop()||"",c=[];if(null===(o=this.info.objects[i])||void 0===o?void 0:o.common){if(null===(s=this.info.objects[i].common.members)||void 0===s?void 0:s.length){const t=this.info.objects[i].common.members.indexOf(e);if(-1!==t&&!n.includes(i)){const e=JSON.parse(JSON.stringify(this.info.objects[i]));e.common.members.splice(t,1),c.push(this.props.socket.setObject(i,e).then((()=>this.info.objects[i]=e)).catch((e=>this.showError(e))))}}if(n.includes(i)&&!(null===(a=this.info.objects[i].common.members)||void 0===a?void 0:a.includes(e))){const t=JSON.parse(JSON.stringify(this.info.objects[i]));t.common.members=t.common.members||[],t.common.members.push(e),t.common.members.sort(),c.push(this.props.socket.setObject(i,t).then((()=>this.info.objects[i]=t)).catch((e=>this.showError(e))))}}Promise.all(c).then((()=>{setTimeout((()=>this._syncEnum(e,t,n,r)),0)}))}syncEnum(e,t,n){const r=[...this.info["func"===t?"funcEnums":"roomEnums"]];return new Promise((t=>{this._syncEnum(e,r,n,(()=>{t()}))}))}renderEnumDialog(){if(!this.state.enumDialog)return null;const e=this.state.enumDialog.type,t=this.state.enumDialog.item,n=this.state.enumDialogEnums,r=this.state.enumDialog.enumsOriginal,o=("room"===e?this.info.roomEnums:this.info.funcEnums).map((e=>{var t,n;return{name:Z((null===(n=null===(t=this.objects[e])||void 0===t?void 0:t.common)||void 0===n?void 0:n.name)||e.split(".").pop()||"",this.props.lang),value:e,icon:X(this.objects,e,this.imagePrefix)}})).sort(((e,t)=>e.name>t.name?1:-1));return o.forEach((e=>{e.icon&&"string"===typeof e.icon&&(e.icon=d.default.createElement("div",{className:this.props.classes.enumIconDiv},d.default.createElement("img",{src:e.icon,className:this.props.classes.enumIcon,alt:e.name})))})),d.default.createElement(p.Dialog,{className:this.props.classes.enumDialog,onClose:()=>this.setState({enumDialog:null}),"aria-labelledby":"enum-dialog-title",open:!0},d.default.createElement(p.DialogTitle,{id:"enum-dialog-title"},"func"===e?this.props.t("ra_Define functions"):this.props.t("ra_Define rooms"),d.default.createElement(p.Fab,{className:this.props.classes.enumButton,color:"primary",disabled:r===JSON.stringify(n),size:"small",onClick:()=>this.syncEnum(t.data.id,e,n).then((()=>this.setState({enumDialog:null,enumDialogEnums:null})))},d.default.createElement(m.Check,null))),d.default.createElement(p.List,{classes:{root:this.props.classes.enumList}},o.map((e=>{let t,r,o;"object"===typeof e?(t=e.value,r=e.name,o=e.icon):(t=e,r=e);const s="checkbox-list-label-".concat(t);return d.default.createElement(p.ListItem,{className:this.props.classes.headerCellSelectItem,key:t,onClick:()=>{const e=n.indexOf(t),r=JSON.parse(JSON.stringify(this.state.enumDialogEnums));-1===e?(r.push(t),r.sort()):r.splice(e,1),this.setState({enumDialogEnums:r})}},d.default.createElement(p.ListItemIcon,{classes:{root:this.props.classes.enumCheckbox}},d.default.createElement(p.Checkbox,{edge:"start",checked:n.includes(t),tabIndex:-1,disableRipple:!0,inputProps:{"aria-labelledby":s}})),d.default.createElement(p.ListItemText,{id:s},r),o?d.default.createElement(p.ListItemSecondaryAction,null,o):null)}))))}renderEditRoleDialog(){if(!this.state.roleDialog||!this.props.objectBrowserEditRole)return null;if(this.state.roleDialog&&this.props.objectBrowserEditRole){const e=this.props.objectBrowserEditRole;return d.default.createElement(e,{key:"objectBrowserEditRole",id:this.state.roleDialog,socket:this.props.socket,t:this.props.t,roles:this.info.roles,onClose:e=>{e&&(this.info.objects[this.state.roleDialog]=e),this.setState({roleDialog:null})}})}return null}onColumnsEditCustomDialogClose(e){var t,n;const o=this.customColumnDialog;if(e){let e=o.value;"boolean"===o.type?e="true"===e||!0===e:"number"===o.type&&(e=parseFloat(e)),this.customColumnDialog=null,this.props.socket.getObject((null===(n=null===(t=this.state.columnsEditCustomDialog)||void 0===t?void 0:t.obj)||void 0===n?void 0:n._id)||"").then((t=>{var n;if(t&&r.setCustomValue(t,null===(n=this.state.columnsEditCustomDialog)||void 0===n?void 0:n.it,e))return this.props.socket.setObject(t._id,t);throw new Error(this.props.t("ra_Cannot update attribute, because not found in the object"))})).then((()=>this.setState({columnsEditCustomDialog:null}))).catch((e=>this.showError(e)))}else this.customColumnDialog=null,this.setState({columnsEditCustomDialog:null})}renderColumnsEditCustomDialog(){if(!this.state.columnsEditCustomDialog)return null;if(!this.customColumnDialog){const e=r.getCustomValue(this.state.columnsEditCustomDialog.obj,this.state.columnsEditCustomDialog.it);this.customColumnDialog={type:this.state.columnsEditCustomDialog.it.type||typeof e,initValue:(null===e||void 0===e?"":e).toString(),value:(null===e||void 0===e?"":e).toString()}}return d.default.createElement(p.Dialog,{onClose:()=>this.setState({columnsEditCustomDialog:null}),maxWidth:"md","aria-labelledby":"custom-dialog-title",open:!0},d.default.createElement(p.DialogTitle,{id:"custom-dialog-title"},"".concat(this.props.t("ra_Edit object field"),": ").concat(this.state.columnsEditCustomDialog.obj._id)),d.default.createElement(p.DialogContent,null,d.default.createElement(p.DialogContentText,{id:"alert-dialog-description"},"boolean"===this.customColumnDialog.type?d.default.createElement(p.FormControlLabel,{control:d.default.createElement(p.Checkbox,{onKeyUp:e=>"Enter"===e.key&&this.onColumnsEditCustomDialogClose(!0),defaultChecked:"true"===this.customColumnDialog.value,onChange:e=>{const t=this.customColumnDialog;t.value=e.target.checked.toString();const n=t.value!==t.initValue;n===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:n})}}),label:"".concat(this.state.columnsEditCustomDialog.it.name," (").concat(this.state.columnsEditCustomDialog.it.pathText,")")}):d.default.createElement(p.TextField,{variant:"standard",defaultValue:this.customColumnDialog.value,fullWidth:!0,onKeyUp:e=>"Enter"===e.key&&this.onColumnsEditCustomDialogClose(!0),label:"".concat(this.state.columnsEditCustomDialog.it.name," (").concat(this.state.columnsEditCustomDialog.it.pathText,")"),onChange:e=>{const t=this.customColumnDialog;t.value=e.target.value;const n=t.value!==t.initValue;n===!this.state.customColumnDialogValueChanged&&this.setState({customColumnDialogValueChanged:n})},autoFocus:!0}))),d.default.createElement(p.DialogActions,null,d.default.createElement(p.Button,{variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(!0),disabled:!this.state.customColumnDialogValueChanged,color:"primary",startIcon:d.default.createElement(m.Check,null)},this.props.t("ra_Update")),d.default.createElement(p.Button,{color:"grey",variant:"contained",onClick:()=>this.onColumnsEditCustomDialogClose(),startIcon:d.default.createElement(m.Close,null)},this.props.t("ra_Cancel"))))}static getCustomValue(e,t){var n;if((null===(n=null===e||void 0===e?void 0:e._id)||void 0===n?void 0:n.startsWith("".concat(t.adapter,".")))&&t.path.length>1){const n=t.path;let r;const o=e;if(o[n[0]]&&"object"===typeof o[n[0]])return 2===n.length?r=o[n[0]][n[1]]:3===n.length?r=o[n[0]][n[1]]&&"object"===typeof o[n[0]][n[1]]?o[n[0]][n[1]][n[2]]:null:4===n.length?r=o[n[0]][n[1]]&&"object"===typeof o[n[0]][n[1]]&&o[n[0]][n[1]][n[2]]?o[n[0]][n[1]][n[2]][n[3]]:null:5===n.length?r=o[n[0]][n[1]]&&"object"===typeof o[n[0]][n[1]]&&o[n[0]][n[1]][n[2]]&&o[n[0]][n[1]][n[2]][n[3]]?o[n[0]][n[1]][n[2]][n[3]][n[4]]:null:6===n.length&&(r=o[n[0]][n[1]]&&"object"===typeof o[n[0]][n[1]]&&o[n[0]][n[1]][n[2]]&&o[n[0]][n[1]][n[2]][n[3]]&&o[n[0]][n[1]][n[2]][n[3]][n[4]]?o[n[0]][n[1]][n[2]][n[3]][n[4]][n[5]]:null),void 0===r||null===r?null:r}return null}static setCustomValue(e,t,n){var r;if((null===(r=null===e||void 0===e?void 0:e._id)||void 0===r?void 0:r.startsWith("".concat(t.adapter,".")))&&t.path.length>1){const r=t.path,o=e;if(o[r[0]]&&"object"===typeof o[r[0]]){if(2===r.length)return o[r[0]][r[1]]=n,!0;if(3===r.length){if(o[r[0]][r[1]]&&"object"===typeof o[r[0]][r[1]])return o[r[0]][r[1]][r[2]]=n,!0}else if(4===r.length){if(o[r[0]][r[1]]&&"object"===typeof o[r[0]][r[1]]&&o[r[0]][r[1]][r[2]]&&"object"===typeof o[r[0]][r[1]][r[2]])return o[r[0]][r[1]][r[2]][r[3]]=n,!0}else if(5===r.length){if(o[r[0]][r[1]]&&"object"===typeof o[r[0]][r[1]]&&o[r[0]][r[1]][r[2]]&&"object"===typeof o[r[0]][r[1]][r[2]]&&o[r[0]][r[1]][r[2]][r[3]]&&"object"===typeof o[r[0]][r[1]][r[2]][r[3]])return o[r[0]][r[1]][r[2]][r[3]][r[4]]=n,!0}else if(6===r.length&&o[r[0]][r[1]]&&"object"===typeof o[r[0]][r[1]]&&o[r[0]][r[1]][r[2]]&&"object"===typeof o[r[0]][r[1]][r[2]]&&o[r[0]][r[1]][r[2]][r[3]]&&"object"===typeof o[r[0]][r[1]][r[2]][r[3]]&&o[r[0]][r[1]][r[2]][r[3]][r[4]]&&"object"===typeof o[r[0]][r[1]][r[2]][r[3]][r[4]])return o[r[0]][r[1]][r[2]][r[3]][r[4]][r[5]]=n,!0}}return!1}renderCustomValue(e,t,n){const o=r.getCustomValue(e,t);return null!==o&&void 0!==o?!t.edit||this.props.notEditable||t.objTypes&&!t.objTypes.includes(e.type)?d.default.createElement("div",{className:D.default.clsx(this.props.classes.columnCustom,this.props.classes["columnCustom_".concat(t.align)])},o):d.default.createElement("div",{className:D.default.clsx(this.props.classes.columnCustom,this.props.classes.columnCustomEditable,this.props.classes["columnCustom_".concat(t.align)]),onClick:()=>this.setState({columnsEditCustomDialog:{item:n,it:t,obj:e},customColumnDialogValueChanged:!1})},o):null}renderLeaf(e,n,r,o){var s,a,i,c,l,u,h,f,_;const g=e.data.id;let y;o.count++,n=void 0===n?this.state.expanded.includes(g):n;const S=e.data.obj,k=null===S||void 0===S?void 0:S.type;y=e.children||"folder"===k||"device"===k||"channel"===k||"meta"===k?n?d.default.createElement(E.default,{className:r.cellIdIconFolder,onClick:()=>this.toggleExpanded(g)}):d.default.createElement(C.default,{className:r.cellIdIconFolder,onClick:()=>this.toggleExpanded(g)}):S&&S.common&&!1===S.common.write&&"state"===S.type?d.default.createElement(w.default,{className:r.cellIdIconDocument}):d.default.createElement(b.default,{className:r.cellIdIconDocument});let x=null;e.data.icon&&(x="string"===typeof e.data.icon?e.data.icon.length<3?d.default.createElement("span",{className:D.default.clsx(r.cellIdIconOwn,"iconOwn")},e.data.icon):d.default.createElement(O.default,{className:D.default.clsx(r.cellIdIconOwn,"iconOwn"),src:e.data.icon,alt:""}):e.data.icon);const T=null===S||void 0===S?void 0:S.common,N=(null===S||void 0===S?void 0:S.type)&&t.ITEM_IMAGES[S.type]||d.default.createElement("div",{className:"itemIcon"}),I=this.levelPadding*(e.data.level||0);if(e.data.lang!==this.props.lang){const{rooms:t,per:n}=se(this.info,g,this.props.lang);e.data.rooms=t.join(", "),e.data.per=n;const{funcs:r,pef:o}=ie(this.info,g,this.props.lang);e.data.funcs=r.join(", "),e.data.pef=o,e.data.lang=this.props.lang}const j=this.props.multiSelect&&this.objects[g]&&(!this.props.types||this.props.types.includes(this.objects[g].type))?d.default.createElement(p.Checkbox,{className:r.checkBox,checked:this.state.selected.includes(g)}):null;let A=!this.props.notEditable&&"state"===k&&(this.state.filter.expertMode||!1!==(null===T||void 0===T?void 0:T.write));this.props.objectBrowserViewFile&&"file"===(null===T||void 0===T?void 0:T.type)&&(A=!0);const M=!this.props.notEditable&&this.objects[g]&&(this.state.filter.expertMode||"state"===k||"channel"===k||"device"===k),R=this.state.statesView&&("state"===k||"channel"===k||"device"===k);let F="";const G=[];if(R&&(F=null===(s=this.states[g])||void 0===s?void 0:s.from,void 0===F?F=" ":(F=F?F.replace(/^system\.adapter\.|^system\./,""):"",G.push("".concat(this.texts.stateChangedFrom," ").concat(F))),null===S||void 0===S?void 0:S.user)){const e=S.user.replace("system.user.","");F+="/".concat(e),G.push("".concat(this.texts.stateChangedBy," ").concat(e))}S&&(S.from&&G.push("".concat(this.texts.objectChangedFrom," ").concat(S.from.replace(/^system\.adapter\.|^system\./,""))),S.user&&G.push("".concat(this.texts.objectChangedBy," ").concat(S.user.replace(/^system\.user\./,""))),S.ts&&G.push("".concat(this.texts.objectChangedByUser," ").concat(D.default.formatDate(new Date(S.ts),this.props.dateFormat||this.systemConfig.common.dateFormat))));const K="object"===typeof(null===(a=null===T||void 0===T?void 0:T.alias)||void 0===a?void 0:a.id),Y=g.startsWith("alias.")&&(null===(i=null===T||void 0===T?void 0:T.alias)||void 0===i?void 0:i.id)?K?d.default.createElement("div",{className:r.cellIdAliasReadWriteDiv},T.alias.id.read?d.default.createElement("div",{onClick:e=>{e.stopPropagation(),e.preventDefault(),this.onSelect(T.alias.id.read),setTimeout((()=>this.expandAllSelected((()=>this.scrollToItem(T.alias.id.read)))),100)},className:D.default.clsx(r.cellIdAlias,r.cellIdAliasReadWrite)},"\u2190",T.alias.id.read):null,T.alias.id.write?d.default.createElement("div",{onClick:e=>{e.stopPropagation(),e.preventDefault(),this.onSelect(T.alias.id.write),setTimeout((()=>this.expandAllSelected((()=>this.scrollToItem(T.alias.id.write)))),100)},className:D.default.clsx(r.cellIdAlias,r.cellIdAliasReadWrite)},"\u2192",T.alias.id.write):null):d.default.createElement("div",{onClick:e=>{e.stopPropagation(),e.preventDefault(),this.onSelect(T.alias.id),setTimeout((()=>this.expandAllSelected((()=>this.scrollToItem(T.alias.id)))),100)},className:D.default.clsx(r.cellIdAlias,r.cellIdAliasAlone)},"\u2192",T.alias.id):null;let Z,X=null===T||void 0===T?void 0:T.color;if(X&&!this.state.selected.includes(g)){const e="dark"===this.props.themeName?"#1f1f1f":"blue"===this.props.themeName?"#222a2e":"#FFFFFF";D.default.colorDistance(X,e)<1e3&&(Z="dark"===this.props.themeType?"#9a9a9a":"#565656")}let Q=!1;"0_userdata"===g?(X=L(this.props.themeType),Q=!0):"alias"===g?(X=z(this.props.themeType),Q=!0):"javascript"===g?(X="dark"===this.props.themeType?"#fff46e":"#b89101",Q=!0):"system"===g?(X=P(this.props.themeType),Q=!0):"system.adapter"===g?X=B(this.props.themeType):X&&!this.state.selected.includes(g)||(X="inherit");const $=[];if(null===T||void 0===T?void 0:T.statusStates){const e={};Object.keys(T.statusStates).forEach((t=>{var n;let r=T.statusStates[t];r.split(".").length<3&&(r="".concat(g,".").concat(r)),e[t]=r,this.states[r]?!this.recordStates.includes(r)&&this.recordStates.push(r):"state"===(null===(n=this.objects[r])||void 0===n?void 0:n.type)&&(!this.recordStates.includes(r)&&this.recordStates.push(r),this.states[r]={val:null},this.subscribe(r))}));let t=!1;T.statusStates.errorId&&this.states[e.errorId]&&this.states[e.errorId].val&&(X="dark"===this.props.themeType?W:U,t=!0,$.push(d.default.createElement(m.Error,{key:"error",className:this.props.classes.iconDeviceError}))),e.onlineId&&this.states[e.onlineId]?t?this.states[e.onlineId].val?$.push(d.default.createElement(m.Wifi,{key:"conn",className:this.props.classes.iconDeviceConnected})):$.push(d.default.createElement(m.WifiOff,{key:"disc",className:this.props.classes.iconDeviceDisconnected})):this.states[e.onlineId].val?(X="dark"===this.props.themeType?J:H,$.push(d.default.createElement(m.Wifi,{key:"conn",className:this.props.classes.iconDeviceConnected}))):(X="dark"===this.props.themeType?V:q,$.push(d.default.createElement(m.WifiOff,{key:"disc",className:this.props.classes.iconDeviceDisconnected}))):e.offlineId&&this.states[e.offlineId]&&(t?this.states[e.offlineId].val?$.push(d.default.createElement(m.WifiOff,{key:"disc",className:this.props.classes.iconDeviceDisconnected})):$.push(d.default.createElement(m.Wifi,{key:"conn",className:this.props.classes.iconDeviceConnected})):this.states[e.offlineId].val?(X="dark"===this.props.themeType?V:q,$.push(d.default.createElement(m.WifiOff,{key:"disc",className:this.props.classes.iconDeviceDisconnected}))):(X="dark"===this.props.themeType?J:H,$.push(d.default.createElement(m.Wifi,{key:"conn",className:this.props.classes.iconDeviceConnected}))))}const ee=R?D.default.quality2text((null===(c=this.states[g])||void 0===c?void 0:c.q)||0).join(", "):null;let re=(null===(l=e.data)||void 0===l?void 0:l.title)||"",oe=!1;if(this.state.showDescription){const t=te(e.data,this.props.lang);t&&(re=[d.default.createElement("div",{key:"name",className:r.cellNameDivDiv},re),d.default.createElement("div",{key:"desc",className:r.cellDescription},t)],oe=!!t)}return d.default.createElement(p.Grid,{container:!0,direction:"row",wrap:"nowrap",className:D.default.clsx(r.tableRow,this.state.linesEnabled&&r.tableRowLines,!this.props.dragEnabled&&r.tableRowNoDragging,Y&&r.tableRowAlias,K&&r.tableRowAliasReadWrite,!e.data.visible&&r.filteredOut,e.data.hasVisibleParent&&!e.data.visible&&!e.data.hasVisibleChildren&&r.filteredParentOut,this.state.selected.includes(g)&&r.itemSelected,this.state.selectedNonObject===g&&r.itemSelected),key:g,id:g,onMouseDown:t=>{let n;this.onSelect(g),"which"in t?n=3===t.which:"button"in t&&(n=2===t.button),this.contextMenu=n?{item:e,ts:Date.now()}:null},onDoubleClick:()=>{e.children?this.toggleExpanded(g):this.onSelect(g,!0)}},d.default.createElement(p.Grid,{container:!0,wrap:"nowrap",direction:"row",className:r.cellId,style:{width:this.columnsVisibility.id,paddingLeft:I}},d.default.createElement(p.Grid,{item:!0,container:!0,alignItems:"center"},j,y),d.default.createElement(p.Grid,{item:!0,style:{color:X,fontWeight:Q?"bold":void 0},className:D.default.clsx(r.cellIdSpan,Z&&r.invertedBackground)},d.default.createElement(p.Tooltip,{title:ne(e.data,this.props.classes,this.props.lang),classes:{popper:this.props.classes.tooltip}},d.default.createElement("div",null,e.data.name)),Y,$),d.default.createElement("div",{className:D.default.clsx(r.grow,Z&&r.invertedBackgroundFlex)}),d.default.createElement(p.Grid,{item:!0,container:!0,alignItems:"center"},x),d.default.createElement("div",null,d.default.createElement(v.default,{className:D.default.clsx(r.cellCopyButton,"copyButton"),onClick:e=>this.onCopy(e,g)}))),this.columnsVisibility.name?d.default.createElement("div",{className:D.default.clsx(r.cellName,oe&&r.cellNameWithDesc),style:{width:this.columnsVisibility.name}},re,(null===(u=e.data)||void 0===u?void 0:u.title)?d.default.createElement("div",{style:{color:X}},d.default.createElement(v.default,{className:D.default.clsx(r.cellCopyButton,"copyButton"),onClick:t=>{var n;return this.onCopy(t,null===(n=e.data)||void 0===n?void 0:n.title)}})):null):null,this.state.statesView?d.default.createElement(d.default.Fragment,null,this.columnsVisibility.changedFrom?d.default.createElement("div",{className:r.cellRole,style:{width:this.columnsVisibility.changedFrom},title:G.join("\n")},R&&(null===(h=this.states[g])||void 0===h?void 0:h.from)?F:null):null,this.columnsVisibility.qualityCode?d.default.createElement("div",{className:r.cellRole,style:{width:this.columnsVisibility.qualityCode},title:ee||""},ee):null,this.columnsVisibility.timestamp?d.default.createElement("div",{className:r.cellRole,style:{width:this.columnsVisibility.timestamp}},R&&(null===(f=this.states[g])||void 0===f?void 0:f.ts)?D.default.formatDate(new Date(this.states[g].ts),this.props.dateFormat||this.systemConfig.common.dateFormat):null):null,this.columnsVisibility.lastChange?d.default.createElement("div",{className:r.cellRole,style:{width:this.columnsVisibility.lastChange}},R&&(null===(_=this.states[g])||void 0===_?void 0:_.lc)?D.default.formatDate(new Date(this.states[g].lc),this.props.dateFormat||this.systemConfig.common.dateFormat):null):null):d.default.createElement(d.default.Fragment,null,this.columnsVisibility.type?d.default.createElement("div",{className:r.cellType,style:{width:this.columnsVisibility.type}},N,"\xa0",S&&S.type):null,this.columnsVisibility.role?d.default.createElement("div",{className:r.cellRole,style:{width:this.columnsVisibility.role,cursor:this.state.filter.expertMode&&M&&this.props.objectBrowserEditRole?"text":"default"},onClick:this.state.filter.expertMode&&M&&this.props.objectBrowserEditRole?()=>this.setState({roleDialog:e.data.id}):void 0},null===T||void 0===T?void 0:T.role):null,this.columnsVisibility.room?d.default.createElement("div",{className:"".concat(r.cellRoom," ").concat(e.data.per?r.cellEnumParent:""),style:{width:this.columnsVisibility.room,cursor:M?"text":"default"},onClick:M?()=>{const t=ae(this.info,e.data.id,"roomEnums");this.setState({enumDialogEnums:t,enumDialog:{item:e,type:"room",enumsOriginal:JSON.stringify(t)}})}:void 0},e.data.rooms):null,this.columnsVisibility.func?d.default.createElement("div",{className:"".concat(r.cellFunc," ").concat(e.data.pef?r.cellEnumParent:""),style:{width:this.columnsVisibility.func,cursor:M?"text":"default"},onClick:M?()=>{const t=ae(this.info,e.data.id,"funcEnums");this.setState({enumDialogEnums:t,enumDialog:{item:e,type:"func",enumsOriginal:JSON.stringify(t)}})}:void 0},e.data.funcs):null),this.adapterColumns.map((t=>d.default.createElement("div",{className:r.cellAdapter,style:{width:this.columnsVisibility[t.id]},key:t.id,title:"".concat(t.adapter," => ").concat(t.pathText)},S?this.renderCustomValue(S,t,e):null))),this.columnsVisibility.val?d.default.createElement("div",{className:r.cellValue,style:{width:this.columnsVisibility.val,cursor:A?"file"===(null===T||void 0===T?void 0:T.type)?"zoom-in":e.data.button?"grab":"text":"default"},onClick:A?()=>{S&&this.states&&("file"===(null===T||void 0===T?void 0:T.type)?this.setState({viewFileDialog:g}):!this.state.filter.expertMode&&e.data.button?this.props.socket.setState(g,!0).catch((e=>window.alert('Cannot write state "'.concat(g,'": ').concat(e)))):(this.edit={val:this.states[g]?this.states[g].val:"",q:this.states[g]&&this.states[g].q||0,ack:!1,id:g},this.setState({updateOpened:!0})))}:void 0},this.renderColumnValue(g,e,r)):null,this.columnsVisibility.buttons?d.default.createElement("div",{className:r.cellButtons,style:{width:this.columnsVisibility.buttons}},this.renderColumnButtons(g,e,r)):null)}renderItem(e,t,n,r){const o=[];r=r||{count:0};let s=this.renderLeaf(e,t,n,r);const a=this.props.DragWrapper;return this.props.dragEnabled&&(s=e.data.sumVisibility?d.default.createElement(a,{key:e.data.id,item:e,className:n.draggable},s):d.default.createElement("div",{key:e.data.id,className:n.nonDraggable},s)),e.data.id&&s&&o.push(s),t=void 0===t?Y(this.state.expanded,e.data.id):t,e.data.id&&!t||(this.state.foldersFirst?(e.children&&o.push(e.children.map((e=>e.children&&(!this.state.columnsSelectorShow||r.count<15)&&e.data.sumVisibility?this.renderItem(e,void 0,n,r):null))),e.children&&o.push(e.children.map((e=>!e.children&&(!this.state.columnsSelectorShow||r.count<15)&&e.data.sumVisibility?this.renderItem(e,void 0,n,r):null)))):e.children&&o.push(e.children.map((e=>(!this.state.columnsSelectorShow||r.count<15)&&e.data.sumVisibility?this.renderItem(e,void 0,n,r):null)))),o}calculateColumnsVisibility(e,t,n,r){let o=r||this.state.columnsWidths;const s=n||this.state.columnsForAdmin,a=t||this.state.columns||[],i="boolean"!==typeof e?this.state.columnsAuto:e;o=JSON.parse(JSON.stringify(o)),Object.keys(o).forEach((e=>{o[e]&&(o[e]=parseInt(o[e],10)||0)})),this.adapterColumns=[];const c=de[this.props.width||"lg"].widths;if(i){if(this.columnsVisibility={id:de[this.props.width||"lg"].idWidth,name:this.visibleCols.includes("name")&&c.name||0,nameHeader:this.visibleCols.includes("name")&&c.name||0,type:this.visibleCols.includes("type")&&c.type||0,role:this.visibleCols.includes("role")&&c.role||0,room:this.visibleCols.includes("room")&&c.room||0,func:this.visibleCols.includes("func")&&c.func||0,changedFrom:this.visibleCols.includes("changedFrom")&&c.changedFrom||0,qualityCode:this.visibleCols.includes("qualityCode")&&c.qualityCode||0,timestamp:this.visibleCols.includes("timestamp")&&c.timestamp||0,lastChange:this.visibleCols.includes("lastChange")&&c.lastChange||0,val:this.visibleCols.includes("val")&&c.val||0,buttons:this.visibleCols.includes("buttons")&&c.buttons||0},this.columnsVisibility.name&&!this.customWidth){let e=this.columnsVisibility.id||0;this.state.statesView?(e+=this.columnsVisibility.changedFrom||0,e+=this.columnsVisibility.qualityCode||0,e+=this.columnsVisibility.timestamp||0,e+=this.columnsVisibility.lastChange||0):(e+=this.columnsVisibility.type||0,e+=this.columnsVisibility.role||0,e+=this.columnsVisibility.room||0,e+=this.columnsVisibility.func||0),e+=this.columnsVisibility.val||0,e+=this.columnsVisibility.buttons||0,this.columnsVisibility.name="calc(100% - ".concat(e+5,"px)"),this.columnsVisibility.nameHeader="calc(100% - ".concat(e+5+this.state.scrollBarWidth,"px)")}else if(!this.customWidth){let e=0;this.state.statesView?(e+=this.columnsVisibility.changedFrom||0,e+=this.columnsVisibility.qualityCode||0,e+=this.columnsVisibility.timestamp||0,e+=this.columnsVisibility.lastChange||0):(e+=this.columnsVisibility.type||0,e+=this.columnsVisibility.role||0,e+=this.columnsVisibility.room||0,e+=this.columnsVisibility.func||0),e+=this.columnsVisibility.val||0,e+=this.columnsVisibility.buttons||0,this.columnsVisibility.id="calc(100% - ".concat(e+5,"px)")}}else{const e=this.props.width||"lg";this.columnsVisibility={id:o.id||de[e].idWidth,name:a.includes("name")&&(o.name||c.name||de[e].widths.name)||0,type:a.includes("type")&&(o.type||c.type||de[e].widths.type)||0,role:a.includes("role")&&(o.role||c.role||de[e].widths.role)||0,room:a.includes("room")&&(o.room||c.room||de[e].widths.room)||0,func:a.includes("func")&&(o.func||c.func||de[e].widths.func)||0};let t=this.columnsVisibility.id;if(this.columnsVisibility.name&&(t+=this.columnsVisibility.type||0,t+=this.columnsVisibility.role||0,t+=this.columnsVisibility.room||0,t+=this.columnsVisibility.func||0),s&&a&&Object.keys(s).sort().forEach((n=>s[n].forEach((r=>{const s="_".concat(n,"_").concat(r.path);if(a.includes(s)){const a={adapter:n,id:"_".concat(n,"_").concat(r.path),name:r.name,path:r.path.split("."),pathText:r.path};r.edit&&(a.edit=!0,r.type&&(a.type=r.type),r.objTypes&&(a.objTypes=r.objTypes)),this.adapterColumns.push(a),this.columnsVisibility[s]=o[a.id]||r.width||de[e].widths.func||de.xl.widths.func||0,t+=this.columnsVisibility[s]}else this.columnsVisibility[s]=0})))),this.adapterColumns.sort(((e,t)=>e.id>t.id?-1:e.id"id"!==t&&"string"!==typeof this.columnsVisibility[t]&&this.columnsVisibility[t]?e+this.columnsVisibility[t]:e),0);this.columnsVisibility.id="calc(100% - ".concat(e,"px)")}}}navigateKeyPress(e){var t,n;const r=this.state.selectedNonObject||this.state.selected[0];if(r){if("ArrowUp"===e.code||"ArrowDown"===e.code){e.preventDefault();const n=[];null===(t=this.tableRef.current)||void 0===t||t.childNodes.forEach((e=>n.push(e.id)));const o=n.indexOf(r),s="ArrowDown"===e.code?o+1:o-1,a=n[s]||r;this.onSelect(a),this.scrollToItem(a)}if("ArrowRight"!==e.code&&"ArrowLeft"!==e.code||this.toggleExpanded(r),"Delete"===e.code&&this.root&&r){const e=this.getItemFromRoot(this.root,r);if(e){const{obj:t}=e.data;t&&!(null===(n=t.common)||void 0===n?void 0:n.dontDelete)&&this.showDeleteDialog({id:r,obj:t,item:e})}}}}getItemFromRoot(e,t){var n;const r=t.split(".");let o="",s=e;for(const a of r)if(o=o?"".concat(o,".").concat(a):a,s=null===(n=s.children)||void 0===n?void 0:n.find((e=>e.data.id===o)),!s)break;return s||null}renderHandleRight(){return d.default.createElement("div",{className:"".concat(this.props.classes.resizeHandle," ").concat(this.props.classes.resizeHandleRight),onMouseDown:this.resizerMouseDown,onDoubleClick:this.resizerReset,title:this.props.t("ra_Double click to reset table layout")})}renderHeader(){const e=this.props.classes;let t=null;return this.columnsVisibility.buttons||this.isFilterEmpty()||(t=d.default.createElement(p.IconButton,{onClick:()=>this.clearFilter(),className:e.buttonClearFilter,title:this.props.t("ra_Clear filter"),size:"large"},d.default.createElement(x.default,null),d.default.createElement(m.Close,{className:e.buttonClearFilterIcon}))),d.default.createElement("div",{className:e.headerRow},d.default.createElement("div",{className:e.headerCell,style:{width:this.columnsVisibility.id,position:"relative"},"data-min":240,"data-name":"id"},this.getFilterInput("id"),this.renderHandleRight()),this.columnsVisibility.name?d.default.createElement("div",{className:e.headerCell,style:{width:this.columnsVisibility.nameHeader,position:"relative"},"data-min":100,"data-name":"nameHeader"},this.getFilterInput("name"),this.renderHandleRight()):null,!this.state.statesView&&d.default.createElement(d.default.Fragment,null,this.columnsVisibility.type?d.default.createElement("div",{className:e.headerCell,style:{width:this.columnsVisibility.type,position:"relative"},"data-min":100,"data-name":"type"},this.getFilterSelectType(),this.renderHandleRight()):null,this.columnsVisibility.role?d.default.createElement("div",{className:e.headerCell,style:{width:this.columnsVisibility.role,position:"relative"},"data-min":100,"data-name":"role"},this.getFilterSelectRole(),this.renderHandleRight()):null,this.columnsVisibility.room?d.default.createElement("div",{className:e.headerCell,style:{width:this.columnsVisibility.room,position:"relative"},"data-min":100,"data-name":"room"},this.getFilterSelectRoom(),this.renderHandleRight()):null,this.columnsVisibility.func?d.default.createElement("div",{className:e.headerCell,style:{width:this.columnsVisibility.func,position:"relative"},"data-min":100,"data-name":"func"},this.getFilterSelectFunction(),this.renderHandleRight()):null),this.state.statesView&&d.default.createElement(d.default.Fragment,null,d.default.createElement("div",{className:D.default.clsx(e.headerCell,e.headerCellValue),style:{width:this.columnsVisibility.changedFrom,position:"relative"},"data-min":100,"data-name":"changedFrom"},this.props.t("ra_Changed from"),this.renderHandleRight()),d.default.createElement("div",{className:D.default.clsx(e.headerCell,e.headerCellValue),style:{width:this.columnsVisibility.qualityCode,position:"relative"},"data-min":100,"data-name":"qualityCode"},this.props.t("ra_Quality code"),this.renderHandleRight()),d.default.createElement("div",{className:D.default.clsx(e.headerCell,e.headerCellValue),style:{width:this.columnsVisibility.timestamp,position:"relative"},"data-min":100,"data-name":"timestamp"},this.props.t("ra_Timestamp"),this.renderHandleRight()),d.default.createElement("div",{className:D.default.clsx(e.headerCell,e.headerCellValue),style:{width:this.columnsVisibility.lastChange,position:"relative"},"data-min":100,"data-name":"lastChange"},this.props.t("ra_Last change"),this.renderHandleRight())),this.adapterColumns.map((t=>d.default.createElement("div",{className:D.default.clsx(e.headerCell,e.headerCellValue),style:{width:this.columnsVisibility[t.id]},title:t.adapter,key:t.id,"data-min":100,"data-name":t.id},t.name))),this.columnsVisibility.val?d.default.createElement("div",{className:D.default.clsx(e.headerCell,e.headerCellValue),style:{width:this.columnsVisibility.val,position:"relative"},"data-min":120,"data-name":"val"},this.props.t("ra_Value"),t):null,this.columnsVisibility.buttons?d.default.createElement("div",{className:e.headerCell,title:this.texts.filter_custom,style:{width:this.columnsVisibility.buttons}}," ",this.getFilterSelectCustoms()):null)}renderToast(){return d.default.createElement(p.Snackbar,{open:!!this.state.toast,autoHideDuration:3e3,onClick:()=>this.setState({toast:""}),onClose:()=>this.setState({toast:""}),message:this.state.toast,action:d.default.createElement(p.IconButton,{size:"small","aria-label":"close",color:"inherit",onClick:()=>this.setState({toast:""})},d.default.createElement(m.Close,{fontSize:"small"}))})}componentDidUpdate(){var e,t,n,r;if(this.tableRef.current){const o=this.tableRef.current.offsetWidth-this.tableRef.current.clientWidth;this.state.scrollBarWidth!==o?setTimeout((()=>this.setState({scrollBarWidth:o})),100):this.selectedFound||!(null===(e=this.state.selected)||void 0===e?void 0:e[0])&&!(null===(t=this.lastSelectedItems)||void 0===t?void 0:t[0])||this.scrollToItem((null===(n=this.state.selected)||void 0===n?void 0:n[0])||(null===(r=this.lastSelectedItems)||void 0===r?void 0:r[0]))}}scrollToItem(e){const t=window.document.getElementById(e);t&&t.scrollIntoView({behavior:"auto",block:"center",inline:"center"}),this.selectedFound=!0}renderCustomDialog(){if(this.state.customDialog&&this.props.objectCustomDialog){const e=this.props.objectCustomDialog;return d.default.createElement(e,{reportChangedIds:e=>this.changedIds=[...e],objectIDs:this.state.customDialog,allVisibleObjects:this.state.customDialogAll,expertMode:this.state.filter.expertMode,isFloatComma:this.props.isFloatComma,t:this.props.t,lang:this.props.lang,socket:this.props.socket,themeName:this.props.themeName,themeType:this.props.themeType,theme:this.props.theme,objects:this.objects,customsInstances:this.info.customs,onClose:()=>{var e;this.pauseSubscribe(!1),this.setState({customDialog:null}),this.changedIds&&(this.changedIds=null,this.forceUpdate()),null===(e=this.props.router)||void 0===e||e.doNavigate("tab-objects")}})}return null}onUpdate(e){this.props.socket.setState(this.edit.id,{val:e.val,ack:e.ack,q:e.q||0,expire:e.expire||void 0}).catch((e=>this.showError("Cannot write value: ".concat(e))))}renderEditObjectDialog(){if(!this.state.editObjectDialog||!this.props.objectBrowserEditObject)return null;const e=this.props.objectBrowserEditObject;return d.default.createElement(e,{key:this.state.editObjectDialog,obj:this.objects[this.state.editObjectDialog],roleArray:this.info.roles,objects:this.objects,dateFormat:this.props.dateFormat,isFloatComma:this.props.isFloatComma,themeType:this.props.themeType,socket:this.props.socket,dialogName:this.props.dialogName,aliasTab:this.state.editObjectAlias,t:this.props.t,expertMode:this.state.filter.expertMode,onNewObject:e=>this.props.socket.setObject(e._id,e).then((()=>this.setState({editObjectDialog:e._id,editObjectAlias:!1},(()=>this.onSelect(e._id))))).catch((e=>this.showError("Cannot write object: ".concat(e)))),onClose:e=>{var t,n;if(e){let r;this.state.editObjectDialog.startsWith("alias.")&&JSON.stringify(null===(t=this.objects[this.state.editObjectDialog].common)||void 0===t?void 0:t.alias)!==JSON.stringify(null===(n=e.common)||void 0===n?void 0:n.alias)&&(r=this.state.editObjectDialog),this.props.socket.setObject(e._id,e).then((()=>{r&&this.subscribes.includes(r)&&(this.unsubscribe(r),setTimeout((()=>this.subscribe(r)),100))})).catch((e=>this.showError("Cannot write object: ".concat(e))))}this.setState({editObjectDialog:"",editObjectAlias:!1})}})}renderViewObjectFileDialog(){if(!this.state.viewFileDialog||!this.props.objectBrowserViewFile)return null;const e=this.props.objectBrowserViewFile;return d.default.createElement(e,{key:"viewFile",obj:this.objects[this.state.viewFileDialog],themeType:this.props.themeType,socket:this.props.socket,dialogName:this.props.dialogName,t:this.props.t,expertMode:this.state.filter.expertMode,onClose:()=>this.setState({viewFileDialog:""})})}renderAliasEditorDialog(){if(!this.props.objectBrowserAliasEditor||!this.state.showAliasEditor)return null;const e=this.props.objectBrowserAliasEditor;return d.default.createElement(e,{key:"editAlias",obj:this.objects[this.state.showAliasEditor],objects:this.objects,themeType:this.props.themeType,socket:this.props.socket,dialogName:this.props.dialogName,t:this.props.t,expertMode:this.state.filter.expertMode,onClose:()=>this.setState({showAliasEditor:""}),onRedirect:(e,t)=>setTimeout((()=>this.onSelect(e,!1,(()=>this.expandAllSelected((()=>{this.scrollToItem(e),setTimeout((()=>this.setState({editObjectDialog:e,showAliasEditor:"",editObjectAlias:!0})),300)}))))),t||0)})}showAddDataPointDialog(e,t,n){this.setState({showContextMenu:null,modalNewObj:{id:e,initialType:t,initialStateType:n}})}renderContextMenu(){var e,t,n,o,s,a,i;if(!this.state.showContextMenu)return null;const c=this.state.showContextMenu.item,l=c.data.id,u=[],h=c.data.obj;let f="";if(this.props.objectEditOfAccessControl&&this.state.filter.expertMode)if(h){const e=h.acl?"state"===h.type?h.acl.state:h.acl.object:0,t=h.acl&&("state"===h.type?this.systemConfig.common.defaultNewAcl.state:this.systemConfig.common.defaultNewAcl.object);f=Number.isNaN(Number(e))?Number(t).toString(16):Number(e).toString(16)}else f="---";const _=!this.props.notEditable&&h&&(this.state.filter.expertMode||"state"===h.type||"channel"===h.type||"device"===h.type),v=!c.data.obj||"folder"===c.data.obj.type||"channel"===c.data.obj.type||"device"===c.data.obj.type||"0_userdata.0"===c.data.id||"meta"===c.data.obj.type,b=!c.data.obj||"folder"===c.data.obj.type||"device"===c.data.obj.type||"0_userdata.0"===c.data.id||"meta"===c.data.obj.type,w=!c.data.obj||"folder"===c.data.obj.type||"0_userdata.0"===c.data.id||"meta"===c.data.obj.type,S=!c.data.obj||"folder"===c.data.obj.type||"0_userdata.0"===c.data.id||"meta"===c.data.obj.type,C={EDIT:{key:"0",visibility:!(!this.props.objectBrowserEditObject||!h||!this.state.filter.expertMode&&!r.isNonExpertId(l)),icon:d.default.createElement(m.Edit,{fontSize:"small",className:this.props.classes.contextMenuEdit}),label:this.texts.editObject,onClick:()=>this.setState({editObjectDialog:c.data.id,showContextMenu:null,editObjectAlias:!1})},EDIT_VALUE:{key:"1",visibility:!(!this.states||this.props.notEditable||!h||"state"!==h.type||"file"===(null===(e=h.common)||void 0===e?void 0:e.type)||!this.state.filter.expertMode&&!1===h.common.write),icon:d.default.createElement(m.FormatItalic,{fontSize:"small",className:this.props.classes.contextMenuEditValue}),label:this.props.t("ra_Edit value"),onClick:()=>{this.edit={val:this.states[l]?this.states[l].val:"",q:this.states[l]&&this.states[l].q||0,ack:!1,id:l},this.setState({updateOpened:!0,showContextMenu:null})}},VIEW:{visibility:!!this.props.objectBrowserViewFile&&"state"===(null===h||void 0===h?void 0:h.type)&&"file"===(null===(t=h.common)||void 0===t?void 0:t.type),icon:d.default.createElement(m.FindInPage,{fontSize:"small",className:this.props.classes.contextMenuView}),className:"",label:this.props.t("ra_View file"),onClick:()=>this.setState({viewFileDialog:(null===h||void 0===h?void 0:h._id)||"",showContextMenu:null})},CUSTOM:{key:"2",visibility:!(this.props.objectCustomDialog&&this.info.hasSomeCustoms&&h&&"state"===h.type&&"file"!==(null===(n=h.common)||void 0===n?void 0:n.type)),icon:d.default.createElement(m.Settings,{fontSize:"small",className:c.data.hasCustoms?this.props.classes.cellButtonsButtonWithCustoms:this.props.classes.cellButtonsButtonWithoutCustoms}),className:this.props.classes.contextMenuCustom,label:this.texts.customConfig,onClick:()=>{var e;this.pauseSubscribe(!0),null===(e=this.props.router)||void 0===e||e.doNavigate(null,"customs",l),this.setState({customDialog:[l],showContextMenu:null})}},ACL:{key:"3",visibility:!!f,icon:f,iconStyle:{fontSize:"smaller"},listItemIconClass:this.props.classes.contextMenuACL,className:this.props.classes.contextMenuACL,label:this.props.t("ra_Edit ACL"),onClick:()=>this.setState({showContextMenu:null,modalEditOfAccess:!0,modalEditOfAccessObjData:c.data})},ROLE:{key:"4",visibility:!!(this.state.filter.expertMode&&_&&this.props.objectBrowserEditRole),icon:d.default.createElement(m.BorderColor,{fontSize:"small",className:this.props.classes.contextMenuRole}),className:"",label:this.props.t("ra_Edit role"),onClick:()=>this.setState({roleDialog:c.data.id,showContextMenu:null})},FUNCTION:{key:"5",visibility:!!_,icon:d.default.createElement(m.BedroomParent,{fontSize:"small",className:this.props.classes.contextMenuRole}),className:"",label:this.props.t("ra_Edit function"),onClick:()=>{const e=ae(this.info,c.data.id,"funcEnums");this.setState({enumDialogEnums:e,enumDialog:{item:c,type:"func",enumsOriginal:JSON.stringify(e)},showContextMenu:null})}},ROOM:{key:"6",visibility:!!_,icon:d.default.createElement(m.Construction,{fontSize:"small",className:this.props.classes.contextMenuRoom}),className:"",label:this.props.t("ra_Edit room"),onClick:()=>{const e=ae(this.info,c.data.id,"roomEnums");this.setState({enumDialogEnums:e,enumDialog:{item:c,type:"room",enumsOriginal:JSON.stringify(e)},showContextMenu:null})}},ALIAS:{key:"7",visibility:!(this.props.notEditable||!this.props.objectBrowserAliasEditor||!this.props.objectBrowserEditObject||!this.state.filter.expertMode||"state"!==(null===h||void 0===h?void 0:h.type)||"file"===(null===(o=h.common)||void 0===o?void 0:o.type)),icon:d.default.createElement(m.Link,{className:(null===(s=null===h||void 0===h?void 0:h.common)||void 0===s?void 0:s.alias)?this.props.classes.cellButtonsButtonWithCustoms:this.props.classes.cellButtonsButtonWithoutCustoms}),className:"",label:this.props.t("ra_Edit alias"),onClick:()=>{var e;(null===(e=null===h||void 0===h?void 0:h.common)||void 0===e?void 0:e.alias)?this.setState({editObjectDialog:c.data.id,showContextMenu:null,editObjectAlias:!0}):this.setState({showContextMenu:null,showAliasEditor:c.data.id})}},CREATE:{key:"+",visibility:(c.data.id.startsWith("0_userdata.0")||c.data.id.startsWith("javascript."))&&(v||b||w||S),icon:d.default.createElement(m.Add,{fontSize:"small",className:this.props.classes.cellButtonsButtonWithCustoms}),className:this.props.classes.contextMenuWithSubMenu,label:this.texts.create,subMenu:[{label:this.texts.createBooleanState,visibility:v,icon:d.default.createElement(k.default,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(c.data.id,"state","boolean")},{label:this.texts.createNumberState,visibility:v,icon:d.default.createElement(k.default,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(c.data.id,"state","number")},{label:this.texts.createStringState,visibility:v,icon:d.default.createElement(k.default,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(c.data.id,"state","string")},{label:this.texts.createState,visibility:v,icon:d.default.createElement(k.default,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(c.data.id,"state")},{label:this.texts.createChannel,visibility:b,icon:d.default.createElement(g.default,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(c.data.id,"channel")},{label:this.texts.createDevice,visibility:w,icon:d.default.createElement(y.default,{fontSize:"small"}),onClick:()=>this.showAddDataPointDialog(c.data.id,"device")},{label:this.texts.createFolder,icon:d.default.createElement(m.CreateNewFolder,{fontSize:"small"}),visibility:S,onClick:()=>this.showAddDataPointDialog(c.data.id,"folder")}]},DELETE:{key:"Delete",visibility:!(!this.props.onObjectDelete||!((null===(a=c.children)||void 0===a?void 0:a.length)||h&&!(null===(i=h.common)||void 0===i?void 0:i.dontDelete))),icon:d.default.createElement(m.Delete,{fontSize:"small",className:this.props.classes.contextMenuDelete}),className:this.props.classes.contextMenuDelete,label:this.texts.deleteObject,onClick:()=>this.setState({showContextMenu:null},(()=>this.showDeleteDialog({id:l,obj:h||{},item:c})))}};if(Object.keys(C).forEach((e=>{var t,n;C[e].visibility&&(C[e].subMenu?(u.push(d.default.createElement(p.MenuItem,{key:e,onClick:t=>this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item,subItem:e,subAnchor:t.target}}),className:C[e].className},d.default.createElement(p.ListItemIcon,{style:C[e].iconStyle,className:C[e].listItemIconClass},C[e].icon),d.default.createElement(p.ListItemText,null,C[e].label,"..."),d.default.createElement(p.ListItemSecondaryAction,null,d.default.createElement(m.ArrowRight,null)))),(null===(t=this.state.showContextMenu)||void 0===t?void 0:t.subItem)===e&&u.push(d.default.createElement(p.Menu,{key:"subContextMenu",open:!0,anchorEl:this.state.showContextMenu.subAnchor,onClose:()=>{this.state.showContextMenu&&this.setState({showContextMenu:{item:this.state.showContextMenu.item}}),this.contextMenu=null}},null===(n=C[e].subMenu)||void 0===n?void 0:n.map((e=>e.visibility?d.default.createElement(p.MenuItem,{key:e.label,onClick:e.onClick,className:e.className},d.default.createElement(p.ListItemIcon,{style:e.iconStyle,className:e.listItemIconClass},e.icon),d.default.createElement(p.ListItemText,null,e.label)):null))))):u.push(d.default.createElement(p.MenuItem,{key:e,onClick:C[e].onClick,className:C[e].className},d.default.createElement(p.ListItemIcon,{style:C[e].iconStyle,className:C[e].listItemIconClass},C[e].icon),d.default.createElement(p.ListItemText,null,C[e].label),C[e].key?d.default.createElement("div",{className:this.props.classes.contextMenuKeys},"Alt+".concat("Delete"===C[e].key?this.props.t("ra_Del"):C[e].key)):null)))})),!u.length)return setTimeout((()=>this.setState({showContextMenu:null})),100),null;const E=document.getElementById(l);return d.default.createElement(p.Menu,{key:"contextMenu",open:!0,onKeyUp:e=>{e.preventDefault(),e.altKey&&Object.keys(C).forEach((t=>{e.key===C[t].key&&C[t].onClick&&C[t].onClick()}))},anchorEl:E,onClose:()=>{this.setState({showContextMenu:null}),this.contextMenu=null}},u)}renderEditValueDialog(){var e;if(!this.state.updateOpened||!this.props.objectBrowserValue)return null;if(!this.edit.id)return console.error("Invalid ID for edit: ".concat(JSON.stringify(this.edit))),null;if(!this.objects[this.edit.id])return console.error("Something went wrong. Possibly the object ".concat(this.edit.id," was deleted.")),null;const t=(null===(e=this.objects[this.edit.id].common)||void 0===e?void 0:e.type)?this.objects[this.edit.id].common.type:typeof this.edit.val,n=this.objects[this.edit.id].common.role,r=this.props.objectBrowserValue;return d.default.createElement(r,{t:this.props.t,lang:this.props.lang,type:t,role:n,states:D.default.getStates(this.objects[this.edit.id]),themeType:this.props.themeType,expertMode:this.state.filter.expertMode,value:this.edit.val,socket:this.props.socket,object:this.objects[this.edit.id],defaultHistory:this.defaultHistory,dateFormat:this.props.dateFormat,onClose:e=>{this.setState({updateOpened:!1}),e&&this.onUpdate(e)}})}render(){this.recordStates=[],this.unsubscribeTimer&&clearTimeout(this.unsubscribeTimer);const e=JSON.stringify(this.state.filter);if(this.lastAppliedFilter!==e&&this.objects&&this.root){const t={count:0};Q(this.root,this.state.filter,this.props.lang,this.objects,void 0,t,this.props.customFilter,this.props.types),t.count<500&&!this.state.expandAllVisible?setTimeout((()=>this.setState({expandAllVisible:!0}))):t.count>=500&&this.state.expandAllVisible&&setTimeout((()=>this.setState({expandAllVisible:!1}))),this.lastAppliedFilter=e}if(this.unsubscribeTimer=setTimeout((()=>{this.unsubscribeTimer=null,this.checkUnsubscribes()}),200),!this.state.loaded)return d.default.createElement(p.CircularProgress,{key:"".concat(this.props.dialogName,"_c")});const t=this.props.classes,n=this.root?this.renderItem(this.root,void 0,t):null;return d.default.createElement(I.default,{key:this.props.dialogName},d.default.createElement(A.default,null,this.getToolbar()),d.default.createElement(j.default,null,this.renderHeader(),d.default.createElement("div",{className:this.props.classes.tableDiv,ref:this.tableRef,onKeyDown:e=>this.navigateKeyPress(e)},n)),this.renderContextMenu(),this.renderToast(),this.renderColumnsEditCustomDialog(),this.renderColumnsSelectorDialog(),this.renderCustomDialog(),this.renderEditValueDialog(),this.renderEditObjectDialog(),this.renderViewObjectFileDialog(),this.renderAliasEditorDialog(),this.renderEditRoleDialog(),this.renderEnumDialog(),this.renderErrorDialog(),this.renderExportDialog(),this.state.modalNewObj&&this.props.modalNewObject&&this.props.modalNewObject(this),this.state.modalEditOfAccess&&this.state.modalEditOfAccessObjData&&this.props.modalEditOfAccessControl&&this.props.modalEditOfAccessControl(this,this.state.modalEditOfAccessObjData))}}r=pe,o={value:["0_userdata.0.","alias.0."]},t.default=(0,N.default)()((0,u.withStyles)((e=>({toolbar:{minHeight:38},toolbarButtons:{padding:4,marginLeft:4},switchColumnAuto:{marginLeft:e.spacing(2)},dialogColumns:{transition:"opacity 1s"},dialogColumnsLabel:{fontSize:12,paddingTop:e.spacing(1)},columnCustom:{width:"100%",display:"inline-block"},columnCustomEditable:{cursor:"text"},columnCustom_center:{textAlign:"center"},columnCustom_left:{textAlign:"left"},columnCustom_right:{textAlign:"right"},width100:{width:"100%"},transparent_10:{opacity:.1},transparent_20:{opacity:.2},transparent_30:{opacity:.3},transparent_40:{opacity:.4},transparent_50:{opacity:.5},transparent_60:{opacity:.6},transparent_70:{opacity:.7},transparent_80:{opacity:.8},transparent_90:{opacity:.9},transparent_100:{opacity:1},columnsDialogInputWidth:{width:80},headerRow:{paddingLeft:e.spacing(1),height:38,whiteSpace:"nowrap",userSelect:"none"},buttonClearFilter:{position:"relative",float:"right",padding:0},buttonClearFilterIcon:{zIndex:2,position:"absolute",top:0,left:0,color:"#FF0000",opacity:.7},tableDiv:{paddingTop:0,paddingLeft:0,width:"calc(100% - ".concat(e.spacing(1),")"),height:"calc(100% - 38px)",overflow:"auto"},tableRow:{paddingLeft:e.spacing(1),height:R,lineHeight:"".concat(R,"px"),verticalAlign:"top",userSelect:"none",width:"100%","&:hover":{background:"".concat("dark"===e.palette.mode?e.palette.primary.dark:e.palette.primary.light," !important"),color:D.default.invertColor(e.palette.primary.main,!0)},whiteSpace:"nowrap",flexWrap:"nowrap"},tableRowLines:{borderBottom:"1px solid ".concat((e.palette.mode,"#8888882e")),"& > div":{borderRight:"1px solid ".concat((e.palette.mode,"#8888882e"))}},tableRowNoDragging:{cursor:"pointer"},tableRowAlias:{height:42},tableRowAliasReadWrite:{height:54},checkBox:{padding:0},cellId:{position:"relative",fontSize:"1rem",overflow:"hidden",textOverflow:"ellipsis","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"},"& .iconOwn":{display:"block",width:28,height:28,marginTop:2,float:"right"},"&:hover .iconOwn":{display:"none"},"& *":{width:"initial"}},cellIdSpan:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},cellIdIconFolder:{marginRight:e.spacing(1),width:28,height:28,cursor:"pointer",color:e.palette.secondary.main||"#fbff7d",verticalAlign:"top"},cellIdIconDocument:{verticalAlign:"middle",marginLeft:6,marginRight:e.spacing(1),width:F,height:F},cellIdIconOwn:{},cellIdTooltip:{fontSize:14},cellIdTooltipLink:{color:"#7ec2fd","&:hover":{color:"#7ec2fd"},"&:visited":{color:"#7ec2fd"}},cellCopyButton:{width:F,height:F,top:6,opacity:.8,"&:hover":{opacity:1},position:"absolute",right:3},cellEditButton:{width:F,height:F,color:"white",position:"absolute",top:6,right:23,opacity:.7,"&:hover":{opacity:1}},cellName:{display:"inline-block",verticalAlign:"top",fontSize:14,marginLeft:5,overflow:"hidden",textOverflow:"ellipsis",position:"relative","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellNameWithDesc:{lineHeight:"normal"},cellNameDivDiv:{},cellDescription:{fontSize:10,opacity:.5,fontStyle:"italic"},cellIdAlias:{fontStyle:"italic",fontSize:12,opacity:.7,"&:hover":{color:"dark"===e.palette.mode?"#009900":"#007700"}},cellIdAliasReadWriteDiv:{height:24,marginTop:-5},cellIdAliasAlone:{lineHeight:0},cellIdAliasReadWrite:{lineHeight:"12px"},cellType:{display:"inline-block",verticalAlign:"top","& .itemIcon":{verticalAlign:"middle",width:M,height:M,display:"inline-block"},"& .itemIconFolder":{marginLeft:3}},cellRole:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellRoom:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellEnumParent:{opacity:.4},cellFunc:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValue:{display:"inline-block",verticalAlign:"top",textOverflow:"ellipsis",overflow:"hidden"},cellValueButton:{marginTop:5,"&:active":{transform:"scale(0.8)"}},cellValueButtonFalse:{opacity:.3},cellAdapter:{display:"inline-block",verticalAlign:"top"},cellValueTooltip:{fontSize:12},cellValueText:{width:"100%",height:R,fontSize:16,display:"inline-block",overflow:"hidden",textOverflow:"ellipsis",position:"relative",verticalAlign:"top","& .copyButton":{display:"none"},"&:hover .copyButton":{display:"block"}},cellValueFile:{color:"#2837b9"},cellValueTooltipTitle:{fontStyle:"italic",width:100,display:"inline-block"},cellValueTooltipValue:{width:120,display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis"},cellValueTooltipBoth:{width:220,display:"inline-block",whiteSpace:"nowrap"},cellValueTooltipBox:{width:250,overflow:"hidden",pointerEvents:"none"},tooltip:{pointerEvents:"none"},cellValueTextUnit:{marginLeft:e.spacing(.5),opacity:.8},newValue:{animation:"$newValueAnimation 2s ease-in-out"},"@keyframes newValueAnimation":{"0%":{color:"#00f900"},"80%":{color:"#008000"},"100%":{color:"dark"===e.palette.mode?"#fff":"#000"}},cellValueTextState:{opacity:.7},cellValueTooltipCopy:{position:"absolute",bottom:3,right:3},cellValueTooltipEdit:{position:"absolute",bottom:3,right:15},cellButtons:{display:"inline-block",verticalAlign:"top"},cellButtonsButton:{display:"inline-block",opacity:.7,width:24,height:24,"&:hover":{opacity:1},paddingTop:0,paddingLeft:0,marginTop:-2},cellButtonsEmptyButton:{fontSize:12},cellButtonMinWidth:{minWidth:47},cellButtonsButtonAlone:{marginLeft:24,paddingTop:0,marginTop:-2},cellButtonsButtonWithCustoms:{color:"dark"===e.palette.mode?e.palette.primary.main:e.palette.secondary.main},cellButtonsButtonWithoutCustoms:{opacity:.2},cellButtonsValueButton:{position:"absolute",display:"inline-block",top:8,opacity:.7,width:18,height:18,color:e.palette.action.active,"&:hover":{opacity:1}},cellButtonsValueButtonCopy:{right:e.spacing(1),cursor:"pointer"},cellButtonsValueButtonEdit:{right:10+parseInt(e.spacing(2),10)},filteredOut:{opacity:.5},filteredParentOut:{opacity:.3},filterInput:{marginTop:0,marginBottom:0},selectIcon:{width:24,height:24,marginRight:4},selectNone:{opacity:.5},itemSelected:{background:"".concat(e.palette.primary.main," !important"),color:"".concat(D.default.invertColor(e.palette.primary.main,!0)," !important")},header:{width:"100%"},headerCell:{display:"inline-block",verticalAlign:"top"},headerCellValue:{paddingTop:4,fontSize:16},headerCellInput:{width:"calc(100% - 5px)",height:R,paddingTop:0,"& .itemIcon":{verticalAlign:"middle",width:M,height:M,display:"inline-block"}},headerCellSelectItem:{"& .itemIcon":{width:M,height:M,marginRight:5,display:"inline-block"}},visibleButtons:{color:"#2196f3",opacity:.7},grow:{flexGrow:1},enumIconDiv:{marginRight:e.spacing(1),width:32,height:32,borderRadius:8,background:"#FFFFFF"},enumIcon:{marginTop:4,marginLeft:4,width:24,height:24},enumDialog:{overflow:"hidden"},enumList:{minWidth:250,height:"calc(100% - 50px)",overflow:"auto"},enumButton:{float:"right"},enumCheckbox:{minWidth:0},buttonDiv:{display:"flex",height:"100%",alignItems:"center"},aclText:{fontSize:13},rightsObject:{color:"#55ff55",paddingLeft:3},rightsState:{color:"#86b6ff",paddingLeft:3},textCenter:{padding:12,textAlign:"center"},tooltipAccessControl:{display:"flex",flexDirection:"column"},"@media screen and (max-width: 465px)":{columnsDialogInputWidth:{width:50},fontSizeTitle:{"& *":{fontSize:12}}},"@media screen and (max-width: 700px)":{},"@media screen and (max-width: 430px)":{},draggable:{cursor:"copy"},nonDraggable:{cursor:"no-drop"},selectClearButton:{position:"absolute",top:0,right:0,borderRadius:20,backgroundColor:e.palette.background.default},iconDeviceConnected:{color:"dark"===e.palette.mode?J:H,opacity:.8,position:"absolute",top:4,right:32,width:20},iconDeviceDisconnected:{color:"dark"===e.palette.mode?V:q,opacity:.8,position:"absolute",top:4,right:32,width:20},iconDeviceError:{color:"dark"===e.palette.mode?W:U,opacity:.8,position:"absolute",top:4,right:50,width:20},resizeHandle:{display:"block",position:"absolute",cursor:"col-resize",width:7,top:2,bottom:2,zIndex:1},resizeHandleRight:{right:3,borderRight:"2px dotted #888","&:hover":{borderColor:"#ccc",borderRightStyle:"solid"},"&.active":{borderColor:"#517ea5",borderRightStyle:"solid"}},invertedBackground:{backgroundColor:"dark"===e.palette.mode?"#9a9a9a":"#565656",padding:"0 3px",borderRadius:"2px 0 0 2px"},invertedBackgroundFlex:{backgroundColor:"dark"===e.palette.mode?"#9a9a9a":"#565656",borderRadius:"0 2px 2px 0"},contextMenuEdit:{color:"dark"===e.palette.mode?"#ffee48":"#cbb801"},contextMenuEditValue:{color:"dark"===e.palette.mode?"#5dff45":"#1cd301"},contextMenuView:{color:"dark"===e.palette.mode?"#FFF":"#000"},contextMenuCustom:{color:"dark"===e.palette.mode?"#42eaff":"#01bbc2"},contextMenuACL:{color:"dark"===e.palette.mode?"#e079ff":"#500070"},contextMenuRoom:{color:"dark"===e.palette.mode?"#ff9a33":"#642a00"},contextMenuRole:{color:"dark"===e.palette.mode?"#ffdb43":"#562d00"},contextMenuAlias:{color:"dark"===e.palette.mode?"#5cabfb":"#011ed0"},contextMenuDelete:{color:"dark"===e.palette.mode?"#ff4f4f":"#cf0000"},contextMenuKeys:{marginLeft:e.spacing(1),opacity:.7,fontSize:"smaller"},contextMenuWithSubMenu:{display:"flex"}})))(pe))},70591:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(53482);class o extends r.Component{constructor(e){super(e),this.onHashChangedBound=this.onHashChanged.bind(this)}componentDidMount(){window.addEventListener("hashchange",this.onHashChangedBound)}componentWillUnmount(){window.removeEventListener("hashchange",this.onHashChangedBound)}onHashChanged(){}static getLocation(){let e=window.location.hash;e=e.replace(/^#/,"");const t=e.split("/").map((e=>{try{return e?decodeURIComponent(e):""}catch(t){return console.error("Router: Cannot decode ".concat(e)),e||""}}));return{tab:t[0]||"",dialog:t[1]||"",id:t[2]||"",arg:t[3]||""}}static doNavigate(e,t,n,r){let s="";const a=o.getLocation();void 0===r||n||(n=a.id),n&&!t&&(t=a.dialog),(t&&!e||null===e)&&(e=a.tab),e&&(s="#".concat(e),t&&(s+="/".concat(t),n&&(s+="/".concat(n),void 0!==r&&(s+="/".concat(r))))),window.location.hash!==s&&(window.location.hash=s)}}t.default=o},29102:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482)),s=n(32496),a=n(65298),i=n(21839),c=r(n(12539));class l extends o.default.Component{constructor(e){super(e);const t=void 0===e.newReact||e.newReact;try{this.isIFrame=!t&&window.self!==window.top}catch(n){this.isIFrame=!t}}render(){const e=this.props.noTextOnButtons,t={borderRadius:this.props.theme.saveToolbar.button.borderRadius||3,height:this.props.theme.saveToolbar.button.height||32},n={bottom:this.isIFrame?38:0,left:this.props.paddingLeft||0,right:0,position:"absolute",background:this.props.theme.saveToolbar.background};return this.props.dense&&(n.minHeight=48),this.props.error&&(t.border="1px solid red"),o.default.createElement(a.Toolbar,{style:n},o.default.createElement(a.Fab,{variant:"extended","aria-label":"Save",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!1),style:t},o.default.createElement(i.Save,{className:e?"":this.props.classes.buttonIcon}),!e&&c.default.t("ra_Save")),o.default.createElement(a.Fab,{variant:"extended","aria-label":"Save and close",disabled:!this.props.changed||this.props.error,onClick:()=>this.props.onSave(!0),style:Object.assign(Object.assign({},t),{marginLeft:10})},o.default.createElement(i.Save,{className:e?"":this.props.classes.buttonIcon}),e?"+":c.default.t("ra_Save and close"),e&&o.default.createElement(i.Close,null)),o.default.createElement("div",{style:{flexGrow:1}}),o.default.createElement(a.Fab,{variant:"extended","aria-label":"Close",onClick:()=>this.props.onClose(),style:t},o.default.createElement(i.Close,{className:e?"":this.props.classes.buttonIcon}),!e&&c.default.t("ra_Close")))}}const d=(0,s.withStyles)((()=>({buttonIcon:{marginRight:8}})))(l);t.default=d},92311:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=s(n(53482)),c=n(32496),l=n(65298),d=a(n(12539)),u=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"],p="minutes",m="hours",f=["sunrise","sunriseEnd","goldenHourEnd","solarNoon","goldenHour","sunsetStart","sunset","dusk","nauticalDusk","night","nightEnd","nauticalDawn","dawn","nadir"];function _(e){return e<10?"0".concat(e):"".concat(e)}const g={time:{exactTime:!1,start:"00:00",end:"23:59",mode:"hours",interval:1},period:{once:"",days:1,dows:"",dates:"",weeks:0,months:"",years:0,yearMonth:0,yearDate:0},valid:{from:"",to:""}};function v(e){const t=e.split(".");return 3===t.length?"".concat(t[2],"-").concat(t[1],"-").concat(t[0]):""}class y extends i.Component{constructor(e){let t;if(super(e),this.timerOnce=null,this.timerFrom=null,this.timerTo=null,this.props.schedule&&"string"===typeof this.props.schedule&&"{"===this.props.schedule[0])try{t=JSON.parse(this.props.schedule)}catch(n){}else"object"===typeof this.props.schedule&&(t=this.props.schedule);t&&Object.keys(t).length||(setTimeout((()=>this.onChange(this.state.schedule,!0)),200),t=g),t=Object.assign(Object.assign({},g),t),t.valid.from=t.valid.from||y.now2string(),this.refFrom=i.default.createRef(),this.refTo=i.default.createRef(),this.refOnce=i.default.createRef(),this.state={schedule:t,desc:y.state2text(t)},JSON.stringify(t)!==this.props.schedule&&setTimeout((()=>this.props.onChange&&this.props.onChange(JSON.stringify(t))),100)}onChange(e,t){const n=JSON.stringify(e)!==JSON.stringify(this.state.schedule);if(t||n){n&&this.setState({schedule:e,desc:y.state2text(e)});const t=JSON.parse(JSON.stringify(e));if(t.period.once){const e=t.period.once;delete t.period,t.period={once:e},delete t.valid}else if(t.period.days){const e=t.period.days,n=t.period.dows;delete t.period,t.period={days:e},n&&"[]"!==n&&(t.period.dows=n)}else if(t.period.weeks){const e=t.period.weeks,n=t.period.dows;delete t.period,t.period={weeks:e},n&&"[]"!==n&&(t.period.dows=n)}else if(t.period.months){const e=t.period.months,n=t.period.dates;delete t.period,t.period={months:e},n&&"[]"!==n&&(t.period.dates=n)}else if(t.period.years){const e=t.period.years,n=t.period.yearMonth,r=t.period.yearDate;delete t.period,t.period={years:e,yearDate:r},n&&(t.period.yearMonth=n)}if(t.time.exactTime?(delete t.time.end,delete t.time.mode,delete t.time.interval):delete t.time.exactTime,t.valid){if(t.valid.to||delete t.valid.to,1===t.period.days||1===t.period.weeks||1===t.period.months||1===t.period.years){const e=y.string2date(t.valid.from),n=new Date;n.setHours(0),n.setMinutes(0),n.setSeconds(0),n.setMilliseconds(0),e<=n&&delete t.valid.from}t.valid.from||t.valid.to||delete t.valid}this.props.onChange&&this.props.onChange(JSON.stringify(t),y.state2text(e))}}static state2text(e){if("string"===typeof e)try{e=JSON.parse(e)}catch(r){return""}const t=[],n=y.string2date(e.valid.from);if(e.period.once){const n=y.string2date(e.period.once),r=new Date;if(r.setMilliseconds(0),r.setSeconds(0),r.setMinutes(0),r.setHours(0),nd.default.t(u[e])));if(1===e.length)t.push(d.default.t("sch_desc_onWeekday",e[0]));else if(7===e.length)t.push(d.default.t("sch_desc_everyDay"));else{const n=e.pop();t.push(d.default.t("sch_desc_onWeekdays",e.join(", "),n))}}}else t.push(d.default.t("sch_desc_everyDay"));else t.push(d.default.t("sch_desc_everyNDay",e.period.days.toString()));else if(e.period.weeks){if(1===e.period.weeks?t.push(d.default.t("sch_desc_everyWeek")):t.push(d.default.t("sch_desc_everyNWeeks",e.period.weeks.toString())),!e.period.dows)return d.default.t("sch_desc_never");{const n=JSON.parse(e.period.dows);if(2===n.length&&0===n[0]&&6===n[1])t.push(d.default.t("sch_desc_onWeekends"));else if(5===n.length&&1===n[0]&&2===n[1]&&3===n[2]&&4===n[3]&&5===n[4])t.push(d.default.t("sch_desc_onWorkdays"));else{const e=n.map((e=>d.default.t(u[e])));if(1===e.length)t.push(d.default.t("sch_desc_onWeekday",e[0]));else if(7===e.length)t.push(d.default.t("sch_desc_everyDay"));else{const n=e.pop();t.push(d.default.t("sch_desc_onWeekdays",e.join(", "),n))}}}}else if(e.period.months){if(e.period.dates){const n=JSON.parse(e.period.dates);if(1===n.length)t.push(d.default.t("sch_desc_onDate",n[0]));else if(31===n.length)t.push(d.default.t("sch_desc_onEveryDate"));else{if(!n.length)return d.default.t("sch_desc_never");{const e=n.pop();t.push(d.default.t("sch_desc_onDates",n.join(", "),e))}}}else t.push(d.default.t("sch_desc_onEveryDate"));if(1===e.period.months)t.push(d.default.t("sch_desc_everyMonth"));else if("number"===typeof e.period.months)t.push(d.default.t("sch_desc_everyNMonths",e.period.months.toString()));else{const n=JSON.parse(e.period.months).map((e=>d.default.t(h[e-1])));if(!n.length)return d.default.t("sch_desc_never");if(1===n.length)t.push(d.default.t("sch_desc_onMonth",n[0]));else if(12===n.length)t.push(d.default.t("sch_desc_everyMonth"));else{const e=n.pop();t.push(d.default.t("sch_desc_onMonths",n.join(", "),e))}}}else e.period.years&&(1===e.period.years?t.push(d.default.t("sch_desc_everyYear")):t.push(d.default.t("sch_desc_everyNYears",e.period.years.toString())),t.push(d.default.t("sch_desc_onDate",e.period.yearDate.toString(),e.period.yearMonth?d.default.t(h[e.period.yearMonth-1]):d.default.t("sch_desc_everyMonth"))));if(e.time.exactTime)-1!==f.indexOf(e.time.start)?t.push(d.default.t("sch_desc_atTime",d.default.t("sch_astro_".concat(e.time.start)))):t.push(d.default.t("sch_desc_atTime",e.time.start));else{e.time.mode===p?1===e.time.interval?t.push(d.default.t("sch_desc_everyMinute")):t.push(d.default.t("sch_desc_everyNMinutes",e.time.interval.toString())):1===e.time.interval?t.push(d.default.t("sch_desc_everyHour")):t.push(d.default.t("sch_desc_everyNHours",e.time.interval.toString()));const n=-1!==f.indexOf(e.time.start)?d.default.t("sch_astro_".concat(e.time.start)):e.time.start,r=-1!==f.indexOf(e.time.end)?d.default.t("sch_astro_".concat(e.time.end)):e.time.end;("00:00"!==n||"24:00"!==r&&"23:59"!==r)&&t.push(d.default.t("sch_desc_intervalFromTo",n,r))}return e.period.once||(n.getTime()>Date.now()&&e.valid.to?t.push(d.default.t("sch_desc_validFromTo",e.valid.from,e.valid.to)):n.getTime()>Date.now()?t.push(d.default.t("sch_desc_validFrom",e.valid.from)):e.valid.to&&t.push(d.default.t("sch_desc_validTo",e.valid.to))),t.join(" ")}getTimePeriodElements(){const e=this.state.schedule;let t=!1,n=!1,r=!1,o=!0;return"00:00"===e.time.start&&"24:00"===e.time.end?(t=!0,o=!1):"sunrise"===e.time.start?(n=!0,o=!1):"sunset"===e.time.start&&(r=!0,o=!1),i.default.createElement("div",{key:"timePeriod",className:this.props.classes.rowDiv},i.default.createElement("div",{className:this.props.classes.modeDiv},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!e.time.exactTime,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.time.exactTime=!1,this.onChange(e)}}),label:d.default.t("sch_intervalTime")})),i.default.createElement("div",{className:this.props.classes.settingsDiv},i.default.createElement("div",{className:this.props.classes.settingsDiv},!e.time.exactTime&&i.default.createElement("div",null,i.default.createElement("div",null,i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!o,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.time.start="00:00",e.time.end="23:59",this.onChange(e)}}),label:o?"":d.default.t("sch_fromTo")}),o&&[i.default.createElement(l.TextField,{variant:"standard",className:this.props.classes.inputTime,style:{marginRight:10},key:"exactTimeFrom",type:"time",value:this.state.schedule.time.start,onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.start=e.target.value,this.onChange(t)},InputLabelProps:{shrink:!0},label:d.default.t("sch_from"),margin:"normal"}),i.default.createElement(l.TextField,{variant:"standard",className:this.props.classes.inputTime,key:"exactTimeTo",type:"time",value:this.state.schedule.time.end,onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.end=e.target.value,this.onChange(t)},InputLabelProps:{shrink:!0},label:d.default.t("sch_to"),margin:"normal"})])),!e.time.exactTime&&i.default.createElement("div",null,i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!t,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.time.start="00:00",e.time.end="24:00",this.onChange(e)}}),label:d.default.t("sch_wholeDay")})),!e.time.exactTime&&i.default.createElement("div",null,i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!n,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.time.start="sunrise",e.time.end="sunset",this.onChange(e)}}),label:d.default.t("sch_astroDay")})),!e.time.exactTime&&i.default.createElement("div",null,i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!r,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.time.start="sunset",e.time.end="sunrise",this.onChange(e)}}),label:d.default.t("sch_astroNight")}))),!e.time.exactTime&&this.getPeriodSettingsMinutes()))}getTimeExactElements(){const e=f.includes(this.state.schedule.time.start);return i.default.createElement("div",{key:"timeExact",className:this.props.classes.rowDiv},i.default.createElement("div",{className:this.props.classes.modeDiv},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!this.state.schedule.time.exactTime,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.time.exactTime=!0,this.onChange(e)}}),label:d.default.t("sch_exactTime")})),this.state.schedule.time.exactTime&&i.default.createElement(l.Select,{variant:"standard",value:e?this.state.schedule.time.start:"00:00",onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.start=e.target.value,this.onChange(t)}},i.default.createElement(l.MenuItem,{key:"specific",value:"00:00"},d.default.t("sch_specificTime")),f.map((e=>i.default.createElement(l.MenuItem,{key:e,value:e},d.default.t("sch_astro_".concat(e)))))),this.state.schedule.time.exactTime&&!e&&i.default.createElement("div",{className:this.props.classes.settingsDiv},i.default.createElement(l.TextField,{variant:"standard",className:this.props.classes.inputTime,key:"exactTimeValue",value:this.state.schedule.time.start,type:"time",onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.start=e.target.value,this.onChange(t)},InputLabelProps:{shrink:!0},margin:"normal"})))}getDivider(){return i.default.createElement("hr",{className:this.props.classes.hr})}getPeriodModes(){const e=this.state.schedule,t=!e.period.dows&&!e.period.months&&!e.period.dates&&!e.period.years&&!e.period.days&&!e.period.weeks;return t&&!e.period.once&&(e.period.once=y.now2string(!0)),[i.default.createElement("div",{key:"once",className:"".concat(this.props.classes.rowDiv," ").concat(this.props.classes.rowOnce)},i.default.createElement("div",{className:this.props.classes.modeDiv},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!t,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.once=e.period.once||y.now2string(!0),e.period.dows="",e.period.months="",e.period.dates="",e.period.years=0,e.period.yearDate=0,e.period.yearMonth=0,e.period.weeks=0,e.period.days=0,this.onChange(e)}}),label:d.default.t("sch_periodOnce")})),t&&i.default.createElement("div",{className:this.props.classes.settingsDiv},i.default.createElement(l.TextField,{variant:"standard",className:this.props.classes.inputDate,type:"date",ref:this.refOnce,key:"exactDateAt",defaultValue:v(e.period.once),onChange:e=>{this.timerOnce&&clearTimeout(this.timerOnce),this.timerOnce=null,this.refOnce.current&&(this.refOnce.current.style.background="#ff000030"),this.timerOnce=setTimeout((e=>{this.timerOnce=null,this.refOnce.current&&(this.refOnce.current.style.background="");const t=JSON.parse(JSON.stringify(this.state.schedule)),n=y.string2date(e);"Invalid Date"!==n.toString()&&(t.period.once="".concat(_(n.getDate()),".").concat(_(n.getMonth()+1),".").concat(n.getFullYear()),this.onChange(t))}),1500,e.target.value)},InputLabelProps:{shrink:!0},label:d.default.t("sch_at"),margin:"normal"}))),i.default.createElement("div",{key:"days",className:"".concat(this.props.classes.rowDiv," ").concat(this.props.classes.rowDays)},i.default.createElement("div",{className:this.props.classes.modeDiv},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!e.period.days,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.days=1,e.period.dows="",e.period.months="",e.period.dates="",e.period.years=0,e.period.yearDate=0,e.period.yearMonth=0,e.period.weeks=0,e.period.once="",this.onChange(e)}}),label:d.default.t("sch_periodDaily")})),i.default.createElement("div",{className:this.props.classes.settingsDiv},this.getPeriodSettingsDaily(),e.period.days?this.getPeriodSettingsWeekdays():null)),i.default.createElement("div",{key:"weeks",className:"".concat(this.props.classes.rowDiv," ").concat(this.props.classes.rowDows)},i.default.createElement("div",{className:this.props.classes.modeDiv},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!e.period.weeks,onClick:()=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=e.period.weeks?0:1,t.period.dows=e.period.dows||"[0]",t.period.months="",t.period.dates="",t.period.years=0,t.period.yearDate=0,t.period.yearMonth=0,t.period.days=0,t.period.once="",this.onChange(t)}}),label:d.default.t("sch_periodWeekly")})),i.default.createElement("div",{className:this.props.classes.settingsDiv},i.default.createElement("div",{className:this.props.classes.settingsDiv},this.getPeriodSettingsWeekly()),i.default.createElement("div",{className:"".concat(this.props.classes.settingsDiv," ").concat(this.props.classes.rowDowsDows)},this.state.schedule.period.weeks?this.getPeriodSettingsWeekdays():null))),i.default.createElement("div",{key:"months",className:"".concat(this.props.classes.rowDiv," ").concat(this.props.classes.rowMonths)},i.default.createElement("div",{className:this.props.classes.modeDiv},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!e.period.months,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.months=1,e.period.dows="",e.period.dates="",e.period.years=0,e.period.yearDate=0,e.period.yearMonth=0,e.period.weeks=0,e.period.days=0,e.period.once="",this.onChange(e)}}),label:d.default.t("sch_periodMonthly")})),i.default.createElement("div",{className:this.props.classes.settingsDiv},this.getPeriodSettingsMonthly(),e.period.months?i.default.createElement("div",null,i.default.createElement("div",{className:"".concat(this.props.classes.settingsDiv," ").concat(this.props.classes.rowMonthsDates)},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputRadio,checked:!!e.period.dates,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.months=e.period.months||1;const t=[];for(let n=1;n<=31;n++)t.push(n);e.period.dates=e.period.dates||JSON.stringify(t),e.period.dows="",e.period.years=0,e.period.yearDate=0,e.period.yearMonth=0,e.period.weeks=0,e.period.days=0,e.period.once="",this.onChange(e)}}),label:d.default.t("sch_periodDates")})),i.default.createElement("div",{className:"".concat(this.props.classes.settingsDiv," ").concat(this.props.classes.rowMonthsDates)},this.getPeriodSettingsDates())):null)),i.default.createElement("div",{key:"years",className:"".concat(this.props.classes.rowDiv," ").concat(this.props.classes.rowYears)},i.default.createElement("div",{className:this.props.classes.modeDiv},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!e.period.years,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.years=1,e.period.yearDate=1,e.period.yearMonth=1,e.period.dows="",e.period.months=0,e.period.dates="",e.period.weeks=0,e.period.days=0,e.period.once="",this.onChange(e)}}),label:d.default.t("sch_periodYearly")})),i.default.createElement("div",{className:this.props.classes.settingsDiv},i.default.createElement("div",{className:this.props.classes.settingsDiv},this.getPeriodSettingsYearly()),!!e.period.years&&i.default.createElement("div",{className:this.props.classes.settingsDiv},i.default.createElement("span",null,d.default.t("sch_on")),i.default.createElement(l.Input,{key:"input",value:this.state.schedule.period.yearDate,className:this.props.classes.inputEvery,type:"number",inputProps:{min:1,max:31},onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.yearDate=parseInt(e.target.value,10),t.period.yearDate<1&&(t.period.yearDate=31),t.period.yearDate>31&&(t.period.yearDate=1),this.onChange(t)}}),i.default.createElement(l.Select,{variant:"standard",value:e.period.yearMonth,onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.yearMonth=e.target.value,this.onChange(t)}},i.default.createElement(l.MenuItem,{key:"every",value:0},d.default.t("sch_yearEveryMonth")),h.map(((e,t)=>i.default.createElement(l.MenuItem,{key:e,value:t+1},d.default.t(e))))))))]}getPeriodSettingsMinutes(){return i.default.createElement("div",{style:{display:"inline-block"}},i.default.createElement("label",null,d.default.t("sch_every")),i.default.createElement(l.Input,{value:this.state.schedule.time.interval,style:{verticalAlign:"bottom"},className:this.props.classes.inputEvery,type:"number",inputProps:{min:1},onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.interval=parseInt(e.target.value,10),this.onChange(t)}}),i.default.createElement(l.Select,{variant:"standard",value:this.state.schedule.time.mode,onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.time.mode=e.target.value,this.onChange(t)}},i.default.createElement(l.MenuItem,{value:p},d.default.t("sch_periodMinutes")),i.default.createElement(l.MenuItem,{value:m},d.default.t("sch_periodHours"))))}getPeriodSettingsWeekdays(){const e=this.state.schedule,t=e.period.dows&&"[1, 2, 3, 4, 5]"!==e.period.dows&&"[0, 6]"!==e.period.dows;return[i.default.createElement("div",{key:"workdays"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:"[1, 2, 3, 4, 5]"===e.period.dows,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.dows="[1, 2, 3, 4, 5]",e.period.days&&(e.period.days=1),this.onChange(e)}}),label:d.default.t("sch_periodWorkdays")})),i.default.createElement("div",{key:"weekend"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:"[0, 6]"===e.period.dows,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.dows="[0, 6]",e.period.days&&(e.period.days=1),this.onChange(e)}}),label:d.default.t("sch_periodWeekend")})),i.default.createElement("div",{key:"specific",style:{verticalAlign:"top"}},i.default.createElement(l.FormControlLabel,{style:{verticalAlign:"top"},control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:!!t,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.dows="[0, 1, 2, 3, 4, 5, 6]",e.period.days&&(e.period.days=1),this.onChange(e)}}),label:d.default.t("sch_periodWeekdays")}),t&&(1===e.period.days||e.period.weeks)&&i.default.createElement(l.FormGroup,{row:!0,className:this.props.classes.inputGroup,style:{width:150}},[1,2,3,4,5,6,0].map((t=>i.default.createElement(l.FormControlLabel,{key:"specific_".concat(t),className:this.props.classes.inputGroupElement,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputSmallCheck,checked:e.period.dows.includes(t.toString()),onChange:e=>{const n=JSON.parse(JSON.stringify(this.state.schedule));let r;try{r=JSON.parse(n.period.dows)}catch(o){r=[]}e.target.checked&&!r.includes(t)?r.push(t):!e.target.checked&&r.includes(t)&&r.splice(r.indexOf(t),1),r.sort(((e,t)=>e-t)),n.period.dows=JSON.stringify(r),n.period.days&&(n.period.days=1),this.onChange(n)}}),label:d.default.t(u[t])})))))]}getPeriodSettingsDaily(){if(!this.state.schedule.period.days)return null;const e=this.state.schedule;return[i.default.createElement("div",{key:"every_day"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:1===e.period.days&&!e.period.dows,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.days=1,e.period.dows="",this.onChange(e)}}),label:d.default.t("sch_periodEveryDay")})),i.default.createElement("div",{key:"everyN_day"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:e.period.days>1,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.days=2,e.period.dows="",this.onChange(e)}}),label:d.default.t("sch_periodEvery")}),e.period.days>1&&[i.default.createElement(l.Input,{key:"input",value:this.state.schedule.period.days,className:this.props.classes.inputEvery,type:"number",inputProps:{min:2},onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.days=parseInt(e.target.value,10),t.period.dows="",this.onChange(t)}}),i.default.createElement("span",{key:"span",style:{paddingRight:10}},d.default.t("sch_periodDay"))])]}getPeriodSettingsWeekly(){if(!this.state.schedule.period.weeks)return null;const e=this.state.schedule;return[i.default.createElement("div",{key:"radios",style:{display:"inline-block",verticalAlign:"top"}},i.default.createElement("div",null,i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:1===e.period.weeks,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.weeks=1,this.onChange(e)}}),label:d.default.t("sch_periodEveryWeek")})),i.default.createElement("div",null,i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:e.period.weeks>1,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.weeks=2,this.onChange(e)}}),label:d.default.t("sch_periodEvery")}),e.period.weeks>1&&[i.default.createElement(l.Input,{key:"input",value:this.state.schedule.period.weeks,className:this.props.classes.inputEvery,type:"number",inputProps:{min:2},onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.weeks=parseInt(e.target.value,10),this.onChange(t)}}),i.default.createElement("span",{key:"text"},d.default.t("sch_periodWeek"))]))]}getPeriodSettingsDates(){if(!this.state.schedule.period.dates)return null;const e=this.state.schedule,t=[];for(let r=1;r<=31;r++)t.push(r);const n=JSON.parse(e.period.dates);return i.default.createElement(l.FormGroup,{row:!0,className:this.props.classes.inputGroup,style:{maxWidth:620}},i.default.createElement(l.FormControlLabel,{className:this.props.classes.inputDateDay,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputDateDayCheck,checked:31===n.length,onChange:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule)),t=[];for(let n=1;n<=31;n++)t.push(n);e.period.dates=JSON.stringify(t),this.onChange(e)}}),label:d.default.t("sch_all")}),i.default.createElement(l.FormControlLabel,{className:this.props.classes.inputDateDay,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputDateDayCheck,checked:!n.length,onChange:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.dates="[]",this.onChange(e)}}),label:d.default.t("sch_no_one")}),31!==n.length&&!!n.length&&i.default.createElement(l.FormControlLabel,{className:this.props.classes.inputDateDay,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputDateDayCheck,checked:!1,onChange:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule)),t=[],n=JSON.parse(e.period.dates);for(let r=1;r<=31;r++)n.includes(r)||t.push(r);t.sort(((e,t)=>e-t)),e.period.dates=JSON.stringify(t),this.onChange(e)}}),label:d.default.t("sch_invert")}),i.default.createElement("div",null),t.map((t=>i.default.createElement(l.FormControlLabel,{key:"date_".concat(t),className:this.props.classes.inputDateDay,style:t?{}:{opacity:0,cursor:"default",userSelect:"none",pointerEvents:"none"},control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputDateDayCheck,checked:JSON.parse(e.period.dates).includes(t),onChange:e=>{const n=JSON.parse(JSON.stringify(this.state.schedule));let r;try{r=JSON.parse(n.period.dates)}catch(o){r=[]}e.target.checked&&!r.includes(t)?r.push(t):!e.target.checked&&r.includes(t)&&r.splice(r.indexOf(t),1),r.sort(((e,t)=>e-t)),n.period.dates=JSON.stringify(r),this.onChange(n)}}),label:t<10?[i.default.createElement("span",{key:"0",style:{opacity:0}},"0"),i.default.createElement("span",{key:"num"},t)]:t}))))}getPeriodSettingsMonthly(){if(!this.state.schedule.period.months)return null;const e=this.state.schedule,t="string"===typeof e.period.months?JSON.parse(e.period.months):[];return[i.default.createElement("div",{key:"every"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:"number"===typeof e.period.months&&1===e.period.months,onClick:()=>{JSON.parse(JSON.stringify(this.state.schedule)).period.months=1,this.onChange(e)}}),label:d.default.t("sch_periodEveryMonth")})),i.default.createElement("div",{key:"everyN"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:"number"===typeof e.period.months&&e.period.months>1,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.months=2,this.onChange(e)}}),label:d.default.t("sch_periodEvery")}),"number"===typeof e.period.months&&e.period.months>1&&[i.default.createElement(l.Input,{key:"input",value:e.period.months,className:this.props.classes.inputEvery,type:"number",inputProps:{min:2},onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.months=parseInt(e.target.value,10),t.period.months<1&&(t.period.months=1),this.onChange(t)}}),i.default.createElement("span",{key:"text"},d.default.t("sch_periodMonth"))]),i.default.createElement("div",{key:"specific",style:{verticalAlign:"top"}},i.default.createElement(l.FormControlLabel,{style:{verticalAlign:"top"},control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:"string"===typeof e.period.months,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.months="[1,2,3,4,5,6,7,8,9,10,11,12]",this.onChange(e)}}),label:d.default.t("sch_periodSpecificMonths")}),"string"===typeof e.period.months&&i.default.createElement(l.FormGroup,{row:!0,className:this.props.classes.inputGroup},i.default.createElement(l.FormControlLabel,{className:this.props.classes.inputDateDay,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputDateDayCheck,checked:12===t.length,onChange:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule)),t=[];for(let n=1;n<=12;n++)t.push(n);e.period.months=JSON.stringify(t),this.onChange(e)}}),label:d.default.t("sch_all")}),i.default.createElement(l.FormControlLabel,{className:this.props.classes.inputDateDay,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputDateDayCheck,checked:!t.length,onChange:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.months="[]",this.onChange(e)}}),label:d.default.t("sch_no_one")}),12!==t.length&&!!t.length&&i.default.createElement(l.FormControlLabel,{className:this.props.classes.inputDateDay,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputDateDayCheck,checked:!1,onChange:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule)),t=[],n=JSON.parse(e.period.months);for(let r=1;r<=12;r++)n.includes(r)||t.push(r);t.sort(((e,t)=>e-t)),e.period.months=JSON.stringify(t),this.onChange(e)}}),label:d.default.t("sch_invert")}),i.default.createElement("div",null),h.map(((t,n)=>i.default.createElement(l.FormControlLabel,{className:this.props.classes.inputGroupElement,control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputSmallCheck,checked:"string"===typeof e.period.months?JSON.parse(e.period.months).includes(n+1):e.period.months===n,onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));let r;try{r=JSON.parse(t.period.months)}catch(o){r=[]}e.target.checked&&!r.includes(n+1)?r.push(n+1):!e.target.checked&&r.includes(n+1)&&r.splice(r.indexOf(n+1),1),r.sort(((e,t)=>e-t)),t.period.months=JSON.stringify(r),this.onChange(t)}}),label:d.default.t(t)})))))]}getPeriodSettingsYearly(){if(!this.state.schedule.period.years)return null;const e=this.state.schedule;return[i.default.createElement("div",{key:"year"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:1===e.period.years,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.years=1,this.onChange(e)}}),label:d.default.t("sch_periodEveryYear")})),i.default.createElement("div",{key:"every"},i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Radio,{className:this.props.classes.inputRadio,checked:e.period.years>1,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.period.years=2,this.onChange(e)}}),label:d.default.t("sch_periodEvery")}),e.period.years>1&&[i.default.createElement(l.Input,{key:"input",value:this.state.schedule.period.years,className:this.props.classes.inputEvery,type:"number",inputProps:{min:2},onChange:e=>{const t=JSON.parse(JSON.stringify(this.state.schedule));t.period.years=parseInt(e.target.value,10),t.period.years<1&&(t.period.years=1),this.onChange(t)}}),i.default.createElement("span",{key:"text"},d.default.t("sch_periodYear"))])]}static now2string(e){const t=new Date;return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),e&&(t.setDate(t.getDate()+2),t.setMilliseconds(t.getMilliseconds()-1)),"".concat(_(t.getDate()),".").concat(_(t.getMonth()+1),".").concat(_(t.getFullYear()))}static string2date(e){let t=e.split(".");return 1===t.length?(t=e.split("-"),new Date(parseInt(t[0],10),parseInt(t[1],10)-1,parseInt(t[2],10))):new Date(parseInt(t[2],10),parseInt(t[1],10)-1,parseInt(t[0],10))}getValidSettings(){const e=this.state.schedule;return i.default.createElement("div",{className:this.props.classes.rowDiv},i.default.createElement("div",{className:this.props.classes.modeDiv,style:{verticalAlign:"middle"}},i.default.createElement("span",{style:{fontWeight:"bold",paddingRight:10}},d.default.t("sch_valid")),i.default.createElement("span",null,d.default.t("sch_validFrom"))),i.default.createElement("div",{className:this.props.classes.settingsDiv},i.default.createElement(l.TextField,{variant:"standard",className:this.props.classes.inputDate,style:{marginRight:10},key:"exactTimeFrom",inputRef:this.refFrom,defaultValue:v(e.valid.from),type:"date",onChange:e=>{this.timerFrom&&clearTimeout(this.timerFrom),this.refFrom.current&&(this.refFrom.current.style.background="#ff000030"),this.timerFrom=setTimeout((e=>{this.timerFrom=null,this.refFrom.current&&(this.refFrom.current.style.background="");const t=JSON.parse(JSON.stringify(this.state.schedule)),n=y.string2date(e);"Invalid Date"!==n.toString()&&(t.valid.from="".concat(_(n.getDate()),".").concat(_(n.getMonth()+1),".").concat(n.getFullYear()),this.onChange(t))}),1500,e.target.value)},InputLabelProps:{shrink:!0},margin:"normal"}),i.default.createElement(l.FormControlLabel,{control:i.default.createElement(l.Checkbox,{className:this.props.classes.inputRadio,checked:!!e.valid.to,onClick:()=>{const e=JSON.parse(JSON.stringify(this.state.schedule));e.valid.to=e.valid.to?"":y.now2string(!0),this.onChange(e)}}),label:d.default.t("sch_validTo")}),!!e.valid.to&&i.default.createElement(l.TextField,{variant:"standard",inputRef:this.refTo,className:this.props.classes.inputDate,style:{marginRight:10},key:"exactTimeFrom",type:"date",defaultValue:v(e.valid.to),onChange:e=>{this.timerTo&&clearTimeout(this.timerTo),this.refTo.current&&(this.refTo.current.style.background="#ff000030"),this.timerTo=setTimeout((e=>{this.timerTo=null,this.refTo.current&&(this.refTo.current.style.background="");const t=JSON.parse(JSON.stringify(this.state.schedule)),n=y.string2date(e);"Invalid Date"!==n.toString()&&(t.valid.to="".concat(_(n.getDate()),".").concat(_(n.getMonth()+1),".").concat(n.getFullYear()),this.onChange(t))}),1500,e.target.value)},InputLabelProps:{shrink:!0},margin:"normal"})))}render(){return i.default.createElement("div",{style:{height:"calc(100% - 48px)",width:"100%",overflow:"hidden"}},i.default.createElement("div",null,this.state.desc),i.default.createElement("div",{className:this.props.classes.scrollWindow},i.default.createElement("h5",null,d.default.t("sch_time")),this.getTimePeriodElements(),this.getTimeExactElements(),this.getDivider(),i.default.createElement("h5",null,d.default.t("sch_period")),this.getPeriodModes(),!this.state.schedule.period.once&&this.getDivider(),!this.state.schedule.period.once&&this.getValidSettings()))}}t.default=(0,c.withStyles)((e=>({hr:{border:0,borderTop:"1px solid gray"},scrollWindow:{width:"100%",overflow:"auto",height:"calc(100% - 22px)"},rowDiv:{width:"100%"},modeDiv:{width:200,display:"inline-block",verticalAlign:"top"},settingsDiv:{display:"inline-block",verticalAlign:"top"},inputTime:{width:90,marginTop:0,marginLeft:5},inputDate:{width:140,marginTop:0,marginLeft:5},inputEvery:{width:40,marginLeft:5,marginRight:5},inputRadio:{padding:"4px 12px",verticalAlign:"top"},inputGroup:{maxWidth:400,display:"inline-block"},inputGroupElement:{width:120},inputDateDay:{width:60},inputDateDayCheck:{padding:4},inputSmallCheck:{padding:0},rowOnce:{},rowDays:{background:"dark"!==e.palette.mode?"#ddeaff":"#4b5057"},rowDows:{background:"dark"!==e.palette.mode?"#DDFFDD":"#52646c"},rowDates:{background:"dark"!==e.palette.mode?"#DDDDFF":"#747a86"},rowWeeks:{background:"dark"!==e.palette.mode?"#DDDDFF":"#717680"},rowMonths:{background:"dark"!==e.palette.mode?"#DDFFFF":"#1f5557"},rowMonthsDates:{background:"dark"!==e.palette.mode?"#EEFFFF":"#3c5737",maxWidth:600},rowYears:{background:"dark"!==e.palette.mode?"#fbffdd":"#574b33"},rowDaysDows:{background:"dark"!==e.palette.mode?"#EEEAFF":"#573544",paddingLeft:10,paddingBottom:10},rowDowsDows:{background:"dark"!==e.palette.mode?"#EEFFEE":"#3d4c54",paddingLeft:10,paddingBottom:10}})))(y)},21506:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){const r={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12,SUN:1,MON:2,TUE:3,WED:4,THU:5,FRI:6,SAT:7},o={"* * * * * *":"0/1 * * * * *","@YEARLY":"0 0 1 1 *","@ANNUALLY":"0 0 1 1 *","@MONTHLY":"0 0 1 * *","@WEEKLY":"0 0 * * 0","@DAILY":"0 0 * * *","@HOURLY":"0 * * * *"},s={s:[0,0,59],m:[1,0,59],h:[2,0,23],D:[3,1,31],M:[4,1,12],Y:[6,1970,2099],d:[5,1,7,1]};function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:9999;return Number.isNaN(e)?r[e]||null:Math.min(+e+t,n)}function i(e,t,n,r){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=n;for(e[t]||(e[t]=[]);s<=r;)e[t].indexOf(s)<0&&e[t].push(s),s+=o||1;e[t].sort(((e,t)=>e-t))}function c(e,t,n,r){(t.d&&!t.dc||t.dc&&!t.dc.includes(r))&&(e.push(function(e){const t={};let n;for(n in e)"dc"!==n&&"d"!==n&&(t[n]=e[n].slice(0));return t}(t)),t=e[e.length-1]),i(t,"d",n,n),i(t,"dc",r,r)}function l(e,t,n,o,s,l){let d,u;const h=t.schedules,p=h[h.length-1];"L"===e&&(e=(o-1).toString(10)),null!==(d=a(e,l,s))?i(p,n,d,d):null!==(d=a(e.replace("W",""),l,s))?function(e,t,n){const o={},s={};1===n?(i(t,"D",1,3),i(t,"d",r.MON,r.FRI),i(o,"D",2,2),i(o,"d",r.TUE,r.FRI),i(s,"D",3,3),i(s,"d",r.TUE,r.FRI)):(i(t,"D",n-1,n+1),i(t,"d",r.MON,r.FRI),i(o,"D",n-1,n-1),i(o,"d",r.MON,r.THU),i(s,"D",n+1,n+1),i(s,"d",r.TUE,r.FRI)),e.exceptions.push(o),e.exceptions.push(s)}(t,p,d):null!==(d=a(e.replace("L",""),l,s))?c(h,p,d,o-1):2===(u=e.split("#")).length?(d=a(u[0],l,s)||l,c(h,p,d,a(u[1])||0)):function(e,t,n,r,o,s){const c=e.split("/"),l=+c[1],d=c[0];if("*"!==d&&"0"!==d){const e=d.split("-");r=a(e[0],s,o)||s,o=a(e[1],s,o)||o}i(t,n,r,o,l)}(e,p,n,o,s,l)}function d(e){return e.includes("#")||e.indexOf("L")>0}function u(e,t){return d(e)&&!d(t)||e>t?1:e0&&(o+=", "),o+=f(n,t);return"".concat(o," ").concat(n.and," ").concat(f(r,t))}function g(e){return e<10?"0".concat(e):e.toString()}return function(e,t){let r="".concat(n.Every," ");if(e.h&&e.m&&e.h.length<=2&&e.m.length<=2&&t&&e.s&&e.s.length<=2){const t=[];for(let n=0;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={en:{ORDINALS:{th:"th",st:"st",nd:"nd",rd:"rd"},MONTH:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],DOW:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Every:"Every",and:"and","every day":"every day","minute past the":"minute past the",hour:"hour",minute:"minute","minute of":"minute of",second:"second","second in minute":"second in minute","second of every":"second of every","minute every hour":"minute every hour","on the":"on the","of every month":"of every month","and every":"and every",At:"At",on:"on",in:"in"},de:{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],DOW:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],Every:"Jede(r)",and:"und","every day":"jeden Tag","minute past the":"Minuten nach",hour:"Stunde",minute:"Minute","minute of":"Minuten von",second:"Sekunde","second in minute":"Sekunde in der Minute","second of every":"Sekunde in","minute every hour":"Minute jede Stunde","on the":"am","of every month":"im jeden Monat","and every":"und am jeden",At:"Um",on:"am",in:"im"},ru:{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["\u042f\u043d\u0432\u0430\u0440\u0435","\u0424\u0435\u0432\u0440\u0430\u043b\u0435","\u041c\u0430\u0440\u0442\u0435","\u0410\u043f\u0440\u0435\u043b\u0435","\u041c\u0430\u0439\u0435","\u0418\u044e\u043d\u0435","\u0418\u044e\u043b\u0435","\u0410\u0432\u0433\u0443\u0441\u0442\u0435","\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u0435","\u041e\u043a\u0442\u044f\u0431\u0440\u0435","\u041d\u043e\u044f\u0431\u0440\u0435","\u0414\u0435\u043a\u0430\u0431\u0440\u0435"],DOW:["\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u0438\u0435","\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0432\u0442\u043e\u0440\u043d\u0438\u043a","\u0441\u0440\u0435\u0434\u0443","\u0447\u0435\u0442\u0432\u0435\u0440\u0433","\u043f\u044f\u0442\u043d\u0438\u0446\u0443","\u0441\u0443\u0431\u0431\u043e\u0442\u0443"],Every:"\u041a\u0430\u0436\u0434\u0443\u044e(\u044b\u0439)",and:"\u0438","every day":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c","minute past the":"\u043c\u0438\u043d\u0443\u0442\u0443 \u0432",hour:"\u0447\u0430\u0441\u0430(\u043e\u0432)",minute:"\u043c\u0438\u043d\u0443\u0442\u0443","minute of":"\u043c\u0438\u043d\u0443\u0442(\u0443) \u0432",second:"\u0441\u0435\u043a\u0443\u043d\u0434\u0443","second in minute":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0432 \u043c\u0438\u043d\u0443\u0442\u0435","second of every":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043a\u0430\u0436\u0434\u043e\u0439(\u0433\u043e)","minute every hour":"\u043c\u0438\u043d\u0443\u0442\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441","on the":"","of every month":"\u0447\u0438\u0441\u043b\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430","and every":"\u0438 \u043a\u0430\u0436\u0434\u044b\u0439",At:"\u0412",on:"\u0432",in:"\u0432"},fr:{ORDINALS:{th:"th",st:"st",nd:"nd",rd:"rd"},MONTH:["F\xe9v","Mar","Avr","Mai","Jun","Juil","Aug","Sep","Oct","Nov","D\xe9c"],DOW:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],Every:"Chaque",and:"et","every day":"tous les jours","minute past the":"minute apr\xe8s le",hour:"heure",minute:"minute","minute of":"minute de",second:"seconde","second in minute":"seconde en minute","second of every":"deuxi\xe8me de tous","minute every hour":"minute toutes les heures","on the":"sur le","of every month":"de chaque mois","and every":"et tous",At:"\xc0",on:"sur",in:"dans"},it:{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["Jan","Feb","Mar","Apr","Pot","Giu","Lug","Aug","Sep","Oct","Nov","Dic"],DOW:["Dom","Mon","Mar","Mer","Gio","Ve","Sat"],Every:"Ogni",and:"e","every day":"ogni giorno","minute past the":"minuto dopo",hour:"ora",minute:"Minuto","minute of":"minuto di",second:"secondo","second in minute":"secondo in minuto","second of every":"secondo di ogni","minute every hour":"minuto ogni ora","on the":"sul","of every month":"di ogni mese","and every":"e ogni",At:"A",on:"sopra",in:"in"},pt:{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["Jan","Feb","Mar","Abr","Pod","Jun","Jul","Ago","Sep","Oct","Nov","Dec"],DOW:["Dom","Seg","Ter","Qua","Qui","Sex","Sen"],Every:"Cada",and:"e","every day":"todo dia","minute past the":"minuto ap\xf3s o",hour:"hora",minute:"minuto","minute of":"minuto de",second:"segundo","second in minute":"segundo em minuto","second of every":"segundo de cada","minute every hour":"minuto a cada hora","on the":"no","of every month":"de todos os meses","and every":"e todos",At:"At",on:"em",in:"dentro"},pl:{ORDINALS:{th:"th",st:"st",nd:"nd",rd:"rd"},MONTH:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Pa\u017a","Lis","Gru"],DOW:["Nie","Pon","Wto","\u015aro","Czw","Pi\u0105","Sob"],Every:"Ka\u017cde(go)",and:"i","every day":"codziennie","minute past the":"minut po",hour:"godzina",minute:"minut(a)","minute of":"minut po",second:"sekunda","second in minute":"sekund na minut\u0119","second of every":"sekund co","minute every hour":"minut co godzin\u0119","on the":"w","of every month":"ka\u017cdego miesi\u0105ca","and every":"i ka\u017cdego",At:"O",on:"w",in:"w"},es:{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["Ene","Feb","Mar","Abr","Mayo","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],DOW:["Sol","Lun","Mar","Mie","Jue","Vie","Sab"],Every:"Cada",and:"y","every day":"cada d\xeda","minute past the":"minuto pasado el",hour:"hora",minute:"minuto","minute of":"minuto de",second:"segundo","second in minute":"segundo en minuto","second of every":"segundo de cada","minute every hour":"minuto cada hora","on the":"sobre el","of every month":"de cada mes","and every":"y cada",At:"A",on:"en",in:"en"},nl:{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],DOW:["Zon","Mon","Di","Wo","Don","Vrij","Za"],Every:"Elke",and:"en","every day":"elke dag","minute past the":"minuut voorbij de",hour:"uur",minute:"minuut","minute of":"minuut van",second:"tweede","second in minute":"tweede in minuut","second of every":"tweede van alles","minute every hour":"minuut elk uur","on the":"op de","of every month":"van elke maand","and every":"en elke",At:"Op",on:"op",in:"in"},uk:{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["\u0421\u0456\u0447","\u041b\u044e\u0442","\u0411\u0435\u0440","\u041a\u0432\u0456","\u0422\u0440\u0430","\u0427\u0435\u0440","\u041b\u0438\u043f","\u0421\u0435\u0440","\u0412\u0435\u0440","\u0416\u043e\u0432","\u041b\u0438\u0441","\u0413\u0440\u0443"],DOW:["\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0456\u043d\u043d\u044f","\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a","\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a","\u0421\u0435\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440","\u041f'\u044f\u0442\u043d\u0438\u0446\u044f","\u0421\u0443\u0431\u043e\u0442\u0430"],Every:"\u041a\u043e\u0436\u043d\u0443(\u0438\u0439)",and:"\u0456","every day":"\u043a\u043e\u0436\u0435\u043d \u0434\u0435\u043d\u044c","minute past the":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443 \u043f\u0456\u0441\u043b\u044f",hour:"\u0433\u043e\u0434\u0438\u043d\u0438",minute:"\u0445\u0432\u0438\u043b\u0438\u043d\u0443","minute of":"\u0445\u0432\u0438\u043b\u0438\u043d\u0438",second:"\u0441\u0435\u043a\u0443\u043d\u0434\u0443","second in minute":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u0432 \u0445\u0432\u0438\u043b\u0438\u043d\u0456","second of every":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043a\u043e\u0436\u043d\u043e\u0457(\u0433\u043e)","minute every hour":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443 \u043a\u043e\u0436\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443","on the":"","of every month":"\u0447\u0438\u0441\u043b\u0430 \u043a\u043e\u0436\u043d\u043e\u0433\u043e \u043c\u0456\u0441\u044f\u0446\u044f","and every":"\u0456 \u043a\u043e\u0436\u043d\u043e\u0433\u043e",At:"\u0412",on:"\u0432",in:"\u0432"},"zh-cn":{ORDINALS:{th:"",st:"",nd:"",rd:""},MONTH:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],DOW:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],Every:"\u6bcf",and:"\u548c","every day":"\u6bcf\u5929","minute past the":"\u5206\u949f\u5728\u6bcf\u5929\u7b2c",hour:"\u5c0f\u65f6",minute:"\u5206\u949f","minute of":"\u5206\u949f\u7684",second:"\u79d2","second in minute":"\u79d2\u5728\u5206\u949f","second of every":"\u79d2\u5728\u6bcf","minute every hour":"\u5206\u949f\u5728\u6bcf\u5c0f\u65f6\u4e2d","on the":"\u5728","of every month":"\u65e5\u5728\u6bcf\u6708","and every":"\u4e14\u6bcf",At:"\u5728",on:"\u5728",in:"\u5728"}}},66556:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=s(n(53482)),c=n(32496),l=n(65298),d=a(n(653));class u extends i.Component{render(){const{classes:e}=this.props;return i.default.createElement(l.Paper,{elevation:Number.isNaN(this.props.elevation)?1:this.props.elevation,className:d.default.clsx(e.root,{[e.overflowHidden]:"visible"!==this.props.overflow},this.props.className),onKeyDown:this.props.onKeyDown,tabIndex:this.props.tabIndex},i.default.createElement(l.Grid,{container:!0,direction:"column",wrap:"nowrap",className:e.container},this.props.children))}}const h=(0,c.withStyles)({root:{width:"100%",height:"100%"},overflowHidden:{overflow:"hidden"},container:{height:"100%"}})(u);t.default=h},17030:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482)),s=n(32496),a=n(65298),i=r(n(653));class c extends o.default.Component{render(){const{classes:e}=this.props;return o.default.createElement(a.Grid,{item:!0,className:i.default.clsx(e.root,"auto"===this.props.overflow?e.overflowAuto:"")},this.props.children)}}t.default=(0,s.withStyles)({root:{height:"100%",overflow:"hidden"},overflowAuto:{overflow:"auto"}})(c)},80918:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482)),s=n(65298);class a extends o.default.Component{render(){return o.default.createElement(s.Grid,{item:!0,container:!0,alignItems:"center"},this.props.children)}}t.default=a},653:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482)),s=r(n(35494)),a=r(n(12539)),i="material",c=["Su","Mo","Tu","We","Th","Fr","Sa"],l=["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],d={0:"0x00 - good",1:"0x01 - general problem",2:"0x02 - no connection problem",16:"0x10 - substitute value from controller",32:"0x20 - substitute initial value",64:"0x40 - substitute value from device or instance",128:"0x80 - substitute value from sensor",17:"0x11 - general problem by instance",65:"0x41 - general problem by device",129:"0x81 - general problem by sensor",18:"0x12 - instance not connected",66:"0x42 - device not connected",130:"0x82 - sensor not connected",68:"0x44 - device reports error",132:"0x84 - sensor reports error"},u={JVBERi0:"pdf",R0lGODdh:"gif",R0lGODlh:"gif",iVBORw0KGgo:"png","/9j/":"jpg",PHN2Zw:"svg",Qk1:"bmp",AAABAA:"ico"};class h{static CapitalWords(e){return(e||"").split(/[\s_]/).filter((e=>e)).map((e=>e?e[0].toUpperCase()+e.substring(1).toLowerCase():"")).join(" ")}static formatSeconds(e){const t=Math.floor(e/86400);e%=86400;const n=Math.floor(e/3600);e%=3600;const r=Math.floor(e/60);e%=60,e=Math.floor(e);let o="";return t&&(o+="".concat(t," ").concat(a.default.t("ra_daysShortText")," ")),o+="".concat(n<10?"0".concat(n):n,":").concat(r<10?"0".concat(r):r,":").concat(e<10?"0".concat(e):e),o}static getObjectName(e,t,n,r,o){const s=e[t];let a;const i=o?"desc":"name";if("string"!==typeof n||r||(r={language:n},n=null),(r=r||{}).language||(r.language=e["system.config"]&&e["system.config"].common&&e["system.config"].common.language||window.sysLang||"en"),null===n||void 0===n?void 0:n.name)a=n.name,"object"===typeof a&&(a=r.language&&a[r.language]||a.en);else if(s&&s.common&&s.common[i])a=s.common[i],"desc"!==i&&!a&&s.common.desc&&(a=s.common.desc),"object"===typeof a&&(a=r.language&&a[r.language]||a.en||a.de||a.ru||""),a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase());else{const e=t.lastIndexOf(".");a=t.substring(e+1).replace(/[_.]/g," "),a=h.CapitalWords(a)}return a.trim()}static getObjectNameFromObj(e,t,n,r,o){const s=e;let a=e&&e._id||"";const i=r?"desc":"name";if("string"!==typeof t||n||(n={language:t},t=null),n=n||{},null===t||void 0===t?void 0:t.name){const e=t.name;a=e&&"object"===typeof e?n.language&&e[n.language]||e.en:e}else if((null===s||void 0===s?void 0:s.common)&&s.common[i]){let e=s.common[i];"desc"!==i&&!e&&s.common.desc&&(e=s.common.desc),a="object"===typeof e?n.language&&e[n.language]||e.en:e,a=(a||"").toString().replace(/[_.]/g," "),a===a.toUpperCase()&&(a=a[0]+a.substring(1).toLowerCase())}return o?a:a.trim()}static getSettingsOrder(e,t,n){let r,o;if(r=e&&Object.prototype.hasOwnProperty.call(e,"common")?e.common:e,null===r||void 0===r?void 0:r.custom){o=r.custom[i];const e=n.user||"admin";if(o&&o[e])if(t){if(o[e].subOrder&&o[e].subOrder[t])return JSON.parse(JSON.stringify(o[e].subOrder[t]))}else if(o[e].order)return JSON.parse(JSON.stringify(o[e].order))}return null}static getSettingsCustomURLs(e,t,n){let r,o;if(r=e&&Object.prototype.hasOwnProperty.call(e,"common")?e.common:e,null===r||void 0===r?void 0:r.custom){o=r.custom[i];const e=n.user||"admin";if(o&&o[e])if(t){if(o[e].subURLs&&o[e].subURLs[t])return JSON.parse(JSON.stringify(o[e].subURLs[t]))}else if(o[e].URLs)return JSON.parse(JSON.stringify(o[e].URLs))}return null}static reorder(e,t,n){const r=Array.from(e),[o]=r.splice(t,1);return r.splice(n,0,o),r}static getSettings(e,t,n){let r;const o=(null===e||void 0===e?void 0:e._id)||(null===t||void 0===t?void 0:t.id);let s;if(s=e&&Object.prototype.hasOwnProperty.call(e,"common")?e.common:e,(null===s||void 0===s?void 0:s.custom)?(r=s.custom,r=r[i]&&r[i][t.user||"admin"]?JSON.parse(JSON.stringify(r[i][t.user||"admin"])):{enabled:!0}):r={enabled:void 0===n||n,useCustom:!1},Object.prototype.hasOwnProperty.call(r,"enabled")||(r.enabled=void 0===n||n),t&&(!r.name&&t.name&&(r.name=t.name),!r.icon&&t.icon&&(r.icon=t.icon),!r.color&&t.color&&(r.color=t.color)),s&&(r.color=r.color||s.color,r.icon=r.icon||s.icon,r.name=r.name||s.name),"object"===typeof r.name&&(r.name=t.language&&r.name[t.language]||r.name.en,r.name=(r.name||"").toString().replace(/_/g," "),r.name===r.name.toUpperCase()&&(r.name=r.name[0]+r.name.substring(1).toLowerCase())),!r.name&&o){const e=o.lastIndexOf(".");r.name=o.substring(e+1).replace(/[_.]/g," "),r.name=(r.name||"").toString().replace(/_/g," "),r.name=h.CapitalWords(r.name)}return r}static setSettings(e,t,n){if(e){e.common=e.common||{},e.common.custom=e.common.custom||{},e.common.custom[i]=e.common.custom[i]||{},e.common.custom[i][n.user||"admin"]=t;const r=e.common.custom[i][n.user||"admin"];return r.useCommon&&(void 0!==r.color&&(e.common.color=r.color,delete r.color),void 0!==r.icon&&(e.common.icon=r.icon,delete r.icon),void 0!==r.name&&("object"!==typeof e.common.name&&n.language?e.common.name={[n.language]:r.name}:"object"===typeof e.common.name&&n.language&&(e.common.name[n.language]=r.name),delete r.name)),!0}return!1}static getIcon(e,t){return e&&e.icon?e.icon.length<=2?o.default.createElement("span",{style:t||{}},e.icon):e.icon.startsWith("data:image")?o.default.createElement("img",{alt:e.name,src:e.icon,style:t||{}}):o.default.createElement("img",{alt:e.name,src:(e.prefix||"")+e.icon,style:t}):null}static getObjectIcon(e,t){if("object"===typeof e&&(e=null===(t=e)||void 0===t?void 0:t._id),t&&t.common&&t.common.icon){let n=t.common.icon;if("string"===typeof n&&n.length<=2)return n;if(n.startsWith("data:image"))return n;const r=e.split(".");return n="system"===r[0]?"adapter/".concat(r[2]).concat(n.startsWith("/")?"":"/").concat(n):"adapter/".concat(r[0]).concat(n.startsWith("/")?"":"/").concat(n),window.location.pathname.match(/adapter\/[^/]+\/[^/]+\.html/)||window.location.pathname.match(/material\/[.\d]+/)?n="../../".concat(n):window.location.pathname.match(/material\//)&&(n="../".concat(n)),n}return null}static splitCamelCase(e){return e?h.CapitalWords(e):""}static isUseBright(e,t){if(!e)return void 0===t||t;let n,r,o;(e=e.toString()).startsWith("#")&&(e=e.slice(1));const s=e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);if(s&&4===s.length)n=parseInt(s[1],10),r=parseInt(s[2],10),o=parseInt(s[3],10);else{if(3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),8===e.length)e=e.substring(0,6);else if(6!==e.length)return!1;n=parseInt(e.slice(0,2),16),r=parseInt(e.slice(2,4),16),o=parseInt(e.slice(4,6),16)}return.299*n+.587*r+.114*o<=186}static getTimeString(e){if(e=parseFloat(e.toString()),Number.isNaN(e))return"--:--";const t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60;return t?"".concat(t,":").concat(n<10?"0".concat(n):n,":").concat(r<10?"0".concat(r):r):"".concat(n<10?"0".concat(n):n,":").concat(r<10?"0".concat(r):r)}static getWindDirection(e){return e>=0&&e<11.25?"N":e>=11.25&&e<33.75?"NNE":e>=33.75&&e<56.25?"NE":e>=56.25&&e<78.75?"ENE":e>=78.75&&e<101.25?"E":e>=101.25&&e<123.75?"ESE":e>=123.75&&e<146.25?"SE":e>=146.25&&e<168.75?"SSE":e>=168.75&&e<191.25?"S":e>=191.25&&e<213.75?"SSW":e>=213.75&&e<236.25?"SW":e>=236.25&&e<258.75?"WSW":e>=258.75&&e<281.25?"W":e>=281.25&&e<303.75?"WNW":e>=303.75&&e<326.25?"NW":e>=326.25&&e<348.75?"NNW":"N"}static padding(e){return"string"===typeof e?e.length<2?"0".concat(e):e:e<10?"0".concat(e):e.toString()}static setDataFormat(e){e&&(h.dateFormat=e.toUpperCase().split(/[.-/]/),h.dateFormat.splice(h.dateFormat.indexOf("YYYY"),1))}static date2string(e){if("string"===typeof e){if(!(e=e.trim()))return"";if(e.match(/^[\w\s]+$/))return e;const t=e.match(/(\d{1,4})[-./](\d{1,2})[-./](\d{1,4})/);if(t){const n=[parseInt(t[1],10),parseInt(t[2],10),parseInt(t[3],10)],r=n.find((e=>e>31));if(void 0!==r){n.splice(n.indexOf(r),1);const t=n.find((e=>e>12));t?(n.splice(n.indexOf(t),1),e=new Date(r,n[0]-1,t)):"M"===h.dateFormat[0][0]&&"D"===h.dateFormat[1][0]?(e=new Date(r,n[0]-1,n[1]),Math.abs(e.getTime()-Date.now())>864e6&&(e=new Date(r,n[1]-1,n[0]))):"D"===h.dateFormat[0][0]&&"M"===h.dateFormat[1][0]?(e=new Date(r,n[1]-1,n[0]),Math.abs(e.getTime()-Date.now())>864e6&&(e=new Date(r,n[0]-1,n[1]))):e=new Date(e)}else e=new Date(e)}else e=new Date(e)}else e=new Date(e);let t=a.default.t("ra_dow_".concat(c[e.getDay()])).replace("ra_dow_","");return t+=". ".concat(e.getDate()," ").concat(a.default.t("ra_month_".concat(l[e.getMonth()])).replace("ra_month_","")),t}static renderTextWithA(e){let t=e.match(/||[^<]+<\/b>|[^<]+<\/i>/);if(t){const n=[];let r=1;do{const s=e.substring(0,t.index);if(e=e.substring((t.index||0)+t[0].length),s&&n.push(o.default.createElement("span",{key:"a".concat(r++)},s)),t[0].startsWith(""))n.push(o.default.createElement("b",{key:"a".concat(r++)},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith(""))n.push(o.default.createElement("i",{key:"a".concat(r++)},t[0].substring(3,t[0].length-4)));else if(t[0].startsWith("([^<]*)||[^<]+<\/b>|[^<]+<\/i>/):null,t||e&&n.push(o.default.createElement("span",{key:"a".concat(r++)},e))}while(t);return n}return e}static getSmartName(e,t,n,r){var o,s;if(!t){if(!r)return e.common?e&&!e.common?e.smartName:e.common.smartName:e.smartName;if(e&&!e.common)return e.smartName;const t=e;return(null===(o=null===t||void 0===t?void 0:t.common)||void 0===o?void 0:o.custom)&&t.common.custom[n]?t.common.custom[n].smartName:void 0}if(!r)return e[t].common.smartName;const a=e[t];return(null===(s=null===a||void 0===a?void 0:a.common)||void 0===s?void 0:s.custom)&&a.common.custom[n]&&a.common.custom[n].smartName||null}static getSmartNameFromObj(e,t,n){var r;return n?e&&!e.common?e.smartName:(null===(r=null===e||void 0===e?void 0:e.common)||void 0===r?void 0:r.custom)&&e.common.custom[t]?e.common.custom[t].smartName:void 0:e.common?e&&!e.common?e.smartName:e.common.smartName:e.smartName}static enableSmartName(e,t,n){n?(e.common.custom=e.common.custom||{},e.common.custom[t]=e.common.custom[t]||{},e.common.custom[t].smartName={}):e.common.smartName={}}static removeSmartName(e,t,n){n?e.common&&e.common.custom&&e.common.custom[t]&&(e.common.custom[t]=null):e.common.smartName=null}static updateSmartName(e,t,n,r,o,s){const i=a.default.getLanguage();if("string"===typeof e.common.smartName){const t=e.common.smartName;e.common.smartName={},e.common.smartName[i]=t}if(e.native&&e.native.byON){delete e.native.byON;let t=e.common.smartName;t?"object"!==typeof t&&(t={en:t},t[i]=t.en):t={},e.common.smartName=t}if(void 0!==r&&(s?(e.common.custom=e.common.custom||{},e.common.custom[o]=e.common.custom[o]||{},e.common.custom[o].smartName=e.common.custom[o].smartName||{},r?e.common.custom[o].smartName.smartType=r:delete e.common.custom[o].smartName.smartType):(e.common.smartName=e.common.smartName||{},r?e.common.smartName.smartType=r:delete e.common.smartName.smartType)),void 0!==n&&(s?(e.common.custom=e.common.custom||{},e.common.custom[o]=e.common.custom[o]||{},e.common.custom[o].smartName=e.common.custom[o].smartName||{},e.common.custom[o].smartName.byON=n):(e.common.smartName=e.common.smartName||{},e.common.smartName.byON=n)),void 0!==t){let n;if(s?(e.common.custom=e.common.custom||{},e.common.custom[o]=e.common.custom[o]||{},e.common.custom[o].smartName=e.common.custom[o].smartName||{},n=e.common.custom[o].smartName):(e.common.smartName=e.common.smartName||{},n=e.common.smartName),n[i]=t,n&&(!n[i]||n[i]===e.common.name&&(!e.common.role||e.common.role.includes("button")))){delete n[i];let t=!0;for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)){t=!1;break}t&&(s&&e.common.custom&&e.common.custom[o]?void 0===e.common.custom[o].smartName.byON?delete e.common.custom[o]:(delete e.common.custom[o].en,delete e.common.custom[o].de,delete e.common.custom[o].ru,delete e.common.custom[o].nl,delete e.common.custom[o].pl,delete e.common.custom[o].it,delete e.common.custom[o].fr,delete e.common.custom[o].pt,delete e.common.custom[o].es,delete e.common.custom[o].uk,delete e.common.custom[o]["zh-cn"]):e.common.smartName&&void 0!==e.common.smartName.byON?(delete e.common.smartName.en,delete e.common.smartName.de,delete e.common.smartName.ru,delete e.common.smartName.nl,delete e.common.smartName.pl,delete e.common.smartName.it,delete e.common.smartName.fr,delete e.common.smartName.pt,delete e.common.smartName.es,delete e.common.smartName.uk,delete e.common.smartName["zh-cn"]):e.common.smartName=null)}}}static disableSmartName(e,t,n){n?(e.common.custom=e.common.custom||{},e.common.custom[t]=e.common.custom[t]||{},e.common.custom[t].smartName=!1):e.common.smartName=!1}static copyToClipboard(e,t){return t&&(t.stopPropagation(),t.preventDefault()),(0,s.default)(e)}static getFileExtension(e){const t=(e||"").lastIndexOf(".");return-1!==t?e.substring(t+1).toLowerCase():null}static formatBytes(e){if(Math.abs(e)<1024)return"".concat(e," B");const t=["KB","MB","GB"];let n=-1;do{e/=1024,++n}while(Math.abs(e)>=1024&&n186?"#000000".concat(n||""):"#FFFFFF".concat(n||"");const a=(255-r).toString(16),i=(255-o).toString(16),c=(255-s).toString(16);return"#".concat(a.padStart(2,"0")).concat(i.padStart(2,"0")).concat(c.padStart(2,"0")).concat(n||"")}static color2rgb(e){if(void 0===e||null===e||""===e||"string"!==typeof e)return"";if(e.startsWith("rgba")){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+),\s*([.\d]+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else if(e.startsWith("rgb")){const t=e.match(/rgb?\((\d+),\s*(\d+),\s*(\d+)\)/);t&&(e=parseInt(t[1],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0")+parseInt(t[2],10).toString(16).padStart(2,"0"))}else e.startsWith("#")&&(e=e.slice(1));return 3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),6!==e.length&&8!==e.length?(console.warn("Cannot invert color: ".concat(e)),!1):[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}static rgb2lab(e){let t=e[0]/255,n=e[1]/255,r=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=(.4124*t+.3576*n+.1805*r)/.95047,s=.2126*t+.7152*n+.0722*r,a=(.0193*t+.1192*n+.9505*r)/1.08883;return o=o>.008856?o**.33333333:7.787*o+.137931,s=s>.008856?s**.33333333:7.787*s+.137931,a=a>.008856?a**.33333333:7.787*a+.137931,[116*s-16,500*(o-s),200*(s-a)]}static colorDistance(e,t){const n=h.color2rgb(e),r=h.color2rgb(t);if(!n||!r)return 0;const o=h.rgb2lab(n),s=h.rgb2lab(r),a=o[0]-s[0],i=o[1]-s[1],c=o[2]-s[2],l=Math.sqrt(o[1]*o[1]+o[2]*o[2]),d=l-Math.sqrt(s[1]*s[1]+s[2]*s[2]);let u=i*i+c*c-d*d;u=u<0?0:Math.sqrt(u);const p=d/(1+.045*l),m=u/(1+.015*l),f=a*a+p*p+m*m;return f<0?0:f}static _toVal(e){let t,n="";if("string"===typeof e||"number"===typeof e)n+=e;else if("object"===typeof e)if(Array.isArray(e))for(let r=0;r{if(e=e.trim()){const n=e.split("="),r=decodeURIComponent(n[0]).trim();if(n.length>1){if(t[r]=decodeURIComponent(n[1]),"true"===t[r])t[r]=!0;else if("false"===t[r])t[r]=!1;else if(t[r]){const e=parseFloat(t[r].toString());e.toString()===t[r]&&(t[r]=e)}}else t[r]=!0}})),t}static getParentId(e){const t=(e||"").toString().split(".");return t.length>1?(t.pop(),t.join(".")):null}static formatDate(e,t){if(!e)return"";let n;const r=e.getMonth()+1,o=e.getDate();n="MM/DD/YYYY"===t?"".concat(r<10?"0".concat(r):r,"/").concat(o<10?"0".concat(o):o,"/").concat(e.getFullYear()):"".concat(e.getFullYear(),"-").concat(r,"-").concat(o);let s=e.getHours();return n+=s<10?" 0".concat(s):" ".concat(s),s=e.getMinutes(),n+=s<10?":0".concat(s):":".concat(s),s=e.getSeconds(),n+=s<10?":0".concat(s):":".concat(s),s=e.getMilliseconds(),n+=s<10?".00".concat(s):s<100?".0".concat(s):".".concat(s),n}static formatTime(e){if(e){e=Math.round(e);const t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60),o=e%60;return t?"".concat(t,".").concat(n.toString().padStart(2,"0"),":").concat(r.toString().padStart(2,"0"),":").concat(o.toString().padStart(2,"0")):n?"".concat(n,":").concat(r.toString().padStart(2,"0"),":").concat(o.toString().padStart(2,"0")):"0:".concat(r.toString().padStart(2,"0"),":").concat(o.toString().padStart(2,"0"))}return"0:00:00"}static MDtext2link(e){const t=e.match(/\d+\.\)\s/);return t&&(e=e.replace(t[0],t[0].replace(/\s/," "))),e.replace(/[^a-zA-Z\u0430-\u044f\u0410-\u042f0-9]/g,"").trim().replace(/\s/g,"").toLowerCase()}static openLink(e,t){e=e.replace(/\/\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\d+)?\//i,"//[$1]$2/"),"this"===t?window.location.href=e:window.open(e,t||"_blank")}static MDgetTitle(e){const t=h.MDextractHeader(e),n=t.header;let r=t.body;if(!n.title){r=r.replace(/{[^}]*}/g,""),r=r.trim();const e=r.replace(/\r/g,"").split("\n");for(let t=0;t{if(!e.trim())return;const n=e.indexOf(":");if(-1!==n){const r=e.substring(0,n).trim();let o=e.substring(n+1).trim();o=o.replace(/^['"]|['"]$/g,""),"true"===o?t[r]=!0:"false"===o?t[r]=!1:parseFloat(o).toString()===o?t[r]=parseFloat(o):t[r]=o}else t[e.trim()]=!0})),e=e.substring(n+7)}}return{header:t,body:e}}static MDremoveDocsify(e){const t=e.match(/{docsify-[^}]*}/g);return t&&t.forEach((t=>e=e.replace(t,""))),e}static generateFile(e,t){const n=document.createElement("a");n.setAttribute("href","data:application/json;charset=utf-8,".concat(encodeURIComponent(JSON.stringify(t,null,2)))),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}static quality2text(e){const t=4294901760&e,n=d[e];let r;return r=n?[n]:1&e?[d[1],"0x".concat((65534&e).toString(16))]:2&e?[d[2],"0x".concat((65533&e).toString(16))]:["0x".concat(e.toString(16))],t&&r.push("0x".concat((t>>16).toString(16).toUpperCase())),r}static clone(e){return JSON.parse(JSON.stringify(e))}static getStates(e){var t;let n=null===(t=null===e||void 0===e?void 0:e.common)||void 0===t?void 0:t.states;if(n)if("string"===typeof n&&"{"===n[0])try{n=JSON.parse(n)}catch(r){console.error("Cannot parse states: ".concat(n)),n=null}else if("string"===typeof n){const e=n.split(";");n={};for(let t=0;tt[n]=e)):"string"===(null===e||void 0===e?void 0:e.common.type)?n.forEach((e=>t[e]=e)):"boolean"===(null===e||void 0===e?void 0:e.common.type)&&(t.false=n[0],t.true=n[1]),t}return n||null}static async getSvg(e){const t=await fetch(e),n=await t.blob();return await new Promise((e=>{const t=new FileReader;t.onload=function(){var t;e((null===(t=this.result)||void 0===t?void 0:t.toString())||"")},t.readAsDataURL(n)}))}static detectMimeType(e){const t=Object.keys(u).find((t=>e.startsWith(t)));return t?u[t]:null}static isStableRepository(e){return!!("string"===typeof e&&e.toLowerCase().startsWith("stable")||e&&"string"!==typeof e&&e.find((e=>e.toLowerCase().startsWith("stable"))))}static isStringInteger(e){return parseInt(e).toString()===e}static isValidDate(e){return e instanceof Date&&!isNaN(e.getTime())}}h.namespace=i,h.INSTANCES="instances",h.dateFormat=["DD","MM"],h.FORBIDDEN_CHARS=/[^._\-/ :!#$%&()+=@^{}|~\p{Ll}\p{Lu}\p{Nd}]+/gu,t.default=h},72524:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482)),s=n(27547),a=n(65298);t.default=()=>e=>t=>{const n=function(){const e=(0,s.useTheme)();return[...e.breakpoints.keys].reverse().reduce(((t,n)=>{const r=(0,a.useMediaQuery)(e.breakpoints.up(n));return!t&&r?n:t}),null)||"xs"}();return o.default.createElement(e,Object.assign({},t,{width:n}))}},17111:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PERMISSION_ERROR=t.ERRORS=t.PROGRESS=void 0;const r=n(71936);Object.defineProperty(t,"PROGRESS",{enumerable:!0,get:function(){return r.PROGRESS}}),Object.defineProperty(t,"ERRORS",{enumerable:!0,get:function(){return r.ERRORS}}),Object.defineProperty(t,"PERMISSION_ERROR",{enumerable:!0,get:function(){return r.PERMISSION_ERROR}}),t.default=r.Connection},27637:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=s(n(53482)),c=n(32496),l=n(65298),d=n(21839),u=a(n(12539));class h extends i.Component{constructor(e){if(super(e),!this.props.dialogName&&this.props.suppressQuestionMinutes)throw new Error("dialogName required if suppressQuestionMinutes used");let t=!1;this.props.suppressQuestionMinutes&&(t=parseInt((window._localStorage||window.localStorage).getItem(this.props.dialogName),10)||0,t?Date.now()>t&&((window._localStorage||window.localStorage).removeItem(this.props.dialogName),t=!1):t=!1),this.state={suppress:t}}handleOk(){this.state.suppress&&(window._localStorage||window.localStorage).setItem(this.props.dialogName,Date.now()+6e4*(this.props.suppressQuestionMinutes||2)),this.props.onClose&&this.props.onClose(!0)}handleCancel(){this.props.onClose&&this.props.onClose(!1)}render(){return"number"===typeof this.state.suppress?(setTimeout((()=>this.props.onClose&&this.props.onClose(!0)),100),null):i.default.createElement(l.Dialog,{open:!0,maxWidth:"md",fullWidth:void 0===this.props.fullWidth||this.props.fullWidth,onClose:(e,t)=>{"backdropClick"!==t&&"escapeKeyDown"!==t&&this.handleCancel()},"aria-labelledby":"ar_confirmation_dialog_title","aria-describedby":"ar_confirmation_dialog_description"},i.default.createElement(l.DialogTitle,{id:"ar_confirmation_dialog_title"},this.props.title||u.default.t("ra_Are you sure?")),i.default.createElement(l.DialogContent,null,i.default.createElement(l.DialogContentText,{id:"ar_confirmation_dialog_description"},this.props.icon||null,this.props.text,this.props.suppressQuestionMinutes?i.default.createElement("br",null):null,this.props.suppressQuestionMinutes?i.default.createElement(l.FormControlLabel,{classes:{label:this.props.classes.suppress,root:this.props.classes.suppressRoot},control:i.default.createElement(l.Checkbox,{id:"ar_dialog_confirm_suppress_".concat(this.props.dialogName||""),checked:!!this.state.suppress,onChange:()=>this.setState({suppress:!this.state.suppress})}),label:this.props.suppressText||u.default.t("ra_Suppress question for next %s minutes",(this.props.suppressQuestionMinutes||2).toString())}):null)),i.default.createElement(l.DialogActions,null,i.default.createElement(l.Button,{id:"ar_dialog_confirm_ok_".concat(this.props.dialogName||""),variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:i.default.createElement(d.Check,null)},this.props.ok||u.default.t("ra_Ok")),i.default.createElement(l.Button,{id:"ar_dialog_confirm_cancel_".concat(this.props.dialogName||""),variant:"contained",onClick:()=>this.handleCancel(),color:"grey",startIcon:i.default.createElement(d.Close,null)},this.props.cancel||u.default.t("ra_Cancel"))))}}const p=(0,c.withStyles)({suppress:{fontSize:12},suppressRoot:{marginTop:16}})(h);t.default=p},99795:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=s(n(53482)),c=n(65298),l=n(21839),d=a(n(12539));class u extends i.Component{handleOk(){this.props.onClose&&this.props.onClose()}render(){return i.default.createElement(c.Dialog,{open:!0,maxWidth:"sm",fullWidth:void 0===this.props.fullWidth||this.props.fullWidth,onClose:()=>this.handleOk(),"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description"},i.default.createElement(c.DialogTitle,{id:"ar_alert_dialog_title"},this.props.title||d.default.t("ra_Error")),i.default.createElement(c.DialogContent,null,i.default.createElement(c.DialogContentText,{id:"ar_alert_dialog_description"},this.props.text||d.default.t("ra_Unknown error!"))),i.default.createElement(c.DialogActions,null,i.default.createElement(c.Button,{id:"ar_dialog_error_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:i.default.createElement(l.Check,null)},d.default.t("ra_Ok"))))}}t.default=u},70266:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=s(n(53482)),c=n(65298),l=n(21839),d=a(n(12539));class u extends i.Component{handleOk(){this.props.onClose&&this.props.onClose()}render(){return i.default.createElement(c.Dialog,{open:!0,maxWidth:"sm",fullWidth:void 0===this.props.fullWidth||this.props.fullWidth,onClose:()=>this.handleOk(),"aria-labelledby":"ar_dialog_message_title","aria-describedby":"ar_dialog_message_description"},i.default.createElement(c.DialogTitle,{id:"ar_dialog_message_title"},this.props.title||d.default.t("ra_Message")),i.default.createElement(c.DialogContent,null,i.default.createElement(c.DialogContentText,{id:"ar_dialog_message_description"},i.default.createElement("span",{style:{marginRight:this.props.icon?8:0}},this.props.icon||null),this.props.text)),i.default.createElement(c.DialogActions,null,i.default.createElement(c.Button,{id:"ar_dialog_message_ok",variant:"contained",onClick:()=>this.handleOk(),color:"primary",autoFocus:!0,startIcon:i.default.createElement(l.Close,null)},this.props.ok||d.default.t("ra_Close"))))}}t.default=u},73900:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=s(n(53482)),c=n(65298),l=n(21839),d=a(n(12539)),u=a(n(96205));class h extends i.Component{constructor(e){super(e),this.dialogName=this.props.dialogName||"default",this.dialogName="SelectID.".concat(this.dialogName);const t=(window._localStorage||window.localStorage).getItem(this.dialogName)||"{}";try{this.filters=JSON.parse(t)}catch(r){this.filters={}}e.filters&&(this.filters=Object.assign(Object.assign({},this.filters),e.filters||{}));let n=this.props.selected||[];if(Array.isArray(n)||(n=[n]),n=n.filter((e=>e)),e.filterFunc)if("string"===typeof e.filterFunc)try{this.filterFunc=new Function("obj",e.filterFunc)}catch(r){console.error('Cannot parse filter function: "obj => '.concat(e.filterFunc,'"')),this.filterFunc=void 0}else this.filterFunc=e.filterFunc;this.state={selected:n,name:""}}handleCancel(){this.props.onClose()}handleOk(){this.props.onOk(this.props.multiSelect?this.state.selected:this.state.selected[0]||"",this.state.name),this.props.onClose()}render(){let e;return e=this.state.name||this.state.selected.length?1===this.state.selected.length?[i.default.createElement("span",{key:"selected"},d.default.t("ra_Selected"),"\xa0"),i.default.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},(this.state.name||this.state.selected)+(this.state.name?" [".concat(this.state.selected,"]"):""))]:[i.default.createElement("span",{key:"selected"},d.default.t("ra_Selected"),"\xa0"),i.default.createElement("span",{key:"id",style:{fontWeight:"bold",fontStyle:"italic"}},d.default.t("%s items",this.state.selected.length.toString()))]:this.props.title||d.default.t("ra_Please select object ID..."),i.default.createElement(c.Dialog,{onClose:()=>{},maxWidth:!1,sx:{"& .MuiDialog-paper":{height:"95%",padding:4,width:"100%",maxWidth:"100%",maxHeight:"calc(100% - 16px)"}},fullWidth:!0,open:!0,"aria-labelledby":"ar_dialog_selectid_title"},i.default.createElement(c.DialogTitle,{id:"ar_dialog_selectid_title",style:{whiteSpace:"nowrap",width:"calc(100% - 72px)",overflow:"hidden",display:"inline-block",textOverflow:"ellipsis"}},e),i.default.createElement(c.DialogContent,{style:{height:"100%",overflow:"hidden",padding:"8px 4px"}},i.default.createElement(u.default,{foldersFirst:this.props.foldersFirst,imagePrefix:this.props.imagePrefix||this.props.prefix,defaultFilters:this.filters,dialogName:this.dialogName,showExpertButton:void 0===this.props.showExpertButton||this.props.showExpertButton,expertMode:this.props.expertMode,columns:this.props.columns||["name","type","role","room","func","val"],types:this.props.types?Array.isArray(this.props.types)?this.props.types:[this.props.types]:["state"],root:this.props.root,t:d.default.t,lang:this.props.lang||d.default.getLanguage(),socket:this.props.socket,selected:this.state.selected,multiSelect:this.props.multiSelect,notEditable:void 0===this.props.notEditable||this.props.notEditable,themeName:this.props.themeName,themeType:this.props.themeType,customFilter:this.props.customFilter,onFilterChanged:e=>{this.filters=e,(window._localStorage||window.localStorage).setItem(this.dialogName,JSON.stringify(e))},onSelect:(e,t,n)=>{JSON.stringify(e)!==JSON.stringify(this.state.selected)?this.setState({selected:e,name:t},(()=>n&&this.handleOk())):n&&this.handleOk()},filterFunc:this.filterFunc,title:"",classes:{}})),i.default.createElement(c.DialogActions,null,i.default.createElement(c.Button,{id:"ar_dialog_selectid_ok_".concat(this.props.dialogName||""),variant:"contained",onClick:()=>this.handleOk(),startIcon:i.default.createElement(l.Check,null),disabled:!this.state.selected.length,color:"primary"},this.props.ok||d.default.t("ra_Ok")),i.default.createElement(c.Button,{id:"ar_dialog_selectid_cancel_".concat(this.props.dialogName||""),color:"grey",variant:"contained",onClick:()=>this.handleCancel(),startIcon:i.default.createElement(l.Cancel,null)},this.props.cancel||d.default.t("ra_Cancel"))))}}t.default=h},32451:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=a(n(53482)),c=n(71936),l=s(n(76409)),d=s(n(45198)),u=n(65298),h=n(21839),p=a(n(73361)),m=a(n(50086)),f=a(n(95881)),_=a(n(70591)),g=a(n(653)),v=a(n(29102)),y=a(n(27637)),b=a(n(12539)),w=a(n(99795));class S extends _.default{constructor(e,t){var r,o;const s=e.Connection||(null===t||void 0===t?void 0:t.Connection)||c.Connection;if(!window.document.getElementById("generic-app-iobroker-component")){const e=window.document.createElement("style");e.setAttribute("id","generic-app-iobroker-component"),e.innerHTML='\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n',window.document.head.appendChild(e)}if(!S.isWeb()&&window.io&&"3000"===window.location.port)try{const e=new window.SocketClient;delete window.io,window.io=e}catch(v){}super(e),this.common=null,this.sentryStarted=!1,this.sentryInited=!1,this.resizeTimer=null,this.onSystemConfigChanged=(e,t)=>{var n,r;t&&"system.config"===e&&(this.socket.systemLang!==(null===t||void 0===t?void 0:t.common.language)&&(this.socket.systemLang=(null===t||void 0===t?void 0:t.common.language)||"en",b.default.setLanguage(this.socket.systemLang)),(null===(n=this._systemConfig)||void 0===n?void 0:n.expertMode)!==!!(null===(r=null===t||void 0===t?void 0:t.common)||void 0===r?void 0:r.expertMode)?(this._systemConfig=(null===t||void 0===t?void 0:t.common)||{},this.setState({expertMode:this.getExpertMode()})):this._systemConfig=(null===t||void 0===t?void 0:t.common)||{})},this.onReceiveMessage=e=>{if(null===e||void 0===e?void 0:e.data)if("updateTheme"===e.data){const e=g.default.getThemeName();g.default.setThemeName(g.default.getThemeName());const t=this.createTheme(e);this.setState({theme:t,themeName:this.getThemeName(t),themeType:this.getThemeType(t)},(()=>{this.props.onThemeChange&&this.props.onThemeChange(e),this.onThemeChanged&&this.onThemeChanged(e)}))}else"updateExpertMode"===e.data?this.onToggleExpertMode&&this.onToggleExpertMode(this.getExpertMode()):"chartReady"!==e.data&&console.debug('Received unknown message: "'.concat(JSON.stringify(e.data),'". May be it will be processed later'))},this.onResize=()=>{this.resizeTimer&&clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout((()=>{this.resizeTimer=null,this.setState({width:S.getWidth()})}),200)},(0,p.default)();const a=(window.location.search||"").replace(/^\?/,"").replace(/#.*$/,""),i={};a.trim().split("&").filter((e=>e.trim())).forEach((e=>{const t=e.split("=");i[t[0]]=2!==t.length||t[1],"true"===i[t[0]]?i[t[0]]=!0:"false"===i[t[0]]&&(i[t[0]]=!1)})),this.instance=null!==(o=null!==(r=null===t||void 0===t?void 0:t.instance)&&void 0!==r?r:e.instance)&&void 0!==o?o:void 0!==i.instance?parseInt(i.instance,10)||0:parseInt(window.location.search.slice(1),10)||0;const u=window.location.pathname.split("/");this.adapterName=(null===t||void 0===t?void 0:t.adapterName)||e.adapterName||window.adapterName||u[u.length-2]||"iot",this.instanceId="system.adapter.".concat(this.adapterName,".").concat(this.instance),this.newReact=!0===i.newReact;const h=_.default.getLocation();h.tab=h.tab||(window._localStorage||window.localStorage).getItem("".concat(this.adapterName,"-adapter"))||"";const m=this.createTheme();this.state=Object.assign(Object.assign({},this.state||{}),{selectedTab:(window._localStorage||window.localStorage).getItem("".concat(this.adapterName,"-adapter"))||"",selectedTabNum:-1,native:{},errorText:"",changed:!1,connected:!1,loaded:!1,isConfigurationError:"",expertMode:!1,toast:"",theme:m,themeName:this.getThemeName(m),themeType:this.getThemeType(m),bottomButtons:!1!==(t&&t.bottomButtons)&&!1!==(null===e||void 0===e?void 0:e.bottomButtons),width:S.getWidth(),confirmClose:!1,_alert:!1,_alertType:"info",_alertMessage:""});const f={en:n(56603),de:n(3123),ru:n(57629),pt:n(324),nl:n(49646),fr:n(94176),it:n(67801),es:n(35148),pl:n(11356),uk:n(57412),"zh-cn":n(89156)};t&&t.translations?Object.keys(t.translations).forEach((e=>{t.translations&&(f[e]=Object.assign(f[e],t.translations[e]||{}))})):e.translations&&Object.keys(e.translations).forEach((t=>{e.translations&&(f[t]=Object.assign(f[t],e.translations[t]||{}))})),b.default.setTranslations(f),this.savedNative={},this.encryptedFields=e.encryptedFields||(null===t||void 0===t?void 0:t.encryptedFields)||[],this.sentryDSN=t&&t.sentryDSN||e.sentryDSN,window.socketUrl&&(window.socketUrl.startsWith(":")?window.socketUrl="".concat(window.location.protocol,"//").concat(window.location.hostname).concat(window.socketUrl):window.socketUrl.startsWith("http://")||window.socketUrl.startsWith("https://")||(window.socketUrl="".concat(window.location.protocol,"//").concat(window.socketUrl))),this.alertDialogRendered=!1,window.oldAlert=window.alert,window.alert=e=>{this.alertDialogRendered?e&&e.toString().toLowerCase().includes("error")?(console.error(e),this.showAlert(e.toString(),"error")):(console.log(e),this.showAlert(e.toString(),"info")):window.oldAlert(e)},this.socket=new s(Object.assign(Object.assign({},(null===e||void 0===e?void 0:e.socket)||(null===t||void 0===t?void 0:t.socket)),{name:this.adapterName,doNotLoadAllObjects:null===t||void 0===t?void 0:t.doNotLoadAllObjects,onProgress:e=>{e===c.PROGRESS.CONNECTING?this.setState({connected:!1}):(c.PROGRESS.READY,this.setState({connected:!0}))},onReady:()=>{b.default.setLanguage(this.socket.systemLang),this.socket.subscribeObject("system.config",this.onSystemConfigChanged).then((()=>this.getSystemConfig())).then((e=>(this._secret="undefined"!==typeof e&&e.native&&e.native.secret||"Zgfr56gFe87jJOM",this._systemConfig=(null===e||void 0===e?void 0:e.common)||{},this.socket.getObject(this.instanceId)))).then((async e=>{var t,n;let r;const o=e,s=!1!==(null===(t=await this.socket.getState("".concat(this.instanceId,".plugins.sentry.enabled")))||void 0===t?void 0:t.val)&&"none"!==(null===(n=this._systemConfig)||void 0===n?void 0:n.diag)&&(null===o||void 0===o?void 0:o.common)&&o.common.name&&o.common.version&&!o.common.disableDataReporting&&"localhost:3000"!==window.location.host;!this.sentryStarted&&this.sentryDSN&&s&&(this.sentryStarted=!0,l.init({dsn:this.sentryDSN,release:"iobroker.".concat(o.common.name,"@").concat(o.common.version),integrations:[new d.Dedupe]}),console.log("Sentry initialized")),!this.sentryInited&&s&&(this.sentryInited=!0,r=this.socket.getObject("system.meta.uuid").then((e=>{e&&e.native&&e.native.uuid&&l.configureScope((t=>t.setUser({id:e.native.uuid})))}))),r=r||Promise.resolve(),r.then((()=>{o?(this.common=null===o||void 0===o?void 0:o.common,this.onPrepareLoad(o.native,o.encryptedNative),this.savedNative=JSON.parse(JSON.stringify(o.native)),this.setState({native:o.native,loaded:!0,expertMode:this.getExpertMode()},(()=>this.onConnectionReady&&this.onConnectionReady()))):(console.warn("Cannot load instance settings"),this.setState({native:{},loaded:!0,expertMode:this.getExpertMode()},(()=>this.onConnectionReady&&this.onConnectionReady())))}))})).catch((e=>window.alert("Cannot settings: ".concat(e))))},onError:e=>{console.error(e),this.showError(e)}}))}static isWeb(){return void 0!==window.socketUrl}showAlert(e,t){"error"!==t&&"warning"!==t&&"info"!==t&&"success"!==t&&(t="info"),this.setState({_alert:!0,_alertType:t,_alertMessage:e})}renderAlertSnackbar(){return this.alertDialogRendered=!0,i.default.createElement(u.Snackbar,{style:"error"===this.state._alertType?{backgroundColor:"#f44336"}:"success"===this.state._alertType?{backgroundColor:"#4caf50"}:void 0,open:this.state._alert,autoHideDuration:6e3,onClose:(e,t)=>"clickaway"!==t&&this.setState({_alert:!1}),message:this.state._alertMessage})}componentDidMount(){window.addEventListener("resize",this.onResize,!0),window.addEventListener("message",this.onReceiveMessage,!1),super.componentDidMount()}componentWillUnmount(){window.removeEventListener("resize",this.onResize,!0),window.removeEventListener("message",this.onReceiveMessage,!1),super.componentWillUnmount()}static getWidth(){const e={xs:0,sm:600,md:960,lg:1280,xl:1920},t=window.innerWidth;return Object.keys(e).reverse().find((n=>t>=e[n]))||"xs"}createTheme(e){return(0,m.default)(g.default.getThemeName(e))}getThemeName(e){return e.name}getThemeType(e){return e.palette.mode}onThemeChanged(e){}onToggleExpertMode(e){}toggleTheme(e){const t=this.state.themeName;if((e=e||("dark"===t?"blue":"blue"===t?"colored":"colored"===t?"light":"dark"))!==t){g.default.setThemeName(e);const t=this.createTheme(e);this.setState({theme:t,themeName:this.getThemeName(t),themeType:this.getThemeType(t)},(()=>{this.props.onThemeChange&&this.props.onThemeChange(e||"light"),this.onThemeChanged&&this.onThemeChanged(e||"light")}))}}getSystemConfig(){return this.socket.getSystemConfig()}getExpertMode(){var e;return"true"===window.sessionStorage.getItem("App.expertMode")||!!(null===(e=this._systemConfig)||void 0===e?void 0:e.expertMode)}onConnectionReady(){}encrypt(e){let t="";if(this._secret)for(let n=0;n{e[t]&&(e[t]=this.encrypt(e[t]))})),!0}onPrepareLoad(e,t){this.encryptedFields&&this.encryptedFields.forEach((t=>{e[t]&&(e[t]=this.decrypt(e[t]))})),t&&t.forEach((t=>{this.encryptedFields=this.encryptedFields||[],!this.encryptedFields.includes(t)&&this.encryptedFields.push(t),e[t]&&(e[t]=this.decrypt(e[t]))}))}async getExtendableInstances(){try{const e=await this.socket.getObjectViewSystem("instance","system.adapter.","system.adapter.\u9999");return Object.values(e).filter((e=>{var t;return!!(null===(t=null===e||void 0===e?void 0:e.common)||void 0===t?void 0:t.webExtendable)}))}catch(e){return[]}}async getIpAddresses(e){var t;const n=await this.socket.getHostByIp(e||(null===(t=this.common)||void 0===t?void 0:t.host)||""),r=n.find((e=>"0.0.0.0"===e.address));r&&(r.name="[IPv4] 0.0.0.0 - ".concat(b.default.t("ra_Listen on all IPs")));const o=n.find((e=>"::"===e.address));return o&&(o.name="[IPv4] :: - ".concat(b.default.t("ra_Listen on all IPs"))),n}onSave(e){let t;this.state.isConfigurationError?this.setState({errorText:this.state.isConfigurationError}):this.socket.getObject(this.instanceId).then((e=>{t=e||{};for(const n in this.state.native)Object.prototype.hasOwnProperty.call(this.state.native,n)&&(null===this.state.native[n]?t.native[n]=null:void 0!==this.state.native[n]?t.native[n]=JSON.parse(JSON.stringify(this.state.native[n])):delete t.native[n]);if(this.state.common)for(const n in this.state.common)null===this.state.common[n]?t.common[n]=null:void 0!==this.state.common[n]?t.common[n]=JSON.parse(JSON.stringify(this.state.common[n])):delete t.common[n];return!1!==this.onPrepareSave(t.native)?this.socket.setObject(this.instanceId,t):Promise.reject(new Error("Invalid configuration"))})).then((()=>{this.savedNative=t.native,globalThis.changed=!1;try{window.parent.postMessage("nochange","*")}catch(n){}this.setState({changed:!1}),e&&S.onClose()})).catch((e=>console.error("Cannot save configuration: ".concat(e))))}renderToast(){var e;return this.state.toast?i.default.createElement(u.Snackbar,{anchorOrigin:{vertical:"bottom",horizontal:"left"},open:!0,autoHideDuration:6e3,onClose:()=>this.setState({toast:""}),ContentProps:{"aria-describedby":"message-id"},message:i.default.createElement("span",{id:"message-id"},this.state.toast),action:[i.default.createElement(u.IconButton,{key:"close","aria-label":"Close",color:"inherit",className:null===(e=this.props.classes)||void 0===e?void 0:e.close,onClick:()=>this.setState({toast:""}),size:"large"},i.default.createElement(h.Close,null))]}):null}static onClose(){if("undefined"!==typeof window.parent&&window.parent)try{window.parent.$iframeDialog&&"function"===typeof window.parent.$iframeDialog.close?window.parent.$iframeDialog.close():window.parent.postMessage("close","*")}catch(e){window.parent.postMessage("close","*")}}renderError(){return this.state.errorText?i.default.createElement(w.default,{text:this.state.errorText,onClose:()=>this.setState({errorText:""})}):null}getIsChanged(e){e=e||this.state.native;const t=JSON.stringify(e)!==JSON.stringify(this.savedNative);return globalThis.changed=t,t}onLoadConfig(e){JSON.stringify(e)!==JSON.stringify(this.state.native)&&this.setState({native:e,changed:this.getIsChanged(e)})}setConfigurationError(e){this.state.isConfigurationError!==e&&this.setState({isConfigurationError:e})}renderSaveCloseButtons(){return this.state.confirmClose||this.state.bottomButtons?i.default.createElement(i.default.Fragment,null,this.state.bottomButtons?i.default.createElement(v.default,{theme:this.state.theme,newReact:this.newReact,noTextOnButtons:"xs"===this.state.width||"sm"===this.state.width||"md"===this.state.width,changed:this.state.changed,onSave:e=>this.onSave(e),onClose:()=>{this.state.changed?this.setState({confirmClose:!0}):S.onClose()}}):null,this.state.confirmClose?i.default.createElement(y.default,{title:b.default.t("ra_Please confirm"),text:b.default.t("ra_Some data are not stored. Discard?"),ok:b.default.t("ra_Discard"),cancel:b.default.t("ra_Cancel"),onClose:e=>this.setState({confirmClose:!1},(()=>e&&S.onClose()))}):null):null}_updateNativeValue(e,t,n){"object"!==typeof t&&(t=t.split("."));const r=t.shift()||"";if(!t.length)return n&&"object"===typeof n?JSON.stringify(e[r])!==JSON.stringify(n)&&(e[r]=n,!0):e[r]!==n&&(e[r]=n,!0);if(e[r]=e[r]||{},"object"!==typeof e[r])throw new Error("attribute ".concat(r," is no object, but ").concat(typeof e[r]));return this._updateNativeValue(e[r],t,n)}updateNativeValue(e,t,n){const r=JSON.parse(JSON.stringify(this.state.native));if(this._updateNativeValue(r,e,t)){const e=this.getIsChanged(r);if(e!==this.state.changed)try{window.parent.postMessage(e?"change":"nochange","*")}catch(o){}this.setState({native:r,changed:e},n)}}showError(e){this.setState({errorText:e})}showToast(e){this.setState({toast:e})}renderHelperDialogs(){return i.default.createElement(i.default.Fragment,null,this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar())}render(){return this.state.loaded?i.default.createElement("div",{className:"App"},this.renderError(),this.renderToast(),this.renderSaveCloseButtons(),this.renderAlertSnackbar()):i.default.createElement(f.default,{themeType:this.state.themeType})}}t.default=S},73361:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){console.log("\n\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \n\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2554\u255d\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255d\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\n\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2554\u255d \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\n\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2554\u2550\u2550\u255d \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\n\u2588\u2588\u2551\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2551 \u2588\u2588\u2551\u255a\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255d\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\n\u255a\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u2550\u2550\u2550\u2550\u255d \u255a\u2550\u255d \u255a\u2550\u255d\u255a\u2550\u2550\u2550\u2550\u2550\u2550\u255d\u255a\u2550\u255d \u255a\u2550\u255d\n"),console.log("Nice to see you here! :) Join our dev community here https://github.com/ioBroker/ioBroker or here https://github.com/iobroker-community-adapters"),console.log("Help us to create open source project with reactJS!"),console.log("See you :)")}},50086:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(27547),o=n(85181),s=11/23/100;function a(e){const t={r:0,g:0,b:0};if(7===e.length)t.r=parseInt(e.substr(1,2),16),t.g=parseInt(e.substr(3,2),16),t.b=parseInt(e.substr(5,2),16);else if(4===e.length){const n=e.substr(1,1),r=e.substr(2,1),o=e.substr(3,1);t.r=parseInt(n+n,16),t.g=parseInt(r+r,16),t.b=parseInt(o+o,16)}return t}function i(e,t,n){const r=a(e),o=a(t);return r.r+=o.r*(.05+s*(n-1)),r.g+=o.g*(.05+s*(n-1)),r.b+=o.b*(.05+s*(n-1)),i=r,"#".concat(Math.round(i.r).toString(16)).concat(Math.round(i.g).toString(16)).concat(Math.round(i.b).toString(16));var i}function c(e,t){const n={};for(let r=1;r<=24;r++)n["elevation".concat(r)]={backgroundColor:i(e,t,r)};return n}t.default=e=>{var t,n,s,a,i,l,d,u,h;let p;p="dark"===e?{name:e,palette:{mode:"dark",background:{paper:"#121212",default:"#121212"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}},overrides:{MuiAppBar:{colorDefault:{backgroundColor:"#272727"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:o.orange[200],"&:hover":{color:o.orange[100]}}},MuiPaper:c("#121212","#fff")}}:"blue"===e?{name:e,palette:{mode:"dark",background:{paper:"#151d21",default:"#151d21"},primary:{main:"#4dabf5"},secondary:{main:"#436a93"},expert:"#14bb00",text:{primary:"#ffffff",secondary:"#ffffff"}},overrides:{MuiAppBar:{colorDefault:{backgroundColor:"#2a3135"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:o.orange[200],"&:hover":{color:o.orange[100]}}},MuiPaper:c("#151d21","#fff")}}:"colored"===e?{name:e,palette:{mode:"light",primary:{main:"#3399CC"},secondary:{main:"#164477"},expert:"#96fc96"},overrides:{MuiAppBar:{colorDefault:{backgroundColor:"#3399CC"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:o.orange[400],"&:hover":{color:o.orange[300]}}}}}:"PT"===e?{name:e,palette:{mode:"light",primary:{main:"#0F99DE"},secondary:{main:"#88A536"},expert:"#BD1B24"},overrides:{MuiAppBar:{colorDefault:{backgroundColor:"#0F99DE"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:o.orange[400],"&:hover":{color:o.orange[300]}}}}}:"DX"===e?{name:e,palette:{mode:"light",primary:{main:"#F5F5F7"},secondary:{main:"#a9a9a9"},expert:"#BD1B24",text:{primary:"#007AFE",secondary:"#007AFE",disabled:"#007AFEAA"}},overrides:{MuiAppBar:{colorDefault:{backgroundColor:"#a9a9a9"}},MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:o.orange[400],"&:hover":{color:o.orange[300]}}}}}:{name:e,palette:{mode:"light",primary:{main:"#3399CC",light:void 0,dark:void 0,contrastText:void 0},secondary:{main:"#164477"},expert:"#14bb00"},overrides:{MuiLink:{root:{textTransform:"uppercase",transition:"color .3s ease",color:o.orange[400],"&:hover":{color:o.orange[300]}}}}},p.toolbar={height:48},p.saveToolbar={background:null===(n=null===(t=p.palette)||void 0===t?void 0:t.primary)||void 0===n?void 0:n.main,button:{borderRadius:3,height:32}},p.palette&&(p.palette.grey={main:o.grey[300],dark:o.grey[400]});const m=(0,r.createTheme)(p),f=m.palette;return(0,r.createTheme)(m,{components:{MuiButton:{variants:[{props:{variant:"contained",color:"grey"},style:{color:f.getContrastText&&f.grey&&f.grey[300]?f.getContrastText(f.grey[300]):void 0}},{props:{variant:"outlined",color:"grey"},style:{color:null===(s=f.text)||void 0===s?void 0:s.primary,borderColor:"light"===f.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)","&.Mui-disabled":{border:"1px solid ".concat(null===(a=f.action)||void 0===a?void 0:a.disabledBackground)},"&:hover":{borderColor:"light"===f.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)",backgroundColor:(0,r.alpha)((null===(i=f.text)||void 0===i?void 0:i.primary)||"",(null===(l=f.action)||void 0===l?void 0:l.hoverOpacity)||.04)}}},{props:{variant:"text",color:"grey"},style:{color:null===(d=f.text)||void 0===d?void 0:d.primary,"&:hover":{backgroundColor:(0,r.alpha)((null===(u=f.text)||void 0===u?void 0:u.primary)||"",(null===(h=f.action)||void 0===h?void 0:h.hoverOpacity)||.04)}}}]}}})}},12539:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{static setLanguage(e){e&&(n.lang=e)}static extendTranslations(e,t){if(e.prefix){const t=e;if("string"===typeof t.prefix){const n=t.prefix;delete t.prefix,Object.keys(t).forEach((r=>{const o=r,s={},a=t[o];Object.keys(a).forEach((e=>{e&&a&&(e.startsWith(n)?s[e]=a[e]:s["".concat(n).concat(e)]=a[e])})),e[o]=s}))}else console.warn("Found prefix in translations, but it is not a string")}try{if(t){n.translations[t]||console.warn("Used unknown language: ".concat(t)),n.translations[t]=n.translations[t]||{};const r=n.translations[t];r&&Object.keys(e).forEach((n=>{r[n]?r[n]!==e[n]&&console.warn('Translation for word "'.concat(n,'" in "').concat(t,'" was ignored: existing = "').concat(r[n],'", new = ').concat(e[n])):r[n]=e[n]}))}else e.en&&e.de&&e.ru?Object.keys(e).forEach((t=>{const r=t;n.translations[r]=n.translations[r]||{};const o=n.translations[r];Object.assign(o,e[r])})):Object.keys(e).forEach((t=>{const r=e[t];Object.keys(r).forEach((e=>{const o=e,s=n.translations[o];s?s[t]?s[t]!==r[o]&&console.warn('Translation for word "'.concat(t,'" in "').concat(o,'" was ignored: existing = "').concat(s[t],'", new = ').concat(r[o])):s[t]=r[o]:console.warn("Used unknown language: ".concat(o))}))}))}catch(r){console.error("Cannot apply translations: ".concat(r))}}static setTranslations(e){e&&(n.translations=e)}static getLanguage(){return n.lang}static t(e){const t=n.translations[n.lang];if(t){const r=t[e];if(r)e=r;else if(n.unknownTranslations.includes(e)||(n.unknownTranslations.push(e),!n._disableWarning&&console.log("Translate: ".concat(e))),"en"!==n.lang&&n.translations.en){const t=n.translations.en[e];t&&(e=t)}}for(var r=arguments.length,o=new Array(r>1?r-1:0),s=1;s{n.startsWith(e)&&(t[n]=n.replace(e,""))})),console.log(JSON.stringify(t,null,2))):"object"===typeof e&&(n.unknownTranslations.forEach((n=>{e.test(n)&&(t[n]=n)})),console.log(JSON.stringify(t,null,2))):(n.unknownTranslations.forEach((e=>t[e]=e)),console.log(JSON.stringify(t,null,2)))}static disableWarning(e){n._disableWarning=!!e}}n.translations={},n.unknownTranslations=[],n.lang=window.sysLang||"en",n._disableWarning=!1,window.i18nShow=n.i18nShow,window.i18nDisableWarning=n.disableWarning,t.default=n},40626:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 512 512",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))},53905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 512 512",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"}))},68230:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 320 320",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("g",{fill:"currentColor"},o.default.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),o.default.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"248",cx:"160",fill:"none",strokeWidth:"15"}),o.default.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),o.default.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))},47478:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 24 24",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",stroke:"currentColor",d:"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"}))},3553:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 650 512",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"}))},80156:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 512 512",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"}))},97075:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 320 320",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("g",{fill:"currentColor"},o.default.createElement("rect",{rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor",fill:"none"}),o.default.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),o.default.createElement("line",{y2:"201.94531",x2:"159.5",y1:"46.94531",x1:"159.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),o.default.createElement("rect",{height:"27",width:"50",y:"140.83068",x:"133.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),o.default.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"251",cx:"241",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),o.default.createElement("line",{y2:"200.94531",x2:"240.5",y1:"45.94531",x1:"240.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),o.default.createElement("rect",{height:"27",width:"50",y:"78.7979",x:"214.5",strokeWidth:"15",stroke:"currentColor",fill:"#fff"}),o.default.createElement("ellipse",{stroke:"currentColor",ry:"26",rx:"26",cy:"252",cx:"84",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",fill:"#fff"}),o.default.createElement("line",{y2:"201.94531",x2:"83.5",y1:"46.94531",x1:"83.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"none"}),o.default.createElement("rect",{height:"27",width:"50",y:"79.7979",x:"57.5",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor",fill:"#fff"})))},46172:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512",onClick:t=>e.onClick&&e.onClick(t),width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}))},34070:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 512 512",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z"}),o.default.createElement("path",{fill:"currentColor",stroke:"null",d:"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z"}))},8225:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 486 486",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),xmlns:"http://www.w3.org/2000/svg",className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0"}),o.default.createElement("path",{fill:"currentColor",d:"m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0"}))},36198:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 512 512",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z"}))},47389:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 650 512",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("path",{fill:"currentColor",d:"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"}))},42204:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(53482));t.default=e=>o.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",onClick:t=>e.onClick&&e.onClick(t),viewBox:"0 0 320 320",width:e.width||("small"===e.fontSize?16:20),height:e.height||e.width||("small"===e.fontSize?16:20),className:e.className,style:e.style},o.default.createElement("rect",{fill:"none",rx:"32",height:"272",width:"267",y:"25",x:"25",strokeWidth:"15",stroke:"currentColor"}),o.default.createElement("ellipse",{fill:"none",ry:"54",rx:"54",cy:"160",cx:"160",fillOpacity:"null",strokeOpacity:"null",strokeWidth:"15",stroke:"currentColor"}))},7326:(e,t,n)=>{"use strict";n.r(t),n.d(t,{convertFromNode:()=>u,convertFromString:()=>h,default:()=>p});var r=n(53482),o=function(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,s=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=s.next()).done;)a.push(r.value)}catch(i){o={error:i}}finally{try{r&&!r.done&&(n=s.return)&&n.call(s)}finally{if(o)throw o.error}}return a},s=function(e){return e.split(/ ?; ?/).reduce((function(e,t){var n=o(t.split(/ ?: ?/),2),r=n[0],s=n[1];return r&&s&&(e[r.replace(/-(\w)/g,(function(e,t){return t.toUpperCase()}))]=Number.isNaN(Number(s))?s:Number(s)),e}),{})};var a=["br","col","colgroup","dl","hr","iframe","img","input","link","menuitem","meta","ol","param","select","table","tbody","tfoot","thead","tr","ul","wbr"],i={"accept-charset":"acceptCharset",acceptcharset:"acceptCharset",accesskey:"accessKey",allowfullscreen:"allowFullScreen",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",cellpadding:"cellPadding",cellspacing:"cellSpacing",charset:"charSet",class:"className",classid:"classID",classname:"className",colspan:"colSpan",contenteditable:"contentEditable",contextmenu:"contextMenu",controlslist:"controlsList",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",datetime:"dateTime",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",enctype:"encType",for:"htmlFor",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",innerhtml:"innerHTML",inputmode:"inputMode",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",marginwidth:"marginWidth",marginheight:"marginHeight",maxlength:"maxLength",mediagroup:"mediaGroup",minlength:"minLength",nomodule:"noModule",novalidate:"noValidate",playsinline:"playsInline",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rowspan:"rowSpan",spellcheck:"spellCheck",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",tabindex:"tabIndex",typemustmatch:"typeMustMatch",usemap:"useMap",accentheight:"accentHeight","accent-height":"accentHeight",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",arabicform:"arabicForm","arabic-form":"arabicForm",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",edgemode:"edgeMode",enablebackground:"enableBackground","enable-background":"enableBackground",externalresourcesrequired:"externalResourcesRequired",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",imagerendering:"imageRendering","image-rendering":"imageRendering",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",vmathematical:"vMathematical","v-mathematical":"vMathematical",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan",onblur:"onBlur",onchange:"onChange",onclick:"onClick",oncontextmenu:"onContextMenu",ondoubleclick:"onDoubleClick",ondrag:"onDrag",ondragend:"onDragEnd",ondragenter:"onDragEnter",ondragexit:"onDragExit",ondragleave:"onDragLeave",ondragover:"onDragOver",ondragstart:"onDragStart",ondrop:"onDrop",onerror:"onError",onfocus:"onFocus",oninput:"onInput",oninvalid:"onInvalid",onkeydown:"onKeyDown",onkeypress:"onKeyPress",onkeyup:"onKeyUp",onload:"onLoad",onmousedown:"onMouseDown",onmouseenter:"onMouseEnter",onmouseleave:"onMouseLeave",onmousemove:"onMouseMove",onmouseout:"onMouseOut",onmouseover:"onMouseOver",onmouseup:"onMouseUp",onscroll:"onScroll",onsubmit:"onSubmit",ontouchcancel:"onTouchCancel",ontouchend:"onTouchEnd",ontouchmove:"onTouchMove",ontouchstart:"onTouchStart",onwheel:"onWheel"},c=function(){return c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0)&&!(r=s.next()).done;)a.push(r.value)}catch(i){o={error:i}}finally{try{r&&!r.done&&(n=s.return)&&n.call(s)}finally{if(o)throw o.error}}return a},d=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,s=t.length;o0;--r)n+=t[Math.round(61*Math.random())];return n}(),"-").concat(b)),Array.isArray(p)&&p.forEach((function(t){t.condition(y,b,g)&&("function"===typeof t.pre&&((y=t.pre(y,b,g))instanceof Node||(y=e)),"function"===typeof t.post&&w.push(t.post(y,b,g)))})),w.length)return w;switch(y.nodeType){case 1:return r.createElement((o=y.nodeName,/[a-z]+[A-Z]+[a-z]+/.test(o)?o:o.toLowerCase()),function(e,t){var n={key:t};if(e instanceof Element){var r=e.getAttribute("class");r&&(n.className=r),d([],l(e.attributes),!1).forEach((function(e){switch(e.name){case"class":break;case"style":n[e.name]=s(e.value);break;case"allowfullscreen":case"allowpaymentrequest":case"async":case"autofocus":case"autoplay":case"checked":case"controls":case"default":case"defer":case"disabled":case"formnovalidate":case"hidden":case"ismap":case"itemscope":case"loop":case"multiple":case"muted":case"nomodule":case"novalidate":case"open":case"readonly":case"required":case"reversed":case"selected":case"typemustmatch":n[i[e.name]||e.name]=!0;break;default:n[i[e.name]||e.name]=e.value}}))}return n}(y,b),function(e,t,n){var r=d([],l(e),!1).map((function(e,r){return u(e,c(c({},n),{index:r,level:t+1}))})).filter(Boolean);return r.length?r:null}(y.childNodes,g,t));case 3:var S=(null===(n=y.nodeValue)||void 0===n?void 0:n.toString())||"";if(/^\s+$/.test(S)&&!/[\u00A0\u202F]/.test(S))return null;if(!y.parentNode)return S;var k=y.parentNode.nodeName.toLowerCase();return a.includes(k)?(/\S/.test(S)&&console.warn("A textNode is not allowed inside '".concat(k,"'. Your text \"").concat(S,'" will be ignored')),null):S;default:return null}}function h(e,t){if(void 0===t&&(t={}),!e||"string"!==typeof e)return null;var n=t.nodeOnly,r=void 0!==n&&n,o=t.selector,s=void 0===o?"body > *":o,a=t.type,i=void 0===a?"text/html":a;try{var c=(new DOMParser).parseFromString(e,i).querySelector(s);if(!(c instanceof Node))throw new TypeError("Error parsing input");return r?c:u(c,t)}catch(l){0}return null}function p(e,t){return void 0===t&&(t={}),"string"===typeof e?h(e,t):e instanceof Node?u(e,t):null}},82239:(e,t,n)=>{"use strict";var r,o=Object.create,s=Object.defineProperty,a=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,c=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,d=(e,t,n,r)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let o of i(t))l.call(e,o)||o===n||s(e,o,{get:()=>t[o],enumerable:!(r=a(t,o))||r.enumerable});return e},u=(e,t,n)=>(n=null!=e?o(c(e)):{},d(!t&&e&&e.__esModule?n:s(n,"default",{value:e,enumerable:!0}),e)),h=(e,t,n)=>(((e,t,n)=>{t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!==typeof t?t+"":t,n),n),p={};((e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})})(p,{cacheStore:()=>S,default:()=>x}),e.exports=(r=p,d(s({},"__esModule",{value:!0}),r));var m=u(n(53482)),f=u(n(7326)),_="react-inlinesvg",g={IDLE:"idle",LOADING:"loading",LOADED:"loaded",FAILED:"failed",READY:"ready",UNSUPPORTED:"unsupported"};function v(){return!("undefined"===typeof window||!window.document||!window.document.createElement)}function y(){return function(){if(!document)return!1;const e=document.createElement("div");e.innerHTML="";const t=e.firstChild;return!!t&&"http://www.w3.org/2000/svg"===t.namespaceURI}()&&"undefined"!==typeof window&&null!==window}async function b(e,t){const n=await fetch(e,t),r=n.headers.get("content-type"),[o]=(r||"").split(/ ?; ?/);if(n.status>299)throw new Error("Not found");if(!["image/svg+xml","text/plain"].some((e=>o.includes(e))))throw new Error("Content type isn't valid: ".concat(o));return n.text()}function w(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return new Promise((t=>{setTimeout(t,1e3*e)}))}var S,k=class{constructor(){h(this,"cacheApi"),h(this,"cacheStore"),h(this,"subscribers",[]),h(this,"isReady",!1),this.cacheStore=new Map;let e=_,t=!1;var n;v()&&(e=null!==(n=window.REACT_INLINESVG_CACHE_NAME)&&void 0!==n?n:_,t=!!window.REACT_INLINESVG_PERSISTENT_CACHE);t?caches.open(e).then((e=>{this.cacheApi=e,this.isReady=!0,this.subscribers.forEach((e=>e()))})):this.isReady=!0}onReady(e){this.isReady?e():this.subscribers.push(e)}async get(e,t){var n,r;return await(this.cacheApi?this.fetchAndAddToPersistentCache(e,t):this.fetchAndAddToInternalCache(e,t)),null!==(n=null===(r=this.cacheStore.get(e))||void 0===r?void 0:r.content)&&void 0!==n?n:""}set(e,t){this.cacheStore.set(e,t)}isCached(e){var t;return(null===(t=this.cacheStore.get(e))||void 0===t?void 0:t.status)===g.LOADED}async fetchAndAddToInternalCache(e,t){const n=this.cacheStore.get(e);if((null===n||void 0===n?void 0:n.status)!==g.LOADING){if(null===n||void 0===n||!n.content){this.cacheStore.set(e,{content:"",status:g.LOADING});try{const n=await b(e,t);this.cacheStore.set(e,{content:n,status:g.LOADED})}catch(r){throw this.cacheStore.set(e,{content:"",status:g.FAILED}),r}}}else await this.handleLoading(e,(async()=>{this.cacheStore.set(e,{content:"",status:g.IDLE}),await this.fetchAndAddToInternalCache(e,t)}))}async fetchAndAddToPersistentCache(e,t){var n;const r=this.cacheStore.get(e);if((null===r||void 0===r?void 0:r.status)===g.LOADED)return;if((null===r||void 0===r?void 0:r.status)===g.LOADING)return void await this.handleLoading(e,(async()=>{this.cacheStore.set(e,{content:"",status:g.IDLE}),await this.fetchAndAddToPersistentCache(e,t)}));this.cacheStore.set(e,{content:"",status:g.LOADING});const o=await(null===(n=this.cacheApi)||void 0===n?void 0:n.match(e));if(o){const t=await o.text();this.cacheStore.set(e,{content:t,status:g.LOADED})}else try{var s,a,i;await(null===(s=this.cacheApi)||void 0===s?void 0:s.add(new Request(e,t)));const n=await(null===(a=this.cacheApi)||void 0===a?void 0:a.match(e)),r=null!==(i=await(null===n||void 0===n?void 0:n.text()))&&void 0!==i?i:"";this.cacheStore.set(e,{content:r,status:g.LOADED})}catch(c){throw this.cacheStore.set(e,{content:"",status:g.FAILED}),c}}async handleLoading(e,t){let n=0;for(;(null===(r=this.cacheStore.get(e))||void 0===r?void 0:r.status)===g.LOADING&&n<10;){var r;await w(.1),n+=1}n>=10&&await t()}keys(){return[...this.cacheStore.keys()]}data(){return[...this.cacheStore.entries()].map((e=>{let[t,n]=e;return{[t]:n}}))}async delete(e){this.cacheApi&&await this.cacheApi.delete(e),this.cacheStore.delete(e)}async clear(){if(this.cacheApi){const e=await this.cacheApi.keys();for(const t of e)await this.cacheApi.delete(t)}this.cacheStore.clear()}},C=n(63674),E=class extends m.PureComponent{constructor(e){var t;super(e),t=this,h(this,"hash"),h(this,"isActive",!1),h(this,"isInitialized",!1),h(this,"fetchContent",(async()=>{const{fetchOptions:e,src:t}=this.props,n=await b(t,e);this.handleLoad(n)})),h(this,"handleError",(e=>{const{onError:t}=this.props,n="Browser does not support SVG"===e.message?g.UNSUPPORTED:g.FAILED;this.isActive&&this.setState({status:n},(()=>{"function"===typeof t&&t(e)}))})),h(this,"handleLoad",(function(e){let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t.isActive&&t.setState({content:e,isCached:n,status:g.LOADED},t.getElement)})),this.state={content:"",element:null,isCached:!!e.cacheRequests&&S.isCached(e.src),status:g.IDLE},this.hash=e.uniqueHash||function(e){const t="abcdefghijklmnopqrstuvwxyz",n="".concat(t).concat(t.toUpperCase()).concat("1234567890");let r="";for(let s=0;s{const{cacheRequests:e,fetchOptions:t,src:n}=this.props,r=n.match(/^data:image\/svg[^,]*?(;base64)?,(.*)/u);let o;if(r?o=r[1]?window.atob(r[2]):decodeURIComponent(r[2]):n.includes("{if(e.attributes&&e.attributes.length){const n=Object.values(e.attributes).map((e=>{const n=e,r=e.value.match(/url\((.*?)\)/);return r&&r[1]&&(n.value=e.value.replace(r[0],"url(".concat(t).concat(r[1],"__").concat(this.hash,")"))),n}));r.forEach((e=>{const t=n.find((t=>t.name===e));var r,s;t&&(r=e,s=t.value,!o.includes(r)||!s||s.includes("#"))&&(t.value="".concat(t.value,"__").concat(this.hash))}))}return e.children.length?this.updateSVGAttributes(e):e})),e):e}render(){const{element:e,status:t}=this.state,{children:n=null,innerRef:r,loader:o=null}=this.props,s=function(e){const t={};for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{n.current||(S.onReady((()=>{o(!0)})),n.current=!0)}),[]),r?(0,C.jsx)(E,{...e}):t}h(E,"defaultProps",{cacheRequests:!0,uniquifyIDs:!1})},76409:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Breadcrumbs:()=>nr,BrowserClient:()=>dn,BrowserProfilingIntegration:()=>Au,BrowserTracing:()=>Wd,Dedupe:()=>sr,Feedback:()=>rd,FunctionToString:()=>h,GlobalHandlers:()=>hr,HttpContext:()=>vr,Hub:()=>me.YZ,InboundFilters:()=>w,Integrations:()=>Ru,LinkedErrors:()=>wr,ModuleMetadata:()=>re,Replay:()=>jc,ReplayCanvas:()=>ul,SDK_VERSION:()=>Jt.M,SEMANTIC_ATTRIBUTE_SENTRY_OP:()=>ae,SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN:()=>ie,SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE:()=>se,SEMANTIC_ATTRIBUTE_SENTRY_SOURCE:()=>oe,Scope:()=>Ht.HG,TryCatch:()=>Er,WINDOW:()=>qt,addBreadcrumb:()=>a.ZQ,addEventProcessor:()=>xe,addGlobalEventProcessor:()=>Vt.lb,addIntegration:()=>i.Q8,addTracingExtensions:()=>yt,breadcrumbsIntegration:()=>tr,browserApiErrorsIntegration:()=>Cr,browserProfilingIntegration:()=>ju,browserTracingIntegration:()=>Vd,captureConsoleIntegration:()=>od.q,captureEvent:()=>a.r,captureException:()=>a.Cp,captureMessage:()=>a.wd,captureSession:()=>a.J5,captureUserFeedback:()=>Lr,chromeStackLineParser:()=>wn,close:()=>a.VN,configureScope:()=>a.PN,contextLinesIntegration:()=>sd.l$,continueTrace:()=>Ke,createTransport:()=>xt,createUserFeedbackEnvelope:()=>ln,debugIntegration:()=>ad._,dedupeIntegration:()=>id.sn,defaultIntegrations:()=>Dr,defaultRequestInstrumentationOptions:()=>Rd,defaultStackLineParsers:()=>In,defaultStackParser:()=>jn,endSession:()=>a.ky,eventFromException:()=>rn,eventFromMessage:()=>on,exceptionFromError:()=>Qt,extraErrorDataIntegration:()=>cd.X,extractTraceparentData:()=>Le,feedbackIntegration:()=>nd,flush:()=>a.bX,forceLoad:()=>Mr,functionToStringIntegration:()=>u,geckoStackLineParser:()=>Cn,getActiveSpan:()=>Ge,getActiveTransaction:()=>Fe,getClient:()=>a.KU,getCurrentHub:()=>me.BF,getCurrentScope:()=>a.o5,getDefaultIntegrations:()=>Ir,getHubFromCarrier:()=>me.Me,getReplay:()=>Mc,getSpanStatusFromHttpCode:()=>ot,globalHandlersIntegration:()=>ur,httpClientIntegration:()=>ld.c,httpContextIntegration:()=>gr,inboundFiltersIntegration:()=>b,init:()=>jr,instrumentOutgoingRequests:()=>Fd,isInitialized:()=>a.Dp,lastEventId:()=>a.Q,linkedErrorsIntegration:()=>br,makeBrowserOfflineTransport:()=>su,makeFetchTransport:()=>pn,makeMain:()=>me.gM,makeMultiplexedTransport:()=>Nt,makeXHRTransport:()=>fn,metrics:()=>Pt,moduleMetadataIntegration:()=>ne,onLoad:()=>Rr,onProfilingStartRouteTransaction:()=>Nu,opera10StackLineParser:()=>On,opera11StackLineParser:()=>Dn,parameterize:()=>Bt,replayCanvasIntegration:()=>dl,replayIntegration:()=>Ic,reportingObserverIntegration:()=>dd.n,rewriteFramesIntegration:()=>ud.D,sendFeedback:()=>Ml,sessionTimingIntegration:()=>hd.Z,setContext:()=>a.o,setCurrentClient:()=>Wt,setExtra:()=>a.l7,setExtras:()=>a.cx,setHttpStatus:()=>at,setMeasurement:()=>Ut,setTag:()=>a.NA,setTags:()=>a.Wt,setUser:()=>a.gV,showReportDialog:()=>Ar,spanStatusfromHttpCode:()=>st,startBrowserTracingNavigationSpan:()=>Gd,startBrowserTracingPageLoadSpan:()=>qd,startInactiveSpan:()=>qe,startSession:()=>a.J0,startSpan:()=>He,startSpanManual:()=>Ve,startTransaction:()=>a.nb,trace:()=>Je,winjsStackLineParser:()=>xn,withActiveSpan:()=>a.hb,withIsolationScope:()=>a.rB,withScope:()=>a.v4,wrap:()=>Fr});var r={};n.r(r),n.d(r,{FunctionToString:()=>h,InboundFilters:()=>w,LinkedErrors:()=>j});var o={};n.r(o),n.d(o,{Breadcrumbs:()=>nr,Dedupe:()=>sr,GlobalHandlers:()=>hr,HttpContext:()=>vr,LinkedErrors:()=>wr,TryCatch:()=>Er});var s=n(80210),a=n(38872),i=n(8577);let c;const l="FunctionToString",d=new WeakMap,u=(0,i._C)((()=>({name:l,setupOnce(){c=Function.prototype.toString;try{Function.prototype.toString=function(){const e=(0,s.sp)(this),t=d.has((0,a.KU)())&&void 0!==e?e:this;for(var n=arguments.length,r=new Array(n),o=0;o0&&void 0!==arguments[0]?arguments[0]:{};return{name:y,setupOnce(){},processEvent(t,n,r){const o=r.getOptions(),s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return{allowUrls:[...e.allowUrls||[],...t.allowUrls||[]],denyUrls:[...e.denyUrls||[],...t.denyUrls||[]],ignoreErrors:[...e.ignoreErrors||[],...t.ignoreErrors||[],...e.disableErrorDefaults?[]:g],ignoreTransactions:[...e.ignoreTransactions||[],...t.ignoreTransactions||[],...e.disableTransactionDefaults?[]:v],ignoreInternal:void 0===e.ignoreInternal||e.ignoreInternal}}(e,o);return function(e,t){if(t.ignoreInternal&&function(e){try{return"SentryError"===e.exception.values[0].type}catch(t){}return!1}(e))return _.T&&p.vF.warn("Event dropped due to being internal Sentry Error.\nEvent: ".concat((0,m.$X)(e))),!0;if(function(e,t){if(e.type||!t||!t.length)return!1;return function(e){const t=[];e.message&&t.push(e.message);let n;try{n=e.exception.values[e.exception.values.length-1]}catch(r){}n&&n.value&&(t.push(n.value),n.type&&t.push("".concat(n.type,": ").concat(n.value)));_.T&&0===t.length&&p.vF.error("Could not extract message for event ".concat((0,m.$X)(e)));return t}(e).some((e=>(0,f.Xr)(e,t)))}(e,t.ignoreErrors))return _.T&&p.vF.warn("Event dropped due to being matched by `ignoreErrors` option.\nEvent: ".concat((0,m.$X)(e))),!0;if(function(e,t){if("transaction"!==e.type||!t||!t.length)return!1;const n=e.transaction;return!!n&&(0,f.Xr)(n,t)}(e,t.ignoreTransactions))return _.T&&p.vF.warn("Event dropped due to being matched by `ignoreTransactions` option.\nEvent: ".concat((0,m.$X)(e))),!0;if(function(e,t){if(!t||!t.length)return!1;const n=S(e);return!!n&&(0,f.Xr)(n,t)}(e,t.denyUrls))return _.T&&p.vF.warn("Event dropped due to being matched by `denyUrls` option.\nEvent: ".concat((0,m.$X)(e),".\nUrl: ").concat(S(e))),!0;if(!function(e,t){if(!t||!t.length)return!0;const n=S(e);return!n||(0,f.Xr)(n,t)}(e,t.allowUrls))return _.T&&p.vF.warn("Event dropped due to not being matched by `allowUrls` option.\nEvent: ".concat((0,m.$X)(e),".\nUrl: ").concat(S(e))),!0;return!1}(t,s)?null:t}}})),w=(0,i.F)(y,b);function S(e){try{let n;try{n=e.exception.values[0].stacktrace.frames}catch(t){}return n?function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];for(let t=e.length-1;t>=0;t--){const n=e[t];if(n&&""!==n.filename&&"[native code]"!==n.filename)return n.filename||null}return null}(n):null}catch(n){return _.T&&p.vF.error("Cannot extract url for event ".concat((0,m.$X)(e))),null}}var k=n(38137);function C(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:250,r=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0,a=arguments.length>6?arguments[6]:void 0;if(!s.exception||!s.exception.values||!a||!(0,k.tH)(a.originalException,Error))return;const i=s.exception.values.length>0?s.exception.values[s.exception.values.length-1]:void 0;var c,l;i&&(s.exception.values=(c=E(e,t,o,a.originalException,r,s.exception.values,i,0),l=n,c.map((e=>(e.value&&(e.value=(0,f.xv)(e.value,l)),e)))))}function E(e,t,n,r,o,s,a,i){if(s.length>=n+1)return s;let c=[...s];if((0,k.tH)(r[o],Error)){x(a,i);const s=e(t,r[o]),l=c.length;T(s,o,l,i),c=E(e,t,n,r[o],o,[s,...c],s,l)}return Array.isArray(r.errors)&&r.errors.forEach(((r,s)=>{if((0,k.tH)(r,Error)){x(a,i);const l=e(t,r),d=c.length;T(l,"errors[".concat(s,"]"),d,i),c=E(e,t,n,r,o,[l,...c],l,d)}})),c}function x(e,t){e.mechanism=e.mechanism||{type:"generic",handled:!0},e.mechanism={...e.mechanism,..."AggregateError"===e.type&&{is_exception_group:!0},exception_id:t}}function T(e,t,n,r){e.mechanism=e.mechanism||{type:"generic",handled:!0},e.mechanism={...e.mechanism,type:"chained",source:t,exception_id:n,parent_id:r}}function O(e,t){return e(t.stack||"",1)}function N(e,t){const n={type:t.name||t.constructor.name,value:t.message},r=O(e,t);return r.length&&(n.stacktrace={frames:r}),n}const D="LinkedErrors",I=(0,i._C)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.limit||5,n=e.key||"cause";return{name:D,setupOnce(){},preprocessEvent(e,r,o){const s=o.getOptions();C(N,s.stackParser,s.maxValueLength,n,t,e,r)}}})),j=(0,i.F)(D,I),A=r;var M=n(70183);const R=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function F(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const{host:n,path:r,pass:o,port:s,projectId:a,protocol:i,publicKey:c}=e;return"".concat(i,"://").concat(c).concat(t&&o?":".concat(o):"")+"@".concat(n).concat(s?":".concat(s):"","/").concat(r?"".concat(r,"/"):r).concat(a)}function L(e){const t=R.exec(e);if(!t)return void(0,p.pq)((()=>{console.error("Invalid Sentry Dsn: ".concat(e))}));const[n,r,o="",s,a="",i]=t.slice(1);let c="",l=i;const d=l.split("/");if(d.length>1&&(c=d.slice(0,-1).join("/"),l=d.pop()),l){const e=l.match(/^\d+/);e&&(l=e[0])}return z({host:s,pass:o,path:c,projectId:l,port:a,protocol:n,publicKey:r})}function z(e){return{protocol:e.protocol,publicKey:e.publicKey||"",pass:e.pass||"",host:e.host,port:e.port||"",path:e.path||"",projectId:e.projectId}}function P(e){const t="string"===typeof e?L(e):z(e);if(t&&function(e){if(!M.T)return!0;const{port:t,projectId:n,protocol:r}=e;return!["protocol","publicKey","host","projectId"].find((t=>!e[t]&&(p.vF.error("Invalid Sentry Dsn: ".concat(t," missing")),!0)))&&(n.match(/^\d+$/)?function(e){return"http"===e||"https"===e}(r)?!t||!isNaN(parseInt(t,10))||(p.vF.error("Invalid Sentry Dsn: Invalid port ".concat(t)),!1):(p.vF.error("Invalid Sentry Dsn: Invalid protocol ".concat(r)),!1):(p.vF.error("Invalid Sentry Dsn: Invalid projectId ".concat(n)),!1))}(t))return t}var B=n(49816);function W(e){return[e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]]}function U(e,t){const[n,r]=e;return[n,[...r,t]]}function J(e,t){const n=e[1];for(const r of n){if(t(r,r[0].type))return!0}return!1}function H(e,t){return(t||new TextEncoder).encode(e)}function V(e,t){const[n,r]=e;let o=JSON.stringify(n);function s(e){"string"===typeof o?o="string"===typeof e?o+e:[H(o,t),e]:o.push("string"===typeof e?H(e,t):e)}for(const i of r){const[e,t]=i;if(s("\n".concat(JSON.stringify(e),"\n")),"string"===typeof t||t instanceof Uint8Array)s(t);else{let e;try{e=JSON.stringify(t)}catch(a){e=JSON.stringify((0,B.S8)(t))}s(e)}}return"string"===typeof o?o:function(e){const t=e.reduce(((e,t)=>e+t.length),0),n=new Uint8Array(t);let r=0;for(const o of e)n.set(o,r),r+=o.length;return n}(o)}function q(e,t){const n="string"===typeof e.data?H(e.data,t):e.data;return[(0,s.Ce)({type:"attachment",length:n.length,filename:e.filename,content_type:e.contentType,attachment_type:e.attachmentType}),n]}const G={session:"session",sessions:"session",attachment:"attachment",transaction:"transaction",event:"error",client_report:"internal",user_report:"default",profile:"profile",replay_event:"replay",replay_recording:"replay",check_in:"monitor",feedback:"feedback",span:"span",statsd:"metric_bucket"};function K(e){return G[e]}function Y(e){if(!e||!e.sdk)return;const{name:t,version:n}=e.sdk;return{name:t,version:n}}function Z(e,t,n,r){const o=e.sdkProcessingMetadata&&e.sdkProcessingMetadata.dynamicSamplingContext;return{event_id:e.event_id,sent_at:(new Date).toISOString(),...t&&{sdk:t},...!!n&&r&&{dsn:F(r)},...o&&{trace:(0,s.Ce)({...o})}}}var X=n(94794);const Q=new Map,$=new Set;function ee(e,t){return function(e){if(X.OW._sentryModuleMetadata)for(const t of Object.keys(X.OW._sentryModuleMetadata)){const n=X.OW._sentryModuleMetadata[t];if($.has(t))continue;$.add(t);const r=e(t);for(const e of r.reverse())if(e.filename){Q.set(e.filename,n);break}}}(e),Q.get(t)}const te="ModuleMetadata",ne=(0,i._C)((()=>({name:te,setupOnce(){},setup(e){"function"===typeof e.on&&e.on("beforeEnvelope",(e=>{J(e,((e,t)=>{if("event"===t){const t=Array.isArray(e)?e[1]:void 0;t&&(!function(e){try{e.exception.values.forEach((e=>{if(e.stacktrace)for(const t of e.stacktrace.frames||[])delete t.module_metadata}))}catch(t){}}(t),e[1]=t)}}))}))},processEvent:(e,t,n)=>(function(e,t){try{t.exception.values.forEach((t=>{if(t.stacktrace)for(const n of t.stacktrace.frames||[]){if(!n.filename)continue;const t=ee(e,n.filename);t&&(n.module_metadata=t)}}))}catch(n){}}(n.getOptions().stackParser,e),e)}))),re=(0,i.F)(te,ne),oe="sentry.source",se="sentry.sample_rate",ae="sentry.op",ie="sentry.origin";var ce=n(3505);class le extends Error{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"warn";super(e),this.message=e,this.name=new.target.prototype.constructor.name,Object.setPrototypeOf(this,new.target.prototype),this.logLevel=t}}const de="7";function ue(e){const t=e.protocol?"".concat(e.protocol,":"):"",n=e.port?":".concat(e.port):"";return"".concat(t,"//").concat(e.host).concat(n).concat(e.path?"/".concat(e.path):"","/api/")}function he(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n="string"===typeof t?t:t.tunnel,r="string"!==typeof t&&t._metadata?t._metadata.sdk:void 0;return n||"".concat(function(e){return"".concat(ue(e)).concat(e.projectId,"/envelope/")}(e),"?").concat(function(e,t){return(0,s.u4)({sentry_key:e.publicKey,sentry_version:de,...t&&{sentry_client:"".concat(t.name,"/").concat(t.version)}})}(e,r))}function pe(e,t,n,r){const o=Y(n),s=e.type&&"replay_event"!==e.type?e.type:"event";!function(e,t){t&&(e.sdk=e.sdk||{},e.sdk.name=e.sdk.name||t.name,e.sdk.version=e.sdk.version||t.version,e.sdk.integrations=[...e.sdk.integrations||[],...t.integrations||[]],e.sdk.packages=[...e.sdk.packages||[],...t.packages||[]])}(e,n&&n.sdk);const a=Z(e,o,r,t);delete e.sdkProcessingMetadata;return W(a,[[{type:s},e]])}var me=n(92952);function fe(e){return e.replace(/[^\w\-./]+/gi,"")}const _e=[["\n","\\n"],["\r","\\r"],["\t","\\t"],["\\","\\\\"],["|","\\u{7c}"],[",","\\u{2c}"]];function ge(e){return[...e].reduce(((e,t)=>e+function(e){for(const[t,n]of _e)if(e===t)return n;return e}(t)),"")}function ve(e,t,n,r){const o={sent_at:(new Date).toISOString()};n&&n.sdk&&(o.sdk={name:n.sdk.name,version:n.sdk.version}),r&&t&&(o.dsn=F(t));const s=function(e){const t=function(e){let t="";for(const n of e){const e=Object.entries(n.tags),r=e.length>0?"|#".concat(e.map((e=>{let[t,n]=e;return"".concat(t,":").concat(n)})).join(",")):"";t+="".concat(n.name,"@").concat(n.unit,":").concat(n.metric,"|").concat(n.metricType).concat(r,"|T").concat(n.timestamp,"\n")}return t}(e);return[{type:"statsd",length:t.length},t]}(e);return W(o,[s])}var ye=n(79391),be=n(20763),we=n(93848);const Se="Not capturing exception because it's already been captured.";class ke{constructor(e){if(this._options=e,this._integrations={},this._integrationsInitialized=!1,this._numProcessing=0,this._outcomes={},this._hooks={},this._eventProcessors=[],e.dsn?this._dsn=P(e.dsn):_.T&&p.vF.warn("No DSN provided, client will not send events."),this._dsn){const t=he(this._dsn,e);this._transport=e.transport({tunnel:this._options.tunnel,recordDroppedEvent:this.recordDroppedEvent.bind(this),...e.transportOptions,url:t})}}captureException(e,t,n){if((0,m.GR)(e))return void(_.T&&p.vF.log(Se));let r=t&&t.event_id;return this._process(this.eventFromException(e,t).then((e=>this._captureEvent(e,t,n))).then((e=>{r=e}))),r}captureMessage(e,t,n,r){let o=n&&n.event_id;const s=(0,k.NF)(e)?e:String(e),a=(0,k.sO)(e)?this.eventFromMessage(s,t,n):this.eventFromException(e,n);return this._process(a.then((e=>this._captureEvent(e,n,r))).then((e=>{o=e}))),o}captureEvent(e,t,n){if(t&&t.originalException&&(0,m.GR)(t.originalException))return void(_.T&&p.vF.log(Se));let r=t&&t.event_id;const o=(e.sdkProcessingMetadata||{}).capturedSpanScope;return this._process(this._captureEvent(e,t,o||n).then((e=>{r=e}))),r}captureSession(e){"string"!==typeof e.release?_.T&&p.vF.warn("Discarded session because of missing or non-string release"):(this.sendSession(e),(0,ye.qO)(e,{init:!1}))}getDsn(){return this._dsn}getOptions(){return this._options}getSdkMetadata(){return this._options._metadata}getTransport(){return this._transport}flush(e){const t=this._transport;return t?(this.metricsAggregator&&this.metricsAggregator.flush(),this._isClientDoneProcessing(e).then((n=>t.flush(e).then((e=>n&&e))))):(0,ce.XW)(!0)}close(e){return this.flush(e).then((e=>(this.getOptions().enabled=!1,this.metricsAggregator&&this.metricsAggregator.close(),e)))}getEventProcessors(){return this._eventProcessors}addEventProcessor(e){this._eventProcessors.push(e)}setupIntegrations(e){(e&&!this._integrationsInitialized||this._isEnabled()&&!this._integrationsInitialized)&&this._setupIntegrations()}init(){this._isEnabled()&&this._setupIntegrations()}getIntegrationById(e){return this.getIntegrationByName(e)}getIntegrationByName(e){return this._integrations[e]}getIntegration(e){try{return this._integrations[e.id]||null}catch(t){return _.T&&p.vF.warn("Cannot retrieve integration ".concat(e.id," from the current Client")),null}}addIntegration(e){const t=this._integrations[e.name];(0,i.qm)(this,e,this._integrations),t||(0,i.lc)(this,[e])}sendEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.emit("beforeSendEvent",e,t);let n=pe(e,this._dsn,this._options._metadata,this._options.tunnel);for(const o of t.attachments||[])n=U(n,q(o,this._options.transportOptions&&this._options.transportOptions.textEncoder));const r=this._sendEnvelope(n);r&&r.then((t=>this.emit("afterSendEvent",e,t)),null)}sendSession(e){const t=function(e,t,n,r){const o=Y(n);return W({sent_at:(new Date).toISOString(),...o&&{sdk:o},...!!r&&t&&{dsn:F(t)}},["aggregates"in e?[{type:"sessions"},e]:[{type:"session"},e.toJSON()]])}(e,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(t)}recordDroppedEvent(e,t,n){if(this._options.sendClientReports){const n="".concat(e,":").concat(t);_.T&&p.vF.log('Adding outcome: "'.concat(n,'"')),this._outcomes[n]=this._outcomes[n]+1||1}}captureAggregateMetrics(e){_.T&&p.vF.log("Flushing aggregated metrics, number of metrics: ".concat(e.length));const t=ve(e,this._dsn,this._options._metadata,this._options.tunnel);this._sendEnvelope(t)}on(e,t){this._hooks[e]||(this._hooks[e]=[]),this._hooks[e].push(t)}emit(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;re(...n)))}_setupIntegrations(){const{integrations:e}=this._options;this._integrations=(0,i.P$)(this,e),(0,i.lc)(this,e),this._integrationsInitialized=!0}_updateSessionFromEvent(e,t){let n=!1,r=!1;const o=t.exception&&t.exception.values;if(o){r=!0;for(const e of o){const t=e.mechanism;if(t&&!1===t.handled){n=!0;break}}}const s="ok"===e.status;(s&&0===e.errors||s&&n)&&((0,ye.qO)(e,{...n&&{status:"crashed"},errors:e.errors||Number(r||n)}),this.captureSession(e))}_isClientDoneProcessing(e){return new ce.T2((t=>{let n=0;const r=setInterval((()=>{0==this._numProcessing?(clearInterval(r),t(!0)):(n+=1,e&&n>=e&&(clearInterval(r),t(!1)))}),1)}))}_isEnabled(){return!1!==this.getOptions().enabled&&void 0!==this._transport}_prepareEvent(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:(0,me.rm)();const o=this.getOptions(),s=Object.keys(this._integrations);return!t.integrations&&s.length>0&&(t.integrations=s),this.emit("preprocessEvent",e,t),(0,we.mG)(o,e,t,n,this,r).then((e=>{if(null===e)return e;const t={...r.getPropagationContext(),...n?n.getPropagationContext():void 0};if(!(e.contexts&&e.contexts.trace)&&t){const{traceId:r,spanId:o,parentSpanId:s,dsc:a}=t;e.contexts={trace:{trace_id:r,span_id:o,parent_span_id:s},...e.contexts};const i=a||(0,be.l)(r,this,n);e.sdkProcessingMetadata={dynamicSamplingContext:i,...e.sdkProcessingMetadata}}return e}))}_captureEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return this._processEvent(e,t,n).then((e=>e.event_id),(e=>{if(_.T){const t=e;"log"===t.logLevel?p.vF.log(t.message):p.vF.warn(t)}}))}_processEvent(e,t,n){const r=this.getOptions(),{sampleRate:o}=r,s=Ee(e),a=Ce(e),i=e.type||"error",c="before send for type `".concat(i,"`");if(a&&"number"===typeof o&&Math.random()>o)return this.recordDroppedEvent("sample_rate","error",e),(0,ce.xg)(new le("Discarding event because it's not included in the random sample (sampling rate = ".concat(o,")"),"log"));const l="replay_event"===i?"replay":i,d=(e.sdkProcessingMetadata||{}).capturedSpanIsolationScope;return this._prepareEvent(e,t,n,d).then((n=>{if(null===n)throw this.recordDroppedEvent("event_processor",l,e),new le("An event processor returned `null`, will not send event.","log");if(t.data&&!0===t.data.__sentry__)return n;const o=function(e,t,n){const{beforeSend:r,beforeSendTransaction:o}=e;if(Ce(t)&&r)return r(t,n);if(Ee(t)&&o)return o(t,n);return t}(r,n,t);return function(e,t){const n="".concat(t," must return `null` or a valid event.");if((0,k.Qg)(e))return e.then((e=>{if(!(0,k.Qd)(e)&&null!==e)throw new le(n);return e}),(e=>{throw new le("".concat(t," rejected with ").concat(e))}));if(!(0,k.Qd)(e)&&null!==e)throw new le(n);return e}(o,c)})).then((r=>{if(null===r)throw this.recordDroppedEvent("before_send",l,e),new le("".concat(c," returned `null`, will not send event."),"log");const o=n&&n.getSession();!s&&o&&this._updateSessionFromEvent(o,r);const a=r.transaction_info;if(s&&a&&r.transaction!==e.transaction){const e="custom";r.transaction_info={...a,source:e}}return this.sendEvent(r,t),r})).then(null,(e=>{if(e instanceof le)throw e;throw this.captureException(e,{data:{__sentry__:!0},originalException:e}),new le("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: ".concat(e))}))}_process(e){this._numProcessing++,e.then((e=>(this._numProcessing--,e)),(e=>(this._numProcessing--,e)))}_sendEnvelope(e){if(this.emit("beforeEnvelope",e),this._isEnabled()&&this._transport)return this._transport.send(e).then(null,(e=>{_.T&&p.vF.error("Error while sending event:",e)}));_.T&&p.vF.error("Transport disabled")}_clearOutcomes(){const e=this._outcomes;return this._outcomes={},Object.keys(e).map((t=>{const[n,r]=t.split(":");return{reason:n,category:r,quantity:e[t]}}))}}function Ce(e){return void 0===e.type}function Ee(e){return"transaction"===e.type}function xe(e){const t=(0,a.KU)();t&&t.addEventProcessor&&t.addEventProcessor(e)}var Te=n(92396),Oe=n(18571);let Ne=null;function De(e){const t="error";(0,Oe.s5)(t,e),(0,Oe.AS)(t,Ie)}function Ie(){Ne=X.OW.onerror,X.OW.onerror=function(e,t,n,r,o){const s={column:r,error:o,line:n,msg:e,url:t};return(0,Oe.aj)("error",s),!(!Ne||Ne.__SENTRY_LOADER__)&&Ne.apply(this,arguments)},X.OW.onerror.__SENTRY_INSTRUMENTED__=!0}let je=null;function Ae(e){const t="unhandledrejection";(0,Oe.s5)(t,e),(0,Oe.AS)(t,Me)}function Me(){je=X.OW.onunhandledrejection,X.OW.onunhandledrejection=function(e){const t=e;return(0,Oe.aj)("unhandledrejection",t),!(je&&!je.__SENTRY_LOADER__)||je.apply(this,arguments)},X.OW.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}var Re=n(69551);function Fe(e){return(e||(0,me.BF)()).getScope().getTransaction()}const Le=Re.nc;let ze=!1;function Pe(){const e=Fe();if(e){const t="internal_error";_.T&&p.vF.log("[Tracing] Transaction: ".concat(t," -> Global error occured")),e.setStatus(t)}}Pe.tag="sentry_tracingErrorCallback";var Be=n(81e3);function We(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>{};try{n=e()}catch(o){throw t(o),r(),o}return function(e,t,n){if((0,k.Qg)(e))return e.then((e=>(n(),e)),(e=>{throw t(e),n(),e}));return n(),e}(n,t,r)}function Ue(e){if("boolean"===typeof __SENTRY_TRACING__&&!__SENTRY_TRACING__)return!1;const t=(0,a.KU)(),n=e||t&&t.getOptions();return!!n&&(n.enableTracing||"tracesSampleRate"in n||"tracesSampler"in n)}function Je(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>{};const o=(0,me.BF)(),s=(0,a.o5)(),i=s.getSpan(),c=Ze(e),l=Ye(o,{parentSpan:i,spanContext:c,forceTransaction:!1,scope:s});return s.setSpan(l),We((()=>t(l)),(e=>{l&&l.setStatus("internal_error"),n(e,l)}),(()=>{l&&l.end(),s.setSpan(i),r()}))}function He(e,t){const n=Ze(e);return(0,me.fx)((()=>(0,a.v4)(e.scope,(r=>{const o=(0,me.BF)(),s=r.getSpan(),a=e.onlyIfParent&&!s?void 0:Ye(o,{parentSpan:s,spanContext:n,forceTransaction:e.forceTransaction,scope:r});return We((()=>t(a)),(()=>{if(a){const{status:e}=(0,Te.et)(a);e&&"ok"!==e||a.setStatus("internal_error")}}),(()=>a&&a.end()))}))))}function Ve(e,t){const n=Ze(e);return(0,me.fx)((()=>(0,a.v4)(e.scope,(r=>{const o=(0,me.BF)(),s=r.getSpan(),a=e.onlyIfParent&&!s?void 0:Ye(o,{parentSpan:s,spanContext:n,forceTransaction:e.forceTransaction,scope:r});function i(){a&&a.end()}return We((()=>t(a,i)),(()=>{if(a&&a.isRecording()){const{status:e}=(0,Te.et)(a);e&&"ok"!==e||a.setStatus("internal_error")}}))}))))}function qe(e){if(!Ue())return;const t=Ze(e),n=(0,me.BF)(),r=e.scope?e.scope.getSpan():Ge();if(e.onlyIfParent&&!r)return;const o=(e.scope||(0,a.o5)()).clone();return Ye(n,{parentSpan:r,spanContext:t,forceTransaction:e.forceTransaction,scope:o})}function Ge(){return(0,a.o5)().getSpan()}const Ke=(e,t)=>{let{sentryTrace:n,baggage:r}=e;const o=(0,a.o5)(),{traceparentData:i,dynamicSamplingContext:c,propagationContext:l}=(0,Re.E0)(n,r);o.setPropagationContext(l),_.T&&i&&p.vF.log("[Tracing] Continuing trace ".concat(i.traceId,"."));const d={...i,metadata:(0,s.Ce)({dynamicSamplingContext:c})};return t?(0,me.fx)((()=>t(d))):d};function Ye(e,t){let{parentSpan:n,spanContext:r,forceTransaction:o,scope:a}=t;if(!Ue())return;const i=(0,me.rm)();let c;if(n&&!o)c=n.startChild(r);else if(n){const t=(0,be.k)(n),{traceId:o,spanId:s}=n.spanContext(),a=(0,Te.pK)(n);c=e.startTransaction({traceId:o,parentSpanId:s,parentSampled:a,...r,metadata:{dynamicSamplingContext:t,...r.metadata}})}else{const{traceId:t,dsc:n,parentSpanId:o,sampled:s}={...i.getPropagationContext(),...a.getPropagationContext()};c=e.startTransaction({traceId:t,parentSpanId:o,parentSampled:s,...r,metadata:{dynamicSamplingContext:n,...r.metadata}})}return a.setSpan(c),function(e,t,n){e&&((0,s.my)(e,Qe,n),(0,s.my)(e,Xe,t))}(c,a,i),c}function Ze(e){if(e.startTime){const t={...e};return t.startTimestamp=(0,Te.cI)(e.startTime),delete t.startTime,t}return e}const Xe="_sentryScope",Qe="_sentryIsolationScope";let $e;function et(e){return $e?$e.get(e):void 0}function tt(e){const t=et(e);if(!t)return;const n={};for(const[,[r,o]]of t)n[r]||(n[r]=[]),n[r].push((0,s.Ce)(o));return n}var nt,rt=n(3445);function ot(e){if(e<400&&e>=100)return"ok";if(e>=400&&e<500)switch(e){case 401:return"unauthenticated";case 403:return"permission_denied";case 404:return"not_found";case 409:return"already_exists";case 413:return"failed_precondition";case 429:return"resource_exhausted";default:return"invalid_argument"}if(e>=500&&e<600)switch(e){case 501:return"unimplemented";case 503:return"unavailable";case 504:return"deadline_exceeded";default:return"internal_error"}return"unknown_error"}!function(e){e.Ok="ok";e.DeadlineExceeded="deadline_exceeded";e.Unauthenticated="unauthenticated";e.PermissionDenied="permission_denied";e.NotFound="not_found";e.ResourceExhausted="resource_exhausted";e.InvalidArgument="invalid_argument";e.Unimplemented="unimplemented";e.Unavailable="unavailable";e.InternalError="internal_error";e.UnknownError="unknown_error";e.Cancelled="cancelled";e.AlreadyExists="already_exists";e.FailedPrecondition="failed_precondition";e.Aborted="aborted";e.OutOfRange="out_of_range";e.DataLoss="data_loss"}(nt||(nt={}));const st=ot;function at(e,t){e.setTag("http.status_code",String(t)),e.setData("http.response.status_code",t);const n=ot(t);"unknown_error"!==n&&e.setStatus(n)}class it{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;this._maxlen=e,this.spans=[]}add(e){this.spans.length>this._maxlen?e.spanRecorder=void 0:this.spans.push(e)}}class ct{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._traceId=e.traceId||(0,m.eJ)(),this._spanId=e.spanId||(0,m.eJ)().substring(16),this._startTime=e.startTimestamp||(0,Be.zf)(),this.tags=e.tags?{...e.tags}:{},this.data=e.data?{...e.data}:{},this.instrumenter=e.instrumenter||"sentry",this._attributes={},this.setAttributes({[ie]:e.origin||"manual",[ae]:e.op,...e.attributes}),this._name=e.name||e.description,e.parentSpanId&&(this._parentSpanId=e.parentSpanId),"sampled"in e&&(this._sampled=e.sampled),e.status&&(this._status=e.status),e.endTimestamp&&(this._endTime=e.endTimestamp),void 0!==e.exclusiveTime&&(this._exclusiveTime=e.exclusiveTime),this._measurements=e.measurements?{...e.measurements}:{}}get name(){return this._name||""}set name(e){this.updateName(e)}get description(){return this._name}set description(e){this._name=e}get traceId(){return this._traceId}set traceId(e){this._traceId=e}get spanId(){return this._spanId}set spanId(e){this._spanId=e}set parentSpanId(e){this._parentSpanId=e}get parentSpanId(){return this._parentSpanId}get sampled(){return this._sampled}set sampled(e){this._sampled=e}get attributes(){return this._attributes}set attributes(e){this._attributes=e}get startTimestamp(){return this._startTime}set startTimestamp(e){this._startTime=e}get endTimestamp(){return this._endTime}set endTimestamp(e){this._endTime=e}get status(){return this._status}set status(e){this._status=e}get op(){return this._attributes[ae]}set op(e){this.setAttribute(ae,e)}get origin(){return this._attributes[ie]}set origin(e){this.setAttribute(ie,e)}spanContext(){const{_spanId:e,_traceId:t,_sampled:n}=this;return{spanId:e,traceId:t,traceFlags:n?Te.aO:Te.CC}}startChild(e){const t=new ct({...e,parentSpanId:this._spanId,sampled:this._sampled,traceId:this._traceId});t.spanRecorder=this.spanRecorder,t.spanRecorder&&t.spanRecorder.add(t);const n=(0,rt.z)(this);if(t.transaction=n,_.T&&n){const r=e&&e.op||"< unknown op >",o=(0,Te.et)(t).description||"< unknown name >",s=n.spanContext().spanId,a="[Tracing] Starting '".concat(r,"' span on transaction '").concat(o,"' (").concat(s,").");p.vF.log(a),this._logMessage=a}return t}setTag(e,t){return this.tags={...this.tags,[e]:t},this}setData(e,t){return this.data={...this.data,[e]:t},this}setAttribute(e,t){void 0===t?delete this._attributes[e]:this._attributes[e]=t}setAttributes(e){Object.keys(e).forEach((t=>this.setAttribute(t,e[t])))}setStatus(e){return this._status=e,this}setHttpStatus(e){return at(this,e),this}setName(e){this.updateName(e)}updateName(e){return this._name=e,this}isSuccess(){return"ok"===this._status}finish(e){return this.end(e)}end(e){if(this._endTime)return;const t=(0,rt.z)(this);if(_.T&&t&&t.spanContext().spanId!==this._spanId){const e=this._logMessage;e&&p.vF.log(e.replace("Starting","Finishing"))}this._endTime=(0,Te.cI)(e)}toTraceparent(){return(0,Te.Qh)(this)}toContext(){return(0,s.Ce)({data:this._getData(),description:this._name,endTimestamp:this._endTime,op:this.op,parentSpanId:this._parentSpanId,sampled:this._sampled,spanId:this._spanId,startTimestamp:this._startTime,status:this._status,tags:this.tags,traceId:this._traceId})}updateWithContext(e){return this.data=e.data||{},this._name=e.name||e.description,this._endTime=e.endTimestamp,this.op=e.op,this._parentSpanId=e.parentSpanId,this._sampled=e.sampled,this._spanId=e.spanId||this._spanId,this._startTime=e.startTimestamp||this._startTime,this._status=e.status,this.tags=e.tags||{},this._traceId=e.traceId||this._traceId,this}getTraceContext(){return(0,Te.kX)(this)}getSpanJSON(){return(0,s.Ce)({data:this._getData(),description:this._name,op:this._attributes[ae],parent_span_id:this._parentSpanId,span_id:this._spanId,start_timestamp:this._startTime,status:this._status,tags:Object.keys(this.tags).length>0?this.tags:void 0,timestamp:this._endTime,trace_id:this._traceId,origin:this._attributes[ie],_metrics_summary:tt(this),profile_id:this._attributes.profile_id,exclusive_time:this._exclusiveTime,measurements:Object.keys(this._measurements).length>0?this._measurements:void 0})}isRecording(){return!this._endTime&&!!this._sampled}toJSON(){return this.getSpanJSON()}_getData(){const{data:e,_attributes:t}=this,n=Object.keys(e).length>0,r=Object.keys(t).length>0;if(n||r)return n&&r?{...e,...t}:n?e:t}}class lt extends ct{constructor(e,t){super(e),this._contexts={},this._hub=t||(0,me.BF)(),this._name=e.name||"",this._metadata={...e.metadata},this._trimEnd=e.trimEnd,this.transaction=this;const n=this._metadata.dynamicSamplingContext;n&&(this._frozenDynamicSamplingContext={...n})}get name(){return this._name}set name(e){this.setName(e)}get metadata(){return{source:"custom",spanMetadata:{},...this._metadata,...this._attributes[oe]&&{source:this._attributes[oe]},...this._attributes[se]&&{sampleRate:this._attributes[se]}}}set metadata(e){this._metadata=e}setName(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"custom";this._name=e,this.setAttribute(oe,t)}updateName(e){return this._name=e,this}initSpanRecorder(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;this.spanRecorder||(this.spanRecorder=new it(e)),this.spanRecorder.add(this)}setContext(e,t){null===t?delete this._contexts[e]:this._contexts[e]=t}setMeasurement(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";this._measurements[e]={value:t,unit:n}}setMetadata(e){this._metadata={...this._metadata,...e}}end(e){const t=(0,Te.cI)(e),n=this._finishTransaction(t);if(n)return this._hub.captureEvent(n)}toContext(){const e=super.toContext();return(0,s.Ce)({...e,name:this._name,trimEnd:this._trimEnd})}updateWithContext(e){return super.updateWithContext(e),this._name=e.name||"",this._trimEnd=e.trimEnd,this}getDynamicSamplingContext(){return(0,be.k)(this)}setHub(e){this._hub=e}getProfileId(){if(void 0!==this._contexts&&void 0!==this._contexts.profile)return this._contexts.profile.profile_id}_finishTransaction(e){if(void 0!==this._endTime)return;this._name||(_.T&&p.vF.warn("Transaction has no name, falling back to ``."),this._name=""),super.end(e);const t=this._hub.getClient();if(t&&t.emit&&t.emit("finishTransaction",this),!0!==this._sampled)return _.T&&p.vF.log("[Tracing] Discarding transaction because its trace was not chosen to be sampled."),void(t&&t.recordDroppedEvent("sample_rate","transaction"));const n=this.spanRecorder?this.spanRecorder.spans.filter((e=>e!==this&&(0,Te.et)(e).timestamp)):[];if(this._trimEnd&&n.length>0){const e=n.map((e=>(0,Te.et)(e).timestamp)).filter(Boolean);this._endTime=e.reduce(((e,t)=>e>t?e:t))}const{scope:r,isolationScope:o}={scope:(a=this)[Xe],isolationScope:a[Qe]};var a;const{metadata:i}=this,{source:c}=i,l={contexts:{...this._contexts,trace:(0,Te.kX)(this)},spans:n,start_timestamp:this._startTime,tags:this.tags,timestamp:this._endTime,transaction:this._name,type:"transaction",sdkProcessingMetadata:{...i,capturedSpanScope:r,capturedSpanIsolationScope:o,...(0,s.Ce)({dynamicSamplingContext:(0,be.k)(this)})},_metrics_summary:tt(this),...c&&{transaction_info:{source:c}}};return Object.keys(this._measurements).length>0&&(_.T&&p.vF.log("[Measurements] Adding measurements to transaction",JSON.stringify(this._measurements,void 0,2)),l.measurements=this._measurements),_.T&&p.vF.log("[Tracing] Finishing ".concat(this.op," transaction: ").concat(this._name,".")),l}}const dt={idleTimeout:1e3,finalTimeout:3e4,heartbeatInterval:5e3},ut=["heartbeatFailed","idleTimeout","documentHidden","finalTimeout","externalFinish","cancelled"];class ht extends it{constructor(e,t,n,r){super(r),this._pushActivity=e,this._popActivity=t,this.transactionSpanId=n}add(e){var t=this;if(e.spanContext().spanId!==this.transactionSpanId){const n=e.end;e.end=function(){t._popActivity(e.spanContext().spanId);for(var r=arguments.length,o=new Array(r),s=0;s2&&void 0!==arguments[2]?arguments[2]:dt.idleTimeout,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:dt.finalTimeout,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:dt.heartbeatInterval,s=arguments.length>5&&void 0!==arguments[5]&&arguments[5],a=arguments.length>6&&void 0!==arguments[6]&&arguments[6];super(e,t),this._idleHub=t,this._idleTimeout=n,this._finalTimeout=r,this._heartbeatInterval=o,this._onScope=s,this.activities={},this._heartbeatCounter=0,this._finished=!1,this._idleTimeoutCanceledPermanently=!1,this._beforeFinishCallbacks=[],this._finishReason=ut[4],this._autoFinishAllowed=!a,s&&(_.T&&p.vF.log("Setting idle transaction on scope. Span ID: ".concat(this.spanContext().spanId)),t.getScope().setSpan(this)),a||this._restartIdleTimeout(),setTimeout((()=>{this._finished||(this.setStatus("deadline_exceeded"),this._finishReason=ut[3],this.end())}),this._finalTimeout)}end(e){const t=(0,Te.cI)(e);if(this._finished=!0,this.activities={},"ui.action.click"===this.op&&this.setAttribute("finishReason",this._finishReason),this.spanRecorder){_.T&&p.vF.log("[Tracing] finishing IdleTransaction",new Date(1e3*t).toISOString(),this.op);for(const e of this._beforeFinishCallbacks)e(this,t);this.spanRecorder.spans=this.spanRecorder.spans.filter((e=>{if(e.spanContext().spanId===this.spanContext().spanId)return!0;(0,Te.et)(e).timestamp||(e.setStatus("cancelled"),e.end(t),_.T&&p.vF.log("[Tracing] cancelling span since transaction ended early",JSON.stringify(e,void 0,2)));const{start_timestamp:n,timestamp:r}=(0,Te.et)(e),o=n&&n{this._finished||this._pushActivity(e)},n=e=>{this._finished||this._popActivity(e)};this.spanRecorder=new ht(t,n,this.spanContext().spanId,e),_.T&&p.vF.log("Starting heartbeat"),this._pingHeartbeat()}this.spanRecorder.add(this)}cancelIdleTimeout(e){let{restartOnChildSpanChange:t}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{restartOnChildSpanChange:!0};this._idleTimeoutCanceledPermanently=!1===t,this._idleTimeoutID&&(clearTimeout(this._idleTimeoutID),this._idleTimeoutID=void 0,0===Object.keys(this.activities).length&&this._idleTimeoutCanceledPermanently&&(this._finishReason=ut[5],this.end(e)))}setFinishReason(e){this._finishReason=e}sendAutoFinishSignal(){this._autoFinishAllowed||(_.T&&p.vF.log("[Tracing] Received finish signal for idle transaction."),this._restartIdleTimeout(),this._autoFinishAllowed=!0)}_restartIdleTimeout(e){this.cancelIdleTimeout(),this._idleTimeoutID=setTimeout((()=>{this._finished||0!==Object.keys(this.activities).length||(this._finishReason=ut[1],this.end(e))}),this._idleTimeout)}_pushActivity(e){this.cancelIdleTimeout(void 0,{restartOnChildSpanChange:!this._idleTimeoutCanceledPermanently}),_.T&&p.vF.log("[Tracing] pushActivity: ".concat(e)),this.activities[e]=!0,_.T&&p.vF.log("[Tracing] new activities count",Object.keys(this.activities).length)}_popActivity(e){if(this.activities[e]&&(_.T&&p.vF.log("[Tracing] popActivity ".concat(e)),delete this.activities[e],_.T&&p.vF.log("[Tracing] new activities count",Object.keys(this.activities).length)),0===Object.keys(this.activities).length){const e=(0,Be.zf)();this._idleTimeoutCanceledPermanently?this._autoFinishAllowed&&(this._finishReason=ut[5],this.end(e)):this._restartIdleTimeout(e+this._idleTimeout/1e3)}}_beat(){if(this._finished)return;const e=Object.keys(this.activities).join("");e===this._prevHeartbeatString?this._heartbeatCounter++:this._heartbeatCounter=1,this._prevHeartbeatString=e,this._heartbeatCounter>=3?this._autoFinishAllowed&&(_.T&&p.vF.log("[Tracing] Transaction finished because of no change for 3 heart beats"),this.setStatus("deadline_exceeded"),this._finishReason=ut[0],this.end()):this._pingHeartbeat()}_pingHeartbeat(){_.T&&p.vF.log("pinging Heartbeat -> current counter: ".concat(this._heartbeatCounter)),setTimeout((()=>{this._beat()}),this._heartbeatInterval)}}function mt(e,t,n){if(!Ue(t))return e.sampled=!1,e;if(void 0!==e.sampled)return e.setAttribute(se,Number(e.sampled)),e;let r;return"function"===typeof t.tracesSampler?(r=t.tracesSampler(n),e.setAttribute(se,Number(r))):void 0!==n.parentSampled?r=n.parentSampled:"undefined"!==typeof t.tracesSampleRate?(r=t.tracesSampleRate,e.setAttribute(se,Number(r))):(r=1,e.setAttribute(se,r)),ft(r)?r?(e.sampled=Math.random()1)||(_.T&&p.vF.warn("[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ".concat(e,".")),!1)}function _t(){const e=this.getScope().getSpan();return e?{"sentry-trace":(0,Te.Qh)(e)}:{}}function gt(e,t){const n=this.getClient(),r=n&&n.getOptions()||{},o=r.instrumenter||"sentry",s=e.instrumenter||"sentry";o!==s&&(_.T&&p.vF.error("A transaction was started with instrumenter=`".concat(s,"`, but the SDK is configured with the `").concat(o,"` instrumenter.\nThe transaction will not be sampled. Please use the ").concat(o," instrumentation to start transactions.")),e.sampled=!1);let a=new lt(e,this);return a=mt(a,r,{name:e.name,parentSampled:e.parentSampled,transactionContext:e,attributes:{...e.data,...e.attributes},...t}),a.isRecording()&&a.initSpanRecorder(r._experiments&&r._experiments.maxSpans),n&&n.emit&&n.emit("startTransaction",a),a}function vt(e,t,n,r,o,s,a){let i=arguments.length>7&&void 0!==arguments[7]&&arguments[7];const c=e.getClient(),l=c&&c.getOptions()||{};let d=new pt(t,e,n,r,a,o,i);return d=mt(d,l,{name:t.name,parentSampled:t.parentSampled,transactionContext:t,attributes:{...t.data,...t.attributes},...s}),d.isRecording()&&d.initSpanRecorder(l._experiments&&l._experiments.maxSpans),c&&c.emit&&c.emit("startTransaction",d),d}function yt(){const e=(0,me.EU)();e.__SENTRY__&&(e.__SENTRY__.extensions=e.__SENTRY__.extensions||{},e.__SENTRY__.extensions.startTransaction||(e.__SENTRY__.extensions.startTransaction=gt),e.__SENTRY__.extensions.traceHeaders||(e.__SENTRY__.extensions.traceHeaders=_t),ze||(ze=!0,De(Pe),Ae(Pe)))}function bt(e){const t=[];function n(e){return t.splice(t.indexOf(e),1)[0]}return{$:t,add:function(r){if(!(void 0===e||t.lengthn(o))).then(null,(()=>n(o).then(null,(()=>{})))),o},drain:function(e){return new ce.T2(((n,r)=>{let o=t.length;if(!o)return n(!0);const s=setTimeout((()=>{e&&e>0&&n(!1)}),e);t.forEach((e=>{(0,ce.XW)(e).then((()=>{--o||(clearTimeout(s),n(!0))}),r)}))}))}}}const wt=6e4;function St(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();const n=parseInt("".concat(e),10);if(!isNaN(n))return 1e3*n;const r=Date.parse("".concat(e));return isNaN(r)?wt:r-t}function kt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now();return function(e,t){return e[t]||e.all||0}(e,t)>n}function Ct(e,t){let{statusCode:n,headers:r}=t,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Date.now();const s={...e},a=r&&r["x-sentry-rate-limits"],i=r&&r["retry-after"];if(a)for(const c of a.trim().split(",")){const[e,t,,,n]=c.split(":",5),r=parseInt(e,10),a=1e3*(isNaN(r)?60:r);if(t)for(const i of t.split(";"))"metric_bucket"===i&&n&&!n.split(";").includes("custom")||(s[i]=o+a);else s.all=o+a}else i?s.all=o+St(i,o):429===n&&(s.all=o+6e4);return s}const Et=30;function xt(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:bt(e.bufferSize||Et),r={};function o(o){const s=[];if(J(o,((t,n)=>{const o=K(n);if(kt(r,o)){const r=Tt(t,n);e.recordDroppedEvent("ratelimit_backoff",o,r)}else s.push(t)})),0===s.length)return(0,ce.XW)();const a=W(o[0],s),i=t=>{J(a,((n,r)=>{const o=Tt(n,r);e.recordDroppedEvent(t,K(r),o)}))};return n.add((()=>t({body:V(a,e.textEncoder)}).then((e=>(void 0!==e.statusCode&&(e.statusCode<200||e.statusCode>=300)&&_.T&&p.vF.warn("Sentry responded with status code ".concat(e.statusCode," to sent event.")),r=Ct(r,e),e)),(e=>{throw i("network_error"),e})))).then((e=>e),(e=>{if(e instanceof le)return _.T&&p.vF.error("Skipped sending event because buffer is full."),i("queue_overflow"),(0,ce.XW)();throw e}))}return o.__sentry__baseTransport__=!0,{send:o,flush:e=>n.drain(e)}}function Tt(e,t){if("event"===t||"transaction"===t)return Array.isArray(e)?e[1]:void 0}function Ot(e,t){let n;return J(e,((e,r)=>(t.includes(r)&&(n=Array.isArray(e)?e[1]:void 0),!!n))),n}function Nt(e,t){return n=>{const r=e(n),o=new Map;function s(t,r){const s=r?"".concat(t,":").concat(r):t;let a=o.get(s);if(!a){const i=L(t);if(!i)return;const c=he(i,n.tunnel);a=r?function(e,t){return n=>{const r=e(n);return{...r,send:async e=>{const n=Ot(e,["event","transaction","profile","replay_event"]);return n&&(n.release=t),r.send(e)}}}}(e,r)({...n,url:c}):e({...n,url:c}),o.set(s,a)}return[t,a]}return{send:async function(e){const n=t({envelope:e,getEvent:function(t){const n=t&&t.length?t:["event"];return Ot(e,n)}}).map((e=>"string"===typeof e?s(e,void 0):s(e.dsn,e.release))).filter((e=>!!e));0===n.length&&n.push(["",r]);return(await Promise.all(n.map((t=>{let[n,r]=t;return r.send(function(e,t){return W(t?{...e[0],dsn:t}:e[0],e[1])}(e,n))}))))[0]},flush:async function(e){const t=[await r.flush(e)];for(const[,n]of o)t.push(await n.flush(e));return t.every((e=>e))}}}}const Dt="c",It="g",jt="s",At="d";const Mt={[Dt]:class{constructor(e){this._value=e}get weight(){return 1}add(e){this._value+=e}toString(){return"".concat(this._value)}},[It]:class{constructor(e){this._last=e,this._min=e,this._max=e,this._sum=e,this._count=1}get weight(){return 5}add(e){this._last=e,ethis._max&&(this._max=e),this._sum+=e,this._count++}toString(){return"".concat(this._last,":").concat(this._min,":").concat(this._max,":").concat(this._sum,":").concat(this._count)}},[At]:class{constructor(e){this._value=[e]}get weight(){return this._value.length}add(e){this._value.push(e)}toString(){return this._value.join(":")}},[jt]:class{constructor(e){this.first=e,this._value=new Set([e])}get weight(){return this._value.size}add(e){this._value.add(e)}toString(){return Array.from(this._value).map((e=>"string"===typeof e?function(e){let t=0;for(let n=0;n>>0}(e):e)).join(":")}}};class Rt{constructor(e){this._client=e,this._buckets=new Map,this._interval=setInterval((()=>this.flush()),5e3)}add(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:(0,Be.zf)();const i=Math.floor(a),c=t.replace(/[^\w\-.]+/gi,"_");const l=function(e){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[fe(n)]=ge(String(e[n])));return t}(o),d=function(e){return e.replace(/[^\w]+/gi,"_")}(r),u=function(e,t,n,r){const o=Object.entries((0,s.Ce)(r)).sort(((e,t)=>e[0].localeCompare(t[0])));return"".concat(e).concat(t).concat(n).concat(o)}(e,c,d,l);let h=this._buckets.get(u);const p=h&&"s"===e?h.metric.weight:0;h?(h.metric.add(n),h.timestamp{let[,t]=e;return t}));this._client.captureAggregateMetrics(e)}this._buckets.clear()}}close(){clearInterval(this._interval),this.flush()}}const Ft="MetricsAggregator",Lt=(0,i._C)((()=>({name:Ft,setupOnce(){},setup(e){e.metricsAggregator=new Rt(e)}})));function zt(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o=(0,a.KU)(),s=(0,a.o5)();if(o){if(!o.metricsAggregator)return void(_.T&&p.vF.warn("No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs"));const{unit:a,tags:i,timestamp:c}=r,{release:l,environment:d}=o.getOptions(),u=s.getTransaction(),h={};l&&(h.release=l),d&&(h.environment=d),u&&(h.transaction=(0,Te.et)(u).description||""),_.T&&p.vF.log("Adding value of ".concat(n," to ").concat(e," metric ").concat(t)),o.metricsAggregator.add(e,t,n,a,{...h,...i},c)}}const Pt={increment:function(e){zt("c",e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,arguments.length>2?arguments[2]:void 0)},distribution:function(e,t,n){zt("d",e,t,n)},set:function(e,t,n){zt("s",e,t,n)},gauge:function(e,t,n){zt("g",e,t,n)},MetricsAggregator:(0,i.F)(Ft,Lt),metricsAggregatorIntegration:Lt};function Bt(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r0}function Yt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;if("function"!==typeof e)return e;try{const t=e.__sentry_wrapped__;if(t)return t;if((0,s.sp)(e))return e}catch(o){return e}const r=function(){const r=Array.prototype.slice.call(arguments);try{n&&"function"===typeof n&&n.apply(this,arguments);const o=r.map((e=>Yt(e,t)));return e.apply(this,o)}catch(o){throw Gt++,setTimeout((()=>{Gt--})),(0,a.v4)((e=>{e.addEventProcessor((e=>(t.mechanism&&((0,m.gO)(e,void 0,void 0),(0,m.M6)(e,t.mechanism)),e.extra={...e.extra,arguments:r},e))),(0,a.Cp)(o)})),o}};try{for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}catch(i){}(0,s.pO)(r,e),(0,s.my)(e,"__sentry_wrapped__",r);try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:()=>e.name})}catch(i){}return r}var Zt=n(53086);const Xt="undefined"===typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;function Qt(e,t){const n=en(e,t),r={type:t&&t.name,value:nn(t)};return n.length&&(r.stacktrace={frames:n}),void 0===r.type&&""===r.value&&(r.value="Unrecoverable error caught"),r}function $t(e,t){return{exception:{values:[Qt(e,t)]}}}function en(e,t){const n=t.stacktrace||t.stack||"",r=function(e){if(e){if("number"===typeof e.framesToPop)return e.framesToPop;if(tn.test(e.message))return 1}return 0}(t);try{return e(n,r)}catch(o){}return[]}const tn=/Minified React error #\d+;/i;function nn(e){const t=e&&e.message;return t?t.error&&"string"===typeof t.error.message?t.error.message:t:"No error message"}function rn(e,t,n,r){const o=sn(e,t,n&&n.syntheticException||void 0,r);return(0,m.M6)(o),o.level="error",n&&n.event_id&&(o.event_id=n.event_id),(0,ce.XW)(o)}function on(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"info",r=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0;const s=an(e,t,r&&r.syntheticException||void 0,o);return s.level=n,r&&r.event_id&&(s.event_id=r.event_id),(0,ce.XW)(s)}function sn(e,t,n,r,o){let s;if((0,k.T2)(t)&&t.error){return $t(e,t.error)}if((0,k.BD)(t)||(0,k.W6)(t)){const o=t;if("stack"in t)s=$t(e,t);else{const t=o.name||((0,k.BD)(o)?"DOMError":"DOMException"),a=o.message?"".concat(t,": ").concat(o.message):t;s=an(e,a,n,r),(0,m.gO)(s,a)}return"code"in o&&(s.tags={...s.tags,"DOMException.code":"".concat(o.code)}),s}if((0,k.bJ)(t))return $t(e,t);if((0,k.Qd)(t)||(0,k.xH)(t)){return s=function(e,t,n,r){const o=(0,a.KU)(),s=o&&o.getOptions().normalizeDepth,i={exception:{values:[{type:(0,k.xH)(t)?t.constructor.name:r?"UnhandledRejection":"Error",value:cn(t,{isUnhandledRejection:r})}]},extra:{__serialized__:(0,B.cd)(t,s)}};if(n){const t=en(e,n);t.length&&(i.exception.values[0].stacktrace={frames:t})}return i}(e,t,n,o),(0,m.M6)(s,{synthetic:!0}),s}return s=an(e,t,n,r),(0,m.gO)(s,"".concat(t),void 0),(0,m.M6)(s,{synthetic:!0}),s}function an(e,t,n,r){const o={};if(r&&n){const r=en(e,n);r.length&&(o.exception={values:[{value:t,stacktrace:{frames:r}}]})}if((0,k.NF)(t)){const{__sentry_template_string__:e,__sentry_template_values__:n}=t;return o.logentry={message:e,params:n},o}return o.message=t,o}function cn(e,t){let{isUnhandledRejection:n}=t;const r=(0,s.HF)(e),o=n?"promise rejection":"exception";if((0,k.T2)(e))return"Event `ErrorEvent` captured as ".concat(o," with message `").concat(e.message,"`");if((0,k.xH)(e)){const t=function(e){try{const t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch(t){}}(e);return"Event `".concat(t,"` (type=").concat(e.type,") captured as ").concat(o)}return"Object captured as ".concat(o," with keys: ").concat(r)}function ln(e,t){let{metadata:n,tunnel:r,dsn:o}=t;const s={event_id:e.event_id,sent_at:(new Date).toISOString(),...n&&n.sdk&&{sdk:{name:n.sdk.name,version:n.sdk.version}},...!!r&&!!o&&{dsn:F(o)}},a=function(e){return[{type:"user_report"},e]}(e);return W(s,[a])}class dn extends ke{constructor(e){!function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[t],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"npm";const o=e._metadata||{};o.sdk||(o.sdk={name:"sentry.javascript.".concat(t),packages:n.map((e=>({name:"".concat(r,":@sentry/").concat(e),version:Jt.M}))),version:Jt.M}),e._metadata=o}(e,"browser",["browser"],qt.SENTRY_SDK_SOURCE||(0,Zt.e)()),super(e),e.sendClientReports&&qt.document&&qt.document.addEventListener("visibilitychange",(()=>{"hidden"===qt.document.visibilityState&&this._flushOutcomes()}))}eventFromException(e,t){return rn(this._options.stackParser,e,t,this._options.attachStacktrace)}eventFromMessage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info",n=arguments.length>2?arguments[2]:void 0;return on(this._options.stackParser,e,t,n,this._options.attachStacktrace)}captureUserFeedback(e){if(!this._isEnabled())return void(Xt&&p.vF.warn("SDK not enabled, will not capture user feedback."));const t=ln(e,{metadata:this.getSdkMetadata(),dsn:this.getDsn(),tunnel:this.getOptions().tunnel});this._sendEnvelope(t)}_prepareEvent(e,t,n){return e.platform=e.platform||"javascript",super._prepareEvent(e,t,n)}_flushOutcomes(){const e=this._clearOutcomes();if(0===e.length)return void(Xt&&p.vF.log("No outcomes to send"));if(!this._dsn)return void(Xt&&p.vF.log("No dsn provided, will not send outcomes"));Xt&&p.vF.log("Sending outcomes:",e);const t=(n=e,W((r=this._options.tunnel&&F(this._dsn))?{dsn:r}:{},[[{type:"client_report"},{timestamp:o||(0,Be.lu)(),discarded_events:n}]]));var n,r,o;this._sendEnvelope(t)}}var un=n(97921);let hn;function pn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){if(hn)return hn;if((0,un.ap)(qt.fetch))return hn=qt.fetch.bind(qt);const e=qt.document;let t=qt.fetch;if(e&&"function"===typeof e.createElement)try{const n=e.createElement("iframe");n.hidden=!0,e.head.appendChild(n);const r=n.contentWindow;r&&r.fetch&&(t=r.fetch),e.head.removeChild(n)}catch(n){Xt&&p.vF.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",n)}return hn=t.bind(qt)}(),n=0,r=0;return xt(e,(function(o){const s=o.body.length;n+=s,r++;const a={body:o.body,method:"POST",referrerPolicy:"origin",headers:e.headers,keepalive:n<=6e4&&r<15,...e.fetchOptions};try{return t(e.url,a).then((e=>(n-=s,r--,{statusCode:e.status,headers:{"x-sentry-rate-limits":e.headers.get("X-Sentry-Rate-Limits"),"retry-after":e.headers.get("Retry-After")}})))}catch(i){return hn=void 0,n-=s,r--,(0,ce.xg)(i)}}))}const mn=4;function fn(e){return xt(e,(function(t){return new ce.T2(((n,r)=>{const o=new XMLHttpRequest;o.onerror=r,o.onreadystatechange=()=>{o.readyState===mn&&n({statusCode:o.status,headers:{"x-sentry-rate-limits":o.getResponseHeader("X-Sentry-Rate-Limits"),"retry-after":o.getResponseHeader("Retry-After")}})},o.open("POST",e.url);for(const t in e.headers)Object.prototype.hasOwnProperty.call(e.headers,t)&&o.setRequestHeader(t,e.headers[t]);o.send(t.body)}))}))}var _n=n(95308);const gn="?";function vn(e,t,n,r){const o={filename:e,function:t,in_app:!0};return void 0!==n&&(o.lineno=n),void 0!==r&&(o.colno=r),o}const yn=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,bn=/\((\S*)(?::(\d+))(?::(\d+))\)/,wn=[30,e=>{const t=yn.exec(e);if(t){if(t[2]&&0===t[2].indexOf("eval")){const e=bn.exec(t[2]);e&&(t[2]=e[1],t[3]=e[2],t[4]=e[3])}const[e,n]=An(t[1]||gn,t[2]);return vn(n,e,t[3]?+t[3]:void 0,t[4]?+t[4]:void 0)}}],Sn=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,kn=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Cn=[50,e=>{const t=Sn.exec(e);if(t){if(t[3]&&t[3].indexOf(" > eval")>-1){const e=kn.exec(t[3]);e&&(t[1]=t[1]||"eval",t[3]=e[1],t[4]=e[2],t[5]="")}let e=t[3],n=t[1]||gn;return[n,e]=An(n,e),vn(e,n,t[4]?+t[4]:void 0,t[5]?+t[5]:void 0)}}],En=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,xn=[40,e=>{const t=En.exec(e);return t?vn(t[2],t[1]||gn,+t[3],t[4]?+t[4]:void 0):void 0}],Tn=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,On=[10,e=>{const t=Tn.exec(e);return t?vn(t[2],t[3]||gn,+t[1]):void 0}],Nn=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,Dn=[20,e=>{const t=Nn.exec(e);return t?vn(t[5],t[3]||t[4]||gn,+t[1],+t[2]):void 0}],In=[wn,Cn,xn],jn=(0,_n.gd)(...In),An=(e,t)=>{const n=-1!==e.indexOf("safari-extension"),r=-1!==e.indexOf("safari-web-extension");return n||r?[-1!==e.indexOf("@")?e.split("@")[0]:gn,n?"safari-extension:".concat(t):"safari-web-extension:".concat(t)]:[e,t]},Mn=(0,X.VZ)();const Rn=X.OW;let Fn;function Ln(e){const t="history";(0,Oe.s5)(t,e),(0,Oe.AS)(t,zn)}function zn(){if(!function(){const e=Mn.chrome,t=e&&e.app&&e.app.runtime,n="history"in Mn&&!!Mn.history.pushState&&!!Mn.history.replaceState;return!t&&n}())return;const e=Rn.onpopstate;function t(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r2?n[2]:void 0;if(o){const e=Fn,t=String(o);Fn=t;const n={from:e,to:t};(0,Oe.aj)("history",n)}return e.apply(this,n)}}Rn.onpopstate=function(){const t=Rn.location.href,n=Fn;Fn=t;const r={from:n,to:t};if((0,Oe.aj)("history",r),e)try{for(var o=arguments.length,s=new Array(o),a=0;a{const n=Bn[t]&&Bn[t].prototype;n&&n.hasOwnProperty&&n.hasOwnProperty("addEventListener")&&((0,s.GS)(n,"addEventListener",(function(t){return function(n,r,o){if("click"===n||"keypress"==n)try{const r=this,s=r.__sentry_instrumentation_handlers__=r.__sentry_instrumentation_handlers__||{},a=s[n]=s[n]||{refCount:0};if(!a.handler){const r=Gn(e);a.handler=r,t.call(this,n,r,o)}a.refCount++}catch(s){}return t.call(this,n,r,o)}})),(0,s.GS)(n,"removeEventListener",(function(e){return function(t,n,r){if("click"===t||"keypress"==t)try{const n=this,o=n.__sentry_instrumentation_handlers__||{},s=o[t];s&&(s.refCount--,s.refCount<=0&&(e.call(this,t,s.handler,r),s.handler=void 0,delete o[t]),0===Object.keys(o).length&&delete n.__sentry_instrumentation_handlers__)}catch(o){}return e.call(this,t,n,r)}})))}))}function Gn(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return n=>{if(!n||n._sentryCaptured)return;const r=function(e){try{return e.target}catch(t){return null}}(n);if(function(e,t){return"keypress"===e&&(!t||!t.tagName||"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&!t.isContentEditable)}(n.type,r))return;(0,s.my)(n,"_sentryCaptured",!0),r&&!r._sentryId&&(0,s.my)(r,"_sentryId",(0,m.eJ)());const o="keypress"===n.type?"input":n.type;if(!function(e){if(e.type!==Jn)return!1;try{if(!e.target||e.target._sentryId!==Hn)return!1}catch(t){}return!0}(n)){e({event:n,name:o,global:t}),Jn=n.type,Hn=r?r._sentryId:void 0}clearTimeout(Un),Un=Bn.setTimeout((()=>{Hn=void 0,Jn=void 0}),Wn)}}var Kn=n(35205),Yn=n(22411),Zn=n(11337),Xn=n(27414),Qn=n(88544);const $n=1024,er="Breadcrumbs",tr=(0,i._C)((function(){const e={console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0,...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}};return{name:er,setupOnce(){},setup(t){e.console&&(0,Pn.P)(function(e){return function(t){if((0,a.KU)()!==e)return;const n={category:"console",data:{arguments:t.args,logger:"console"},level:(0,Xn.te)(t.level),message:(0,f.gt)(t.args," ")};if("assert"===t.level){if(!1!==t.args[0])return;n.message="Assertion failed: ".concat((0,f.gt)(t.args.slice(1)," ")||"console.assert"),n.data.arguments=t.args.slice(1)}(0,a.ZQ)(n,{input:t.args,level:t.level})}}(t)),e.dom&&Vn(function(e,t){return function(n){if((0,a.KU)()!==e)return;let r,o,s="object"===typeof t?t.serializeAttribute:void 0,i="object"===typeof t&&"number"===typeof t.maxStringLength?t.maxStringLength:void 0;i&&i>$n&&(Xt&&p.vF.warn("`dom.maxStringLength` cannot exceed ".concat($n,", but a value of ").concat(i," was configured. Sentry will use ").concat($n," instead.")),i=$n),"string"===typeof s&&(s=[s]);try{const e=n.event,t=function(e){return!!e&&!!e.target}(e)?e.target:e;r=(0,Zn.Hd)(t,{keyAttrs:s,maxStringLength:i}),o=(0,Zn.xE)(t)}catch(l){r=""}if(0===r.length)return;const c={category:"ui.".concat(n.name),message:r};o&&(c.data={"ui.component_name":o}),(0,a.ZQ)(c,{event:n.event,name:n.name,global:n.global})}}(t,e.dom)),e.xhr&&(0,Kn.Mn)(function(e){return function(t){if((0,a.KU)()!==e)return;const{startTimestamp:n,endTimestamp:r}=t,o=t.xhr[Kn.Er];if(!n||!r||!o)return;const{method:s,url:i,status_code:c,body:l}=o,d={method:s,url:i,status_code:c},u={xhr:t.xhr,input:l,startTimestamp:n,endTimestamp:r};(0,a.ZQ)({category:"xhr",data:d,type:"http"},u)}}(t)),e.fetch&&(0,Yn.u)(function(e){return function(t){if((0,a.KU)()!==e)return;const{startTimestamp:n,endTimestamp:r}=t;if(r&&(!t.fetchData.url.match(/sentry_key/)||"POST"!==t.fetchData.method))if(t.error){const e=t.fetchData,o={data:t.error,input:t.args,startTimestamp:n,endTimestamp:r};(0,a.ZQ)({category:"fetch",data:e,level:"error",type:"http"},o)}else{const e=t.response,o={...t.fetchData,status_code:e&&e.status},s={input:t.args,response:e,startTimestamp:n,endTimestamp:r};(0,a.ZQ)({category:"fetch",data:o,type:"http"},s)}}}(t)),e.history&&Ln(function(e){return function(t){if((0,a.KU)()!==e)return;let n=t.from,r=t.to;const o=(0,Qn.Dl)(qt.location.href);let s=n?(0,Qn.Dl)(n):void 0;const i=(0,Qn.Dl)(r);s&&s.path||(s=o),o.protocol===i.protocol&&o.host===i.host&&(r=i.relative),o.protocol===s.protocol&&o.host===s.host&&(n=s.relative),(0,a.ZQ)({category:"navigation",data:{from:n,to:r}})}}(t)),e.sentry&&t.on&&t.on("beforeSendEvent",function(e){return function(t){(0,a.KU)()===e&&(0,a.ZQ)({category:"sentry.".concat("transaction"===t.type?"transaction":"event"),event_id:t.event_id,level:t.level,message:(0,m.$X)(t)},{event:t})}}(t))}}})),nr=(0,i.F)(er,tr);const rr="Dedupe",or=(0,i._C)((()=>{let e;return{name:rr,setupOnce(){},processEvent(t){if(t.type)return t;try{if(function(e,t){if(!t)return!1;if(function(e,t){const n=e.message,r=t.message;if(!n&&!r)return!1;if(n&&!r||!n&&r)return!1;if(n!==r)return!1;if(!ir(e,t))return!1;if(!ar(e,t))return!1;return!0}(e,t))return!0;if(function(e,t){const n=cr(t),r=cr(e);if(!n||!r)return!1;if(n.type!==r.type||n.value!==r.value)return!1;if(!ir(e,t))return!1;if(!ar(e,t))return!1;return!0}(e,t))return!0;return!1}(t,e))return Xt&&p.vF.warn("Event dropped due to being a duplicate of previously captured event."),null}catch(n){}return e=t}}})),sr=(0,i.F)(rr,or);function ar(e,t){let n=lr(e),r=lr(t);if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;if(r.length!==n.length)return!1;for(let o=0;o0&&void 0!==arguments[0]?arguments[0]:{}};return{name:dr,setupOnce(){Error.stackTraceLimit=50},setup(t){e.onerror&&(!function(e){De((t=>{const{stackParser:n,attachStacktrace:r}=fr();if((0,a.KU)()!==e||Kt())return;const{msg:o,url:s,line:i,column:c,error:l}=t,d=void 0===l&&(0,k.Kg)(o)?function(e,t,n,r){const o=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;let s=(0,k.T2)(e)?e.message:e,a="Error";const i=s.match(o);i&&(a=i[1],s=i[2]);const c={exception:{values:[{type:a,value:s}]}};return pr(c,t,n,r)}(o,s,i,c):pr(sn(n,l||o,void 0,r,!1),s,i,c);d.level="error",(0,a.r)(d,{originalException:l,mechanism:{handled:!1,type:"onerror"}})}))}(t),mr("onerror")),e.onunhandledrejection&&(!function(e){Ae((t=>{const{stackParser:n,attachStacktrace:r}=fr();if((0,a.KU)()!==e||Kt())return;const o=function(e){if((0,k.sO)(e))return e;const t=e;try{if("reason"in t)return t.reason;if("detail"in t&&"reason"in t.detail)return t.detail.reason}catch(n){}return e}(t),s=(0,k.sO)(o)?{exception:{values:[{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: ".concat(String(o))}]}}:sn(n,o,void 0,r,!0);s.level="error",(0,a.r)(s,{originalException:o,mechanism:{handled:!1,type:"onunhandledrejection"}})}))}(t),mr("onunhandledrejection"))}}})),hr=(0,i.F)(dr,ur);function pr(e,t,n,r){const o=e.exception=e.exception||{},s=o.values=o.values||[],a=s[0]=s[0]||{},i=a.stacktrace=a.stacktrace||{},c=i.frames=i.frames||[],l=isNaN(parseInt(r,10))?void 0:r,d=isNaN(parseInt(n,10))?void 0:n,u=(0,k.Kg)(t)&&t.length>0?t:(0,Zn.$N)();return 0===c.length&&c.push({colno:l,filename:u,function:"?",in_app:!0,lineno:d}),e}function mr(e){Xt&&p.vF.log("Global Handler attached: ".concat(e))}function fr(){const e=(0,a.KU)();return e&&e.getOptions()||{stackParser:()=>[],attachStacktrace:!1}}const _r="HttpContext",gr=(0,i._C)((()=>({name:_r,setupOnce(){},preprocessEvent(e){if(!qt.navigator&&!qt.location&&!qt.document)return;const t=e.request&&e.request.url||qt.location&&qt.location.href,{referrer:n}=qt.document||{},{userAgent:r}=qt.navigator||{},o={...e.request&&e.request.headers,...n&&{Referer:n},...r&&{"User-Agent":r}},s={...e.request,...t&&{url:t},headers:o};e.request=s}}))),vr=(0,i.F)(_r,gr),yr="LinkedErrors",br=(0,i._C)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.limit||5,n=e.key||"cause";return{name:yr,setupOnce(){},preprocessEvent(e,r,o){const s=o.getOptions();C(Qt,s.stackParser,s.maxValueLength,n,t,e,r)}}})),wr=(0,i.F)(yr,br),Sr=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","BroadcastChannel","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","SharedWorker","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],kr="TryCatch",Cr=(0,i._C)((function(){const e={XMLHttpRequest:!0,eventTarget:!0,requestAnimationFrame:!0,setInterval:!0,setTimeout:!0,...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}};return{name:kr,setupOnce(){e.setTimeout&&(0,s.GS)(qt,"setTimeout",xr),e.setInterval&&(0,s.GS)(qt,"setInterval",xr),e.requestAnimationFrame&&(0,s.GS)(qt,"requestAnimationFrame",Tr),e.XMLHttpRequest&&"XMLHttpRequest"in qt&&(0,s.GS)(XMLHttpRequest.prototype,"send",Or);const t=e.eventTarget;if(t){(Array.isArray(t)?t:Sr).forEach(Nr)}}}})),Er=(0,i.F)(kr,Cr);function xr(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r{e in t&&"function"===typeof t[e]&&(0,s.GS)(t,e,(function(t){const n={mechanism:{data:{function:e,handler:(0,_n.qQ)(t)},handled:!1,type:"instrument"}},r=(0,s.sp)(t);return r&&(n.mechanism.data.handler=(0,_n.qQ)(r)),Yt(t,n)}))}));for(var n=arguments.length,r=new Array(n),o=0;o0&&void 0!==arguments[0]?arguments[0]:{};void 0===e.defaultIntegrations&&(e.defaultIntegrations=Ir()),void 0===e.release&&("string"===typeof __SENTRY_RELEASE__&&(e.release=__SENTRY_RELEASE__),qt.SENTRY_RELEASE&&qt.SENTRY_RELEASE.id&&(e.release=qt.SENTRY_RELEASE.id)),void 0===e.autoSessionTracking&&(e.autoSessionTracking=!0),void 0===e.sendClientReports&&(e.sendClientReports=!0);const t={...e,stackParser:(0,_n.vk)(e.stackParser||jn),integrations:(0,i.mH)(e),transport:e.transport||((0,un.vm)()?pn:fn)};!function(e,t){!0===t.debug&&(_.T?p.vF.enable():(0,p.pq)((()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")}))),(0,a.o5)().update(t.initialScope);const n=new e(t);Wt(n),function(e){e.init?e.init():e.setupIntegrations&&e.setupIntegrations()}(n)}(dn,t),e.autoSessionTracking&&function(){if("undefined"===typeof qt.document)return void(Xt&&p.vF.warn("Session tracking in non-browser environment with @sentry/browser is not supported."));(0,a.J0)({ignoreDuration:!0}),(0,a.J5)(),Ln((e=>{let{from:t,to:n}=e;void 0!==t&&t!==n&&((0,a.J0)({ignoreDuration:!0}),(0,a.J5)())}))}()}const Ar=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,me.BF)();if(!qt.document)return void(Xt&&p.vF.error("Global document not defined in showReportDialog call"));const{client:n,scope:r}=t.getStackTop(),o=e.dsn||n&&n.getDsn();if(!o)return void(Xt&&p.vF.error("DSN not configured for showReportDialog call"));r&&(e.user={...r.getUser(),...e.user}),e.eventId||(e.eventId=t.lastEventId());const s=qt.document.createElement("script");s.async=!0,s.crossOrigin="anonymous",s.src=function(e,t){const n=P(e);if(!n)return"";const r="".concat(ue(n),"embed/error-page/");let o="dsn=".concat(F(n));for(const s in t)if("dsn"!==s&&"onClose"!==s)if("user"===s){const e=t.user;if(!e)continue;e.name&&(o+="&name=".concat(encodeURIComponent(e.name))),e.email&&(o+="&email=".concat(encodeURIComponent(e.email)))}else o+="&".concat(encodeURIComponent(s),"=").concat(encodeURIComponent(t[s]));return"".concat(r,"?").concat(o)}(o,e),e.onLoad&&(s.onload=e.onLoad);const{onClose:a}=e;if(a){const e=t=>{if("__sentry_reportdialog_closed__"===t.data)try{a()}finally{qt.removeEventListener("message",e)}};qt.addEventListener("message",e)}const i=qt.document.head||qt.document.body;i?i.appendChild(s):Xt&&p.vF.error("Not injecting report dialog. No injection point found in HTML")};function Mr(){}function Rr(e){e()}function Fr(e){return Yt(e)()}function Lr(e){const t=(0,a.KU)();t&&t.captureUserFeedback(e)}function zr(e){let t,n=e[0],r=1;for(;r{let r,o;return s=>{t.value>=0&&(s||n)&&(o=t.value-(r||0),(o||void 0===r)&&(r=t.value,t.delta=o,e(t)))}},Hr=X.OW,Vr=()=>Hr.__WEB_VITALS_POLYFILL__?Hr.performance&&(performance.getEntriesByType&&performance.getEntriesByType("navigation")[0]||(()=>{const e=Hr.performance.timing,t=Hr.performance.navigation.type,n={entryType:"navigation",startTime:0,type:2==t?"back_forward":1===t?"reload":"navigate"};for(const r in e)"navigationStart"!==r&&"toJSON"!==r&&(n[r]=Math.max(e[r]-e.navigationStart,0));return n})()):Hr.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0],qr=()=>{const e=Vr();return e&&e.activationStart||0},Gr=(e,t)=>{const n=Vr();let r="navigate";return n&&(r=Hr.document&&Hr.document.prerendering||qr()>0?"prerender":n.type.replace(/_/g,"-")),{name:e,value:"undefined"===typeof t?-1:t,rating:"good",delta:0,entries:[],id:"v3-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},Kr=(e,t,n)=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const r=new PerformanceObserver((e=>{t(e.getEntries())}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(r){}},Yr=(e,t)=>{const n=r=>{"pagehide"!==r.type&&"hidden"!==Hr.document.visibilityState||(e(r),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};Hr.document&&(addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0))},Zr=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=Gr("CLS",0);let r,o=0,s=[];const a=e=>{e.forEach((e=>{if(!e.hadRecentInput){const t=s[0],a=s[s.length-1];o&&0!==s.length&&e.startTime-a.startTime<1e3&&e.startTime-t.startTime<5e3?(o+=e.value,s.push(e)):(o=e.value,s=[e]),o>n.value&&(n.value=o,n.entries=s,r&&r())}}))},i=Kr("layout-shift",a);if(i){r=Jr(e,n,t.reportAllChanges);const o=()=>{a(i.takeRecords()),r(!0)};return Yr(o),o}};let Xr=-1;const Qr=()=>(Xr<0&&(Hr.document&&Hr.document.visibilityState&&(Xr="hidden"!==Hr.document.visibilityState||Hr.document.prerendering?1/0:0),Yr((e=>{let{timeStamp:t}=e;Xr=t}),!0)),{get firstHiddenTime(){return Xr}}),$r=e=>{const t=Qr(),n=Gr("FID");let r;const o=e=>{e.startTime{e.forEach(o)},a=Kr("first-input",s);r=Jr(e,n),a&&Yr((()=>{s(a.takeRecords()),a.disconnect()}),!0)};let eo=0,to=1/0,no=0;const ro=e=>{e.forEach((e=>{e.interactionId&&(to=Math.min(to,e.interactionId),no=Math.max(no,e.interactionId),eo=no?(no-to)/7+1:0)}))};let oo;const so=()=>{"interactionCount"in performance||oo||(oo=Kr("event",ro,{type:"event",buffered:!0,durationThreshold:0}))},ao=()=>oo?eo:performance.interactionCount||0,io=[],co={},lo=e=>{const t=io[io.length-1],n=co[e.interactionId];if(n||io.length<10||e.duration>t.latency){if(n)n.entries.push(e),n.latency=Math.max(n.latency,e.duration);else{const t={id:e.interactionId,latency:e.duration,entries:[e]};co[t.id]=t,io.push(t)}io.sort(((e,t)=>t.latency-e.latency)),io.splice(10).forEach((e=>{delete co[e.id]}))}},uo=(e,t)=>{t=t||{},so();const n=Gr("INP");let r;const o=e=>{e.forEach((e=>{if(e.interactionId&&lo(e),"first-input"===e.entryType){!io.some((t=>t.entries.some((t=>e.duration===t.duration&&e.startTime===t.startTime))))&&lo(e)}}));const t=(()=>{const e=Math.min(io.length-1,Math.floor(ao()/50));return io[e]})();t&&t.latency!==n.value&&(n.value=t.latency,n.entries=t.entries,r())},s=Kr("event",o,{durationThreshold:t.durationThreshold||40});r=Jr(e,n,t.reportAllChanges),s&&(s.observe({type:"first-input",buffered:!0}),Yr((()=>{o(s.takeRecords()),n.value<0&&ao()>0&&(n.value=0,n.entries=[]),r(!0)})))},ho={},po=e=>{const t=Qr(),n=Gr("LCP");let r;const o=e=>{const o=e[e.length-1];if(o){const e=Math.max(o.startTime-qr(),0);e{ho[n.id]||(o(s.takeRecords()),s.disconnect(),ho[n.id]=!0,r(!0))};return["keydown","click"].forEach((e=>{Hr.document&&addEventListener(e,t,{once:!0,capture:!0})})),Yr(t,!0),t}},mo=e=>{Hr.document&&(Hr.document.prerendering?addEventListener("prerenderingchange",(()=>mo(e)),!0):"complete"!==Hr.document.readyState?addEventListener("load",(()=>mo(e)),!0):setTimeout(e,0))},fo=(e,t)=>{t=t||{};const n=Gr("TTFB"),r=Jr(e,n,t.reportAllChanges);mo((()=>{const e=Vr();if(e){if(n.value=Math.max(e.responseStart-qr(),0),n.value<0||n.value>performance.now())return;n.entries=[e],r(!0)}}))},_o={},go={};let vo,yo,bo,wo,So;function ko(e){return Io("lcp",e,Oo,bo,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}function Co(e,t){return jo(e,t),go[e]||(!function(e){const t={};"event"===e&&(t.durationThreshold=0);Kr(e,(t=>{Eo(e,{entries:t})}),t)}(e),go[e]=!0),Ao(e,t)}function Eo(e,t){const n=_o[e];if(n&&n.length)for(const o of n)try{o(t)}catch(r){Ur&&p.vF.error("Error while triggering instrumentation handler.\nType: ".concat(e,"\nName: ").concat((0,_n.qQ)(o),"\nError:"),r)}}function xo(){return Zr((e=>{Eo("cls",{metric:e}),vo=e}),{reportAllChanges:!0})}function To(){return $r((e=>{Eo("fid",{metric:e}),yo=e}))}function Oo(){return po((e=>{Eo("lcp",{metric:e}),bo=e}))}function No(){return fo((e=>{Eo("ttfb",{metric:e}),wo=e}))}function Do(){return uo((e=>{Eo("inp",{metric:e}),So=e}))}function Io(e,t,n,r){let o,s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return jo(e,t),go[e]||(o=n(),go[e]=!0),r&&t({metric:r}),Ao(e,t,s?o:void 0)}function jo(e,t){_o[e]=_o[e]||[],_o[e].push(t)}function Ao(e,t,n){return()=>{n&&n();const r=_o[e];if(!r)return;const o=r.indexOf(t);-1!==o&&r.splice(o,1)}}const Mo=X.OW,Ro="sentryReplaySession",Fo="replay_event",Lo="Unable to send Replay",zo=5e3,Po=5500,Bo=15e4,Wo=5e3,Uo=2e7,Jo=4999,Ho=36e5;function Vo(e){let t,n=e[0],r=1;for(;re.host]);return Boolean(Vo([t,"optionalAccess",e=>e.shadowRoot])===e)}function Ko(e){return"[object ShadowRoot]"===Object.prototype.toString.call(e)}function Yo(e){try{const n=e.rules||e.cssRules;return n?((t=Array.from(n,Zo).join("")).includes(" background-clip: text;")&&!t.includes(" -webkit-background-clip: text;")&&(t=t.replace(" background-clip: text;"," -webkit-background-clip: text; background-clip: text;")),t):null}catch(n){return null}var t}function Zo(e){let t;if(function(e){return"styleSheet"in e}(e))try{t=Yo(e.styleSheet)||function(e){const{cssText:t}=e;if(t.split('"').length<3)return t;const n=["@import","url(".concat(JSON.stringify(e.href),")")];return""===e.layerName?n.push("layer"):e.layerName&&n.push("layer(".concat(e.layerName,")")),e.supportsText&&n.push("supports(".concat(e.supportsText,")")),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}(e)}catch(n){}else if(function(e){return"selectorText"in e}(e)&&e.selectorText.includes(":"))return function(e){const t=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(t,"$1\\$2")}(e.cssText);return t||e.cssText}!function(e){e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment"}(qo||(qo={}));class Xo{constructor(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}getId(e){if(!e)return-1;const t=Vo([this,"access",e=>e.getMeta,"call",t=>t(e),"optionalAccess",e=>e.id]);return r=()=>-1,null!=(n=t)?n:r();var n,r}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){const t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach((e=>this.removeNodeFromMap(e)))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){const n=t.id;this.idNodeMap.set(n,e),this.nodeMetaMap.set(e,t)}replace(e,t){const n=this.getNode(e);if(n){const e=this.nodeMetaMap.get(n);e&&this.nodeMetaMap.set(t,e)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}}function Qo(e){let{maskInputOptions:t,tagName:n,type:r}=e;return"OPTION"===n&&(n="SELECT"),Boolean(t[n.toLowerCase()]||r&&t[r]||"password"===r||"INPUT"===n&&!r&&t.text)}function $o(e){let{isMasked:t,element:n,value:r,maskInputFn:o}=e,s=r||"";return t?(o&&(s=o(s,n)),"*".repeat(s.length)):s}function es(e){return e.toLowerCase()}function ts(e){return e.toUpperCase()}const ns="__rrweb_original__";function rs(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?es(t):null}function os(e,t,n){return"INPUT"!==t||"radio"!==n&&"checkbox"!==n?e.value:e.getAttribute("value")||""}let ss=1;const as=new RegExp("[^a-z0-9-_:]"),is=-2;function cs(){return ss++}let ls,ds;const us=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,hs=/^(?:[a-z+]+:)?\/\//i,ps=/^www\..*/i,ms=/^(data:)([^,]*),(.*)/i;function fs(e,t){return(e||"").replace(us,((e,n,r,o,s,a)=>{const i=r||s||a,c=n||o||"";if(!i)return e;if(hs.test(i)||ps.test(i))return"url(".concat(c).concat(i).concat(c,")");if(ms.test(i))return"url(".concat(c).concat(i).concat(c,")");if("/"===i[0])return"url(".concat(c).concat(function(e){let t="";return t=e.indexOf("//")>-1?e.split("/").slice(0,3).join("/"):e.split("/")[0],t=t.split("?")[0],t}(t)+i).concat(c,")");const l=t.split("/"),d=i.split("/");l.pop();for(const t of d)"."!==t&&(".."===t?l.pop():l.push(t));return"url(".concat(c).concat(l.join("/")).concat(c,")")}))}const _s=/^[^ \t\n\r\u000c]+/,gs=/^[, \t\n\r\u000c]+/;function vs(e,t){if(!t||""===t.trim())return t;const n=e.createElement("a");return n.href=t,n.href}function ys(e){return Boolean("svg"===e.tagName||e.ownerSVGElement)}function bs(){const e=document.createElement("a");return e.href="",e.href}function ws(e,t,n,r,o,s){return r?"src"===n||"href"===n&&("use"!==t||"#"!==r[0])||"xlink:href"===n&&"#"!==r[0]?vs(e,r):"background"!==n||"table"!==t&&"td"!==t&&"th"!==t?"srcset"===n?function(e,t){if(""===t.trim())return t;let n=0;function r(e){let r;const o=e.exec(t.substring(n));return o?(r=o[0],n+=r.length,r):""}const o=[];for(;r(gs),!(n>=t.length);){let s=r(_s);if(","===s.slice(-1))s=vs(e,s.substring(0,s.length-1)),o.push(s);else{let r="";s=vs(e,s);let a=!1;for(;;){const e=t.charAt(n);if(""===e){o.push((s+r).trim());break}if(a)")"===e&&(a=!1);else{if(","===e){n+=1,o.push((s+r).trim());break}"("===e&&(a=!0)}r+=e,n+=1}}}return o.join(", ")}(e,r):"style"===n?fs(r,bs()):"object"===t&&"data"===n?vs(e,r):"function"===typeof s?s(n,r,o):r:vs(e,r):r}function Ss(e,t,n){return("video"===e||"audio"===e)&&"autoplay"===t}function ks(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return e?e.nodeType!==e.ELEMENT_NODE||r>n?-1:t(e)?r:ks(e.parentNode,t,n,r+1):-1}function Cs(e,t){return n=>{const r=n;if(null===r)return!1;try{if(e)if("string"===typeof e){if(r.matches(".".concat(e)))return!0}else if(function(e,t){for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}return!1}(r,e))return!0;return!(!t||!r.matches(t))}catch(o){return!1}}}function Es(e,t,n,r,o,s){try{const a=e.nodeType===e.ELEMENT_NODE?e:e.parentElement;if(null===a)return!1;if("INPUT"===a.tagName){const e=a.getAttribute("autocomplete");if(["current-password","new-password","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc"].includes(e))return!0}let i=-1,c=-1;if(s){if(c=ks(a,Cs(r,o)),c<0)return!0;i=ks(a,Cs(t,n),c>=0?c:1/0)}else{if(i=ks(a,Cs(t,n)),i<0)return!1;c=ks(a,Cs(r,o),i>=0?i:1/0)}return i>=0?!(c>=0)||i<=c:!(c>=0)&&!!s}catch(a){}return!!s}function xs(e,t){const{doc:n,mirror:r,blockClass:o,blockSelector:s,unblockSelector:a,maskAllText:i,maskAttributeFn:c,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:h,inlineStylesheet:p,maskInputOptions:m={},maskTextFn:f,maskInputFn:_,dataURLOptions:g={},inlineImages:v,recordCanvas:y,keepIframeSrcFn:b,newlyAddedElement:w=!1}=t,S=function(e,t){if(!t.hasNode(e))return;const n=t.getId(e);return 1===n?void 0:n}(n,r);switch(e.nodeType){case e.DOCUMENT_NODE:return"CSS1Compat"!==e.compatMode?{type:qo.Document,childNodes:[],compatMode:e.compatMode}:{type:qo.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:qo.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:S};case e.ELEMENT_NODE:return function(e,t){const{doc:n,blockClass:r,blockSelector:o,unblockSelector:s,inlineStylesheet:a,maskInputOptions:i={},maskAttributeFn:c,maskInputFn:l,dataURLOptions:d={},inlineImages:u,recordCanvas:h,keepIframeSrcFn:p,newlyAddedElement:m=!1,rootId:f,maskAllText:_,maskTextClass:g,unmaskTextClass:v,maskTextSelector:y,unmaskTextSelector:b}=t,w=function(e,t,n,r){try{if(r&&e.matches(r))return!1;if("string"===typeof t){if(e.classList.contains(t))return!0}else for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}if(n)return e.matches(n)}catch(o){}return!1}(e,r,o,s),S=function(e){if(e instanceof HTMLFormElement)return"form";const t=es(e.tagName);return as.test(t)?"div":t}(e);let k={};const C=e.attributes.length;for(let T=0;Tt.href===e.href));let r=null;t&&(r=Yo(t)),r&&(delete k.rel,delete k.href,k._cssText=fs(r,t.href))}if("style"===S&&e.sheet&&!(e.innerText||e.textContent||"").trim().length){const t=Yo(e.sheet);t&&(k._cssText=fs(t,bs()))}if("input"===S||"textarea"===S||"select"===S||"option"===S){const t=e,n=rs(t),r=os(t,ts(S),n),o=t.checked;if("submit"!==n&&"button"!==n&&r){const e=Es(t,g,y,v,b,Qo({type:n,tagName:ts(S),maskInputOptions:i}));k.value=$o({isMasked:e,element:t,value:r,maskInputFn:l})}o&&(k.checked=o)}"option"===S&&(e.selected&&!i.select?k.selected=!0:delete k.selected);if("canvas"===S&&h)if("2d"===e.__context)(function(e){const t=e.getContext("2d");if(!t)return!0;for(let n=0;n0!==e)))return!1}return!0})(e)||(k.rr_dataURL=e.toDataURL(d.type,d.quality));else if(!("__context"in e)){const t=e.toDataURL(d.type,d.quality),n=document.createElement("canvas");n.width=e.width,n.height=e.height;t!==n.toDataURL(d.type,d.quality)&&(k.rr_dataURL=t)}if("img"===S&&u){ls||(ls=n.createElement("canvas"),ds=ls.getContext("2d"));const t=e,r=t.crossOrigin;t.crossOrigin="anonymous";const o=()=>{t.removeEventListener("load",o);try{ls.width=t.naturalWidth,ls.height=t.naturalHeight,ds.drawImage(t,0,0),k.rr_dataURL=ls.toDataURL(d.type,d.quality)}catch(e){console.warn("Cannot inline img src=".concat(t.currentSrc,"! Error: ").concat(e))}r?k.crossOrigin=r:t.removeAttribute("crossorigin")};t.complete&&0!==t.naturalWidth?o():t.addEventListener("load",o)}"audio"!==S&&"video"!==S||(k.rr_mediaState=e.paused?"paused":"played",k.rr_mediaCurrentTime=e.currentTime);m||(e.scrollLeft&&(k.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(k.rr_scrollTop=e.scrollTop));if(w){const{width:t,height:n}=e.getBoundingClientRect();k={class:k.class,rr_width:"".concat(t,"px"),rr_height:"".concat(n,"px")}}"iframe"!==S||p(k.src)||(e.contentDocument||(k.rr_src=k.src),delete k.src);let E;try{customElements.get(S)&&(E=!0)}catch(x){}return{type:qo.Element,tagName:S,attributes:k,childNodes:[],isSVG:ys(e)||void 0,needBlock:w,rootId:f,isCustom:E}}(e,{doc:n,blockClass:o,blockSelector:s,unblockSelector:a,inlineStylesheet:p,maskAttributeFn:c,maskInputOptions:m,maskInputFn:_,dataURLOptions:g,inlineImages:v,recordCanvas:y,keepIframeSrcFn:b,newlyAddedElement:w,rootId:S,maskAllText:i,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:h});case e.TEXT_NODE:return function(e,t){const{maskAllText:n,maskTextClass:r,unmaskTextClass:o,maskTextSelector:s,unmaskTextSelector:a,maskTextFn:i,maskInputOptions:c,maskInputFn:l,rootId:d}=t,u=e.parentNode&&e.parentNode.tagName;let h=e.textContent;const p="STYLE"===u||void 0,m="SCRIPT"===u||void 0,f="TEXTAREA"===u||void 0;if(p&&h){try{e.nextSibling||e.previousSibling||Vo([e,"access",e=>e.parentNode,"access",e=>e.sheet,"optionalAccess",e=>e.cssRules])&&(h=Yo(e.parentNode.sheet))}catch(g){console.warn("Cannot get CSS styles from text's parentNode. Error: ".concat(g),e)}h=fs(h,bs())}m&&(h="SCRIPT_PLACEHOLDER");const _=Es(e,r,s,o,a,n);p||m||f||!h||!_||(h=i?i(h,e.parentElement):h.replace(/[\S]/g,"*"));f&&h&&(c.textarea||_)&&(h=l?l(h,e.parentNode):h.replace(/[\S]/g,"*"));if("OPTION"===u&&h){h=$o({isMasked:Es(e,r,s,o,a,Qo({type:null,tagName:u,maskInputOptions:c})),element:e,value:h,maskInputFn:l})}return{type:qo.Text,textContent:h||"",isStyle:p,rootId:d}}(e,{maskAllText:i,maskTextClass:l,unmaskTextClass:d,maskTextSelector:u,unmaskTextSelector:h,maskTextFn:f,maskInputOptions:m,maskInputFn:_,rootId:S});case e.CDATA_SECTION_NODE:return{type:qo.CDATA,textContent:"",rootId:S};case e.COMMENT_NODE:return{type:qo.Comment,textContent:e.textContent||"",rootId:S};default:return!1}}function Ts(e){return void 0===e||null===e?"":e.toLowerCase()}function Os(e,t){const{doc:n,mirror:r,blockClass:o,blockSelector:s,unblockSelector:a,maskAllText:i,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:h=!1,inlineStylesheet:p=!0,maskInputOptions:m={},maskAttributeFn:f,maskTextFn:_,maskInputFn:g,slimDOMOptions:v,dataURLOptions:y={},inlineImages:b=!1,recordCanvas:w=!1,onSerialize:S,onIframeLoad:k,iframeLoadTimeout:C=5e3,onStylesheetLoad:E,stylesheetLoadTimeout:x=5e3,keepIframeSrcFn:T=(()=>!1),newlyAddedElement:O=!1}=t;let{preserveWhiteSpace:N=!0}=t;const D=xs(e,{doc:n,mirror:r,blockClass:o,blockSelector:s,maskAllText:i,unblockSelector:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,inlineStylesheet:p,maskInputOptions:m,maskAttributeFn:f,maskTextFn:_,maskInputFn:g,dataURLOptions:y,inlineImages:b,recordCanvas:w,keepIframeSrcFn:T,newlyAddedElement:O});if(!D)return console.warn(e,"not serialized"),null;let I;I=r.hasNode(e)?r.getId(e):!function(e,t){if(t.comment&&e.type===qo.Comment)return!0;if(e.type===qo.Element){if(t.script&&("script"===e.tagName||"link"===e.tagName&&("preload"===e.attributes.rel||"modulepreload"===e.attributes.rel)&&"script"===e.attributes.as||"link"===e.tagName&&"prefetch"===e.attributes.rel&&"string"===typeof e.attributes.href&&e.attributes.href.endsWith(".js")))return!0;if(t.headFavicon&&("link"===e.tagName&&"shortcut icon"===e.attributes.rel||"meta"===e.tagName&&(Ts(e.attributes.name).match(/^msapplication-tile(image|color)$/)||"application-name"===Ts(e.attributes.name)||"icon"===Ts(e.attributes.rel)||"apple-touch-icon"===Ts(e.attributes.rel)||"shortcut icon"===Ts(e.attributes.rel))))return!0;if("meta"===e.tagName){if(t.headMetaDescKeywords&&Ts(e.attributes.name).match(/^description|keywords$/))return!0;if(t.headMetaSocial&&(Ts(e.attributes.property).match(/^(og|twitter|fb):/)||Ts(e.attributes.name).match(/^(og|twitter):/)||"pinterest"===Ts(e.attributes.name)))return!0;if(t.headMetaRobots&&("robots"===Ts(e.attributes.name)||"googlebot"===Ts(e.attributes.name)||"bingbot"===Ts(e.attributes.name)))return!0;if(t.headMetaHttpEquiv&&void 0!==e.attributes["http-equiv"])return!0;if(t.headMetaAuthorship&&("author"===Ts(e.attributes.name)||"generator"===Ts(e.attributes.name)||"framework"===Ts(e.attributes.name)||"publisher"===Ts(e.attributes.name)||"progid"===Ts(e.attributes.name)||Ts(e.attributes.property).match(/^article:/)||Ts(e.attributes.property).match(/^product:/)))return!0;if(t.headMetaVerification&&("google-site-verification"===Ts(e.attributes.name)||"yandex-verification"===Ts(e.attributes.name)||"csrf-token"===Ts(e.attributes.name)||"p:domain_verify"===Ts(e.attributes.name)||"verify-v1"===Ts(e.attributes.name)||"verification"===Ts(e.attributes.name)||"shopify-checkout-api-token"===Ts(e.attributes.name)))return!0}}return!1}(D,v)&&(N||D.type!==qo.Text||D.isStyle||D.textContent.replace(/^\s+|\s+$/gm,"").length)?cs():is;const j=Object.assign(D,{id:I});if(r.add(e,j),I===is)return null;S&&S(e);let A=!h;if(j.type===qo.Element){A=A&&!j.needBlock,delete j.needBlock;const t=e.shadowRoot;t&&Ko(t)&&(j.isShadowHost=!0)}if((j.type===qo.Document||j.type===qo.Element)&&A){v.headWhitespace&&j.type===qo.Element&&"head"===j.tagName&&(N=!1);const t={doc:n,mirror:r,blockClass:o,blockSelector:s,maskAllText:i,unblockSelector:a,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:h,inlineStylesheet:p,maskInputOptions:m,maskAttributeFn:f,maskTextFn:_,maskInputFn:g,slimDOMOptions:v,dataURLOptions:y,inlineImages:b,recordCanvas:w,preserveWhiteSpace:N,onSerialize:S,onIframeLoad:k,iframeLoadTimeout:C,onStylesheetLoad:E,stylesheetLoadTimeout:x,keepIframeSrcFn:T};for(const n of Array.from(e.childNodes)){const e=Os(n,t);e&&j.childNodes.push(e)}if(function(e){return e.nodeType===e.ELEMENT_NODE}(e)&&e.shadowRoot)for(const n of Array.from(e.shadowRoot.childNodes)){const r=Os(n,t);r&&(Ko(e.shadowRoot)&&(r.isShadow=!0),j.childNodes.push(r))}}return e.parentNode&&Go(e.parentNode)&&Ko(e.parentNode)&&(j.isShadow=!0),j.type===qo.Element&&"iframe"===j.tagName&&function(e,t,n){const r=e.contentWindow;if(!r)return;let o,s=!1;try{o=r.document.readyState}catch(i){return}if("complete"!==o){const r=setTimeout((()=>{s||(t(),s=!0)}),n);return void e.addEventListener("load",(()=>{clearTimeout(r),s=!0,t()}))}const a="about:blank";if(r.location.href!==a||e.src===a||""===e.src)return setTimeout(t,0),e.addEventListener("load",t);e.addEventListener("load",t)}(e,(()=>{const t=e.contentDocument;if(t&&k){const n=Os(t,{doc:t,mirror:r,blockClass:o,blockSelector:s,unblockSelector:a,maskAllText:i,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:p,maskInputOptions:m,maskAttributeFn:f,maskTextFn:_,maskInputFn:g,slimDOMOptions:v,dataURLOptions:y,inlineImages:b,recordCanvas:w,preserveWhiteSpace:N,onSerialize:S,onIframeLoad:k,iframeLoadTimeout:C,onStylesheetLoad:E,stylesheetLoadTimeout:x,keepIframeSrcFn:T});n&&k(e,n)}}),C),j.type===qo.Element&&"link"===j.tagName&&"stylesheet"===j.attributes.rel&&function(e,t,n){let r,o=!1;try{r=e.sheet}catch(a){return}if(r)return;const s=setTimeout((()=>{o||(t(),o=!0)}),n);e.addEventListener("load",(()=>{clearTimeout(s),o=!0,t()}))}(e,(()=>{if(E){const t=Os(e,{doc:n,mirror:r,blockClass:o,blockSelector:s,unblockSelector:a,maskAllText:i,maskTextClass:c,unmaskTextClass:l,maskTextSelector:d,unmaskTextSelector:u,skipChild:!1,inlineStylesheet:p,maskInputOptions:m,maskAttributeFn:f,maskTextFn:_,maskInputFn:g,slimDOMOptions:v,dataURLOptions:y,inlineImages:b,recordCanvas:w,preserveWhiteSpace:N,onSerialize:S,onIframeLoad:k,iframeLoadTimeout:C,onStylesheetLoad:E,stylesheetLoadTimeout:x,keepIframeSrcFn:T});t&&E(e,t)}}),x),j}function Ns(e){let t,n=e[0],r=1;for(;r2&&void 0!==arguments[2]?arguments[2]:document;const r={capture:!0,passive:!0};return n.addEventListener(e,t,r),()=>n.removeEventListener(e,t,r)}const Is="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let js={map:{},getId:()=>(console.error(Is),-1),getNode:()=>(console.error(Is),null),removeNodeFromMap(){console.error(Is)},has:()=>(console.error(Is),!1),reset(){console.error(Is)}};function As(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=null,o=0;return function(){for(var s=arguments.length,a=new Array(s),i=0;it?(r&&(!function(){$s("clearTimeout")(...arguments)}(r),r=null),o=c,e.apply(d,a)):r||!1===n.trailing||(r=ea((()=>{o=!1===n.leading?0:Date.now(),r=null,e.apply(d,a)}),l))}}function Ms(e,t,n,r){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:window;const s=o.Object.getOwnPropertyDescriptor(e,t);return o.Object.defineProperty(e,t,r?n:{set(e){ea((()=>{n.set.call(this,e)}),0),s&&s.set&&s.set.call(this,e)}}),()=>Ms(e,t,s||{},!0)}function Rs(e,t,n){try{if(!(t in e))return()=>{};const r=e[t],o=n(r);return"function"===typeof o&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),e[t]=o,()=>{e[t]=r}}catch(r){return()=>{}}}"undefined"!==typeof window&&window.Proxy&&window.Reflect&&(js=new Proxy(js,{get:(e,t,n)=>("map"===t&&console.error(Is),Reflect.get(e,t,n))}));let Fs=Date.now;function Ls(e){const t=e.document;return{left:t.scrollingElement?t.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:Ns([t,"optionalAccess",e=>e.documentElement,"access",e=>e.scrollLeft])||Ns([t,"optionalAccess",e=>e.body,"optionalAccess",e=>e.parentElement,"optionalAccess",e=>e.scrollLeft])||Ns([t,"optionalAccess",e=>e.body,"optionalAccess",e=>e.scrollLeft])||0,top:t.scrollingElement?t.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:Ns([t,"optionalAccess",e=>e.documentElement,"access",e=>e.scrollTop])||Ns([t,"optionalAccess",e=>e.body,"optionalAccess",e=>e.parentElement,"optionalAccess",e=>e.scrollTop])||Ns([t,"optionalAccess",e=>e.body,"optionalAccess",e=>e.scrollTop])||0}}function zs(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function Ps(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Bs(e){if(!e)return null;return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}function Ws(e,t,n,r,o){if(!e)return!1;const s=Bs(e);if(!s)return!1;const a=Cs(t,n);if(!o){const e=r&&s.matches(r);return a(s)&&!e}const i=ks(s,a);let c=-1;return!(i<0)&&(r&&(c=ks(s,Cs(null,r))),i>-1&&c<0||ie.shadowRoot]))}/[1-9][0-9]{12}/.test(Date.now().toString())||(Fs=()=>(new Date).getTime());class Ks{constructor(){this.id=1,this.styleIDMap=new WeakMap,this.idStyleMap=new Map}getId(e){return t=this.styleIDMap.get(e),n=()=>-1,null!=t?t:n();var t,n}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let n;return n=void 0===t?this.id++:t,this.styleIDMap.set(e,n),this.idStyleMap.set(n,e),n}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}}function Ys(e){let t=null;return Ns([e,"access",e=>e.getRootNode,"optionalCall",e=>e(),"optionalAccess",e=>e.nodeType])===Node.DOCUMENT_FRAGMENT_NODE&&e.getRootNode().host&&(t=e.getRootNode().host),t}function Zs(e){const t=e.ownerDocument;if(!t)return!1;const n=function(e){let t,n=e;for(;t=Ys(n);)n=t;return n}(e);return t.contains(n)}function Xs(e){const t=e.ownerDocument;return!!t&&(t.contains(e)||Zs(e))}const Qs={};function $s(e){const t=Qs[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"===typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(o){}return Qs[e]=r.bind(window)}function ea(){return $s("setTimeout")(...arguments)}var ta=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(ta||{}),na=(e=>(e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e))(na||{}),ra=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(ra||{}),oa=(e=>(e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e))(oa||{});function sa(e){let t,n=e[0],r=1;for(;r=this.length)throw new Error("Position outside of list range");let t=this.head;for(let n=0;ne.next])||null;return t}addNode(e){const t={value:e,previous:null,next:null};if(e.__ln=t,e.previousSibling&&aa(e.previousSibling)){const n=e.previousSibling.__ln.next;t.next=n,t.previous=e.previousSibling.__ln,e.previousSibling.__ln.next=t,n&&(n.previous=t)}else if(e.nextSibling&&aa(e.nextSibling)&&e.nextSibling.__ln.previous){const n=e.nextSibling.__ln.previous;t.previous=n,t.next=e.nextSibling.__ln,e.nextSibling.__ln.previous=t,n&&(n.next=t)}else this.head&&(this.head.previous=t),t.next=this.head,this.head=t;null===t.next&&(this.tail=t),this.length++}removeNode(e){const t=e.__ln;this.head&&(t.previous?(t.previous.next=t.next,t.next?t.next.previous=t.previous:this.tail=t.previous):(this.head=t.next,this.head?this.head.previous=null:this.tail=null),e.__ln&&delete e.__ln,this.length--)}}const ca=(e,t)=>"".concat(e,"@").concat(t);class la{constructor(){this.frozen=!1,this.locked=!1,this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.mapRemoves=[],this.movedMap={},this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.processMutations=e=>{e.forEach(this.processMutation),this.emit()},this.emit=()=>{if(this.frozen||this.locked)return;const e=[],t=new Set,n=new ia,r=e=>{let t=e,n=is;for(;n===is;)t=t&&t.nextSibling,n=t&&this.mirror.getId(t);return n},o=o=>{if(!o.parentNode||!Xs(o))return;const s=Go(o.parentNode)?this.mirror.getId(Ys(o)):this.mirror.getId(o.parentNode),a=r(o);if(-1===s||-1===a)return n.addNode(o);const i=Os(o,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskAllText:this.maskAllText,unblockSelector:this.unblockSelector,maskTextClass:this.maskTextClass,unmaskTextClass:this.unmaskTextClass,maskTextSelector:this.maskTextSelector,unmaskTextSelector:this.unmaskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskAttributeFn:this.maskAttributeFn,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:e=>{Vs(e,this.mirror)&&this.iframeManager.addIframe(e),qs(e,this.mirror)&&this.stylesheetManager.trackLinkElement(e),Gs(o)&&this.shadowDomManager.addShadowRoot(o.shadowRoot,this.doc)},onIframeLoad:(e,t)=>{this.iframeManager.attachIframe(e,t),this.shadowDomManager.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{this.stylesheetManager.attachLinkElement(e,t)}});i&&(e.push({parentId:s,nextId:a,node:i}),t.add(i.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(const i of this.movedSet)ua(this.removes,i,this.mirror)&&!this.movedSet.has(i.parentNode)||o(i);for(const i of this.addedSet)pa(this.droppedSet,i)||ua(this.removes,i,this.mirror)?pa(this.movedSet,i)?o(i):this.droppedSet.add(i):o(i);let s=null;for(;n.length;){let e=null;if(s){const t=this.mirror.getId(s.value.parentNode),n=r(s.value);-1!==t&&-1!==n&&(e=s)}if(!e){let t=n.tail;for(;t;){const n=t;if(t=t.previous,n){const t=this.mirror.getId(n.value.parentNode);if(-1===r(n.value))continue;if(-1!==t){e=n;break}{const t=n.value;if(t.parentNode&&t.parentNode.nodeType===Node.DOCUMENT_FRAGMENT_NODE){const r=t.parentNode.host;if(-1!==this.mirror.getId(r)){e=n;break}}}}}}if(!e){for(;n.head;)n.removeNode(n.head.value);break}s=e.previous,n.removeNode(e.value),o(e.value)}const a={texts:this.texts.map((e=>({id:this.mirror.getId(e.node),value:e.value}))).filter((e=>!t.has(e.id))).filter((e=>this.mirror.has(e.id))),attributes:this.attributes.map((e=>{const{attributes:t}=e;if("string"===typeof t.style){const n=JSON.stringify(e.styleDiff),r=JSON.stringify(e._unchangedStyles);n.length!t.has(e.id))).filter((e=>this.mirror.has(e.id))),removes:this.removes,adds:e};(a.texts.length||a.attributes.length||a.removes.length||a.adds.length)&&(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.movedMap={},this.mutationCb(a))},this.processMutation=e=>{if(!Us(e.target,this.mirror))switch(e.type){case"characterData":{const t=e.target.textContent;Ws(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||t===e.oldValue||this.texts.push({value:Es(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,this.maskAllText)&&t?this.maskTextFn?this.maskTextFn(t,Bs(e.target)):t.replace(/[\S]/g,"*"):t,node:e.target});break}case"attributes":{const n=e.target;let r=e.attributeName,o=e.target.getAttribute(r);if("value"===r){const t=rs(n),r=n.tagName;o=os(n,r,t);const s=Qo({maskInputOptions:this.maskInputOptions,tagName:r,type:t});o=$o({isMasked:Es(e.target,this.maskTextClass,this.maskTextSelector,this.unmaskTextClass,this.unmaskTextSelector,s),element:n,value:o,maskInputFn:this.maskInputFn})}if(Ws(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||o===e.oldValue)return;let s=this.attributeMap.get(e.target);if("IFRAME"===n.tagName&&"src"===r&&!this.keepIframeSrcFn(o)){if(n.contentDocument)return;r="rr_src"}if(s||(s={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(s),this.attributeMap.set(e.target,s)),"type"===r&&"INPUT"===n.tagName&&"password"===(e.oldValue||"").toLowerCase()&&n.setAttribute("data-rr-is-password","true"),!Ss(n.tagName,r)&&(s.attributes[r]=ws(this.doc,es(n.tagName),es(r),o,n,this.maskAttributeFn),"style"===r)){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch(t){this.unattachedDoc=this.doc}const r=this.unattachedDoc.createElement("span");e.oldValue&&r.setAttribute("style",e.oldValue);for(const e of Array.from(n.style)){const t=n.style.getPropertyValue(e),o=n.style.getPropertyPriority(e);t!==r.style.getPropertyValue(e)||o!==r.style.getPropertyPriority(e)?s.styleDiff[e]=""===o?t:[t,o]:s._unchangedStyles[e]=[t,o]}for(const e of Array.from(r.style))""===n.style.getPropertyValue(e)&&(s.styleDiff[e]=!1)}break}case"childList":if(Ws(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!0))return;e.addedNodes.forEach((t=>this.genAdds(t,e.target))),e.removedNodes.forEach((t=>{const n=this.mirror.getId(t),r=Go(e.target)?this.mirror.getId(e.target.host):this.mirror.getId(e.target);Ws(e.target,this.blockClass,this.blockSelector,this.unblockSelector,!1)||Us(t,this.mirror)||!function(e,t){return-1!==t.getId(e)}(t,this.mirror)||(this.addedSet.has(t)?(da(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&-1===n||Js(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[ca(n,r)]?da(this.movedSet,t):this.removes.push({parentId:r,id:n,isShadow:!(!Go(e.target)||!Ko(e.target))||void 0})),this.mapRemoves.push(t))}))}},this.genAdds=(e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!this.addedSet.has(e)&&!this.movedSet.has(e)){if(this.mirror.hasNode(e)){if(Us(e,this.mirror))return;this.movedSet.add(e);let n=null;t&&this.mirror.hasNode(t)&&(n=this.mirror.getId(t)),n&&-1!==n&&(this.movedMap[ca(this.mirror.getId(e),n)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);Ws(e,this.blockClass,this.blockSelector,this.unblockSelector,!1)||(e.childNodes.forEach((e=>this.genAdds(e))),Gs(e)&&e.shadowRoot.childNodes.forEach((t=>{this.processedNodeManager.add(t,this),this.genAdds(t,e)})))}}}init(e){["mutationCb","blockClass","blockSelector","unblockSelector","maskAllText","maskTextClass","unmaskTextClass","maskTextSelector","unmaskTextSelector","inlineStylesheet","maskInputOptions","maskAttributeFn","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach((t=>{this[t]=e[t]}))}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}}function da(e,t){e.delete(t),t.childNodes.forEach((t=>da(e,t)))}function ua(e,t,n){return 0!==e.length&&ha(e,t,n)}function ha(e,t,n){const{parentNode:r}=t;if(!r)return!1;const o=n.getId(r);return!!e.some((e=>e.id===o))||ha(e,r,n)}function pa(e,t){return 0!==e.size&&ma(e,t)}function ma(e,t){const{parentNode:n}=t;return!!n&&(!!e.has(n)||ma(e,n))}let fa;function _a(e){fa=e}function ga(){fa=void 0}const va=e=>{if(!fa)return e;return function(){try{return e(...arguments)}catch(t){if(fa&&!0===fa(t))return()=>{};throw t}}};function ya(e){let t,n=e[0],r=1;for(;re.Zone,"optionalAccess",e=>e.__symbol__,"optionalCall",e=>e("MutationObserver")]);o&&window[o]&&(r=window[o]);const s=new r(va((t=>{e.onMutation&&!1===e.onMutation(t)||n.processMutations.bind(n)(t)})));return s.observe(t,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),s}function ka(e){let{mouseInteractionCb:t,doc:n,mirror:r,blockClass:o,blockSelector:s,unblockSelector:a,sampling:i}=e;if(!1===i.mouseInteraction)return()=>{};const c=!0===i.mouseInteraction||void 0===i.mouseInteraction?{}:i.mouseInteraction,l=[];let d=null;return Object.keys(ra).filter((e=>Number.isNaN(Number(e))&&!e.endsWith("_Departed")&&!1!==c[e])).forEach((e=>{let i=es(e);const c=(e=>n=>{const i=wa(n);if(Ws(i,o,s,a,!0))return;let c=null,l=e;if("pointerType"in n){switch(n.pointerType){case"mouse":c=oa.Mouse;break;case"touch":c=oa.Touch;break;case"pen":c=oa.Pen}c===oa.Touch?ra[e]===ra.MouseDown?l="TouchStart":ra[e]===ra.MouseUp&&(l="TouchEnd"):oa.Pen}else Hs(n)&&(c=oa.Touch);null!==c?(d=c,(l.startsWith("Touch")&&c===oa.Touch||l.startsWith("Mouse")&&c===oa.Mouse)&&(c=null)):ra[e]===ra.Click&&(c=d,d=null);const u=Hs(n)?n.changedTouches[0]:n;if(!u)return;const h=r.getId(i),{clientX:p,clientY:m}=u;va(t)({type:ra[l],id:h,x:p,y:m,...null!==c&&{pointerType:c}})})(e);if(window.PointerEvent)switch(ra[e]){case ra.MouseDown:case ra.MouseUp:i=i.replace("mouse","pointer");break;case ra.TouchStart:case ra.TouchEnd:return}l.push(Ds(i,c,n))})),va((()=>{l.forEach((e=>e()))}))}function Ca(e){let{scrollCb:t,doc:n,mirror:r,blockClass:o,blockSelector:s,unblockSelector:a,sampling:i}=e;return Ds("scroll",va(As(va((e=>{const i=wa(e);if(!i||Ws(i,o,s,a,!0))return;const c=r.getId(i);if(i===n&&n.defaultView){const e=Ls(n.defaultView);t({id:c,x:e.left,y:e.top})}else t({id:c,x:i.scrollLeft,y:i.scrollTop})})),i.scroll||100)),n)}const Ea=["INPUT","TEXTAREA","SELECT"],xa=new WeakMap;function Ta(e){let{inputCb:t,doc:n,mirror:r,blockClass:o,blockSelector:s,unblockSelector:a,ignoreClass:i,ignoreSelector:c,maskInputOptions:l,maskInputFn:d,sampling:u,userTriggeredOnInput:h,maskTextClass:p,unmaskTextClass:m,maskTextSelector:f,unmaskTextSelector:_}=e;function g(e){let t=wa(e);const r=e.isTrusted,u=t&&ts(t.tagName);if("OPTION"===u&&(t=t.parentElement),!t||!u||Ea.indexOf(u)<0||Ws(t,o,s,a,!0))return;const g=t;if(g.classList.contains(i)||c&&g.matches(c))return;const y=rs(t);let b=os(g,u,y),w=!1;const S=Qo({maskInputOptions:l,tagName:u,type:y}),k=Es(t,p,f,m,_,S);"radio"!==y&&"checkbox"!==y||(w=t.checked),b=$o({isMasked:k,element:t,value:b,maskInputFn:d}),v(t,h?{text:b,isChecked:w,userTriggered:r}:{text:b,isChecked:w});const C=t.name;"radio"===y&&C&&w&&n.querySelectorAll('input[type="radio"][name="'.concat(C,'"]')).forEach((e=>{if(e!==t){const t=$o({isMasked:k,element:e,value:os(e,u,y),maskInputFn:d});v(e,h?{text:t,isChecked:!w,userTriggered:!1}:{text:t,isChecked:!w})}}))}function v(e,n){const o=xa.get(e);if(!o||o.text!==n.text||o.isChecked!==n.isChecked){xa.set(e,n);const o=r.getId(e);va(t)({...n,id:o})}}const y=("last"===u.input?["change"]:["input","change"]).map((e=>Ds(e,va(g),n))),b=n.defaultView;if(!b)return()=>{y.forEach((e=>e()))};const w=b.Object.getOwnPropertyDescriptor(b.HTMLInputElement.prototype,"value"),S=[[b.HTMLInputElement.prototype,"value"],[b.HTMLInputElement.prototype,"checked"],[b.HTMLSelectElement.prototype,"value"],[b.HTMLTextAreaElement.prototype,"value"],[b.HTMLSelectElement.prototype,"selectedIndex"],[b.HTMLOptionElement.prototype,"selected"]];return w&&w.set&&y.push(...S.map((e=>Ms(e[0],e[1],{set(){va(g)({target:this,isTrusted:!1})}},!1,b)))),va((()=>{y.forEach((e=>e()))}))}function Oa(e){return function(e,t){if(ja("CSSGroupingRule")&&e.parentRule instanceof CSSGroupingRule||ja("CSSMediaRule")&&e.parentRule instanceof CSSMediaRule||ja("CSSSupportsRule")&&e.parentRule instanceof CSSSupportsRule||ja("CSSConditionRule")&&e.parentRule instanceof CSSConditionRule){const n=Array.from(e.parentRule.cssRules).indexOf(e);t.unshift(n)}else if(e.parentStyleSheet){const n=Array.from(e.parentStyleSheet.cssRules).indexOf(e);t.unshift(n)}return t}(e,[])}function Na(e,t,n){let r,o;return e?(e.ownerNode?r=t.getId(e.ownerNode):o=n.getId(e),{styleId:o,id:r}):{}}function Da(e,t){let{mirror:n,stylesheetManager:r}=e,o=null;o="#document"===t.nodeName?n.getId(t):n.getId(t.host);const s="#document"===t.nodeName?ya([t,"access",e=>e.defaultView,"optionalAccess",e=>e.Document]):ya([t,"access",e=>e.ownerDocument,"optionalAccess",e=>e.defaultView,"optionalAccess",e=>e.ShadowRoot]),a=ya([s,"optionalAccess",e=>e.prototype])?Object.getOwnPropertyDescriptor(ya([s,"optionalAccess",e=>e.prototype]),"adoptedStyleSheets"):void 0;return null!==o&&-1!==o&&s&&a?(Object.defineProperty(t,"adoptedStyleSheets",{configurable:a.configurable,enumerable:a.enumerable,get(){return ya([a,"access",e=>e.get,"optionalAccess",e=>e.call,"call",e=>e(this)])},set(e){const t=ya([a,"access",e=>e.set,"optionalAccess",e=>e.call,"call",t=>t(this,e)]);if(null!==o&&-1!==o)try{r.adoptStyleSheets(e,o)}catch(n){}return t}}),va((()=>{Object.defineProperty(t,"adoptedStyleSheets",{configurable:a.configurable,enumerable:a.enumerable,get:a.get,set:a.set})}))):()=>{}}function Ia(e){const t=e.doc.defaultView;if(!t)return()=>{};const n=Sa(e,e.doc),r=function(e){let{mousemoveCb:t,sampling:n,doc:r,mirror:o}=e;if(!1===n.mousemove)return()=>{};const s="number"===typeof n.mousemove?n.mousemove:50,a="number"===typeof n.mousemoveCallback?n.mousemoveCallback:500;let i,c=[];const l=As(va((e=>{const n=Date.now()-i;t(c.map((e=>(e.timeOffset-=n,e))),e),c=[],i=null})),a),d=va(As(va((e=>{const t=wa(e),{clientX:n,clientY:r}=Hs(e)?e.changedTouches[0]:e;i||(i=Fs()),c.push({x:n,y:r,id:o.getId(t),timeOffset:Fs()-i}),l("undefined"!==typeof DragEvent&&e instanceof DragEvent?na.Drag:e instanceof MouseEvent?na.MouseMove:na.TouchMove)})),s,{trailing:!1})),u=[Ds("mousemove",d,r),Ds("touchmove",d,r),Ds("drag",d,r)];return va((()=>{u.forEach((e=>e()))}))}(e),o=ka(e),s=Ca(e),a=function(e,t){let{viewportResizeCb:n}=e,{win:r}=t,o=-1,s=-1;return Ds("resize",va(As(va((()=>{const e=zs(),t=Ps();o===e&&s===t||(n({width:Number(t),height:Number(e)}),o=e,s=t)})),200)),r)}(e,{win:t}),i=Ta(e),c=function(e){let{mediaInteractionCb:t,blockClass:n,blockSelector:r,unblockSelector:o,mirror:s,sampling:a,doc:i}=e;const c=va((e=>As(va((a=>{const i=wa(a);if(!i||Ws(i,n,r,o,!0))return;const{currentTime:c,volume:l,muted:d,playbackRate:u}=i;t({type:e,id:s.getId(i),currentTime:c,volume:l,muted:d,playbackRate:u})})),a.media||500))),l=[Ds("play",c(0),i),Ds("pause",c(1),i),Ds("seeked",c(2),i),Ds("volumechange",c(3),i),Ds("ratechange",c(4),i)];return va((()=>{l.forEach((e=>e()))}))}(e),l=function(e,t){let{styleSheetRuleCb:n,mirror:r,stylesheetManager:o}=e,{win:s}=t;if(!s.CSSStyleSheet||!s.CSSStyleSheet.prototype)return()=>{};const a=s.CSSStyleSheet.prototype.insertRule;s.CSSStyleSheet.prototype.insertRule=new Proxy(a,{apply:va(((e,t,s)=>{const[a,i]=s,{id:c,styleId:l}=Na(t,r,o.styleMirror);return(c&&-1!==c||l&&-1!==l)&&n({id:c,styleId:l,adds:[{rule:a,index:i}]}),e.apply(t,s)}))});const i=s.CSSStyleSheet.prototype.deleteRule;let c,l;s.CSSStyleSheet.prototype.deleteRule=new Proxy(i,{apply:va(((e,t,s)=>{const[a]=s,{id:i,styleId:c}=Na(t,r,o.styleMirror);return(i&&-1!==i||c&&-1!==c)&&n({id:i,styleId:c,removes:[{index:a}]}),e.apply(t,s)}))}),s.CSSStyleSheet.prototype.replace&&(c=s.CSSStyleSheet.prototype.replace,s.CSSStyleSheet.prototype.replace=new Proxy(c,{apply:va(((e,t,s)=>{const[a]=s,{id:i,styleId:c}=Na(t,r,o.styleMirror);return(i&&-1!==i||c&&-1!==c)&&n({id:i,styleId:c,replace:a}),e.apply(t,s)}))})),s.CSSStyleSheet.prototype.replaceSync&&(l=s.CSSStyleSheet.prototype.replaceSync,s.CSSStyleSheet.prototype.replaceSync=new Proxy(l,{apply:va(((e,t,s)=>{const[a]=s,{id:i,styleId:c}=Na(t,r,o.styleMirror);return(i&&-1!==i||c&&-1!==c)&&n({id:i,styleId:c,replaceSync:a}),e.apply(t,s)}))}));const d={};Aa("CSSGroupingRule")?d.CSSGroupingRule=s.CSSGroupingRule:(Aa("CSSMediaRule")&&(d.CSSMediaRule=s.CSSMediaRule),Aa("CSSConditionRule")&&(d.CSSConditionRule=s.CSSConditionRule),Aa("CSSSupportsRule")&&(d.CSSSupportsRule=s.CSSSupportsRule));const u={};return Object.entries(d).forEach((e=>{let[t,s]=e;u[t]={insertRule:s.prototype.insertRule,deleteRule:s.prototype.deleteRule},s.prototype.insertRule=new Proxy(u[t].insertRule,{apply:va(((e,t,s)=>{const[a,i]=s,{id:c,styleId:l}=Na(t.parentStyleSheet,r,o.styleMirror);return(c&&-1!==c||l&&-1!==l)&&n({id:c,styleId:l,adds:[{rule:a,index:[...Oa(t),i||0]}]}),e.apply(t,s)}))}),s.prototype.deleteRule=new Proxy(u[t].deleteRule,{apply:va(((e,t,s)=>{const[a]=s,{id:i,styleId:c}=Na(t.parentStyleSheet,r,o.styleMirror);return(i&&-1!==i||c&&-1!==c)&&n({id:i,styleId:c,removes:[{index:[...Oa(t),a]}]}),e.apply(t,s)}))})})),va((()=>{s.CSSStyleSheet.prototype.insertRule=a,s.CSSStyleSheet.prototype.deleteRule=i,c&&(s.CSSStyleSheet.prototype.replace=c),l&&(s.CSSStyleSheet.prototype.replaceSync=l),Object.entries(d).forEach((e=>{let[t,n]=e;n.prototype.insertRule=u[t].insertRule,n.prototype.deleteRule=u[t].deleteRule}))}))}(e,{win:t}),d=Da(e,e.doc),u=function(e,t){let{styleDeclarationCb:n,mirror:r,ignoreCSSAttributes:o,stylesheetManager:s}=e,{win:a}=t;const i=a.CSSStyleDeclaration.prototype.setProperty;a.CSSStyleDeclaration.prototype.setProperty=new Proxy(i,{apply:va(((e,t,a)=>{const[c,l,d]=a;if(o.has(c))return i.apply(t,[c,l,d]);const{id:u,styleId:h}=Na(ya([t,"access",e=>e.parentRule,"optionalAccess",e=>e.parentStyleSheet]),r,s.styleMirror);return(u&&-1!==u||h&&-1!==h)&&n({id:u,styleId:h,set:{property:c,value:l,priority:d},index:Oa(t.parentRule)}),e.apply(t,a)}))});const c=a.CSSStyleDeclaration.prototype.removeProperty;return a.CSSStyleDeclaration.prototype.removeProperty=new Proxy(c,{apply:va(((e,t,a)=>{const[i]=a;if(o.has(i))return c.apply(t,[i]);const{id:l,styleId:d}=Na(ya([t,"access",e=>e.parentRule,"optionalAccess",e=>e.parentStyleSheet]),r,s.styleMirror);return(l&&-1!==l||d&&-1!==d)&&n({id:l,styleId:d,remove:{property:i},index:Oa(t.parentRule)}),e.apply(t,a)}))}),va((()=>{a.CSSStyleDeclaration.prototype.setProperty=i,a.CSSStyleDeclaration.prototype.removeProperty=c}))}(e,{win:t}),h=e.collectFonts?function(e){let{fontCb:t,doc:n}=e;const r=n.defaultView;if(!r)return()=>{};const o=[],s=new WeakMap,a=r.FontFace;r.FontFace=function(e,t,n){const r=new a(e,t,n);return s.set(r,{family:e,buffer:"string"!==typeof t,descriptors:n,fontSource:"string"===typeof t?t:JSON.stringify(Array.from(new Uint8Array(t)))}),r};const i=Rs(n.fonts,"add",(function(e){return function(n){return ea(va((()=>{const e=s.get(n);e&&(t(e),s.delete(n))})),0),e.apply(this,[n])}}));return o.push((()=>{r.FontFace=a})),o.push(i),va((()=>{o.forEach((e=>e()))}))}(e):()=>{},p=function(e){const{doc:t,mirror:n,blockClass:r,blockSelector:o,unblockSelector:s,selectionCb:a}=e;let i=!0;const c=va((()=>{const e=t.getSelection();if(!e||i&&ya([e,"optionalAccess",e=>e.isCollapsed]))return;i=e.isCollapsed||!1;const c=[],l=e.rangeCount||0;for(let t=0;t{}}(e),f=[];for(const _ of e.plugins)f.push(_.observer(_.callback,t,_.options));return va((()=>{ba.forEach((e=>e.reset())),n.disconnect(),r(),o(),s(),a(),i(),c(),l(),d(),u(),h(),p(),m(),f.forEach((e=>e()))}))}function ja(e){return"undefined"!==typeof window[e]}function Aa(e){return Boolean("undefined"!==typeof window[e]&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}class Ma{constructor(e){this.generateIdFn=e,this.iframeIdToRemoteIdMap=new WeakMap,this.iframeRemoteIdToIdMap=new WeakMap}getId(e,t,n,r){const o=n||this.getIdToRemoteIdMap(e),s=r||this.getRemoteIdToIdMap(e);let a=o.get(t);return a||(a=this.generateIdFn(),o.set(t,a),s.set(a,t)),a}getIds(e,t){const n=this.getIdToRemoteIdMap(e),r=this.getRemoteIdToIdMap(e);return t.map((t=>this.getId(e,t,n,r)))}getRemoteId(e,t,n){const r=n||this.getRemoteIdToIdMap(e);if("number"!==typeof t)return t;const o=r.get(t);return o||-1}getRemoteIds(e,t){const n=this.getRemoteIdToIdMap(e);return t.map((t=>this.getRemoteId(e,t,n)))}reset(e){if(!e)return this.iframeIdToRemoteIdMap=new WeakMap,void(this.iframeRemoteIdToIdMap=new WeakMap);this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}}function Ra(e){let t,n=e[0],r=1;for(;re.loadListener,"optionalCall",t=>t(e)]),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){const t=e;if("rrweb"!==t.data.type||t.origin!==t.data.origin)return;if(!e.source)return;const n=this.crossOriginIframeMap.get(e.source);if(!n)return;const r=this.transformCrossOriginEvent(n,t.data.event);r&&this.wrappedEmit(r,t.data.isCheckout)}transformCrossOriginEvent(e,t){switch(t.type){case ta.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);const n=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,n),this.patchRootIdOnNode(t.data.node,n),{timestamp:t.timestamp,type:ta.IncrementalSnapshot,data:{source:na.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case ta.Meta:case ta.Load:case ta.DomContentLoaded:return!1;case ta.Plugin:return t;case ta.Custom:return this.replaceIds(t.data.payload,e,["id","parentId","previousId","nextId"]),t;case ta.IncrementalSnapshot:switch(t.data.source){case na.Mutation:return t.data.adds.forEach((t=>{this.replaceIds(t,e,["parentId","nextId","previousId"]),this.replaceIdOnNode(t.node,e);const n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(t.node,n)})),t.data.removes.forEach((t=>{this.replaceIds(t,e,["parentId","id"])})),t.data.attributes.forEach((t=>{this.replaceIds(t,e,["id"])})),t.data.texts.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case na.Drag:case na.TouchMove:case na.MouseMove:return t.data.positions.forEach((t=>{this.replaceIds(t,e,["id"])})),t;case na.ViewportResize:return!1;case na.MediaInteraction:case na.MouseInteraction:case na.Scroll:case na.CanvasMutation:case na.Input:return this.replaceIds(t.data,e,["id"]),t;case na.StyleSheetRule:case na.StyleDeclaration:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleId"]),t;case na.Font:return t;case na.Selection:return t.data.ranges.forEach((t=>{this.replaceIds(t,e,["start","end"])})),t;case na.AdoptedStyleSheet:return this.replaceIds(t.data,e,["id"]),this.replaceStyleIds(t.data,e,["styleIds"]),Ra([t,"access",e=>e.data,"access",e=>e.styles,"optionalAccess",e=>e.forEach,"call",t=>t((t=>{this.replaceStyleIds(t,e,["styleId"])}))]),t}}return!1}replace(e,t,n,r){for(const o of r)(Array.isArray(t[o])||"number"===typeof t[o])&&(Array.isArray(t[o])?t[o]=e.getIds(n,t[o]):t[o]=e.getId(n,t[o]));return t}replaceIds(e,t,n){return this.replace(this.crossOriginIframeMirror,e,t,n)}replaceStyleIds(e,t,n){return this.replace(this.crossOriginIframeStyleMirror,e,t,n)}replaceIdOnNode(e,t){this.replaceIds(e,t,["id","rootId"]),"childNodes"in e&&e.childNodes.forEach((e=>{this.replaceIdOnNode(e,t)}))}patchRootIdOnNode(e,t){e.type===qo.Document||e.rootId||(e.rootId=t),"childNodes"in e&&e.childNodes.forEach((e=>{this.patchRootIdOnNode(e,t)}))}}class za{init(){}addShadowRoot(){}observeAttachShadow(){}reset(){}}class Pa{constructor(e){this.shadowDoms=new WeakSet,this.restoreHandlers=[],this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Ko(e))return;if(this.shadowDoms.has(e))return;this.shadowDoms.add(e);const n=Sa({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push((()=>n.disconnect())),this.restoreHandlers.push(Ca({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),ea((()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(e.host)),this.restoreHandlers.push(Da({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))}),0)}observeAttachShadow(e){e.contentWindow&&e.contentDocument&&this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){const n=this;this.restoreHandlers.push(Rs(e.prototype,"attachShadow",(function(e){return function(r){const o=e.call(this,r);return this.shadowRoot&&Xs(this)&&n.addShadowRoot(this.shadowRoot,t),o}})))}reset(){this.restoreHandlers.forEach((e=>{try{e()}catch(t){}})),this.restoreHandlers=[],this.shadowDoms=new WeakSet}}class Ba{reset(){}freeze(){}unfreeze(){}lock(){}unlock(){}snapshot(){}}class Wa{constructor(e){this.trackedLinkElements=new WeakSet,this.styleMirror=new Ks,this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){"_cssText"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(0===e.length)return;const n={id:t,styleIds:[]},r=[];for(const o of e){let e;this.styleMirror.has(o)?e=this.styleMirror.getId(o):(e=this.styleMirror.add(o),r.push({styleId:e,rules:Array.from(o.rules||CSSRule,((e,t)=>({rule:Zo(e),index:t})))})),n.styleIds.push(e)}r.length>0&&(n.styles=r),this.adoptedStyleSheetCb(n)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}}class Ua{constructor(){this.nodeMap=new WeakMap,this.loop=!0,this.periodicallyClear()}periodicallyClear(){!function(){$s("requestAnimationFrame")(...arguments)}((()=>{this.clear(),this.loop&&this.periodicallyClear()}))}inOtherBuffer(e,t){const n=this.nodeMap.get(e);return n&&Array.from(n).some((e=>e!==t))}add(e,t){this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}clear(){this.nodeMap=new WeakMap}destroy(){this.loop=!1}}let Ja,Ha;const Va=new Xo;function qa(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{emit:t,checkoutEveryNms:n,checkoutEveryNth:r,blockClass:o="rr-block",blockSelector:s=null,unblockSelector:a=null,ignoreClass:i="rr-ignore",ignoreSelector:c=null,maskAllText:l=!1,maskTextClass:d="rr-mask",unmaskTextClass:u=null,maskTextSelector:h=null,unmaskTextSelector:p=null,inlineStylesheet:m=!0,maskAllInputs:f,maskInputOptions:_,slimDOMOptions:g,maskAttributeFn:v,maskInputFn:y,maskTextFn:b,maxCanvasSize:w=null,packFn:S,sampling:k={},dataURLOptions:C={},mousemoveWait:E,recordCanvas:x=!1,recordCrossOriginIframes:T=!1,recordAfter:O=("DOMContentLoaded"===e.recordAfter?e.recordAfter:"load"),userTriggeredOnInput:N=!1,collectFonts:D=!1,inlineImages:I=!1,plugins:j,keepIframeSrcFn:A=(()=>!1),ignoreCSSAttributes:M=new Set([]),errorHandler:R,onMutation:F,getCanvasManager:L}=e;_a(R);const z=!T||window.parent===window;let P=!1;if(!z)try{window.parent.document&&(P=!1)}catch(ee){P=!0}if(z&&!t)throw new Error("emit function is required");void 0!==E&&void 0===k.mousemove&&(k.mousemove=E),Va.reset();const B=!0===f?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,radio:!0,checkbox:!0}:void 0!==_?_:{},W=!0===g||"all"===g?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:"all"===g,headMetaDescKeywords:"all"===g}:g||{};let U;!function(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;"NodeList"in t&&!t.NodeList.prototype.forEach&&(t.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in t&&!t.DOMTokenList.prototype.forEach&&(t.DOMTokenList.prototype.forEach=Array.prototype.forEach),Node.prototype.contains||(Node.prototype.contains=function(){for(var t=arguments.length,n=new Array(t),r=0;r{for(const t of j||[])t.eventProcessor&&(e=t.eventProcessor(e));return S&&!P&&(e=S(e)),e};Ja=(e,o)=>{const s=e;if(s.timestamp=Fs(),!zr([ba,"access",e=>e[0],"optionalAccess",e=>e.isFrozen,"call",e=>e()])||s.type===ta.FullSnapshot||s.type===ta.IncrementalSnapshot&&s.data.source===na.Mutation||ba.forEach((e=>e.unfreeze())),z)zr([t,"optionalCall",e=>e(H(s),o)]);else if(P){const e={type:"rrweb",event:H(s),origin:window.location.origin,isCheckout:o};window.parent.postMessage(e,"*")}if(s.type===ta.FullSnapshot)U=s,J=0;else if(s.type===ta.IncrementalSnapshot){if(s.data.source===na.Mutation&&s.data.isAttachIframe)return;J++;const e=r&&J>=r,t=n&&U&&s.timestamp-U.timestamp>n;(e||t)&&$(!0)}};const V=e=>{Ja({type:ta.IncrementalSnapshot,data:{source:na.Mutation,...e}})},q=e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.Scroll,...e}}),G=e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.CanvasMutation,...e}}),K=new Wa({mutationCb:V,adoptedStyleSheetCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.AdoptedStyleSheet,...e}})}),Y="boolean"===typeof __RRWEB_EXCLUDE_IFRAME__&&__RRWEB_EXCLUDE_IFRAME__?new Fa:new La({mirror:Va,mutationCb:V,stylesheetManager:K,recordCrossOriginIframes:T,wrappedEmit:Ja});for(const ne of j||[])ne.getMirror&&ne.getMirror({nodeMirror:Va,crossOriginIframeMirror:Y.crossOriginIframeMirror,crossOriginIframeStyleMirror:Y.crossOriginIframeStyleMirror});const Z=new Ua,X=function(e,t){try{return e?e(t):new Ba}catch(n){return console.warn("Unable to initialize CanvasManager"),new Ba}}(L,{mirror:Va,win:window,mutationCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.CanvasMutation,...e}}),recordCanvas:x,blockClass:o,blockSelector:s,unblockSelector:a,maxCanvasSize:w,sampling:k.canvas,dataURLOptions:C,errorHandler:R}),Q="boolean"===typeof __RRWEB_EXCLUDE_SHADOW_DOM__&&__RRWEB_EXCLUDE_SHADOW_DOM__?new za:new Pa({mutationCb:V,scrollCb:q,bypassOptions:{onMutation:F,blockClass:o,blockSelector:s,unblockSelector:a,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:h,unmaskTextSelector:p,inlineStylesheet:m,maskInputOptions:B,dataURLOptions:C,maskAttributeFn:v,maskTextFn:b,maskInputFn:y,recordCanvas:x,inlineImages:I,sampling:k,slimDOMOptions:W,iframeManager:Y,stylesheetManager:K,canvasManager:X,keepIframeSrcFn:A,processedNodeManager:Z},mirror:Va}),$=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Ja({type:ta.Meta,data:{href:window.location.href,width:Ps(),height:zs()}},e),K.reset(),Q.init(),ba.forEach((e=>e.lock()));const t=function(e,t){const{mirror:n=new Xo,blockClass:r="rr-block",blockSelector:o=null,unblockSelector:s=null,maskAllText:a=!1,maskTextClass:i="rr-mask",unmaskTextClass:c=null,maskTextSelector:l=null,unmaskTextSelector:d=null,inlineStylesheet:u=!0,inlineImages:h=!1,recordCanvas:p=!1,maskAllInputs:m=!1,maskAttributeFn:f,maskTextFn:_,maskInputFn:g,slimDOM:v=!1,dataURLOptions:y,preserveWhiteSpace:b,onSerialize:w,onIframeLoad:S,iframeLoadTimeout:k,onStylesheetLoad:C,stylesheetLoadTimeout:E,keepIframeSrcFn:x=(()=>!1)}=t||{};return Os(e,{doc:e,mirror:n,blockClass:r,blockSelector:o,unblockSelector:s,maskAllText:a,maskTextClass:i,unmaskTextClass:c,maskTextSelector:l,unmaskTextSelector:d,skipChild:!1,inlineStylesheet:u,maskInputOptions:!0===m?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0}:!1===m?{}:m,maskAttributeFn:f,maskTextFn:_,maskInputFn:g,slimDOMOptions:!0===v||"all"===v?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:"all"===v,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:!1===v?{}:v,dataURLOptions:y,inlineImages:h,recordCanvas:p,preserveWhiteSpace:b,onSerialize:w,onIframeLoad:S,iframeLoadTimeout:k,onStylesheetLoad:C,stylesheetLoadTimeout:E,keepIframeSrcFn:x,newlyAddedElement:!1})}(document,{mirror:Va,blockClass:o,blockSelector:s,unblockSelector:a,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:h,unmaskTextSelector:p,inlineStylesheet:m,maskAllInputs:B,maskAttributeFn:v,maskInputFn:y,maskTextFn:b,slimDOM:W,dataURLOptions:C,recordCanvas:x,inlineImages:I,onSerialize:e=>{Vs(e,Va)&&Y.addIframe(e),qs(e,Va)&&K.trackLinkElement(e),Gs(e)&&Q.addShadowRoot(e.shadowRoot,document)},onIframeLoad:(e,t)=>{Y.attachIframe(e,t),Q.observeAttachShadow(e)},onStylesheetLoad:(e,t)=>{K.attachLinkElement(e,t)},keepIframeSrcFn:A});if(!t)return console.warn("Failed to snapshot the document");Ja({type:ta.FullSnapshot,data:{node:t,initialOffset:Ls(window)}}),ba.forEach((e=>e.unlock())),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&K.adoptStyleSheets(document.adoptedStyleSheets,Va.getId(document))};Ha=$;try{const e=[],t=e=>va(Ia)({onMutation:F,mutationCb:V,mousemoveCb:(e,t)=>Ja({type:ta.IncrementalSnapshot,data:{source:t,positions:e}}),mouseInteractionCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.MouseInteraction,...e}}),scrollCb:q,viewportResizeCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.ViewportResize,...e}}),inputCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.Input,...e}}),mediaInteractionCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.MediaInteraction,...e}}),styleSheetRuleCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.StyleSheetRule,...e}}),styleDeclarationCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.StyleDeclaration,...e}}),canvasMutationCb:G,fontCb:e=>Ja({type:ta.IncrementalSnapshot,data:{source:na.Font,...e}}),selectionCb:e=>{Ja({type:ta.IncrementalSnapshot,data:{source:na.Selection,...e}})},customElementCb:e=>{Ja({type:ta.IncrementalSnapshot,data:{source:na.CustomElement,...e}})},blockClass:o,ignoreClass:i,ignoreSelector:c,maskAllText:l,maskTextClass:d,unmaskTextClass:u,maskTextSelector:h,unmaskTextSelector:p,maskInputOptions:B,inlineStylesheet:m,sampling:k,recordCanvas:x,inlineImages:I,userTriggeredOnInput:N,collectFonts:D,doc:e,maskAttributeFn:v,maskInputFn:y,maskTextFn:b,keepIframeSrcFn:A,blockSelector:s,unblockSelector:a,slimDOMOptions:W,dataURLOptions:C,mirror:Va,iframeManager:Y,stylesheetManager:K,shadowDomManager:Q,processedNodeManager:Z,canvasManager:X,ignoreCSSAttributes:M,plugins:zr([j,"optionalAccess",e=>e.filter,"call",e=>e((e=>e.observer)),"optionalAccess",e=>e.map,"call",e=>e((e=>({observer:e.observer,options:e.options,callback:t=>Ja({type:ta.Plugin,data:{plugin:e.name,payload:t}})})))])||[]},{});Y.addLoadListener((n=>{try{e.push(t(n.contentDocument))}catch(r){console.warn(r)}}));const n=()=>{$(),e.push(t(document))};return"interactive"===document.readyState||"complete"===document.readyState?n():(e.push(Ds("DOMContentLoaded",(()=>{Ja({type:ta.DomContentLoaded,data:{}}),"DOMContentLoaded"===O&&n()}))),e.push(Ds("load",(()=>{Ja({type:ta.Load,data:{}}),"load"===O&&n()}),window))),()=>{e.forEach((e=>e())),Z.destroy(),Ha=void 0,ga()}}catch(te){console.warn(te)}}qa.mirror=Va,qa.takeFullSnapshot=function(e){if(!Ha)throw new Error("please take full snapshot after start recording");Ha(e)};const Ga=3;function Ka(e){return e>9999999999?e:1e3*e}function Ya(e){return e>9999999999?e/1e3:e}function Za(e,t){"sentry.transaction"!==t.category&&(["ui.click","ui.input"].includes(t.category)?e.triggerUserActivity():e.checkAndHandleExpiredSession(),e.addUpdate((()=>(e.throttledAddEvent({type:ta.Custom,timestamp:1e3*(t.timestamp||0),data:{tag:"breadcrumb",payload:(0,B.S8)(t,10,1e3)}}),"console"===t.category))))}const Xa="button,a";function Qa(e){return e.closest(Xa)||e}function $a(e){const t=ei(e);return t&&t instanceof Element?Qa(t):t}function ei(e){return function(e){return"object"===typeof e&&!!e&&"target"in e}(e)?e.target:e}let ti;function ni(e){return ti||(ti=[],(0,s.GS)(Mo,"open",(function(e){return function(){if(ti)try{ti.forEach((e=>e()))}catch(o){}for(var t=arguments.length,n=new Array(t),r=0;r{const t=ti?ti.indexOf(e):-1;t>-1&&ti.splice(t,1)}}class ri{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Za;this._lastMutation=0,this._lastScroll=0,this._clicks=[],this._timeout=t.timeout/1e3,this._threshold=t.threshold/1e3,this._scollTimeout=t.scrollTimeout/1e3,this._replay=e,this._ignoreSelector=t.ignoreSelector,this._addBreadcrumbEvent=n}addListeners(){const e=ni((()=>{this._lastMutation=si()}));this._teardown=()=>{e(),this._clicks=[],this._lastMutation=0,this._lastScroll=0}}removeListeners(){this._teardown&&this._teardown(),this._checkClickTimeout&&clearTimeout(this._checkClickTimeout)}handleClick(e,t){if(function(e,t){if(!oi.includes(e.tagName))return!0;if("INPUT"===e.tagName&&!["submit","button"].includes(e.getAttribute("type")||""))return!0;if("A"===e.tagName&&(e.hasAttribute("download")||e.hasAttribute("target")&&"_self"!==e.getAttribute("target")))return!0;if(t&&e.matches(t))return!0;return!1}(t,this._ignoreSelector)||!function(e){return!(!e.data||"number"!==typeof e.data.nodeId||!e.timestamp)}(e))return;const n={timestamp:Ya(e.timestamp),clickBreadcrumb:e,clickCount:0,node:t};this._clicks.some((e=>e.node===n.node&&Math.abs(e.timestamp-n.timestamp)<1))||(this._clicks.push(n),1===this._clicks.length&&this._scheduleCheckClicks())}registerMutation(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Date.now();this._lastMutation=Ya(e)}registerScroll(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Date.now();this._lastScroll=Ya(e)}registerClick(e){const t=Qa(e);this._handleMultiClick(t)}_handleMultiClick(e){this._getClicks(e).forEach((e=>{e.clickCount++}))}_getClicks(e){return this._clicks.filter((t=>t.node===e))}_checkClicks(){const e=[],t=si();this._clicks.forEach((n=>{!n.mutationAfter&&this._lastMutation&&(n.mutationAfter=n.timestamp<=this._lastMutation?this._lastMutation-n.timestamp:void 0),!n.scrollAfter&&this._lastScroll&&(n.scrollAfter=n.timestamp<=this._lastScroll?this._lastScroll-n.timestamp:void 0),n.timestamp+this._timeout<=t&&e.push(n)}));for(const n of e){const e=this._clicks.indexOf(n);e>-1&&(this._generateBreadcrumbs(n),this._clicks.splice(e,1))}this._clicks.length&&this._scheduleCheckClicks()}_generateBreadcrumbs(e){const t=this._replay,n=e.scrollAfter&&e.scrollAfter<=this._scollTimeout,r=e.mutationAfter&&e.mutationAfter<=this._threshold,o=!n&&!r,{clickCount:s,clickBreadcrumb:a}=e;if(o){const n=1e3*Math.min(e.mutationAfter||this._timeout,this._timeout),r=n<1e3*this._timeout?"mutation":"timeout",o={type:"default",message:a.message,timestamp:a.timestamp,category:"ui.slowClickDetected",data:{...a.data,url:Mo.location.href,route:t.getCurrentRoute(),timeAfterClickMs:n,endReason:r,clickCount:s||1}};this._addBreadcrumbEvent(t,o)}else if(s>1){const e={type:"default",message:a.message,timestamp:a.timestamp,category:"ui.multiClick",data:{...a.data,url:Mo.location.href,route:t.getCurrentRoute(),clickCount:s,metric:!0}};this._addBreadcrumbEvent(t,e)}}_scheduleCheckClicks(){this._checkClickTimeout&&clearTimeout(this._checkClickTimeout),this._checkClickTimeout=setTimeout((()=>this._checkClicks()),1e3)}}const oi=["A","BUTTON","INPUT"];function si(){return Date.now()/1e3}function ai(e,t){try{if(!function(e){return e.type===Ga}(t))return;const{source:n}=t.data;if(n===na.Mutation&&e.registerMutation(t.timestamp),n===na.Scroll&&e.registerScroll(t.timestamp),function(e){return e.data.source===na.MouseInteraction}(t)){const{type:n,id:r}=t.data,o=qa.mirror.getNode(r);o instanceof HTMLElement&&n===ra.Click&&e.registerClick(o)}}catch(n){}}function ii(e){return{timestamp:Date.now()/1e3,type:"default",...e}}var ci;!function(e){e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment"}(ci||(ci={}));const li=new Set(["id","class","aria-label","role","name","alt","title","data-test-id","data-testid","disabled","aria-disabled","data-sentry-component"]);function di(e){const t={};for(const n in e)if(li.has(n)){let r=n;"data-testid"!==n&&"data-test-id"!==n||(r="testId"),t[r]=e[n]}return t}const ui=e=>t=>{if(!e.isEnabled())return;const n=function(e){const{target:t,message:n}=function(e){const t="click"===e.name;let n,r=null;try{r=t?$a(e.event):ei(e.event),n=(0,Zn.Hd)(r,{maxStringLength:200})||""}catch(o){n=""}return{target:r,message:n}}(e);return ii({category:"ui.".concat(e.name),...hi(t,n)})}(t);if(!n)return;const r="click"===t.name,o=r?t.event:void 0;!(r&&e.clickDetector&&o&&o.target)||o.altKey||o.metaKey||o.ctrlKey||o.shiftKey||function(e,t,n){e.handleClick(t,n)}(e.clickDetector,n,$a(t.event)),Za(e,n)};function hi(e,t){const n=qa.mirror.getId(e),r=n&&qa.mirror.getNode(n),o=r&&qa.mirror.getMeta(r),s=o&&function(e){return e.type===ci.Element}(o)?o:null;return{message:t,data:s?{nodeId:n,node:{id:n,tagName:s.tagName,textContent:Array.from(s.childNodes).map((e=>e.type===ci.Text&&e.textContent)).filter(Boolean).map((e=>e.trim())).join(""),attributes:di(s.attributes)}}:{}}}function pi(e,t){if(!e.isEnabled())return;e.updateUserActivity();const n=function(e){const{metaKey:t,shiftKey:n,ctrlKey:r,altKey:o,key:s,target:a}=e;if(!a||function(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName||e.isContentEditable}(a)||!s)return null;const i=t||r||o,c=1===s.length;if(!i&&c)return null;const l=(0,Zn.Hd)(a,{maxStringLength:200})||"",d=hi(a,l);return ii({category:"ui.keyDown",message:l,data:{...d.data,metaKey:t,shiftKey:n,ctrlKey:r,altKey:o,key:s}})}(t);n&&Za(e,n)}const mi={resource:function(e){const{entryType:t,initiatorType:n,name:r,responseEnd:o,startTime:s,decodedBodySize:a,encodedBodySize:i,responseStatus:c,transferSize:l}=e;if(["fetch","xmlhttprequest"].includes(n))return null;return{type:"".concat(t,".").concat(n),start:_i(s),end:_i(o),name:r,data:{size:l,statusCode:c,decodedBodySize:a,encodedBodySize:i}}},paint:function(e){const{duration:t,entryType:n,name:r,startTime:o}=e,s=_i(o);return{type:n,name:r,start:s,end:s+t,data:void 0}},navigation:function(e){const{entryType:t,name:n,decodedBodySize:r,duration:o,domComplete:s,encodedBodySize:a,domContentLoadedEventStart:i,domContentLoadedEventEnd:c,domInteractive:l,loadEventStart:d,loadEventEnd:u,redirectCount:h,startTime:p,transferSize:m,type:f}=e;if(0===o)return null;return{type:"".concat(t,".").concat(f),start:_i(p),end:_i(s),name:n,data:{size:m,decodedBodySize:r,encodedBodySize:a,duration:o,domInteractive:l,domContentLoadedEventStart:i,domContentLoadedEventEnd:c,loadEventStart:d,loadEventEnd:u,domComplete:s,redirectCount:h}}}};function fi(e){return mi[e.entryType]?mi[e.entryType](e):null}function _i(e){return((Be.k3||Mo.performance.timeOrigin)+e)/1e3}function gi(e){function t(t){e.performanceEntries.includes(t)||e.performanceEntries.push(t)}function n(e){let{entries:n}=e;n.forEach(t)}const r=[];return["navigation","paint","resource"].forEach((e=>{r.push(Co(e,n))})),r.push(ko((t=>{let{metric:n}=t;e.replayPerformanceEntries.push(function(e){const t=e.entries,n=t[t.length-1],r=n?n.element:void 0,o=e.value,s=_i(o);return{type:"largest-contentful-paint",name:"largest-contentful-paint",start:s,end:s,data:{value:o,size:o,nodeId:r?qa.mirror.getId(r):void 0}}}(n))}))),()=>{r.forEach((e=>e()))}}const vi="undefined"===typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__,yi='var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a>h]=l}else for(o=new n(i),a=0;a>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;ad&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<e))break;p+=m-(1<>=y;p>0;){var M=o[a].s;g[M]=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;Pnt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if("function"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G="undefined"!=typeof TextEncoder&&new TextEncoder,H="undefined"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i>1)),o=0,f=function(t){s[o++]=t};for(i=0;is.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error("Adding invalid event");const n=this._hasEvents?",":"";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push("]",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push("[")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener("message",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&"function"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:"init",success:!0,response:void 0});';function bi(e,t){vi&&(p.vF.info(e),t&&Si(e))}function wi(e,t){vi&&(p.vF.info(e),t&&setTimeout((()=>{Si(e)}),0))}function Si(e){(0,a.ZQ)({category:"console",data:{logger:"replay"},level:"info",message:e},{level:"info"})}class ki extends Error{constructor(){super("Event buffer exceeded maximum size of ".concat(Uo,"."))}}class Ci{constructor(){this.events=[],this._totalSize=0,this.hasCheckout=!1}get hasEvents(){return this.events.length>0}get type(){return"sync"}destroy(){this.events=[]}async addEvent(e){const t=JSON.stringify(e).length;if(this._totalSize+=t,this._totalSize>Uo)throw new ki;this.events.push(e)}finish(){return new Promise((e=>{const t=this.events;this.clear(),e(JSON.stringify(t))}))}clear(){this.events=[],this._totalSize=0,this.hasCheckout=!1}getEarliestTimestamp(){const e=this.events.map((e=>e.timestamp)).sort()[0];return e?Ka(e):null}}class Ei{constructor(e){this._worker=e,this._id=0}ensureReady(){return this._ensureReadyPromise||(this._ensureReadyPromise=new Promise(((e,t)=>{this._worker.addEventListener("message",(n=>{let{data:r}=n;r.success?e():t()}),{once:!0}),this._worker.addEventListener("error",(e=>{t(e)}),{once:!0})}))),this._ensureReadyPromise}destroy(){bi("[Replay] Destroying compression worker"),this._worker.terminate()}postMessage(e,t){const n=this._getAndIncrementId();return new Promise(((r,o)=>{const s=t=>{let{data:a}=t;const i=a;if(i.method===e&&i.id===n){if(this._worker.removeEventListener("message",s),!i.success)return vi&&p.vF.error("[Replay]",i.response),void o(new Error("Error in compression worker"));r(i.response)}};this._worker.addEventListener("message",s),this._worker.postMessage({id:n,method:e,arg:t})}))}_getAndIncrementId(){return this._id++}}class xi{constructor(e){this._worker=new Ei(e),this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1}get hasEvents(){return!!this._earliestTimestamp}get type(){return"worker"}ensureReady(){return this._worker.ensureReady()}destroy(){this._worker.destroy()}addEvent(e){const t=Ka(e.timestamp);(!this._earliestTimestamp||tUo?Promise.reject(new ki):this._sendEventToWorker(n)}finish(){return this._finishRequest()}clear(){this._earliestTimestamp=null,this._totalSize=0,this.hasCheckout=!1,this._worker.postMessage("clear").then(null,(e=>{vi&&p.vF.warn('[Replay] Sending "clear" message to worker failed',e)}))}getEarliestTimestamp(){return this._earliestTimestamp}_sendEventToWorker(e){return this._worker.postMessage("addEvent",e)}async _finishRequest(){const e=await this._worker.postMessage("finish");return this._earliestTimestamp=null,this._totalSize=0,e}}class Ti{constructor(e){this._fallback=new Ci,this._compression=new xi(e),this._used=this._fallback,this._ensureWorkerIsLoadedPromise=this._ensureWorkerIsLoaded()}get type(){return this._used.type}get hasEvents(){return this._used.hasEvents}get hasCheckout(){return this._used.hasCheckout}set hasCheckout(e){this._used.hasCheckout=e}destroy(){this._fallback.destroy(),this._compression.destroy()}clear(){return this._used.clear()}getEarliestTimestamp(){return this._used.getEarliestTimestamp()}addEvent(e){return this._used.addEvent(e)}async finish(){return await this.ensureWorkerIsLoaded(),this._used.finish()}ensureWorkerIsLoaded(){return this._ensureWorkerIsLoadedPromise}async _ensureWorkerIsLoaded(){try{await this._compression.ensureReady()}catch(e){return void bi("[Replay] Failed to load the compression worker, falling back to simple buffer")}await this._switchToCompressionWorker()}async _switchToCompressionWorker(){const{events:e,hasCheckout:t}=this._fallback,n=[];for(const o of e)n.push(this._compression.addEvent(o));this._compression.hasCheckout=t,this._used=this._compression;try{await Promise.all(n)}catch(r){vi&&p.vF.warn("[Replay] Failed to add events when switching buffers.",r)}}}function Oi(e){let{useCompression:t,workerUrl:n}=e;if(t&&window.Worker){const e=function(e){try{const t=e||function(){if("undefined"===typeof __SENTRY_EXCLUDE_REPLAY_WORKER__||!__SENTRY_EXCLUDE_REPLAY_WORKER__)return function(){const e=new Blob([yi]);return URL.createObjectURL(e)}();return""}();if(!t)return;bi("[Replay] Using compression worker".concat(e?" from ".concat(e):""));const n=new Worker(t);return new Ti(n)}catch(t){bi("[Replay] Failed to create compression worker")}}(n);if(e)return e}return bi("[Replay] Using simple buffer"),new Ci}function Ni(){try{return"sessionStorage"in Mo&&!!Mo.sessionStorage}catch(e){return!1}}function Di(e){!function(){if(!Ni())return;try{Mo.sessionStorage.removeItem(Ro)}catch(e){}}(),e.session=void 0}function Ii(e){return void 0!==e&&Math.random()1&&void 0!==arguments[1]?arguments[1]:{};const s=function(e,t){return Ii(e)?"session":!!t&&"buffer"}(t,n),a=ji({sampled:s,previousSessionId:o});return r&&Ai(a),a}function Ri(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:+new Date;return null===e||void 0===t||t<0||0!==t&&e+t<=n}function Fi(e,t){let{maxReplayDuration:n,sessionIdleExpire:r,targetTime:o=Date.now()}=t;return Ri(e.started,n,o)||Ri(e.lastActivity,r,o)}function Li(e,t){let{sessionIdleExpire:n,maxReplayDuration:r}=t;return!!Fi(e,{sessionIdleExpire:n,maxReplayDuration:r})&&("buffer"!==e.sampled||0!==e.segmentId)}function zi(e,t){let{traceInternals:n,sessionIdleExpire:r,maxReplayDuration:o,previousSessionId:s}=e;const a=t.stickySession&&function(e){if(!Ni())return null;try{const t=Mo.sessionStorage.getItem(Ro);if(!t)return null;const n=JSON.parse(t);return wi("[Replay] Loading existing session",e),ji(n)}catch(t){return null}}(n);return a?Li(a,{sessionIdleExpire:r,maxReplayDuration:o})?(wi("[Replay] Session in sessionStorage is expired, creating new one..."),Mi(t,{previousSessionId:a.id})):a:(wi("[Replay] Creating new session",n),Mi(t,{previousSessionId:s}))}function Pi(e,t,n){return!!Wi(e,t)&&(Bi(e,t,n),!0)}async function Bi(e,t,n){if(!e.eventBuffer)return null;try{n&&"buffer"===e.recordingMode&&e.eventBuffer.clear(),n&&(e.eventBuffer.hasCheckout=!0);const r=function(e,t){try{if("function"===typeof t&&function(e){return e.type===ta.Custom}(e))return t(e)}catch(n){return vi&&p.vF.error("[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...",n),null}return e}(t,e.getOptions().beforeAddRecordingEvent);if(!r)return;return await e.eventBuffer.addEvent(r)}catch(r){const t=r&&r instanceof ki?"addEventSizeExceeded":"addEvent";vi&&p.vF.error(r),await e.stop({reason:t});const n=(0,a.KU)();n&&n.recordDroppedEvent("internal_sdk_error","replay")}}function Wi(e,t){if(!e.eventBuffer||e.isPaused()||!e.isEnabled())return!1;const n=Ka(t.timestamp);return!(n+e.timeouts.sessionIdlePausee.getContext().initialTimestamp+e.getOptions().maxReplayDuration)||(bi("[Replay] Skipping event with timestamp ".concat(n," because it is after maxReplayDuration"),e.getOptions()._experiments.traceInternals),!1))}function Ui(e){return!e.type}function Ji(e){return"transaction"===e.type}function Hi(e){return"feedback"===e.type}function Vi(e){const t=function(){const e=(0,a.KU)();if(!e)return!1;const t=e.getTransport();if(!t)return!1;return t.send.__sentry__baseTransport__||!1}();return(n,r)=>{if(!e.isEnabled()||!Ui(n)&&!Ji(n))return;const o=r&&r.statusCode;t&&(!o||o<200||o>=300)||(Ji(n)?function(e,t){const n=e.getContext();t.contexts&&t.contexts.trace&&t.contexts.trace.trace_id&&n.traceIds.size<100&&n.traceIds.add(t.contexts.trace.trace_id)}(e,n):function(e,t){const n=e.getContext();t.event_id&&n.errorIds.size<100&&n.errorIds.add(t.event_id);if("buffer"!==e.recordingMode||!t.tags||!t.tags.replayId)return;const{beforeErrorSampling:r}=e.getOptions();if("function"===typeof r&&!r(t))return;setTimeout((()=>{e.sendBufferedReplayOrFlush()}))}(e,n))}}function qi(e){return t=>{e.isEnabled()&&Ui(t)&&function(e,t){const n=t.exception&&t.exception.values&&t.exception.values[0].value;if("string"!==typeof n)return;if(n.match(/reactjs\.org\/docs\/error-decoder\.html\?invariant=(418|419|422|423|425)/)||n.match(/(does not match server-rendered HTML|Hydration failed because)/i)){Za(e,ii({category:"replay.hydrate-error"}))}}(e,t)}}function Gi(e){const t=arguments.length>1&&void 0!==arguments[1]&&arguments[1]?Vi(e):void 0;return Object.assign(((n,r)=>{if(!e.isEnabled())return n;if(function(e){return"replay_event"===e.type}(n))return delete n.breadcrumbs,n;if(!Ui(n)&&!Ji(n)&&!Hi(n))return n;if(!e.checkAndHandleExpiredSession())return n;if(Hi(n))return e.flush(),n.contexts.feedback.replay_id=e.getSessionId(),function(e,t){e.triggerUserActivity(),e.addUpdate((()=>!t.timestamp||(e.throttledAddEvent({type:ta.Custom,timestamp:1e3*t.timestamp,data:{tag:"breadcrumb",payload:{timestamp:t.timestamp,type:"default",category:"sentry.feedback",data:{feedbackId:t.event_id}}}}),!1)))}(e,n),n;if(function(e,t){return!(e.type||!e.exception||!e.exception.values||!e.exception.values.length)&&!(!t.originalException||!t.originalException.__rrweb__)}(n,r)&&!e.getOptions()._experiments.captureExceptions)return vi&&p.vF.log("[Replay] Ignoring error from rrweb internals",n),null;const o=function(e,t){return"buffer"===e.recordingMode&&t.message!==Lo&&!(!t.exception||t.type)&&Ii(e.getOptions().errorSampleRate)}(e,n);return(o||"session"===e.recordingMode)&&(n.tags={...n.tags,replayId:e.getSessionId()}),t&&t(n,{statusCode:200}),n}),{id:"Replay"})}function Ki(e,t){return t.map((t=>{let{type:n,start:r,end:o,name:s,data:a}=t;const i=e.throttledAddEvent({type:ta.Custom,timestamp:r,data:{tag:"performanceSpan",payload:{op:n,description:s,startTimestamp:r,endTimestamp:o,data:a}}});return"string"===typeof i?Promise.resolve(null):i}))}function Yi(e){return t=>{if(!e.isEnabled())return;const n=function(e){const{from:t,to:n}=e,r=Date.now()/1e3;return{type:"navigation.push",start:r,end:r,name:n,data:{previous:t}}}(t);null!==n&&(e.getContext().urls.push(n.name),e.triggerUserActivity(),e.addUpdate((()=>(Ki(e,[n]),!1))))}}function Zi(e,t){e.isEnabled()&&null!==t&&(function(e,t){return(!vi||!e.getOptions()._experiments.traceInternals)&&(0,Pr.A)(t,(0,a.KU)())}(e,t.name)||e.addUpdate((()=>(Ki(e,[t]),!0))))}function Xi(e){return t=>{if(!e.isEnabled())return;const n=function(e){const{startTimestamp:t,endTimestamp:n,xhr:r}=e,o=r[Kn.Er];if(!t||!n||!o)return null;const{method:s,url:a,status_code:i}=o;return void 0===a?null:{type:"resource.xhr",name:a,start:t/1e3,end:n/1e3,data:{method:s,statusCode:i}}}(t);Zi(e,n)}}function Qi(e,t){if(e)try{if("string"===typeof e)return t.encode(e).length;if(e instanceof URLSearchParams)return t.encode(e.toString()).length;if(e instanceof FormData){const n=ac(e);return t.encode(n).length}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength}catch(n){}}function $i(e){if(!e)return;const t=parseInt(e,10);return isNaN(t)?void 0:t}function ec(e){try{if("string"===typeof e)return[e];if(e instanceof URLSearchParams)return[e.toString()];if(e instanceof FormData)return[ac(e)];if(!e)return[void 0]}catch(t){return vi&&p.vF.warn("[Replay] Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return vi&&p.vF.info("[Replay] Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}function tc(e,t){if(!e)return{headers:{},size:void 0,_meta:{warnings:[t]}};const n={...e._meta},r=n.warnings||[];return n.warnings=[...r,t],e._meta=n,e}function nc(e,t){if(!t)return null;const{startTimestamp:n,endTimestamp:r,url:o,method:a,statusCode:i,request:c,response:l}=t;return{type:e,start:n/1e3,end:r/1e3,name:o,data:(0,s.Ce)({method:a,statusCode:i,request:c,response:l})}}function rc(e){return{headers:{},size:e,_meta:{warnings:["URL_SKIPPED"]}}}function oc(e,t,n){if(!t&&0===Object.keys(e).length)return;if(!t)return{headers:e};if(!n)return{headers:e,size:t};const r={headers:e,size:t},{body:o,warnings:s}=function(e){if(!e||"string"!==typeof e)return{body:e};const t=e.length>Bo,n=function(e){const t=e[0],n=e[e.length-1];return"["===t&&"]"===n||"{"===t&&"}"===n}(e);if(t){const t=e.slice(0,Bo);return n?{body:t,warnings:["MAYBE_JSON_TRUNCATED"]}:{body:"".concat(t,"\u2026"),warnings:["TEXT_TRUNCATED"]}}if(n)try{return{body:JSON.parse(e)}}catch(r){}return{body:e}}(n);return r.body=o,s&&s.length>0&&(r._meta={warnings:s}),r}function sc(e,t){return Object.keys(e).reduce(((n,r)=>{const o=r.toLowerCase();return t.includes(o)&&e[r]&&(n[o]=e[r]),n}),{})}function ac(e){return new URLSearchParams(e).toString()}function ic(e,t){const n=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Mo.document.baseURI;if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith(Mo.location.origin))return e;const n=new URL(e,t);if(n.origin!==new URL(t).origin)return e;const r=n.href;if(!e.endsWith("/")&&r.endsWith("/"))return r.slice(0,-1);return r}(e);return(0,f.Xr)(n,t)}async function cc(e,t,n){try{const r=await async function(e,t,n){const r=Date.now(),{startTimestamp:o=r,endTimestamp:s=r}=t,{url:a,method:i,status_code:c=0,request_body_size:l,response_body_size:d}=e.data,u=ic(a,n.networkDetailAllowUrls)&&!ic(a,n.networkDetailDenyUrls),h=u?function(e,t,n){let{networkCaptureBodies:r,networkRequestHeaders:o}=e;const s=t?function(e,t){if(1===e.length&&"string"!==typeof e[0])return uc(e[0],t);if(2===e.length)return uc(e[1],t);return{}}(t,o):{};if(!r)return oc(s,n,void 0);const a=lc(t),[i,c]=ec(a),l=oc(s,n,i);if(c)return tc(l,c);return l}(n,t.input,l):rc(l),m=await async function(e,t,n,r){let{networkCaptureBodies:o,textEncoder:s,networkResponseHeaders:a}=t;if(!e&&void 0!==r)return rc(r);const i=n?dc(n.headers,a):{};if(!n||!o&&void 0!==r)return oc(i,r,void 0);const[c,l]=await async function(e){const t=function(e){try{return e.clone()}catch(t){vi&&p.vF.warn("[Replay] Failed to clone response body",t)}}(e);if(!t)return[void 0,"BODY_PARSE_ERROR"];try{const e=await function(e){return new Promise(((t,n)=>{const r=setTimeout((()=>n(new Error("Timeout while trying to read response body"))),500);(async function(e){return await e.text()})(e).then((e=>t(e)),(e=>n(e))).finally((()=>clearTimeout(r)))}))}(t);return[e]}catch(n){return vi&&p.vF.warn("[Replay] Failed to get text body from response",n),[void 0,"BODY_PARSE_ERROR"]}}(n),d=function(e,t){let{networkCaptureBodies:n,textEncoder:r,responseBodySize:o,captureDetails:s,headers:a}=t;try{const t=e&&e.length&&void 0===o?Qi(e,r):o;return s?oc(a,t,n?e:void 0):rc(t)}catch(i){return vi&&p.vF.warn("[Replay] Failed to serialize response body",i),oc(a,o,void 0)}}(c,{networkCaptureBodies:o,textEncoder:s,responseBodySize:r,captureDetails:e,headers:i});if(l)return tc(d,l);return d}(u,n,t.response,d);return{startTimestamp:o,endTimestamp:s,url:a,method:i,statusCode:c,request:h,response:m}}(e,t,n),o=nc("resource.fetch",r);Zi(n.replay,o)}catch(r){vi&&p.vF.error("[Replay] Failed to capture fetch breadcrumb",r)}}function lc(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(2===e.length&&"object"===typeof e[1])return e[1].body}function dc(e,t){const n={};return t.forEach((t=>{e.get(t)&&(n[t]=e.get(t))})),n}function uc(e,t){if(!e)return{};const n=e.headers;return n?n instanceof Headers?dc(n,t):Array.isArray(n)?{}:sc(n,t):{}}async function hc(e,t,n){try{const r=function(e,t,n){const r=Date.now(),{startTimestamp:o=r,endTimestamp:s=r,input:a,xhr:i}=t,{url:c,method:l,status_code:d=0,request_body_size:u,response_body_size:h}=e.data;if(!c)return null;if(!i||!ic(c,n.networkDetailAllowUrls)||ic(c,n.networkDetailDenyUrls)){return{startTimestamp:o,endTimestamp:s,url:c,method:l,statusCode:d,request:rc(u),response:rc(h)}}const m=i[Kn.Er],f=m?sc(m.request_headers,n.networkRequestHeaders):{},_=sc(function(e){const t=e.getAllResponseHeaders();if(!t)return{};return t.split("\r\n").reduce(((e,t)=>{const[n,r]=t.split(": ");return e[n.toLowerCase()]=r,e}),{})}(i),n.networkResponseHeaders),[g,v]=n.networkCaptureBodies?ec(a):[void 0],[y,b]=n.networkCaptureBodies?function(e){const t=[];try{return[e.responseText]}catch(n){t.push(n)}try{return function(e,t){try{if("string"===typeof e)return[e];if(e instanceof Document)return[e.body.outerHTML];if("json"===t&&e&&"object"===typeof e)return[JSON.stringify(e)];if(!e)return[void 0]}catch(n){return vi&&p.vF.warn("[Replay] Failed to serialize body",e),[void 0,"BODY_PARSE_ERROR"]}return vi&&p.vF.info("[Replay] Skipping network body because of body type",e),[void 0,"UNPARSEABLE_BODY_TYPE"]}(e.response,e.responseType)}catch(n){t.push(n)}return vi&&p.vF.warn("[Replay] Failed to get xhr response body",...t),[void 0]}(i):[void 0],w=oc(f,u,g),S=oc(_,h,y);return{startTimestamp:o,endTimestamp:s,url:c,method:l,statusCode:d,request:v?tc(w,v):w,response:b?tc(S,b):S}}(e,t,n),o=nc("resource.xhr",r);Zi(n.replay,o)}catch(r){vi&&p.vF.error("[Replay] Failed to capture xhr breadcrumb",r)}}function pc(e,t,n){const{xhr:r,input:o}=t;if(!r)return;const s=Qi(o,n.textEncoder),a=r.getResponseHeader("content-length")?$i(r.getResponseHeader("content-length")):function(e,t,n){try{return Qi("json"===t&&e&&"object"===typeof e?JSON.stringify(e):e,n)}catch(r){return}}(r.response,r.responseType,n.textEncoder);void 0!==s&&(e.data.request_body_size=s),void 0!==a&&(e.data.response_body_size=a)}function mc(e){const t=(0,a.KU)();try{const n=new TextEncoder,{networkDetailAllowUrls:r,networkDetailDenyUrls:o,networkCaptureBodies:s,networkRequestHeaders:a,networkResponseHeaders:i}=e.getOptions(),c={replay:e,textEncoder:n,networkDetailAllowUrls:r,networkDetailDenyUrls:o,networkCaptureBodies:s,networkRequestHeaders:a,networkResponseHeaders:i};t&&t.on?t.on("beforeAddBreadcrumb",((e,t)=>function(e,t,n){if(!t.data)return;try{(function(e){return"xhr"===e.category})(t)&&function(e){return e&&e.xhr}(n)&&(pc(t,n,e),hc(t,n,e)),function(e){return"fetch"===e.category}(t)&&function(e){return e&&e.response}(n)&&(!function(e,t,n){const{input:r,response:o}=t,s=Qi(r?lc(r):void 0,n.textEncoder),a=o?$i(o.headers.get("content-length")):void 0;void 0!==s&&(e.data.request_body_size=s),void 0!==a&&(e.data.response_body_size=a)}(t,n,e),cc(t,n,e))}catch(r){vi&&p.vF.warn("Error when enriching network breadcrumb")}}(c,e,t))):((0,Yn.u)(function(e){return t=>{if(!e.isEnabled())return;const n=function(e){const{startTimestamp:t,endTimestamp:n,fetchData:r,response:o}=e;if(!n)return null;const{method:s,url:a}=r;return{type:"resource.fetch",start:t/1e3,end:n/1e3,name:a,data:{method:s,statusCode:o?o.status:void 0}}}(t);Zi(e,n)}}(e)),(0,Kn.Mn)(Xi(e)))}catch(n){}}let fc=null;const _c=e=>t=>{if(!e.isEnabled())return;const n=function(e){const t=e.getLastBreadcrumb&&e.getLastBreadcrumb();if(fc===t||!t)return null;if(fc=t,!function(e){return!!e.category}(t)||["fetch","xhr","sentry.event","sentry.transaction"].includes(t.category)||t.category.startsWith("ui."))return null;if("console"===t.category)return function(e){const t=e.data&&e.data.arguments;if(!Array.isArray(t)||0===t.length)return ii(e);let n=!1;const r=t.map((e=>{if(!e)return e;if("string"===typeof e)return e.length>Wo?(n=!0,"".concat(e.slice(0,Wo),"\u2026")):e;if("object"===typeof e)try{const t=(0,B.S8)(e,7);return JSON.stringify(t).length>Wo?(n=!0,"".concat(JSON.stringify(t,null,2).slice(0,Wo),"\u2026")):t}catch(t){}return e}));return ii({...e,data:{...e.data,arguments:r,...n?{_meta:{warnings:["CONSOLE_ARG_TRUNCATED"]}}:{}}})}(t);return ii(t)}(t);n&&Za(e,n)};function gc(e){return!(!e||!e.on)}function vc(e){const{jsHeapSizeLimit:t,totalJSHeapSize:n,usedJSHeapSize:r}=e,o=Date.now()/1e3;return{type:"memory",name:"memory",start:o,end:o,data:{memory:{jsHeapSizeLimit:t,totalJSHeapSize:n,usedJSHeapSize:r}}}}function yc(e){let t=!1;return(n,r)=>{if(!e.checkAndHandleExpiredSession())return void(vi&&p.vF.warn("[Replay] Received replay event after session expired."));const o=r||!t;t=!0,e.clickDetector&&ai(e.clickDetector,n),e.addUpdate((()=>{if("buffer"===e.recordingMode&&o&&e.setInitialState(),!Pi(e,n,o))return!0;if(!o)return!1;if(function(e,t){if(!t||!e.session||0!==e.session.segmentId)return;Pi(e,function(e){const t=e.getOptions();return{type:ta.Custom,timestamp:Date.now(),data:{tag:"options",payload:{shouldRecordCanvas:e.isRecordingCanvas(),sessionSampleRate:t.sessionSampleRate,errorSampleRate:t.errorSampleRate,useCompressionOption:t.useCompression,blockAllMedia:t.blockAllMedia,maskAllText:t.maskAllText,maskAllInputs:t.maskAllInputs,useCompression:!!e.eventBuffer&&"worker"===e.eventBuffer.type,networkDetailHasUrls:t.networkDetailAllowUrls.length>0,networkCaptureBodies:t.networkCaptureBodies,networkRequestHasHeaders:t.networkRequestHeaders.length>0,networkResponseHasHeaders:t.networkResponseHeaders.length>0}}}}(e),!1)}(e,o),e.session&&e.session.previousSessionId)return!0;if("buffer"===e.recordingMode&&e.session&&e.eventBuffer){const t=e.eventBuffer.getEarliestTimestamp();t&&(bi("[Replay] Updating session start time to earliest event in buffer to ".concat(new Date(t)),e.getOptions()._experiments.traceInternals),e.session.started=t,e.getOptions().stickySession&&Ai(e.session))}return"session"===e.recordingMode&&e.flush(),!0}))}}async function bc(e){let{recordingData:t,replayId:n,segmentId:r,eventContext:o,timestamp:s,session:i}=e;const c=function(e){let t,{recordingData:n,headers:r}=e;const o="".concat(JSON.stringify(r),"\n");if("string"===typeof n)t="".concat(o).concat(n);else{const e=(new TextEncoder).encode(o);t=new Uint8Array(e.length+n.length),t.set(e),t.set(n,e.length)}return t}({recordingData:t,headers:{segment_id:r}}),{urls:l,errorIds:d,traceIds:u,initialTimestamp:h}=o,p=(0,a.KU)(),m=(0,a.o5)(),f=p&&p.getTransport(),_=p&&p.getDsn();if(!p||!f||!_||!i.sampled)return;const g={type:Fo,replay_start_timestamp:h/1e3,timestamp:s/1e3,error_ids:d,trace_ids:u,urls:l,replay_id:n,segment_id:r,replay_type:i.sampled},v=await async function(e){let{client:t,scope:n,replayId:r,event:o}=e;const s={event_id:r,integrations:"object"!==typeof t._integrations||null===t._integrations||Array.isArray(t._integrations)?void 0:Object.keys(t._integrations)};t.emit&&t.emit("preprocessEvent",o,s);const a=await(0,we.mG)(t.getOptions(),o,s,n,t,(0,me.rm)());if(!a)return null;a.platform=a.platform||"javascript";const i=t.getSdkMetadata&&t.getSdkMetadata(),{name:c,version:l}=i&&i.sdk||{};return a.sdk={...a.sdk,name:c||"sentry.javascript.unknown",version:l||"0.0.0"},a}({scope:m,client:p,replayId:n,event:g});if(!v)return p.recordDroppedEvent("event_processor","replay",g),void bi("An event processor returned `null`, will not send event.");delete v.sdkProcessingMetadata;const y=function(e,t,n,r){return W(Z(e,Y(e),r,n),[[{type:"replay_event"},e],[{type:"replay_recording",length:"string"===typeof t?(new TextEncoder).encode(t).length:t.length},t]])}(v,c,_,p.getOptions().tunnel);let b;try{b=await f.send(y)}catch(S){const e=new Error(Lo);try{e.cause=S}catch(k){}throw e}if(!b)return b;if("number"===typeof b.statusCode&&(b.statusCode<200||b.statusCode>=300))throw new wc(b.statusCode);const w=Ct({},b);if(kt(w,"replay"))throw new Sc(w);return b}class wc extends Error{constructor(e){super("Transport returned status code ".concat(e))}}class Sc extends Error{constructor(e){super("Rate limit hit"),this.rateLimits=e}}async function kc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{count:0,interval:5e3};const{recordingData:n,options:r}=e;if(n.length)try{return await bc(e),!0}catch(o){if(o instanceof wc||o instanceof Sc)throw o;if((0,a.o)("Replays",{_retryCount:t.count}),vi&&r._experiments&&r._experiments.captureExceptions&&(0,a.Cp)(o),t.count>=3){const e=new Error("".concat(Lo," - max retries exceeded"));try{e.cause=o}catch(s){}throw e}return t.interval*=++t.count,new Promise(((n,r)=>{setTimeout((async()=>{try{await kc(e,t),n(!0)}catch(o){r(o)}}),t.interval)}))}}const Cc="__THROTTLED";function Ec(e,t,n){const r=new Map;let o=!1;return function(){const s=Math.floor(Date.now()/1e3);if((e=>{const t=e-n;r.forEach(((e,n)=>{ne+t),0)>=t){const e=o;return o=!0,e?"__SKIPPED":Cc}o=!1;const a=r.get(s)||0;return r.set(s,a+1),e(...arguments)}}class xc{constructor(e){let{options:t,recordingOptions:n}=e;xc.prototype.__init.call(this),xc.prototype.__init2.call(this),xc.prototype.__init3.call(this),xc.prototype.__init4.call(this),xc.prototype.__init5.call(this),xc.prototype.__init6.call(this),this.eventBuffer=null,this.performanceEntries=[],this.replayPerformanceEntries=[],this.recordingMode="session",this.timeouts={sessionIdlePause:3e5,sessionIdleExpire:9e5},this._lastActivity=Date.now(),this._isEnabled=!1,this._isPaused=!1,this._hasInitializedCoreListeners=!1,this._context={errorIds:new Set,traceIds:new Set,urls:[],initialTimestamp:Date.now(),initialUrl:""},this._recordingOptions=n,this._options=t,this._debouncedFlush=function(e,t,n){let r,o,s;const a=n&&n.maxWait?Math.max(n.maxWait,t):0;function i(){return c(),r=e(),r}function c(){void 0!==o&&clearTimeout(o),void 0!==s&&clearTimeout(s),o=s=void 0}function l(){return o&&clearTimeout(o),o=setTimeout(i,t),a&&void 0===s&&(s=setTimeout(i,a)),r}return l.cancel=c,l.flush=function(){return void 0!==o||void 0!==s?i():r},l}((()=>this._flush()),this._options.flushMinDelay,{maxWait:this._options.flushMaxDelay}),this._throttledAddEvent=Ec(((e,t)=>function(e,t,n){return Wi(e,t)?Bi(e,t,n):Promise.resolve(null)}(this,e,t)),300,5);const{slowClickTimeout:r,slowClickIgnoreSelectors:o}=this.getOptions(),s=r?{threshold:Math.min(3e3,r),timeout:r,scrollTimeout:300,ignoreSelector:o?o.join(","):""}:void 0;s&&(this.clickDetector=new ri(this,s))}getContext(){return this._context}isEnabled(){return this._isEnabled}isPaused(){return this._isPaused}isRecordingCanvas(){return Boolean(this._canvas)}getOptions(){return this._options}initializeSampling(e){const{errorSampleRate:t,sessionSampleRate:n}=this._options;t<=0&&n<=0||(this._initializeSessionForSampling(e),this.session?!1!==this.session.sampled&&(this.recordingMode="buffer"===this.session.sampled&&0===this.session.segmentId?"buffer":"session",wi("[Replay] Starting replay in ".concat(this.recordingMode," mode"),this._options._experiments.traceInternals),this._initializeRecording()):this._handleException(new Error("Unable to initialize and create session")))}start(){if(this._isEnabled&&"session"===this.recordingMode)throw new Error("Replay recording is already in progress");if(this._isEnabled&&"buffer"===this.recordingMode)throw new Error("Replay buffering is in progress, call `flush()` to save the replay");wi("[Replay] Starting replay in session mode",this._options._experiments.traceInternals);const e=zi({maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire,traceInternals:this._options._experiments.traceInternals},{stickySession:this._options.stickySession,sessionSampleRate:1,allowBuffering:!1});this.session=e,this._initializeRecording()}startBuffering(){if(this._isEnabled)throw new Error("Replay recording is already in progress");wi("[Replay] Starting replay in buffer mode",this._options._experiments.traceInternals);const e=zi({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration,traceInternals:this._options._experiments.traceInternals},{stickySession:this._options.stickySession,sessionSampleRate:0,allowBuffering:!0});this.session=e,this.recordingMode="buffer",this._initializeRecording()}startRecording(){try{const e=this._canvas;this._stopRecording=qa({...this._recordingOptions,..."buffer"===this.recordingMode&&{checkoutEveryNms:6e4},emit:yc(this),onMutation:this._onMutationHandler,...e?{recordCanvas:e.recordCanvas,getCanvasManager:e.getCanvasManager,sampling:e.sampling,dataURLOptions:e.dataURLOptions}:{}})}catch(e){this._handleException(e)}}stopRecording(){try{return this._stopRecording&&(this._stopRecording(),this._stopRecording=void 0),!0}catch(e){return this._handleException(e),!1}}async stop(){let{forceFlush:e=!1,reason:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this._isEnabled){this._isEnabled=!1;try{bi("[Replay] Stopping Replay".concat(t?" triggered by ".concat(t):""),this._options._experiments.traceInternals),this._removeListeners(),this.stopRecording(),this._debouncedFlush.cancel(),e&&await this._flush({force:!0}),this.eventBuffer&&this.eventBuffer.destroy(),this.eventBuffer=null,Di(this)}catch(n){this._handleException(n)}}}pause(){this._isPaused||(this._isPaused=!0,this.stopRecording(),bi("[Replay] Pausing replay",this._options._experiments.traceInternals))}resume(){this._isPaused&&this._checkSession()&&(this._isPaused=!1,this.startRecording(),bi("[Replay] Resuming replay",this._options._experiments.traceInternals))}async sendBufferedReplayOrFlush(){let{continueRecording:e=!0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("session"===this.recordingMode)return this.flushImmediate();const t=Date.now();bi("[Replay] Converting buffer to session",this._options._experiments.traceInternals),await this.flushImmediate();const n=this.stopRecording();e&&n&&"session"!==this.recordingMode&&(this.recordingMode="session",this.session&&(this._updateUserActivity(t),this._updateSessionActivity(t),this._maybeSaveSession()),this.startRecording())}addUpdate(e){const t=e();"buffer"!==this.recordingMode&&!0!==t&&this._debouncedFlush()}triggerUserActivity(){if(this._updateUserActivity(),this._stopRecording)this.checkAndHandleExpiredSession(),this._updateSessionActivity();else{if(!this._checkSession())return;this.resume()}}updateUserActivity(){this._updateUserActivity(),this._updateSessionActivity()}conditionalFlush(){return"buffer"===this.recordingMode?Promise.resolve():this.flushImmediate()}flush(){return this._debouncedFlush()}flushImmediate(){return this._debouncedFlush(),this._debouncedFlush.flush()}cancelFlush(){this._debouncedFlush.cancel()}getSessionId(){return this.session&&this.session.id}checkAndHandleExpiredSession(){if(!(this._lastActivity&&Ri(this._lastActivity,this.timeouts.sessionIdlePause)&&this.session&&"session"===this.session.sampled))return!!this._checkSession();this.pause()}setInitialState(){const e="".concat(Mo.location.pathname).concat(Mo.location.hash).concat(Mo.location.search),t="".concat(Mo.location.origin).concat(e);this.performanceEntries=[],this.replayPerformanceEntries=[],this._clearContext(),this._context.initialUrl=t,this._context.initialTimestamp=Date.now(),this._context.urls.push(t)}throttledAddEvent(e,t){const n=this._throttledAddEvent(e,t);if(n===Cc){const e=ii({category:"replay.throttled"});this.addUpdate((()=>!Pi(this,{type:5,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e,metric:!0}})))}return n}getCurrentRoute(){const e=this.lastTransaction||(0,a.o5)().getTransaction(),t=(e&&(0,Te.et)(e).data||{})[oe];if(e&&t&&["route","custom"].includes(t))return(0,Te.et)(e).description}_initializeRecording(){this.setInitialState(),this._updateSessionActivity(),this.eventBuffer=Oi({useCompression:this._options.useCompression,workerUrl:this._options.workerUrl}),this._removeListeners(),this._addListeners(),this._isEnabled=!0,this._isPaused=!1,this.startRecording()}_handleException(e){vi&&p.vF.error("[Replay]",e),vi&&this._options._experiments&&this._options._experiments.captureExceptions&&(0,a.Cp)(e)}_initializeSessionForSampling(e){const t=this._options.errorSampleRate>0,n=zi({sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration,traceInternals:this._options._experiments.traceInternals,previousSessionId:e},{stickySession:this._options.stickySession,sessionSampleRate:this._options.sessionSampleRate,allowBuffering:t});this.session=n}_checkSession(){if(!this.session)return!1;const e=this.session;return!Li(e,{sessionIdleExpire:this.timeouts.sessionIdleExpire,maxReplayDuration:this._options.maxReplayDuration})||(this._refreshSession(e),!1)}async _refreshSession(e){this._isEnabled&&(await this.stop({reason:"refresh session"}),this.initializeSampling(e.id))}_addListeners(){try{Mo.document.addEventListener("visibilitychange",this._handleVisibilityChange),Mo.addEventListener("blur",this._handleWindowBlur),Mo.addEventListener("focus",this._handleWindowFocus),Mo.addEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.addListeners(),this._hasInitializedCoreListeners||(!function(e){const t=(0,a.o5)(),n=(0,a.KU)();t.addScopeListener(_c(e)),Vn(ui(e)),Ln(Yi(e)),mc(e);const r=Gi(e,!gc(n));n&&n.addEventProcessor?n.addEventProcessor(r):xe(r),gc(n)&&(n.on("beforeSendEvent",qi(e)),n.on("afterSendEvent",Vi(e)),n.on("createDsc",(t=>{const n=e.getSessionId();n&&e.isEnabled()&&"session"===e.recordingMode&&e.checkAndHandleExpiredSession()&&(t.replay_id=n)})),n.on("startTransaction",(t=>{e.lastTransaction=t})),n.on("finishTransaction",(t=>{e.lastTransaction=t})),n.on("beforeSendFeedback",((t,n)=>{const r=e.getSessionId();n&&n.includeReplay&&e.isEnabled()&&r&&t.contexts&&t.contexts.feedback&&(t.contexts.feedback.replay_id=r)})))}(this),this._hasInitializedCoreListeners=!0)}catch(e){this._handleException(e)}this._performanceCleanupCallback=gi(this)}_removeListeners(){try{Mo.document.removeEventListener("visibilitychange",this._handleVisibilityChange),Mo.removeEventListener("blur",this._handleWindowBlur),Mo.removeEventListener("focus",this._handleWindowFocus),Mo.removeEventListener("keydown",this._handleKeyboardEvent),this.clickDetector&&this.clickDetector.removeListeners(),this._performanceCleanupCallback&&this._performanceCleanupCallback()}catch(e){this._handleException(e)}}__init(){this._handleVisibilityChange=()=>{"visible"===Mo.document.visibilityState?this._doChangeToForegroundTasks():this._doChangeToBackgroundTasks()}}__init2(){this._handleWindowBlur=()=>{const e=ii({category:"ui.blur"});this._doChangeToBackgroundTasks(e)}}__init3(){this._handleWindowFocus=()=>{const e=ii({category:"ui.focus"});this._doChangeToForegroundTasks(e)}}__init4(){this._handleKeyboardEvent=e=>{pi(this,e)}}_doChangeToBackgroundTasks(e){if(!this.session)return;Fi(this.session,{maxReplayDuration:this._options.maxReplayDuration,sessionIdleExpire:this.timeouts.sessionIdleExpire})||(e&&this._createCustomBreadcrumb(e),this.conditionalFlush())}_doChangeToForegroundTasks(e){if(!this.session)return;this.checkAndHandleExpiredSession()?e&&this._createCustomBreadcrumb(e):bi("[Replay] Document has become active, but session has expired")}_updateUserActivity(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Date.now();this._lastActivity=e}_updateSessionActivity(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Date.now();this.session&&(this.session.lastActivity=e,this._maybeSaveSession())}_createCustomBreadcrumb(e){this.addUpdate((()=>{this.throttledAddEvent({type:ta.Custom,timestamp:e.timestamp||0,data:{tag:"breadcrumb",payload:e}})}))}_addPerformanceEntries(){const e=(t=this.performanceEntries,t.map(fi).filter(Boolean)).concat(this.replayPerformanceEntries);var t;return this.performanceEntries=[],this.replayPerformanceEntries=[],Promise.all(Ki(this,e))}_clearContext(){this._context.errorIds.clear(),this._context.traceIds.clear(),this._context.urls=[]}_updateInitialTimestampFromEventBuffer(){const{session:e,eventBuffer:t}=this;if(!e||!t)return;if(e.segmentId)return;const n=t.getEarliestTimestamp();n&&nthis._options.maxReplayDuration+3e4)throw new Error("Session is too long, not sending replay");const n=this._popEventContext(),r=this.session.segmentId++;this._maybeSaveSession();const o=await this.eventBuffer.finish();await kc({replayId:e,recordingData:o,segmentId:r,eventContext:n,session:this.session,options:this.getOptions(),timestamp:t})}catch(t){this._handleException(t),this.stop({reason:"sendReplay"});const e=(0,a.KU)();e&&e.recordDroppedEvent("send_error","replay")}}else vi&&p.vF.error("[Replay] No session or eventBuffer found to flush.")}__init5(){var e=this;this._flush=async function(){let{force:t=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e._isEnabled&&!t)return;if(!e.checkAndHandleExpiredSession())return void(vi&&p.vF.error("[Replay] Attempting to finish replay event after session expired."));if(!e.session)return;const n=e.session.started,r=Date.now()-n;e._debouncedFlush.cancel();const o=re._options.maxReplayDuration+5e3;if(o||s)return bi("[Replay] Session duration (".concat(Math.floor(r/1e3),"s) is too ").concat(o?"short":"long",", not sending replay."),e._options._experiments.traceInternals),void(o&&e._debouncedFlush());const a=e.eventBuffer;if(a&&0===e.session.segmentId&&!a.hasCheckout&&bi("[Replay] Flushing initial segment without checkout.",e._options._experiments.traceInternals),!e._flushLock)return e._flushLock=e._runFlush(),await e._flushLock,void(e._flushLock=void 0);try{await e._flushLock}catch(i){vi&&p.vF.error(i)}finally{e._debouncedFlush()}}}_maybeSaveSession(){this.session&&this._options.stickySession&&Ai(this.session)}__init6(){this._onMutationHandler=e=>{const t=e.length,n=this._options.mutationLimit,r=n&&t>n;if(t>this._options.mutationBreadcrumbLimit||r){const e=ii({category:"replay.mutations",data:{count:t,limit:r}});this._createCustomBreadcrumb(e)}return!r||(this.stop({reason:"mutationLimit",forceFlush:"session"===this.recordingMode}),!1)}}}function Tc(e,t,n,r){const o=[...e,..."string"===typeof r?r.split(","):[],...t];return"undefined"!==typeof n&&("string"===typeof n&&o.push(".".concat(n)),(0,p.pq)((()=>{console.warn("[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.")}))),o.join(",")}const Oc='img,image,svg,video,object,picture,embed,map,audio,link[rel="icon"],link[rel="apple-touch-icon"]',Nc=["content-length","content-type","accept"];let Dc=!1;const Ic=e=>new jc(e);class jc{static __initStatic(){this.id="Replay"}constructor(){let{flushMinDelay:e=zo,flushMaxDelay:t=Po,minReplayDuration:n=Jo,maxReplayDuration:r=Ho,stickySession:o=!0,useCompression:s=!0,workerUrl:a,_experiments:i={},sessionSampleRate:c,errorSampleRate:l,maskAllText:d=!0,maskAllInputs:u=!0,blockAllMedia:h=!0,mutationBreadcrumbLimit:p=750,mutationLimit:m=1e4,slowClickTimeout:f=7e3,slowClickIgnoreSelectors:_=[],networkDetailAllowUrls:g=[],networkDetailDenyUrls:v=[],networkCaptureBodies:y=!0,networkRequestHeaders:b=[],networkResponseHeaders:w=[],mask:S=[],maskAttributes:k=["title","placeholder"],unmask:C=[],block:E=[],unblock:x=[],ignore:T=[],maskFn:O,beforeAddRecordingEvent:N,beforeErrorSampling:D,blockClass:I,blockSelector:j,maskInputOptions:A,maskTextClass:M,maskTextSelector:R,ignoreClass:F}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.name=jc.id;const L=function(e){let{mask:t,unmask:n,block:r,unblock:o,ignore:s,blockClass:a,blockSelector:i,maskTextClass:c,maskTextSelector:l,ignoreClass:d}=e;const u={maskTextSelector:Tc(t,[".sentry-mask","[data-sentry-mask]"],c,l),unmaskTextSelector:Tc(n,[".sentry-unmask","[data-sentry-unmask]"]),blockSelector:Tc(r,[".sentry-block","[data-sentry-block]",'base[href="/"]'],a,i),unblockSelector:Tc(o,[".sentry-unblock","[data-sentry-unblock]"]),ignoreSelector:Tc(s,[".sentry-ignore","[data-sentry-ignore]",'input[type="file"]'],d)};return a instanceof RegExp&&(u.blockClass=a),c instanceof RegExp&&(u.maskTextClass=c),u}({mask:S,unmask:C,block:E,unblock:x,ignore:T,blockClass:I,blockSelector:j,maskTextClass:M,maskTextSelector:R,ignoreClass:F});if(this._recordingOptions={maskAllInputs:u,maskAllText:d,maskInputOptions:{...A||{},password:!0},maskTextFn:O,maskInputFn:O,maskAttributeFn:(e,t,n)=>function(e){let{el:t,key:n,maskAttributes:r,maskAllText:o,privacyOptions:s,value:a}=e;return o?s.unmaskTextSelector&&t.matches(s.unmaskTextSelector)?a:r.includes(n)||"value"===n&&"INPUT"===t.tagName&&["submit","button"].includes(t.getAttribute("type")||"")?a.replace(/[\S]/g,"*"):a:a}({maskAttributes:k,maskAllText:d,privacyOptions:L,key:e,value:t,el:n}),...L,slimDOMOptions:"all",inlineStylesheet:!0,inlineImages:!1,collectFonts:!0,errorHandler:e=>{try{e.__rrweb__=!0}catch(t){}}},this._initialOptions={flushMinDelay:e,flushMaxDelay:t,minReplayDuration:Math.min(n,15e3),maxReplayDuration:Math.min(r,Ho),stickySession:o,sessionSampleRate:c,errorSampleRate:l,useCompression:s,workerUrl:a,blockAllMedia:h,maskAllInputs:u,maskAllText:d,mutationBreadcrumbLimit:p,mutationLimit:m,slowClickTimeout:f,slowClickIgnoreSelectors:_,networkDetailAllowUrls:g,networkDetailDenyUrls:v,networkCaptureBodies:y,networkRequestHeaders:Ac(b),networkResponseHeaders:Ac(w),beforeAddRecordingEvent:N,beforeErrorSampling:D,_experiments:i},"number"===typeof c&&(console.warn("[Replay] You are passing `sessionSampleRate` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure `replaysSessionSampleRate` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ".concat(c," })")),this._initialOptions.sessionSampleRate=c),"number"===typeof l&&(console.warn("[Replay] You are passing `errorSampleRate` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure `replaysOnErrorSampleRate` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ".concat(l," })")),this._initialOptions.errorSampleRate=l),this._initialOptions.blockAllMedia&&(this._recordingOptions.blockSelector=this._recordingOptions.blockSelector?"".concat(this._recordingOptions.blockSelector,",").concat(Oc):Oc),this._isInitialized&&Wr())throw new Error("Multiple Sentry Session Replay instances are not supported");this._isInitialized=!0}get _isInitialized(){return Dc}set _isInitialized(e){Dc=e}setupOnce(){Wr()&&(this._setup(),setTimeout((()=>this._initialize())))}start(){this._replay&&this._replay.start()}startBuffering(){this._replay&&this._replay.startBuffering()}stop(){return this._replay?this._replay.stop({forceFlush:"session"===this._replay.recordingMode}):Promise.resolve()}flush(e){return this._replay&&this._replay.isEnabled()?this._replay.sendBufferedReplayOrFlush(e):Promise.resolve()}getReplayId(){if(this._replay&&this._replay.isEnabled())return this._replay.getSessionId()}_initialize(){this._replay&&(this._maybeLoadFromReplayCanvasIntegration(),this._replay.initializeSampling())}_setup(){const e=function(e){const t=(0,a.KU)(),n=t&&t.getOptions(),r={sessionSampleRate:0,errorSampleRate:0,...(0,s.Ce)(e)};if(!n)return(0,p.pq)((()=>{console.warn("SDK client is not available.")})),r;null==e.sessionSampleRate&&null==e.errorSampleRate&&null==n.replaysSessionSampleRate&&null==n.replaysOnErrorSampleRate&&(0,p.pq)((()=>{console.warn("Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.")}));"number"===typeof n.replaysSessionSampleRate&&(r.sessionSampleRate=n.replaysSessionSampleRate);"number"===typeof n.replaysOnErrorSampleRate&&(r.errorSampleRate=n.replaysOnErrorSampleRate);return r}(this._initialOptions);this._replay=new xc({options:e,recordingOptions:this._recordingOptions})}_maybeLoadFromReplayCanvasIntegration(){try{const e=(0,a.KU)().getIntegrationByName("ReplayCanvas");if(!e)return;this._replay._canvas=e.getOptions()}catch(e){}}}function Ac(e){return[...Nc,...e.map((e=>e.toLowerCase()))]}function Mc(){const e=(0,a.KU)();return e&&e.getIntegrationByName&&e.getIntegrationByName("Replay")}jc.__initStatic();var Rc;function Fc(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return e?e.nodeType!==e.ELEMENT_NODE||r>n?-1:t(e)?r:Fc(e.parentNode,t,n,r+1):-1}function Lc(e,t){return n=>{const r=n;if(null===r)return!1;try{if(e)if("string"===typeof e){if(r.matches(".".concat(e)))return!0}else if(function(e,t){for(let n=e.classList.length;n--;){const r=e.classList[n];if(t.test(r))return!0}return!1}(r,e))return!0;return!(!t||!r.matches(t))}catch(o){return!1}}}!function(e){e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment"}(Rc||(Rc={}));const zc="Please stop import mirror directly. Instead of that,\r\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\r\nor you can use record.mirror to access the mirror instance during recording.";let Pc={map:{},getId:()=>(console.error(zc),-1),getNode:()=>(console.error(zc),null),removeNodeFromMap(){console.error(zc)},has:()=>(console.error(zc),!1),reset(){console.error(zc)}};function Bc(e,t,n,r){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:window;const s=o.Object.getOwnPropertyDescriptor(e,t);return o.Object.defineProperty(e,t,r?n:{set(e){qc((()=>{n.set.call(this,e)}),0),s&&s.set&&s.set.call(this,e)}}),()=>Bc(e,t,s||{},!0)}function Wc(e,t,n){try{if(!(t in e))return()=>{};const r=e[t],o=n(r);return"function"===typeof o&&(o.prototype=o.prototype||{},Object.defineProperties(o,{__rrweb_original__:{enumerable:!1,value:r}})),e[t]=o,()=>{e[t]=r}}catch(r){return()=>{}}}function Uc(e,t,n,r,o){if(!e)return!1;const s=function(e){return e?e.nodeType===e.ELEMENT_NODE?e:e.parentElement:null}(e);if(!s)return!1;const a=Lc(t,n);if(!o){const e=r&&s.matches(r);return a(s)&&!e}const i=Fc(s,a);let c=-1;return!(i<0)&&(r&&(c=Fc(s,Lc(null,r))),i>-1&&c<0||i("map"===t&&console.error(zc),Reflect.get(e,t,n))})),/[1-9][0-9]{12}/.test(Date.now().toString());const Jc={};function Hc(e){const t=Jc[e];if(t)return t;const n=window.document;let r=window[e];if(n&&"function"===typeof n.createElement)try{const t=n.createElement("iframe");t.hidden=!0,n.head.appendChild(t);const o=t.contentWindow;o&&o[e]&&(r=o[e]),n.head.removeChild(t)}catch(o){}return Jc[e]=r.bind(window)}function Vc(){return Hc("requestAnimationFrame")(...arguments)}function qc(){return Hc("setTimeout")(...arguments)}var Gc=(e=>(e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e))(Gc||{});let Kc;const Yc=e=>{if(!Kc)return e;return function(){try{return e(...arguments)}catch(t){if(Kc&&!0===Kc(t))return()=>{};throw t}}};for(var Zc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Xc="undefined"===typeof Uint8Array?[]:new Uint8Array(256),Qc=0;Qc<64;Qc++)Xc[Zc.charCodeAt(Qc)]=Qc;const $c=new Map;const el=(e,t,n)=>{if(!e||!rl(e,t)&&"object"!==typeof e)return;const r=function(e,t){let n=$c.get(e);return n||(n=new Map,$c.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}(n,e.constructor.name);let o=r.indexOf(e);return-1===o&&(o=r.length,r.push(e)),o};function tl(e,t,n){if(e instanceof Array)return e.map((e=>tl(e,t,n)));if(null===e)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray){return{rr_type:e.constructor.name,args:[Object.values(e)]}}if(e instanceof ArrayBuffer){const t=e.constructor.name,n=function(e){var t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t>2],o+=Zc[(3&n[t])<<4|n[t+1]>>4],o+=Zc[(15&n[t+1])<<2|n[t+2]>>6],o+=Zc[63&n[t+2]];return r%3===2?o=o.substring(0,o.length-1)+"=":r%3===1&&(o=o.substring(0,o.length-2)+"=="),o}(e);return{rr_type:t,base64:n}}if(e instanceof DataView){return{rr_type:e.constructor.name,args:[tl(e.buffer,t,n),e.byteOffset,e.byteLength]}}if(e instanceof HTMLImageElement){const t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}if(e instanceof HTMLCanvasElement){return{rr_type:"HTMLImageElement",src:e.toDataURL()}}if(e instanceof ImageData){return{rr_type:e.constructor.name,args:[tl(e.data,t,n),e.width,e.height]}}if(rl(e,t)||"object"===typeof e){return{rr_type:e.constructor.name,index:el(e,t,n)}}return e}const nl=(e,t,n)=>e.map((e=>tl(e,t,n))),rl=(e,t)=>{const n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"].filter((e=>"function"===typeof t[e]));return Boolean(n.find((n=>e instanceof t[n])))};function ol(e,t,n,r,o){const s=[];try{const a=Wc(e.HTMLCanvasElement.prototype,"getContext",(function(e){return function(s){for(var a=arguments.length,i=new Array(a>1?a-1:0),c=1;c{s.forEach((e=>e()))}}function sl(e,t,n,r,o,s,a,i){const c=[],l=Object.getOwnPropertyNames(e);for(const u of l)if(!["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(u))try{if("function"!==typeof e[u])continue;const a=Wc(e,u,(function(e){return function(){for(var a=arguments.length,c=new Array(a),l=0;l{!(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId)&&this.rafStamps.invokeId||(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)};const{sampling:t="all",win:n,blockClass:r,blockSelector:o,unblockSelector:s,maxCanvasSize:a,recordCanvas:i,dataURLOptions:c,errorHandler:l}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,this.options=e,l&&(Kc=l),e.enableManualSnapshot||Yc((()=>{i&&"all"===t&&this.initCanvasMutationObserver(n,r,o,s),i&&"number"===typeof t&&this.initCanvasFPSObserver(t,n,r,o,s,a,{dataURLOptions:c})}))()}initCanvasFPSObserver(e,t,n,r,o,s,a){const i=ol(t,n,r,o,!0),c=this.takeSnapshot(!1,e,t,n,r,o,s,a.dataURLOptions);this.resetObservers=()=>{i(),cancelAnimationFrame(c)}}initCanvasMutationObserver(e,t,n,r){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();const o=ol(e,t,n,r,!1),s=function(e,t,n,r,o){const s=[],a=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(const c of a)try{if("function"!==typeof t.CanvasRenderingContext2D.prototype[c])continue;const a=Wc(t.CanvasRenderingContext2D.prototype,c,(function(s){return function(){for(var a=arguments.length,i=new Array(a),l=0;l{const n=nl(i,t,this);e(this.canvas,{type:Gc["2D"],property:c,args:n})}),0),s.apply(this,i)}}));s.push(a)}catch(i){const n=Bc(t.CanvasRenderingContext2D.prototype,c,{set(t){e(this.canvas,{type:Gc["2D"],property:c,args:[t],setter:!0})}});s.push(n)}return()=>{s.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n,r),a=function(e,t,n,r,o,s){const a=[];return a.push(...sl(t.WebGLRenderingContext.prototype,Gc.WebGL,e,n,r,o,0,t)),"undefined"!==typeof t.WebGL2RenderingContext&&a.push(...sl(t.WebGL2RenderingContext.prototype,Gc.WebGL2,e,n,r,o,0,t)),()=>{a.forEach((e=>e()))}}(this.processMutation.bind(this),e,t,n,r,this.mirror);this.resetObservers=()=>{o(),s(),a()}}snapshot(e){const{options:t}=this,n=this.takeSnapshot(!0,"all"===t.sampling?2:t.sampling||2,t.win,t.blockClass,t.blockSelector,t.unblockSelector,t.maxCanvasSize,t.dataURLOptions,e);this.resetObservers=()=>{cancelAnimationFrame(n)}}takeSnapshot(e,t,n,r,o,s,a,i,c){const l=new Map,d=new Worker(function(){const e=new Blob(['for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="undefined"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s="";for(a=0;a>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+"=":r%3==1&&(s=s.substring(0,s.length-2)+"=="),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!("OffscreenCanvas"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+"-"+t;if("OffscreenCanvas"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext("2d");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return""}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext("bitmaprenderer"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:"low"});w.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};']);return URL.createObjectURL(e)}());d.onmessage=e=>{const t=e.data,{id:n}=t;if(l.set(n,!1),!("base64"in t))return;const{base64:r,type:o,width:s,height:a}=t;this.mutationCb({id:n,type:Gc["2D"],commands:[{property:"clearRect",args:[0,0,s,a]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:r}],type:o}]},0,0,s,a]}]})};const u=1e3/t;let h,p=0;const m=t=>{p&&t-p{if(e)return[e];const t=[];return n.document.querySelectorAll("canvas").forEach((e=>{Uc(e,r,o,s,!0)||t.push(e)})),t})(c).forEach((t=>{const n=this.mirror.getId(t);if(!l.get(n)&&t.width&&t.height){if(l.set(n,!0),!e&&["webgl","webgl2"].includes(t.__context)){const e=t.getContext(t.__context);!1===zr([e,"optionalAccess",e=>e.getContextAttributes,"call",e=>e(),"optionalAccess",e=>e.preserveDrawingBuffer])&&e.clear(e.COLOR_BUFFER_BIT)}createImageBitmap(t).then((e=>{d.postMessage({id:n,bitmap:e,width:t.width,height:t.height,dataURLOptions:i,maxCanvasSize:a},[e])})).catch((e=>{Yc((()=>{throw e}))()}))}}))),h=Vc(m)};return h=Vc(m),h}startPendingCanvasMutationFlusher(){Vc((()=>this.flushPendingCanvasMutations()))}startRAFTimestamping(){const e=t=>{this.rafStamps.latestId=t,Vc(e)};Vc(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach(((e,t)=>{const n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)})),Vc((()=>this.flushPendingCanvasMutations()))}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;const n=this.pendingCanvasMutations.get(e);if(!n||-1===t)return;const r=n.map((e=>{const{type:t,...n}=e;return n})),{type:o}=n[0];this.mutationCb({id:t,type:o,commands:r}),this.pendingCanvasMutations.delete(e)}}const il={low:{sampling:{canvas:1},dataURLOptions:{type:"image/webp",quality:.25}},medium:{sampling:{canvas:2},dataURLOptions:{type:"image/webp",quality:.4}},high:{sampling:{canvas:4},dataURLOptions:{type:"image/webp",quality:.5}}},cl="ReplayCanvas",ll=1280,dl=(0,i._C)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[t,n]=e.maxCanvasSize||[],r={quality:e.quality||"medium",enableManualSnapshot:e.enableManualSnapshot,maxCanvasSize:[t?Math.min(t,ll):ll,n?Math.min(n,ll):ll]};let o;const s=new Promise((e=>o=e));return{name:cl,setupOnce(){},getOptions(){const{quality:e,enableManualSnapshot:t,maxCanvasSize:n}=r;return{enableManualSnapshot:t,recordCanvas:!0,getCanvasManager:e=>{const r=new al({...e,enableManualSnapshot:t,maxCanvasSize:n,errorHandler:e=>{try{"object"===typeof e&&(e.__rrweb__=!0)}catch(t){}}});return o(r),r},...il[e||"medium"]||il.medium}},async snapshot(e){(await s).snapshot(e)}}})),ul=(0,i.F)(cl,dl),hl=X.OW,pl="#ffffff",ml="inherit",fl="rgba(108, 95, 199, 1)",_l={fontFamily:"system-ui, 'Helvetica Neue', Arial, sans-serif",fontSize:"14px",background:pl,backgroundHover:"#f6f6f7",foreground:"#2b2233",border:"1.5px solid rgba(41, 35, 47, 0.13)",borderRadius:"25px",boxShadow:"0px 4px 24px 0px rgba(43, 34, 51, 0.12)",success:"#268d75",error:"#df3338",submitBackground:"rgba(88, 74, 192, 1)",submitBackgroundHover:fl,submitBorder:fl,submitOutlineFocus:"#29232f",submitForeground:pl,submitForegroundHover:pl,cancelBackground:"transparent",cancelBackgroundHover:"var(--background-hover)",cancelBorder:"var(--border)",cancelOutlineFocus:"var(--input-outline-focus)",cancelForeground:"var(--foreground)",cancelForegroundHover:"var(--foreground)",inputBackground:ml,inputForeground:ml,inputBorder:"var(--border)",inputOutlineFocus:fl,formBorderRadius:"20px",formContentBorderRadius:"6px"},gl=_l,vl={..._l,background:"#29232f",backgroundHover:"#352f3b",foreground:"#ebe6ef",border:"1.5px solid rgba(235, 230, 239, 0.15)",success:"#2da98c",error:"#f55459"},yl="Report a Bug",bl="Cancel",wl="Send Bug Report",Sl="Report a Bug",kl="your.email@example.org",Cl="Email",El="What's the bug? What did you expect?",xl="Description",Tl="Your Name",Ol="Name",Nl="(required)",Dl="Thank you for your report!",Il="widget",jl="api";async function Al(e){let{feedback:{message:t,email:n,name:r,source:o,url:s}}=e,{includeReplay:i=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const c=(0,a.KU)(),l=c&&c.getTransport(),d=c&&c.getDsn();if(!c||!l||!d)return;const u={contexts:{feedback:{contact_email:n,name:r,message:t,url:s,source:o}},type:"feedback"};return(0,a.v4)((async e=>{e.clearBreadcrumbs(),[jl,Il].includes(String(o))&&e.setLevel("info");const t=await async function(e){let{client:t,scope:n,event:r}=e;const o={};t.emit&&t.emit("preprocessEvent",r,o);const s=await(0,we.mG)(t.getOptions(),r,o,n,t,(0,me.rm)());return null===s?(t.recordDroppedEvent("event_processor","feedback",r),null):(s.platform=s.platform||"javascript",s)}({scope:e,client:c,event:u});if(!t)return;c.emit&&c.emit("beforeSendFeedback",t,{includeReplay:Boolean(i)});const n=pe(t,d,c.getOptions()._metadata,c.getOptions().tunnel);let r;try{r=await l.send(n)}catch(s){const e=new Error("Unable to send Feedback");try{e.cause=s}catch(a){}throw e}if(r){if("number"===typeof r.statusCode&&(r.statusCode<200||r.statusCode>=300))throw new Error("Unable to send Feedback");return r}}))}function Ml(e){let{name:t,email:n,message:r,source:o=jl,url:s=(0,Zn.$N)()}=e,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!r)throw new Error("Unable to submit feedback with empty message");return Al({feedback:{name:t,email:n,message:r,url:s,source:o}},a)}const Rl="undefined"===typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__;function Fl(e,t){return{...e,...t,themeDark:{...e.themeDark,...t.themeDark},themeLight:{...e.themeLight,...t.themeLight}}}function Ll(e){return"\n --background: ".concat(e.background,";\n --background-hover: ").concat(e.backgroundHover,";\n --foreground: ").concat(e.foreground,";\n --error: ").concat(e.error,";\n --success: ").concat(e.success,";\n --border: ").concat(e.border,";\n --border-radius: ").concat(e.borderRadius,";\n --box-shadow: ").concat(e.boxShadow,";\n\n --submit-background: ").concat(e.submitBackground,";\n --submit-background-hover: ").concat(e.submitBackgroundHover,";\n --submit-border: ").concat(e.submitBorder,";\n --submit-outline-focus: ").concat(e.submitOutlineFocus,";\n --submit-foreground: ").concat(e.submitForeground,";\n --submit-foreground-hover: ").concat(e.submitForegroundHover,";\n\n --cancel-background: ").concat(e.cancelBackground,";\n --cancel-background-hover: ").concat(e.cancelBackgroundHover,";\n --cancel-border: ").concat(e.cancelBorder,";\n --cancel-outline-focus: ").concat(e.cancelOutlineFocus,";\n --cancel-foreground: ").concat(e.cancelForeground,";\n --cancel-foreground-hover: ").concat(e.cancelForegroundHover,";\n\n --input-background: ").concat(e.inputBackground,";\n --input-foreground: ").concat(e.inputForeground,";\n --input-border: ").concat(e.inputBorder,";\n --input-outline-focus: ").concat(e.inputOutlineFocus,";\n\n --form-border-radius: ").concat(e.formBorderRadius,";\n --form-content-border-radius: ").concat(e.formContentBorderRadius,";\n ")}function zl(e){let{id:t,colorScheme:n,themeDark:r,themeLight:o}=e;try{const e=hl.document,s=e.createElement("div");s.id=t;const a=s.attachShadow({mode:"open"});return a.appendChild(function(e,t,n){const r=e.createElement("style");return r.textContent="\n:host {\n --bottom: 1rem;\n --right: 1rem;\n --top: auto;\n --left: auto;\n --z-index: 100000;\n --font-family: ".concat(n.light.fontFamily,";\n --font-size: ").concat(n.light.fontSize,";\n\n position: fixed;\n left: var(--left);\n right: var(--right);\n bottom: var(--bottom);\n top: var(--top);\n z-index: var(--z-index);\n\n font-family: var(--font-family);\n font-size: var(--font-size);\n\n ").concat(Ll("dark"===t?n.dark:n.light),"\n}\n\n").concat("system"===t?"\n@media (prefers-color-scheme: dark) {\n :host {\n ".concat(Ll(n.dark),"\n }\n}"):"","\n}"),r}(e,n,{dark:r,light:o})),a.appendChild(function(e){const t=e.createElement("style");return t.textContent="\n.dialog {\n line-height: 25px;\n background-color: rgba(0, 0, 0, 0.05);\n border: none;\n position: fixed;\n inset: 0;\n z-index: 10000;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n}\n\n.dialog:not([open]) {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.dialog:not([open]) .dialog__content {\n transform: translate(0, -16px) scale(0.98);\n}\n\n.dialog__content {\n position: fixed;\n left: var(--left);\n right: var(--right);\n bottom: var(--bottom);\n top: var(--top);\n\n border: var(--border);\n border-radius: var(--form-border-radius);\n background-color: var(--background);\n color: var(--foreground);\n\n width: 320px;\n max-width: 100%;\n max-height: calc(100% - 2rem);\n display: flex;\n flex-direction: column;\n box-shadow: var(--box-shadow);\n transition: transform 0.2s ease-in-out;\n transform: translate(0, 0) scale(1);\n}\n\n.dialog__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 20px;\n font-weight: 600;\n padding: 24px 24px 0 24px;\n margin: 0;\n margin-bottom: 16px;\n}\n\n.brand-link {\n display: inline-flex;\n}\n\n.error {\n color: var(--error);\n margin-bottom: 16px;\n}\n\n.form {\n display: grid;\n overflow: auto;\n flex-direction: column;\n gap: 16px;\n padding: 0 24px 24px;\n}\n\n.form__error-container {\n color: var(--error);\n}\n\n.form__error-container--hidden {\n display: none;\n}\n\n.form__label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin: 0px;\n}\n\n.form__label__text {\n display: grid;\n gap: 4px;\n align-items: center;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n}\n\n.form__label__text--required {\n font-size: 0.85em;\n}\n\n.form__input {\n line-height: inherit;\n background-color: var(--input-background);\n box-sizing: border-box;\n border: var(--input-border);\n border-radius: var(--form-content-border-radius);\n color: var(--input-foreground);\n font-family: inherit;\n font-size: var(--font-size);\n font-weight: 500;\n padding: 6px 12px;\n}\n\n.form__input::placeholder {\n color: var(--input-foreground);\n opacity: 0.65;\n}\n\n.form__input:focus-visible {\n outline: 1px auto var(--input-outline-focus);\n}\n\n.form__input--textarea {\n font-family: inherit;\n resize: vertical;\n}\n\n.btn-group {\n display: grid;\n gap: 8px;\n margin-top: 8px;\n}\n\n.btn {\n line-height: inherit;\n border: var(--cancel-border);\n border-radius: var(--form-content-border-radius);\n cursor: pointer;\n font-family: inherit;\n font-size: var(--font-size);\n font-weight: 600;\n padding: 6px 16px;\n}\n.btn[disabled] {\n opacity: 0.6;\n pointer-events: none;\n}\n\n.btn--primary {\n background-color: var(--submit-background);\n border-color: var(--submit-border);\n color: var(--submit-foreground);\n}\n.btn--primary:hover {\n background-color: var(--submit-background-hover);\n color: var(--submit-foreground-hover);\n}\n.btn--primary:focus-visible {\n outline: 1px auto var(--submit-outline-focus);\n}\n\n.btn--default {\n background-color: var(--cancel-background);\n color: var(--cancel-foreground);\n font-weight: 500;\n}\n.btn--default:hover {\n background-color: var(--cancel-background-hover);\n color: var(--cancel-foreground-hover);\n}\n.btn--default:focus-visible {\n outline: 1px auto var(--cancel-outline-focus);\n}\n\n.success-message {\n background-color: var(--background);\n border: var(--border);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n font-weight: 600;\n color: var(--success);\n padding: 12px 24px;\n line-height: 25px;\n display: grid;\n align-items: center;\n grid-auto-flow: column;\n gap: 6px;\n cursor: default;\n}\n\n.success-icon path {\n fill: var(--success);\n}\n",t}(e)),{shadow:a,host:s}}catch(s){throw p.vF.warn("[Feedback] Browser does not support shadow DOM API"),new Error("Browser does not support shadow DOM API.")}}async function Pl(e,t,n){if(!e)return;e.hideError();try{return await Ml({...t,source:Il},n)}catch(r){Rl&&p.vF.error(r),e&&e.showError("There was a problem submitting feedback, please wait and try again.")}}function Bl(e,t){return Object.entries(t).forEach((t=>{let[n,r]=t;e.setAttributeNS(null,n,r)})),e}const Wl=20,Ul="http://www.w3.org/2000/svg";function Jl(e,t){const n=hl.document.createElement(e);t&&Object.entries(t).forEach((e=>{let[t,r]=e;"className"===t&&"string"===typeof r?n.setAttribute("class",r):"boolean"===typeof r&&r?n.setAttribute(t,""):"string"===typeof r?n.setAttribute(t,r):t.startsWith("on")&&"function"===typeof r&&n.addEventListener(t.substring(2).toLowerCase(),r)}));for(var r=arguments.length,o=new Array(r>2?r-2:0),s=2;shl.document.createElementNS(Ul,e),t=Bl(e("svg"),{class:"feedback-icon",width:"".concat(Wl),height:"".concat(Wl),viewBox:"0 0 ".concat(Wl," ").concat(Wl),fill:"none"}),n=Bl(e("g"),{clipPath:"url(#clip0_57_80)"}),r=Bl(e("path"),{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M15.6622 15H12.3997C12.2129 14.9959 12.031 14.9396 11.8747 14.8375L8.04965 12.2H7.49956V19.1C7.4875 19.3348 7.3888 19.5568 7.22256 19.723C7.05632 19.8892 6.83435 19.9879 6.59956 20H2.04956C1.80193 19.9968 1.56535 19.8969 1.39023 19.7218C1.21511 19.5467 1.1153 19.3101 1.11206 19.0625V12.2H0.949652C0.824431 12.2017 0.700142 12.1783 0.584123 12.1311C0.468104 12.084 0.362708 12.014 0.274155 11.9255C0.185602 11.8369 0.115689 11.7315 0.0685419 11.6155C0.0213952 11.4995 -0.00202913 11.3752 -0.00034808 11.25V3.75C-0.00900498 3.62067 0.0092504 3.49095 0.0532651 3.36904C0.0972798 3.24712 0.166097 3.13566 0.255372 3.04168C0.344646 2.94771 0.452437 2.87327 0.571937 2.82307C0.691437 2.77286 0.82005 2.74798 0.949652 2.75H8.04965L11.8747 0.1625C12.031 0.0603649 12.2129 0.00407221 12.3997 0H15.6622C15.9098 0.00323746 16.1464 0.103049 16.3215 0.278167C16.4966 0.453286 16.5964 0.689866 16.5997 0.9375V3.25269C17.3969 3.42959 18.1345 3.83026 18.7211 4.41679C19.5322 5.22788 19.9878 6.32796 19.9878 7.47502C19.9878 8.62209 19.5322 9.72217 18.7211 10.5333C18.1345 11.1198 17.3969 11.5205 16.5997 11.6974V14.0125C16.6047 14.1393 16.5842 14.2659 16.5395 14.3847C16.4948 14.5035 16.4268 14.6121 16.3394 14.7042C16.252 14.7962 16.147 14.8698 16.0307 14.9206C15.9144 14.9714 15.7891 14.9984 15.6622 15ZM1.89695 10.325H1.88715V4.625H8.33715C8.52423 4.62301 8.70666 4.56654 8.86215 4.4625L12.6872 1.875H14.7247V13.125H12.6872L8.86215 10.4875C8.70666 10.3835 8.52423 10.327 8.33715 10.325H2.20217C2.15205 10.3167 2.10102 10.3125 2.04956 10.3125C1.9981 10.3125 1.94708 10.3167 1.89695 10.325ZM2.98706 12.2V18.1625H5.66206V12.2H2.98706ZM16.5997 9.93612V5.01393C16.6536 5.02355 16.7072 5.03495 16.7605 5.04814C17.1202 5.13709 17.4556 5.30487 17.7425 5.53934C18.0293 5.77381 18.2605 6.06912 18.4192 6.40389C18.578 6.73866 18.6603 7.10452 18.6603 7.47502C18.6603 7.84552 18.578 8.21139 18.4192 8.54616C18.2605 8.88093 18.0293 9.17624 17.7425 9.41071C17.4556 9.64518 17.1202 9.81296 16.7605 9.90191C16.7072 9.91509 16.6536 9.9265 16.5997 9.93612Z"});t.appendChild(n).appendChild(r);const o=e("defs"),s=Bl(e("clipPath"),{id:"clip0_57_80"}),a=Bl(e("rect"),{width:"".concat(Wl),height:"".concat(Wl),fill:"white"});return s.appendChild(a),o.appendChild(s),t.appendChild(o).appendChild(s).appendChild(a),{get el(){return t}}}().el,t?Jl("span",{className:"widget__actor__text"},t):null);return r.addEventListener("click",(function(e){n&&n(e)})),{get el(){return r},show:()=>{r.classList.remove("widget__actor--hidden"),r.setAttribute("aria-hidden","false")},hide:()=>{r.classList.add("widget__actor--hidden"),r.setAttribute("aria-hidden","true")}}}function ql(e,t){const n=e.get(t);return"string"===typeof n?n.trim():""}function Gl(e){let{nameLabel:t,namePlaceholder:n,emailLabel:r,emailPlaceholder:o,messageLabel:s,messagePlaceholder:a,isRequiredLabel:i,cancelButtonLabel:c,submitButtonLabel:l,showName:d,showEmail:u,isNameRequired:h,isEmailRequired:p,defaultName:m,defaultEmail:f,onCancel:_,onSubmit:g}=e;const{el:v}=function(e){let{label:t}=e;return{el:Jl("button",{type:"submit",className:"btn btn--primary","aria-label":t},t)}}({label:l});const y=Jl("div",{className:"form__error-container form__error-container--hidden","aria-hidden":"true"});const b=Jl("input",{id:"name",type:d?"text":"hidden","aria-hidden":d?"false":"true",name:"name",required:h,className:"form__input",placeholder:n,value:m}),w=Jl("input",{id:"email",type:u?"text":"hidden","aria-hidden":u?"false":"true",name:"email",required:p,className:"form__input",placeholder:o,value:f}),S=Jl("textarea",{id:"message",autoFocus:"true",rows:"5",name:"message",required:!0,className:"form__input form__input--textarea",placeholder:a}),k=Jl("button",{type:"button",className:"btn btn--default","aria-label":c,onClick:e=>{_&&_(e)}},c),C=Jl("form",{className:"form",onSubmit:function(e){if(e.preventDefault(),e.target instanceof HTMLFormElement)try{if(g){const t=new FormData(e.target),n={name:ql(t,"name"),email:ql(t,"email"),message:ql(t,"message")};g(n)}}catch(t){}}},[y,d&&Jl("label",{htmlFor:"name",className:"form__label"},[Jl("span",{className:"form__label__text"},t,h&&Jl("span",{className:"form__label__text--required"}," ".concat(i))),b]),!d&&b,u&&Jl("label",{htmlFor:"email",className:"form__label"},[Jl("span",{className:"form__label__text"},r,p&&Jl("span",{className:"form__label__text--required"}," ".concat(i))),w]),!u&&w,Jl("label",{htmlFor:"message",className:"form__label"},[Jl("span",{className:"form__label__text"},s,Jl("span",{className:"form__label__text--required"}," ".concat(i))),S]),Jl("div",{className:"btn-group"},[v,k])]);return{get el(){return C},showError:function(e){y.textContent=e,y.classList.remove("form__error-container--hidden"),y.setAttribute("aria-hidden","false")},hideError:function(){y.textContent="",y.classList.add("form__error-container--hidden"),y.setAttribute("aria-hidden","true")}}}const Kl="http://www.w3.org/2000/svg";function Yl(e){let{formTitle:t,showBranding:n,showName:r,showEmail:o,isNameRequired:s,isEmailRequired:a,colorScheme:i,defaultName:c,defaultEmail:l,onClosed:d,onCancel:u,onSubmit:h,...p}=e,m=null;function f(){m&&(m.open=!1)}const{el:_,showError:g,hideError:v}=Gl({showEmail:o,showName:r,isEmailRequired:a,isNameRequired:s,defaultName:c,defaultEmail:l,onSubmit:h,onCancel:u,...p});return m=Jl("dialog",{className:"dialog",open:!0,onClick:function(){f(),d&&d()}},Jl("div",{className:"dialog__content",onClick:e=>{e.stopPropagation()}},Jl("h2",{className:"dialog__header"},t,n&&Jl("a",{className:"brand-link",target:"_blank",href:"https://sentry.io/welcome/",title:"Powered by Sentry",rel:"noopener noreferrer"},function(e){let{colorScheme:t}=e;const n=e=>hl.document.createElementNS(Kl,e),r=Bl(n("svg"),{class:"sentry-logo",width:"32",height:"30",viewBox:"0 0 72 66",fill:"none"}),o=Bl(n("path"),{transform:"translate(11, 11)",d:"M29,2.26a4.67,4.67,0,0,0-8,0L14.42,13.53A32.21,32.21,0,0,1,32.17,40.19H27.55A27.68,27.68,0,0,0,12.09,17.47L6,28a15.92,15.92,0,0,1,9.23,12.17H4.62A.76.76,0,0,1,4,39.06l2.94-5a10.74,10.74,0,0,0-3.36-1.9l-2.91,5a4.54,4.54,0,0,0,1.69,6.24A4.66,4.66,0,0,0,4.62,44H19.15a19.4,19.4,0,0,0-8-17.31l2.31-4A23.87,23.87,0,0,1,23.76,44H36.07a35.88,35.88,0,0,0-16.41-31.8l4.67-8a.77.77,0,0,1,1.05-.27c.53.29,20.29,34.77,20.66,35.17a.76.76,0,0,1-.68,1.13H40.6q.09,1.91,0,3.81h4.78A4.59,4.59,0,0,0,50,39.43a4.49,4.49,0,0,0-.62-2.28Z"});r.append(o);const s=n("defs"),a=n("style");return a.textContent="\n path {\n fill: ".concat("dark"===t?"#fff":"#362d59",";\n }"),"system"===t&&(a.textContent+="\n @media (prefers-color-scheme: dark) {\n path: {\n fill: '#fff';\n }\n }\n "),s.append(a),r.append(s),{get el(){return r}}}({colorScheme:i}).el)),_)),{get el(){return m},showError:g,hideError:v,open:function(){m&&(m.open=!0)},close:f,checkIsOpen:function(){return m&&!0===m.open||!1}}}const Zl=16,Xl=17,Ql="http://www.w3.org/2000/svg";function $l(e){let{message:t,onRemove:n}=e;function r(){o&&(o.remove(),n&&n())}const o=Jl("div",{className:"success-message",onClick:r},function(){const e=e=>hl.document.createElementNS(Ql,e),t=Bl(e("svg"),{class:"success-icon",width:"".concat(Zl),height:"".concat(Xl),viewBox:"0 0 ".concat(Zl," ").concat(Xl),fill:"none"}),n=Bl(e("g"),{clipPath:"url(#clip0_57_156)"}),r=Bl(e("path"),{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M3.55544 15.1518C4.87103 16.0308 6.41775 16.5 8 16.5C10.1217 16.5 12.1566 15.6571 13.6569 14.1569C15.1571 12.6566 16 10.6217 16 8.5C16 6.91775 15.5308 5.37103 14.6518 4.05544C13.7727 2.73985 12.5233 1.71447 11.0615 1.10897C9.59966 0.503466 7.99113 0.34504 6.43928 0.653721C4.88743 0.962403 3.46197 1.72433 2.34315 2.84315C1.22433 3.96197 0.462403 5.38743 0.153721 6.93928C-0.15496 8.49113 0.00346625 10.0997 0.608967 11.5615C1.21447 13.0233 2.23985 14.2727 3.55544 15.1518ZM4.40546 3.1204C5.46945 2.40946 6.72036 2.03 8 2.03C9.71595 2.03 11.3616 2.71166 12.575 3.92502C13.7883 5.13838 14.47 6.78405 14.47 8.5C14.47 9.77965 14.0905 11.0306 13.3796 12.0945C12.6687 13.1585 11.6582 13.9878 10.476 14.4775C9.29373 14.9672 7.99283 15.0953 6.73777 14.8457C5.48271 14.596 4.32987 13.9798 3.42502 13.075C2.52018 12.1701 1.90397 11.0173 1.65432 9.76224C1.40468 8.50718 1.5328 7.20628 2.0225 6.02404C2.5122 4.8418 3.34148 3.83133 4.40546 3.1204Z"}),o=Bl(e("path"),{d:"M6.68775 12.4297C6.78586 12.4745 6.89218 12.4984 7 12.5C7.11275 12.4955 7.22315 12.4664 7.32337 12.4145C7.4236 12.3627 7.51121 12.2894 7.58 12.2L12 5.63999C12.0848 5.47724 12.1071 5.28902 12.0625 5.11098C12.0178 4.93294 11.9095 4.77744 11.7579 4.67392C11.6064 4.57041 11.4221 4.52608 11.24 4.54931C11.0579 4.57254 10.8907 4.66173 10.77 4.79999L6.88 10.57L5.13 8.56999C5.06508 8.49566 4.98613 8.43488 4.89768 8.39111C4.80922 8.34735 4.713 8.32148 4.61453 8.31498C4.51605 8.30847 4.41727 8.32147 4.32382 8.35322C4.23038 8.38497 4.14413 8.43484 4.07 8.49999C3.92511 8.63217 3.83692 8.81523 3.82387 9.01092C3.81083 9.2066 3.87393 9.39976 4 9.54999L6.43 12.24C6.50187 12.3204 6.58964 12.385 6.68775 12.4297Z"});t.appendChild(n).append(o,r);const s=e("defs"),a=Bl(e("clipPath"),{id:"clip0_57_156"}),i=Bl(e("rect"),{width:"".concat(Zl),height:"".concat(Zl),fill:"white",transform:"translate(0 0.5)"});return a.appendChild(i),s.appendChild(a),t.appendChild(s).appendChild(a).appendChild(i),{get el(){return t}}}().el,t);return{el:o,remove:r}}function ed(e){let t,n,{shadow:r,options:{shouldCreateActor:o=!0,...s},attachTo:i}=e,c=!1;async function l(e){if(!n)return;const t=[];if(s.isNameRequired&&!e.name&&t.push(s.nameLabel),s.isEmailRequired&&!e.email&&t.push(s.emailLabel),e.message||t.push(s.messageLabel),t.length>0)return void n.showError("Please enter in the following required fields: ".concat(t.join(", ")));await Pl(n,e)?(_(),function(){if(r)try{const e=$l({message:s.successMessageText,onRemove:()=>{t&&clearTimeout(t),u()}});if(!e.el)throw new Error("Unable to show success message");r.appendChild(e.el);const t=setTimeout((()=>{e&&e.remove()}),5e3)}catch(e){p.vF.error(e)}}(),s.onSubmitSuccess&&s.onSubmitSuccess()):s.onSubmitError&&s.onSubmitError()}function d(){const e=(0,a.KU)(),t=e&&e.getIntegrationByName&&e.getIntegrationByName("Replay");t&&t.flush().catch((e=>{Rl&&p.vF.error(e)}))}function u(){t&&t.show()}function h(){t&&t.hide()}function m(){try{if(n)return n.open(),c=!0,s.onFormOpen&&s.onFormOpen(),void d();const e=s.useSentryUser,t=(0,a.o5)(),o=t&&t.getUser();if(n=Yl({colorScheme:s.colorScheme,showBranding:s.showBranding,showName:s.showName||s.isNameRequired,showEmail:s.showEmail||s.isEmailRequired,isNameRequired:s.isNameRequired,isEmailRequired:s.isEmailRequired,formTitle:s.formTitle,cancelButtonLabel:s.cancelButtonLabel,submitButtonLabel:s.submitButtonLabel,emailLabel:s.emailLabel,emailPlaceholder:s.emailPlaceholder,messageLabel:s.messageLabel,messagePlaceholder:s.messagePlaceholder,nameLabel:s.nameLabel,namePlaceholder:s.namePlaceholder,isRequiredLabel:s.isRequiredLabel,defaultName:e&&o&&o[e.name]||"",defaultEmail:e&&o&&o[e.email]||"",onClosed:()=>{u(),c=!1,s.onFormClose&&s.onFormClose()},onCancel:()=>{f(),u()},onSubmit:l}),!n.el)throw new Error("Unable to open Feedback dialog");r.appendChild(n.el),h(),s.onFormOpen&&s.onFormOpen(),d()}catch(e){p.vF.error(e)}}function f(){n&&(n.close(),c=!1,s.onFormClose&&s.onFormClose())}function _(){if(n){f();const e=n.el;e&&e.remove(),n=void 0}}function g(){c||m(),h()}return i?i.addEventListener("click",g):o&&(t=Vl({buttonLabel:s.buttonLabel,onClick:g}),t.el&&r.appendChild(t.el)),{get actor(){return t},get dialog(){return n},showActor:u,hideActor:h,removeActor:function(){t&&t.el&&t.el.remove()},openDialog:m,closeDialog:f,removeDialog:_}}const td=hl.document,nd=e=>new rd(e);class rd{static __initStatic(){this.id="Feedback"}constructor(){let{autoInject:e=!0,id:t="sentry-feedback",isEmailRequired:n=!1,isNameRequired:r=!1,showBranding:o=!0,showEmail:s=!0,showName:a=!0,useSentryUser:i={email:"email",name:"username"},themeDark:c,themeLight:l,colorScheme:d="system",buttonLabel:u=yl,cancelButtonLabel:h=bl,submitButtonLabel:p=wl,formTitle:m=Sl,emailPlaceholder:f=kl,emailLabel:_=Cl,messagePlaceholder:g=El,messageLabel:v=xl,namePlaceholder:y=Tl,nameLabel:b=Ol,isRequiredLabel:w=Nl,successMessageText:S=Dl,onFormClose:k,onFormOpen:C,onSubmitError:E,onSubmitSuccess:x}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.name=rd.id,this._host=null,this._shadow=null,this._widget=null,this._widgets=new Set,this._hasInsertedActorStyles=!1,this.options={autoInject:e,showBranding:o,id:t,isEmailRequired:n,isNameRequired:r,showEmail:s,showName:a,useSentryUser:i,colorScheme:d,themeDark:{...vl,...c},themeLight:{...gl,...l},buttonLabel:u,cancelButtonLabel:h,submitButtonLabel:p,formTitle:m,emailLabel:_,emailPlaceholder:f,messageLabel:v,messagePlaceholder:g,nameLabel:b,namePlaceholder:y,isRequiredLabel:w,successMessageText:S,onFormClose:k,onFormOpen:C,onSubmitError:E,onSubmitSuccess:x}}setupOnce(){if(Wr())try{this._cleanupWidgetIfExists();const{autoInject:e}=this.options;if(!e)return;this._createWidget(this.options)}catch(e){Rl&&p.vF.error(e)}}openDialog(){this._widget||this._createWidget({...this.options,shouldCreateActor:!1}),this._widget&&this._widget.openDialog()}closeDialog(){this._widget&&this._widget.closeDialog()}attachTo(e,t){try{const n=Fl(this.options,t||{});return this._ensureShadowHost(n,(t=>{let{shadow:r}=t;const o="string"===typeof e?td.querySelector(e):"function"===typeof e.addEventListener?e:null;if(!o)return Rl&&p.vF.error("[Feedback] Unable to attach to target element"),null;const s=ed({shadow:r,options:n,attachTo:o});return this._widgets.add(s),this._widget||(this._widget=s),s}))}catch(n){return Rl&&p.vF.error(n),null}}createWidget(e){try{return this._createWidget(Fl(this.options,e||{}))}catch(t){return Rl&&p.vF.error(t),null}}removeWidget(e){if(!e)return!1;try{if(this._widgets.has(e))return e.removeActor(),e.removeDialog(),this._widgets.delete(e),this._widget===e&&(this._widget=null),!0}catch(t){Rl&&p.vF.error(t)}return!1}getWidget(){return this._widget}remove(){this._host&&this._host.remove(),this._initialize()}_initialize(){this._host=null,this._shadow=null,this._widget=null,this._widgets=new Set,this._hasInsertedActorStyles=!1}_cleanupWidgetIfExists(){this._host&&this.remove();const e=td.querySelector("#".concat(this.options.id));e&&e.remove()}_createWidget(e){return this._ensureShadowHost(e,(t=>{let{shadow:n}=t;const r=ed({shadow:n,options:e});return!this._hasInsertedActorStyles&&r.actor&&(n.appendChild(function(e){const t=e.createElement("style");return t.textContent="\n.widget__actor {\n position: fixed;\n left: var(--left);\n right: var(--right);\n bottom: var(--bottom);\n top: var(--top);\n z-index: var(--z-index);\n\n line-height: 16px;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: var(--border-radius);\n cursor: pointer;\n font-family: inherit;\n font-size: var(--font-size);\n font-weight: 600;\n padding: 16px;\n text-decoration: none;\n z-index: 9000;\n\n color: var(--foreground);\n background-color: var(--background);\n border: var(--border);\n box-shadow: var(--box-shadow);\n opacity: 1;\n transition: opacity 0.1s ease-in-out;\n}\n\n.widget__actor:hover {\n background-color: var(--background-hover);\n}\n\n.widget__actor svg {\n width: 16px;\n height: 16px;\n}\n\n.widget__actor--hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n\n.widget__actor__text {\n}\n\n@media (max-width: 600px) {\n .widget__actor__text {\n display: none;\n }\n}\n\n.feedback-icon path {\n fill: var(--foreground);\n}\n",t}(td)),this._hasInsertedActorStyles=!0),this._widgets.add(r),this._widget||(this._widget=r),r}))}_ensureShadowHost(e,t){let n=!1;if(!this._shadow||!this._host){const{id:t,colorScheme:r,themeLight:o,themeDark:s}=e,{shadow:a,host:i}=zl({id:t,colorScheme:r,themeLight:o,themeDark:s});this._shadow=a,this._host=i,n=!0}this._host.dataset.sentryFeedbackColorscheme=e.colorScheme;const r=t({shadow:this._shadow,host:this._host});return n&&td.body.appendChild(this._host),r}}rd.__initStatic();var od=n(24440),sd=n(71121),ad=n(63508),id=n(53700),cd=n(70927),ld=n(78196),dd=n(34015),ud=n(24258),hd=n(27401);function pd(){Hr.document?Hr.document.addEventListener("visibilitychange",(()=>{const e=Fe();if(Hr.document.hidden&&e){const t="cancelled",{op:n,status:r}=(0,Te.et)(e);Ur&&p.vF.log("[Tracing] Transaction: ".concat(t," -> since tab moved to the background, op: ").concat(n)),r||e.setStatus(t),e.setTag("visibilitychange","document.hidden"),e.end()}})):Ur&&p.vF.warn("[Tracing] Could not set up background tab detection due to lack of global document")}function md(e){return[{type:"span"},e]}function fd(e){return"number"===typeof e&&isFinite(e)}function _d(e,t){let{startTimestamp:n,...r}=t;return n&&e.startTimestamp>n&&(e.startTimestamp=n),e.startChild({startTimestamp:n,...r})}const gd=2147483647;function vd(e){return e/1e3}function yd(){return Hr&&Hr.addEventListener&&Hr.performance}let bd,wd,Sd=0,kd={};function Cd(){const e=yd();if(e&&Be.k3){e.mark&&Hr.performance.mark("sentry-tracing-init");const t=function(){return e=e=>{let{metric:t}=e;const n=t.entries[t.entries.length-1];if(!n)return;const r=vd(Be.k3),o=vd(n.startTime);Ur&&p.vF.log("[Measurements] Adding FID"),kd.fid={value:t.value,unit:"millisecond"},kd["mark.fid"]={value:r+o,unit:"second"}},Io("fid",e,To,yo);var e}(),n=function(e){return Io("cls",e,xo,vo,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}((e=>{let{metric:t}=e;const n=t.entries[t.entries.length-1];n&&(Ur&&p.vF.log("[Measurements] Adding CLS"),kd.cls={value:t.value,unit:""},wd=n)}),!0),r=ko((e=>{let{metric:t}=e;const n=t.entries[t.entries.length-1];n&&(Ur&&p.vF.log("[Measurements] Adding LCP"),kd.lcp={value:t.value,unit:"millisecond"},bd=n)}),!0),o=function(){return e=e=>{let{metric:t}=e;t.entries[t.entries.length-1]&&(Ur&&p.vF.log("[Measurements] Adding TTFB"),kd.ttfb={value:t.value,unit:"millisecond"})},Io("ttfb",e,No,wo);var e}();return()=>{t(),n(),r(),o()}}return()=>{}}function Ed(){Co("longtask",(e=>{let{entries:t}=e;for(const n of t){const e=Fe();if(!e)return;const t=vd(Be.k3+n.startTime),r=vd(n.duration);e.startChild({description:"Main UI thread blocked",op:"ui.long-task",origin:"auto.ui.browser.metrics",startTimestamp:t,endTimestamp:t+r})}}))}function xd(){Co("event",(e=>{let{entries:t}=e;for(const n of t){const e=Fe();if(!e)return;if("click"===n.name){const t=vd(Be.k3+n.startTime),r=vd(n.duration),o={description:(0,Zn.Hd)(n.target),op:"ui.interaction.".concat(n.name),origin:"auto.ui.browser.metrics",startTimestamp:t,endTimestamp:t+r},s=(0,Zn.xE)(n.target);s&&(o.attributes={"ui.component_name":s}),e.startChild(o)}}}))}function Td(e,t){if(yd()&&Be.k3){const n=function(e,t){return n=n=>{let{metric:r}=n;if(void 0===r.value)return;const o=r.entries.find((e=>e.duration===r.value&&void 0!==Od[e.name])),s=(0,a.KU)();if(!o||!s)return;const i=Od[o.name],c=s.getOptions(),l=vd(Be.k3+o.startTime),d=vd(r.value),u=void 0!==o.interactionId?e[o.interactionId]:void 0;if(void 0===u)return;const{routeName:h,parentContext:m,activeTransaction:f,user:_,replayId:g}=u,v=void 0!==_?_.email||_.id||_.ip_address:void 0,y=void 0!==f?f.getProfileId():void 0,b=new ct({startTimestamp:l,endTimestamp:l+d,op:"ui.interaction.".concat(i),name:(0,Zn.Hd)(o.target),attributes:{release:c.release,environment:c.environment,transaction:h,...void 0!==v&&""!==v?{user:v}:{},...void 0!==y?{profile_id:y}:{},...void 0!==g?{replay_id:g}:{}},exclusiveTime:r.value,measurements:{inp:{value:r.value,unit:"millisecond"}}}),w=function(e,t,n){if(!Ue(t))return!1;let r;return r=void 0!==e&&"function"===typeof t.tracesSampler?t.tracesSampler({transactionContext:e,name:e.name,parentSampled:e.parentSampled,attributes:{...e.data,...e.attributes},location:Hr.location}):void 0!==e&&void 0!==e.sampled?e.sampled:"undefined"!==typeof t.tracesSampleRate?t.tracesSampleRate:1,ft(r)?!0===r?n:!1===r?0:r*n:(Ur&&p.vF.warn("[Tracing] Discarding interaction span because of invalid sample rate."),!1)}(m,c,t);if(w&&Math.random(){Ur&&p.vF.error("Error while sending interaction:",e)}))}},Io("inp",n,Do,So);var n}(e,t);return()=>{n()}}return()=>{}}const Od={click:"click",pointerdown:"click",pointerup:"click",mousedown:"click",mouseup:"click",touchstart:"click",touchend:"click",mouseover:"hover",mouseout:"hover",mouseenter:"hover",mouseleave:"hover",pointerover:"hover",pointerout:"hover",pointerenter:"hover",pointerleave:"hover",dragstart:"drag",dragend:"drag",drag:"drag",dragenter:"drag",dragleave:"drag",dragover:"drag",drop:"drag",keydown:"press",keyup:"press",keypress:"press",input:"press"};function Nd(e){const t=yd();if(!t||!Hr.performance.getEntries||!Be.k3)return;Ur&&p.vF.log("[Tracing] Adding & adjusting spans using Performance API");const n=vd(Be.k3),r=t.getEntries(),{op:o,start_timestamp:s}=(0,Te.et)(e);if(r.slice(Sd).forEach((t=>{const r=vd(t.startTime),o=vd(t.duration);if(!("navigation"===e.op&&s&&n+r{Dd(e,t,r,n)})),Dd(e,t,"secureConnection",n,"TLS/SSL","connectEnd"),Dd(e,t,"fetch",n,"cache","domainLookupStart"),Dd(e,t,"domainLookup",n,"DNS"),function(e,t,n){t.responseEnd&&(_d(e,{op:"browser",origin:"auto.browser.browser.metrics",description:"request",startTimestamp:n+vd(t.requestStart),endTimestamp:n+vd(t.responseEnd)}),_d(e,{op:"browser",origin:"auto.browser.browser.metrics",description:"response",startTimestamp:n+vd(t.responseStart),endTimestamp:n+vd(t.responseEnd)}))}(e,t,n)}(e,t,n);break;case"mark":case"paint":case"measure":{!function(e,t,n,r,o){const s=o+n,a=s+r;_d(e,{description:t.name,endTimestamp:a,op:t.entryType,origin:"auto.resource.browser.metrics",startTimestamp:s})}(e,t,r,o,n);const s=Qr(),a=t.startTime{if(!kd[e]||!s||n>=s)return;const t=kd[e].value,r=n+vd(t),o=Math.abs(1e3*(r-s)),a=o-t;Ur&&p.vF.log("[Measurements] Normalized ".concat(e," from ").concat(t," to ").concat(o," (").concat(a,")")),kd[e].value=o}));const t=kd["mark.fid"];t&&kd.fid&&(_d(e,{description:"first input delay",endTimestamp:t.value+vd(kd.fid.value),op:"ui.action",origin:"auto.ui.browser.metrics",startTimestamp:t.value}),delete kd["mark.fid"]),"fcp"in kd||delete kd.cls,Object.keys(kd).forEach((e=>{Ut(e,kd[e].value,kd[e].unit)})),function(e){bd&&(Ur&&p.vF.log("[Measurements] Adding LCP Data"),bd.element&&e.setTag("lcp.element",(0,Zn.Hd)(bd.element)),bd.id&&e.setTag("lcp.id",bd.id),bd.url&&e.setTag("lcp.url",bd.url.trim().slice(0,200)),e.setTag("lcp.size",bd.size));wd&&wd.sources&&(Ur&&p.vF.log("[Measurements] Adding CLS Data"),wd.sources.forEach(((t,n)=>e.setTag("cls.source.".concat(n+1),(0,Zn.Hd)(t.node)))))}(e)}bd=void 0,wd=void 0,kd={}}function Dd(e,t,n,r,o,s){const a=s?t[s]:t["".concat(n,"End")],i=t["".concat(n,"Start")];i&&a&&_d(e,{op:"browser",origin:"auto.browser.browser.metrics",description:o||n,startTimestamp:r+vd(i),endTimestamp:r+vd(a)})}function Id(e,t,n,r){const o=t[n];null!=o&&o4&&void 0!==arguments[4]?arguments[4]:"auto.http.browser";if(!Ue()||!e.fetchData)return;const s=t(e.fetchData.url);if(e.endTimestamp&&s){const t=e.fetchData.__span;if(!t)return;const n=r[t];return void(n&&(!function(e,t){if(t.response){at(e,t.response.status);const n=t.response&&t.response.headers&&t.response.headers.get("content-length");if(n){const t=parseInt(n);t>0&&e.setAttribute("http.response_content_length",t)}}else t.error&&e.setStatus("internal_error");e.end()}(n,e),delete r[t]))}const i=(0,a.o5)(),c=(0,a.KU)(),{method:l,url:d}=e.fetchData,u=function(e){try{return new URL(e).href}catch(t){return}}(d),h=u?(0,Qn.Dl)(u).host:void 0,p=s?qe({name:"".concat(l," ").concat(d),onlyIfParent:!0,attributes:{url:d,type:"fetch","http.method":l,"http.url":u,"server.address":h,[ie]:o},op:"http.client"}):void 0;if(p&&(e.fetchData.__span=p.spanContext().spanId,r[p.spanContext().spanId]=p),n(e.fetchData.url)&&c){const t=e.args[0];e.args[1]=e.args[1]||{};const n=e.args[1];n.headers=function(e,t,n,r,o){const s=o||n.getSpan(),a=(0,me.rm)(),{traceId:i,spanId:c,sampled:l,dsc:d}={...a.getPropagationContext(),...n.getPropagationContext()},u=s?(0,Te.Qh)(s):(0,Re.TC)(i,c,l),h=(0,jd.De)(d||(s?(0,be.k)(s):(0,be.l)(i,t,n))),p=r.headers||("undefined"!==typeof Request&&(0,k.tH)(e,Request)?e.headers:void 0);if(p){if("undefined"!==typeof Headers&&(0,k.tH)(p,Headers)){const e=new Headers(p);return e.append("sentry-trace",u),h&&e.append(jd.hF,h),e}if(Array.isArray(p)){const e=[...p,["sentry-trace",u]];return h&&e.push([jd.hF,h]),e}{const e="baggage"in p?p.baggage:void 0,t=[];return Array.isArray(e)?t.push(...e):e&&t.push(e),h&&t.push(h),{...p,"sentry-trace":u,baggage:t.length>0?t.join(","):void 0}}}return{"sentry-trace":u,baggage:h}}(t,c,i,n,p)}return p}const Md=["localhost",/^\/(?!\/)/],Rd={traceFetch:!0,traceXHR:!0,enableHTTPTimings:!0,tracingOrigins:Md,tracePropagationTargets:Md};function Fd(e){const{traceFetch:t,traceXHR:n,tracePropagationTargets:r,tracingOrigins:o,shouldCreateSpanForRequest:s,enableHTTPTimings:i}={traceFetch:Rd.traceFetch,traceXHR:Rd.traceXHR,...e},c="function"===typeof s?s:e=>!0,l=e=>function(e,t){return(0,f.Xr)(e,t||Md)}(e,r||o),d={};t&&(0,Yn.u)((e=>{const t=Ad(e,c,l,d);if(t){const n=Pd(e.fetchData.url),r=n?(0,Qn.Dl)(n).host:void 0;t.setAttributes({"http.url":n,"server.address":r})}i&&t&&Ld(t)})),n&&(0,Kn.Mn)((e=>{const t=function(e,t,n,r){const o=e.xhr,s=o&&o[Kn.Er];if(!Ue()||!o||o.__sentry_own_request__||!s)return;const i=t(s.url);if(e.endTimestamp&&i){const e=o.__sentry_xhr_span_id__;if(!e)return;const t=r[e];return void(t&&void 0!==s.status_code&&(at(t,s.status_code),t.end(),delete r[e]))}const c=(0,a.o5)(),l=(0,me.rm)(),d=Pd(s.url),u=d?(0,Qn.Dl)(d).host:void 0,h=i?qe({name:"".concat(s.method," ").concat(s.url),onlyIfParent:!0,attributes:{type:"xhr","http.method":s.method,"http.url":d,url:s.url,"server.address":u,[ie]:"auto.http.browser"},op:"http.client"}):void 0;h&&(o.__sentry_xhr_span_id__=h.spanContext().spanId,r[o.__sentry_xhr_span_id__]=h);const p=(0,a.KU)();if(o.setRequestHeader&&n(s.url)&&p){const{traceId:e,spanId:t,sampled:n,dsc:r}={...l.getPropagationContext(),...c.getPropagationContext()};!function(e,t,n){try{e.setRequestHeader("sentry-trace",t),n&&e.setRequestHeader(jd.hF,n)}catch(r){}}(o,h?(0,Te.Qh)(h):(0,Re.TC)(e,t,n),(0,jd.De)(r||(h?(0,be.k)(h):(0,be.l)(e,p,c))))}return h}(e,c,l,d);i&&t&&Ld(t)}))}function Ld(e){const{url:t}=(0,Te.et)(e).data||{};if(!t||"string"!==typeof t)return;const n=Co("resource",(r=>{let{entries:o}=r;o.forEach((r=>{if(function(e){return"resource"===e.entryType&&"initiatorType"in e&&"string"===typeof e.nextHopProtocol&&("fetch"===e.initiatorType||"xmlhttprequest"===e.initiatorType)}(r)&&r.name.endsWith(t)){const t=function(e){const{name:t,version:n}=function(e){let t="unknown",n="unknown",r="";for(const o of e){if("/"===o){[t,n]=e.split("/");break}if(!isNaN(Number(o))){t="h"===r?"http":r,n=e.split(r)[1];break}r+=o}r===e&&(t=r);return{name:t,version:n}}(e.nextHopProtocol),r=[];if(r.push(["network.protocol.version",n],["network.protocol.name",t]),!Be.k3)return r;return[...r,["http.request.redirect_start",zd(e.redirectStart)],["http.request.fetch_start",zd(e.fetchStart)],["http.request.domain_lookup_start",zd(e.domainLookupStart)],["http.request.domain_lookup_end",zd(e.domainLookupEnd)],["http.request.connect_start",zd(e.connectStart)],["http.request.secure_connection_start",zd(e.secureConnectionStart)],["http.request.connection_end",zd(e.connectEnd)],["http.request.request_start",zd(e.requestStart)],["http.request.response_start",zd(e.responseStart)],["http.request.response_end",zd(e.responseEnd)]]}(r);t.forEach((t=>e.setAttribute(...t))),setTimeout(n)}}))}))}function zd(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return((Be.k3||performance.timeOrigin)+e)/1e3}function Pd(e){try{return new URL(e,Hr.location.origin).href}catch(t){return}}const Bd={...dt,markBackgroundTransactions:!0,routingInstrumentation:function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!Hr||!Hr.location)return void(Ur&&p.vF.warn("Could not initialize routing instrumentation due to invalid location"));let r,o=Hr.location.href;t&&(r=e({name:Hr.location.pathname,startTimestamp:Be.k3?Be.k3/1e3:void 0,op:"pageload",origin:"auto.pageload.browser",metadata:{source:"url"}})),n&&Ln((t=>{let{to:n,from:s}=t;void 0===s&&o&&-1!==o.indexOf(n)?o=void 0:s!==n&&(o=void 0,r&&(Ur&&p.vF.log("[Tracing] Finishing current transaction with op: ".concat(r.op)),r.end()),r=e({name:Hr.location.pathname,op:"navigation",origin:"auto.navigation.browser",metadata:{source:"url"}}))}))},startTransactionOnLocationChange:!0,startTransactionOnPageLoad:!0,enableLongTask:!0,enableInp:!1,interactionsSampleRate:1,_experiments:{},...Rd};class Wd{constructor(e){this.name="BrowserTracing",this._hasSetTracePropagationTargets=!1,yt(),Ur&&(this._hasSetTracePropagationTargets=!(!e||!e.tracePropagationTargets&&!e.tracingOrigins)),this.options={...Bd,...e},void 0!==this.options._experiments.enableLongTask&&(this.options.enableLongTask=this.options._experiments.enableLongTask),e&&!e.tracePropagationTargets&&e.tracingOrigins&&(this.options.tracePropagationTargets=e.tracingOrigins),this._collectWebVitals=Cd(),this._interactionIdToRouteNameMapping={},this.options.enableInp&&Td(this._interactionIdToRouteNameMapping,this.options.interactionsSampleRate),this.options.enableLongTask&&Ed(),this.options._experiments.enableInteractions&&xd(),this._latestRoute={name:void 0,context:void 0}}setupOnce(e,t){this._getCurrentHub=t;const n=t().getClient(),r=n&&n.getOptions(),{routingInstrumentation:o,startTransactionOnLocationChange:s,startTransactionOnPageLoad:a,markBackgroundTransactions:i,traceFetch:c,traceXHR:l,shouldCreateSpanForRequest:d,enableHTTPTimings:u,_experiments:h}=this.options,m=r&&r.tracePropagationTargets,f=m||this.options.tracePropagationTargets;Ur&&this._hasSetTracePropagationTargets&&m&&p.vF.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used."),o((e=>{const n=this._createRouteTransaction(e);return this.options._experiments.onStartRouteTransaction&&this.options._experiments.onStartRouteTransaction(n,e,t),n}),a,s),i&&pd(),h.enableInteractions&&this._registerInteractionListener(),this.options.enableInp&&this._registerInpInteractionListener(),Fd({traceFetch:c,traceXHR:l,tracePropagationTargets:f,shouldCreateSpanForRequest:d,enableHTTPTimings:u})}_createRouteTransaction(e){if(!this._getCurrentHub)return void(Ur&&p.vF.warn("[Tracing] Did not create ".concat(e.op," transaction because _getCurrentHub is invalid.")));const t=this._getCurrentHub(),{beforeNavigate:n,idleTimeout:r,finalTimeout:o,heartbeatInterval:s}=this.options,a="pageload"===e.op;let i;if(a){const t=a?Ud("sentry-trace"):"",n=a?Ud("baggage"):void 0,{traceId:r,dsc:o,parentSpanId:s,sampled:c}=(0,Re.kM)(t,n);i={traceId:r,parentSpanId:s,parentSampled:c,...e,metadata:{...e.metadata,dynamicSamplingContext:o},trimEnd:!0}}else i={trimEnd:!0,...e};const c="function"===typeof n?n(i):i,l=void 0===c?{...i,sampled:!1}:c;l.metadata=l.name!==i.name?{...l.metadata,source:"custom"}:l.metadata,this._latestRoute.name=l.name,this._latestRoute.context=l,!1===l.sampled&&Ur&&p.vF.log("[Tracing] Will not send ".concat(l.op," transaction because of beforeNavigate.")),Ur&&p.vF.log("[Tracing] Starting ".concat(l.op," transaction on scope"));const{location:d}=Hr,u=vt(t,l,r,o,!0,{location:d},s,a);return a&&Hr.document&&(Hr.document.addEventListener("readystatechange",(()=>{["interactive","complete"].includes(Hr.document.readyState)&&u.sendAutoFinishSignal()})),["interactive","complete"].includes(Hr.document.readyState)&&u.sendAutoFinishSignal()),u.registerBeforeFinishCallback((e=>{this._collectWebVitals(),Nd(e)})),u}_registerInteractionListener(){let e;const t=()=>{const{idleTimeout:t,finalTimeout:n,heartbeatInterval:r}=this.options,o="ui.action.click",s=Fe();if(s&&s.op&&["navigation","pageload"].includes(s.op))return void(Ur&&p.vF.warn("[Tracing] Did not create ".concat(o," transaction because a pageload or navigation transaction is in progress.")));if(e&&(e.setFinishReason("interactionInterrupted"),e.end(),e=void 0),!this._getCurrentHub)return void(Ur&&p.vF.warn("[Tracing] Did not create ".concat(o," transaction because _getCurrentHub is invalid.")));if(!this._latestRoute.name)return void(Ur&&p.vF.warn("[Tracing] Did not create ".concat(o," transaction because _latestRouteName is missing.")));const a=this._getCurrentHub(),{location:i}=Hr,c={name:this._latestRoute.name,op:o,trimEnd:!0,data:{[oe]:this._latestRoute.context?Jd(this._latestRoute.context):"url"}};e=vt(a,c,t,n,!0,{location:i},r)};["click"].forEach((e=>{Hr.document&&addEventListener(e,t,{once:!1,capture:!0})}))}_registerInpInteractionListener(){const e=e=>{let{entries:t}=e;const n=(0,a.KU)(),r=void 0!==n&&void 0!==n.getIntegrationByName?n.getIntegrationByName("Replay"):void 0,o=void 0!==r?r.getReplayId():void 0,s=Fe(),i=(0,a.o5)(),c=void 0!==i?i.getUser():void 0;t.forEach((e=>{if(function(e){return"duration"in e}(e)){const t=e.interactionId;if(void 0===t)return;const n=this._interactionIdToRouteNameMapping[t],r=e.duration,a=e.startTime,i=Object.keys(this._interactionIdToRouteNameMapping),l=i.length>0?i.reduce(((e,t)=>this._interactionIdToRouteNameMapping[e].durationthis._interactionIdToRouteNameMapping[e])).some((e=>e.duration===r&&e.startTime===a)))return}if(!t)return;if(n)n.duration=Math.max(n.duration,r);else if(i.length<10||void 0===l||r>this._interactionIdToRouteNameMapping[l].duration){const e=this._latestRoute.name,n=this._latestRoute.context;e&&n&&(l&&Object.keys(this._interactionIdToRouteNameMapping).length>=10&&delete this._interactionIdToRouteNameMapping[l],this._interactionIdToRouteNameMapping[t]={routeName:e,duration:r,parentContext:n,user:c,activeTransaction:s,replayId:o,startTime:a})}}}))};Co("event",e),Co("first-input",e)}}function Ud(e){const t=(0,Zn.NX)("meta[name=".concat(e,"]"));return t?t.getAttribute("content"):void 0}function Jd(e){const t=e.attributes&&e.attributes[oe],n=e.data&&e.data[oe],r=e.metadata&&e.metadata.source;return t||n||r}const Hd={...dt,instrumentNavigation:!0,instrumentPageLoad:!0,markBackgroundSpan:!0,enableLongTask:!0,enableInp:!1,interactionsSampleRate:1,_experiments:{},...Rd},Vd=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=!!Ur&&!(!e.tracePropagationTargets&&!e.tracingOrigins);yt(),!e.tracePropagationTargets&&e.tracingOrigins&&(e.tracePropagationTargets=e.tracingOrigins);const n={...Hd,...e},r=Cd(),o={};n.enableInp&&Td(o,n.interactionsSampleRate),n.enableLongTask&&Ed(),n._experiments.enableInteractions&&xd();const s={name:void 0,context:void 0};function i(e){const t=(0,me.BF)(),{beforeStartSpan:o,idleTimeout:a,finalTimeout:i,heartbeatInterval:c}=n,l="pageload"===e.op;let d;if(l){const t=l?Kd("sentry-trace"):"",n=l?Kd("baggage"):void 0,{traceId:r,dsc:o,parentSpanId:s,sampled:a}=(0,Re.kM)(t,n);d={traceId:r,parentSpanId:s,parentSampled:a,...e,metadata:{...e.metadata,dynamicSamplingContext:o},trimEnd:!0}}else d={trimEnd:!0,...e};const u=o?o(d):d;u.metadata=u.name!==d.name?{...u.metadata,source:"custom"}:u.metadata,s.name=u.name,s.context=u,!1===u.sampled&&Ur&&p.vF.log("[Tracing] Will not send ".concat(u.op," transaction because of beforeNavigate.")),Ur&&p.vF.log("[Tracing] Starting ".concat(u.op," transaction on scope"));const{location:h}=Hr,m=vt(t,u,a,i,!0,{location:h},c,l);return l&&Hr.document&&(Hr.document.addEventListener("readystatechange",(()=>{["interactive","complete"].includes(Hr.document.readyState)&&m.sendAutoFinishSignal()})),["interactive","complete"].includes(Hr.document.readyState)&&m.sendAutoFinishSignal()),m.registerBeforeFinishCallback((e=>{r(),Nd(e)})),m}return{name:"BrowserTracing",setupOnce:()=>{},afterAllSetup(e){const r=e.getOptions(),{markBackgroundSpan:c,traceFetch:l,traceXHR:d,shouldCreateSpanForRequest:u,enableHTTPTimings:h,_experiments:m}=n,f=r&&r.tracePropagationTargets,_=f||n.tracePropagationTargets;let g;Ur&&t&&f&&p.vF.warn("[Tracing] The `tracePropagationTargets` option was set in the BrowserTracing integration and top level `Sentry.init`. The top level `Sentry.init` value is being used.");let v=Hr.location&&Hr.location.href;if(e.on&&(e.on("startNavigationSpan",(e=>{g&&(Ur&&p.vF.log("[Tracing] Finishing current transaction with op: ".concat((0,Te.et)(g).op)),g.end()),g=i({op:"navigation",...e})})),e.on("startPageLoadSpan",(e=>{g&&(Ur&&p.vF.log("[Tracing] Finishing current transaction with op: ".concat((0,Te.et)(g).op)),g.end()),g=i({op:"pageload",...e})}))),n.instrumentPageLoad&&e.emit&&Hr.location){const t={name:Hr.location.pathname,startTimestamp:Be.k3?Be.k3/1e3:void 0,origin:"auto.pageload.browser",attributes:{[oe]:"url"}};qd(e,t)}n.instrumentNavigation&&e.emit&&Hr.location&&Ln((t=>{let{to:n,from:r}=t;if(void 0===r&&v&&-1!==v.indexOf(n))v=void 0;else if(r!==n){v=void 0;const t={name:Hr.location.pathname,origin:"auto.navigation.browser",attributes:{[oe]:"url"}};Gd(e,t)}})),c&&pd(),m.enableInteractions&&function(e,t){let n;const r=()=>{const{idleTimeout:r,finalTimeout:o,heartbeatInterval:s}=e,a="ui.action.click",i=Fe();if(i&&i.op&&["navigation","pageload"].includes(i.op))return void(Ur&&p.vF.warn("[Tracing] Did not create ".concat(a," transaction because a pageload or navigation transaction is in progress.")));if(n&&(n.setFinishReason("interactionInterrupted"),n.end(),n=void 0),!t.name)return void(Ur&&p.vF.warn("[Tracing] Did not create ".concat(a," transaction because _latestRouteName is missing.")));const{location:c}=Hr,l={name:t.name,op:a,trimEnd:!0,data:{[oe]:t.context?Zd(t.context):"url"}};n=vt((0,me.BF)(),l,r,o,!0,{location:c},s)};["click"].forEach((e=>{Hr.document&&addEventListener(e,r,{once:!1,capture:!0})}))}(n,s),n.enableInp&&function(e,t){const n=n=>{let{entries:r}=n;const o=(0,a.KU)(),s=void 0!==o&&void 0!==o.getIntegrationByName?o.getIntegrationByName("Replay"):void 0,i=void 0!==s?s.getReplayId():void 0,c=Fe(),l=(0,a.o5)(),d=void 0!==l?l.getUser():void 0;r.forEach((n=>{if(function(e){return"duration"in e}(n)){const r=n.interactionId;if(void 0===r)return;const o=e[r],s=n.duration,a=n.startTime,l=Object.keys(e),u=l.length>0?l.reduce(((t,n)=>e[t].duratione[t])).some((e=>e.duration===s&&e.startTime===a)))return}if(!r)return;if(o)o.duration=Math.max(o.duration,s);else if(l.lengthe[u].duration){const n=t.name,o=t.context;n&&o&&(u&&Object.keys(e).length>=Yd&&delete e[u],e[r]={routeName:n,duration:s,parentContext:o,user:d,activeTransaction:c,replayId:i,startTime:a})}}}))};Co("event",n),Co("first-input",n)}(o,s),Fd({traceFetch:l,traceXHR:d,tracePropagationTargets:_,shouldCreateSpanForRequest:u,enableHTTPTimings:h})},options:n}};function qd(e,t){if(!e.emit)return;e.emit("startPageLoadSpan",t);const n=Ge();return"pageload"===(n&&(0,Te.et)(n).op)?n:void 0}function Gd(e,t){if(!e.emit)return;e.emit("startNavigationSpan",t);const n=Ge();return"navigation"===(n&&(0,Te.et)(n).op)?n:void 0}function Kd(e){const t=(0,Zn.NX)("meta[name=".concat(e,"]"));return t?t.getAttribute("content"):void 0}const Yd=10;function Zd(e){const t=e.attributes&&e.attributes[oe],n=e.data&&e.data[oe],r=e.metadata&&e.metadata.source;return t||n||r}const Xd=100,Qd=5e3,$d=36e5;function eu(e,t){_.T&&p.vF.info("[Offline]: ".concat(e),t)}function tu(e){return t=>{const n=e(t),r=t.createStore?t.createStore(t):void 0;let o,s=Qd;function a(e,n,r){return o=["replay_event","replay_recording","client_report"],!J(e,((e,t)=>o.includes(t)))&&(!t.shouldStore||t.shouldStore(e,n,r));var o}function i(e){r&&(o&&clearTimeout(o),o=setTimeout((async()=>{o=void 0;const e=await r.pop();e&&(eu("Attempting to send previously queued event"),l(e).catch((e=>{eu("Failed to retry sending",e)})))}),e),"number"!==typeof o&&o.unref&&o.unref())}function c(){o||(i(s),s=Math.min(2*s,$d))}async function l(e){try{const t=await n.send(e);let r=Xd;if(t)if(t.headers&&t.headers["retry-after"])r=St(t.headers["retry-after"]);else if((t.statusCode||0)>=400)return t;return i(r),s=Qd,t}catch(t){if(r&&await a(e,t,s))return await r.insert(e),c(),eu("Error sending. Event queued",t),{};throw t}}return t.flushAtStartup&&c(),{send:l,flush:e=>n.flush(e)}}}function nu(e){return new Promise(((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)}))}function ru(e){return nu(e.getAllKeys())}function ou(e){let t;function n(){return void 0==t&&(t=function(e,t){const n=indexedDB.open(e);n.onupgradeneeded=()=>n.result.createObjectStore(t);const r=nu(n);return e=>r.then((n=>e(n.transaction(t,"readwrite").objectStore(t))))}(e.dbName||"sentry-offline",e.storeName||"queue")),t}return{insert:async t=>{try{const r=await V(t,e.textEncoder);await function(e,t,n){return e((e=>ru(e).then((r=>{if(!(r.length>=n))return e.put(t,Math.max(...r,0)+1),nu(e.transaction)}))))}(n(),r,e.maxQueueSize||30)}catch(r){}},pop:async()=>{try{const t=await function(e){return e((e=>ru(e).then((t=>{if(0!==t.length)return nu(e.get(t[0])).then((n=>(e.delete(t[0]),nu(e.transaction).then((()=>n)))))}))))}(n());if(t)return function(e,t,n){let r="string"===typeof e?t.encode(e):e;function o(e){const t=r.subarray(0,e);return r=r.subarray(e+1),t}function s(){let e=r.indexOf(10);return e<0&&(e=r.length),JSON.parse(n.decode(o(e)))}const a=s(),i=[];for(;r.length;){const e=s(),t="number"===typeof e.length?e.length:void 0;i.push([e,t?o(t):s()])}return[a,i]}(t,e.textEncoder||new TextEncoder,e.textDecoder||new TextDecoder)}catch(t){}}}}function su(e){return function(e){return t=>e({...t,createStore:ou})}(tu(e))}var au=n(84850);const iu=1e6,cu=String(0),lu="main";let du="",uu="",hu="",pu=qt.navigator&&qt.navigator.userAgent||"",mu="";const fu=qt.navigator&&qt.navigator.language||qt.navigator&&qt.navigator.languages&&qt.navigator.languages[0]||"";const _u=qt.navigator&&qt.navigator.userAgentData;var gu;function vu(e){return function(e){return!("thread_metadata"in e)}(e)?function(e){let t,n=0;const r={samples:[],stacks:[],frames:[],thread_metadata:{[cu]:{name:lu}}};if(!e.samples.length)return r;const o=e.samples[0].timestamp,s="number"===typeof performance.timeOrigin?performance.timeOrigin:Be.k3||0,a=s-(Be.k3||s);for(let i=0;i{if(du=e.platform||"",hu=e.architecture||"",mu=e.model||"",uu=e.platformVersion||"",e.fullVersionList&&e.fullVersionList.length>0){const t=e.fullVersionList[e.fullVersionList.length-1];pu="".concat(t.brand," ").concat(t.version)}})).catch((e=>{}));const wu=new WeakMap;function Su(e){const t=X.OW._sentryDebugIds;if(!t)return[];const n=(0,a.KU)(),r=n&&n.getOptions(),o=r&&r.stackParser;if(!o)return[];let s;const i=wu.get(o);i?s=i:(s=new Map,wu.set(o,s));const c=Object.keys(t).reduce(((e,n)=>{let r;const a=s.get(n);a?r=a:(r=o(n),s.set(n,r));for(let o=r.length-1;o>=0;o--){const s=r[o],a=s&&s.filename;if(s&&a){e[a]=t[n];break}}return e}),{}),l=[];for(const a of e)a&&c[a]&&l.push({type:"sourcemap",code_file:a,debug_id:c[a]});return l}let ku=!1;const Cu=3e4;function Eu(e){if(ku)return Xt&&p.vF.log("[Profiling] Profiling has been disabled for the duration of the current user session."),!1;if(!e.isRecording())return Xt&&p.vF.log("[Profiling] Discarding profile because transaction was not sampled."),!1;const t=(0,a.KU)(),n=t&&t.getOptions();if(!n)return Xt&&p.vF.log("[Profiling] Profiling disabled, no options found."),!1;const r=n.profilesSampleRate;if(!("number"!==typeof(o=r)&&"boolean"!==typeof o||"number"===typeof o&&isNaN(o)?(Xt&&p.vF.warn("[Profiling] Invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ".concat(JSON.stringify(o)," of type ").concat(JSON.stringify(typeof o),".")),0):!0===o||!1===o||!(o<0||o>1)||(Xt&&p.vF.warn("[Profiling] Invalid sample rate. Sample rate must be between 0 and 1. Got ".concat(o,".")),0)))return Xt&&p.vF.warn("[Profiling] Discarding profile because of invalid sample rate."),!1;var o;if(!r)return Xt&&p.vF.log("[Profiling] Discarding profile because a negative sampling decision was inherited or profileSampleRate is set to 0"),!1;return!!(!0===r||Math.random()(s&&(qt.clearTimeout(s),s=void 0),Xt&&p.vF.log("[Profiling] stopped profiling of transaction: ".concat((0,Te.et)(e).description)),t?(function(e,t){if(Tu.set(e,t),Tu.size>30){const e=Tu.keys().next().value;Tu.delete(e)}}(r,t),null):(Xt&&p.vF.log("[Profiling] profiler returned null profile for: ".concat((0,Te.et)(e).description),"this may indicate an overlapping transaction or a call to stopProfiling with a profile title that was never started"),null)))).catch((e=>(Xt&&p.vF.log("[Profiling] error while stopping profiler:",e),null))):null}let s=qt.setTimeout((()=>{Xt&&p.vF.log("[Profiling] max profile duration elapsed, stopping profiling for:",(0,Te.et)(e).description),o()}),Cu);const a=e.end.bind(e);return e.end=function(){return e?(o().then((()=>{e.setContext("profile",{profile_id:r,start_timestamp:t}),a()}),(()=>{a()})),e):a()},e}const Iu="BrowserProfiling",ju=(0,i._C)((()=>({name:Iu,setupOnce(){},setup(e){const t=(0,a.o5)().getTransaction();t&&bu(t)&&Eu(t)&&Du(t),"function"===typeof e.on?(e.on("startTransaction",(e=>{Eu(e)&&Du(e)})),e.on("beforeEnvelope",(e=>{if(!Tu.size)return;const t=function(e){const t=[];return J(e,((e,n)=>{if("transaction"===n)for(let r=1;r{"use strict";n.d(t,{U:()=>r});const r="production"},41021:(e,t,n)=>{"use strict";n.d(t,{T:()=>r});const r="undefined"===typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__},42082:(e,t,n)=>{"use strict";n.d(t,{jB:()=>d,lG:()=>c,lb:()=>l});var r=n(94794),o=n(3505),s=n(28281),a=n(38137),i=n(41021);function c(){return(0,r.BY)("globalEventProcessors",(()=>[]))}function l(e){c().push(e)}function d(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return new o.T2(((o,c)=>{const l=e[r];if(null===t||"function"!==typeof l)o(t);else{const u=l({...t},n);i.T&&l.id&&null===u&&s.vF.log('Event processor "'.concat(l.id,'" dropped event')),(0,a.Qg)(u)?u.then((t=>d(e,t,n,r+1).then(o))).then(null,c):d(e,u,n,r+1).then(o).then(null,c)}}))}},38872:(e,t,n)=>{"use strict";n.d(t,{Cp:()=>d,Dp:()=>N,J0:()=>I,J5:()=>M,KU:()=>O,NA:()=>y,PN:()=>p,Q:()=>T,VN:()=>x,Wt:()=>v,ZQ:()=>m,bX:()=>E,cx:()=>_,gV:()=>b,hb:()=>k,ky:()=>j,l7:()=>g,nb:()=>C,o:()=>f,o5:()=>D,r:()=>h,rB:()=>S,v4:()=>w,wd:()=>u});var r=n(28281),o=n(94794),s=n(84850),a=n(41021),i=n(92952),c=n(79391),l=n(93848);function d(e,t){return(0,i.BF)().captureException(e,(0,l.li)(t))}function u(e,t){const n="string"===typeof t?t:void 0,r="string"!==typeof t?{captureContext:t}:void 0;return(0,i.BF)().captureMessage(e,n,r)}function h(e,t){return(0,i.BF)().captureEvent(e,t)}function p(e){(0,i.BF)().configureScope(e)}function m(e,t){(0,i.BF)().addBreadcrumb(e,t)}function f(e,t){(0,i.BF)().setContext(e,t)}function _(e){(0,i.BF)().setExtras(e)}function g(e,t){(0,i.BF)().setExtra(e,t)}function v(e){(0,i.BF)().setTags(e)}function y(e,t){(0,i.BF)().setTag(e,t)}function b(e){(0,i.BF)().setUser(e)}function w(){const e=(0,i.BF)();for(var t=arguments.length,n=new Array(t),r=0;r(e.getStackTop().scope=t,r(t)))):e.withScope(r)}return e.withScope(n[0])}function S(e){return(0,i.fx)((()=>e((0,i.rm)())))}function k(e,t){return w((n=>(n.setSpan(e),t(n))))}function C(e,t){return(0,i.BF)().startTransaction({...e},t)}async function E(e){const t=O();return t?t.flush(e):(a.T&&r.vF.warn("Cannot flush events. No client defined."),Promise.resolve(!1))}async function x(e){const t=O();return t?t.close(e):(a.T&&r.vF.warn("Cannot flush events and disable SDK. No client defined."),Promise.resolve(!1))}function T(){return(0,i.BF)().lastEventId()}function O(){return(0,i.BF)().getClient()}function N(){return!!O()}function D(){return(0,i.BF)().getScope()}function I(e){const t=O(),n=(0,i.rm)(),r=D(),{release:a,environment:l=s.U}=t&&t.getOptions()||{},{userAgent:d}=o.OW.navigator||{},u=(0,c.fj)({release:a,environment:l,user:r.getUser()||n.getUser(),...d&&{userAgent:d},...e}),h=n.getSession();return h&&"ok"===h.status&&(0,c.qO)(h,{status:"exited"}),j(),n.setSession(u),r.setSession(u),u}function j(){const e=(0,i.rm)(),t=D(),n=t.getSession()||e.getSession();n&&(0,c.Vu)(n),A(),e.setSession(),t.setSession()}function A(){const e=(0,i.rm)(),t=D(),n=O(),r=t.getSession()||e.getSession();r&&n&&n.captureSession&&n.captureSession(r)}function M(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]?j():A()}},92952:(e,t,n)=>{"use strict";n.d(t,{BF:()=>v,EU:()=>_,Me:()=>k,YZ:()=>f,fx:()=>w,gM:()=>g,rm:()=>y});var r=n(38137),o=n(62365),s=n(81e3),a=n(28281),i=n(94794),c=n(84850),l=n(41021),d=n(86231),u=n(79391),h=n(74591);const p=parseFloat(h.M),m=100;class f{constructor(e,t,n){let r,o,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:p;this._version=s,t?r=t:(r=new d.HG,r.setClient(e)),n?o=n:(o=new d.HG,o.setClient(e)),this._stack=[{scope:r}],e&&this.bindClient(e),this._isolationScope=o}isOlderThan(e){return this._version(this.popScope(),e)),(e=>{throw this.popScope(),e})):(this.popScope(),n)}getClient(){return this.getStackTop().client}getScope(){return this.getStackTop().scope}getIsolationScope(){return this._isolationScope}getStack(){return this._stack}getStackTop(){return this._stack[this._stack.length-1]}captureException(e,t){const n=this._lastEventId=t&&t.event_id?t.event_id:(0,o.eJ)(),r=new Error("Sentry syntheticException");return this.getScope().captureException(e,{originalException:e,syntheticException:r,...t,event_id:n}),n}captureMessage(e,t,n){const r=this._lastEventId=n&&n.event_id?n.event_id:(0,o.eJ)(),s=new Error(e);return this.getScope().captureMessage(e,t,{originalException:e,syntheticException:s,...n,event_id:r}),r}captureEvent(e,t){const n=t&&t.event_id?t.event_id:(0,o.eJ)();return e.type||(this._lastEventId=n),this.getScope().captureEvent(e,{...t,event_id:n}),n}lastEventId(){return this._lastEventId}addBreadcrumb(e,t){const{scope:n,client:r}=this.getStackTop();if(!r)return;const{beforeBreadcrumb:o=null,maxBreadcrumbs:i=m}=r.getOptions&&r.getOptions()||{};if(i<=0)return;const c={timestamp:(0,s.lu)(),...e},l=o?(0,a.pq)((()=>o(c,t))):c;null!==l&&(r.emit&&r.emit("beforeAddBreadcrumb",l,t),n.addBreadcrumb(l,i))}setUser(e){this.getScope().setUser(e),this.getIsolationScope().setUser(e)}setTags(e){this.getScope().setTags(e),this.getIsolationScope().setTags(e)}setExtras(e){this.getScope().setExtras(e),this.getIsolationScope().setExtras(e)}setTag(e,t){this.getScope().setTag(e,t),this.getIsolationScope().setTag(e,t)}setExtra(e,t){this.getScope().setExtra(e,t),this.getIsolationScope().setExtra(e,t)}setContext(e,t){this.getScope().setContext(e,t),this.getIsolationScope().setContext(e,t)}configureScope(e){const{scope:t,client:n}=this.getStackTop();n&&e(t)}run(e){const t=g(this);try{e(this)}finally{g(t)}}getIntegration(e){const t=this.getClient();if(!t)return null;try{return t.getIntegration(e)}catch(n){return l.T&&a.vF.warn("Cannot retrieve integration ".concat(e.id," from the current Hub")),null}}startTransaction(e,t){const n=this._callExtensionMethod("startTransaction",e,t);if(l.T&&!n){this.getClient()?a.vF.warn("Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n"):a.vF.warn("Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'")}return n}traceHeaders(){return this._callExtensionMethod("traceHeaders")}captureSession(){if(arguments.length>0&&void 0!==arguments[0]&&arguments[0])return this.endSession();this._sendSessionUpdate()}endSession(){const e=this.getStackTop().scope,t=e.getSession();t&&(0,u.Vu)(t),this._sendSessionUpdate(),e.setSession()}startSession(e){const{scope:t,client:n}=this.getStackTop(),{release:r,environment:o=c.U}=n&&n.getOptions()||{},{userAgent:s}=i.OW.navigator||{},a=(0,u.fj)({release:r,environment:o,user:t.getUser(),...s&&{userAgent:s},...e}),l=t.getSession&&t.getSession();return l&&"ok"===l.status&&(0,u.qO)(l,{status:"exited"}),this.endSession(),t.setSession(a),a}shouldSendDefaultPii(){const e=this.getClient(),t=e&&e.getOptions();return Boolean(t&&t.sendDefaultPii)}_sendSessionUpdate(){const{scope:e,client:t}=this.getStackTop(),n=e.getSession();n&&t&&t.captureSession&&t.captureSession(n)}_callExtensionMethod(e){const t=_().__SENTRY__;if(t&&t.extensions&&"function"===typeof t.extensions[e]){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:_();return S(e)&&!k(e).isOlderThan(p)||C(e,new f),k(e)}function w(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=_();return n.__SENTRY__&&n.__SENTRY__.acs?n.__SENTRY__.acs.runWithAsyncContext(e,t):e()}function S(e){return!!(e&&e.__SENTRY__&&e.__SENTRY__.hub)}function k(e){return(0,i.BY)("hub",(()=>new f),e)}function C(e,t){if(!e)return!1;return(e.__SENTRY__=e.__SENTRY__||{}).hub=t,!0}},8577:(e,t,n)=>{"use strict";n.d(t,{F:()=>f,P$:()=>u,Q8:()=>m,_C:()=>_,lc:()=>h,mH:()=>d,qm:()=>p});var r=n(62365),o=n(28281),s=n(41021),a=n(42082),i=n(38872),c=n(92952);const l=[];function d(e){const t=e.defaultIntegrations||[],n=e.integrations;let o;t.forEach((e=>{e.isDefaultInstance=!0})),o=Array.isArray(n)?[...t,...n]:"function"===typeof n?(0,r.k9)(n(t)):t;const s=function(e){const t={};return e.forEach((e=>{const{name:n}=e,r=t[n];r&&!r.isDefaultInstance&&e.isDefaultInstance||(t[n]=e)})),Object.keys(t).map((e=>t[e]))}(o),a=function(e,t){for(let n=0;n"Debug"===e.name));if(-1!==a){const[e]=s.splice(a,1);s.push(e)}return s}function u(e,t){const n={};return t.forEach((t=>{t&&p(e,t,n)})),n}function h(e,t){for(const n of t)n&&n.afterAllSetup&&n.afterAllSetup(e)}function p(e,t,n){if(n[t.name])s.T&&o.vF.log("Integration skipped because it was already installed: ".concat(t.name));else{if(n[t.name]=t,-1===l.indexOf(t.name)&&(t.setupOnce(a.lb,c.BF),l.push(t.name)),t.setup&&"function"===typeof t.setup&&t.setup(e),e.on&&"function"===typeof t.preprocessEvent){const n=t.preprocessEvent.bind(t);e.on("preprocessEvent",((t,r)=>n(t,r,e)))}if(e.addEventProcessor&&"function"===typeof t.processEvent){const n=t.processEvent.bind(t),r=Object.assign(((t,r)=>n(t,r,e)),{id:t.name});e.addEventProcessor(r)}s.T&&o.vF.log("Integration installed: ".concat(t.name))}}function m(e){const t=(0,i.KU)();t&&t.addIntegration?t.addIntegration(e):s.T&&o.vF.warn('Cannot add integration "'.concat(e.name,'" because no SDK Client is available.'))}function f(e,t){return Object.assign((function(){return t(...arguments)}),{id:e})}function _(e){return e}},86231:(e,t,n)=>{"use strict";n.d(t,{HG:()=>u,m6:()=>h});var r=n(38137),o=n(81e3),s=n(62365),a=n(28281),i=n(42082),c=n(79391),l=n(5194);let d;class u{constructor(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._attachments=[],this._user={},this._tags={},this._extra={},this._contexts={},this._sdkProcessingMetadata={},this._propagationContext=p()}static clone(e){return e?e.clone():new u}clone(){const e=new u;return e._breadcrumbs=[...this._breadcrumbs],e._tags={...this._tags},e._extra={...this._extra},e._contexts={...this._contexts},e._user=this._user,e._level=this._level,e._span=this._span,e._session=this._session,e._transactionName=this._transactionName,e._fingerprint=this._fingerprint,e._eventProcessors=[...this._eventProcessors],e._requestSession=this._requestSession,e._attachments=[...this._attachments],e._sdkProcessingMetadata={...this._sdkProcessingMetadata},e._propagationContext={...this._propagationContext},e._client=this._client,e}setClient(e){this._client=e}getClient(){return this._client}addScopeListener(e){this._scopeListeners.push(e)}addEventProcessor(e){return this._eventProcessors.push(e),this}setUser(e){return this._user=e||{email:void 0,id:void 0,ip_address:void 0,segment:void 0,username:void 0},this._session&&(0,c.qO)(this._session,{user:e}),this._notifyScopeListeners(),this}getUser(){return this._user}getRequestSession(){return this._requestSession}setRequestSession(e){return this._requestSession=e,this}setTags(e){return this._tags={...this._tags,...e},this._notifyScopeListeners(),this}setTag(e,t){return this._tags={...this._tags,[e]:t},this._notifyScopeListeners(),this}setExtras(e){return this._extra={...this._extra,...e},this._notifyScopeListeners(),this}setExtra(e,t){return this._extra={...this._extra,[e]:t},this._notifyScopeListeners(),this}setFingerprint(e){return this._fingerprint=e,this._notifyScopeListeners(),this}setLevel(e){return this._level=e,this._notifyScopeListeners(),this}setTransactionName(e){return this._transactionName=e,this._notifyScopeListeners(),this}setContext(e,t){return null===t?delete this._contexts[e]:this._contexts[e]=t,this._notifyScopeListeners(),this}setSpan(e){return this._span=e,this._notifyScopeListeners(),this}getSpan(){return this._span}getTransaction(){const e=this._span;return e&&e.transaction}setSession(e){return e?this._session=e:delete this._session,this._notifyScopeListeners(),this}getSession(){return this._session}update(e){if(!e)return this;const t="function"===typeof e?e(this):e;if(t instanceof u){const e=t.getScopeData();this._tags={...this._tags,...e.tags},this._extra={...this._extra,...e.extra},this._contexts={...this._contexts,...e.contexts},e.user&&Object.keys(e.user).length&&(this._user=e.user),e.level&&(this._level=e.level),e.fingerprint.length&&(this._fingerprint=e.fingerprint),t.getRequestSession()&&(this._requestSession=t.getRequestSession()),e.propagationContext&&(this._propagationContext=e.propagationContext)}else if((0,r.Qd)(t)){const t=e;this._tags={...this._tags,...t.tags},this._extra={...this._extra,...t.extra},this._contexts={...this._contexts,...t.contexts},t.user&&(this._user=t.user),t.level&&(this._level=t.level),t.fingerprint&&(this._fingerprint=t.fingerprint),t.requestSession&&(this._requestSession=t.requestSession),t.propagationContext&&(this._propagationContext=t.propagationContext)}return this}clear(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._requestSession=void 0,this._span=void 0,this._session=void 0,this._notifyScopeListeners(),this._attachments=[],this._propagationContext=p(),this}addBreadcrumb(e,t){const n="number"===typeof t?t:100;if(n<=0)return this;const r={timestamp:(0,o.lu)(),...e},s=this._breadcrumbs;return s.push(r),this._breadcrumbs=s.length>n?s.slice(-n):s,this._notifyScopeListeners(),this}getLastBreadcrumb(){return this._breadcrumbs[this._breadcrumbs.length-1]}clearBreadcrumbs(){return this._breadcrumbs=[],this._notifyScopeListeners(),this}addAttachment(e){return this._attachments.push(e),this}getAttachments(){return this.getScopeData().attachments}clearAttachments(){return this._attachments=[],this}getScopeData(){const{_breadcrumbs:e,_attachments:t,_contexts:n,_tags:r,_extra:o,_user:s,_level:a,_fingerprint:i,_eventProcessors:c,_propagationContext:l,_sdkProcessingMetadata:d,_transactionName:u,_span:h}=this;return{breadcrumbs:e,attachments:t,contexts:n,tags:r,extra:o,user:s,level:a,fingerprint:i||[],eventProcessors:c,propagationContext:l,sdkProcessingMetadata:d,transactionName:u,span:h}}applyToEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];(0,l.e2)(e,this.getScopeData());const r=[...n,...(0,i.lG)(),...this._eventProcessors];return(0,i.jB)(r,e,t)}setSDKProcessingMetadata(e){return this._sdkProcessingMetadata={...this._sdkProcessingMetadata,...e},this}setPropagationContext(e){return this._propagationContext=e,this}getPropagationContext(){return this._propagationContext}captureException(e,t){const n=t&&t.event_id?t.event_id:(0,s.eJ)();if(!this._client)return a.vF.warn("No client configured on scope - will not capture exception!"),n;const r=new Error("Sentry syntheticException");return this._client.captureException(e,{originalException:e,syntheticException:r,...t,event_id:n},this),n}captureMessage(e,t,n){const r=n&&n.event_id?n.event_id:(0,s.eJ)();if(!this._client)return a.vF.warn("No client configured on scope - will not capture message!"),r;const o=new Error(e);return this._client.captureMessage(e,t,{originalException:e,syntheticException:o,...n,event_id:r},this),r}captureEvent(e,t){const n=t&&t.event_id?t.event_id:(0,s.eJ)();return this._client?(this._client.captureEvent(e,{...t,event_id:n},this),n):(a.vF.warn("No client configured on scope - will not capture event!"),n)}_notifyScopeListeners(){this._notifyingListeners||(this._notifyingListeners=!0,this._scopeListeners.forEach((e=>{e(this)})),this._notifyingListeners=!1)}}function h(){return d||(d=new u),d}function p(){return{traceId:(0,s.eJ)(),spanId:(0,s.eJ)().substring(16)}}},79391:(e,t,n)=>{"use strict";n.d(t,{Vu:()=>c,fj:()=>a,qO:()=>i});var r=n(81e3),o=n(62365),s=n(80210);function a(e){const t=(0,r.zf)(),n={sid:(0,o.eJ)(),init:!0,timestamp:t,started:t,duration:0,status:"ok",errors:0,ignoreDuration:!1,toJSON:()=>function(e){return(0,s.Ce)({sid:"".concat(e.sid),init:e.init,started:new Date(1e3*e.started).toISOString(),timestamp:new Date(1e3*e.timestamp).toISOString(),status:e.status,errors:e.errors,did:"number"===typeof e.did||"string"===typeof e.did?"".concat(e.did):void 0,duration:e.duration,abnormal_mechanism:e.abnormal_mechanism,attrs:{release:e.release,environment:e.environment,ip_address:e.ipAddress,user_agent:e.userAgent}})}(n)};return e&&i(n,e),n}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.user&&(!e.ipAddress&&t.user.ip_address&&(e.ipAddress=t.user.ip_address),e.did||t.did||(e.did=t.user.id||t.user.email||t.user.username)),e.timestamp=t.timestamp||(0,r.zf)(),t.abnormal_mechanism&&(e.abnormal_mechanism=t.abnormal_mechanism),t.ignoreDuration&&(e.ignoreDuration=t.ignoreDuration),t.sid&&(e.sid=32===t.sid.length?t.sid:(0,o.eJ)()),void 0!==t.init&&(e.init=t.init),!e.did&&t.did&&(e.did="".concat(t.did)),"number"===typeof t.started&&(e.started=t.started),e.ignoreDuration)e.duration=void 0;else if("number"===typeof t.duration)e.duration=t.duration;else{const t=e.timestamp-e.started;e.duration=t>=0?t:0}t.release&&(e.release=t.release),t.environment&&(e.environment=t.environment),!e.ipAddress&&t.ipAddress&&(e.ipAddress=t.ipAddress),!e.userAgent&&t.userAgent&&(e.userAgent=t.userAgent),"number"===typeof t.errors&&(e.errors=t.errors),t.status&&(e.status=t.status)}function c(e,t){let n={};t?n={status:t}:"ok"===e.status&&(n={status:"exited"}),i(e,n)}},20763:(e,t,n)=>{"use strict";n.d(t,{k:()=>l,l:()=>c});var r=n(80210),o=n(84850),s=n(38872),a=n(3445),i=n(92396);function c(e,t,n){const s=t.getOptions(),{publicKey:a}=t.getDsn()||{},{segment:i}=n&&n.getUser()||{},c=(0,r.Ce)({environment:s.environment||o.U,release:s.release,user_segment:i,public_key:a,trace_id:e});return t.emit&&t.emit("createDsc",c),c}function l(e){const t=(0,s.KU)();if(!t)return{};const n=c((0,i.et)(e).trace_id||"",t,(0,s.o5)()),r=(0,a.z)(e);if(!r)return n;const o=r&&r._frozenDynamicSamplingContext;if(o)return o;const{sampleRate:l,source:d}=r.metadata;null!=l&&(n.sample_rate="".concat(l));const u=(0,i.et)(r);return d&&"url"!==d&&(n.transaction=u.description),n.sampled=String((0,i.pK)(r)),t.emit&&t.emit("createDsc",n),n}},5194:(e,t,n)=>{"use strict";n.d(t,{Rg:()=>l,e2:()=>c});var r=n(80210),o=n(62365),s=n(20763),a=n(3445),i=n(92396);function c(e,t){const{fingerprint:n,span:c,breadcrumbs:l,sdkProcessingMetadata:d}=t;!function(e,t){const{extra:n,tags:o,user:s,contexts:a,level:i,transactionName:c}=t,l=(0,r.Ce)(n);l&&Object.keys(l).length&&(e.extra={...l,...e.extra});const d=(0,r.Ce)(o);d&&Object.keys(d).length&&(e.tags={...d,...e.tags});const u=(0,r.Ce)(s);u&&Object.keys(u).length&&(e.user={...u,...e.user});const h=(0,r.Ce)(a);h&&Object.keys(h).length&&(e.contexts={...h,...e.contexts});i&&(e.level=i);c&&(e.transaction=c)}(e,t),c&&function(e,t){e.contexts={trace:(0,i.kX)(t),...e.contexts};const n=(0,a.z)(t);if(n){e.sdkProcessingMetadata={dynamicSamplingContext:(0,s.k)(t),...e.sdkProcessingMetadata};const r=(0,i.et)(n).description;r&&(e.tags={transaction:r,...e.tags})}}(e,c),function(e,t){e.fingerprint=e.fingerprint?(0,o.k9)(e.fingerprint):[],t&&(e.fingerprint=e.fingerprint.concat(t));e.fingerprint&&!e.fingerprint.length&&delete e.fingerprint}(e,n),function(e,t){const n=[...e.breadcrumbs||[],...t];e.breadcrumbs=n.length?n:void 0}(e,l),function(e,t){e.sdkProcessingMetadata={...e.sdkProcessingMetadata,...t}}(e,d)}function l(e,t){const{extra:n,tags:r,user:o,contexts:s,level:a,sdkProcessingMetadata:i,breadcrumbs:c,fingerprint:l,eventProcessors:u,attachments:h,propagationContext:p,transactionName:m,span:f}=t;d(e,"extra",n),d(e,"tags",r),d(e,"user",o),d(e,"contexts",s),d(e,"sdkProcessingMetadata",i),a&&(e.level=a),m&&(e.transactionName=m),f&&(e.span=f),c.length&&(e.breadcrumbs=[...e.breadcrumbs,...c]),l.length&&(e.fingerprint=[...e.fingerprint,...l]),u.length&&(e.eventProcessors=[...e.eventProcessors,...u]),h.length&&(e.attachments=[...e.attachments,...h]),e.propagationContext={...e.propagationContext,...p}}function d(e,t,n){if(n&&Object.keys(n).length){e[t]={...e[t]};for(const r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[t][r]=n[r])}}},3445:(e,t,n)=>{"use strict";function r(e){return e.transaction}n.d(t,{z:()=>r})},61516:(e,t,n)=>{"use strict";function r(e,t){const n=t&&function(e){return void 0!==e.getClient}(t)?t.getClient():t,r=n&&n.getDsn(),s=n&&n.getOptions().tunnel;return function(e,t){return!!t&&e.includes(t.host)}(e,r)||function(e,t){if(!t)return!1;return o(e)===o(t)}(e,s)}function o(e){return"/"===e[e.length-1]?e.slice(0,-1):e}n.d(t,{A:()=>r})},93848:(e,t,n)=>{"use strict";n.d(t,{li:()=>f,mG:()=>p});var r=n(62365),o=n(81e3),s=n(88352),a=n(94794),i=n(49816),c=n(84850),l=n(42082),d=n(86231),u=n(5194),h=n(92396);function p(e,t,n,p,f,_){const{normalizeDepth:g=3,normalizeMaxBreadth:v=1e3}=e,y={...t,event_id:t.event_id||n.event_id||(0,r.eJ)(),timestamp:t.timestamp||(0,o.lu)()},b=n.integrations||e.integrations.map((e=>e.name));!function(e,t){const{environment:n,release:r,dist:o,maxValueLength:a=250}=t;"environment"in e||(e.environment="environment"in t?n:c.U);void 0===e.release&&void 0!==r&&(e.release=r);void 0===e.dist&&void 0!==o&&(e.dist=o);e.message&&(e.message=(0,s.xv)(e.message,a));const i=e.exception&&e.exception.values&&e.exception.values[0];i&&i.value&&(i.value=(0,s.xv)(i.value,a));const l=e.request;l&&l.url&&(l.url=(0,s.xv)(l.url,a))}(y,e),function(e,t){t.length>0&&(e.sdk=e.sdk||{},e.sdk.integrations=[...e.sdk.integrations||[],...t])}(y,b),void 0===t.type&&function(e,t){const n=a.OW._sentryDebugIds;if(!n)return;let r;const o=m.get(t);o?r=o:(r=new Map,m.set(t,r));const s=Object.keys(n).reduce(((e,o)=>{let s;const a=r.get(o);a?s=a:(s=t(o),r.set(o,s));for(let t=s.length-1;t>=0;t--){const r=s[t];if(r.filename){e[r.filename]=n[o];break}}return e}),{});try{e.exception.values.forEach((e=>{e.stacktrace.frames.forEach((e=>{e.filename&&(e.debug_id=s[e.filename])}))}))}catch(i){}}(y,e.stackParser);const w=function(e,t){if(!t)return e;const n=e?e.clone():new d.HG;return n.update(t),n}(p,n.captureContext);n.mechanism&&(0,r.M6)(y,n.mechanism);const S=f&&f.getEventProcessors?f.getEventProcessors():[],k=(0,d.m6)().getScopeData();if(_){const e=_.getScopeData();(0,u.Rg)(k,e)}if(w){const e=w.getScopeData();(0,u.Rg)(k,e)}const C=[...n.attachments||[],...k.attachments];C.length&&(n.attachments=C),(0,u.e2)(y,k);const E=[...S,...(0,l.lG)(),...k.eventProcessors];return(0,l.jB)(E,y,n).then((e=>(e&&function(e){const t={};try{e.exception.values.forEach((e=>{e.stacktrace.frames.forEach((e=>{e.debug_id&&(e.abs_path?t[e.abs_path]=e.debug_id:e.filename&&(t[e.filename]=e.debug_id),delete e.debug_id)}))}))}catch(r){}if(0===Object.keys(t).length)return;e.debug_meta=e.debug_meta||{},e.debug_meta.images=e.debug_meta.images||[];const n=e.debug_meta.images;Object.keys(t).forEach((e=>{n.push({type:"sourcemap",code_file:e,debug_id:t[e]})}))}(e),"number"===typeof g&&g>0?function(e,t,n){if(!e)return null;const r={...e,...e.breadcrumbs&&{breadcrumbs:e.breadcrumbs.map((e=>({...e,...e.data&&{data:(0,i.S8)(e.data,t,n)}})))},...e.user&&{user:(0,i.S8)(e.user,t,n)},...e.contexts&&{contexts:(0,i.S8)(e.contexts,t,n)},...e.extra&&{extra:(0,i.S8)(e.extra,t,n)}};e.contexts&&e.contexts.trace&&r.contexts&&(r.contexts.trace=e.contexts.trace,e.contexts.trace.data&&(r.contexts.trace.data=(0,i.S8)(e.contexts.trace.data,t,n)));e.spans&&(r.spans=e.spans.map((e=>{const r=(0,h.et)(e).data;return r&&(e.data=(0,i.S8)(r,t,n)),e})));return r}(e,g,v):e)))}const m=new WeakMap;function f(e){if(e)return function(e){return e instanceof d.HG||"function"===typeof e}(e)||function(e){return Object.keys(e).some((e=>_.includes(e)))}(e)?{captureContext:e}:e}const _=["user","level","extra","contexts","tags","fingerprint","requestSession","propagationContext"]},92396:(e,t,n)=>{"use strict";n.d(t,{CC:()=>a,Qh:()=>l,aO:()=>i,cI:()=>d,et:()=>h,kX:()=>c,pK:()=>p});var r=n(80210),o=n(69551),s=n(81e3);const a=0,i=1;function c(e){const{spanId:t,traceId:n}=e.spanContext(),{data:o,op:s,parent_span_id:a,status:i,tags:c,origin:l}=h(e);return(0,r.Ce)({data:o,op:s,parent_span_id:a,span_id:t,status:i,tags:c,trace_id:n,origin:l})}function l(e){const{traceId:t,spanId:n}=e.spanContext(),r=p(e);return(0,o.TC)(t,n,r)}function d(e){return"number"===typeof e?u(e):Array.isArray(e)?e[0]+e[1]/1e9:e instanceof Date?u(e.getTime()):(0,s.zf)()}function u(e){return e>9999999999?e/1e3:e}function h(e){return function(e){return"function"===typeof e.getSpanJSON}(e)?e.getSpanJSON():"function"===typeof e.toJSON?e.toJSON():{}}function p(e){const{traceFlags:t}=e.spanContext();return Boolean(t&i)}},74591:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});const r="7.114.0"},24440:(e,t,n)=>{"use strict";n.d(t,{G:()=>p,q:()=>h});var r=n(38872),o=n(8577),s=n(28281),a=n(94794),i=n(79734),c=n(27414),l=n(62365),d=n(88352);const u="CaptureConsole",h=(0,o._C)((function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).levels||s.Ow;return{name:u,setupOnce(){},setup(t){"console"in a.OW&&(0,i.P)((n=>{let{args:o,level:s}=n;(0,r.KU)()===t&&e.includes(s)&&function(e,t){const n={level:(0,c.te)(t),extra:{arguments:e}};(0,r.v4)((o=>{if(o.addEventProcessor((e=>(e.logger="console",(0,l.M6)(e,{handled:!1,type:"console"}),e))),"assert"===t&&!1===e[0]){const t="Assertion failed: ".concat((0,d.gt)(e.slice(1)," ")||"console.assert");return o.setExtra("arguments",e.slice(1)),void(0,r.wd)(t,n)}const s=e.find((e=>e instanceof Error));if("error"===t&&s)return void(0,r.Cp)(s,n);const a=(0,d.gt)(e," ");(0,r.wd)(a,n)}))}(o,s)}))}}})),p=(0,o.F)(u,h)},71121:(e,t,n)=>{"use strict";n.d(t,{l$:()=>l,t7:()=>d});var r=n(8577),o=n(94794),s=n(88544),a=n(62365);const i=o.OW,c="ContextLines",l=(0,r._C)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=null!=e.frameContextLines?e.frameContextLines:7;return{name:c,setupOnce(){},processEvent:e=>function(e,t){const n=i.document,r=i.location&&(0,s.f)(i.location.href);if(!n||!r)return e;const o=e.exception&&e.exception.values;if(!o||!o.length)return e;const c=n.documentElement.innerHTML;if(!c)return e;const l=["","",...c.split("\n"),""];return o.forEach((e=>{const n=e.stacktrace;n&&n.frames&&(n.frames=n.frames.map((e=>function(e,t,n,r){if(e.filename!==n||!e.lineno||!t.length)return e;return(0,a.db)(t,e,r),e}(e,l,r,t))))})),e}(e,t)}})),d=(0,r.F)(c,l)},23089:(e,t,n)=>{"use strict";n.d(t,{T:()=>r});const r="undefined"===typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__},63508:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,y:()=>i});var r=n(8577),o=n(28281);const s="Debug",a=(0,r._C)((function(){const e={debugger:!1,stringify:!1,...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}};return{name:s,setupOnce(){},setup(t){t.on&&t.on("beforeSendEvent",((t,n)=>{e.debugger,(0,o.pq)((()=>{e.stringify?(console.log(JSON.stringify(t,null,2)),n&&Object.keys(n).length&&console.log(JSON.stringify(n,null,2))):(console.log(t),n&&Object.keys(n).length&&console.log(n))}))}))}}})),i=(0,r.F)(s,a)},53700:(e,t,n)=>{"use strict";n.d(t,{UA:()=>c,sn:()=>i});var r=n(8577),o=n(28281),s=n(23089);const a="Dedupe",i=(0,r._C)((()=>{let e;return{name:a,setupOnce(){},processEvent(t){if(t.type)return t;try{if(function(e,t){if(!t)return!1;if(function(e,t){const n=e.message,r=t.message;if(!n&&!r)return!1;if(n&&!r||!n&&r)return!1;if(n!==r)return!1;if(!d(e,t))return!1;if(!l(e,t))return!1;return!0}(e,t))return!0;if(function(e,t){const n=u(t),r=u(e);if(!n||!r)return!1;if(n.type!==r.type||n.value!==r.value)return!1;if(!d(e,t))return!1;if(!l(e,t))return!1;return!0}(e,t))return!0;return!1}(t,e))return s.T&&o.vF.warn("Event dropped due to being a duplicate of previously captured event."),null}catch(n){}return e=t}}})),c=(0,r.F)(a,i);function l(e,t){let n=h(e),r=h(t);if(!n&&!r)return!0;if(n&&!r||!n&&r)return!1;if(r.length!==n.length)return!1;for(let o=0;o{"use strict";n.d(t,{X:()=>d,p:()=>u});var r=n(8577),o=n(38137),s=n(49816),a=n(80210),i=n(28281),c=n(23089);const l="ExtraErrorData",d=(0,r._C)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.depth||3,n=e.captureErrorCause||!1;return{name:l,setupOnce(){},processEvent:(e,r)=>function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;if(!t.originalException||!(0,o.bJ)(t.originalException))return e;const l=t.originalException.name||t.originalException.constructor.name,d=function(e,t){try{const n=["name","message","stack","line","column","fileName","lineNumber","columnNumber","toJSON"],r={};for(const t of Object.keys(e)){if(-1!==n.indexOf(t))continue;const s=e[t];r[t]=(0,o.bJ)(s)?s.toString():s}if(t&&void 0!==e.cause&&(r.cause=(0,o.bJ)(e.cause)?e.cause.toString():e.cause),"function"===typeof e.toJSON){const t=e.toJSON();for(const e of Object.keys(t)){const n=t[e];r[e]=(0,o.bJ)(n)?n.toString():n}}return r}catch(n){c.T&&i.vF.error("Unable to extract extra data from the Error object:",n)}return null}(t.originalException,r);if(d){const t={...e.contexts},r=(0,s.S8)(d,n);return(0,o.Qd)(r)&&((0,a.my)(r,"__sentry_skip_normalization__",!0),t[l]=r),{...e,contexts:t}}return e}(e,r,t,n)}})),u=(0,r.F)(l,d)},78196:(e,t,n)=>{"use strict";n.d(t,{Q:()=>f,c:()=>m});var r=n(8577),o=n(38872),s=n(61516),a=n(28281),i=n(97921),c=n(22411),l=n(94794),d=n(35205),u=n(62365),h=n(23089);const p="HttpClient",m=(0,r._C)((function(){const e={failedRequestStatusCodes:[[500,599]],failedRequestTargets:[/.*/],...arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}};return{name:p,setupOnce(){},setup(t){!function(e,t){if(!(0,i.m7)())return;(0,c.u)((n=>{if((0,o.KU)()!==e)return;const{response:r,args:s}=n,[i,c]=s;r&&function(e,t,n,r){if(v(e,n.status,n.url)){const e=function(e,t){if(!t&&e instanceof Request)return e;if(e instanceof Request&&e.bodyUsed)return e;return new Request(e,t)}(t,r);let s,i,c,l;b()&&([{headers:s,cookies:c},{headers:i,cookies:l}]=[{cookieHeader:"Cookie",obj:e},{cookieHeader:"Set-Cookie",obj:n}].map((e=>{let{cookieHeader:t,obj:n}=e;const r=function(e){const t={};return e.forEach(((e,n)=>{t[n]=e})),t}(n.headers);let o;try{const e=r[t]||r[t.toLowerCase()]||void 0;e&&(o=g(e))}catch(s){h.T&&a.vF.log("Could not extract cookies from header ".concat(t))}return{headers:r,cookies:o}})));const d=y({url:e.url,method:e.method,status:n.status,requestHeaders:s,responseHeaders:i,requestCookies:c,responseCookies:l});(0,o.r)(d)}}(t,i,r,c)}))}(t,e),function(e,t){if(!("XMLHttpRequest"in l.OW))return;(0,d.Mn)((n=>{if((0,o.KU)()!==e)return;const r=n.xhr,s=r[d.Er];if(!s)return;const{method:i,request_headers:c}=s;try{!function(e,t,n,r){if(v(e,t.status,t.responseURL)){let e,i,c;if(b()){try{const e=t.getResponseHeader("Set-Cookie")||t.getResponseHeader("set-cookie")||void 0;e&&(i=g(e))}catch(s){h.T&&a.vF.log("Could not extract cookies from response headers")}try{c=function(e){const t=e.getAllResponseHeaders();if(!t)return{};return t.split("\r\n").reduce(((e,t)=>{const[n,r]=t.split(": ");return e[n]=r,e}),{})}(t)}catch(s){h.T&&a.vF.log("Could not extract headers from response")}e=r}const l=y({url:t.responseURL,method:n,status:t.status,requestHeaders:e,responseHeaders:c,responseCookies:i});(0,o.r)(l)}}(t,r,i,c)}catch(l){h.T&&a.vF.warn("Error while extracting response event form XHR response",l)}}))}(t,e)}}})),f=(0,r.F)(p,m);function _(e){if(e){const t=e["Content-Length"]||e["content-length"];if(t)return parseInt(t,10)}}function g(e){return e.split("; ").reduce(((e,t)=>{const[n,r]=t.split("=");return e[n]=r,e}),{})}function v(e,t,n){return function(e,t){return e.some((e=>"number"===typeof e?e===t:t>=e[0]&&t<=e[1]))}(e.failedRequestStatusCodes,t)&&(r=e.failedRequestTargets,a=n,r.some((e=>"string"===typeof e?a.includes(e):e.test(a))))&&!(0,s.A)(n,(0,o.KU)());var r,a}function y(e){const t="HTTP Client Error with status code: ".concat(e.status),n={message:t,exception:{values:[{type:"Error",value:t}]},request:{url:e.url,method:e.method,headers:e.requestHeaders,cookies:e.requestCookies},contexts:{response:{status_code:e.status,headers:e.responseHeaders,cookies:e.responseCookies,body_size:_(e.responseHeaders)}}};return(0,u.M6)(n,{type:"http.client",handled:!1}),n}function b(){const e=(0,o.KU)();return!!e&&Boolean(e.getOptions().sendDefaultPii)}},45198:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CaptureConsole:()=>r.G,ContextLines:()=>k.t7,Debug:()=>o.y,Dedupe:()=>s.UA,ExtraErrorData:()=>a.p,HttpClient:()=>S.Q,Offline:()=>m,ReportingObserver:()=>f.P,RewriteFrames:()=>_.F,SessionTiming:()=>g.T,Transaction:()=>b,captureConsoleIntegration:()=>r.q,contextLinesIntegration:()=>k.l$,debugIntegration:()=>o._,dedupeIntegration:()=>s.sn,extraErrorDataIntegration:()=>a.X,httpClientIntegration:()=>S.c,reportingObserverIntegration:()=>f.n,rewriteFramesIntegration:()=>_.D,sessionTimingIntegration:()=>g.Z});var r=n(24440),o=n(63508),s=n(53700),a=n(70927),i=n(94794),c=n(28281),l=n(62365),d=n(49816),u=n(4423),h=n(23089);const p=i.OW;class m{static __initStatic(){this.id="Offline"}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.name=m.id,this.maxStoredEvents=e.maxStoredEvents||30,this.offlineEventStore=u.createInstance({name:"sentry/offlineEventStore"})}setupOnce(e,t){this.hub=t(),"addEventListener"in p&&p.addEventListener("online",(()=>{this._sendEvents().catch((()=>{h.T&&c.vF.warn("could not send cached events")}))}));const n=e=>this.hub&&this.hub.getIntegration(m)&&"navigator"in p&&"onLine"in p.navigator&&!p.navigator.onLine?(h.T&&c.vF.log("Event dropped due to being a offline - caching instead"),this._cacheEvent(e).then((e=>this._enforceMaxEvents())).catch((e=>{h.T&&c.vF.warn("could not cache event while offline")})),null):e;n.id=this.name,e(n),"navigator"in p&&"onLine"in p.navigator&&p.navigator.onLine&&this._sendEvents().catch((()=>{h.T&&c.vF.warn("could not send cached events")}))}async _cacheEvent(e){return this.offlineEventStore.setItem((0,l.eJ)(),(0,d.S8)(e))}async _enforceMaxEvents(){const e=[];return this.offlineEventStore.iterate(((t,n,r)=>{e.push({cacheKey:n,event:t})})).then((()=>this._purgeEvents(e.sort(((e,t)=>(t.event.timestamp||0)-(e.event.timestamp||0))).slice(this.maxStoredEventse.cacheKey))))).catch((e=>{h.T&&c.vF.warn("could not enforce max events")}))}async _purgeEvent(e){return this.offlineEventStore.removeItem(e)}async _purgeEvents(e){return Promise.all(e.map((e=>this._purgeEvent(e)))).then()}async _sendEvents(){return this.offlineEventStore.iterate(((e,t,n)=>{this.hub?(this.hub.captureEvent(e),this._purgeEvent(t).catch((e=>{h.T&&c.vF.warn("could not purge event from cache")}))):h.T&&c.vF.warn("no hub found - could not send cached event")}))}}m.__initStatic();var f=n(34015),_=n(24258),g=n(27401),v=n(8577);const y="Transaction",b=(0,v.F)(y,(()=>({name:y,setupOnce(){},processEvent(e){const t=function(e){const t=e.exception&&e.exception.values&&e.exception.values[0];return t&&t.stacktrace&&t.stacktrace.frames||[]}(e);for(let n=t.length-1;n>=0;n--){const r=t[n];if(!0===r.in_app){e.transaction=w(r);break}}return e}})));function w(e){return e.module||e.function?"".concat(e.module||"?","/").concat(e.function||"?"):""}var S=n(78196),k=n(71121)},34015:(e,t,n)=>{"use strict";n.d(t,{P:()=>u,n:()=>d});var r=n(38872),o=n(8577),s=n(94794),a=n(97921);const i=s.OW,c="ReportingObserver",l=new WeakMap,d=(0,o._C)((function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).types||["crash","deprecation","intervention"];function t(e){if(l.has((0,r.KU)()))for(const t of e)(0,r.v4)((e=>{e.setExtra("url",t.url);const n="ReportingObserver [".concat(t.type,"]");let o="No details available";if(t.body){const n={};for(const e in t.body)n[e]=t.body[e];if(e.setExtra("body",n),"crash"===t.type){const e=t.body;o=[e.crashId||"",e.reason||""].join(" ").trim()||o}else{o=t.body.message||o}}(0,r.wd)("".concat(n,": ").concat(o))}))}return{name:c,setupOnce(){if(!(0,a.vQ)())return;new i.ReportingObserver(t,{buffered:!0,types:e}).observe()},setup(e){l.set(e,!0)}}})),u=(0,o.F)(c,d)},24258:(e,t,n)=>{"use strict";n.d(t,{F:()=>u,D:()=>d});var r=n(8577);function o(e,t){let n=0;for(let r=e.length-1;r>=0;r--){const t=e[r];"."===t?e.splice(r,1):".."===t?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}const s=/^(\S+:\\|\/?)([\s\S]*?)((?:\.{1,2}|[^/\\]+?|)(\.[^./\\]*|))(?:[/\\]*)$/;function a(e){const t=e.length>1024?"".concat(e.slice(-1024)):e,n=s.exec(t);return n?n.slice(1):[]}function i(){let e="",t=!1;for(let n=arguments.length-1;n>=-1&&!t;n--){const r=n>=0?n<0||arguments.length<=n?void 0:arguments[n]:"/";r&&(e="".concat(r,"/").concat(e),t="/"===r.charAt(0))}return e=o(e.split("/").filter((e=>!!e)),!t).join("/"),(t?"/":"")+e||"."}function c(e){let t=0;for(;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}const l="RewriteFrames",d=(0,r._C)((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.root,n=e.prefix||"app:///",r=e.iteratee||(e=>{if(!e.filename)return e;const r=/^[a-zA-Z]:\\/.test(e.filename)||e.filename.includes("\\")&&!e.filename.includes("/"),o=/^\//.test(e.filename);if(r||o){const o=r?e.filename.replace(/^[a-zA-Z]:/,"").replace(/\\/g,"/"):e.filename,s=t?function(e,t){e=i(e).slice(1),t=i(t).slice(1);const n=c(e.split("/")),r=c(t.split("/")),o=Math.min(n.length,r.length);let s=o;for(let i=0;i{return{...e,...e.stacktrace&&{stacktrace:(t=e.stacktrace,{...t,frames:t&&t.frames&&t.frames.map((e=>r(e)))})}};var t}))}}}catch(t){return e}}(t)),t}}})),u=(0,r.F)(l,d)},27401:(e,t,n)=>{"use strict";n.d(t,{T:()=>a,Z:()=>s});var r=n(8577);const o="SessionTiming",s=(0,r._C)((()=>{const e=Date.now();return{name:o,setupOnce(){},processEvent(t){const n=Date.now();return{...t,extra:{...t.extra,"session:start":e,"session:duration":n-e,"session:end":n}}}}})),a=(0,r.F)(o,s)},94367:(e,t,n)=>{"use strict";n.d(t,{De:()=>u,hF:()=>a,yD:()=>d});var r=n(70183),o=n(38137),s=n(28281);const a="baggage",i="sentry-",c=/^sentry-/,l=8192;function d(e){if(!(0,o.Kg)(e)&&!Array.isArray(e))return;let t={};if(Array.isArray(e))t=e.reduce(((e,t)=>{const n=h(t);for(const r of Object.keys(n))e[r]=n[r];return e}),{});else{if(!e)return;t=h(e)}const n=Object.entries(t).reduce(((e,t)=>{let[n,r]=t;if(n.match(c)){e[n.slice(i.length)]=r}return e}),{});return Object.keys(n).length>0?n:void 0}function u(e){if(!e)return;return function(e){if(0===Object.keys(e).length)return;return Object.entries(e).reduce(((e,t,n)=>{let[o,a]=t;const i="".concat(encodeURIComponent(o),"=").concat(encodeURIComponent(a)),c=0===n?i:"".concat(e,",").concat(i);return c.length>l?(r.T&&s.vF.warn("Not adding key: ".concat(o," with val: ").concat(a," to baggage header due to exceeding baggage size limits.")),e):c}),"")}(Object.entries(e).reduce(((e,t)=>{let[n,r]=t;return r&&(e["".concat(i).concat(n)]=r),e}),{}))}function h(e){return e.split(",").map((e=>e.split("=").map((e=>decodeURIComponent(e.trim()))))).reduce(((e,t)=>{let[n,r]=t;return e[n]=r,e}),{})}},11337:(e,t,n)=>{"use strict";n.d(t,{$N:()=>c,Hd:()=>a,NX:()=>l,xE:()=>d});var r=n(38137);const o=(0,n(94794).VZ)(),s=80;function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return"";try{let n=e;const r=5,o=[];let a=0,c=0;const l=" > ",d=l.length;let u;const h=Array.isArray(t)?t:t.keyAttrs,p=!Array.isArray(t)&&t.maxStringLength||s;for(;n&&a++1&&c+o.length*d+u.length>=p));)o.push(u),c+=u.length,n=n.parentNode;return o.reverse().join(l)}catch(n){return""}}function i(e,t){const n=e,s=[];let a,i,c,l,d;if(!n||!n.tagName)return"";if(o.HTMLElement&&n instanceof HTMLElement&&n.dataset&&n.dataset.sentryComponent)return n.dataset.sentryComponent;s.push(n.tagName.toLowerCase());const u=t&&t.length?t.filter((e=>n.getAttribute(e))).map((e=>[e,n.getAttribute(e)])):null;if(u&&u.length)u.forEach((e=>{s.push("[".concat(e[0],'="').concat(e[1],'"]'))}));else if(n.id&&s.push("#".concat(n.id)),a=n.className,a&&(0,r.Kg)(a))for(i=a.split(/\s+/),d=0;d{"use strict";n.d(t,{T:()=>r});const r="undefined"===typeof __SENTRY_DEBUG__||__SENTRY_DEBUG__},53086:(e,t,n)=>{"use strict";function r(){return"undefined"!==typeof __SENTRY_BROWSER_BUNDLE__&&!!__SENTRY_BROWSER_BUNDLE__}function o(){return"npm"}n.d(t,{Z:()=>r,e:()=>o})},18571:(e,t,n)=>{"use strict";n.d(t,{AS:()=>l,aj:()=>d,s5:()=>c});var r=n(70183),o=n(28281),s=n(95308);const a={},i={};function c(e,t){a[e]=a[e]||[],a[e].push(t)}function l(e,t){i[e]||(t(),i[e]=!0)}function d(e,t){const n=e&&a[e];if(n)for(const a of n)try{a(t)}catch(i){r.T&&o.vF.error("Error while triggering instrumentation handler.\nType: ".concat(e,"\nName: ").concat((0,s.qQ)(a),"\nError:"),i)}}},79734:(e,t,n)=>{"use strict";n.d(t,{P:()=>i});var r=n(28281),o=n(80210),s=n(94794),a=n(18571);function i(e){const t="console";(0,a.s5)(t,e),(0,a.AS)(t,c)}function c(){"console"in s.OW&&r.Ow.forEach((function(e){e in s.OW.console&&(0,o.GS)(s.OW.console,e,(function(t){return r.Z9[e]=t,function(){for(var t=arguments.length,n=new Array(t),o=0;o{"use strict";n.d(t,{u:()=>i});var r=n(80210),o=n(97921),s=n(94794),a=n(18571);function i(e){const t="fetch";(0,a.s5)(t,e),(0,a.AS)(t,c)}function c(){(0,o.m7)()&&(0,r.GS)(s.OW,"fetch",(function(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r{const t={...c,endTimestamp:Date.now(),response:e};return(0,a.aj)("fetch",t),e}),(e=>{const t={...c,endTimestamp:Date.now(),error:e};throw(0,a.aj)("fetch",t),e}))}}))}function l(e,t){return!!e&&"object"===typeof e&&!!e[t]}function d(e){return"string"===typeof e?e:e?l(e,"url")?e.url:e.toString?e.toString():"":""}},35205:(e,t,n)=>{"use strict";n.d(t,{Er:()=>c,Mn:()=>l});var r=n(38137),o=n(80210),s=n(94794),a=n(18571);const i=s.OW,c="__sentry_xhr_v3__";function l(e){(0,a.s5)("xhr",e),(0,a.AS)("xhr",d)}function d(){if(!i.XMLHttpRequest)return;const e=XMLHttpRequest.prototype;(0,o.GS)(e,"open",(function(e){return function(){const t=Date.now();for(var n=arguments.length,s=new Array(n),i=0;i{const e=this[c];if(e&&4===this.readyState){try{e.status_code=this.status}catch(n){}const r={args:[l,d],endTimestamp:Date.now(),startTimestamp:t,xhr:this};(0,a.aj)("xhr",r)}};return"onreadystatechange"in this&&"function"===typeof this.onreadystatechange?(0,o.GS)(this,"onreadystatechange",(function(e){return function(){u();for(var t=arguments.length,n=new Array(t),r=0;r{"use strict";n.d(t,{BD:()=>i,Kg:()=>l,L2:()=>b,NF:()=>d,Qd:()=>h,Qg:()=>_,T2:()=>a,W6:()=>c,bJ:()=>o,gd:()=>f,mE:()=>g,sO:()=>u,tH:()=>y,vq:()=>m,xH:()=>p,yr:()=>v});const r=Object.prototype.toString;function o(e){switch(r.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return y(e,Error)}}function s(e,t){return r.call(e)==="[object ".concat(t,"]")}function a(e){return s(e,"ErrorEvent")}function i(e){return s(e,"DOMError")}function c(e){return s(e,"DOMException")}function l(e){return s(e,"String")}function d(e){return"object"===typeof e&&null!==e&&"__sentry_template_string__"in e&&"__sentry_template_values__"in e}function u(e){return null===e||d(e)||"object"!==typeof e&&"function"!==typeof e}function h(e){return s(e,"Object")}function p(e){return"undefined"!==typeof Event&&y(e,Event)}function m(e){return"undefined"!==typeof Element&&y(e,Element)}function f(e){return s(e,"RegExp")}function _(e){return Boolean(e&&e.then&&"function"===typeof e.then)}function g(e){return h(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e}function v(e){return"number"===typeof e&&e!==e}function y(e,t){try{return e instanceof t}catch(n){return!1}}function b(e){return!("object"!==typeof e||null===e||!e.__isVue&&!e._isVue)}},28281:(e,t,n)=>{"use strict";n.d(t,{Ow:()=>s,Z9:()=>a,pq:()=>i,vF:()=>c});var r=n(70183),o=n(94794);const s=["debug","info","warn","error","log","assert","trace"],a={};function i(e){if(!("console"in o.OW))return e();const t=o.OW.console,n={},r=Object.keys(a);r.forEach((e=>{const r=a[e];n[e]=t[e],t[e]=r}));try{return e()}finally{r.forEach((e=>{t[e]=n[e]}))}}const c=function(){let e=!1;const t={enable:()=>{e=!0},disable:()=>{e=!1},isEnabled:()=>e};return r.T?s.forEach((n=>{t[n]=function(){for(var t=arguments.length,r=new Array(t),s=0;s{o.OW.console[n]("".concat("Sentry Logger ","[").concat(n,"]:"),...r)}))}})):s.forEach((e=>{t[e]=()=>{}})),t}()},62365:(e,t,n)=>{"use strict";n.d(t,{$X:()=>c,GR:()=>h,M6:()=>d,db:()=>u,eJ:()=>a,gO:()=>l,k9:()=>p});var r=n(80210),o=n(88352),s=n(94794);function a(){const e=s.OW,t=e.crypto||e.msCrypto;let n=()=>16*Math.random();try{if(t&&t.randomUUID)return t.randomUUID().replace(/-/g,"");t&&t.getRandomValues&&(n=()=>{const e=new Uint8Array(1);return t.getRandomValues(e),e[0]})}catch(r){}return([1e7]+1e3+4e3+8e3+1e11).replace(/[018]/g,(e=>(e^(15&n())>>e/4).toString(16)))}function i(e){return e.exception&&e.exception.values?e.exception.values[0]:void 0}function c(e){const{message:t,event_id:n}=e;if(t)return t;const r=i(e);return r?r.type&&r.value?"".concat(r.type,": ").concat(r.value):r.type||r.value||n||"":n||""}function l(e,t,n){const r=e.exception=e.exception||{},o=r.values=r.values||[],s=o[0]=o[0]||{};s.value||(s.value=t||""),s.type||(s.type=n||"Error")}function d(e,t){const n=i(e);if(!n)return;const r=n.mechanism;if(n.mechanism={type:"generic",handled:!0,...r,...t},t&&"data"in t){const e={...r&&r.data,...t.data};n.mechanism.data=e}}function u(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;if(void 0===t.lineno)return;const r=e.length,s=Math.max(Math.min(r-1,t.lineno-1),0);t.pre_context=e.slice(Math.max(0,s-n),s).map((e=>(0,o.nC)(e,0))),t.context_line=(0,o.nC)(e[Math.min(r-1,s)],t.colno||0),t.post_context=e.slice(Math.min(s+1,r),s+1+n).map((e=>(0,o.nC)(e,0)))}function h(e){if(e&&e.__sentry_captured__)return!0;try{(0,r.my)(e,"__sentry_captured__",!0)}catch(t){}return!1}function p(e){return Array.isArray(e)?e:[e]}},62433:(e,t,n)=>{"use strict";n.d(t,{wD:()=>o});var r=n(53086);function o(){return!(0,r.Z)()&&"[object process]"===Object.prototype.toString.call("undefined"!==typeof process?process:0)}e=n.hmd(e)},49816:(e,t,n)=>{"use strict";n.d(t,{S8:()=>a,cd:()=>i});var r=n(38137);var o=n(80210),s=n(95308);function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0;try{return c("",e,t,n)}catch(r){return{ERROR:"**non-serializable** (".concat(r,")")}}}function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:102400;const r=a(e,t);return o=r,function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(o))>n?i(e,t-1,n):r;var o}function c(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1/0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/0,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:function(){const e="function"===typeof WeakSet,t=e?new WeakSet:[];return[function(n){if(e)return!!t.has(n)||(t.add(n),!1);for(let e=0;e=i){f[n]="[MaxProperties ~]";break}const e=g[n];f[n]=c(n,e,p-1,i,l),_++}return u(t),f}},80210:(e,t,n)=>{"use strict";n.d(t,{Ce:()=>g,GS:()=>c,HF:()=>_,W4:()=>p,my:()=>l,pO:()=>d,sp:()=>u,u4:()=>h});var r=n(11337),o=n(70183),s=n(38137),a=n(28281),i=n(88352);function c(e,t,n){if(!(t in e))return;const r=e[t],o=n(r);"function"===typeof o&&d(o,r),e[t]=o}function l(e,t,n){try{Object.defineProperty(e,t,{value:n,writable:!0,configurable:!0})}catch(r){o.T&&a.vF.log('Failed to add non-enumerable property "'.concat(t,'" to object'),e)}}function d(e,t){try{const n=t.prototype||{};e.prototype=t.prototype=n,l(e,"__sentry_original__",t)}catch(n){}}function u(e){return e.__sentry_original__}function h(e){return Object.keys(e).map((t=>"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(e[t])))).join("&")}function p(e){if((0,s.bJ)(e))return{message:e.message,name:e.name,stack:e.stack,...f(e)};if((0,s.xH)(e)){const t={type:e.type,target:m(e.target),currentTarget:m(e.currentTarget),...f(e)};return"undefined"!==typeof CustomEvent&&(0,s.tH)(e,CustomEvent)&&(t.detail=e.detail),t}return e}function m(e){try{return(0,s.vq)(e)?(0,r.Hd)(e):Object.prototype.toString.call(e)}catch(t){return""}}function f(e){if("object"===typeof e&&null!==e){const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}return{}}function _(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:40;const n=Object.keys(p(e));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=t)return(0,i.xv)(n[0],t);for(let r=n.length;r>0;r--){const e=n.slice(0,r).join(", ");if(!(e.length>t))return r===n.length?e:(0,i.xv)(e,t)}return""}function g(e){return v(e,new Map)}function v(e,t){if(function(e){if(!(0,s.Qd)(e))return!1;try{const t=Object.getPrototypeOf(e).constructor.name;return!t||"Object"===t}catch(t){return!0}}(e)){const n=t.get(e);if(void 0!==n)return n;const r={};t.set(e,r);for(const o of Object.keys(e))"undefined"!==typeof e[o]&&(r[o]=v(e[o],t));return r}if(Array.isArray(e)){const n=t.get(e);if(void 0!==n)return n;const r=[];return t.set(e,r),e.forEach((e=>{r.push(v(e,t))})),r}return e}},27414:(e,t,n)=>{"use strict";n.d(t,{te:()=>o});const r=["fatal","error","warning","log","info","debug"];function o(e){return"warn"===e?"warning":r.includes(e)?e:"log"}},95308:(e,t,n)=>{"use strict";n.d(t,{gd:()=>a,qQ:()=>l,vk:()=>i});const r=50,o=/\(error: (.*)\)/,s=/captureMessage|captureException/;function a(){for(var e=arguments.length,t=new Array(e),n=0;ne[0]-t[0])).map((e=>e[1]));return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const n=[],i=e.split("\n");for(let s=t;s1024)continue;const t=o.test(e)?e.replace(o,"$1"):e;if(!t.match(/\S*Error: /)){for(const e of a){const r=e(t);if(r){n.push(r);break}}if(n.length>=r)break}}return function(e){if(!e.length)return[];const t=Array.from(e);/sentryWrapped/.test(t[t.length-1].function||"")&&t.pop();t.reverse(),s.test(t[t.length-1].function||"")&&(t.pop(),s.test(t[t.length-1].function||"")&&t.pop());return t.slice(0,r).map((e=>({...e,filename:e.filename||t[t.length-1].filename,function:e.function||"?"})))}(n)}}function i(e){return Array.isArray(e)?a(...e):e}const c="";function l(e){try{return e&&"function"===typeof e&&e.name||c}catch(t){return c}}},88352:(e,t,n)=>{"use strict";n.d(t,{Xr:()=>i,gt:()=>a,nC:()=>s,xv:()=>o});var r=n(38137);function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"string"!==typeof e||0===t||e.length<=t?e:"".concat(e.slice(0,t),"...")}function s(e,t){let n=e;const r=n.length;if(r<=150)return n;t>r&&(t=r);let o=Math.max(t-60,0);o<5&&(o=0);let s=Math.min(o+140,r);return s>r-5&&(s=r),s===r&&(o=Math.max(s-140,0)),n=n.slice(o,s),o>0&&(n="'{snip} ".concat(n)),s2&&void 0!==arguments[2]&&arguments[2];return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).some((n=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return!!(0,r.Kg)(e)&&((0,r.gd)(t)?t.test(e):!!(0,r.Kg)(t)&&(n?e===t:e.includes(t)))}(e,n,t)))}},97921:(e,t,n)=>{"use strict";n.d(t,{ap:()=>i,m7:()=>c,vQ:()=>l,vm:()=>a});var r=n(70183),o=n(28281);const s=(0,n(94794).VZ)();function a(){if(!("fetch"in s))return!1;try{return new Headers,new Request("http://www.example.com"),new Response,!0}catch(e){return!1}}function i(e){return e&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(e.toString())}function c(){if("string"===typeof EdgeRuntime)return!0;if(!a())return!1;if(i(s.fetch))return!0;let e=!1;const t=s.document;if(t&&"function"===typeof t.createElement)try{const n=t.createElement("iframe");n.hidden=!0,t.head.appendChild(n),n.contentWindow&&n.contentWindow.fetch&&(e=i(n.contentWindow.fetch)),t.head.removeChild(n)}catch(n){r.T&&o.vF.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",n)}return e}function l(){return"ReportingObserver"in s}},3505:(e,t,n)=>{"use strict";n.d(t,{T2:()=>i,XW:()=>s,xg:()=>a});var r,o=n(38137);function s(e){return new i((t=>{t(e)}))}function a(e){return new i(((t,n)=>{n(e)}))}!function(e){e[e.PENDING=0]="PENDING";e[e.RESOLVED=1]="RESOLVED";e[e.REJECTED=2]="REJECTED"}(r||(r={}));class i{constructor(e){i.prototype.__init.call(this),i.prototype.__init2.call(this),i.prototype.__init3.call(this),i.prototype.__init4.call(this),this._state=r.PENDING,this._handlers=[];try{e(this._resolve,this._reject)}catch(t){this._reject(t)}}then(e,t){return new i(((n,r)=>{this._handlers.push([!1,t=>{if(e)try{n(e(t))}catch(o){r(o)}else n(t)},e=>{if(t)try{n(t(e))}catch(o){r(o)}else r(e)}]),this._executeHandlers()}))}catch(e){return this.then((e=>e),e)}finally(e){return new i(((t,n)=>{let r,o;return this.then((t=>{o=!1,r=t,e&&e()}),(t=>{o=!0,r=t,e&&e()})).then((()=>{o?n(r):t(r)}))}))}__init(){this._resolve=e=>{this._setResult(r.RESOLVED,e)}}__init2(){this._reject=e=>{this._setResult(r.REJECTED,e)}}__init3(){this._setResult=(e,t)=>{this._state===r.PENDING&&((0,o.Qg)(t)?t.then(this._resolve,this._reject):(this._state=e,this._value=t,this._executeHandlers()))}}__init4(){this._executeHandlers=()=>{if(this._state===r.PENDING)return;const e=this._handlers.slice();this._handlers=[],e.forEach((e=>{e[0]||(this._state===r.RESOLVED&&e[1](this._value),this._state===r.REJECTED&&e[2](this._value),e[0]=!0)}))}}}},81e3:(e,t,n)=>{"use strict";n.d(t,{k3:()=>c,lu:()=>s,zf:()=>a});var r=n(94794);const o=1e3;function s(){return Date.now()/o}const a=function(){const{performance:e}=r.OW;if(!e||!e.now)return s;const t=Date.now()-e.now(),n=void 0==e.timeOrigin?t:e.timeOrigin;return()=>(n+e.now())/o}();let i;const c=(()=>{const{performance:e}=r.OW;if(!e||!e.now)return void(i="none");const t=36e5,n=e.now(),o=Date.now(),s=e.timeOrigin?Math.abs(e.timeOrigin+n-o):t,a=s{"use strict";n.d(t,{E0:()=>i,TC:()=>l,kM:()=>c,nc:()=>a});var r=n(94367),o=n(62365);const s=new RegExp("^[ \\t]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ \\t]*$");function a(e){if(!e)return;const t=e.match(s);if(!t)return;let n;return"1"===t[3]?n=!0:"0"===t[3]&&(n=!1),{traceId:t[1],parentSampled:n,parentSpanId:t[2]}}function i(e,t){const n=a(e),s=(0,r.yD)(t),{traceId:i,parentSpanId:c,parentSampled:l}=n||{};return n?{traceparentData:n,dynamicSamplingContext:s||{},propagationContext:{traceId:i||(0,o.eJ)(),parentSpanId:c||(0,o.eJ)().substring(16),spanId:(0,o.eJ)().substring(16),sampled:l,dsc:s||{}}}:{traceparentData:n,dynamicSamplingContext:void 0,propagationContext:{traceId:i||(0,o.eJ)(),spanId:(0,o.eJ)().substring(16)}}}function c(e,t){const n=a(e),s=(0,r.yD)(t),{traceId:i,parentSpanId:c,parentSampled:l}=n||{};return n?{traceId:i||(0,o.eJ)(),parentSpanId:c||(0,o.eJ)().substring(16),spanId:(0,o.eJ)().substring(16),sampled:l,dsc:s||{}}:{traceId:i||(0,o.eJ)(),spanId:(0,o.eJ)().substring(16)}}function l(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,o.eJ)(),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,o.eJ)().substring(16),n=arguments.length>2?arguments[2]:void 0,r="";return void 0!==n&&(r=n?"-1":"-0"),"".concat(e,"-").concat(t).concat(r)}},88544:(e,t,n)=>{"use strict";function r(e){if(!e)return{};const t=e.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};const n=t[6]||"",r=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],search:n,hash:r,relative:t[5]+n+r}}function o(e){return e.split(/[\?#]/,1)[0]}n.d(t,{Dl:()=>r,f:()=>o})},94794:(e,t,n)=>{"use strict";function r(e){return e&&e.Math==Math?e:void 0}n.d(t,{BY:()=>a,OW:()=>o,VZ:()=>s});const o="object"==typeof globalThis&&r(globalThis)||"object"==typeof window&&r(window)||"object"==typeof self&&r(self)||"object"==typeof n.g&&r(n.g)||function(){return this}()||{};function s(){return o}function a(e,t,n){const r=n||o,s=r.__SENTRY__=r.__SENTRY__||{};return s[e]||(s[e]=t())}},18628:(e,t)=>{"use strict";t.A=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(","),r=e.name||"",o=(e.type||"").toLowerCase(),s=o.replace(/\/.*$/,"");return n.some((function(e){var t=e.trim().toLowerCase();return"."===t.charAt(0)?r.toLowerCase().endsWith(t):t.endsWith("/*")?s===t.replace(/\/.*$/,""):o===t}))}return!0}},4423:(e,t,n)=>{e.exports=function e(t,n,r){function o(a,i){if(!n[a]){if(!t[a]){if(s)return s(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[a]={exports:{}};t[a][0].call(l.exports,(function(e){var n=t[a][1][e];return o(n||e)}),l,l.exports,e,t,n,r)}return n[a].exports}for(var s=void 0,a=0;a=43)}})).catch((function(){return!1}))}function S(e){return"boolean"===typeof f?l.resolve(f):w(e).then((function(e){return f=e}))}function k(e){var t=_[e.name],n={};n.promise=new l((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function C(e){var t=_[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function E(e,t){var n=_[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function x(e,t){return new l((function(n,r){if(_[e.name]=_[e.name]||F(),e.db){if(!t)return n(e.db);k(e),e.db.close()}var o=[e.name];t&&o.push(e.version);var s=a.open.apply(a,o);t&&(s.onupgradeneeded=function(t){var n=s.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(m)}catch(r){if("ConstraintError"!==r.name)throw r;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),s.onerror=function(e){e.preventDefault(),r(s.error)},s.onsuccess=function(){var t=s.result;t.onversionchange=function(e){e.target.close()},n(t),C(e)}}))}function T(e){return x(e,!1)}function O(e){return x(e,!0)}function N(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.versione.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||n){if(n){var s=e.db.version+1;s>e.version&&(e.version=s)}return!0}return!1}function D(e){return new l((function(t,n){var r=new FileReader;r.onerror=n,r.onloadend=function(n){var r=btoa(n.target.result||"");t({__local_forage_encoded_blob:!0,data:r,type:e.type})},r.readAsBinaryString(e)}))}function I(e){return c([b(atob(e.data))],{type:e.type})}function j(e){return e&&e.__local_forage_encoded_blob}function A(e){var t=this,n=t._initReady().then((function(){var e=_[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return u(n,e,e),n}function M(e){k(e);for(var t=_[e.name],n=t.forages,r=0;r0&&(!e.db||"InvalidStateError"===s.name||"NotFoundError"===s.name))return l.resolve().then((function(){if(!e.db||"NotFoundError"===s.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),O(e)})).then((function(){return M(e).then((function(){R(e,t,n,r-1)}))})).catch(n);n(s)}}function F(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function L(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var o=_[n.name];o||(o=F(),_[n.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=A);var s=[];function a(){return l.resolve()}for(var i=0;i>4,d[c++]=(15&r)<<4|o>>2,d[c++]=(3&o)<<6|63&s;return l}function me(e){var t,n=new Uint8Array(e),r="";for(t=0;t>2],r+=Y[(3&n[t])<<4|n[t+1]>>4],r+=Y[(15&n[t+1])<<2|n[t+2]>>6],r+=Y[63&n[t+2]];return n.length%3===2?r=r.substring(0,r.length-1)+"=":n.length%3===1&&(r=r.substring(0,r.length-2)+"=="),r}function fe(e,t){var n="";if(e&&(n=he.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===he.call(e.buffer))){var r,o=Q;e instanceof ArrayBuffer?(r=e,o+=ee):(r=e.buffer,"[object Int8Array]"===n?o+=ne:"[object Uint8Array]"===n?o+=re:"[object Uint8ClampedArray]"===n?o+=oe:"[object Int16Array]"===n?o+=se:"[object Uint16Array]"===n?o+=ie:"[object Int32Array]"===n?o+=ae:"[object Uint32Array]"===n?o+=ce:"[object Float32Array]"===n?o+=le:"[object Float64Array]"===n?o+=de:t(new Error("Failed to get type for BinaryArray"))),t(o+me(r))}else if("[object Blob]"===n){var s=new FileReader;s.onload=function(){var n=Z+e.type+"~"+me(this.result);t(Q+te+n)},s.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(a){console.error("Couldn't convert value into a JSON string: ",e),t(null,a)}}function _e(e){if(e.substring(0,$)!==Q)return JSON.parse(e);var t,n=e.substring(ue),r=e.substring($,ue);if(r===te&&X.test(n)){var o=n.match(X);t=o[1],n=n.substring(o[0].length)}var s=pe(n);switch(r){case ee:return s;case te:return c([s],{type:t});case ne:return new Int8Array(s);case re:return new Uint8Array(s);case oe:return new Uint8ClampedArray(s);case se:return new Int16Array(s);case ie:return new Uint16Array(s);case ae:return new Int32Array(s);case ce:return new Uint32Array(s);case le:return new Float32Array(s);case de:return new Float64Array(s);default:throw new Error("Unkown type: "+r)}}var ge={serialize:fe,deserialize:_e,stringToBuffer:pe,bufferToString:me};function ve(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function ye(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!==typeof e[r]?e[r].toString():e[r];var o=new l((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(o){return r(o)}n.db.transaction((function(o){ve(o,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=ge,o}function be(e,t,n,r,o,s){e.executeSql(n,r,o,(function(e,a){a.code===a.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,i){i.rows.length?s(e,a):ve(e,t,(function(){e.executeSql(n,r,o,s)}),s)}),s):s(e,a)}),s)}function we(e,t){var n=this;e=h(e);var r=new l((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){be(n,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=o.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return d(r,t),r}function Se(e,t){var n=this,r=new l((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){be(n,o,"SELECT * FROM "+o.storeName,[],(function(n,r){for(var s=r.rows,a=s.length,i=0;i0)return void s(ke.apply(o,[e,i,n,r-1]));a(t)}}))}))})).catch(a)}));return d(s,n),s}function Ce(e,t,n){return ke.apply(this,[e,t,n,1])}function Ee(e,t){var n=this;e=h(e);var r=new l((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){be(n,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return d(r,t),r}function xe(e){var t=this,n=new l((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){be(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return d(n,e),n}function Te(e){var t=this,n=new l((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){be(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return d(n,e),n}function Oe(e,t){var n=this,r=new l((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){be(n,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return d(r,t),r}function Ne(e){var t=this,n=new l((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){be(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],o=0;o '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var o=[],s=0;s0}function Le(e){var t=this,n={};if(e)for(var r in e)n[r]=e[r];return n.keyPrefix=Me(e,t._defaultConfig),Fe()?(t._dbInfo=n,n.serializer=ge,l.resolve()):l.reject()}function ze(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return d(n,e),n}function Pe(e,t){var n=this;e=h(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return d(r,t),r}function Be(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,o=r.length,s=localStorage.length,a=1,i=0;i=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):l.reject("Invalid arguments"),d(r,t),r}var Ge={_driver:"localStorageWrapper",_initStorage:Le,_support:Ae(),iterate:Be,getItem:Pe,setItem:Ve,removeItem:He,clear:ze,length:Je,key:We,keys:Ue,dropInstance:qe},Ke=function(e,t){return e===t||"number"===typeof e&&"number"===typeof t&&isNaN(e)&&isNaN(t)},Ye=function(e,t){for(var n=e.length,r=0;r{"use strict";n.r(t),n.d(t,{ErrorCode:()=>R,default:()=>le,useDropzone:()=>ue});var r=n(28437),o=n.n(r),s=n(95973),a=n.n(s),i=n(6326),c=new Map([["aac","audio/aac"],["abw","application/x-abiword"],["arc","application/x-freearc"],["avif","image/avif"],["avi","video/x-msvideo"],["azw","application/vnd.amazon.ebook"],["bin","application/octet-stream"],["bmp","image/bmp"],["bz","application/x-bzip"],["bz2","application/x-bzip2"],["cda","application/x-cdf"],["csh","application/x-csh"],["css","text/css"],["csv","text/csv"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],["eot","application/vnd.ms-fontobject"],["epub","application/epub+zip"],["gz","application/gzip"],["gif","image/gif"],["heic","image/heic"],["heif","image/heif"],["htm","text/html"],["html","text/html"],["ico","image/vnd.microsoft.icon"],["ics","text/calendar"],["jar","application/java-archive"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["js","text/javascript"],["json","application/json"],["jsonld","application/ld+json"],["mid","audio/midi"],["midi","audio/midi"],["mjs","text/javascript"],["mp3","audio/mpeg"],["mp4","video/mp4"],["mpeg","video/mpeg"],["mpkg","application/vnd.apple.installer+xml"],["odp","application/vnd.oasis.opendocument.presentation"],["ods","application/vnd.oasis.opendocument.spreadsheet"],["odt","application/vnd.oasis.opendocument.text"],["oga","audio/ogg"],["ogv","video/ogg"],["ogx","application/ogg"],["opus","audio/opus"],["otf","font/otf"],["png","image/png"],["pdf","application/pdf"],["php","application/x-httpd-php"],["ppt","application/vnd.ms-powerpoint"],["pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation"],["rar","application/vnd.rar"],["rtf","application/rtf"],["sh","application/x-sh"],["svg","image/svg+xml"],["swf","application/x-shockwave-flash"],["tar","application/x-tar"],["tif","image/tiff"],["tiff","image/tiff"],["ts","video/mp2t"],["ttf","font/ttf"],["txt","text/plain"],["vsd","application/vnd.visio"],["wav","audio/wav"],["weba","audio/webm"],["webm","video/webm"],["webp","image/webp"],["woff","font/woff"],["woff2","font/woff2"],["xhtml","application/xhtml+xml"],["xls","application/vnd.ms-excel"],["xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],["xml","application/xml"],["xul","application/vnd.mozilla.xul+xml"],["zip","application/zip"],["7z","application/x-7z-compressed"],["mkv","video/x-matroska"],["mov","video/quicktime"],["msg","application/vnd.ms-outlook"]]);function l(e,t){var n=function(e){var t=e.name;if(t&&-1!==t.lastIndexOf(".")&&!e.type){var n=t.split(".").pop().toLowerCase(),r=c.get(n);r&&Object.defineProperty(e,"type",{value:r,writable:!1,configurable:!1,enumerable:!0})}return e}(e);if("string"!==typeof n.path){var r=e.webkitRelativePath;Object.defineProperty(n,"path",{value:"string"===typeof t?t:"string"===typeof r&&r.length>0?r:e.name,writable:!1,configurable:!1,enumerable:!0})}return n}var d=[".DS_Store","Thumbs.db"];function u(e){return"object"===typeof e&&null!==e}function h(e){return _(e.target.files).map((function(e){return l(e)}))}function p(e){return(0,i.sH)(this,void 0,void 0,(function(){return(0,i.YH)(this,(function(t){switch(t.label){case 0:return[4,Promise.all(e.map((function(e){return e.getFile()})))];case 1:return[2,t.sent().map((function(e){return l(e)}))]}}))}))}function m(e,t){return(0,i.sH)(this,void 0,void 0,(function(){var n;return(0,i.YH)(this,(function(r){switch(r.label){case 0:return e.items?(n=_(e.items).filter((function(e){return"file"===e.kind})),"drop"!==t?[2,n]:[4,Promise.all(n.map(g))]):[3,2];case 1:return[2,f(v(r.sent()))];case 2:return[2,f(_(e.files).map((function(e){return l(e)})))]}}))}))}function f(e){return e.filter((function(e){return-1===d.indexOf(e.name)}))}function _(e){if(null===e)return[];for(var t=[],n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);nn)return[!1,L(n)];if(e.sizen)return[!1,L(n)]}return[!0,null]}function U(e){return void 0!==e&&null!==e}function J(e){return"function"===typeof e.isPropagationStopped?e.isPropagationStopped():"undefined"!==typeof e.cancelBubble&&e.cancelBubble}function H(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,(function(e){return"Files"===e||"application/x-moz-file"===e})):!!e.target&&!!e.target.files}function V(e){e.preventDefault()}function q(){for(var e=arguments.length,t=new Array(e),n=0;n1?n-1:0),o=1;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ie=(0,r.forwardRef)((function(e,t){var n=e.children,s=ue(ae(e,Y)),a=s.open,i=ae(s,Z);return(0,r.useImperativeHandle)(t,(function(){return{open:a}}),[a]),o().createElement(r.Fragment,null,n(oe(oe({},i),{},{open:a})))}));ie.displayName="Dropzone";var ce={disabled:!1,getFilesFromEvent:function(e){return(0,i.sH)(this,void 0,void 0,(function(){return(0,i.YH)(this,(function(t){return u(e)&&u(e.dataTransfer)?[2,m(e.dataTransfer,e.type)]:function(e){return u(e)&&u(e.target)}(e)?[2,h(e)]:Array.isArray(e)&&e.every((function(e){return"getFile"in e&&"function"===typeof e.getFile}))?[2,p(e)]:[2,[]]}))}))},maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};ie.defaultProps=ce,ie.propTypes={children:a().func,accept:a().objectOf(a().arrayOf(a().string)),multiple:a().bool,preventDropOnDocument:a().bool,noClick:a().bool,noKeyboard:a().bool,noDrag:a().bool,noDragEventsBubbling:a().bool,minSize:a().number,maxSize:a().number,maxFiles:a().number,disabled:a().bool,getFilesFromEvent:a().func,onFileDialogCancel:a().func,onFileDialogOpen:a().func,useFsAccessApi:a().bool,autoFocus:a().bool,onDragEnter:a().func,onDragLeave:a().func,onDragOver:a().func,onDrop:a().func,onDropAccepted:a().func,onDropRejected:a().func,onError:a().func,validator:a().func};const le=ie;var de={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function ue(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=oe(oe({},ce),e),n=t.accept,o=t.disabled,s=t.getFilesFromEvent,a=t.maxSize,i=t.minSize,c=t.multiple,l=t.maxFiles,d=t.onDragEnter,u=t.onDragLeave,h=t.onDragOver,p=t.onDrop,m=t.onDropAccepted,f=t.onDropRejected,_=t.onFileDialogCancel,g=t.onFileDialogOpen,v=t.useFsAccessApi,y=t.autoFocus,b=t.preventDropOnDocument,w=t.noClick,S=t.noKeyboard,k=t.noDrag,E=t.noDragEventsBubbling,N=t.onError,D=t.validator,I=(0,r.useMemo)((function(){return function(e){if(U(e))return Object.entries(e).reduce((function(e,t){var n=O(t,2),r=n[0],o=n[1];return[].concat(C(e),[r],C(o))}),[]).filter((function(e){return G(e)||K(e)})).join(",")}(n)}),[n]),j=(0,r.useMemo)((function(){return function(e){return U(e)?[{description:"Files",accept:Object.entries(e).filter((function(e){var t=O(e,2),n=t[0],r=t[1],o=!0;return G(n)||(console.warn('Skipped "'.concat(n,'" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.')),o=!1),Array.isArray(r)&&r.every(K)||(console.warn('Skipped "'.concat(n,'" because an invalid file extension was provided.')),o=!1),o})).reduce((function(e,t){var n=O(t,2),r=n[0],o=n[1];return x(x({},e),{},T({},r,o))}),{})}]:e}(n)}),[n]),A=(0,r.useMemo)((function(){return"function"===typeof g?g:pe}),[g]),M=(0,r.useMemo)((function(){return"function"===typeof _?_:pe}),[_]),R=(0,r.useRef)(null),F=(0,r.useRef)(null),L=ee((0,r.useReducer)(he,de),2),z=L[0],Y=L[1],Z=z.isFocused,te=z.isFileDialogActive,ne=(0,r.useRef)("undefined"!==typeof window&&window.isSecureContext&&v&&"showOpenFilePicker"in window),re=function(){!ne.current&&te&&setTimeout((function(){F.current&&(F.current.files.length||(Y({type:"closeDialog"}),M()))}),300)};(0,r.useEffect)((function(){return window.addEventListener("focus",re,!1),function(){window.removeEventListener("focus",re,!1)}}),[F,te,M,ne]);var ie=(0,r.useRef)([]),le=function(e){R.current&&R.current.contains(e.target)||(e.preventDefault(),ie.current=[])};(0,r.useEffect)((function(){return b&&(document.addEventListener("dragover",V,!1),document.addEventListener("drop",le,!1)),function(){b&&(document.removeEventListener("dragover",V),document.removeEventListener("drop",le))}}),[R,b]),(0,r.useEffect)((function(){return!o&&y&&R.current&&R.current.focus(),function(){}}),[R,y,o]);var ue=(0,r.useCallback)((function(e){N?N(e):console.error(e)}),[N]),me=(0,r.useCallback)((function(e){e.preventDefault(),e.persist(),Te(e),ie.current=[].concat($(ie.current),[e.target]),H(e)&&Promise.resolve(s(e)).then((function(t){if(!J(e)||E){var n=t.length,r=n>0&&function(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,s=e.multiple,a=e.maxFiles,i=e.validator;return!(!s&&t.length>1||s&&a>=1&&t.length>a)&&t.every((function(e){var t=O(B(e,n),1)[0],s=O(W(e,r,o),1)[0],a=i?i(e):null;return t&&s&&!a}))}({files:t,accept:I,minSize:i,maxSize:a,multiple:c,maxFiles:l,validator:D});Y({isDragAccept:r,isDragReject:n>0&&!r,isDragActive:!0,type:"setDraggedFiles"}),d&&d(e)}})).catch((function(e){return ue(e)}))}),[s,d,ue,E,I,i,a,c,l,D]),fe=(0,r.useCallback)((function(e){e.preventDefault(),e.persist(),Te(e);var t=H(e);if(t&&e.dataTransfer)try{e.dataTransfer.dropEffect="copy"}catch(n){}return t&&h&&h(e),!1}),[h,E]),_e=(0,r.useCallback)((function(e){e.preventDefault(),e.persist(),Te(e);var t=ie.current.filter((function(e){return R.current&&R.current.contains(e)})),n=t.indexOf(e.target);-1!==n&&t.splice(n,1),ie.current=t,t.length>0||(Y({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),H(e)&&u&&u(e))}),[R,u,E]),ge=(0,r.useCallback)((function(e,t){var n=[],r=[];e.forEach((function(e){var t=ee(B(e,I),2),o=t[0],s=t[1],c=ee(W(e,i,a),2),l=c[0],d=c[1],u=D?D(e):null;if(o&&l&&!u)n.push(e);else{var h=[s,d];u&&(h=h.concat(u)),r.push({file:e,errors:h.filter((function(e){return e}))})}})),(!c&&n.length>1||c&&l>=1&&n.length>l)&&(n.forEach((function(e){r.push({file:e,errors:[P]})})),n.splice(0)),Y({acceptedFiles:n,fileRejections:r,type:"setFiles"}),p&&p(n,r,t),r.length>0&&f&&f(r,t),n.length>0&&m&&m(n,t)}),[Y,c,I,i,a,l,p,m,f,D]),ve=(0,r.useCallback)((function(e){e.preventDefault(),e.persist(),Te(e),ie.current=[],H(e)&&Promise.resolve(s(e)).then((function(t){J(e)&&!E||ge(t,e)})).catch((function(e){return ue(e)})),Y({type:"reset"})}),[s,ge,ue,E]),ye=(0,r.useCallback)((function(){if(ne.current){Y({type:"openDialog"}),A();var e={multiple:c,types:j};window.showOpenFilePicker(e).then((function(e){return s(e)})).then((function(e){ge(e,null),Y({type:"closeDialog"})})).catch((function(e){var t;(t=e)instanceof DOMException&&("AbortError"===t.name||t.code===t.ABORT_ERR)?(M(e),Y({type:"closeDialog"})):!function(e){return e instanceof DOMException&&("SecurityError"===e.name||e.code===e.SECURITY_ERR)}(e)?ue(e):(ne.current=!1,F.current?(F.current.value=null,F.current.click()):ue(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided.")))}))}else F.current&&(Y({type:"openDialog"}),A(),F.current.value=null,F.current.click())}),[Y,A,M,v,ge,ue,j,c]),be=(0,r.useCallback)((function(e){R.current&&R.current.isEqualNode(e.target)&&(" "!==e.key&&"Enter"!==e.key&&32!==e.keyCode&&13!==e.keyCode||(e.preventDefault(),ye()))}),[R,ye]),we=(0,r.useCallback)((function(){Y({type:"focus"})}),[]),Se=(0,r.useCallback)((function(){Y({type:"blur"})}),[]),ke=(0,r.useCallback)((function(){w||(!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return function(e){return-1!==e.indexOf("MSIE")||-1!==e.indexOf("Trident/")}(e)||function(e){return-1!==e.indexOf("Edge/")}(e)}()?ye():setTimeout(ye,0))}),[w,ye]),Ce=function(e){return o?null:e},Ee=function(e){return S?null:Ce(e)},xe=function(e){return k?null:Ce(e)},Te=function(e){E&&e.stopPropagation()},Oe=(0,r.useMemo)((function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.refKey,n=void 0===t?"ref":t,r=e.role,s=e.onKeyDown,a=e.onFocus,i=e.onBlur,c=e.onClick,l=e.onDragEnter,d=e.onDragOver,u=e.onDragLeave,h=e.onDrop,p=ae(e,X);return oe(oe(se({onKeyDown:Ee(q(s,be)),onFocus:Ee(q(a,we)),onBlur:Ee(q(i,Se)),onClick:Ce(q(c,ke)),onDragEnter:xe(q(l,me)),onDragOver:xe(q(d,fe)),onDragLeave:xe(q(u,_e)),onDrop:xe(q(h,ve)),role:"string"===typeof r&&""!==r?r:"presentation"},n,R),o||S?{}:{tabIndex:0}),p)}}),[R,be,we,Se,ke,me,fe,_e,ve,S,k,o]),Ne=(0,r.useCallback)((function(e){e.stopPropagation()}),[]),De=(0,r.useMemo)((function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.refKey,n=void 0===t?"ref":t,r=e.onChange,o=e.onClick,s=ae(e,Q);return oe(oe({},se({accept:I,multiple:c,type:"file",style:{display:"none"},onChange:Ce(q(r,ve)),onClick:Ce(q(o,Ne)),tabIndex:-1},n,F)),s)}}),[F,n,c,ve,o]);return oe(oe({},z),{},{isFocused:Z&&!o,getRootProps:Oe,getInputProps:De,rootRef:R,inputRef:F,open:Ce(ye)})}function he(e,t){switch(t.type){case"focus":return oe(oe({},e),{},{isFocused:!0});case"blur":return oe(oe({},e),{},{isFocused:!1});case"openDialog":return oe(oe({},de),{},{isFileDialogActive:!0});case"closeDialog":return oe(oe({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return oe(oe({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return oe(oe({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return oe({},de);default:return e}}function pe(){}},73171:(e,t,n)=>{"use strict";var r,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,c={};((e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})})(c,{AdminConnection:()=>u}),e.exports=(r=c,((e,t,n,r)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let c of a(t))i.call(e,c)||c===n||o(e,c,{get:()=>t[c],enumerable:!(r=s(t,c))||r.enumerable});return e})(o({},"__esModule",{value:!0}),r));var l=n(19594),d=n(57995);class u extends l.Connection{constructor(e){super(e)}request(e){return super.request({requireAdmin:!0,...e})}getCertificates(e){return this.request({cacheKey:"cert",forceUpdate:e,commandTimeout:!1,executor:async e=>{var t;const n=await this.getObject("system.certificates");(null===(t=null===n||void 0===n?void 0:n.native)||void 0===t?void 0:t.certificates)?e(Object.entries(n.native.certificates).map((e=>{let[t,n]=e;return function(e,t){if(!t)return;let n;if(t.length<700&&(-1!==t.indexOf("/")||-1!==t.indexOf("\\")))if(e.toLowerCase().includes("private"))n="private";else if(t.toLowerCase().includes("private"))n="private";else if(e.toLowerCase().includes("public"))n="public";else if(t.toLowerCase().includes("public"))n="public";else if(e.toLowerCase().includes("chain"))n="chained";else{if(!t.toLowerCase().includes("chain"))return;n="chained"}else n="-----BEGIN RSA PRIVATE KEY"===t.substring(0,26)||"-----BEGIN PRIVATE KEY"===t.substring(0,22)?"private":"public","public"===n&&t.split("-----END CERTIFICATE-----").filter((e=>e.replace(/\r\n|\r|\n/,"").trim())).length>1&&(n="chained");return{name:e,type:n}}(t,n)})).filter((e=>!!e))):e([])}})}getLogs(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;return this.request({commandTimeout:!1,executor:n=>{this._socket.emit("sendToHost",e,"getLogs",t||200,(e=>{n(e)}))}})}getLogsFiles(e){return this.request({commandTimeout:!1,executor:(t,n)=>{this._socket.emit("readLogs",e,((e,r)=>{e&&n(e),t(r)}))}})}delLogs(e){return this.request({commandTimeout:!1,executor:(t,n)=>{this._socket.emit("sendToHost",e,"delLogs",null,(e=>{e&&n(e),t()}))}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("deleteFile",e,t,(e=>{e&&r(e),n()}))}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("deleteFolder",e,t,(e=>{e&&r(e),n()}))}})}rename(e,t,n){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,n,(e=>{e&&o(e),r()}))}})}renameFile(e,t,n){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,n,(e=>{e&&o(e),r()}))}})}getHosts(e){return this.request({cacheKey:"hosts",forceUpdate:e,commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getObjectView","system","host",{startkey:"system.host.",endkey:"system.host.\u9999"},((n,r)=>{n?t(n):e((0,d.getObjectViewResultToArray)(r))}))}})}getUsers(e){return this.request({cacheKey:"users",forceUpdate:e,commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getObjectView","system","user",{startkey:"system.user.",endkey:"system.user.\u9999"},((n,r)=>{n?t(n):e((0,d.getObjectViewResultToArray)(r))}))}})}renameGroup(e,t,n){return this.request({commandTimeout:!1,executor:async r=>{var o;const s=await this.getGroups(!0),a=s.filter((t=>t._id.startsWith("".concat(e,"."))));for(const n of a){const r=n._id,o=t+n._id.substring(e.length);n._id=o,await this.setObject(o,n),await this.delObject(r)}const i=s.find((t=>t._id===e));if(i){const e=i._id;i._id=t,void 0!==n&&(null!==(o=i.common)&&void 0!==o||(i.common={}),i.common.name=n),await this.setObject(t,i),await this.delObject(e)}r()}})}getHostInfo(e,t,n){return e=(0,d.normalizeHostId)(e),this.request({cacheKey:"hostInfo_".concat(e),forceUpdate:t,commandTimeout:n,executor:(t,n,r)=>{this._socket.emit("sendToHost",e,"getHostInfo",null,(e=>{r.elapsed||(r.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?n('May not read "getHostInfo"'):e?t(e):n('Cannot read "getHostInfo"'))}))}})}getHostInfoShort(e,t,n){return e=(0,d.normalizeHostId)(e),this.request({cacheKey:"hostInfoShort_".concat(e),forceUpdate:t,commandTimeout:n,executor:(t,n,r)=>{this._socket.emit("sendToHost",e,"getHostInfoShort",null,(e=>{r.elapsed||(r.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?n('May not read "getHostInfoShort"'):e?t(e):n('Cannot read "getHostInfoShort"'))}))}})}getRepository(e,t,n,r){return this.request({cacheKey:"repository_".concat(e),forceUpdate:n,commandTimeout:r,executor:(n,r,o)=>{this._socket.emit("sendToHost",e,"getRepository",t,(e=>{o.elapsed||(o.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?r('May not read "getRepository"'):e?n(e):r('Cannot read "getRepository"'))}))}})}getInstalled(e,t,n){return e=(0,d.normalizeHostId)(e),this.request({cacheKey:"installed_".concat(e),forceUpdate:t,commandTimeout:n,executor:(t,n,r)=>{this._socket.emit("sendToHost",e,"getInstalled",null,(e=>{r.elapsed||(r.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?n('May not read "getInstalled"'):e?t(e):n('Cannot read "getInstalled"'))}))}})}cmdExec(e,t,n,r){return this.request({commandTimeout:r,executor:(r,o,s)=>{e=(0,d.normalizeHostId)(e),this._socket.emit("cmdExec",e,n,t,(e=>{s.elapsed||(s.clearTimeout(),e&&o(e),r())}))}})}readBaseSettings(e){return e=(0,d.objectIdToHostname)(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(t,n,r)=>{this._socket.emit("sendToHost",e,"readBaseSettings",null,(e=>{r.elapsed||(r.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?n('May not read "BaseSettings"'):e?t(e):n('Cannot read "BaseSettings"'))}))}})}writeBaseSettings(e,t){return e=(0,d.objectIdToHostname)(e),this.request({requireFeatures:["CONTROLLER_READWRITE_BASE_SETTINGS"],executor:(n,r,o)=>{this._socket.emit("sendToHost",e,"writeBaseSettings",t,(e=>{o.elapsed||(o.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?r('May not write "BaseSettings"'):e?n(e):r('Cannot write "BaseSettings"'))}))}})}restartController(e){return e=(0,d.objectIdToHostname)(e),this.request({executor:(t,n,r)=>{this._socket.emit("sendToHost",e,"restartController",null,(e=>{r.elapsed||(r.clearTimeout(),e&&n(e),t(!0))}))}})}getDiagData(e,t){return e=(0,d.objectIdToHostname)(e),this.request({executor:(n,r,o)=>{this._socket.emit("sendToHost",e,"getDiagData",t,(e=>{o.elapsed||(o.clearTimeout(),n(e))}))}})}changePassword(e,t){return this.request({executor:(n,r,o)=>{this._socket.emit("changePassword",e,t,(e=>{o.elapsed||(o.clearTimeout(),e&&r(e),n())}))}})}getIpAddresses(e,t){return e=(0,d.normalizeHostId)(e),this.request({cacheKey:"IPs_".concat(e),forceUpdate:t,commandTimeout:!1,executor:async t=>{var n;const r=await this.getObject(e);t(null!==(n=null===r||void 0===r?void 0:r.common.address)&&void 0!==n?n:[])}})}getHostByIp(e,t){return e=(0,d.objectIdToHostname)(e),this.request({cacheKey:"rIPs_".concat(e),forceUpdate:t,executor:(t,n,r)=>{this._socket.emit("getHostByIp",e,((e,n)=>{if(r.elapsed)return;r.clearTimeout();const{IPs4:o,IPs6:s}=function(e){var t,n;const r=[{name:"[IPv4] 0.0.0.0 - Listen on all IPs",address:"0.0.0.0",family:"ipv4"}],o=[{name:"[IPv6] :: - Listen on all IPs",address:"::",family:"ipv6"}];if(null===(n=null===(t=e.native)||void 0===t?void 0:t.hardware)||void 0===n?void 0:n.networkInterfaces)for(const[s,a]of Object.entries(e.native.hardware.networkInterfaces))if(a)for(const e of a)"IPv6"!==e.family?r.push({name:"[".concat(e.family,"] ").concat(e.address," - ").concat(s),address:e.address,family:"ipv4"}):o.push({name:"[".concat(e.family,"] ").concat(e.address," - ").concat(s),address:e.address,family:"ipv6"});return{IPs4:r,IPs6:o}}(n);t([...o,...s])}))}})}encrypt(e){return this.request({executor:(t,n,r)=>{this._socket.emit("encrypt",e,((e,o)=>{r.elapsed||(r.clearTimeout(),e&&n(e),t(o))}))}})}decrypt(e){return this.request({executor:(t,n,r)=>{this._socket.emit("decrypt",e,((e,o)=>{r.elapsed||(r.clearTimeout(),e&&n(e),t(o))}))}})}chmodFile(e,t,n){return this.request({executor:(r,o,s)=>{this._socket.emit("chmodFile",e,t,n,((e,t)=>{s.elapsed||(s.clearTimeout(),e&&o(e),r(t))}))}})}chownFile(e,t,n){return this.request({executor:(r,o,s)=>{this._socket.emit("chownFile",e,t,n,((e,t)=>{s.elapsed||(s.clearTimeout(),e&&o(e),r(t))}))}})}getNotifications(e,t){return this.request({executor:(n,r,o)=>{this._socket.emit("sendToHost",e,"getNotifications",{category:t},(e=>{o.elapsed||(o.clearTimeout(),n(e))}))}})}clearNotifications(e,t){return this.request({executor:(n,r,o)=>{this._socket.emit("sendToHost",e,"clearNotifications",{category:t},(e=>{o.elapsed||(o.clearTimeout(),n(e))}))}})}getIsEasyModeStrict(){return this.request({executor:(e,t,n)=>{this._socket.emit("getIsEasyModeStrict",((r,o)=>{n.elapsed||(n.clearTimeout(),r&&t(r),e(!!o))}))}})}getEasyMode(){return this.request({executor:(e,t,n)=>{this._socket.emit("getEasyMode",((r,o)=>{n.elapsed||(n.clearTimeout(),r&&t(r),e(o))}))}})}getRatings(e){return this.request({executor:(t,n,r)=>{this._socket.emit("getRatings",!!e,((e,o)=>{r.elapsed||(r.clearTimeout(),e&&n(e),t(o))}))}})}getCurrentSession(e){const t=new AbortController;return this.request({commandTimeout:e||5e3,onTimeout:()=>{t.abort()},executor:async(e,n,r)=>{try{const n=await fetch("./session",{signal:t.signal});if(r.elapsed)return;r.clearTimeout(),e(n.json())}catch(o){n("getCurrentSession: ".concat(o))}}})}getCurrentInstance(){return this.request({cacheKey:"currentInstance",executor:(e,t,n)=>{this._socket.emit("getCurrentInstance",((r,o)=>{n.elapsed||(n.clearTimeout(),r&&t(r),e(o))}))}})}getAdapterInstances(e,t){let n;return"boolean"===typeof e?(t=e,n=""):n=e||"",this.request({cacheKey:"instances_".concat(n),forceUpdate:t,executor:(e,t,r)=>{this._socket.emit("getAdapterInstances",n,((n,o)=>{r.elapsed||(r.clearTimeout(),n&&t(n),e(o))}))}})}getAdapters(e,t){let n;return"boolean"===typeof e?(t=e,n=""):n=e||"",this.request({cacheKey:"adapter_".concat(n),forceUpdate:t,executor:(e,t,r)=>{this._socket.emit("getAdapters",n,((n,o)=>{r.elapsed||(r.clearTimeout(),n&&t(n),e(o))}))}})}getCompactAdapters(e){return this.request({cacheKey:"compactAdapters",forceUpdate:e,executor:(e,t,n)=>{this._socket.emit("getCompactAdapters",((r,o)=>{n.elapsed||(n.clearTimeout(),r&&t(r),e(o))}))}})}getAdaptersResetCache(e){e=null!==e&&void 0!==e?e:"",this.resetCache("adapter_".concat(e)),this.resetCache("compactAdapters")}getCompactInstances(e){return this.request({cacheKey:"compactInstances",forceUpdate:e,executor:(e,t,n)=>{this._socket.emit("getCompactInstances",((r,o)=>{n.elapsed||(n.clearTimeout(),r&&t(r),e(o))}))}})}getAdapterInstancesResetCache(e){e=null!==e&&void 0!==e?e:"",this.resetCache("instances_".concat(e)),this.resetCache("compactInstances")}getCompactInstalled(e,t,n){return e=(0,d.normalizeHostId)(e),this.request({cacheKey:"installedCompact_".concat(e),forceUpdate:t,commandTimeout:n,executor:(t,n,r)=>{this._socket.emit("getCompactInstalled",e,(e=>{r.elapsed||(r.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?n('May not read "getCompactInstalled"'):e?t(e):n('Cannot read "getCompactInstalled"'))}))}})}getInstalledResetCache(e){e?(this.resetCache("installedCompact_".concat(e)),this.resetCache("installed_".concat(e))):(this.resetCache("installedCompact_",!0),this.resetCache("installed_",!0))}getCompactRepository(e,t,n){return e=(0,d.normalizeHostId)(e),this.request({cacheKey:"repositoryCompact_".concat(e),forceUpdate:t,commandTimeout:n,executor:(t,n,r)=>{this._socket.emit("getCompactRepository",e,(e=>{r.elapsed||(r.clearTimeout(),e===l.ERRORS.PERMISSION_ERROR?n('May not read "getCompactRepository"'):e?t(e):n('Cannot read "getCompactRepository"'))}))}})}getRepositoryResetCache(e){e?(this.resetCache("repositoryCompact_".concat(e)),this.resetCache("repository_".concat(e))):(this.resetCache("repositoryCompact_",!0),this.resetCache("repository_",!0))}getCompactHosts(e){return this.request({cacheKey:"hostsCompact",forceUpdate:e,executor:(e,t,n)=>{this._socket.emit("getCompactHosts",((r,o)=>{n.elapsed||(n.clearTimeout(),r&&t(r),e(o))}))}})}getCompactSystemRepositories(e){return this.request({cacheKey:"repositoriesCompact",forceUpdate:e,executor:(e,t,n)=>{this._socket.emit("getCompactSystemRepositories",((r,o)=>{n.elapsed||(n.clearTimeout(),r&&t(r),e(o))}))}})}}},19594:(e,t,n)=>{"use strict";var r,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,c={};((e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})})(c,{Connection:()=>v,ERRORS:()=>u,NOT_CONNECTED:()=>_,PERMISSION_ERROR:()=>f,PROGRESS:()=>l}),e.exports=(r=c,((e,t,n,r)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let c of a(t))i.call(e,c)||c===n||o(e,c,{get:()=>t[c],enumerable:!(r=s(t,c))||r.enumerable});return e})(o({},"__esModule",{value:!0}),r));var l,d,u,h,p=n(99072),m=n(57995);(d=l||(l={}))[d.CONNECTING=0]="CONNECTING",d[d.CONNECTED=1]="CONNECTED",d[d.OBJECTS_LOADED=2]="OBJECTS_LOADED",d[d.READY=3]="READY",(h=u||(u={})).PERMISSION_ERROR="permissionError",h.NOT_CONNECTED="notConnectedError",h.TIMEOUT="timeout",h.NOT_ADMIN="Allowed only in admin",h.NOT_SUPPORTED="Not supported";const f=u.PERMISSION_ERROR,_=u.NOT_CONNECTED,g=["material","echarts","vis"];class v{constructor(e){this.ignoreState="",this.connected=!1,this.subscribed=!1,this.firstConnect=!0,this.waitForRestart=!1,this.loaded=!1,this.simStates={},this.statesSubscribes={},this.filesSubscribes={},this.objectsSubscribes={},this.objects={},this.states={},this.acl=null,this.isSecure=!1,this.onReadyDone=!1,this.onConnectionHandlers=[],this.onLogHandlers=[],this._waitForFirstConnectionPromise=(0,p.createDeferredPromise)(),this._instanceSubscriptions={},this._promises={},this.systemLang="en",this.props=this.applyDefaultProps(e),this.waitForSocketLib().then((()=>this.startSocket())).catch((e=>{alert("Socket connection could not be initialized: ".concat(e))}))}applyDefaultProps(e){var t,n,r,o;return{...e,protocol:e.protocol||window.location.protocol,host:e.host||window.location.hostname,port:e.port||("3000"===window.location.port?8081:window.location.port),ioTimeout:Math.max(e.ioTimeout||2e4,2e4),cmdTimeout:Math.max(e.cmdTimeout||5e3,5e3),admin5only:e.admin5only||!1,autoSubscribes:null!==(t=e.autoSubscribes)&&void 0!==t?t:[],autoSubscribeLog:null!==(n=e.autoSubscribeLog)&&void 0!==n&&n,doNotLoadACL:null===(r=e.doNotLoadACL)||void 0===r||r,doNotLoadAllObjects:null===(o=e.doNotLoadAllObjects)||void 0===o||o}}onError(e){var t;(null!==(t=this.props.onError)&&void 0!==t?t:console.error)(e)}get systemConfig(){return this._systemConfig}static isWeb(){return void 0!==window.socketUrl}waitForSocketLib(){return this._waitForSocketPromise||(this._waitForSocketPromise=new Promise((async(e,t)=>{if("undefined"===typeof window.io)if("function"===typeof window.registerSocketOnLoad)window.registerSocketOnLoad((()=>e()));else{for(let t=1;t<=30;t++){if(window.io)return e();await(0,m.wait)(100)}t(new Error("Socket library could not be loaded!"))}else e()}))),this._waitForSocketPromise}async startSocket(){if(this._socket)return;let e=this.props.host,t=this.props.port,n=this.props.protocol.replace(":",""),r=window.location.pathname;if("iobroker.net"===window.location.hostname||"iobroker.pro"===window.location.hostname)r="";else{if(window.socketUrl){const r=new URL(window.socketUrl);e=r.hostname,t=r.port,n=r.protocol.replace(":","")}const o=r.lastIndexOf("/");if(-1!==o&&(r=r.substring(0,o+1)),v.isWeb()){const e=r.split("/");e.length>2&&(e.pop(),e.pop(),g.includes(e[e.length-1])&&e.pop(),r=e.join("/"),r.endsWith("/")||(r+="/"))}}const o=t?"".concat(n,"://").concat(e,":").concat(t):"".concat(n,"://").concat(e);this._socket=window.io.connect(o,{path:r.endsWith("/")?"".concat(r,"socket.io"):"".concat(r,"/socket.io"),query:"ws=true",name:this.props.name,timeout:this.props.ioTimeout,uuid:this.props.uuid,token:this.props.token}),this._socket.on("connect",(e=>{this.onReadyDone=!1,!0!==e?(this.connected=!0,setTimeout((()=>this.getVersion().then((e=>{const[t,n,r]=e.version.split(".");1e4*parseInt(t,10)+100*parseInt(n,10)+parseInt(r,10)<40102?(this._authTimer=null,this.onPreConnect(!1,!1)):this._socket.emit("authenticate",((e,t)=>this.onPreConnect(e,t)))})).catch((e=>this.onError({message:e.toString(),operation:"getVersion"})))),500)):this._socket.emit("authenticate",((e,t)=>{this.onPreConnect(e,t)}))})),this._socket.on("reconnect",(()=>{var e,t;this.onReadyDone=!1,null===(t=(e=this.props).onProgress)||void 0===t||t.call(e,l.READY),this.connected=!0,this.waitForRestart?window.location.reload():(this._subscribe(!0),this.onConnectionHandlers.forEach((e=>e(!0))))})),this._socket.on("disconnect",(()=>{var e,t;this.onReadyDone=!1,this.connected=!1,this.subscribed=!1,null===(t=(e=this.props).onProgress)||void 0===t||t.call(e,l.CONNECTING),this.onConnectionHandlers.forEach((e=>e(!1)))})),this._socket.on("reauthenticate",(()=>this.authenticate())),this._socket.on("log",(e=>{var t,n;null===(n=(t=this.props).onLog)||void 0===n||n.call(t,e),this.onLogHandlers.forEach((t=>t(e)))})),this._socket.on("error",(e=>{let t;void 0==e?t="":"function"===typeof e.toString?t=e.toString():(t=JSON.stringify(e),console.error("Received strange error: ".concat(t))),t.includes("User not authorized")?this.authenticate():t.includes("websocket error")?(console.error("Socket Error => reload: ".concat(e)),window.location.reload()):console.error("Socket Error: ".concat(e))})),this._socket.on("connect_error",(e=>console.error("Connect error: ".concat(e)))),this._socket.on("permissionError",(e=>this.onError({message:"no permission",operation:e.operation,type:e.type,id:e.id||""}))),this._socket.on("objectChange",((e,t)=>{setTimeout((()=>this.objectChange(e,t)),0)})),this._socket.on("stateChange",((e,t)=>{setTimeout((()=>this.stateChange(e,t)),0)})),this._socket.on("im",((e,t,n)=>{setTimeout((()=>this.instanceMessage(e,t,n)),0)})),this._socket.on("fileChange",((e,t,n)=>{setTimeout((()=>this.fileChange(e,t,n)),0)})),this._socket.on("cmdStdout",((e,t)=>{var n;null===(n=this.onCmdStdoutHandler)||void 0===n||n.call(this,e,t)})),this._socket.on("cmdStderr",((e,t)=>{var n;null===(n=this.onCmdStderrHandler)||void 0===n||n.call(this,e,t)})),this._socket.on("cmdExit",((e,t)=>{var n;null===(n=this.onCmdExitHandler)||void 0===n||n.call(this,e,t)}))}onPreConnect(e,t){var n,r;this._authTimer&&(clearTimeout(this._authTimer),this._authTimer=null),this.connected=!0,this.isSecure=t,this.waitForRestart?window.location.reload():(this.firstConnect?this.loadData():null===(r=(n=this.props).onProgress)||void 0===r||r.call(n,l.READY),this._subscribe(!0),this.onConnectionHandlers.forEach((e=>e(!0)))),this._waitForFirstConnectionPromise.resolve()}static isCloud(){return!(!window.location.hostname.includes("amazonaws.com")&&!window.location.hostname.includes("iobroker.in"))||"undefined"!==typeof window.socketUrl&&(window.socketUrl.includes("iobroker.in")||window.socketUrl.includes("amazonaws"))}isConnected(){return this.connected}waitForFirstConnection(){return this._waitForFirstConnectionPromise}async getUserPermissions(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getUserPermissions",((n,r)=>{n?t(n):e(r)}))}})}async loadData(){if(this.loaded)return;for(let e=1;e<=10;e++){if(this.doLoadData(),this.loaded)return;await(0,m.wait)(v.isCloud()?5e3:1e3)}}async doLoadData(){var e,t,n,r,o,s,a,i,c;if(!this.loaded){if(!this.props.doNotLoadACL)try{this.acl=await this.getUserPermissions()}catch(d){return void this.onError("Cannot read user permissions: ".concat(d))}try{!this.props.admin5only||v.isWeb()||window.vendorPrefix&&"@@vendorPrefix@@"!==window.vendorPrefix?this._systemConfig=await this.getSystemConfig():this._systemConfig=await this.getCompactSystemConfig()}catch(d){return void this.onError("Cannot read system config: ".concat(d))}this._systemConfig&&(this.systemLang=null===(e=this._systemConfig.common)||void 0===e?void 0:e.language,this.systemLang||(this.systemLang=window.navigator.userLanguage||window.navigator.language,/^(en|de|ru|pt|nl|fr|it|es|pl|uk)-?/.test(this.systemLang)?this.systemLang=this.systemLang.substr(0,2):/^(en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn)$/.test(this.systemLang)||(this.systemLang="en"),this._systemConfig.common.language=this.systemLang)),null===(n=(t=this.props).onLanguage)||void 0===n||n.call(t,this.systemLang),this.loaded=!0,null===(o=(r=this.props).onProgress)||void 0===o||o.call(r,l.CONNECTED),this.firstConnect=!1,this.props.doNotLoadAllObjects?this.props.admin5only?this.objects={}:this.objects={"system.config":this._systemConfig}:this.objects=await this.getObjects(),null===(a=(s=this.props).onProgress)||void 0===a||a.call(s,l.READY),this.onReadyDone||(this.onReadyDone=!0,null===(c=(i=this.props).onReady)||void 0===c||c.call(i,this.objects))}}authenticate(){window.location.search.includes("&href=")?window.location.href="".concat(window.location.protocol,"//").concat(window.location.host).concat(window.location.pathname).concat(window.location.search).concat(window.location.hash):window.location.href="".concat(window.location.protocol,"//").concat(window.location.host).concat(window.location.pathname,"?login&href=").concat(window.location.search).concat(window.location.hash)}async subscribeState(){let e,t,n,r;for(var o=arguments.length,s=new Array(o),a=0;ae.includes("*")))){let e;for(let t=0;t{try{n(e,t,o)}catch(r){console.error("Error by callback of objectChange: ".concat(r))}}));s&&(null===(r=(n=this.props).onObjectChange)||void 0===r||r.call(n,e,t))}stateChange(e,t){for(const r of Object.values(this.statesSubscribes))if(r.reg.test(e))for(const o of r.cbs)try{o(e,null!==t&&void 0!==t?t:null)}catch(n){console.error("Error by callback of stateChanged: ".concat(n))}}instanceMessage(e,t,n){var r;null===(r=this._instanceSubscriptions[t])||void 0===r||r.forEach((r=>{r.messageType===e&&r.callback(n,t,e)}))}fileChange(e,t,n){for(const o of Object.values(this.filesSubscribes))if(o.regId.test(e)&&o.regFilePattern.test(t))for(const s of o.cbs)try{s(e,t,n)}catch(r){console.error("Error by callback of fileChange: ".concat(r))}}async subscribeFiles(e,t,n){if("function"!==typeof n)throw new Error("The state change handler must be a function!");let r;r=Array.isArray(t)?t:[t];const o=[];for(let s=0;s{const n={elapsed:!1,clearTimeout:()=>{}};let s;!1!==r&&(s=setTimeout((()=>{n.elapsed=!0,null===o||void 0===o||o(),t(u.TIMEOUT)}),null!==r&&void 0!==r?r:this.props.cmdTimeout),n.clearTimeout=()=>{clearTimeout(s)});try{await i(e,t,n)}catch(a){t(a)}}));return t&&(this._promises[t]=c),c}resetCache(e,t){t?Object.keys(this._promises).filter((t=>t.startsWith(e))).forEach((e=>{delete this._promises[e]})):delete this._promises[e]}getStates(e){return this.request({commandTimeout:!1,executor:(t,n)=>{this._socket.emit("getStates",e,((e,r)=>{this.states=null!==r&&void 0!==r?r:{},e?n(e):t(this.states)}))}})}getState(e){return this.request({commandTimeout:!1,executor:(t,n)=>{e&&e===this.ignoreState?t(this.simStates[e]||{val:null,ack:!0}):this._socket.emit("getState",e,((e,r)=>{e?n(e):t(r)}))}})}getBinaryState(e){return this.request({commandTimeout:!1,executor:(t,n)=>{this._socket.emit("getBinaryState",e,((e,r)=>{e?n(e):t(r)}))}})}setBinaryState(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("setBinaryState",e,t,(e=>{e?r(e):n()}))}})}setState(e,t,n){return"boolean"===typeof n&&(t={val:t,ack:n}),this.request({commandTimeout:!1,executor:(r,o)=>{if(e&&e===this.ignoreState){let o;if(o="boolean"===typeof n||"object"===typeof t&&void 0!==t.val?t:{val:t,ack:!1,ts:Date.now(),lc:Date.now(),from:"system.adapter.vis.0"},this.simStates[e]=o,this.statesSubscribes[e])for(const t of this.statesSubscribes[e].cbs)try{t(e,o)}catch(s){console.error("Error by callback of stateChanged: ".concat(s))}r()}else this._socket.emit("setState",e,t,(e=>{e?o(e):r()}))}})}getObjects(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{e||!this.objects?this._socket.emit(v.isWeb()?"getObjects":"getAllObjects",((e,o)=>{var s,a;t||null===(a=(s=this.props).onProgress)||void 0===a||a.call(s,l.OBJECTS_LOADED),e?r(e):(this.objects=null!==o&&void 0!==o?o:{},n(this.objects))})):n(this.objects)}})}getObjectsById(e){return this.request({commandTimeout:!1,executor:(t,n)=>{this._socket.emit("getObjects",e,((e,r)=>{e?n(e):t(r)}))}})}_subscribe(e){var t,n;if(e&&!this.subscribed){this.subscribed=!0,(null===(t=this.props.autoSubscribes)||void 0===t?void 0:t.length)&&this._socket.emit("subscribeObjects",this.props.autoSubscribes);const e=Object.keys(this.objectsSubscribes);e.length&&this._socket.emit("subscribeObjects",e),Object.keys(this.objectsSubscribes).forEach((e=>this._socket.emit("subscribeObjects",e))),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!0),Object.keys(this.statesSubscribes).forEach((e=>this._socket.emit("subscribe",e))),Object.keys(this.filesSubscribes).forEach((e=>{const[t,n]=e.split("$%$");this._socket.emit("subscribeFiles",t,n)}))}else if(!e&&this.subscribed){this.subscribed=!1,(null===(n=this.props.autoSubscribes)||void 0===n?void 0:n.length)&&this._socket.emit("unsubscribeObjects",this.props.autoSubscribes);const e=Object.keys(this.objectsSubscribes);e.length&&this._socket.emit("unsubscribeObjects",e),this.props.autoSubscribeLog&&this._socket.emit("requireLog",!1),Object.keys(this.statesSubscribes).forEach((e=>this._socket.emit("unsubscribe",e))),Object.keys(this.filesSubscribes).forEach((e=>{const[t,n]=e.split("$%$");this._socket.emit("unsubscribeFiles",t,n)}))}}requireLog(e){return this.request({commandTimeout:!1,executor:(t,n)=>{this._socket.emit("requireLog",e,(e=>{e?n(e):t()}))}})}delObject(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("delObject",e,{maintenance:t},(e=>{e?r(e):n()}))}})}delObjects(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("delObjects",e,{maintenance:t},(e=>{e?r(e):n()}))}})}setObject(e,t){return t?(delete(t=JSON.parse(JSON.stringify(t))).from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("setObject",e,t,(e=>{e?r(e):n()}))}})):Promise.reject("Null object is not allowed")}getObject(e){return this.request({commandTimeout:!1,executor:(t,n)=>{e&&e===this.ignoreState?t({_id:this.ignoreState,type:"state",common:{name:"ignored state",type:"mixed"}}):this._socket.emit("getObject",e,((e,r)=>{e?n(e):t(r)}))}})}sendTo(e,t,n){return this.request({commandTimeout:!1,executor:r=>{this._socket.emit("sendTo",e,t,n,(e=>{r(e)}))}})}extendObject(e,t){return t?(delete(t=JSON.parse(JSON.stringify(t))).from,delete t.user,delete t.ts,this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("extendObject",e,t,(e=>{e?r(e):n()}))}})):Promise.reject("Null object is not allowed")}registerLogHandler(e){this.onLogHandlers.includes(e)||this.onLogHandlers.push(e)}unregisterLogHandler(e){const t=this.onLogHandlers.indexOf(e);-1!==t&&this.onLogHandlers.splice(t,1)}registerConnectionHandler(e){this.onConnectionHandlers.includes(e)||this.onConnectionHandlers.push(e)}unregisterConnectionHandler(e){const t=this.onConnectionHandlers.indexOf(e);-1!==t&&this.onConnectionHandlers.splice(t,1)}registerCmdStdoutHandler(e){this.onCmdStdoutHandler=e}unregisterCmdStdoutHandler(){this.onCmdStdoutHandler=void 0}registerCmdStderrHandler(e){this.onCmdStderrHandler=e}unregisterCmdStderrHandler(){this.onCmdStderrHandler=void 0}registerCmdExitHandler(e){this.onCmdExitHandler=e}unregisterCmdExitHandler(){this.onCmdExitHandler=void 0}getEnums(e,t){return this.request({cacheKey:"enums_".concat(e||"all"),forceUpdate:t,commandTimeout:!1,executor:(t,n)=>{this._socket.emit("getObjectView","system","enum",{startkey:"enum.".concat(e||""),endkey:e?"enum.".concat(e,".\u9999"):"enum.\u9999"},((r,o)=>{if(r)n(r);else{const n={};if(o)for(let t=0;t{n=n||"",r=r||"\u9999",this._socket.emit("getObjectView",e,t,{startkey:n,endkey:r},((e,t)=>{if(e)s(e);else{const e={};if(t&&t.rows)for(let n=0;n{this._socket.emit("getObjectView","system","meta",{startkey:"",endkey:"\u9999"},((n,r)=>{var o;n?t(n):e(null===(o=r.rows)||void 0===o?void 0:o.map((e=>e.value)).filter((e=>!!e)))}))}})}readDir(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("readDir",e,t,((e,t)=>{e?r(e):n(t)}))}})}readFile(e,t,n){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit(n?"readFile64":"readFile",e,t,((e,t,n)=>{e?o(e):r({file:t,mimeType:n})}))}})}writeFile64(e,t,n){return this.request({commandTimeout:!1,executor:(r,o)=>{if("string"===typeof n)this._socket.emit("writeFile",e,t,n,(e=>{e?o(e):r()}));else{const s=btoa(new Uint8Array(n).reduce(((e,t)=>e+String.fromCharCode(t)),""));this._socket.emit("writeFile64",e,t,s,(e=>{e?o(e):r()}))}}})}deleteFile(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("deleteFile",e,t,(e=>{e?r(e):n()}))}})}deleteFolder(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("deleteFolder",e,t,(e=>{e?r(e):n()}))}})}rename(e,t,n){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("rename",e,t,n,(e=>{e?o(e):r()}))}})}renameFile(e,t,n){return this.request({commandTimeout:!1,executor:(r,o)=>{this._socket.emit("renameFile",e,t,n,(e=>{e?o(e):r()}))}})}cmdExec(e,t,n,r){return this.request({commandTimeout:r,executor:(r,o,s)=>{e=(0,m.normalizeHostId)(e),this._socket.emit("cmdExec",e,n,t,(e=>{s.elapsed||(s.clearTimeout(),e?o(e):r())}))}})}getSystemConfig(e){return this.request({cacheKey:"systemConfig",forceUpdate:e,commandTimeout:!1,executor:async e=>{var t,n,r,o,s;let a=await this.getObject("system.config");null!==(t=a)&&void 0!==t||(a={}),null!==(n=(o=a).common)&&void 0!==n||(o.common={}),null!==(r=(s=a).native)&&void 0!==r||(s.native={}),e(a)}})}getCompactSystemConfig(e){return this.request({cacheKey:"systemConfigCommon",forceUpdate:e,commandTimeout:!1,requireAdmin:!0,executor:(e,t)=>{this._socket.emit("getCompactSystemConfig",((n,r)=>{var o,s,a,i,c;n?t(n):(null!==(o=r)&&void 0!==o||(r={}),null!==(s=(i=r).common)&&void 0!==s||(i.common={}),null!==(a=(c=r).native)&&void 0!==a||(c.native={}),e(r))}))}})}getForeignStates(e){return this.request({commandTimeout:!1,executor:(t,n)=>{this._socket.emit("getForeignStates",e||"*",((e,r)=>{e?n(e):t(null!==r&&void 0!==r?r:{})}))}})}getForeignObjects(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("getForeignObjects",e||"*",t,((e,t)=>{e?r(e):n(t)}))}})}setSystemConfig(e){return this.setObject("system.config",e)}getRawSocket(){return this._socket}getHistory(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("getHistory",e,t,((e,t)=>{e?r(e):n(t)}))}})}getHistoryEx(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("getHistory",e,t,((e,t,o,s)=>{e?r(e):n({values:t,sessionId:s,stepIgnore:o})}))}})}getIpAddresses(e,t){return e=(0,m.normalizeHostId)(e),this.request({cacheKey:"IPs_".concat(e),forceUpdate:t,commandTimeout:!1,executor:async t=>{var n;const r=await this.getObject(e);t(null!==(n=null===r||void 0===r?void 0:r.common.address)&&void 0!==n?n:[])}})}getVersion(e){return this.request({cacheKey:"version",forceUpdate:e,commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getVersion",((n,r,o)=>{n&&!r&&"string"===typeof n&&n.match(/\d+\.\d+\.\d+/)?e({version:n,serverName:"socketio"}):n?t(n):e({version:r,serverName:o})}))}})}getWebServerName(){return this.request({cacheKey:"webName",commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getAdapterName",((n,r)=>{n?t(n):e(r)}))}})}fileExists(e,t){return this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("fileExists",e,t,((e,t)=>{e?r(e):n(!!t)}))}})}getCurrentUser(){return this.request({commandTimeout:!1,executor:e=>{this._socket.emit("authEnabled",((t,n)=>{e(n)}))}})}getUuid(){return this.request({cacheKey:"uuid",commandTimeout:!1,executor:async e=>{var t;const n=await this.getObject("system.meta.uuid");e(null===(t=null===n||void 0===n?void 0:n.native)||void 0===t?void 0:t.uuid)}})}checkFeatureSupported(e,t){return this.request({cacheKey:"supportedFeatures_".concat(e),forceUpdate:t,commandTimeout:!1,executor:(t,n)=>{this._socket.emit("checkFeatureSupported",e,((e,r)=>{e?n(e):t(r)}))}})}getAdapterInstances(e,t){return"boolean"===typeof e&&(t=e,e=""),e=e||"",this.request({cacheKey:"instances_".concat(e),forceUpdate:t,commandTimeout:!1,executor:async t=>{const n=e?"system.adapter.".concat(e,"."):"system.adapter.",r="".concat(n,"\u9999"),o=await this.getObjectViewSystem("instance",n,r),s=Object.values(o);t(e?s.filter((t=>t.common.name===e)):s)}})}getAdapters(e,t){return"boolean"===typeof e&&(t=e,e=""),e=e||"",this.request({cacheKey:"adapter_".concat(e),forceUpdate:t,commandTimeout:!1,executor:async t=>{const n=await this.getObjectViewSystem("adapter","system.adapter.".concat(e||""),"system.adapter.".concat(e||"\u9999")),r=Object.values(n);t(e?r.filter((t=>t.common.name===e)):r)}})}getGroups(e){return this.request({cacheKey:"groups",forceUpdate:e,commandTimeout:!1,executor:(e,t)=>{this._socket.emit("getObjectView","system","group",{startkey:"system.group.",endkey:"system.group.\u9999"},((n,r)=>{n?t(n):e((0,m.getObjectViewResultToArray)(r))}))}})}logout(){return this.request({commandTimeout:!1,executor:(e,t)=>{this._socket.emit("logout",(n=>{n?t(n):e(null)}))}})}subscribeOnInstance(e,t,n,r){return this.request({commandTimeout:!1,executor:(o,s)=>{this._socket.emit("clientSubscribe",e,t,n,((n,a)=>{n?s(n):a&&(a.error?s(a.error):(e.startsWith("system.adapter.")||(e="system.adapter.".concat(e)),this._instanceSubscriptions[e]=this._instanceSubscriptions[e]||[],this._instanceSubscriptions[e].find((e=>e.messageType===t&&e.callback===r))||this._instanceSubscriptions[e].push({messageType:t,callback:r}),o(a)))}))}})}unsubscribeFromInstance(e,t,n){var r;let o;e.startsWith("system.adapter.")||(e="system.adapter.".concat(e));const s=[];do{o=!1;const a=null===(r=this._instanceSubscriptions[e])||void 0===r?void 0:r.findIndex((e=>(!t||e.messageType===t)&&(!n||e.callback===n)));if(void 0!==a&&null!==a&&-1!==a){o=!0;const n=this._instanceSubscriptions[e][a].messageType;this._instanceSubscriptions[e].splice(a,1),this._instanceSubscriptions[e].length||delete this._instanceSubscriptions[e];this._instanceSubscriptions[e]&&this._instanceSubscriptions[e].find((e=>e.messageType===n))||s.push(this.request({commandTimeout:!1,executor:(n,r)=>{this._socket.emit("clientUnsubscribe",e,t,((e,t)=>e?r(e):n(t)))}}))}}while(o&&(!n||!t));return s.length?Promise.all(s).then((e=>!!e.find((e=>e)))):Promise.resolve(!1)}log(e,t){return e?this.request({commandTimeout:!1,executor:n=>(this._socket.emit("log",e,t),n(null))}):Promise.resolve(null)}setStateToIgnore(e){this.ignoreState=e}}},52974:e=>{"use strict";var t,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty;e.exports=(t={},((e,t,a,i)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let c of o(t))s.call(e,c)||c===a||n(e,c,{get:()=>t[c],enumerable:!(i=r(t,c))||i.enumerable});return e})(n({},"__esModule",{value:!0}),t))},99072:e=>{"use strict";var t,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,a={};function i(){let e,t;const n=new Promise(((n,r)=>{e=n,t=r}));return n.resolve=e,n.reject=t,n}((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(a,{createDeferredPromise:()=>i}),e.exports=(t=a,((e,t,a,i)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let c of o(t))s.call(e,c)||c===a||n(e,c,{get:()=>t[c],enumerable:!(i=r(t,c))||i.enumerable});return e})(n({},"__esModule",{value:!0}),t))},71936:(e,t,n)=>{"use strict";var r,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,c=(e,t,n,r)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let c of a(t))i.call(e,c)||c===n||o(e,c,{get:()=>t[c],enumerable:!(r=s(t,c))||r.enumerable});return e},l=(e,t,n)=>(c(e,t,"default"),n&&c(n,t,"default")),d={};((e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})})(d,{AdminConnection:()=>u.AdminConnection,Connection:()=>h.Connection,ERRORS:()=>h.ERRORS,PROGRESS:()=>h.PROGRESS}),e.exports=(r=d,c(o({},"__esModule",{value:!0}),r)),l(d,n(73171),e.exports);var u=n(73171);l(d,n(19594),e.exports);var h=n(19594);l(d,n(52974),e.exports);n(52974)},57995:e=>{"use strict";var t,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,a={};function i(e){var t;return null!==(t=null===e||void 0===e?void 0:e.rows.map((e=>e.value)).filter((e=>!!e)))&&void 0!==t?t:[]}function c(e){return(null===e||void 0===e?void 0:e.startsWith("system.host."))||(e="system.host.".concat(e)),e}function l(e){return(null===e||void 0===e?void 0:e.startsWith("system.host."))&&(e=e.substr(12)),e}function d(e){return new Promise((t=>{setTimeout(t,e)}))}function u(e){const t="*"===(e=(e||"").toString())[0],n="*"===e[e.length-1];return(t?"":"^")+(e=e.replace(/[-/\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*"))+(n?"":"$")}((e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})})(a,{getObjectViewResultToArray:()=>i,normalizeHostId:()=>c,objectIdToHostname:()=>l,pattern2RegEx:()=>u,wait:()=>d}),e.exports=(t=a,((e,t,a,i)=>{if(t&&"object"===typeof t||"function"===typeof t)for(let c of o(t))s.call(e,c)||c===a||n(e,c,{get:()=>t[c],enumerable:!(i=r(t,c))||i.enumerable});return e})(n({},"__esModule",{value:!0}),t))},64467:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(59526);function o(e,t,n){return(t=(0,r.A)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},60184:(e,t,n)=>{"use strict";n.d(t,{M1W:()=>u,Mbn:()=>a,PiR:()=>i,U9Z:()=>l,g1V:()=>d,kkc:()=>o,l1U:()=>c,w_X:()=>s});var r=n(13441);function o(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"},child:[]}]})(e)}function s(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z"},child:[]}]})(e)}function a(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z"},child:[]}]})(e)}function i(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z"},child:[]}]})(e)}function c(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 384 512"},child:[{tag:"path",attr:{d:"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"},child:[]}]})(e)}function l(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"},child:[]}]})(e)}function d(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"},child:[]}]})(e)}function u(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"},child:[]}]})(e)}},13441:(e,t,n)=>{"use strict";n.d(t,{k5:()=>p});var r=n(28437),o={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},s=r.createContext&&r.createContext(o),a=["attr","size","title"];function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;tr.createElement(e.tag,d({key:t},e.attr),h(e.child))))}function p(e){return t=>r.createElement(m,c({attr:d({},e.attr)},t),h(e.child))}function m(e){var t=t=>{var n,{attr:o,size:s,title:l}=e,u=i(e,a),h=s||t.size||"1em";return t.className&&(n=t.className),e.className&&(n=(n?n+" ":"")+e.className),r.createElement("svg",c({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,o,u,{className:n,style:d(d({color:e.color||t.color},t.style),e.style),height:h,width:h,xmlns:"http://www.w3.org/2000/svg"}),l&&r.createElement("title",null,l),e.children)};return void 0!==s?r.createElement(s.Consumer,null,(e=>t(e))):t(o)}},6326:(e,t,n)=>{"use strict";n.d(t,{Cl:()=>r,YH:()=>s,fX:()=>i,sH:()=>o,zs:()=>a});var r=function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(r=s.next()).done;)a.push(r.value)}catch(i){o={error:i}}finally{try{r&&!r.done&&(n=s.return)&&n.call(s)}finally{if(o)throw o.error}}return a}function i(e,t,n){if(n||2===arguments.length)for(var r,o=0,s=t.length;o{"use strict";e.exports=JSON.parse('{"ra_filter_func":"Funktion","ra_filter_id":"ID","ra_filter_name":"Name","ra_filter_type":"Typ","ra_filter_customs":"Einstellungen","ra_filter_role":"Rolle","ra_filter_room":"Raum","ra_tooltip_ack":"Best\xe4tigt","ra_tooltip_from":"Von","ra_tooltip_lc":"Zuletzt ge\xe4ndert","ra_tooltip_quality":"Qualit\xe4t","ra_tooltip_ts":"Zeitstempel","ra_tooltip_user":"Benutzer","ra_tooltip_value":"Wert","ra_Are you sure?":"Bist du sicher?","ra_Cancel":"Abbrechen","ra_Copied":"Kopiert","ra_Copied %s":"\\"%s\\" kopiert","ra_Define functions":"Funktionen definieren","ra_Define rooms":"R\xe4ume definieren","ra_Error":"Fehler","ra_Message":"Meldung","ra_Ok":"OK","ra_Please select object ID...":"Bitte Objekt-ID ausw\xe4hlen...","ra_Selected":"Ausgew\xe4hlt","ra_Unknown error!":"Unbekannter Fehler!","ra_Value":"Wert","ra_invalidConfig":"Ung\xfcltige Einstellungen","ra_otherConfig":"Einstellungen von anderen Adaptern %s","ra_tooltip_copyState":"Statuswert kopieren","ra_tooltip_customConfig":"Benutzerdefinierte Einstellungen","ra_tooltip_deleteObject":"Objekt l\xf6schen","ra_tooltip_editObject":"Objekt bearbeiten","ra_tooltip_editState":"Statuswert bearbeiten","ra_dow_Fr":"Fr","ra_dow_Mo":"Mo","ra_dow_Sa":"Sa","ra_dow_Su":"So","ra_dow_Th":"Do","ra_dow_Tu":"Di","ra_dow_We":"Mi","ra_Listen on all IPs":"Zugriff von allen IPs zulassen","ra_Save":"Speichern","ra_Save and close":"Speichern und schlie\xdfen","ra_Close":"Schlie\xdfen","ra_Auto (no custom columns)":"Auto (keine benutzerdefinierten Spalten)","ra_Transparent dialog":"Transparenter Dialog","ra_Width":"Breite","ra_val":"Wert","ra_buttons":"Tasten","ra_Configure visible columns":"Spalten Konfigurieren","ra_close":"Schlie\xdfen","ra_Cannot update attribute, because not found in the object":"Attribut kann nicht aktualisiert werden, da es nicht im Objekt gefunden wurde","ra_Edit object field":"Objektfeld bearbeiten","ra_Hide empty folders":"Leere Ordner ausblenden","ra_Reload files":"Dateien neu laden","ra_Create folder":"Ordner erstellen","ra_Upload file":"Datei hochladen","ra_User files":"Benutzerdaten","ra_Confirm deletion of %s":"Das L\xf6schen von %s best\xe4tigen","ra_Delete (no confirm for 5 mins)":"L\xf6schen (keine Best\xe4tigung f\xfcr 5 Minuten)","ra_Delete":"L\xf6schen","ra_Toggle expert mode":"Expertenmodus umschalten","ra_Toggle view mode":"Ansichtsmodus umschalten","ra_Root":"Anfang","ra_Back to %s":"Zur\xfcck zu %s","ra_Place your files here or click here to open the browse dialog":"Die Dateien hier platzieren oder hier klicken, um den Suchdialog zu \xf6ffnen","ra_If no file will be created in the folder, it will disappear after the browser closed":"Wenn im Ordner keine Datei erstellt wird, verschwindet dieser nach dem Schlie\xdfen des Browsers","ra_Folder name":"Ordnernamen","ra_Create new folder in %s":"Neuen Ordner in \\"%s\\" erstellen","ra_Duplicate name":"Doppelter Name","ra_Invalid parent folder!":"Ung\xfcltiger \xfcbergeordneter Ordner!","ra_Drop file here":"Datei hier ablegen","ra_Suppress question for next %s minutes":"Frage f\xfcr die n\xe4chsten %s Minuten unterdr\xfccken","ra_Clear filter":"Filter l\xf6schen","ra_Update":"Aktualisieren","ra_Load configuration from file":"Konfiguration aus Datei laden","ra_Save configuration to file":"Konfiguration in Datei speichern","sc_cron":"CRON","sc_date":"Datum","sc_dates":"Tage","sc_dows":"Wochentage","sc_every":"Jeden","sc_everyN_dates":"alle N Tage","sc_everyN_dows":"alle N Wochentage","sc_everyN_hours":"alle N Stunden","sc_everyN_minutes":"alle N Minuten","sc_everyN_months":"alle N Monate","sc_everyN_seconds":"alle N Sekunden","sc_every_dates":"jeden Tag","sc_every_dows":"jeden Tag der Woche","sc_every_hours":"jede Stunde","sc_every_minutes":"jede Minute","sc_every_months":"jeden Monat","sc_every_seconds":"jede Sekunde","sc_from":"Von","sc_hours":"Stunden","sc_interval":"Intervall","sc_intervalBetween":"Intervall zwischen","sc_minutes":"Minuten","sc_months":"Monate","sc_once":"Einmal","sc_period":"Zeitraum","sc_seconds":"Sekunden","sc_simple":"Einfach","sc_specific":"Bestimmte Zeit","sc_specific_dates":"bestimmte Tage","sc_specific_dows":"bestimmten Wochentag","sc_specific_hours":"bestimmte Stunden","sc_specific_minutes":"bestimmte Minuten","sc_specific_months":"bestimmte Monate","sc_specific_seconds":"bestimmte Sekunden","sc_time":"Zeit","sc_to":"Bis","sc_wizard":"Wizard","sch_all":"alle","sch_astroDay":"Astronomisch Tag","sch_astroNight":"Astronomisch Nacht","sch_astro_dawn":"Morgend\xe4mmerung","sch_astro_dusk":"Abendd\xe4mmerung","sch_astro_goldenHour":"Goldene Stunde","sch_astro_goldenHourEnd":"Goldene Stundenende","sch_astro_nadir":"Nadir","sch_astro_nauticalDawn":"Nautische Morgend\xe4mmerung","sch_astro_nauticalDusk":"Nautische Abendd\xe4mmerung","sch_astro_night":"Nacht","sch_astro_nightEnd":"Nachtende","sch_astro_solarNoon":"Sonnenmittag","sch_astro_sunrise":"Sonnenaufgang","sch_astro_sunriseEnd":"Sonnenaufgangende","sch_astro_sunset":"Sonnenuntergang","sch_astro_sunsetStart":"Sonnenuntergangstart","sch_at":"am","sch_desc_atTime":"um %s","sch_desc_everyDay":"jeden Tag","sch_desc_everyHour":"jede Stunde","sch_desc_everyMinute":"jede Minute","sch_desc_everyMonth":"jeden Monat","sch_desc_everyNDay":"jeden %s Tag","sch_desc_everyNHours":"alle %s Stunden","sch_desc_everyNMinutes":"alle %s Minuten","sch_desc_everyNMonths":"alle %s Monate","sch_desc_everyNWeeks":"alle %s Wochen","sch_desc_everyNYears":"alle %s Jahre","sch_desc_everyWeek":"jede Woche","sch_desc_everyYear":"jedes Jahr","sch_desc_intervalFromTo":"von %s bis %s","sch_desc_never":"noch nie","sch_desc_onDate":"am %s von %s","sch_desc_onDates":"am %s und %s von","sch_desc_onEveryDate":"an jedem Datum von","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s und %s","sch_desc_onWeekday":"auf %s","sch_desc_onWeekdays":"auf %s und %s","sch_desc_onWeekends":"an Wochenenden","sch_desc_onWorkdays":"an Werktagen","sch_desc_onceInPast":"wird nicht mehr ausgef\xfchrt, weil der Start in der Vergangenheit ist","sch_desc_once_on":"auf %s","sch_desc_validFrom":"von %s","sch_desc_validFromTo":"Ausf\xfchren von bis","sch_desc_validTo":"bis %s","sch_every":"jeden","sch_exactTime":"Bestimmte Zeit","sch_from":"von","sch_fromTo":"Von bis","sch_intervalTime":"Zeitintervall","sch_invert":"umkehren","sch_no_one":"keiner","sch_on":"am","sch_period":"Zeitraum","sch_periodDaily":"T\xe4glich","sch_periodDates":"Daten","sch_periodDay":"Tag","sch_periodEvery":"Jeden","sch_periodEveryDay":"Jeden Tag","sch_periodEveryMonth":"Jeden Monat","sch_periodEveryWeek":"Jede Woche","sch_periodEveryYear":"Jedes Jahr","sch_periodHours":"Stunden","sch_periodMinutes":"Minuten","sch_periodMonth":"Monat","sch_periodMonthly":"Monatlich","sch_periodOnce":"Einmal","sch_periodSpecificMonths":"Bestimmte Monate","sch_periodWeek":"Woche","sch_periodWeekdays":"Wochentage","sch_periodWeekend":"Wochenende","sch_periodWeekly":"W\xf6chentlich","sch_periodWorkdays":"Arbeitstage","sch_periodYear":"Jahr","sch_periodYearly":"J\xe4hrlich","sch_specificTime":"Bestimmte Zeit","sch_time":"Zeit","sch_to":"zu","sch_valid":"G\xfcltigkeit","sch_validFrom":"von","sch_validTo":"bis","sch_wholeDay":"Ganzer Tag","sch_yearEveryMonth":"jeden Monat","ra_Define schedule...":"Zeitplan definieren ...","ra_Repeat":"Wiederholen","ra_use seconds":"Sekunden benutzen","ra_months_Apr":"Apr","ra_months_Aug":"Aug","ra_months_Dec":"Dez","ra_months_Jan":"Jan","ra_months_Feb":"Feb","ra_months_Jul":"Jul","ra_months_Jun":"Jun","ra_months_Mai":"Mai","ra_months_Mar":"M\xe4r","ra_months_Nov":"Nov","ra_months_Oct":"Okt","ra_months_Sep":"Sep","ra_Toggle the states view":"Statusansicht umschalten","ra_Add new child object to selected parent":"Dem ausgew\xe4hlten \xfcbergeordneten Objekt ein neues untergeordnetes Objekt hinzuf\xfcgen","ra_Add objects tree from JSON file":"Objektbaum aus JSON-Datei hinzuf\xfcgen","ra_Save objects tree as JSON file":"Objektbaum als JSON-Datei speichern","ra_Objects":"Objekte","ra_States":"Zust\xe4nde","ra_object_changed_by_user":"Objekt zuletzt ge\xe4ndert um","ra_object_changed_by":"Objekt ge\xe4ndert von","ra_state_changed_from":"Objekt ge\xe4ndert von","ra_state_changed_by":"Zustand ge\xe4ndert durch","ra_aclOwner_read_object":"Besitzer kann Objekt lesen","ra_aclOwner_read_state":"Besitzer kann Zustand lesen","ra_aclOwner_write_object":"Besitzer kann Objekt schreiben","ra_aclOwner_write_state":"Besitzer kann Zustand schreiben","ra_aclGroup_read_object":"Gruppe kann Objekt lesen","ra_aclGroup_read_state":"Gruppe kann Status lesen","ra_aclGroup_write_object":"Gruppe kann Objekt schreiben","ra_aclGroup_write_state":"Gruppe kann Status schreiben","ra_aclEveryone_read_object":"Jeder kann Objekt lesen","ra_aclEveryone_read_state":"Jeder kann Zustand lesen","ra_aclEveryone_write_object":"Jeder kann ein Objekt schreiben","ra_aclEveryone_write_state":"Jeder kann Zustand schreiben","ra_Folders always first":"Ordner immer zuerst","ra_changedFrom":"Ge\xe4ndert von","ra_qualityCode":"Qualit\xe4tscode","ra_timestamp":"Zeitstempel","ra_lastChange":"Letzte \xc4nderung","ra_Owner group":"Besitzergruppe","ra_Owner user":"Besitzer Benutzer","ra_Create":"Erstellen","ra_Changed from":"Ge\xe4ndert von","ra_Quality code":"Qualit\xe4t","ra_Timestamp":"Zeitstempel","ra_Last change":"Letzte \xc4nderung","ra_Collapse all nodes":"Alle Knoten zuklappen","ra_Edit custom config":"Bearbeite Benutzerdefinierte Konfiguration","ra_Collapse one step node":"Eine Ebene zuklappen","ra_Expand one step node":"Eine Ebene aufklappen","ra_Refresh tree":"Baum aktualisieren","ra_Expand all nodes":"Alle Knoten aufklappen","ra_Deselect all":"Alles abw\xe4hlen","ra_Select all":"Alle ausw\xe4hlen","ra_%s object(s) processed":"%s Objekt(e) verarbeitet","ra_Invalid structure":"Ung\xfcltige Struktur","ra_%s was imported":"%s wurde importiert","ra_Failed to open JSON File":"Fehler beim \xd6ffnen der JSON-Datei","ra_Only following structures of objects are available:":"Es stehen nur folgende Objektstrukturen zur Verf\xfcgung:","ra_Folder \u2192 State":"Ordner \u2192 Zustand","ra_Folder \u2192 Channel \u2192 State":"Ordner \u2192 Kanal \u2192 Zustand","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Ordner \u2192 Ger\xe4t \u2192 Kanal \u2192 Zustand","ra_Device \u2192 Channel \u2192 State":"Ger\xe4t \u2192 Kanal \u2192 Zustand","ra_Channel \u2192 State":"Kanal \u2192 Zustand","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"Nicht-Experten d\xfcrfen neue Objekte nur in \\"0_userdata.0\\" oder \\"alias.0\\" erstellen.","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"Die Experten k\xf6nnen Objekte \xfcberall erstellen, au\xdfer auf der zweiten Ebene (z. B. \\"vis.0\\" oder \\"javascript.0\\").","ra_expertMode":"Expertenmodus","ra_On weekdays":"An Wochentagen","ra_Drop the files here...":"Datei hier ablegen...","ra_Drag \'n\' drop some files here, or click to select files":"Die Datei hierher ziehen und ablegen, oder klicken, um die Datei auszuw\xe4hlen","ra_Clear":"L\xf6schen","ra_Clear icon":"Symbol l\xf6schen","ra_none":"kein","ra_Select predefined icon":"Vordefiniertes Symbol ausw\xe4hlen","ra_Show lines between rows":"Linien zwischen Zeilen anzeigen","ra_The page you are looking for was not found":"Die gesuchte Seite wurde nicht gefunden","ra_Good luck":"Viel Gl\xfcck","ra_Cannot find \\"%s\\"":"Kann \\"%s\\" nicht finden","ra_Cannot read \\"%s\\"":"\\"%s\\" kann nicht gelesen werden","ra_Background image":"Hintergrundbild","ra_View: %s":"Anschauen: %s","ra_Copy content":"Inhalte kopieren","ra_Filter":"Filter","ra_All objects":"Alle Objekte","ra_Only selected":"Nur ausgew\xe4hlt","ra_Change color theme":"Farbthema \xe4ndern","ra_daysShortText":"T.","ra_Instance %s is alive":"Instanz %s ist aktiv","ra_Instance %s is not alive":"Instanz %s ist nicht aktiv","ra_Used system settings":"Systemeinstellungen","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Position kann nicht bestimmt werden: Die Systemeinstellungen sind leer und die GPS-Erkennung ist im Browser deaktiviert","ra_Define schedule":"Zeitplan definieren","ra___different__":"unterschiedlich","ra_Please confirm":"Bitte best\xe4tigen","ra_JSON editor":"JSON-Editor","ra_System language":"Systemsprache","ra_Too small":"Zu klein","ra_Too big":"Zu gro\xdf","ra_Passwords are not equal!":"Passw\xf6rter sind nicht gleich!","ra_repeat":"wiederholen","ra_You can filter entries by entering here some text":"Sie k\xf6nnen Eintr\xe4ge filtern, indem Sie hier Text eingeben","ra_Show/hide filter input":"Filtereingabe ein-/ausblenden","ra_Cannot add items with set filter":"Elemente mit festgelegtem Filter k\xf6nnen nicht hinzugef\xfcgt werden","ra_Add row":"Zeile hinzuf\xfcgen","ra_Move up":"Nach oben","ra_Move down":"Nach unten","ra_Delete current row":"Aktuelle Zeile l\xf6schen","ra_All items are filtered out":"Alle Elemente werden herausgefiltert","ra_Double click to reset table layout":"Doppelklicken, um das Tabellenlayout zur\xfcckzusetzen","ra_Cannot retrieve options, as instance is offline":"Optionen k\xf6nnen nicht abgerufen werden, da die Instanz offline ist","ra_File is too big. Max %sk allowed. Try use SVG.":"Datei ist zu gro\xdf. Max %sk erlaubt. Versuchen Sie, SVG zu verwenden.","ra_Cannot upload":"Kann nicht hochladen","ra_Crop":"Ernte","ra_tooltip_comment":"Kommentar","ra_Disconnected":"Getrennt","ra_Connected":"Verbunden","ra_Configure":"Konfigurieren","ra_Invalid CRON":"Ung\xfcltiger CRON","ra_Discard":"Verwerfen","ra_Some data are not stored. Discard?":"Einige Daten werden nicht gespeichert. Verwerfen?","ra_month_Jan":"Jan","ra_month_Feb":"Feb","ra_month_Mar":"M\xe4r","ra_month_Apr":"Apr","ra_month_Mai":"Mai","ra_month_Jun":"Jun","ra_month_Jul":"Jul","ra_month_Aug":"Aug","ra_month_Sep":"Sep","ra_month_Oct":"Okt","ra_month_Nov":"Nov","ra_month_Dec":"Dez","ra_Filter files":"Dateien filtern","ra_Please select file...":"Bitte Datei ausw\xe4hlen...","ra_fileType_all":"Alle Dateien","ra_fileType_audio":"Audio","ra_fileType_code":"Code/JSON","ra_fileType_images":"Bilder","ra_fileType_txt":"Text","ra_fileType_video,":"Video","ra_Cannot decode license":"Lizenz kann nicht entschl\xfcsselt werden","ra_Invalid answer from server":"Ung\xfcltige Antwort vom Server","ra_License %s":"Lizenz %s","ra_License does not exist":"Lizenz existiert nicht","ra_License expired on %s":"Lizenz am %s abgelaufen","ra_License for other product \\"%s\\"":"Lizenz f\xfcr anderes Produkt \u201e%s\u201c","ra_License is for version %s, but required version is %s.":"Lizenz ist f\xfcr Version %s, aber erforderliche Version ist %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"Seriennummer (UUID) \u201e%s\u201c in der Lizenz gilt f\xfcr ein anderes Ger\xe4t.","ra_Serial number (UUID)":"Seriennummer (UUID)","ra_Check license":"Lizenz pr\xfcfen","ra_Request timed out":"Zeit\xfcberschreitung der Anforderung","ra_Instance is not alive":"Instanz ist nicht am Leben","ra_Show/Hide object descriptions":"Objektbeschreibungen ein-/ausblenden","ra_Use system settings for position":"Systemeinstellungen f\xfcr die Position verwenden","ra_Longitude":"L\xe4ngengrad","ra_Latitude":"Breite","ra_Take browser position":"Position vom Browser einnehmen","ra_Take position from system settings":"Position aus den Systemeinstellungen \xfcbernehmen","ra_Port is already used by %s":"Port wird bereits von %s verwendet","ra_Port could be used by %s":"Port k\xf6nnte von %s verwendet werden","ra_filter_customs_without":"ohne","ra_Use iobroker.acme adapter for letsencrypt certificates":"ioBroker.acme-Adapter f\xfcr letsencrypt-Zertifikate verwenden","ra_Do not use let\'s encrypt":"Let\'s encrypt nicht verwenden","ra_Use all available let\'s encrypt certificates":"Alle verf\xfcgbaren Zertifikate von Let\'s encrypt benutzen","ra_Public certificate":"\xd6ffentliches Zertifikat","ra_Private certificate":"Privates Zertifikat","ra_Chained certificate":"Chained Zertifikat","ra_Suitable license not found in license manager":"Passende Lizenz im Lizenzmanager nicht gefunden","ra_Please enter the license":"Bitte die Lizenz eingeben","ra_Checked":"Gepr\xfcft","ra_locally":"\xf6rtlich","ra_via internet":"\xfcbers Internet","ra_Yes":"Ja","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Lizenz im Lizenzmanager nicht gefunden. M\xf6chten Sie Lizenzen von iobroker.net aktualisieren?","ra_Fallback custom certificates":"Benutzerdefinierte Fallback-Zertifikate","ra_Clone current row":"Aktuelle Zeile klonen","ra_fileType_video":"Video","ra_select_folder_hint":"Um einen Ordner auszuw\xe4hlen, halten Sie einfach die Taste \\"Shift\\" gedr\xfcckt, indem Sie auf den Ordner klicken.","ra_Accept license":"Lizenz akzeptieren","ra_License agreement":"Lizenzvereinbarung","ra_Import from %s":"Von %s importieren","ra_Export data to %s file":"Daten in %s-Datei exportieren","ra_Import data from %s file":"Daten aus %s-Datei importieren","ra_No data found in file":"Keine Daten in der Datei gefunden","ra_Append or replace?":"Anh\xe4ngen oder ersetzen?","ra_Append %s entries or replace existing?":"%s Eintr\xe4ge anh\xe4ngen oder vorhandene ersetzen?","ra_Replace":"Ersetzen","ra_Append":"Anh\xe4ngen","ra_May not trigger \\"updateLicenses\\"":"L\xf6st m\xf6glicherweise nicht \u201eupdateLicenses\u201c aus","ra_Unknown error":"Unbekannter Fehler","ra_License must be converted":"Die Lizenz muss auf eine neuere Version konvertiert werden. Sie k\xf6nnen dies in Ihrem iobroker.net-Profil tun.","ra_No one license found in license manager":"Im Lizenzmanager wurde keine Lizenz gefunden","ra_Please create license":"Bitte erstellen Sie eine Lizenz","ra_Product":"Produkt","ra_Version":"Ausf\xfchrung","ra_ValidTill":"G\xfcltig bis","ra_Commercial":"Kommerziell","ra_Not a number":"Keine Nummer","ra_Edit value":"Wert bearbeiten","ra_Edit ACL":"ACL bearbeiten","ra_Edit role":"Rolle bearbeiten","ra_Edit function":"Funktion bearbeiten","ra_Edit room":"Raum bearbeiten","ra_Edit alias":"Alias bearbeiten","ra_View file":"Datei ansehen","ra_Del":"Entf","ra_Show all folders":"Alle Ordner anzeigen","ra_Restrict to folder":"Auf Ordner beschr\xe4nken","ra_Select type of export":"Die Art des Exports ausw\xe4hlen ","ra_You can export all objects or just the selected branch.":"Sie k\xf6nnen alle Objekte oder nur den ausgew\xe4hlten Zweig exportieren.","ra_Do not export values of states":"Keine Zustandswerte exportieren","ra_Selected %s object(s)":"Ausgew\xe4hlt %s Objekt(en)","ra_create_device":"Ger\xe4t erstellen","ra_create_channel":"Kanal erstellen","ra_create_state":"Zustand erstellen","ra_create_string_state":"String-Zustand erstellen","ra_create_number_state":"Nummern-Zustand erstellen","ra_create_boolean_state":"Booleschen Zustand erstellen","ra_Select color":"W\xe4hle Farbe","ra_Cannot read licenses: %s":"Lizenzen k\xf6nnen nicht gelesen werden: %s","ra_Advanced options":"Erweiterte Optionen"}')},56603:e=>{"use strict";e.exports=JSON.parse('{"ra_Are you sure?":"Are you sure?","ra_Cancel":"Cancel","ra_Copied":"Copied","ra_Copied %s":"Copied \\"%s\\"","ra_Error":"Error","ra_Define functions":"Define functions","ra_Define rooms":"Define rooms","ra_Message":"Message","ra_Please select object ID...":"Please select object ID...","ra_Selected":"Selected","ra_Value":"Value","ra_Ok":"Ok","ra_dow_Su":"Su","ra_dow_Mo":"Mo","ra_dow_Tu":"Tu","ra_dow_We":"We","ra_dow_Th":"Th","ra_dow_Fr":"Fr","ra_dow_Sa":"Sa","ra_months_Jan":"Jan","ra_months_Feb":"Feb","ra_months_Mar":"Mar","ra_months_Apr":"Apr","ra_months_Mai":"Mai","ra_months_Jun":"Jun","ra_months_Jul":"Jul","ra_months_Aug":"Aug","ra_months_Sep":"Sep","ra_months_Oct":"Oct","ra_months_Nov":"Nov","ra_months_Dec":"Dec","ra_Unknown error!":"Unknown error!","ra_filter_customs":"Settings","ra_filter_func":"Function","ra_filter_id":"ID","ra_filter_name":"Name","ra_filter_role":"Role","ra_filter_room":"Room","ra_filter_type":"Type","ra_invalidConfig":"Invalid settings","ra_otherConfig":"Settings from other adapter %s","ra_tooltip_ack":"Acknowledged","ra_tooltip_from":"From","ra_tooltip_lc":"Last changed","ra_tooltip_quality":"Quality","ra_tooltip_ts":"Time stamp","ra_tooltip_user":"User","ra_tooltip_value":"Value","ra_tooltip_editObject":"Edit object","ra_tooltip_deleteObject":"Delete object","ra_tooltip_customConfig":"Custom settings","ra_tooltip_copyState":"Copy the state value","ra_tooltip_editState":"Edit the state value","ra_Listen on all IPs":"Listen on all IPs","ra_Save":"Save","ra_Save and close":"Save and close","ra_Close":"Close","ra_Auto (no custom columns)":"Auto (no custom columns)","ra_Transparent dialog":"Transparent dialog","ra_Width":"Width","ra_val":"Value","ra_buttons":"Buttons","ra_Configure visible columns":"Configure visible columns","ra_Cannot update attribute, because not found in the object":"Cannot update attribute, because not found in the object","ra_Edit object field":"Edit object field","ra_Hide empty folders":"Hide empty folders","ra_Reload files":"Reload files","ra_Create folder":"Create folder","ra_Upload file":"Upload file","ra_User files":"User files","ra_Confirm deletion of %s":"Confirm deletion of %s","ra_Delete (no confirm for 5 mins)":"Delete (no confirm for 5 mins)","ra_Delete":"Delete","ra_Toggle expert mode":"Toggle expert mode","ra_Toggle view mode":"Toggle view mode","ra_Root":"Root","ra_Back to %s":"Back to %s","ra_Place your files here or click here to open the browse dialog":"Place your files here or click here to open the browse dialog","ra_If no file will be created in the folder, it will disappear after the browser closed":"If no file will be created in the folder, it will disappear after the browser closed","ra_Folder name":"Folder name","ra_Create new folder in %s":"Create new folder in %s","ra_Duplicate name":"Duplicate name","ra_Invalid parent folder!":"Invalid parent folder!","ra_Drop file here":"Drop file here","ra_Suppress question for next %s minutes":"Suppress question for next %s minutes","ra_Clear filter":"Clear filter","ra_Update":"Update","ra_Load configuration from file":"Load configuration from file","ra_Save configuration to file":"Save configuration to file","sc_cron":"CRON","sc_date":"Date","sc_dates":"Dates","sc_dows":"Day of week","sc_every":"Every","sc_everyN_dates":"every N days","sc_everyN_dows":"every N day of week","sc_everyN_hours":"every N hours","sc_everyN_minutes":"every N minutes","sc_everyN_months":"every N months","sc_everyN_seconds":"every N seconds","sc_every_dates":"every day","sc_every_dows":"every day of the week","sc_every_hours":"every hour","sc_every_minutes":"every minute","sc_every_months":"every month","sc_every_seconds":"every second","sc_from":"From","sc_hours":"Hours","sc_interval":"Interval","sc_intervalBetween":"Interval between","sc_minutes":"Minutes","sc_months":"months","sc_once":"Once","sc_period":"Period","sc_seconds":"Seconds","sc_simple":"Simple","sc_specific":"Specific time","sc_specific_dates":"specific dates","sc_specific_dows":"specific day of weeks","sc_specific_hours":"specific hours","sc_specific_minutes":"specific minutes","sc_specific_months":"specific months","sc_specific_seconds":"specific seconds","sc_time":"Time","sc_to":"To","sc_wizard":"Wizard","sch_all":"all","sch_astroDay":"Astro day","sch_astroNight":"Astro night","sch_astro_dawn":"Dawn","sch_astro_dusk":"Dusk","sch_astro_goldenHour":"Golden hour","sch_astro_goldenHourEnd":"Golden hour end","sch_astro_nadir":"Nadir","sch_astro_nauticalDawn":"Nautical dawn","sch_astro_nauticalDusk":"Nautical dusk","sch_astro_night":"Night","sch_astro_nightEnd":"Night end","sch_astro_solarNoon":"Solar noon","sch_astro_sunrise":"Sunrise","sch_astro_sunriseEnd":"Sunrise end","sch_astro_sunset":"Sunset","sch_astro_sunsetStart":"Sunset start","sch_at":"at","sch_desc_atTime":"at %s","sch_desc_everyDay":"every day","sch_desc_everyHour":"every hour","sch_desc_everyMinute":"every minute","sch_desc_everyMonth":"every month","sch_desc_everyNDay":"every %s day","sch_desc_everyNHours":"every %s hours","sch_desc_everyNMinutes":"every %s minutes","sch_desc_everyNMonths":"every %s months","sch_desc_everyNWeeks":"every %s weeks","sch_desc_everyNYears":"every %s years","sch_desc_everyWeek":"every week","sch_desc_everyYear":"every year","sch_desc_intervalFromTo":"from %s to %s","sch_desc_never":"never","sch_desc_onDate":"on %s of %s","sch_desc_onDates":"on %s and %s of","sch_desc_onEveryDate":"on every date of","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s and %s","sch_desc_onWeekday":"on %s","sch_desc_onWeekdays":"on %s and %s","sch_desc_onWeekends":"on weekends","sch_desc_onWorkdays":"on working days","sch_desc_onceInPast":"will ne be not executed any more, because start is in the past","sch_desc_once_on":"on %s","sch_desc_validFrom":"from %s","sch_desc_validFromTo":"Execute from to","sch_desc_validTo":"to %s","sch_every":"every","sch_exactTime":"Specific time","sch_from":"from","sch_fromTo":"From-to","sch_intervalTime":"Interval time","sch_invert":"invert","sch_no_one":"none","sch_on":"on","sch_period":"Period","sch_periodDaily":"Daily","sch_periodDates":"Dates","sch_periodDay":"Day","sch_periodEvery":"Every","sch_periodEveryDay":"Every day","sch_periodEveryMonth":"Every month","sch_periodEveryWeek":"Every week","sch_periodEveryYear":"Every year","sch_periodHours":"Hours","sch_periodMinutes":"Minutes","sch_periodMonth":"month","sch_periodMonthly":"Monthly","sch_periodOnce":"Once","sch_periodSpecificMonths":"Specific months","sch_periodWeek":"Week","sch_periodWeekdays":"Weekdays","sch_periodWeekend":"Weekend","sch_periodWeekly":"Weekly","sch_periodWorkdays":"Workdays","sch_periodYear":"Year","sch_periodYearly":"Yearly","sch_specificTime":"Specific time","sch_time":"Time","sch_to":"to","sch_valid":"Valid","sch_validFrom":"from","sch_validTo":"to","sch_wholeDay":"Whole day","sch_yearEveryMonth":"every month","ra_Define schedule...":"Define schedule...","ra_Repeat":"Repeat","ra_use seconds":"use seconds","ra_close":"close","ra_Toggle the states view":"Toggle the states view","ra_Add new child object to selected parent":"Add new child object to selected parent","ra_Add objects tree from JSON file":"Add objects tree from JSON file","ra_Save objects tree as JSON file":"Save objects tree as JSON file","ra_Objects":"Objects","ra_States":"States","ra_object_changed_by_user":"Object last changed at","ra_object_changed_by":"Object changed by","ra_state_changed_from":"Object changed from","ra_state_changed_by":"State changed by","ra_aclOwner_read_object":"Owner can read object","ra_aclOwner_read_state":"Owner can read state","ra_aclOwner_write_object":"Owner can write object","ra_aclOwner_write_state":"Owner can write state","ra_aclGroup_read_object":"Group can read object","ra_aclGroup_read_state":"Group can read state","ra_aclGroup_write_object":"Group can write object","ra_aclGroup_write_state":"Group can write state","ra_aclEveryone_read_object":"Everyone can read object","ra_aclEveryone_read_state":"Everyone can read state","ra_aclEveryone_write_object":"Everyone can write object","ra_aclEveryone_write_state":"Everyone can write state","ra_Folders always first":"Folders always first","ra_changedFrom":"Changed from","ra_qualityCode":"Quality code","ra_timestamp":"Timestamp","ra_lastChange":"Last change","ra_Owner group":"Owner group","ra_Owner user":"Owner user","ra_Create":"Create","ra_Changed from":"Changed from","ra_Quality code":"Quality","ra_Timestamp":"Timestamp","ra_Last change":"Last change","ra_Collapse all nodes":"Collapse all nodes","ra_Edit custom config":"Edit custom config","ra_Collapse one step node":"Collapse one level","ra_Expand one step node":"Expand one level","ra_Refresh tree":"Refresh tree","ra_Expand all nodes":"Expand all nodes","ra_Deselect all":"Unselect all","ra_Select all":"Select all","ra_%s object(s) processed":"%s object(s) processed","ra_Invalid structure":"Invalid structure","ra_%s was imported":"%s was imported","ra_Failed to open JSON File":"Failed to open JSON File","ra_Only following structures of objects are available:":"Only following structures of objects are available:","ra_Folder \u2192 State":"Folder \u2192 State","ra_Folder \u2192 Channel \u2192 State":"Folder \u2192 Channel \u2192 State","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Folder \u2192 Device \u2192 Channel \u2192 State","ra_Device \u2192 Channel \u2192 State":"Device \u2192 Channel \u2192 State","ra_Channel \u2192 State":"Channel \u2192 State","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").","ra_expertMode":"Expert mode","ra_On weekdays":"On weekdays","ra_Drop the files here...":"Drop the file here...","ra_Drag \'n\' drop some files here, or click to select files":"Drag \'n\' drop some files here, or click to select files","ra_Clear":"Delete","ra_Clear icon":"Clear icon","ra_none":"none","ra_Select predefined icon":"Select predefined icon","ra_Show lines between rows":"Show lines between rows","ra_The page you are looking for was not found":"The page you are looking for was not found","ra_Good luck":"Good luck","ra_Cannot find \\"%s\\"":"Cannot find \\"%s\\"","ra_Cannot read \\"%s\\"":"Cannot read \\"%s\\"","ra_Background image":"Background image","ra_View: %s":"View: %s","ra_Copy content":"Copy content","ra_Filter":"Filter","ra_All objects":"All objects","ra_Only selected":"Only selected","ra_Change color theme":"Change color theme","ra_daysShortText":"days","ra_Instance %s is alive":"Instance %s is alive","ra_Instance %s is not alive":"Instance %s is not alive","ra_Used system settings":"Used system settings","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Cannot determine position: System settings are empty and GPS detection is disabled in browser","ra_Define schedule":"Define schedule","ra___different__":"different","ra_Please confirm":"Please confirm","ra_JSON editor":"JSON editor","ra_System language":"System language","ra_Too small":"Too small","ra_Too big":"Too big","ra_Passwords are not equal!":"Passwords are not equal!","ra_repeat":"repeat","ra_You can filter entries by entering here some text":"You can filter entries by entering here some text","ra_Show/hide filter input":"Show/hide filter input","ra_Cannot add items with set filter":"Cannot add items with set filter","ra_Add row":"Add row","ra_Move up":"Move up","ra_Move down":"Move down","ra_Delete current row":"Delete current row","ra_All items are filtered out":"All items are filtered out","ra_Double click to reset table layout":"Double click to reset table layout","ra_Cannot retrieve options, as instance is offline":"Cannot retrieve options, as instance is offline","ra_File is too big. Max %sk allowed. Try use SVG.":"File is too big. Max %sk allowed. Try use SVG.","ra_Cannot upload":"Cannot upload","ra_Crop":"Crop","ra_tooltip_comment":"Comment","ra_Disconnected":"Disconnected","ra_Connected":"Connected","ra_Configure":"Configure","ra_Invalid CRON":"Invalid CRON","ra_Discard":"Discard","ra_Some data are not stored. Discard?":"Some data are not stored. Discard?","ra_month_Jan":"Jan","ra_month_Feb":"Feb","ra_month_Mar":"Mar","ra_month_Apr":"Apr","ra_month_Mai":"Mai","ra_month_Jun":"Jun","ra_month_Jul":"Jul","ra_month_Aug":"Aug","ra_month_Sep":"Sep","ra_month_Oct":"Oct","ra_month_Nov":"Nov","ra_month_Dec":"Dec","ra_fileType_all":"All files","ra_fileType_images":"Images","ra_fileType_code":"Code/JSON","ra_fileType_txt":"Text","ra_fileType_audio":"Audio","ra_fileType_video,":"Video","ra_Filter files":"Filter files","ra_Please select file...":"Please select file...","ra_License %s":"License %s","ra_License expired on %s":"License expired on %s","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"Serial number (UUID) \\"%s\\" in license is for other device.","ra_License is for version %s, but required version is %s.":"License is for version %s, but required version is %s.","ra_License for other product \\"%s\\"":"License for other product \\"%s\\"","ra_Invalid answer from server":"Invalid answer from server","ra_License does not exist":"License does not exist","ra_Cannot decode license":"Cannot decode license","ra_Serial number (UUID)":"Serial number (UUID)","ra_Check license":"Check license","ra_Request timed out":"Request timed out","ra_Instance is not alive":"Instance is not alive","ra_Show/Hide object descriptions":"Show/Hide object descriptions","ra_Use system settings for position":"Use system settings for position","ra_Longitude":"Longitude","ra_Latitude":"Latitude","ra_Take browser position":"Take position from browser","ra_Take position from system settings":"Take position from system settings","ra_Port is already used by %s":"Port is already used by %s","ra_Port could be used by %s":"Port could be used by %s","ra_filter_customs_without":"without","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use iobroker.acme adapter for letsencrypt certificates","ra_Do not use let\'s encrypt":"Do not use let\'s encrypt","ra_Use all available let\'s encrypt certificates":"Use all available let\'s encrypt certificates","ra_Public certificate":"Public certificate","ra_Private certificate":"Private certificate","ra_Chained certificate":"Chained certificate","ra_Suitable license not found in license manager":"Suitable license not found in license manager","ra_Please enter the license":"Please enter the license","ra_Checked":"Checked","ra_locally":"locally","ra_via internet":"via internet","ra_Yes":"Yes","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"License not found in the license manager. Do you want to update licenses from iobroker.net?","ra_Fallback custom certificates":"Fallback custom certificates","ra_Clone current row":"Clone current row","ra_fileType_video":"Video","ra_select_folder_hint":"To select folder, just hold the key \\"shift\\" by clicking the folder.","ra_Accept license":"Accept license","ra_License agreement":"License agreement","ra_Import from %s":"Import from %s","ra_Export data to %s file":"Export data to %s file","ra_Import data from %s file":"Import data from %s file","ra_No data found in file":"No data found in file","ra_Append or replace?":"Append or replace?","ra_Append %s entries or replace existing?":"Append %s entries or replace existing?","ra_Replace":"Replace","ra_Append":"Append","ra_May not trigger \\"updateLicenses\\"":"May not trigger \\"updateLicenses\\"","ra_Unknown error":"Unknown error","ra_License must be converted":"License must be converted to newer version. You can do it in your iobroker.net profile.","ra_No one license found in license manager":"No one license found in license manager","ra_Please create license":"Please create license","ra_Product":"Product","ra_Version":"Version","ra_ValidTill":"Valid till","ra_Commercial":"Commercial","ra_Not a number":"Not a number","ra_Edit value":"Edit value","ra_Edit ACL":"Edit ACL","ra_Edit role":"Edit role","ra_Edit function":"Edit function","ra_Edit room":"Edit room","ra_Edit alias":"Edit alias","ra_View file":"View file","ra_Del":"Delete","ra_Show all folders":"Show all folders","ra_Restrict to folder":"Restrict to folder","ra_Select type of export":"Select type of export","ra_You can export all objects or just the selected branch.":"You can export all objects or just the selected branch.","ra_Do not export values of states":"Do not export values of states","ra_Selected %s object(s)":"Selected %s object(s)","ra_create_device":"Create device","ra_create_channel":"Create channel","ra_create_state":"Create state","ra_create_string_state":"Create string state","ra_create_number_state":"Create number state","ra_create_boolean_state":"Create boolean state","ra_Select color":"Select color","ra_Cannot read licenses: %s":"Cannot read licenses: %s","ra_Advanced options":"Advanced options"}')},35148:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"Funci\xf3n","ra_filter_id":"ID","ra_filter_name":"Nombre","ra_filter_role":"Papel","ra_filter_room":"Habitaci\xf3n","ra_tooltip_ack":"Bandera reconocida","ra_tooltip_from":"Desde","ra_tooltip_lc":"\xdaltimo cambio","ra_tooltip_quality":"Calidad","ra_tooltip_ts":"Sello de tiempo","ra_tooltip_user":"Usuario","ra_tooltip_value":"Valor","ra_Are you sure?":"\xbfEst\xe1s seguro?","ra_Cancel":"Cancelar","ra_Copied":"Copiado","ra_Copied %s":"Copiado \\"%s\\"","ra_Define functions":"Definir funciones","ra_Define rooms":"Definir habitaciones","ra_Error":"Error","ra_Message":"Mensaje","ra_Ok":"Okay","ra_Please select object ID...":"Por favor seleccione ID de objeto ...","ra_Selected":"Seleccionado","ra_Unknown error!":"\xa1Error desconocido!","ra_Value":"Valor","ra_filter_type":"Tipo","ra_invalidConfig":"Configuraciones inv\xe1lidas","ra_otherConfig":"Configuraciones de otro adaptador %s","ra_tooltip_copyState":"Copie el valor del estado","ra_tooltip_customConfig":"Ajustes personalizados","ra_tooltip_deleteObject":"Eliminar objeto","ra_tooltip_editObject":"Editar objeto","ra_tooltip_editState":"Edite el valor del estado","ra_filter_customs":"Configuraciones","ra_Listen on all IPs":"Escuche en todas las IP","ra_dow_Fr":"Fr","ra_dow_Mo":"Mes","ra_dow_Sa":"Sa","ra_dow_Su":"Su","ra_dow_Th":"Th","ra_Save":"Salvar","ra_Save and close":"Guardar y cerrar","ra_Close":"Cerca","ra_Auto (no custom columns)":"Autom\xe1tico (sin columnas personalizadas)","ra_Transparent dialog":"Di\xe1logo transparente","ra_Width":"Anchura","ra_val":"Valor","ra_buttons":"Botones","ra_Configure visible columns":"Configurar columnas visibles","ra_Cannot update attribute, because not found in the object":"No se puede actualizar el atributo porque no se encuentra en el objeto","ra_Edit object field":"Editar campo de objeto","ra_Hide empty folders":"Ocultar carpetas vac\xedas","ra_Reload files":"Recargar archivos","ra_Create folder":"Crear carpeta","ra_Upload file":"Subir archivo","ra_User files":"Archivos de usuario","ra_Confirm deletion of %s":"Confirmar la eliminaci\xf3n de %s","ra_Delete (no confirm for 5 mins)":"Eliminar (sin confirmar durante 5 minutos)","ra_Delete":"Eliminar","ra_Toggle expert mode":"Alternar modo experto","ra_Toggle view mode":"Alternar modo de vista","ra_Root":"Ra\xedz","ra_Back to %s":"Volver a %s","ra_Place your files here or click here to open the browse dialog":"Coloque sus archivos aqu\xed o haga clic aqu\xed para abrir el cuadro de di\xe1logo de exploraci\xf3n","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si no se crear\xe1 ning\xfan archivo en la carpeta, desaparecer\xe1 despu\xe9s de que se cierre el navegador.","ra_Folder name":"Nombre de la carpeta","ra_Create new folder in %s":"Crear nueva carpeta en %s","ra_Duplicate name":"Nombre duplicado","ra_Invalid parent folder!":"Carpeta principal no v\xe1lida.","ra_Drop file here":"Suelta el archivo aqu\xed","ra_Suppress question for next %s minutes":"Suprimir pregunta durante los pr\xf3ximos %s minutos","ra_Clear filter":"Filtro claro","ra_Update":"Actualizar","ra_Load configuration from file":"Cargar configuraci\xf3n desde archivo","ra_Save configuration to file":"Guardar configuraci\xf3n en archivo","sc_cron":"CRON","sc_date":"Fecha","sc_dates":"fechas","sc_dows":"D\xeda de la semana","sc_every":"Cada","sc_everyN_dates":"cada N d\xedas","sc_everyN_dows":"cada N d\xeda de la semana","sc_everyN_hours":"cada N horas","sc_everyN_minutes":"cada N minutos","sc_everyN_months":"cada N meses","sc_everyN_seconds":"cada N segundos","sc_every_dates":"cada d\xeda","sc_every_dows":"Cada d\xeda de la semana","sc_every_hours":"cada hora","sc_every_minutes":"cada minuto","sc_every_months":"cada mes","sc_every_seconds":"cada segundo","sc_from":"De","sc_hours":"Horas","sc_interval":"Intervalo","sc_intervalBetween":"Intervalo entre","sc_minutes":"Minutos","sc_months":"meses","sc_once":"Una vez","sc_period":"Per\xedodo","sc_seconds":"Segundos","sc_simple":"Sencillo","sc_specific":"Tiempo espec\xedfico","sc_specific_dates":"fechas especificas","sc_specific_dows":"d\xeda espec\xedfico de semanas","sc_specific_hours":"horas espec\xedficas","sc_specific_minutes":"minutos espec\xedficos","sc_specific_months":"meses espec\xedficos","sc_specific_seconds":"segundos espec\xedficos","sc_time":"Hora","sc_to":"A","sc_wizard":"Mago","sch_all":"todas","sch_astroDay":"D\xeda astro","sch_astroNight":"Noche astro","sch_astro_dawn":"Amanecer","sch_astro_dusk":"Oscuridad","sch_astro_goldenHour":"hora dorada","sch_astro_goldenHourEnd":"Fin de la hora dorada","sch_astro_nadir":"Nadir","sch_astro_nauticalDawn":"Amanecer n\xe1utico","sch_astro_nauticalDusk":"Anochecer n\xe1utico","sch_astro_night":"Noche","sch_astro_nightEnd":"Fin de la noche","sch_astro_solarNoon":"Mediod\xeda solar","sch_astro_sunrise":"amanecer","sch_astro_sunriseEnd":"Fin del amanecer","sch_astro_sunset":"Puesta de sol","sch_astro_sunsetStart":"Puesta de sol","sch_at":"a","sch_desc_atTime":"en %s","sch_desc_everyDay":"cada d\xeda","sch_desc_everyHour":"cada hora","sch_desc_everyMinute":"cada minuto","sch_desc_everyMonth":"cada mes","sch_desc_everyNDay":"cada %s d\xedas","sch_desc_everyNHours":"cada %s horas","sch_desc_everyNMinutes":"cada %s minutos","sch_desc_everyNMonths":"cada %s meses","sch_desc_everyNWeeks":"cada %s semanas","sch_desc_everyNYears":"cada %s a\xf1os","sch_desc_everyWeek":"cada semana","sch_desc_everyYear":"todos los a\xf1os","sch_desc_intervalFromTo":"de %s a %s","sch_desc_never":"Nunca","sch_desc_onDate":"en %s de %s","sch_desc_onDates":"en %s y %s de","sch_desc_onEveryDate":"en cada fecha de","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s y %s","sch_desc_onWeekday":"en %s","sch_desc_onWeekdays":"en %s y %s","sch_desc_onWeekends":"en los fines de semana","sch_desc_onWorkdays":"en d\xedas laborables","sch_desc_onceInPast":"ya no se ejecutar\xe1 m\xe1s, porque el inicio est\xe1 en el pasado","sch_desc_once_on":"en %s","sch_desc_validFrom":"de %s","sch_desc_validFromTo":"Ejecutar desde hasta","sch_desc_validTo":"a %s","sch_every":"cada","sch_exactTime":"Tiempo espec\xedfico","sch_from":"de","sch_fromTo":"De-a","sch_intervalTime":"Tiempo de intervalo","sch_invert":"invertir; poner boca abajo o en la posici\xf3n opuesta, orden o arreglo; Boca abajo","sch_no_one":"ninguna","sch_on":"en","sch_period":"Per\xedodo","sch_periodDaily":"Diario","sch_periodDates":"fechas","sch_periodDay":"D\xeda","sch_periodEvery":"Cada","sch_periodEveryDay":"Cada d\xeda","sch_periodEveryMonth":"Cada mes","sch_periodEveryWeek":"Cada semana","sch_periodEveryYear":"Todos los a\xf1os","sch_periodHours":"Horas","sch_periodMinutes":"Minutos","sch_periodMonth":"mes","sch_periodMonthly":"Mensual","sch_periodOnce":"Una vez","sch_periodSpecificMonths":"Meses espec\xedficos","sch_periodWeek":"Semana","sch_periodWeekdays":"D\xedas laborables","sch_periodWeekend":"Fin de semana","sch_periodWeekly":"Semanal","sch_periodWorkdays":"D\xedas laborables","sch_periodYear":"A\xf1o","sch_periodYearly":"Anual","sch_specificTime":"Tiempo espec\xedfico","sch_time":"Hora","sch_to":"a","sch_valid":"V\xe1lido","sch_validFrom":"de","sch_validTo":"a","sch_wholeDay":"Todo el dia","sch_yearEveryMonth":"cada mes","ra_Define schedule...":"Definir horario ...","ra_Repeat":"Repetir","ra_use seconds":"usar segundos","ra_close":"cerrar","ra_dow_Tu":"Tu","ra_Toggle the states view":"Alternar la vista de estados","ra_Add new child object to selected parent":"Agregar nuevo objeto hijo al padre seleccionado","ra_Add objects tree from JSON file":"Agregar \xe1rbol de objetos desde el archivo JSON","ra_Save objects tree as JSON file":"Guardar el \xe1rbol de objetos como archivo JSON","ra_Objects":"Objetos","ra_States":"Estados","ra_object_changed_by_user":"Objeto cambiado por \xfaltima vez a las","ra_object_changed_by":"Objeto cambiado por","ra_state_changed_from":"Objeto cambiado de","ra_state_changed_by":"Estado cambiado por","ra_aclOwner_read_object":"El propietario puede leer el objeto","ra_aclOwner_read_state":"El propietario puede leer el estado","ra_aclOwner_write_object":"El propietario puede escribir el objeto","ra_aclOwner_write_state":"El propietario puede escribir el estado","ra_aclGroup_read_object":"El grupo puede leer el objeto","ra_aclGroup_read_state":"El grupo puede leer el estado","ra_aclGroup_write_object":"El grupo puede escribir un objeto","ra_aclGroup_write_state":"El grupo puede escribir el estado","ra_aclEveryone_read_object":"Todo el mundo puede leer el objeto","ra_aclEveryone_read_state":"Todos pueden leer el estado","ra_aclEveryone_write_object":"Todos pueden escribir objetos","ra_aclEveryone_write_state":"Todos pueden escribir el estado","ra_Folders always first":"Carpetas siempre primero","ra_changedFrom":"Cambiaron desde","ra_qualityCode":"C\xf3digo de calidad","ra_timestamp":"Marca de tiempo","ra_lastChange":"Ultimo cambio","ra_Owner group":"Grupo propietario","ra_Owner user":"Usuario propietario","ra_Create":"Crear","ra_Changed from":"Cambiaron desde","ra_Quality code":"Calidad","ra_Timestamp":"Marca de tiempo","ra_Last change":"Ultimo cambio","ra_Collapse all nodes":"Contraer todos los nodos","ra_Edit custom config":"Editar configuraci\xf3n personalizada","ra_Collapse one step node":"Contraer un nivel","ra_Expand one step node":"Expandir un nivel","ra_Refresh tree":"Actualizar \xe1rbol","ra_Expand all nodes":"Expandir todos los nodos","ra_Deselect all":"Deselecciona todo","ra_Select all":"Seleccionar todo","ra_%s object(s) processed":"%s objeto(s) procesados","ra_Invalid structure":"Estructura inv\xe1lida","ra_%s was imported":"%s fue importado","ra_Failed to open JSON File":"No se pudo abrir el archivo JSON","ra_Only following structures of objects are available:":"Solo est\xe1n disponibles las siguientes estructuras de objetos:","ra_Folder \u2192 State":"Carpeta \u2192 Estado","ra_Folder \u2192 Channel \u2192 State":"Carpeta \u2192 Canal \u2192 Estado","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Carpeta \u2192 Dispositivo \u2192 Canal \u2192 Estado","ra_Device \u2192 Channel \u2192 State":"Dispositivo \u2192 Canal \u2192 Estado","ra_Channel \u2192 State":"Canal \u2192 Estado","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"Los no expertos pueden crear nuevos objetos solo en \\"0_userdata.0\\" o \\"alias.0\\".","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"Los expertos pueden crear objetos en todas partes excepto desde el segundo nivel (por ejemplo, \\"vis.0\\" o \\"javascript.0\\").","ra_expertMode":"Modo experto","ra_On weekdays":"De lunes a viernes","ra_Drop the files here...":"Suelta el archivo aqu\xed ...","ra_Drag \'n\' drop some files here, or click to select files":"Arrastre y suelte algunos archivos aqu\xed, o haga clic para seleccionar archivos","ra_Clear":"Borrar","ra_Clear icon":"Icono claro","ra_none":"ninguno","ra_Select predefined icon":"Seleccionar icono predefinido","ra_Show lines between rows":"Mostrar l\xedneas entre filas","ra_The page you are looking for was not found":"No se encontr\xf3 la p\xe1gina que busca","ra_Good luck":"Buena suerte","ra_Cannot find \\"%s\\"":"No se puede encontrar \\"%s\\"","ra_Cannot read \\"%s\\"":"No se puede leer \\"%s\\"","ra_Background image":"Imagen de fondo","ra_View: %s":"Ver: %s","ra_Copy content":"Copiar contenido","ra_Filter":"Filtrar","ra_All objects":"Todos los objetos","ra_Only selected":"Solo seleccionados","ra_Change color theme":"Cambiar tema de color","ra_daysShortText":"d.","ra_Instance %s is alive":"Instancia %s est\xe1 vivo","ra_Instance %s is not alive":"Instancia %s no est\xe1 vivo","ra_Used system settings":"Configuraciones del sistema usadas","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"No se puede determinar la posici\xf3n: la configuraci\xf3n del sistema est\xe1 vac\xeda y la detecci\xf3n de GPS est\xe1 deshabilitada en el navegador","ra_Define schedule":"Definir horario","ra___different__":"diferente","ra_Please confirm":"Por favor confirmar","ra_JSON editor":"editor JSON","ra_System language":"Lenguaje del sistema","ra_Too small":"Demasiado peque\xf1a","ra_Too big":"Demasiado grande","ra_Passwords are not equal!":"\xa1Las contrase\xf1as no son iguales!","ra_repeat":"repetir","ra_You can filter entries by entering here some text":"Puede filtrar las entradas ingresando aqu\xed alg\xfan texto","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Cannot add items with set filter":"No se pueden agregar elementos con el filtro establecido","ra_Add row":"A\xf1adir fila","ra_Move up":"Ascender","ra_Move down":"Mover hacia abajo","ra_Delete current row":"Eliminar fila actual","ra_All items are filtered out":"Todos los elementos se filtran","ra_Double click to reset table layout":"Haga doble clic para restablecer el dise\xf1o de la tabla","ra_Cannot retrieve options, as instance is offline":"No se pueden recuperar las opciones, ya que la instancia est\xe1 fuera de l\xednea","ra_File is too big. Max %sk allowed. Try use SVG.":"El archivo es demasiado grande. M\xe1ximo de %sk permitido. Intenta usar SVG.","ra_Cannot upload":"no se puede cargar","ra_Crop":"Cultivo","ra_tooltip_comment":"Comentario","ra_Disconnected":"Desconectado","ra_Connected":"Conectado","ra_Configure":"Configurar","ra_Invalid CRON":"CRON no v\xe1lido","ra_Discard":"Desechar","ra_Some data are not stored. Discard?":"Algunos datos no se almacenan. \xbfDesechar?","ra_Filter files":"Filtrar archivos","ra_Please select file...":"Seleccione el archivo...","ra_dow_We":"Nosotros","ra_fileType_all":"Todos los archivos","ra_fileType_audio":"Audio","ra_fileType_code":"C\xf3digo/JSON","ra_fileType_images":"Im\xe1genes","ra_fileType_txt":"Texto","ra_fileType_video,":"Video","ra_month_Apr":"Abr","ra_month_Aug":"Ago","ra_month_Dec":"Dic","ra_month_Feb":"Feb","ra_month_Jan":"Ene","ra_month_Jul":"Jul","ra_month_Jun":"Jun","ra_month_Mai":"Mai","ra_month_Mar":"Mar","ra_month_Nov":"Nov","ra_month_Oct":"Oct","ra_month_Sep":"Sep","ra_months_Apr":"Abr","ra_months_Aug":"Ago","ra_months_Dec":"Dic","ra_months_Feb":"Feb","ra_months_Jan":"Ene","ra_months_Jul":"Jul","ra_months_Jun":"Jun","ra_months_Mai":"Mai","ra_months_Mar":"Mar","ra_months_Nov":"Nov","ra_months_Oct":"Oct","ra_months_Sep":"Sep","ra_Cannot decode license":"No se puede decodificar la licencia","ra_Invalid answer from server":"Respuesta inv\xe1lida del servidor","ra_License %s":"Licencia %s","ra_License does not exist":"La licencia no existe","ra_License expired on %s":"La licencia venci\xf3 el %s","ra_License for other product \\"%s\\"":"Licencia para otro producto \\"%s\\"","ra_License is for version %s, but required version is %s.":"La licencia es para la versi\xf3n %s, pero la versi\xf3n requerida es %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"El n\xfamero de serie (UUID) \\"%s\\" en la licencia es para otro dispositivo.","ra_Serial number (UUID)":"N\xfamero de serie (UUID)","ra_Check license":"Verificar licencia","ra_Request timed out":"Tiempo de espera agotado","ra_Instance is not alive":"La instancia no est\xe1 viva","ra_Show/Hide object descriptions":"Mostrar/ocultar descripciones de objetos","ra_Use system settings for position":"Usar la configuraci\xf3n del sistema para la posici\xf3n","ra_Longitude":"Longitud","ra_Latitude":"Latitud","ra_Take browser position":"Tomar posici\xf3n desde el navegador","ra_Take position from system settings":"Tomar posici\xf3n desde la configuraci\xf3n del sistema","ra_Port is already used by %s":"El puerto ya est\xe1 en uso por %s","ra_Port could be used by %s":"El puerto podr\xeda ser utilizado por %s","ra_filter_customs_without":"sin","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use el adaptador iobroker.acme para los certificados de letsencrypt","ra_Do not use let\'s encrypt":"No use vamos a cifrar","ra_Use all available let\'s encrypt certificates":"Utilice todos los certificados let\'s encrypt disponibles","ra_Public certificate":"Certificado p\xfablico","ra_Private certificate":"certificado privado","ra_Chained certificate":"certificado encadenado","ra_Suitable license not found in license manager":"Licencia adecuada no encontrada en el administrador de licencias","ra_Please enter the license":"Por favor ingrese la licencia","ra_Checked":"Comprobado","ra_locally":"en la zona","ra_via internet":"v\xeda Internet","ra_Yes":"S\xed","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licencia no encontrada en el administrador de licencias. \xbfQuieres actualizar las licencias de iobroker.net?","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_Clone current row":"Clonar fila actual","ra_fileType_video":"Video","ra_select_folder_hint":"Para seleccionar la carpeta, simplemente mantenga presionada la tecla \\"shift\\" haciendo clic en la carpeta.","ra_Accept license":"Aceptar licencia","ra_License agreement":"Acuerdo de licencia","ra_Import from %s":"Importar desde %s","ra_Export data to %s file":"Exportar datos al archivo %s","ra_Import data from %s file":"Importar datos del archivo %s","ra_No data found in file":"No se encontraron datos en el archivo","ra_Append or replace?":"\xbfAgregar o reemplazar?","ra_Append %s entries or replace existing?":"\xbfAgregar %s entradas o reemplazar las existentes?","ra_Replace":"Reemplazar","ra_Append":"Adjuntar","ra_May not trigger \\"updateLicenses\\"":"No puede activar \\"updateLicenses\\"","ra_Unknown error":"Error desconocido","ra_License must be converted":"La licencia debe convertirse a una versi\xf3n m\xe1s reciente. Puedes hacerlo en tu perfil de iobroker.net.","ra_No one license found in license manager":"No se encontr\xf3 ninguna licencia en el administrador de licencias","ra_Please create license":"Por favor cree una licencia","ra_Product":"Producto","ra_Version":"Versi\xf3n","ra_ValidTill":"V\xe1lida hasta","ra_Commercial":"Comercial","ra_Not a number":"No un n\xfamero","ra_Edit value":"Editar valor","ra_Edit ACL":"Editar LCA","ra_Edit role":"Editar rol","ra_Edit function":"Funci\xf3n de edici\xf3n","ra_Edit room":"Cuarto de edici\xf3n","ra_Edit alias":"Editar alias","ra_View file":"Ver archivo","ra_Del":"Delete","ra_Show all folders":"Mostrar todas las carpetas","ra_Restrict to folder":"Restringir a carpeta","ra_Select type of export":"Seleccione tipo de exportaci\xf3n","ra_You can export all objects or just the selected branch.":"Puede exportar todos los objetos o solo la rama seleccionada.","ra_Do not export values of states":"No exportar valores de estados.","ra_Selected %s object(s)":"%s objetos seleccionados","ra_create_device":"Crear dispositivo","ra_create_channel":"Crear canal","ra_create_state":"Crear estado","ra_create_string_state":"Crear estado de cadena","ra_create_number_state":"Crear estado num\xe9rico","ra_create_boolean_state":"Crear estado booleano","ra_Select color":"Seleccionar el color","ra_Cannot read licenses: %s":"No se pueden leer licencias: %s","ra_Advanced options":"Opciones avanzadas"}')},94176:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"Une fonction","ra_filter_id":"ID","ra_filter_name":"Pr\xe9nom","ra_filter_role":"R\xf4le","ra_filter_room":"Pi\xe8ce","ra_tooltip_ack":"Drapeau reconnu","ra_tooltip_from":"De","ra_tooltip_lc":"Derni\xe8re modification","ra_tooltip_quality":"Qualit\xe9","ra_tooltip_ts":"Horodatage","ra_tooltip_user":"Utilisateur","ra_tooltip_value":"Valeur","ra_Are you sure?":"\xcates-vous s\xfbr?","ra_Cancel":"Annuler","ra_Copied":"Copi\xe9","ra_Copied %s":"\\"%s\\" copi\xe9","ra_Define functions":"D\xe9finir des fonctions","ra_Define rooms":"D\xe9finir des pi\xe8ces","ra_Error":"Erreur","ra_Message":"Message","ra_Ok":"D\'accord","ra_Please select object ID...":"Veuillez s\xe9lectionner l\'ID d\'objet ...","ra_Selected":"Choisi","ra_Unknown error!":"Erreur inconnue!","ra_Value":"Valeur","ra_filter_type":"Type","ra_invalidConfig":"Param\xe8tres invalides","ra_otherConfig":"Param\xe8tres d\'un autre adaptateur %s","ra_tooltip_copyState":"Copiez la valeur d\'\xe9tat","ra_tooltip_customConfig":"Param\xe8tres personnalis\xe9s","ra_tooltip_deleteObject":"Supprimer un objet","ra_tooltip_editObject":"Modifier l\'objet","ra_tooltip_editState":"Modifier la valeur d\'\xe9tat","ra_filter_customs":"Param\xe8tres","ra_Listen on all IPs":"\xc9coutez sur toutes les adresses IP","ra_dow_Fr":"Fr","ra_dow_Mo":"Mo","ra_dow_Sa":"Sa","ra_dow_Su":"Su","ra_dow_Th":"Th","ra_Save":"sauver","ra_Save and close":"Sauver et fermer","ra_Close":"Fermer","ra_Auto (no custom columns)":"Auto (pas de colonnes personnalis\xe9es)","ra_Transparent dialog":"Dialogue transparent","ra_Width":"Largeur","ra_val":"Valeur","ra_buttons":"Boutons","ra_Configure visible columns":"Configurer les colonnes visibles","ra_Cannot update attribute, because not found in the object":"Impossible de mettre \xe0 jour l\'attribut, car il est introuvable dans l\'objet","ra_Edit object field":"Modifier le champ d\'objet","ra_Hide empty folders":"Masquer les dossiers vides","ra_Reload files":"Recharger les fichiers","ra_Create folder":"Cr\xe9er le dossier","ra_Upload file":"T\xe9l\xe9verser un fichier","ra_User files":"Fichiers utilisateurs","ra_Confirm deletion of %s":"Confirmer la suppression de %s","ra_Delete (no confirm for 5 mins)":"Supprimer (pas de confirmation pendant 5 minutes)","ra_Delete":"Supprimer","ra_Toggle expert mode":"Basculer en mode expert","ra_Toggle view mode":"Basculer le mode d\'affichage","ra_Root":"Racine","ra_Back to %s":"Retour \xe0 %s","ra_Place your files here or click here to open the browse dialog":"Placez vos fichiers ici ou cliquez ici pour ouvrir la bo\xeete de dialogue de navigation","ra_If no file will be created in the folder, it will disappear after the browser closed":"Si aucun fichier ne sera cr\xe9\xe9 dans le dossier, il dispara\xeetra apr\xe8s la fermeture du navigateur","ra_Folder name":"Nom de dossier","ra_Create new folder in %s":"Cr\xe9er un nouveau dossier dans %s","ra_Duplicate name":"Nom en double","ra_Invalid parent folder!":"Dossier parent non valide!","ra_Drop file here":"D\xe9poser le fichier ici","ra_Suppress question for next %s minutes":"Supprimer la question pour les %s prochaines minutes","ra_Clear filter":"Effacer le filtre","ra_Update":"Mise \xe0 jour","ra_Load configuration from file":"Charger la configuration \xe0 partir du fichier","ra_Save configuration to file":"Enregistrer la configuration dans un fichier","sc_cron":"CRON","sc_date":"Date","sc_dates":"Rendez-vous","sc_dows":"Jour de la semaine","sc_every":"Chaque","sc_everyN_dates":"tous les N jours","sc_everyN_dows":"tous les N jours de la semaine","sc_everyN_hours":"toutes les N heures","sc_everyN_minutes":"toutes les N minutes","sc_everyN_months":"tous les N mois","sc_everyN_seconds":"toutes les N secondes","sc_every_dates":"tous les jours","sc_every_dows":"Chaque jour de la semaine","sc_every_hours":"Toutes les heures","sc_every_minutes":"chaque minute","sc_every_months":"chaque mois","sc_every_seconds":"chaque seconde","sc_from":"De","sc_hours":"Heures","sc_interval":"Intervalle","sc_intervalBetween":"Intervalle entre","sc_minutes":"Minutes","sc_months":"mois","sc_once":"Une fois que","sc_period":"P\xe9riode","sc_seconds":"Secondes","sc_simple":"Facile","sc_specific":"Temps sp\xe9cifique","sc_specific_dates":"dates sp\xe9cifiques","sc_specific_dows":"jour sp\xe9cifique de semaines","sc_specific_hours":"heures sp\xe9cifiques","sc_specific_minutes":"minutes sp\xe9cifiques","sc_specific_months":"mois sp\xe9cifiques","sc_specific_seconds":"secondes sp\xe9cifiques","sc_time":"Temps","sc_to":"\xc0","sc_wizard":"sorcier","sch_all":"tout","sch_astroDay":"Journ\xe9e astronomique","sch_astroNight":"Nuit astronomique","sch_astro_dawn":"Aube","sch_astro_dusk":"Cr\xe9puscule","sch_astro_goldenHour":"Heure d\'or","sch_astro_goldenHourEnd":"Fin de l\'heure d\'or","sch_astro_nadir":"Nadir","sch_astro_nauticalDawn":"Aube nautique","sch_astro_nauticalDusk":"Cr\xe9puscule nautique","sch_astro_night":"Nuit","sch_astro_nightEnd":"Fin de nuit","sch_astro_solarNoon":"Midi solaire","sch_astro_sunrise":"lever du soleil","sch_astro_sunriseEnd":"Fin du lever du soleil","sch_astro_sunset":"Le coucher du soleil","sch_astro_sunsetStart":"Coucher du soleil","sch_at":"\xe0","sch_desc_atTime":"\xe0 %s","sch_desc_everyDay":"tous les jours","sch_desc_everyHour":"Toutes les heures","sch_desc_everyMinute":"chaque minute","sch_desc_everyMonth":"chaque mois","sch_desc_everyNDay":"chaque %s jour","sch_desc_everyNHours":"chaque %s heures","sch_desc_everyNMinutes":"toutes les %s minutes","sch_desc_everyNMonths":"tous les %s mois","sch_desc_everyNWeeks":"chaque %s semaines","sch_desc_everyNYears":"tous les %s ans","sch_desc_everyWeek":"toutes les semaines","sch_desc_everyYear":"chaque ann\xe9e","sch_desc_intervalFromTo":"de %s \xe0 %s","sch_desc_never":"jamais","sch_desc_onDate":"sur %s de %s","sch_desc_onDates":"sur %s et %s de","sch_desc_onEveryDate":"\xe0 chaque date de","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s et %s","sch_desc_onWeekday":"sur %s","sch_desc_onWeekdays":"sur %s et %s","sch_desc_onWeekends":"les weekends","sch_desc_onWorkdays":"les jours ouvrables","sch_desc_onceInPast":"ne sera plus ex\xe9cut\xe9, car start est dans le pass\xe9","sch_desc_once_on":"sur %s","sch_desc_validFrom":"de %s","sch_desc_validFromTo":"Ex\xe9cuter de \xe0","sch_desc_validTo":"\xe0 %s","sch_every":"chaque","sch_exactTime":"Temps sp\xe9cifique","sch_from":"de","sch_fromTo":"De \xe0","sch_intervalTime":"Temps d\'interval","sch_invert":"inverser","sch_no_one":"aucun","sch_on":"sur","sch_period":"P\xe9riode","sch_periodDaily":"du quotidien","sch_periodDates":"Rendez-vous","sch_periodDay":"journ\xe9e","sch_periodEvery":"Chaque","sch_periodEveryDay":"Tous les jours","sch_periodEveryMonth":"Chaque mois","sch_periodEveryWeek":"Toutes les semaines","sch_periodEveryYear":"Chaque ann\xe9e","sch_periodHours":"Heures","sch_periodMinutes":"Minutes","sch_periodMonth":"mois","sch_periodMonthly":"Mensuel","sch_periodOnce":"Une fois que","sch_periodSpecificMonths":"Mois sp\xe9cifiques","sch_periodWeek":"La semaine","sch_periodWeekdays":"Jours de la semaine","sch_periodWeekend":"Weekend","sch_periodWeekly":"Hebdomadaire","sch_periodWorkdays":"Jours ouvrables","sch_periodYear":"Ann\xe9e","sch_periodYearly":"Annuel","sch_specificTime":"Temps sp\xe9cifique","sch_time":"Temps","sch_to":"\xe0","sch_valid":"Valide","sch_validFrom":"de","sch_validTo":"\xe0","sch_wholeDay":"Toute la journ\xe9e","sch_yearEveryMonth":"chaque mois","ra_Define schedule...":"D\xe9finir le calendrier ...","ra_Repeat":"R\xe9p\xe9ter","ra_use seconds":"utiliser les secondes","ra_close":"Fermer","ra_dow_Tu":"Tu","ra_Toggle the states view":"Basculer la vue des \xe9tats","ra_Add new child object to selected parent":"Ajouter un nouvel objet enfant au parent s\xe9lectionn\xe9","ra_Add objects tree from JSON file":"Ajouter une arborescence d\'objets \xe0 partir d\'un fichier JSON","ra_Save objects tree as JSON file":"Enregistrer l\'arborescence des objets en tant que fichier JSON","ra_Objects":"Objets","ra_States":"\xc9tats","ra_object_changed_by_user":"Objet modifi\xe9 pour la derni\xe8re fois \xe0","ra_object_changed_by":"Objet modifi\xe9 par","ra_state_changed_from":"Objet chang\xe9 de","ra_state_changed_by":"\xc9tat modifi\xe9 par","ra_aclOwner_read_object":"Le propri\xe9taire peut lire l\'objet","ra_aclOwner_read_state":"Le propri\xe9taire peut lire l\'\xe9tat","ra_aclOwner_write_object":"Le propri\xe9taire peut \xe9crire un objet","ra_aclOwner_write_state":"Le propri\xe9taire peut \xe9crire l\'\xe9tat","ra_aclGroup_read_object":"Le groupe peut lire l\'objet","ra_aclGroup_read_state":"Le groupe peut lire l\'\xe9tat","ra_aclGroup_write_object":"Le groupe peut \xe9crire un objet","ra_aclGroup_write_state":"Le groupe peut \xe9crire l\'\xe9tat","ra_aclEveryone_read_object":"Tout le monde peut lire un objet","ra_aclEveryone_read_state":"Tout le monde peut lire l\'\xe9tat","ra_aclEveryone_write_object":"Tout le monde peut \xe9crire un objet","ra_aclEveryone_write_state":"Tout le monde peut \xe9crire l\'\xe9tat","ra_Folders always first":"Les dossiers toujours en premier","ra_changedFrom":"Chang\xe9 de","ra_qualityCode":"Code de qualit\xe9","ra_timestamp":"Horodatage","ra_lastChange":"Dernier changement","ra_Owner group":"Groupe propri\xe9taire","ra_Owner user":"Utilisateur propri\xe9taire","ra_Create":"Cr\xe9er","ra_Changed from":"Chang\xe9 de","ra_Quality code":"Qualit\xe9","ra_Timestamp":"Horodatage","ra_Last change":"Dernier changement","ra_Collapse all nodes":"R\xe9duire tous les n\u0153uds","ra_Edit custom config":"Modifier la configuration personnalis\xe9e","ra_Collapse one step node":"R\xe9duire d\'un niveau","ra_Expand one step node":"D\xe9velopper un niveau","ra_Refresh tree":"Rafra\xeechir l\'arborescence","ra_Expand all nodes":"D\xe9velopper tous les n\u0153uds","ra_Deselect all":"Tout d\xe9selectionner","ra_Select all":"Tout s\xe9lectionner","ra_%s object(s) processed":"%s objet(s) trait\xe9(s)","ra_Invalid structure":"Structure invalide","ra_%s was imported":"%s a \xe9t\xe9 import\xe9","ra_Failed to open JSON File":"\xc9chec de l\'ouverture du fichier JSON","ra_Only following structures of objects are available:":"Seules les structures d\'objets suivantes sont disponibles:","ra_Folder \u2192 State":"Dossier \u2192 \xc9tat","ra_Folder \u2192 Channel \u2192 State":"Dossier \u2192 Cha\xeene \u2192 \xc9tat","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Dossier \u2192 Appareil \u2192 Canal \u2192 \xc9tat","ra_Device \u2192 Channel \u2192 State":"Appareil \u2192 Canal \u2192 \xc9tat","ra_Channel \u2192 State":"Canal \u2192 \xc9tat","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"Les non-experts ne peuvent cr\xe9er de nouveaux objets que dans \\"0_userdata.0\\" ou \\"alias.0\\".","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"Les experts peuvent cr\xe9er des objets partout mais \xe0 partir du deuxi\xe8me niveau (par exemple \\"vis.0\\" ou \\"javascript.0\\").","ra_expertMode":"Mode expert","ra_On weekdays":"En semaine","ra_Drop the files here...":"D\xe9posez le fichier ici...","ra_Drag \'n\' drop some files here, or click to select files":"Glissez-d\xe9posez des fichiers ici, ou cliquez pour s\xe9lectionner des fichiers","ra_Clear":"Effacer","ra_Clear icon":"Effacer l\'ic\xf4ne","ra_none":"rien","ra_Select predefined icon":"S\xe9lectionnez l\'ic\xf4ne pr\xe9d\xe9finie","ra_Show lines between rows":"Afficher les lignes entre les lignes","ra_The page you are looking for was not found":"La page que vous recherchez n\'a pas \xe9t\xe9 trouv\xe9e","ra_Good luck":"Bonne chance","ra_Cannot find \\"%s\\"":"Impossible de trouver \\"%s\\"","ra_Cannot read \\"%s\\"":"Impossible de lire \\"%s\\"","ra_Background image":"Image de fond","ra_View: %s":"Affichage : %s","ra_Copy content":"Copier le contenu","ra_Filter":"Filtre","ra_All objects":"Tous les objets","ra_Only selected":"Uniquement s\xe9lectionn\xe9","ra_Change color theme":"Changer le th\xe8me de couleur","ra_daysShortText":"j.","ra_Instance %s is alive":"L\'instance %s est active","ra_Instance %s is not alive":"L\'instance %s n\'est pas active","ra_Used system settings":"Param\xe8tres syst\xe8me utilis\xe9s","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossible de d\xe9terminer la position\xa0: les param\xe8tres syst\xe8me sont vides et la d\xe9tection GPS est d\xe9sactiv\xe9e dans le navigateur","ra_Define schedule":"D\xe9finir le calendrier","ra___different__":"diff\xe9rent","ra_Please confirm":"Veuillez confirmer","ra_JSON editor":"\xc9diteur JSON","ra_System language":"Langue du syst\xe8me","ra_Too small":"Trop petit","ra_Too big":"Trop grand","ra_Passwords are not equal!":"Les mots de passe ne sont pas \xe9gaux !","ra_repeat":"r\xe9p\xe9ter","ra_You can filter entries by entering here some text":"Vous pouvez filtrer les entr\xe9es en saisissant ici du texte","ra_Show/hide filter input":"Afficher/masquer l\'entr\xe9e de filtre","ra_Cannot add items with set filter":"Impossible d\'ajouter des \xe9l\xe9ments avec le filtre d\xe9fini","ra_Add row":"Ajouter une rang\xe9e","ra_Move up":"D\xe9placer vers le haut","ra_Move down":"Descendre","ra_Delete current row":"Supprimer la ligne actuelle","ra_All items are filtered out":"Tous les \xe9l\xe9ments sont filtr\xe9s","ra_Double click to reset table layout":"Double-cliquez pour r\xe9initialiser la disposition du tableau","ra_Cannot retrieve options, as instance is offline":"Impossible de r\xe9cup\xe9rer les options, car l\'instance est hors ligne","ra_File is too big. Max %sk allowed. Try use SVG.":"Le fichier est trop volumineux. Max %sk autoris\xe9. Essayez d\'utiliser SVG.","ra_Cannot upload":"Impossible de t\xe9l\xe9charger","ra_Crop":"Recadrer","ra_tooltip_comment":"Commentaire","ra_Disconnected":"D\xe9branch\xe9","ra_Connected":"Li\xe9","ra_Configure":"Configurer","ra_Invalid CRON":"CRON invalide","ra_Discard":"Jeter","ra_Some data are not stored. Discard?":"Certaines donn\xe9es ne sont pas stock\xe9es. Jeter?","ra_Filter files":"Filtrer les fichiers","ra_Please select file...":"Veuillez s\xe9lectionner le fichier...","ra_dow_We":"Nous","ra_fileType_all":"Tous les fichiers","ra_fileType_audio":"l\'audio","ra_fileType_code":"Code/JSON","ra_fileType_images":"Images","ra_fileType_txt":"Texte","ra_fileType_video,":"Vid\xe9o","ra_month_Apr":"Avr","ra_month_Aug":"Ao\xfbt","ra_month_Dec":"D\xe9c","ra_month_Feb":"F\xe9v","ra_month_Jan":"Jan","ra_month_Jul":"Juil","ra_month_Jun":"Juin","ra_month_Mai":"Mai","ra_month_Mar":"Mar","ra_month_Nov":"Nov","ra_month_Oct":"Oct","ra_month_Sep":"Sep","ra_months_Apr":"Avr","ra_months_Aug":"Ao\xfbt","ra_months_Dec":"D\xe9c","ra_months_Feb":"F\xe9v","ra_months_Jan":"Jan","ra_months_Jul":"Juil","ra_months_Jun":"Juin","ra_months_Mai":"Mai","ra_months_Mar":"Mar","ra_months_Nov":"Nov","ra_months_Oct":"Oct","ra_months_Sep":"Sep","ra_Cannot decode license":"Impossible de d\xe9coder la licence","ra_Invalid answer from server":"R\xe9ponse invalide du serveur","ra_License %s":"Licence %s","ra_License does not exist":"La licence n\'existe pas","ra_License expired on %s":"Licence expir\xe9e le %s","ra_License for other product \\"%s\\"":"Licence pour un autre produit \\"%s\\"","ra_License is for version %s, but required version is %s.":"La licence est pour la version %s, mais la version requise est %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"Le num\xe9ro de s\xe9rie (UUID) \\"%s\\" dans la licence est pour un autre appareil.","ra_Serial number (UUID)":"Num\xe9ro de s\xe9rie (UUID)","ra_Check license":"V\xe9rifier la licence","ra_Request timed out":"La demande a expir\xe9","ra_Instance is not alive":"L\'instance n\'est pas active","ra_Show/Hide object descriptions":"Afficher/Masquer les descriptions d\'objets","ra_Use system settings for position":"Utiliser les param\xe8tres syst\xe8me pour la position","ra_Longitude":"Longitude","ra_Latitude":"Latitude","ra_Take browser position":"Prendre position depuis le navigateur","ra_Take position from system settings":"Prendre position \xe0 partir des param\xe8tres syst\xe8me","ra_Port is already used by %s":"Le port est d\xe9j\xe0 utilis\xe9 par %s","ra_Port could be used by %s":"Le port pourrait \xeatre utilis\xe9 par %s","ra_filter_customs_without":"sans","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utiliser l\'adaptateur iobroker.acme pour les certificats Letsencrypt","ra_Do not use let\'s encrypt":"Ne pas utiliser let\'s encrypt","ra_Use all available let\'s encrypt certificates":"Utilisez tous les certificats let\'s encrypt disponibles","ra_Public certificate":"Certificat public","ra_Private certificate":"Certificat priv\xe9","ra_Chained certificate":"Certificat cha\xeen\xe9","ra_Suitable license not found in license manager":"Licence appropri\xe9e introuvable dans le gestionnaire de licences","ra_Please enter the license":"Veuillez entrer la licence","ra_Checked":"V\xe9rifi\xe9","ra_locally":"localement","ra_via internet":"par Internet","ra_Yes":"Oui","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licence introuvable dans le gestionnaire de licences. Voulez-vous mettre \xe0 jour les licences depuis iobroker.net\xa0?","ra_Fallback custom certificates":"Certificats personnalis\xe9s de secours","ra_Clone current row":"Cloner la ligne actuelle","ra_fileType_video":"Vid\xe9o","ra_select_folder_hint":"Pour s\xe9lectionner un dossier, maintenez simplement la touche \\"shift\\" enfonc\xe9e en cliquant sur le dossier.","ra_Accept license":"Accepter la licence","ra_License agreement":"Accord de licence","ra_Import from %s":"Importer depuis %s","ra_Export data to %s file":"Exporter les donn\xe9es vers le fichier %s","ra_Import data from %s file":"Importer des donn\xe9es \xe0 partir du fichier %s","ra_No data found in file":"Aucune donn\xe9e trouv\xe9e dans le fichier","ra_Append or replace?":"Ajouter ou remplacer\xa0?","ra_Append %s entries or replace existing?":"Ajouter %s entr\xe9es ou remplacer l\'existant\xa0?","ra_Replace":"Remplacer","ra_Append":"Ajouter","ra_May not trigger \\"updateLicenses\\"":"Peut ne pas d\xe9clencher \\"updateLicences\\"","ra_Unknown error":"Erreur inconnue","ra_License must be converted":"La licence doit \xeatre convertie en une version plus r\xe9cente. Vous pouvez le faire dans votre profil iobroker.net.","ra_No one license found in license manager":"Aucune licence trouv\xe9e dans le gestionnaire de licences","ra_Please create license":"Veuillez cr\xe9er une licence","ra_Product":"Produit","ra_Version":"Version","ra_ValidTill":"Valable jusqu\'au","ra_Commercial":"Commercial","ra_Not a number":"Pas un num\xe9ro","ra_Edit value":"Modifier la valeur","ra_Edit ACL":"Modifier la LCA","ra_Edit role":"Modifier le r\xf4le","ra_Edit function":"Fonction d\'\xe9dition","ra_Edit room":"Modifier la salle","ra_Edit alias":"Modifier l\'alias","ra_View file":"Voir la fiche","ra_Del":"Delete","ra_Show all folders":"Afficher tous les dossiers","ra_Restrict to folder":"Restreindre au dossier","ra_Select type of export":"S\xe9lectionnez le type d\'exportation","ra_You can export all objects or just the selected branch.":"Vous pouvez exporter tous les objets ou uniquement la branche s\xe9lectionn\xe9e.","ra_Do not export values of states":"Ne pas exporter les valeurs des \xe9tats","ra_Selected %s object(s)":"Objet(s) %s s\xe9lectionn\xe9(s)","ra_create_device":"Cr\xe9er un appareil","ra_create_channel":"Cr\xe9er une cha\xeene","ra_create_state":"Cr\xe9er un \xe9tat","ra_create_string_state":"Cr\xe9er un \xe9tat de cha\xeene","ra_create_number_state":"Cr\xe9er un \xe9tat de num\xe9ro","ra_create_boolean_state":"Cr\xe9er un \xe9tat bool\xe9en","ra_Select color":"Choisissez la couleur","ra_Cannot read licenses: %s":"Impossible de lire les licences\xa0: %s","ra_Advanced options":"Options avanc\xe9es"}')},67801:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"Funzione","ra_filter_id":"ID","ra_filter_name":"Nome","ra_filter_role":"Ruolo","ra_filter_room":"Camera","ra_tooltip_ack":"Bandiera riconosciuta","ra_tooltip_from":"A partire dal","ra_tooltip_lc":"Ultima modifica","ra_tooltip_quality":"Qualit\xe0","ra_tooltip_ts":"Data e ora","ra_tooltip_user":"Utente","ra_tooltip_value":"Valore","ra_Are you sure?":"Sei sicuro?","ra_Cancel":"Annulla","ra_Copied":"Copiato","ra_Copied %s":"\\"%s\\" copiato","ra_Define functions":"Definire le funzioni","ra_Define rooms":"Definisci le stanze","ra_Error":"Errore","ra_Message":"Messaggio","ra_Ok":"Ok","ra_Please select object ID...":"Seleziona l\'ID oggetto ...","ra_Selected":"Selezionato","ra_Unknown error!":"Errore sconosciuto!","ra_Value":"Valore","ra_filter_type":"genere","ra_invalidConfig":"Impostazioni non valide","ra_otherConfig":"Impostazioni dall\'altro adattatore %s","ra_tooltip_copyState":"Copia il valore dello stato","ra_tooltip_customConfig":"Impostazioni personalizzate","ra_tooltip_deleteObject":"Elimina oggetto","ra_tooltip_editObject":"Modifica oggetto","ra_tooltip_editState":"Modifica il valore dello stato","ra_filter_customs":"impostazioni","ra_Listen on all IPs":"Ascolta su tutti gli IP","ra_dow_Fr":"fr","ra_dow_Mo":"momento","ra_dow_Sa":"Sa","ra_dow_Su":"su","ra_dow_Th":"th","ra_Save":"Salva","ra_Save and close":"Salva e chiudi","ra_Close":"Vicino","ra_Auto (no custom columns)":"Auto (nessuna colonna personalizzata)","ra_Transparent dialog":"Finestra di dialogo trasparente","ra_Width":"Larghezza","ra_val":"Valore","ra_buttons":"Bottoni","ra_Configure visible columns":"Configura colonne visibili","ra_Cannot update attribute, because not found in the object":"Impossibile aggiornare l\'attributo, perch\xe9 non trovato nell\'oggetto","ra_Edit object field":"Modifica campo oggetto","ra_Hide empty folders":"Nascondi cartelle vuote","ra_Reload files":"Ricarica i file","ra_Create folder":"Creare una cartella","ra_Upload file":"Caricare un file","ra_User files":"File utente","ra_Confirm deletion of %s":"Conferma l\'eliminazione di %s","ra_Delete (no confirm for 5 mins)":"Elimina (nessuna conferma per 5 minuti)","ra_Delete":"Elimina","ra_Toggle expert mode":"Attiva / disattiva la modalit\xe0 esperto","ra_Toggle view mode":"Attiva / disattiva la modalit\xe0 di visualizzazione","ra_Root":"Radice","ra_Back to %s":"Torna a %s","ra_Place your files here or click here to open the browse dialog":"Posiziona i file qui o fai clic qui per aprire la finestra di dialogo Sfoglia","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nessun file verr\xe0 creato nella cartella, scomparir\xe0 dopo la chiusura del browser","ra_Folder name":"Nome della cartella","ra_Create new folder in %s":"Crea nuova cartella in %s","ra_Duplicate name":"Nome duplicato","ra_Invalid parent folder!":"Cartella principale non valida!","ra_Drop file here":"Trascina il file qui","ra_Suppress question for next %s minutes":"Sopprimi la domanda per i prossimi %s minuti","ra_Clear filter":"Filtro pulito","ra_Update":"Aggiornare","ra_Load configuration from file":"Carica la configurazione dal file","ra_Save configuration to file":"Salva la configurazione su file","sc_cron":"CRON","sc_date":"Data","sc_dates":"Date","sc_dows":"Giorno della settimana","sc_every":"Ogni","sc_everyN_dates":"ogni N giorni","sc_everyN_dows":"ogni N giorno della settimana","sc_everyN_hours":"ogni N ore","sc_everyN_minutes":"ogni N minuti","sc_everyN_months":"ogni N mesi","sc_everyN_seconds":"ogni N secondi","sc_every_dates":"ogni giorno","sc_every_dows":"Tutti i giorni della settimana","sc_every_hours":"ogni ora","sc_every_minutes":"ogni minuto","sc_every_months":"ogni mese","sc_every_seconds":"ogni secondo","sc_from":"A partire dal","sc_hours":"Ore","sc_interval":"Intervallo","sc_intervalBetween":"Intervallo tra","sc_minutes":"Minuti","sc_months":"mesi","sc_once":"Una volta","sc_period":"Periodo","sc_seconds":"secondi","sc_simple":"Semplice","sc_specific":"Orario preciso","sc_specific_dates":"date specifiche","sc_specific_dows":"giorno specifico delle settimane","sc_specific_hours":"orari specifici","sc_specific_minutes":"minuti specifici","sc_specific_months":"mesi specifici","sc_specific_seconds":"secondi specifici","sc_time":"Tempo","sc_to":"Per","sc_wizard":"procedura guidata","sch_all":"tutti","sch_astroDay":"Astro day","sch_astroNight":"Astro night","sch_astro_dawn":"Alba","sch_astro_dusk":"Crepuscolo","sch_astro_goldenHour":"Ora d\'oro","sch_astro_goldenHourEnd":"Fine dell\'ora d\'oro","sch_astro_nadir":"Nadir","sch_astro_nauticalDawn":"Alba nautica","sch_astro_nauticalDusk":"Crepuscolo nautico","sch_astro_night":"Notte","sch_astro_nightEnd":"Fine della notte","sch_astro_solarNoon":"Mezzogiorno solare","sch_astro_sunrise":"Alba","sch_astro_sunriseEnd":"Fine dell\'alba","sch_astro_sunset":"Tramonto","sch_astro_sunsetStart":"Inizio del tramonto","sch_at":"a","sch_desc_atTime":"a %s","sch_desc_everyDay":"ogni giorno","sch_desc_everyHour":"ogni ora","sch_desc_everyMinute":"ogni minuto","sch_desc_everyMonth":"ogni mese","sch_desc_everyNDay":"ogni %s giorno","sch_desc_everyNHours":"ogni %s ore","sch_desc_everyNMinutes":"ogni %s minuti","sch_desc_everyNMonths":"ogni %s mesi","sch_desc_everyNWeeks":"ogni %s settimane","sch_desc_everyNYears":"ogni %s anni","sch_desc_everyWeek":"ogni settimana","sch_desc_everyYear":"ogni anno","sch_desc_intervalFromTo":"da %s a %s","sch_desc_never":"mai","sch_desc_onDate":"su %s di %s","sch_desc_onDates":"su %s e %s di","sch_desc_onEveryDate":"in ogni data di","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s e %s","sch_desc_onWeekday":"su %s","sch_desc_onWeekdays":"su %s e %s","sch_desc_onWeekends":"nei finesettimana","sch_desc_onWorkdays":"nei giorni lavorativi","sch_desc_onceInPast":"non verr\xe0 pi\xf9 eseguito, perch\xe9 start \xe8 nel passato","sch_desc_once_on":"su %s","sch_desc_validFrom":"da %s","sch_desc_validFromTo":"Eseguire da a","sch_desc_validTo":"a %s","sch_every":"ogni","sch_exactTime":"Orario preciso","sch_from":"a partire dal","sch_fromTo":"Da A","sch_intervalTime":"Intervallo di tempo","sch_invert":"invertire","sch_no_one":"nessuna","sch_on":"sopra","sch_period":"Periodo","sch_periodDaily":"Quotidiano","sch_periodDates":"Date","sch_periodDay":"Giorno","sch_periodEvery":"Ogni","sch_periodEveryDay":"Ogni giorno","sch_periodEveryMonth":"Ogni mese","sch_periodEveryWeek":"Ogni settimana","sch_periodEveryYear":"Ogni anno","sch_periodHours":"Ore","sch_periodMinutes":"Minuti","sch_periodMonth":"mese","sch_periodMonthly":"Mensile","sch_periodOnce":"Una volta","sch_periodSpecificMonths":"Mesi specifici","sch_periodWeek":"Settimana","sch_periodWeekdays":"Giorni della settimana","sch_periodWeekend":"Fine settimana","sch_periodWeekly":"settimanalmente","sch_periodWorkdays":"giorni feriali","sch_periodYear":"Anno","sch_periodYearly":"Annuale","sch_specificTime":"Orario preciso","sch_time":"Tempo","sch_to":"per","sch_valid":"Valido","sch_validFrom":"a partire dal","sch_validTo":"per","sch_wholeDay":"Giorno intero","sch_yearEveryMonth":"ogni mese","ra_Define schedule...":"Definisci pianificazione ...","ra_Repeat":"Ripetere","ra_use seconds":"usa i secondi","ra_close":"vicino","ra_dow_Tu":"Tu","ra_Toggle the states view":"Attiva o disattiva la visualizzazione degli stati","ra_Add new child object to selected parent":"Aggiungi un nuovo oggetto figlio al genitore selezionato","ra_Add objects tree from JSON file":"Aggiungi l\'albero degli oggetti dal file JSON","ra_Save objects tree as JSON file":"Salva l\'albero degli oggetti come file JSON","ra_Objects":"Oggetti","ra_States":"stati","ra_object_changed_by_user":"L\'oggetto \xe8 stato modificato l\'ultima volta alle","ra_object_changed_by":"Oggetto modificato da","ra_state_changed_from":"Oggetto cambiato da","ra_state_changed_by":"Stato cambiato da","ra_aclOwner_read_object":"Il proprietario pu\xf2 leggere l\'oggetto","ra_aclOwner_read_state":"Il proprietario pu\xf2 leggere lo stato","ra_aclOwner_write_object":"Il proprietario pu\xf2 scrivere l\'oggetto","ra_aclOwner_write_state":"Il proprietario pu\xf2 scrivere lo stato","ra_aclGroup_read_object":"Il gruppo pu\xf2 leggere l\'oggetto","ra_aclGroup_read_state":"Il gruppo pu\xf2 leggere lo stato","ra_aclGroup_write_object":"Il gruppo pu\xf2 scrivere l\'oggetto","ra_aclGroup_write_state":"Il gruppo pu\xf2 scrivere lo stato","ra_aclEveryone_read_object":"Tutti possono leggere gli oggetti","ra_aclEveryone_read_state":"Tutti possono leggere lo stato","ra_aclEveryone_write_object":"Tutti possono scrivere oggetti","ra_aclEveryone_write_state":"Tutti possono scrivere stato","ra_Folders always first":"Le cartelle sono sempre al primo posto","ra_changedFrom":"Cambiato da","ra_qualityCode":"Codice di qualit\xe0","ra_timestamp":"Timestamp","ra_lastChange":"Ultima modifica","ra_Owner group":"Gruppo di proprietari","ra_Owner user":"Utente proprietario","ra_Create":"Creare","ra_Changed from":"Cambiato da","ra_Quality code":"Qualit\xe0","ra_Timestamp":"Timestamp","ra_Last change":"Ultima modifica","ra_Collapse all nodes":"Comprimi tutti i nodi","ra_Edit custom config":"Modifica configurazione personalizzata","ra_Collapse one step node":"Comprimi un livello","ra_Expand one step node":"Espandi un livello","ra_Refresh tree":"Aggiorna l\'albero","ra_Expand all nodes":"Espandi tutti i nodi","ra_Deselect all":"Deseleziona tutto","ra_Select all":"Seleziona tutto","ra_%s object(s) processed":"%s oggetti elaborati","ra_Invalid structure":"Struttura non valida","ra_%s was imported":"%s \xe8 stato importato","ra_Failed to open JSON File":"Impossibile aprire il file JSON","ra_Only following structures of objects are available:":"Sono disponibili solo le seguenti strutture di oggetti:","ra_Folder \u2192 State":"Cartella \u2192 Stato","ra_Folder \u2192 Channel \u2192 State":"Cartella \u2192 Canale \u2192 Stato","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Cartella \u2192 Dispositivo \u2192 Canale \u2192 Stato","ra_Device \u2192 Channel \u2192 State":"Dispositivo \u2192 Canale \u2192 Stato","ra_Channel \u2192 State":"Canale \u2192 Stato","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"I non esperti possono creare nuovi oggetti solo in \\"0_userdata.0\\" o \\"alias.0\\".","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"Gli esperti possono creare oggetti ovunque ma dal secondo livello (es. \\"Vis.0\\" o \\"javascript.0\\").","ra_expertMode":"Modalit\xe0 esperto","ra_On weekdays":"Nei giorni della settimana","ra_Drop the files here...":"Trascina qui il file...","ra_Drag \'n\' drop some files here, or click to select files":"Trascina e rilascia alcuni file qui o fai clic per selezionare i file","ra_Clear":"Elimina","ra_Clear icon":"Cancella icona","ra_none":"nessuna","ra_Select predefined icon":"Seleziona l\'icona predefinita","ra_Show lines between rows":"Mostra linee tra le righe","ra_The page you are looking for was not found":"La pagina che stai cercando non \xe8 stata trovata","ra_Good luck":"Buona fortuna","ra_Cannot find \\"%s\\"":"Impossibile trovare \\"%s\\"","ra_Cannot read \\"%s\\"":"Impossibile leggere \\"%s\\"","ra_Background image":"Immagine di sfondo","ra_View: %s":"Visualizza: %s","ra_Copy content":"Copia contenuto","ra_Filter":"Filtro","ra_All objects":"Tutti gli oggetti","ra_Only selected":"Solo selezionato","ra_Change color theme":"Cambia tema colore","ra_daysShortText":"g.","ra_Instance %s is alive":"Il %s dell\'istanza \xe8 vivo","ra_Instance %s is not alive":"Il TESTO dell\'istanza non \xe8 vivo","ra_Used system settings":"Impostazioni di sistema utilizzate","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Impossibile determinare la posizione: le impostazioni di sistema sono vuote e il rilevamento GPS \xe8 disabilitato nel browser","ra_Define schedule":"Definisci programma","ra___different__":"diverso","ra_Please confirm":"Si prega di confermare","ra_JSON editor":"Editor JSON","ra_System language":"Linguaggio di sistema","ra_Too small":"Troppo piccolo","ra_Too big":"Troppo grande","ra_Passwords are not equal!":"Le password non sono uguali!","ra_repeat":"ripetere","ra_You can filter entries by entering here some text":"Puoi filtrare le voci inserendo qui del testo","ra_Show/hide filter input":"Mostra/nascondi input filtro","ra_Cannot add items with set filter":"Impossibile aggiungere elementi con il filtro impostato","ra_Add row":"Aggiungi riga","ra_Move up":"Andare avanti","ra_Move down":"Abbassati","ra_Delete current row":"Elimina la riga corrente","ra_All items are filtered out":"Tutti gli elementi vengono filtrati","ra_Double click to reset table layout":"Fare doppio clic per ripristinare il layout della tabella","ra_Cannot retrieve options, as instance is offline":"Impossibile recuperare le opzioni, poich\xe9 l\'istanza \xe8 offline","ra_File is too big. Max %sk allowed. Try use SVG.":"Il file \xe8 troppo grande. Max %sk consentito. Prova a usare SVG.","ra_Cannot upload":"Impossibile caricare","ra_Crop":"Raccolto","ra_tooltip_comment":"Commento","ra_Disconnected":"Disconnesso","ra_Connected":"Collegato","ra_Configure":"Configura","ra_Invalid CRON":"CRON non valido","ra_Discard":"Scartare","ra_Some data are not stored. Discard?":"Alcuni dati non vengono memorizzati. Scartare?","ra_Filter files":"Filtra i file","ra_Please select file...":"Si prega di selezionare il file...","ra_dow_We":"Noi","ra_fileType_all":"Tutti i files","ra_fileType_audio":"Audio","ra_fileType_code":"Codice/JSON","ra_fileType_images":"immagini","ra_fileType_txt":"Testo","ra_fileType_video,":"video","ra_month_Apr":"apr","ra_month_Aug":"agosto","ra_month_Dec":"Dic","ra_month_Feb":"febbraio","ra_month_Jan":"gen","ra_month_Jul":"lug","ra_month_Jun":"giu","ra_month_Mai":"Mai","ra_month_Mar":"marzo","ra_month_Nov":"nov","ra_month_Oct":"ottobre","ra_month_Sep":"Sett","ra_months_Apr":"apr","ra_months_Aug":"agosto","ra_months_Dec":"Dic","ra_months_Feb":"febbraio","ra_months_Jan":"gen","ra_months_Jul":"lug","ra_months_Jun":"giu","ra_months_Mai":"Mai","ra_months_Mar":"marzo","ra_months_Nov":"nov","ra_months_Oct":"ottobre","ra_months_Sep":"Sett","ra_Cannot decode license":"Impossibile decodificare la licenza","ra_Invalid answer from server":"Risposta non valida dal server","ra_License %s":"Licenza %s","ra_License does not exist":"La licenza non esiste","ra_License expired on %s":"Licenza scaduta il %s","ra_License for other product \\"%s\\"":"Licenza per altro prodotto \\"%s\\"","ra_License is for version %s, but required version is %s.":"La licenza \xe8 per la versione %s, ma la versione richiesta \xe8 %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"Il numero di serie (UUID) \\"%s\\" nella licenza \xe8 per un altro dispositivo.","ra_Serial number (UUID)":"Numero di serie (UUID)","ra_Check license":"Controlla la licenza","ra_Request timed out":"Tempo scaduto per la richiesta","ra_Instance is not alive":"L\'istanza non \xe8 viva","ra_Show/Hide object descriptions":"Mostra/Nascondi le descrizioni degli oggetti","ra_Use system settings for position":"Usa le impostazioni di sistema per la posizione","ra_Longitude":"Longitudine","ra_Latitude":"Latitudine","ra_Take browser position":"Prendi posizione dal browser","ra_Take position from system settings":"Prendi posizione dalle impostazioni di sistema","ra_Port is already used by %s":"La porta \xe8 gi\xe0 utilizzata da %s","ra_Port could be used by %s":"La porta potrebbe essere utilizzata da %s","ra_filter_customs_without":"senza","ra_Use iobroker.acme adapter for letsencrypt certificates":"Utilizzare l\'adattatore iobroker.acme per i certificati letsencrypt","ra_Do not use let\'s encrypt":"Non utilizzare crittografiamo","ra_Use all available let\'s encrypt certificates":"Usa tutti i certificati Let\'s Encrypt disponibili","ra_Public certificate":"Certificato pubblico","ra_Private certificate":"Certificato privato","ra_Chained certificate":"Certificato incatenato","ra_Suitable license not found in license manager":"Licenza adatta non trovata nel gestore delle licenze","ra_Please enter the license":"Inserisci la licenza","ra_Checked":"Controllato","ra_locally":"localmente","ra_via internet":"attraverso internet","ra_Yes":"S\xcc","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licenza non trovata nel gestore delle licenze. Vuoi aggiornare le licenze da iobroker.net?","ra_Fallback custom certificates":"Certificati personalizzati di fallback","ra_Clone current row":"Clona riga corrente","ra_fileType_video":"video","ra_select_folder_hint":"Per selezionare la cartella, basta tenere premuto il tasto \\"shift\\" facendo clic sulla cartella.","ra_Accept license":"Accetta licenza","ra_License agreement":"Contratto di licenza","ra_Import from %s":"Importa da %s","ra_Export data to %s file":"Esporta i dati nel file %s","ra_Import data from %s file":"Importa i dati dal file %s","ra_No data found in file":"Nessun dato trovato nel file","ra_Append or replace?":"Aggiungere o sostituire?","ra_Append %s entries or replace existing?":"Aggiungi %s voci o sostituisci quelle esistenti?","ra_Replace":"Sostituire","ra_Append":"Aggiungere","ra_May not trigger \\"updateLicenses\\"":"Potrebbe non attivare \\"updateLicenses\\"","ra_Unknown error":"Errore sconosciuto","ra_License must be converted":"La licenza deve essere convertita in una versione pi\xf9 recente. Puoi farlo nel tuo profilo iobroker.net.","ra_No one license found in license manager":"Nessuna licenza trovata nel gestore delle licenze","ra_Please create license":"Si prega di creare la licenza","ra_Product":"Prodotto","ra_Version":"Versione","ra_ValidTill":"Valido fino a","ra_Commercial":"Commerciale","ra_Not a number":"Non un numero","ra_Edit value":"Modifica valore","ra_Edit ACL":"Modifica ACL","ra_Edit role":"Modifica ruolo","ra_Edit function":"Funzione di modifica","ra_Edit room":"Modifica stanza","ra_Edit alias":"Modifica alias","ra_View file":"Vedi il file","ra_Del":"Delete","ra_Show all folders":"Mostra tutte le cartelle","ra_Restrict to folder":"Limita alla cartella","ra_Select type of export":"Seleziona il tipo di esportazione","ra_You can export all objects or just the selected branch.":"Puoi esportare tutti gli oggetti o solo il ramo selezionato.","ra_Do not export values of states":"Non esportare i valori degli stati","ra_Selected %s object(s)":"%s oggetto/i selezionato/i","ra_create_device":"Crea dispositivo","ra_create_channel":"Crea canale","ra_create_state":"Crea stato","ra_create_string_state":"Crea lo stato della stringa","ra_create_number_state":"Crea lo stato del numero","ra_create_boolean_state":"Crea uno stato booleano","ra_Select color":"Seleziona il colore","ra_Cannot read licenses: %s":"Impossibile leggere le licenze: %s","ra_Advanced options":"Opzioni avanzate"}')},49646:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"Functie","ra_filter_id":"ID","ra_filter_name":"Naam","ra_filter_role":"Rol","ra_filter_room":"Kamer","ra_tooltip_ack":"Erkende vlag","ra_tooltip_from":"Van","ra_tooltip_lc":"Laatst gewijzigd","ra_tooltip_ts":"Tijdstempel","ra_tooltip_user":"Gebruiker","ra_tooltip_value":"Waarde","ra_Are you sure?":"Weet je het zeker?","ra_Cancel":"Annuleer","ra_Copied":"Gekopieerd","ra_Copied %s":"\\"%s\\" gekopieerd","ra_Define functions":"Definieer functies","ra_Define rooms":"Definieer kamers","ra_Error":"Fout","ra_Message":"Bericht","ra_Ok":"OK","ra_Please select object ID...":"Selecteer object-ID ...","ra_Selected":"Geselecteerd","ra_Unknown error!":"Onbekende fout!","ra_Value":"Waarde","ra_filter_type":"Type","ra_invalidConfig":"Ongeldige instellingen","ra_otherConfig":"Instellingen van andere adapter %s","ra_tooltip_copyState":"Kopieer de statuswaarde","ra_tooltip_customConfig":"Aangepaste instellingen","ra_tooltip_deleteObject":"Object verwijderen","ra_tooltip_editObject":"Object bewerken","ra_tooltip_editState":"Bewerk de statuswaarde","ra_filter_customs":"Instellingen","ra_tooltip_quality":"Kwaliteit","ra_Listen on all IPs":"Luister op alle IP\'s","ra_dow_Fr":"Fr","ra_dow_Mo":"Mo","ra_dow_Sa":"Za","ra_dow_Su":"Zo","ra_dow_Th":"Th","ra_Save":"Sparen","ra_Save and close":"Opslaan en afsluiten","ra_Close":"Dichtbij","ra_Auto (no custom columns)":"Auto (geen aangepaste kolommen)","ra_Transparent dialog":"Transparant dialoogvenster","ra_Width":"Breedte","ra_val":"Waarde","ra_buttons":"Toetsen","ra_Configure visible columns":"Configureer zichtbare kolommen","ra_Cannot update attribute, because not found in the object":"Kan kenmerk niet bijwerken, omdat het niet in het object is gevonden","ra_Edit object field":"Bewerk objectveld","ra_Hide empty folders":"Verberg lege mappen","ra_Reload files":"Laad bestanden opnieuw","ra_Create folder":"Map aanmaken","ra_Upload file":"Upload bestand","ra_User files":"Gebruikersbestanden","ra_Confirm deletion of %s":"Bevestig het verwijderen van %s","ra_Delete (no confirm for 5 mins)":"Verwijderen (geen bevestiging gedurende 5 minuten)","ra_Delete":"Verwijderen","ra_Toggle expert mode":"Schakel tussen expertmodus","ra_Toggle view mode":"Schakelen tussen weergavemodus","ra_Root":"Wortel","ra_Back to %s":"Terug naar %s","ra_Place your files here or click here to open the browse dialog":"Plaats uw bestanden hier of klik hier om het bladervenster te openen","ra_If no file will be created in the folder, it will disappear after the browser closed":"Als er geen bestand in de map wordt gemaakt, verdwijnt het nadat de browser is gesloten","ra_Folder name":"Naam van de map","ra_Create new folder in %s":"Maak een nieuwe map in %s","ra_Duplicate name":"Dubbele naam","ra_Invalid parent folder!":"Ongeldige bovenliggende map!","ra_Drop file here":"Zet het bestand hier neer","ra_Suppress question for next %s minutes":"Vraag de volgende %s minuten onderdrukken","ra_Clear filter":"Filter wissen","ra_Update":"Bijwerken","ra_Load configuration from file":"Laad configuratie uit bestand","ra_Save configuration to file":"Sla de configuratie op in een bestand","sc_cron":"CRON","sc_date":"Datum","sc_dates":"data","sc_dows":"Dag van de week","sc_every":"elk","sc_everyN_dates":"elke N dagen","sc_everyN_dows":"elke N dag van de week","sc_everyN_hours":"elke N uur","sc_everyN_minutes":"elke N minuten","sc_everyN_months":"elke N maanden","sc_everyN_seconds":"elke N seconden","sc_every_dates":"elke dag","sc_every_dows":"elke dag van de week","sc_every_hours":"elk uur","sc_every_minutes":"elke minuut","sc_every_months":"elke maand","sc_every_seconds":"elke seconde","sc_from":"Van","sc_hours":"uren","sc_interval":"Interval","sc_intervalBetween":"Interval tussen","sc_minutes":"Notulen","sc_months":"maanden","sc_once":"Een keer","sc_period":"Periode","sc_seconds":"seconden","sc_simple":"Gemakkelijk","sc_specific":"Specifieke tijd","sc_specific_dates":"specifieke data","sc_specific_dows":"specifieke dag van weken","sc_specific_hours":"specifieke uren","sc_specific_minutes":"specifieke minuten","sc_specific_months":"specifieke maanden","sc_specific_seconds":"specifieke seconden","sc_time":"Tijd","sc_to":"Naar","sc_wizard":"tovenaar","sch_all":"allemaal","sch_astroDay":"Astro-dag","sch_astroNight":"Astro-nacht","sch_astro_dawn":"Dageraad","sch_astro_dusk":"Schemer","sch_astro_goldenHour":"gouden uur","sch_astro_goldenHourEnd":"Gouden uur einde","sch_astro_nadir":"Nadir","sch_astro_nauticalDawn":"Nautische dageraad","sch_astro_nauticalDusk":"Nautische schemering","sch_astro_night":"Nacht","sch_astro_nightEnd":"Nacht einde","sch_astro_solarNoon":"Zonne middag","sch_astro_sunrise":"zonsopkomst","sch_astro_sunriseEnd":"Sunrise einde","sch_astro_sunset":"Zonsondergang","sch_astro_sunsetStart":"Zonsondergang start","sch_at":"Bij","sch_desc_atTime":"op %s","sch_desc_everyDay":"elke dag","sch_desc_everyHour":"elk uur","sch_desc_everyMinute":"elke minuut","sch_desc_everyMonth":"elke maand","sch_desc_everyNDay":"elke %s dag","sch_desc_everyNHours":"elke %s uur","sch_desc_everyNMinutes":"elke %s minuten","sch_desc_everyNMonths":"elke %s maanden","sch_desc_everyNWeeks":"elke %s weken","sch_desc_everyNYears":"elke %s jaar","sch_desc_everyWeek":"elke week","sch_desc_everyYear":"elk jaar","sch_desc_intervalFromTo":"van %s tot %s","sch_desc_never":"nooit","sch_desc_onDate":"op %s van %s","sch_desc_onDates":"op %s en %s van","sch_desc_onEveryDate":"op elke datum van","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s en %s","sch_desc_onWeekday":"op %s","sch_desc_onWeekdays":"op %s en %s","sch_desc_onWeekends":"in het weekend","sch_desc_onWorkdays":"op werkdagen","sch_desc_onceInPast":"zal niet meer worden uitgevoerd, omdat start verleden tijd is","sch_desc_once_on":"op %s","sch_desc_validFrom":"van %s","sch_desc_validFromTo":"Uitvoeren van tot","sch_desc_validTo":"tot %s","sch_every":"elk","sch_exactTime":"Specifieke tijd","sch_from":"van","sch_fromTo":"Van naar","sch_intervalTime":"Interval tijd","sch_invert":"omkeren","sch_no_one":"geen","sch_on":"Aan","sch_period":"Periode","sch_periodDaily":"Dagelijks","sch_periodDates":"data","sch_periodDay":"Dag","sch_periodEvery":"elk","sch_periodEveryDay":"Elke dag","sch_periodEveryMonth":"Elke maand","sch_periodEveryWeek":"Elke week","sch_periodEveryYear":"Elk jaar","sch_periodHours":"uren","sch_periodMinutes":"Notulen","sch_periodMonth":"maand","sch_periodMonthly":"Maandelijks","sch_periodOnce":"Een keer","sch_periodSpecificMonths":"Specifieke maanden","sch_periodWeek":"Week","sch_periodWeekdays":"Doordeweekse dagen","sch_periodWeekend":"Weekend","sch_periodWeekly":"Wekelijks","sch_periodWorkdays":"werkdagen","sch_periodYear":"Jaar","sch_periodYearly":"jaar-","sch_specificTime":"Specifieke tijd","sch_time":"Tijd","sch_to":"naar","sch_valid":"Geldig","sch_validFrom":"van","sch_validTo":"naar","sch_wholeDay":"Hele dag","sch_yearEveryMonth":"elke maand","ra_Define schedule...":"Schema defini\xebren ...","ra_Repeat":"Herhaling","ra_use seconds":"gebruik seconden","ra_close":"dichtbij","ra_dow_Tu":"Tu","ra_Toggle the states view":"Schakel de statusweergave in of uit","ra_Add new child object to selected parent":"Voeg een nieuw kindobject toe aan het geselecteerde bovenliggende object","ra_Add objects tree from JSON file":"Objectenboom toevoegen vanuit JSON-bestand","ra_Save objects tree as JSON file":"Sla de objectenboom op als JSON-bestand","ra_Objects":"Voorwerpen","ra_States":"Staten","ra_object_changed_by_user":"Object voor het laatst gewijzigd om","ra_object_changed_by":"Object veranderd door","ra_state_changed_from":"Object veranderd van","ra_state_changed_by":"Staat veranderd door","ra_aclOwner_read_object":"Eigenaar kan object lezen","ra_aclOwner_read_state":"Eigenaar kan staat lezen","ra_aclOwner_write_object":"Eigenaar kan object schrijven","ra_aclOwner_write_state":"Eigenaar kan staat schrijven","ra_aclGroup_read_object":"Groep kan object lezen","ra_aclGroup_read_state":"Groep kan status lezen","ra_aclGroup_write_object":"Groep kan object schrijven","ra_aclGroup_write_state":"Groep kan staat schrijven","ra_aclEveryone_read_object":"Iedereen kan object lezen","ra_aclEveryone_read_state":"Iedereen kan staat lezen","ra_aclEveryone_write_object":"Iedereen kan object schrijven","ra_aclEveryone_write_state":"Iedereen kan staat schrijven","ra_Folders always first":"Mappen altijd eerst","ra_changedFrom":"Veranderd van","ra_qualityCode":"Kwaliteitscode","ra_timestamp":"Tijdstempel","ra_lastChange":"Laatste wijziging","ra_Owner group":"Eigenaarsgroep","ra_Owner user":"Eigenaar gebruiker","ra_Create":"Cre\xeber","ra_Changed from":"Veranderd van","ra_Quality code":"Kwaliteit","ra_Timestamp":"Tijdstempel","ra_Last change":"Laatste wijziging","ra_Collapse all nodes":"Vouw alle knooppunten samen","ra_Edit custom config":"Bewerk aangepaste config","ra_Collapse one step node":"E\xe9n niveau samenvouwen","ra_Expand one step node":"Vouw een niveau uit","ra_Refresh tree":"Vernieuw de boom","ra_Expand all nodes":"Vouw alle knooppunten uit","ra_Deselect all":"Deselecteer alles","ra_Select all":"Selecteer alles","ra_%s object(s) processed":"%s object(en) verwerkt","ra_Invalid structure":"Ongeldige structuur","ra_%s was imported":"%s is ge\xefmporteerd","ra_Failed to open JSON File":"JSON-bestand kan niet worden geopend","ra_Only following structures of objects are available:":"Alleen de volgende structuren van objecten zijn beschikbaar:","ra_Folder \u2192 State":"Map \u2192 Staat","ra_Folder \u2192 Channel \u2192 State":"Map \u2192 Kanaal \u2192 Staat","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Map \u2192 Apparaat \u2192 Kanaal \u2192 Staat","ra_Device \u2192 Channel \u2192 State":"Apparaat \u2192 Kanaal \u2192 Staat","ra_Channel \u2192 State":"Kanaal \u2192 Staat","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"Niet-experts mogen alleen nieuwe objecten maken in \\"0_userdata.0\\" of \\"alias.0\\".","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"De experts kunnen overal objecten maken, behalve vanaf het tweede niveau (bijv. \\"Vis.0\\" of \\"javascript.0\\").","ra_expertMode":"Expert modus","ra_On weekdays":"Op weekdagen","ra_Drop the files here...":"Zet het bestand hier neer...","ra_Drag \'n\' drop some files here, or click to select files":"Sleep enkele bestanden hierheen, of klik om bestanden te selecteren","ra_Clear":"Verwijderen","ra_Clear icon":"Pictogram wissen","ra_none":"geen","ra_Select predefined icon":"Selecteer voorgedefinieerd pictogram","ra_Show lines between rows":"Toon lijnen tussen rijen","ra_The page you are looking for was not found":"De pagina die u zoekt is niet gevonden","ra_Good luck":"Veel geluk","ra_Cannot find \\"%s\\"":"Kan \\"%s\\" niet vinden","ra_Cannot read \\"%s\\"":"Kan \\"%s\\" niet lezen","ra_Background image":"Achtergrond afbeelding","ra_View: %s":"Bekijk: %s","ra_Copy content":"Inhoud kopi\xebren","ra_Filter":"Filter","ra_All objects":"Alle objecten","ra_Only selected":"Alleen geselecteerd","ra_Change color theme":"Kleurthema wijzigen","ra_daysShortText":"d.","ra_Instance %s is alive":"Instantie %s leeft","ra_Instance %s is not alive":"Instantie %s is niet actief","ra_Used system settings":"Gebruikte systeeminstellingen","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Kan positie niet bepalen: systeeminstellingen zijn leeg en GPS-detectie is uitgeschakeld in browser","ra_Define schedule":"Definieer schema","ra___different__":"verschillend","ra_Please confirm":"Bevestig alstublieft","ra_JSON editor":"JSON-editor","ra_System language":"Systeemtaal","ra_Too small":"Te klein","ra_Too big":"Te groot","ra_Passwords are not equal!":"Wachtwoorden zijn niet gelijk!","ra_repeat":"herhalen","ra_You can filter entries by entering here some text":"U kunt items filteren door hier wat tekst in te voeren","ra_Show/hide filter input":"Filterinvoer weergeven/verbergen","ra_Cannot add items with set filter":"Kan geen items toevoegen met ingestelde filter","ra_Add row":"Voeg een rij toe","ra_Move up":"Omhoog gaan","ra_Move down":"Naar beneden verplaatsen","ra_Delete current row":"Huidige rij verwijderen","ra_All items are filtered out":"Alle items zijn uitgefilterd","ra_Double click to reset table layout":"Dubbelklik om de tafelindeling te resetten","ra_Cannot retrieve options, as instance is offline":"Kan opties niet ophalen, omdat instantie offline is","ra_File is too big. Max %sk allowed. Try use SVG.":"Bestand is te groot. Max. %sk toegestaan. Probeer SVG te gebruiken.","ra_Cannot upload":"Kan niet uploaden","ra_Crop":"Bijsnijden","ra_tooltip_comment":"Opmerking","ra_Disconnected":"Verbinding verbroken","ra_Connected":"Verbonden","ra_Configure":"Configureren","ra_Invalid CRON":"Ongeldige CRON","ra_Discard":"Weggooien","ra_Some data are not stored. Discard?":"Sommige gegevens worden niet opgeslagen. Weggooien?","ra_Filter files":"Bestanden filteren","ra_Please select file...":"Selecteer bestand...","ra_dow_We":"Wij","ra_fileType_all":"Alle bestanden","ra_fileType_audio":"Audio","ra_fileType_code":"Code/JSON","ra_fileType_images":"Afbeeldingen","ra_fileType_txt":"Tekst","ra_fileType_video,":"Video","ra_month_Apr":"april","ra_month_Aug":"aug","ra_month_Dec":"dec","ra_month_Feb":"februari","ra_month_Jan":"jan","ra_month_Jul":"jul","ra_month_Jun":"juni","ra_month_Mai":"Mei","ra_month_Mar":"mrt","ra_month_Nov":"nov","ra_month_Oct":"Okt","ra_month_Sep":"sept","ra_months_Apr":"april","ra_months_Aug":"aug","ra_months_Dec":"dec","ra_months_Feb":"februari","ra_months_Jan":"jan","ra_months_Jul":"jul","ra_months_Jun":"juni","ra_months_Mai":"Mei","ra_months_Mar":"mrt","ra_months_Nov":"nov","ra_months_Oct":"Okt","ra_months_Sep":"sept","ra_Cannot decode license":"Kan licentie niet decoderen","ra_Invalid answer from server":"Ongeldig antwoord van de server","ra_License %s":"Licentie %s","ra_License does not exist":"Licentie bestaat niet","ra_License expired on %s":"Licentie verlopen op %s","ra_License for other product \\"%s\\"":"Licentie voor ander product \\"%s\\"","ra_License is for version %s, but required version is %s.":"Licentie is voor versie %s, maar vereiste versie is %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"Serienummer (UUID) \\"%s\\" in licentie is voor ander apparaat.","ra_Serial number (UUID)":"Serienummer (UUID)","ra_Check license":"Licentie controleren","ra_Request timed out":"Verzoek verlopen","ra_Instance is not alive":"Instantie leeft niet","ra_Show/Hide object descriptions":"Toon/verberg objectbeschrijvingen","ra_Use system settings for position":"Gebruik systeeminstellingen voor positie","ra_Longitude":"Lengtegraad","ra_Latitude":"Breedtegraad","ra_Take browser position":"Positie innemen vanuit de browser","ra_Take position from system settings":"Neem positie over van systeeminstellingen","ra_Port is already used by %s":"Poort wordt al gebruikt door %s","ra_Port could be used by %s":"Poort kan worden gebruikt door %s","ra_filter_customs_without":"zonder","ra_Use iobroker.acme adapter for letsencrypt certificates":"Gebruik de iobroker.acme-adapter voor letsencrypt-certificaten","ra_Do not use let\'s encrypt":"Gebruik geen let\'s encrypt","ra_Use all available let\'s encrypt certificates":"Gebruik alle beschikbare Let\'s Encrypt-certificaten","ra_Public certificate":"Openbaar certificaat","ra_Private certificate":"Priv\xe9 certificaat","ra_Chained certificate":"Geketend certificaat","ra_Suitable license not found in license manager":"Geschikte licentie niet gevonden in licentiebeheer","ra_Please enter the license":"Voer de licentie in","ra_Checked":"Gecontroleerd","ra_locally":"plaatselijk","ra_via internet":"via internet","ra_Yes":"Ja","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licentie niet gevonden in licentiebeheer. Wilt u licenties van iobroker.net bijwerken?","ra_Fallback custom certificates":"Fallback aangepaste certificaten","ra_Clone current row":"Kloon de huidige rij","ra_fileType_video":"Video","ra_select_folder_hint":"Om een map te selecteren, houdt u gewoon de toets \\"shift\\" ingedrukt door op de map te klikken.","ra_Accept license":"Accepteer licentie","ra_License agreement":"Licentieovereenkomst","ra_Import from %s":"Importeren uit %s","ra_Export data to %s file":"Exporteer gegevens naar %s bestand","ra_Import data from %s file":"Importeer gegevens uit %s bestand","ra_No data found in file":"Geen gegevens gevonden in bestand","ra_Append or replace?":"Toevoegen of vervangen?","ra_Append %s entries or replace existing?":"%s ingangen toevoegen of bestaande vervangen?","ra_Replace":"Vervangen","ra_Append":"toevoegen","ra_May not trigger \\"updateLicenses\\"":"Activeert mogelijk niet \\"updateLicenses\\"","ra_Unknown error":"Onbekende fout","ra_License must be converted":"Licentie moet worden omgezet naar nieuwere versie. U kunt dit doen in uw iobroker.net-profiel.","ra_No one license found in license manager":"Geen enkele licentie gevonden in licentiebeheer","ra_Please create license":"Maak een licentie aan","ra_Product":"Product","ra_Version":"Versie","ra_ValidTill":"Geldig tot","ra_Commercial":"Reclame","ra_Not a number":"Geen nummer","ra_Edit value":"Waarde bewerken","ra_Edit ACL":"ACL bewerken","ra_Edit role":"Rol bewerken","ra_Edit function":"Bewerkingsfunctie","ra_Edit room":"Kamer bewerken","ra_Edit alias":"Alias bewerken","ra_View file":"Bestand bekijken","ra_Del":"Delete","ra_Show all folders":"Toon alle mappen","ra_Restrict to folder":"Beperken tot map","ra_Select type of export":"Selecteer het type export","ra_You can export all objects or just the selected branch.":"U kunt alle objecten of alleen de geselecteerde tak exporteren.","ra_Do not export values of states":"Exporteer geen waarden van staten","ra_Selected %s object(s)":"Geselecteerde %s object(en)","ra_create_device":"Apparaat maken","ra_create_channel":"Kanaal maken","ra_create_state":"Staat cre\xebren","ra_create_string_state":"Tekenreeksstatus maken","ra_create_number_state":"Nummerstatus maken","ra_create_boolean_state":"Cre\xeber een Booleaanse status","ra_Select color":"Selecteer kleur","ra_Cannot read licenses: %s":"Kan licenties niet lezen: %s","ra_Advanced options":"Geavanceerde mogelijkheden"}')},11356:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"Funkcjonowa\u0107","ra_filter_id":"ID","ra_filter_name":"Imi\u0119","ra_filter_role":"Rola","ra_filter_room":"Sala","ra_tooltip_ack":"Potwierdzon","ra_tooltip_from":"Z","ra_tooltip_lc":"Ostatnia zmiana","ra_tooltip_quality":"Jako\u015b\u0107","ra_tooltip_ts":"Znak czasu","ra_tooltip_user":"U\u017cytkownik","ra_tooltip_value":"Warto\u015b\u0107","ra_Are you sure?":"Jeste\u015b pewny?","ra_Cancel":"Anuluj","ra_Copied":"Skopiowano","ra_Copied %s":"Skopiowano \\"%s\\"","ra_Define functions":"Zdefiniuj funkcje","ra_Define rooms":"Zdefiniuj pokoje","ra_Error":"B\u0142\u0105d","ra_Message":"Wiadomo\u015b\u0107","ra_Ok":"Dobrze","ra_Please select object ID...":"Wybierz identyfikator obiektu ...","ra_Selected":"Wybrany","ra_Unknown error!":"Nieznany b\u0142\u0105d!","ra_Value":"Warto\u015b\u0107","ra_filter_type":"Rodzaj","ra_invalidConfig":"Nieprawid\u0142owe ustawienia","ra_otherConfig":"Ustawienia z innego adaptera %s","ra_tooltip_copyState":"Skopiuj warto\u015b\u0107 stanu","ra_tooltip_customConfig":"W\u0142asne ustawienia","ra_tooltip_deleteObject":"Usu\u0144 obiekt","ra_tooltip_editObject":"Edytuj obiekt","ra_tooltip_editState":"Edytuj warto\u015b\u0107 stanu","ra_filter_customs":"Ustawienia","ra_Listen on all IPs":"S\u0142uchaj na wszystkich adresach IP","ra_dow_Fr":"Ks","ra_dow_Mo":"Mo","ra_dow_Sa":"Sa","ra_dow_Su":"Su","ra_dow_Th":"Th","ra_Save":"Zapisa\u0107","ra_Save and close":"Zapisz i zamknij","ra_Close":"Blisko","ra_Auto (no custom columns)":"Auto (bez kolumn niestandardowych)","ra_Transparent dialog":"Przejrzyste okno dialogowe","ra_Width":"Szeroko\u015b\u0107","ra_val":"Warto\u015b\u0107","ra_buttons":"guziki","ra_Configure visible columns":"Skonfiguruj widoczne kolumny","ra_Cannot update attribute, because not found in the object":"Nie mo\u017cna zaktualizowa\u0107 atrybutu, poniewa\u017c nie znaleziono go w obiekcie","ra_Edit object field":"Edytuj pole obiektu","ra_Hide empty folders":"Ukryj puste foldery","ra_Reload files":"Za\u0142aduj ponownie pliki","ra_Create folder":"Utw\xf3rz folder","ra_Upload file":"Przesy\u0142anie pliku","ra_User files":"Pliki u\u017cytkownika","ra_Confirm deletion of %s":"Potwierd\u017a usuni\u0119cie %s","ra_Delete (no confirm for 5 mins)":"Usu\u0144 (bez potwierdzenia przez 5 minut)","ra_Delete":"Usun\u0105\u0107","ra_Toggle expert mode":"Prze\u0142\u0105cz tryb eksperta","ra_Toggle view mode":"Prze\u0142\u0105cz tryb widoku","ra_Root":"Korze\u0144","ra_Back to %s":"Powr\xf3t do %s","ra_Place your files here or click here to open the browse dialog":"Umie\u015b\u0107 swoje pliki tutaj lub kliknij tutaj, aby otworzy\u0107 okno dialogowe przegl\u0105dania","ra_If no file will be created in the folder, it will disappear after the browser closed":"Je\u015bli w folderze nie zostanie utworzony \u017caden plik, zniknie on po zamkni\u0119ciu przegl\u0105darki","ra_Folder name":"Nazwa folderu","ra_Create new folder in %s":"Utw\xf3rz nowy folder w %s","ra_Duplicate name":"Zduplikowana nazwa","ra_Invalid parent folder!":"Nieprawid\u0142owy folder nadrz\u0119dny!","ra_Drop file here":"Upu\u015b\u0107 plik tutaj","ra_Suppress question for next %s minutes":"Ukryj pytanie przez nast\u0119pne %s minut","ra_Clear filter":"Czysty filtr","ra_Update":"Aktualizacja","ra_Load configuration from file":"Za\u0142aduj konfiguracj\u0119 z pliku","ra_Save configuration to file":"Zapisz konfiguracj\u0119 do pliku","sc_cron":"CRON","sc_date":"Data","sc_dates":"Daktyle","sc_dows":"Dzie\u0144 tygodnia","sc_every":"Ka\u017cdy","sc_everyN_dates":"co N dni","sc_everyN_dows":"co N dnia tygodnia","sc_everyN_hours":"co N godzin","sc_everyN_minutes":"co N minut","sc_everyN_months":"co N miesi\u0119cy","sc_everyN_seconds":"co N sekund","sc_every_dates":"codziennie","sc_every_dows":"ka\u017cdy dzie\u0144 tygodnia","sc_every_hours":"co godzin\u0119","sc_every_minutes":"ka\u017cda minuta","sc_every_months":"ka\u017cdego miesi\u0105ca","sc_every_seconds":"ka\u017cda sekunda","sc_from":"Od","sc_hours":"godziny","sc_interval":"Interwa\u0142","sc_intervalBetween":"Interwa\u0142 mi\u0119dzy","sc_minutes":"Minuty","sc_months":"miesi\u0119cy","sc_once":"Pewnego razu","sc_period":"Kropka","sc_seconds":"sekundy","sc_simple":"Prosty","sc_specific":"Okre\u015blony czas","sc_specific_dates":"konkretne daty","sc_specific_dows":"okre\u015blony dzie\u0144 tygodni","sc_specific_hours":"okre\u015blone godziny","sc_specific_minutes":"okre\u015blone minuty","sc_specific_months":"okre\u015blone miesi\u0105ce","sc_specific_seconds":"okre\u015blone sekundy","sc_time":"Czas","sc_to":"Do","sc_wizard":"Czarodziej","sch_all":"wszystko","sch_astroDay":"Dzie\u0144 Astro","sch_astroNight":"Noc Astro","sch_astro_dawn":"\u015awit","sch_astro_dusk":"Zmierzch","sch_astro_goldenHour":"z\u0142ota godzina","sch_astro_goldenHourEnd":"Koniec z\u0142otej godziny","sch_astro_nadir":"Nadir","sch_astro_nauticalDawn":"Morski \u015bwit","sch_astro_nauticalDusk":"Morski zmierzch","sch_astro_night":"Noc","sch_astro_nightEnd":"Koniec nocy","sch_astro_solarNoon":"Po\u0142udnie s\u0142oneczne","sch_astro_sunrise":"wsch\xf3d s\u0142o\u0144ca","sch_astro_sunriseEnd":"Koniec wschodu s\u0142o\u0144ca","sch_astro_sunset":"Zach\xf3d s\u0142o\u0144ca","sch_astro_sunsetStart":"Pocz\u0105tek zachodu s\u0142o\u0144ca","sch_at":"w","sch_desc_atTime":"na %s","sch_desc_everyDay":"codziennie","sch_desc_everyHour":"co godzin\u0119","sch_desc_everyMinute":"ka\u017cda minuta","sch_desc_everyMonth":"ka\u017cdego miesi\u0105ca","sch_desc_everyNDay":"ka\u017cdego dnia %s","sch_desc_everyNHours":"co %s godzin","sch_desc_everyNMinutes":"co %s minut","sch_desc_everyNMonths":"co %s miesi\u0119cy","sch_desc_everyNWeeks":"co %s tygodni","sch_desc_everyNYears":"co %s lat","sch_desc_everyWeek":"co tydzie\u0144","sch_desc_everyYear":"ka\u017cdego roku","sch_desc_intervalFromTo":"od %s do %s","sch_desc_never":"nigdy","sch_desc_onDate":"na %s z %s","sch_desc_onDates":"na %s i %s z","sch_desc_onEveryDate":"w ka\u017cd\u0105 dat\u0119","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s i %s","sch_desc_onWeekday":"na %s","sch_desc_onWeekdays":"na %s i %s","sch_desc_onWeekends":"w weekendy","sch_desc_onWorkdays":"w dni robocze","sch_desc_onceInPast":"nie b\u0119dzie ju\u017c wykonywany, poniewa\u017c start jest w przesz\u0142o\u015bci","sch_desc_once_on":"na %s","sch_desc_validFrom":"z %s","sch_desc_validFromTo":"Wykonaj od do","sch_desc_validTo":"do %s","sch_every":"ka\u017cdy","sch_exactTime":"Okre\u015blony czas","sch_from":"od","sch_fromTo":"Od-do","sch_intervalTime":"Czas przerwy","sch_invert":"odwraca\u0107","sch_no_one":"\u017baden","sch_on":"na","sch_period":"Kropka","sch_periodDaily":"Codziennie","sch_periodDates":"Daktyle","sch_periodDay":"Dzie\u0144","sch_periodEvery":"Ka\u017cdy","sch_periodEveryDay":"Codziennie","sch_periodEveryMonth":"Ka\u017cdego miesi\u0105ca","sch_periodEveryWeek":"Co tydzie\u0144","sch_periodEveryYear":"Ka\u017cdego roku","sch_periodHours":"godziny","sch_periodMinutes":"Minuty","sch_periodMonth":"miesi\u0105c","sch_periodMonthly":"Miesi\u0119czny","sch_periodOnce":"Pewnego razu","sch_periodSpecificMonths":"Okre\u015blone miesi\u0105ce","sch_periodWeek":"Tydzie\u0144","sch_periodWeekdays":"Dni powszednie","sch_periodWeekend":"Weekend","sch_periodWeekly":"Co tydzie\u0144","sch_periodWorkdays":"Dni robocze","sch_periodYear":"Rok","sch_periodYearly":"Rocznie","sch_specificTime":"Okre\u015blony czas","sch_time":"Czas","sch_to":"do","sch_valid":"Wa\u017cny","sch_validFrom":"od","sch_validTo":"do","sch_wholeDay":"Ca\u0142y dzie\u0144","sch_yearEveryMonth":"ka\u017cdego miesi\u0105ca","ra_Define schedule...":"Zdefiniuj harmonogram ...","ra_Repeat":"Powtarza\u0107","ra_use seconds":"u\u017cyj sekund","ra_close":"blisko","ra_dow_Tu":"Tu","ra_Toggle the states view":"Prze\u0142\u0105cz widok stan\xf3w","ra_Add new child object to selected parent":"Dodaj nowy obiekt potomny do wybranego rodzica","ra_Add objects tree from JSON file":"Dodaj drzewo obiekt\xf3w z pliku JSON","ra_Save objects tree as JSON file":"Zapisz drzewo obiekt\xf3w jako plik JSON","ra_Objects":"Obiekty","ra_States":"Stany","ra_object_changed_by_user":"Obiekt ostatnio zmieniony o godz","ra_object_changed_by":"Obiekt zmieniony przez","ra_state_changed_from":"Obiekt zmieniony z","ra_state_changed_by":"Stan zmieniony przez","ra_aclOwner_read_object":"W\u0142a\u015bciciel mo\u017ce czyta\u0107 obiekt","ra_aclOwner_read_state":"W\u0142a\u015bciciel mo\u017ce odczyta\u0107 stan","ra_aclOwner_write_object":"W\u0142a\u015bciciel mo\u017ce napisa\u0107 obiekt","ra_aclOwner_write_state":"W\u0142a\u015bciciel mo\u017ce pisa\u0107 stan","ra_aclGroup_read_object":"Grupa mo\u017ce odczyta\u0107 obiekt","ra_aclGroup_read_state":"Grupa mo\u017ce odczyta\u0107 stan","ra_aclGroup_write_object":"Grupa mo\u017ce pisa\u0107 obiekt","ra_aclGroup_write_state":"Grupa mo\u017ce pisa\u0107 stan","ra_aclEveryone_read_object":"Ka\u017cdy mo\u017ce czyta\u0107 obiekt","ra_aclEveryone_read_state":"Ka\u017cdy mo\u017ce czyta\u0107 stan","ra_aclEveryone_write_object":"Ka\u017cdy mo\u017ce pisa\u0107 przedmiot","ra_aclEveryone_write_state":"Ka\u017cdy mo\u017ce pisa\u0107 stan","ra_Folders always first":"Foldery zawsze na pierwszym miejscu","ra_changedFrom":"Zmieniony z","ra_qualityCode":"Kod jako\u015bci","ra_timestamp":"Znak czasu","ra_lastChange":"Ostatnia zmiana","ra_Owner group":"Grupa w\u0142a\u015bcicieli","ra_Owner user":"W\u0142a\u015bciciel u\u017cytkownika","ra_Create":"Stw\xf3rz","ra_Changed from":"Zmieniony z","ra_Quality code":"Jako\u015bci","ra_Timestamp":"Znak czasu","ra_Last change":"Ostatnia zmiana","ra_Collapse all nodes":"Zwi\u0144 wszystkie w\u0119z\u0142y","ra_Edit custom config":"Edytuj konfiguracj\u0119 niestandardow\u0105","ra_Collapse one step node":"Zwi\u0144 o jeden poziom","ra_Expand one step node":"Rozwi\u0144 o jeden poziom","ra_Refresh tree":"Od\u015bwie\u017c drzewo","ra_Expand all nodes":"Rozwi\u0144 wszystkie w\u0119z\u0142y","ra_Deselect all":"Odznacz wszystko","ra_Select all":"Zaznacz wszystko","ra_%s object(s) processed":"Przetworzono %s obiekt\xf3w","ra_Invalid structure":"Nieprawid\u0142owa struktura","ra_%s was imported":"%s zosta\u0142 zaimportowany","ra_Failed to open JSON File":"Nie uda\u0142o si\u0119 otworzy\u0107 pliku JSON","ra_Only following structures of objects are available:":"Dost\u0119pne s\u0105 tylko nast\u0119puj\u0105ce struktury obiekt\xf3w:","ra_Folder \u2192 State":"Folder \u2192 Stan","ra_Folder \u2192 Channel \u2192 State":"Folder \u2192 Kana\u0142 \u2192 Stan","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Folder \u2192 Urz\u0105dzenie \u2192 Kana\u0142 \u2192 Stan","ra_Device \u2192 Channel \u2192 State":"Urz\u0105dzenie \u2192 Kana\u0142 \u2192 Stan","ra_Channel \u2192 State":"Kana\u0142 \u2192 Stan","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"Osoby nie b\u0119d\u0105ce ekspertami mog\u0105 tworzy\u0107 nowe obiekty tylko w \u201e0_userdata.0\u201d lub \u201ealias.0\u201d.","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"Eksperci mog\u0105 tworzy\u0107 obiekty wsz\u0119dzie poza drugim poziomem (np. \u201eVis.0\u201d lub \u201ejavascript.0\u201d).","ra_expertMode":"Tryb ekspercki","ra_On weekdays":"W dni powszednie","ra_Drop the files here...":"Upu\u015b\u0107 plik tutaj...","ra_Drag \'n\' drop some files here, or click to select files":"Przeci\u0105gnij i upu\u015b\u0107 kilka plik\xf3w tutaj lub kliknij, aby wybra\u0107 pliki","ra_Clear":"Kasowa\u0107","ra_Clear icon":"Wyczy\u015b\u0107 ikon\u0119","ra_none":"\u017baden","ra_Select predefined icon":"Wybierz predefiniowan\u0105 ikon\u0119","ra_Show lines between rows":"Poka\u017c linie mi\u0119dzy rz\u0119dami","ra_The page you are looking for was not found":"Strona, kt\xf3rej szukasz nie zosta\u0142a znaleziona","ra_Good luck":"Powodzenia","ra_Cannot find \\"%s\\"":"Nie mo\u017cna znale\u017a\u0107 \u201e%s\u201d","ra_Cannot read \\"%s\\"":"Nie mo\u017cna odczyta\u0107 \u201e%s\u201d","ra_Background image":"Zdj\u0119cie w tle","ra_View: %s":"Widok: %s","ra_Copy content":"Kopiuj zawarto\u015b\u0107","ra_Filter":"Filtr","ra_All objects":"Wszystkie obiekty","ra_Only selected":"Tylko wybrane","ra_Change color theme":"Zmie\u0144 motyw kolorystyczny","ra_daysShortText":"d.","ra_Instance %s is alive":"Instancja %s jest aktywna","ra_Instance %s is not alive":"Instancja TEKST nie jest aktywna","ra_Used system settings":"U\u017cywane ustawienia systemowe","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"Nie mo\u017cna okre\u015bli\u0107 pozycji: ustawienia systemu s\u0105 puste, a wykrywanie GPS jest wy\u0142\u0105czone w przegl\u0105darce","ra_Define schedule":"Zdefiniuj harmonogram","ra___different__":"r\xf3\u017cne","ra_Please confirm":"Prosz\u0119 potwierdzi\u0107","ra_JSON editor":"Edytor JSON","ra_System language":"J\u0119zyk systemu","ra_Too small":"Za ma\u0142y","ra_Too big":"Za du\u017cy","ra_Passwords are not equal!":"Has\u0142a nie s\u0105 r\xf3wne!","ra_repeat":"powtarza\u0107","ra_You can filter entries by entering here some text":"Mo\u017cesz filtrowa\u0107 wpisy, wpisuj\u0105c tutaj jaki\u015b tekst","ra_Show/hide filter input":"Poka\u017c/ukryj wej\u015bcie filtra","ra_Cannot add items with set filter":"Nie mo\u017cna doda\u0107 element\xf3w z ustawionym filtrem","ra_Add row":"Dodaj wiersz","ra_Move up":"Podnie\u015b\u0107","ra_Move down":"Padnij","ra_Delete current row":"Usu\u0144 bie\u017c\u0105cy wiersz","ra_All items are filtered out":"Wszystkie pozycje s\u0105 odfiltrowane","ra_Double click to reset table layout":"Kliknij dwukrotnie, aby zresetowa\u0107 uk\u0142ad tabeli","ra_Cannot retrieve options, as instance is offline":"Nie mo\u017cna pobra\u0107 opcji, poniewa\u017c instancja jest w trybie offline","ra_File is too big. Max %sk allowed. Try use SVG.":"Plik jest za du\u017cy. Maksymalna dozwolona liczba %sk. Spr\xf3buj u\u017cy\u0107 SVG.","ra_Cannot upload":"Nie mo\u017cna przes\u0142a\u0107","ra_Crop":"Przyci\u0105\u0107","ra_tooltip_comment":"Komentarz","ra_Disconnected":"Niepowi\u0105zany","ra_Connected":"Po\u0142\u0105czony","ra_Configure":"Konfiguruj","ra_Invalid CRON":"Nieprawid\u0142owy CRON","ra_Discard":"Wyrzuca\u0107","ra_Some data are not stored. Discard?":"Niekt\xf3re dane nie s\u0105 przechowywane. Wyrzuca\u0107?","ra_Filter files":"Filtruj pliki","ra_Please select file...":"Wybierz plik...","ra_dow_We":"My","ra_fileType_all":"Wszystkie pliki","ra_fileType_audio":"Audio","ra_fileType_code":"Kod/JSON","ra_fileType_images":"Obrazy","ra_fileType_txt":"Tekst","ra_fileType_video,":"Wideo","ra_month_Apr":"kwiecie\u0144","ra_month_Aug":"sierpie\u0144","ra_month_Dec":"grudzie\u0144","ra_month_Feb":"luty","ra_month_Jan":"stycze\u0144","ra_month_Jul":"lipiec","ra_month_Jun":"czerwiec","ra_month_Mai":"Mai","ra_month_Mar":"Zniszczy\u0107","ra_month_Nov":"listopad","ra_month_Oct":"pa\u017adziernik","ra_month_Sep":"wrzesie\u0144","ra_months_Apr":"kwiecie\u0144","ra_months_Aug":"sierpie\u0144","ra_months_Dec":"grudzie\u0144","ra_months_Feb":"luty","ra_months_Jan":"stycze\u0144","ra_months_Jul":"lipiec","ra_months_Jun":"czerwiec","ra_months_Mai":"Mai","ra_months_Mar":"Zniszczy\u0107","ra_months_Nov":"listopad","ra_months_Oct":"pa\u017adziernik","ra_months_Sep":"wrzesie\u0144","ra_Cannot decode license":"Nie mo\u017cna zdekodowa\u0107 licencji","ra_Invalid answer from server":"Nieprawid\u0142owa odpowied\u017a z serwera","ra_License %s":"Licencja %s","ra_License does not exist":"Licencja nie istnieje","ra_License expired on %s":"Licencja wygas\u0142a w dniu %s","ra_License for other product \\"%s\\"":"Licencja na inny produkt \u201e%s\u201d","ra_License is for version %s, but required version is %s.":"Licencja dotyczy wersji %s, ale wymagana wersja to %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"Numer seryjny (UUID) \u201e%s\u201d w licencji dotyczy innego urz\u0105dzenia.","ra_Serial number (UUID)":"Numer seryjny (UUID)","ra_Check license":"Sprawd\u017a licencj\u0119","ra_Request timed out":"Up\u0142yn\u0105\u0142 limit czasu \u017c\u0105dania","ra_Instance is not alive":"Instancja nie jest aktywna","ra_Show/Hide object descriptions":"Poka\u017c/ukryj opisy obiekt\xf3w","ra_Use system settings for position":"U\u017cyj ustawie\u0144 systemowych dla pozycji","ra_Longitude":"D\u0142ugo\u015b\u0107 geograficzna","ra_Latitude":"Szeroko\u015b\u0107","ra_Take browser position":"Zajmij pozycj\u0119 z przegl\u0105darki","ra_Take position from system settings":"Zajmij pozycj\u0119 z ustawie\u0144 systemowych","ra_Port is already used by %s":"Port jest ju\u017c u\u017cywany przez %s","ra_Port could be used by %s":"Port mo\u017ce by\u0107 u\u017cywany przez %s","ra_filter_customs_without":"bez","ra_Use iobroker.acme adapter for letsencrypt certificates":"U\u017cyj adaptera iobroker.acme dla certyfikat\xf3w letsencrypt","ra_Do not use let\'s encrypt":"Nie u\u017cywaj zaszyfrujmy","ra_Use all available let\'s encrypt certificates":"U\u017cyj wszystkich dost\u0119pnych certyfikat\xf3w Let\'s Encrypt","ra_Public certificate":"Certyfikat publiczny","ra_Private certificate":"Prywatny certyfikat","ra_Chained certificate":"Certyfikat \u0142a\u0144cuchowy","ra_Suitable license not found in license manager":"Nie znaleziono odpowiedniej licencji w mened\u017cerze licencji","ra_Please enter the license":"Prosz\u0119 wprowadzi\u0107 licencj\u0119","ra_Checked":"Sprawdzony","ra_locally":"lokalnie","ra_via internet":"przez internet","ra_Yes":"Tak","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Nie znaleziono licencji w mened\u017cerze licencji. Chcesz zaktualizowa\u0107 licencje z iobroker.net?","ra_Fallback custom certificates":"Niestandardowe certyfikaty zast\u0119pcze","ra_Clone current row":"Sklonuj bie\u017c\u0105cy wiersz","ra_fileType_video":"Wideo","ra_select_folder_hint":"Aby wybra\u0107 folder, wystarczy przytrzyma\u0107 klawisz \u201eshift\u201d, klikaj\u0105c folder.","ra_Accept license":"Zaakceptuj licencj\u0119","ra_License agreement":"Umowa licencyjna","ra_Import from %s":"Importuj z %s","ra_Export data to %s file":"Eksportuj dane do pliku %s","ra_Import data from %s file":"Importuj dane z pliku %s","ra_No data found in file":"Nie znaleziono danych w pliku","ra_Append or replace?":"Do\u0142\u0105czy\u0107 czy zast\u0105pi\u0107?","ra_Append %s entries or replace existing?":"Do\u0142\u0105czy\u0107 wpisy %s czy zast\u0105pi\u0107 istniej\u0105ce?","ra_Replace":"Zast\u0119powa\u0107","ra_Append":"Doda\u0107","ra_May not trigger \\"updateLicenses\\"":"Mo\u017ce nie uruchamia\u0107 \u201eupdateLicenses\u201d","ra_Unknown error":"Nieznany b\u0142\u0105d","ra_License must be converted":"Licencja musi zosta\u0107 przekonwertowana na nowsz\u0105 wersj\u0119. Mo\u017cesz to zrobi\u0107 w swoim profilu iobroker.net.","ra_No one license found in license manager":"Nie znaleziono licencji w mened\u017cerze licencji","ra_Please create license":"Utw\xf3rz licencj\u0119","ra_Product":"Produkt","ra_Version":"Wersja","ra_ValidTill":"Obowi\u0105zuje do","ra_Commercial":"Handlowy","ra_Not a number":"Nie numer","ra_Edit value":"Edytuj warto\u015b\u0107","ra_Edit ACL":"Edytuj listy ACL","ra_Edit role":"Edytuj rol\u0119","ra_Edit function":"Funkcja edycji","ra_Edit room":"Edytuj pok\xf3j","ra_Edit alias":"Edytuj alias","ra_View file":"Zobaczy\u0107 plik","ra_Del":"Delete","ra_Show all folders":"Poka\u017c wszystkie foldery","ra_Restrict to folder":"Ogranicz do folderu","ra_Select type of export":"Wybierz rodzaj eksportu","ra_You can export all objects or just the selected branch.":"Mo\u017cesz wyeksportowa\u0107 wszystkie obiekty lub tylko wybran\u0105 ga\u0142\u0105\u017a.","ra_Do not export values of states":"Nie eksportuj warto\u015bci stan\xf3w","ra_Selected %s object(s)":"Wybrane obiekty %s","ra_create_device":"Utw\xf3rz urz\u0105dzenie","ra_create_channel":"Utw\xf3rz kana\u0142","ra_create_state":"Utw\xf3rz stan","ra_create_string_state":"Utw\xf3rz stan ci\u0105gu","ra_create_number_state":"Utw\xf3rz stan liczbowy","ra_create_boolean_state":"Utw\xf3rz stan logiczny","ra_Select color":"Wybierz kolor","ra_Cannot read licenses: %s":"Nie mo\u017cna odczyta\u0107 licencji: %s","ra_Advanced options":"Zaawansowane opcje"}')},324:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"Fun\xe7\xe3o","ra_filter_id":"ID","ra_filter_name":"Nome","ra_filter_role":"Papel (Fun\xe7\xe3o)","ra_filter_room":"Quarto","ra_tooltip_ack":"Confirmado","ra_tooltip_from":"De","ra_tooltip_lc":"\xdaltima altera\xe7\xe3o","ra_tooltip_quality":"Qualidade","ra_tooltip_ts":"Timestamp","ra_tooltip_user":"Usu\xe1rio","ra_tooltip_value":"Valor","ra_Are you sure?":"Voc\xea tem certeza?","ra_Cancel":"Cancelar","ra_Copied":"Copiado","ra_Copied %s":"\\"%s\\" copiado","ra_Define functions":"Definir fun\xe7\xf5es","ra_Define rooms":"Definir quartos","ra_Error":"Erro","ra_Message":"mensagem","ra_Ok":"Est\xe1 bem","ra_Please select object ID...":"Selecione o ID do objeto ...","ra_Selected":"Selecionado","ra_Unknown error!":"Erro desconhecido!","ra_Value":"Valor","ra_filter_type":"Tipo","ra_invalidConfig":"Configura\xe7\xf5es inv\xe1lidas","ra_otherConfig":"Configura\xe7\xf5es de outro adaptador %s","ra_tooltip_copyState":"Copie o valor do estado","ra_tooltip_customConfig":"Op\xe7\xf5es customizadas","ra_tooltip_deleteObject":"Excluir objeto","ra_tooltip_editObject":"Editar objeto","ra_tooltip_editState":"Edite o valor do estado","ra_filter_customs":"Configura\xe7\xf5es","ra_Listen on all IPs":"Ou\xe7a em todos os IPs","ra_dow_Fr":"Fr","ra_dow_Mo":"Mo","ra_dow_Sa":"Sa","ra_dow_Su":"Su","ra_dow_Th":"\xba","ra_Save":"Salve \ue051","ra_Save and close":"Salvar e fechar","ra_Close":"Perto","ra_Auto (no custom columns)":"Auto (sem colunas personalizadas)","ra_Transparent dialog":"Di\xe1logo transparente","ra_Width":"Largura","ra_val":"Valor","ra_buttons":"Bot\xf5es","ra_Configure visible columns":"Configurar colunas vis\xedveis","ra_Cannot update attribute, because not found in the object":"N\xe3o \xe9 poss\xedvel atualizar o atributo, porque n\xe3o foi encontrado no objeto","ra_Edit object field":"Editar campo de objeto","ra_Hide empty folders":"Esconder pastas vazias","ra_Reload files":"Recarregar arquivos","ra_Create folder":"Criar pasta","ra_Upload file":"Subir arquivo","ra_User files":"Arquivos do usu\xe1rio","ra_Confirm deletion of %s":"Confirme a exclus\xe3o de %s","ra_Delete (no confirm for 5 mins)":"Excluir (sem confirma\xe7\xe3o por 5 minutos)","ra_Delete":"Excluir","ra_Toggle expert mode":"Alternar modo especialista","ra_Toggle view mode":"Alternar modo de visualiza\xe7\xe3o","ra_Root":"Raiz","ra_Back to %s":"Voltar para %s","ra_Place your files here or click here to open the browse dialog":"Coloque seus arquivos aqui ou clique aqui para abrir a janela de navega\xe7\xe3o","ra_If no file will be created in the folder, it will disappear after the browser closed":"Se nenhum arquivo for criado na pasta, ele desaparecer\xe1 depois que o navegador for fechado","ra_Folder name":"Nome da pasta","ra_Create new folder in %s":"Crie uma nova pasta em %s","ra_Duplicate name":"Nome duplicado","ra_Invalid parent folder!":"Pasta pai inv\xe1lida!","ra_Drop file here":"Solte o arquivo aqui","ra_Suppress question for next %s minutes":"Suprimir pergunta nos pr\xf3ximos %s minutos","ra_Clear filter":"Filtro limpo","ra_Update":"Atualizar","ra_Load configuration from file":"Carregar configura\xe7\xe3o do arquivo","ra_Save configuration to file":"Salvar configura\xe7\xe3o em arquivo","sc_cron":"CRON","sc_date":"Data","sc_dates":"Dias","sc_dows":"Dia da semana","sc_every":"todos","sc_everyN_dates":"a cada N dias","sc_everyN_dows":"todos os N dias da semana","sc_everyN_hours":"a cada N horas","sc_everyN_minutes":"a cada N minutos","sc_everyN_months":"a cada N meses","sc_everyN_seconds":"a cada N segundos","sc_every_dates":"todo dia","sc_every_dows":"todos os dias da semana","sc_every_hours":"toda hora","sc_every_minutes":"todo minuto","sc_every_months":"todo m\xeas","sc_every_seconds":"todo segundo","sc_from":"de","sc_hours":"horas","sc_interval":"intervalo","sc_intervalBetween":"intervalo entre","sc_minutes":"minutos","sc_months":"meses","sc_once":"uma vez","sc_period":"per\xedodo","sc_seconds":"segundos","sc_simple":"simples","sc_specific":"tempo espec\xedfico","sc_specific_dates":"datas espec\xedficas","sc_specific_dows":"dia espec\xedfico de semanas","sc_specific_hours":"horas espec\xedficas","sc_specific_minutes":"minutos espec\xedficos","sc_specific_months":"meses espec\xedficos","sc_specific_seconds":"segundos espec\xedficos","sc_time":"tempo","sc_to":"para","sc_wizard":"assistente","sch_all":"tudo","sch_astroDay":"dia astral","sch_astroNight":"noite astral","sch_astro_dawn":"amanhecer","sch_astro_dusk":"anoitecer","sch_astro_goldenHour":"hora dourada","sch_astro_goldenHourEnd":"Fim da hora dourada","sch_astro_nadir":"nadir","sch_astro_nauticalDawn":"Amanhecer n\xe1utico","sch_astro_nauticalDusk":"Anoitecer n\xe1utico","sch_astro_night":"noite","sch_astro_nightEnd":"fim da noite","sch_astro_solarNoon":"meio-dia solar","sch_astro_sunrise":"nascer do sol","sch_astro_sunriseEnd":"fim do nascer do sol","sch_astro_sunset":"p\xf4r do sol","sch_astro_sunsetStart":"in\xedcio do p\xf4r do sol","sch_at":"\xe0s","sch_desc_atTime":"em %s","sch_desc_everyDay":"todo dia","sch_desc_everyHour":"toda hora","sch_desc_everyMinute":"todo minuto","sch_desc_everyMonth":"todo m\xeas","sch_desc_everyNDay":"a cada %s dias","sch_desc_everyNHours":"a cada %s horas","sch_desc_everyNMinutes":"a cada %s minutos","sch_desc_everyNMonths":"a cada %s meses","sch_desc_everyNWeeks":"a cada %s semanas","sch_desc_everyNYears":"a cada %s anos","sch_desc_everyWeek":"toda semana","sch_desc_everyYear":"todo ano","sch_desc_intervalFromTo":"de %s para %s","sch_desc_never":"nunca","sch_desc_onDate":"em %s de %s","sch_desc_onDates":"em %s e %s de","sch_desc_onEveryDate":"em toda data de","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s e %s","sch_desc_onWeekday":"em %s","sch_desc_onWeekdays":"em %s e %s","sch_desc_onWeekends":"nos fins de semana","sch_desc_onWorkdays":"em dias \xfateis","sch_desc_onceInPast":"n\xe3o ser\xe1 mais executado, porque o come\xe7o est\xe1 no passado","sch_desc_once_on":"em %s","sch_desc_validFrom":"de %s","sch_desc_validFromTo":"Executar de at\xe9","sch_desc_validTo":"at\xe9 %s","sch_every":"cada","sch_exactTime":"tempo espec\xedfico","sch_from":"de","sch_fromTo":"de a\xb4t","sch_intervalTime":"tempo de intervalo","sch_invert":"invertido","sch_no_one":"nenhum","sch_on":"em","sch_period":"per\xedodo","sch_periodDaily":"diariamente","sch_periodDates":"datas","sch_periodDay":"dia","sch_periodEvery":"todos","sch_periodEveryDay":"todo dia","sch_periodEveryMonth":"todo m\xeas","sch_periodEveryWeek":"toda semana","sch_periodEveryYear":"todo ano","sch_periodHours":"horas","sch_periodMinutes":"minutos","sch_periodMonth":"m\xeas","sch_periodMonthly":"por m\xeas","sch_periodOnce":"uma vez","sch_periodSpecificMonths":"meses espec\xedficos","sch_periodWeek":"semana","sch_periodWeekdays":"dias \xfateis","sch_periodWeekend":"final de semana","sch_periodWeekly":"semanal","sch_periodWorkdays":"dias \xfateis","sch_periodYear":"ano","sch_periodYearly":"anual","sch_specificTime":"tempo espec\xedfico","sch_time":"tempo","sch_to":"para","sch_valid":"v\xe1lido","sch_validFrom":"de","sch_validTo":"para","sch_wholeDay":"dia inteiro","sch_yearEveryMonth":"todo m\xeas","ra_Define schedule...":"Definir programa\xe7\xe3o ...","ra_Repeat":"Repita","ra_use seconds":"use segundos","ra_close":"fechar","ra_dow_Tu":"Tu","ra_Toggle the states view":"Alternar a visualiza\xe7\xe3o dos estados","ra_Add new child object to selected parent":"Adicionar novo objeto filho ao pai selecionado","ra_Add objects tree from JSON file":"Adicionar \xe1rvore de objetos do arquivo JSON","ra_Save objects tree as JSON file":"Salvar \xe1rvore de objetos como arquivo JSON","ra_Objects":"Objetos","ra_States":"Estados","ra_object_changed_by_user":"Objeto alterado pela \xfaltima vez em","ra_object_changed_by":"Objeto alterado por","ra_state_changed_from":"Objeto alterado de","ra_state_changed_by":"Estado alterado por","ra_aclOwner_read_object":"O propriet\xe1rio pode ler o objeto","ra_aclOwner_read_state":"O propriet\xe1rio pode ler o estado","ra_aclOwner_write_object":"O propriet\xe1rio pode escrever o objeto","ra_aclOwner_write_state":"O propriet\xe1rio pode escrever o estado","ra_aclGroup_read_object":"O grupo pode ler o objeto","ra_aclGroup_read_state":"O grupo pode ler o estado","ra_aclGroup_write_object":"O grupo pode escrever o objeto","ra_aclGroup_write_state":"O grupo pode escrever o estado","ra_aclEveryone_read_object":"Todos podem ler objetos","ra_aclEveryone_read_state":"Todos podem ler o estado","ra_aclEveryone_write_object":"Todos podem escrever objetos","ra_aclEveryone_write_state":"Todos podem escrever o estado","ra_Folders always first":"Pastas sempre primeiro","ra_changedFrom":"Mudou de","ra_qualityCode":"C\xf3digo de qualidade","ra_timestamp":"Timestamp","ra_lastChange":"\xdaltima mudan\xe7a","ra_Owner group":"Grupo propriet\xe1rio","ra_Owner user":"Usu\xe1rio propriet\xe1rio","ra_Create":"Crio","ra_Changed from":"Mudou de","ra_Quality code":"Qualidade","ra_Timestamp":"Timestamp","ra_Last change":"\xdaltima mudan\xe7a","ra_Collapse all nodes":"Recolher todos os n\xf3s","ra_Edit custom config":"Editar configura\xe7\xe3o personalizada","ra_Collapse one step node":"Recolher um n\xedvel","ra_Expand one step node":"Expanda um n\xedvel","ra_Refresh tree":"Atualizar \xe1rvore","ra_Expand all nodes":"Expanda todos os n\xf3s","ra_Deselect all":"Desmarque todos","ra_Select all":"Selecionar tudo","ra_%s object(s) processed":"%s objeto(s) processado(s)","ra_Invalid structure":"Estrutura inv\xe1lida","ra_%s was imported":"%s foi importado","ra_Failed to open JSON File":"Falha ao abrir arquivo JSON","ra_Only following structures of objects are available:":"Apenas as seguintes estruturas de objetos est\xe3o dispon\xedveis:","ra_Folder \u2192 State":"Pasta \u2192 Estado","ra_Folder \u2192 Channel \u2192 State":"Pasta \u2192 Canal \u2192 Estado","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"Pasta \u2192 Dispositivo \u2192 Canal \u2192 Estado","ra_Device \u2192 Channel \u2192 State":"Dispositivo \u2192 Canal \u2192 Estado","ra_Channel \u2192 State":"Canal \u2192 Estado","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"Os n\xe3o especialistas podem criar novos objetos apenas em \\"0_userdata.0\\" ou \\"alias.0\\".","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"Os especialistas podem criar objetos em qualquer lugar, exceto no segundo n\xedvel (por exemplo, \\"vis.0\\" ou \\"javascript.0\\").","ra_expertMode":"Modo especialista","ra_On weekdays":"Nos dias \xfateis","ra_Drop the files here...":"Solte o arquivo aqui ...","ra_Drag \'n\' drop some files here, or click to select files":"Arraste e solte alguns arquivos aqui ou clique para selecionar arquivos","ra_Clear":"Excluir","ra_Clear icon":"\xcdcone de limpeza","ra_none":"Nenhum","ra_Select predefined icon":"Selecione o \xedcone predefinido","ra_Show lines between rows":"Mostrar linhas entre as linhas","ra_The page you are looking for was not found":"A p\xe1gina que voc\xea est\xe1 procurando n\xe3o foi encontrada","ra_Good luck":"Boa sorte","ra_Cannot find \\"%s\\"":"N\xe3o foi poss\xedvel encontrar \\"%s\\"","ra_Cannot read \\"%s\\"":"N\xe3o \xe9 poss\xedvel ler \\"%s\\"","ra_Background image":"Imagem de fundo","ra_View: %s":"Visualizar: %s","ra_Copy content":"Copiar conte\xfado","ra_Filter":"Filtro","ra_All objects":"Todos os objetos","ra_Only selected":"Apenas selecionado","ra_Change color theme":"Alterar tema de cores","ra_daysShortText":"d.","ra_Instance %s is alive":"O %s da inst\xe2ncia est\xe1 ativo","ra_Instance %s is not alive":"O %s da inst\xe2ncia n\xe3o est\xe1 ativo","ra_Used system settings":"Configura\xe7\xf5es do sistema usadas","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"N\xe3o \xe9 poss\xedvel determinar a posi\xe7\xe3o: as configura\xe7\xf5es do sistema est\xe3o vazias e a detec\xe7\xe3o de GPS est\xe1 desativada no navegador","ra_Define schedule":"Definir cronograma","ra___different__":"diferente","ra_Please confirm":"Por favor confirme","ra_JSON editor":"Editor JSON","ra_System language":"Idioma do sistema","ra_Too small":"Muito pequeno","ra_Too big":"Muito grande","ra_Passwords are not equal!":"As senhas n\xe3o s\xe3o iguais!","ra_repeat":"repetir","ra_You can filter entries by entering here some text":"Voc\xea pode filtrar as entradas digitando aqui algum texto","ra_Show/hide filter input":"Mostrar/ocultar entrada de filtro","ra_Cannot add items with set filter":"N\xe3o \xe9 poss\xedvel adicionar itens com filtro definido","ra_Add row":"Adicionar linha","ra_Move up":"Subir","ra_Move down":"Mover para baixo","ra_Delete current row":"Excluir linha atual","ra_All items are filtered out":"Todos os itens s\xe3o filtrados","ra_Double click to reset table layout":"Clique duas vezes para redefinir o layout da tabela","ra_Cannot retrieve options, as instance is offline":"N\xe3o \xe9 poss\xedvel recuperar op\xe7\xf5es, pois a inst\xe2ncia est\xe1 off-line","ra_File is too big. Max %sk allowed. Try use SVG.":"O arquivo \xe9 muito grande. Max %sk permitido. Tente usar SVG.","ra_Cannot upload":"N\xe3o \xe9 poss\xedvel fazer upload","ra_Crop":"Colheita","ra_tooltip_comment":"Comente","ra_Disconnected":"Desconectado","ra_Connected":"Conectado","ra_Configure":"Configurar","ra_Invalid CRON":"CRON inv\xe1lido","ra_Discard":"Descartar","ra_Some data are not stored. Discard?":"Alguns dados n\xe3o s\xe3o armazenados. Descartar?","ra_Filter files":"Filtrar arquivos","ra_Please select file...":"Selecione o arquivo...","ra_dow_We":"N\xf3s","ra_fileType_all":"Todos os arquivos","ra_fileType_audio":"\xe1udio","ra_fileType_code":"C\xf3digo/JSON","ra_fileType_images":"Imagens","ra_fileType_txt":"Texto","ra_fileType_video,":"V\xeddeo","ra_month_Apr":"abril","ra_month_Aug":"agosto","ra_month_Dec":"dezembro","ra_month_Feb":"fevereiro","ra_month_Jan":"janeiro","ra_month_Jul":"julho","ra_month_Jun":"junho","ra_month_Mai":"Mai","ra_month_Mar":"mar\xe7o","ra_month_Nov":"novembro","ra_month_Oct":"outubro","ra_month_Sep":"setembro","ra_months_Apr":"abril","ra_months_Aug":"agosto","ra_months_Dec":"dezembro","ra_months_Feb":"fevereiro","ra_months_Jan":"janeiro","ra_months_Jul":"julho","ra_months_Jun":"junho","ra_months_Mai":"Mai","ra_months_Mar":"mar\xe7o","ra_months_Nov":"novembro","ra_months_Oct":"outubro","ra_months_Sep":"setembro","ra_Cannot decode license":"N\xe3o \xe9 poss\xedvel decodificar a licen\xe7a","ra_Invalid answer from server":"Resposta inv\xe1lida do servidor","ra_License %s":"Licen\xe7a %s","ra_License does not exist":"A licen\xe7a n\xe3o existe","ra_License expired on %s":"A licen\xe7a expirou em %s","ra_License for other product \\"%s\\"":"Licen\xe7a para outro produto \\"%s\\"","ra_License is for version %s, but required version is %s.":"A licen\xe7a \xe9 para a vers\xe3o %s, mas a vers\xe3o necess\xe1ria \xe9 %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"O n\xfamero de s\xe9rie (UUID) \\"%s\\" na licen\xe7a \xe9 para outro dispositivo.","ra_Serial number (UUID)":"N\xfamero de s\xe9rie (UUID)","ra_Check license":"Verifique a licen\xe7a","ra_Request timed out":"Solicita\xe7\xe3o expirou","ra_Instance is not alive":"A inst\xe2ncia n\xe3o est\xe1 ativa","ra_Show/Hide object descriptions":"Mostrar/ocultar descri\xe7\xf5es de objetos","ra_Use system settings for position":"Use as configura\xe7\xf5es do sistema para a posi\xe7\xe3o","ra_Longitude":"Longitude","ra_Latitude":"Latitude","ra_Take browser position":"Tomar posi\xe7\xe3o do navegador","ra_Take position from system settings":"Tomar posi\xe7\xe3o a partir das configura\xe7\xf5es do sistema","ra_Port is already used by %s":"A porta j\xe1 est\xe1 sendo usada por %s","ra_Port could be used by %s":"A porta pode ser usada por %s","ra_filter_customs_without":"sem","ra_Use iobroker.acme adapter for letsencrypt certificates":"Use o adaptador iobroker.acme para certificados letsencrypt","ra_Do not use let\'s encrypt":"N\xe3o use vamos criptografar","ra_Use all available let\'s encrypt certificates":"Use todos os certificados dispon\xedveis vamos criptografar","ra_Public certificate":"certificado p\xfablico","ra_Private certificate":"certificado privado","ra_Chained certificate":"certificado encadeado","ra_Suitable license not found in license manager":"Licen\xe7a adequada n\xe3o encontrada no gerenciador de licen\xe7as","ra_Please enter the license":"Por favor, insira a licen\xe7a","ra_Checked":"Verificado","ra_locally":"localmente","ra_via internet":"via internet","ra_Yes":"Sim","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"Licen\xe7a n\xe3o encontrada no gerenciador de licen\xe7as. Deseja atualizar as licen\xe7as do iobroker.net?","ra_Fallback custom certificates":"Certificados personalizados alternativos","ra_Clone current row":"Clonar linha atual","ra_fileType_video":"V\xeddeo","ra_select_folder_hint":"Para selecionar a pasta, basta segurar a tecla \\"shift\\" clicando na pasta.","ra_Accept license":"Aceitar licen\xe7a","ra_License agreement":"Contrato de licen\xe7a","ra_Import from %s":"Importar de %s","ra_Export data to %s file":"Exportar dados para o arquivo %s","ra_Import data from %s file":"Importar dados do arquivo %s","ra_No data found in file":"Nenhum dado encontrado no arquivo","ra_Append or replace?":"Acrescentar ou substituir?","ra_Append %s entries or replace existing?":"Acrescentar %s entradas ou substituir as existentes?","ra_Replace":"Substituir","ra_Append":"Acrescentar","ra_May not trigger \\"updateLicenses\\"":"Pode n\xe3o acionar \\"updateLicenses\\"","ra_Unknown error":"Erro desconhecido","ra_License must be converted":"A licen\xe7a deve ser convertida para uma vers\xe3o mais recente. Voc\xea pode faz\xea-lo em seu perfil iobroker.net.","ra_No one license found in license manager":"Nenhuma licen\xe7a encontrada no gerenciador de licen\xe7as","ra_Please create license":"Crie uma licen\xe7a","ra_Product":"produtos","ra_Version":"Vers\xe3o","ra_ValidTill":"V\xe1lida at\xe9","ra_Commercial":"Comercial","ra_Not a number":"N\xe3o \xe9 um n\xfamero","ra_Edit value":"Editar valor","ra_Edit ACL":"Editar ACL","ra_Edit role":"Editar papel","ra_Edit function":"Fun\xe7\xe3o de edi\xe7\xe3o","ra_Edit room":"Sala de edi\xe7\xe3o","ra_Edit alias":"Editar alias","ra_View file":"Visualizar arquivo","ra_Del":"Delete","ra_Show all folders":"Mostrar todas as pastas","ra_Restrict to folder":"Restringir \xe0 pasta","ra_Select type of export":"Selecione o tipo de exporta\xe7\xe3o","ra_You can export all objects or just the selected branch.":"Voc\xea pode exportar todos os objetos ou apenas a ramifica\xe7\xe3o selecionada.","ra_Do not export values of states":"N\xe3o exporte valores de estados","ra_Selected %s object(s)":"%s objeto(s) selecionado(s)","ra_create_device":"Criar dispositivo","ra_create_channel":"Criar canal","ra_create_state":"Criar estado","ra_create_string_state":"Criar estado de string","ra_create_number_state":"Criar estado num\xe9rico","ra_create_boolean_state":"Criar estado booleano","ra_Select color":"Selecione a cor","ra_Cannot read licenses: %s":"N\xe3o \xe9 poss\xedvel ler licen\xe7as: %s","ra_Advanced options":"Op\xe7\xf5es avan\xe7adas"}')},57629:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"\u0444\u0443\u043d\u043a\u0446\u0438\u044f","ra_filter_id":"ID","ra_filter_name":"\u0418\u043c\u044f","ra_filter_role":"\u0440\u043e\u043b\u044c","ra_filter_room":"\u043a\u043e\u043c\u043d\u0430\u0442\u0430","ra_tooltip_ack":"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u043e","ra_tooltip_from":"\u041e\u0442","ra_tooltip_lc":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435","ra_tooltip_quality":"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e","ra_tooltip_ts":"\u041e\u0442\u043c\u0435\u0442\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438","ra_tooltip_user":"\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c","ra_tooltip_value":"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435","ra_Are you sure?":"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b?","ra_Cancel":"\u041e\u0442\u043c\u0435\u043d\u0430","ra_Copied":"\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e","ra_Copied %s":"\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043e \\"%s\\"","ra_Define functions":"\u0417\u0430\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438","ra_Define rooms":"\u0417\u0430\u0434\u0430\u0442\u044c \u043a\u043e\u043c\u043d\u0430\u0442\u044b","ra_Error":"\u041e\u0448\u0438\u0431\u043a\u0430","ra_Message":"\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435","ra_Ok":"Ok","ra_Please select object ID...":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 ...","ra_Selected":"\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439","ra_Unknown error!":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430!","ra_Value":"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435","ra_filter_type":"\u0422\u0438\u043f","ra_invalidConfig":"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","ra_otherConfig":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 %s","ra_tooltip_copyState":"\u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f","ra_tooltip_customConfig":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","ra_tooltip_deleteObject":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_tooltip_editObject":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_tooltip_editState":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f","ra_filter_customs":"\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","ra_dow_Fr":"\u041f\u0442","ra_dow_Mo":"\u041f\u043d","ra_dow_Sa":"\u0421\u0431","ra_dow_Su":"\u0412\u0441","ra_dow_Th":"\u0427\u0442","ra_dow_Tu":"\u0412\u0442","ra_dow_We":"\u0421\u0440","ra_Listen on all IPs":"\u0421\u043b\u0443\u0448\u0430\u0442\u044c \u043d\u0430 \u0432\u0441\u0435\u0445 IP","ra_Save":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","ra_Save and close":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c","ra_Close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","ra_Auto (no custom columns)":"\u0410\u0432\u0442\u043e (\u0431\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432)","ra_Transparent dialog":"\u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u043e\u0433","ra_Width":"\u0428\u0438\u0440\u0438\u043d\u0430","ra_val":"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435","ra_buttons":"\u041a\u043d\u043e\u043f\u043a\u0438","ra_Configure visible columns":"\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b","ra_Cannot update attribute, because not found in the object":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435","ra_Edit object field":"\u041f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430","ra_Hide empty folders":"\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u0430\u043f\u043a\u0438","ra_Reload files":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c","ra_Create folder":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443","ra_Upload file":"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b","ra_User files":"\u0424\u0430\u0439\u043b\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f","ra_Confirm deletion of %s":"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 %s","ra_Delete (no confirm for 5 mins)":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c (\u0431\u0435\u0437 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 5 \u043c\u0438\u043d\u0443\u0442)","ra_Delete":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","ra_Toggle expert mode":"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c","ra_Toggle view mode":"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430","ra_Root":"\u041d\u0430\u0447\u0430\u043b\u043e","ra_Back to %s":"\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a %s","ra_Place your files here or click here to open the browse dialog":"\u041f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b \u0441\u044e\u0434\u0430 \u0438\u043b\u0438 \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430","ra_If no file will be created in the folder, it will disappear after the browser closed":"\u0415\u0441\u043b\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0444\u0430\u0439\u043b, \u043e\u043d \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.","ra_Folder name":"\u0418\u043c\u044f \u043f\u0430\u043f\u043a\u0438","ra_Create new folder in %s":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432 %s","ra_Duplicate name":"\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0435\u0435\u0441\u044f \u0438\u043c\u044f","ra_Invalid parent folder!":"\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043f\u0430\u043f\u043a\u0430!","ra_Drop file here":"\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0441\u044e\u0434\u0430","ra_Suppress question for next %s minutes":"\u0421\u043a\u0440\u044b\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 %s \u043c\u0438\u043d\u0443\u0442(\u044b)","ra_Clear filter":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440","ra_Update":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c","ra_Load configuration from file":"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438\u0437 \u0444\u0430\u0439\u043b\u0430","ra_Save configuration to file":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0444\u0430\u0439\u043b","sc_cron":"CRON","sc_date":"\u0414\u0430\u0442\u0430","sc_dates":"\u0414\u0430\u0442\u044b","sc_dows":"\u0414\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438","sc_every":"\u043a\u0430\u0436\u0434\u044b\u0439(\u0443\u044e/\u044b\u0435)","sc_everyN_dates":"\u043a\u0430\u0436\u0434\u044b\u0439 N \u0434\u0435\u043d\u044c","sc_everyN_dows":"\u043a\u0430\u0436\u0434\u044b\u0439 N \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438","sc_everyN_hours":"\u043a\u0430\u0436\u0434\u044b\u0435 N \u0447\u0430\u0441\u043e\u0432","sc_everyN_minutes":"\u043a\u0430\u0436\u0434\u044b\u0435 N \u043c\u0438\u043d\u0443\u0442","sc_everyN_months":"\u043a\u0430\u0436\u0434\u044b\u0435 N \u043c\u0435\u0441\u044f\u0446\u0435\u0432","sc_everyN_seconds":"\u043a\u0430\u0436\u0434\u044b\u0435 N \u0441\u0435\u043a\u0443\u043d\u0434","sc_every_dates":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c","sc_every_dows":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438","sc_every_hours":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441","sc_every_minutes":"\u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443","sc_every_months":"\u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446","sc_every_seconds":"\u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443","sc_from":"\u041e\u0442","sc_hours":"\u0447\u0430\u0441\u044b","sc_interval":"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b","sc_intervalBetween":"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443","sc_minutes":"\u043c\u0438\u043d\u0443\u0442\u044b","sc_months":"\u041c\u0435\u0441\u044f\u0446\u044b","sc_once":"\u043e\u0434\u0438\u043d \u0440\u0430\u0437","sc_period":"\u041f\u0435\u0440\u0438\u043e\u0434","sc_seconds":"\u0441\u0435\u043a\u0443\u043d\u0434\u044b","sc_simple":"\u041f\u0440\u043e\u0441\u0442\u043e","sc_specific":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f","sc_specific_dates":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u0442\u044b","sc_specific_dows":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438","sc_specific_hours":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0447\u0430\u0441\u044b","sc_specific_minutes":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u0438\u043d\u0443\u0442\u044b","sc_specific_months":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u0435\u0441\u044f\u0446\u044b","sc_specific_seconds":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b","sc_time":"\u0412\u0440\u0435\u043c\u044f","sc_to":"\u0414\u043e","sc_wizard":"\u0424\u043e\u0440\u043c\u0430","sch_all":"\u0432\u0441\u0435","sch_astroDay":"\u0434\u043d\u0451\u043c","sch_astroNight":"\u043d\u043e\u0447\u044c\u044e","sch_astro_dawn":"\u0420\u0430\u0441\u0441\u0432\u0435\u0442","sch_astro_dusk":"\u0421\u0443\u043c\u0435\u0440\u043a\u0438","sch_astro_goldenHour":"\u0417\u043e\u043b\u043e\u0442\u043e\u0439 \u0447\u0430\u0441","sch_astro_goldenHourEnd":"\u041a\u043e\u043d\u0435\u0446 \u0437\u043e\u043b\u043e\u0442\u043e\u0433\u043e \u0447\u0430\u0441\u0430","sch_astro_nadir":"\u041d\u0430\u0434\u0438\u0440","sch_astro_nauticalDawn":"\u041c\u043e\u0440\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u0441\u0432\u0435\u0442","sch_astro_nauticalDusk":"\u041c\u043e\u0440\u0441\u043a\u0438\u0435 \u0441\u0443\u043c\u0435\u0440\u043a\u0438","sch_astro_night":"\u041d\u043e\u0447\u044c","sch_astro_nightEnd":"\u041a\u043e\u043d\u0435\u0446 \u043d\u043e\u0447\u0438","sch_astro_solarNoon":"\u0421\u043e\u043b\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u0434\u0435\u043d\u044c","sch_astro_sunrise":"\u0412\u043e\u0441\u0445\u043e\u0434","sch_astro_sunriseEnd":"\u0412\u043e\u0441\u0445\u043e\u0434 \u0441\u043e\u043b\u043d\u0446\u0430","sch_astro_sunset":"\u0417\u0430\u0445\u043e\u0434 \u0441\u043e\u043b\u043d\u0446\u0430","sch_astro_sunsetStart":"\u041d\u0430\u0447\u0430\u043b\u043e \u0437\u0430\u043a\u0430\u0442\u0430","sch_at":"\u0434\u0430\u0442\u0430","sch_desc_atTime":"\u0432 %s","sch_desc_everyDay":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c","sch_desc_everyHour":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441","sch_desc_everyMinute":"\u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443","sch_desc_everyMonth":"\u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446","sch_desc_everyNDay":"\u043a\u0430\u0436\u0434\u044b\u0439 %s \u0434\u0435\u043d\u044c","sch_desc_everyNHours":"\u043a\u0430\u0436\u0434\u044b\u0439 %s \u0447\u0430\u0441\u043e\u0432","sch_desc_everyNMinutes":"\u043a\u0430\u0436\u0434\u044b\u0435 %s \u043c\u0438\u043d\u0443\u0442","sch_desc_everyNMonths":"\u043a\u0430\u0436\u0434\u044b\u0435 %s \u043c\u0435\u0441\u044f\u0446\u0435\u0432","sch_desc_everyNWeeks":"\u043a\u0430\u0436\u0434\u044b\u0435 %s \u043d\u0435\u0434\u0435\u043b\u044c","sch_desc_everyNYears":"\u043a\u0430\u0436\u0434\u044b\u0435 %s \u043b\u0435\u0442","sch_desc_everyWeek":"\u043a\u0430\u0436\u0434\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e","sch_desc_everyYear":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043e\u0434","sch_desc_intervalFromTo":"\u043e\u0442 %s \u0434\u043e %s","sch_desc_never":"\u043d\u0438\u043a\u043e\u0433\u0434\u0430","sch_desc_onDate":"%s %s","sch_desc_onDates":"%s \u0438 %s","sch_desc_onEveryDate":"\u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s \u0438 %s","sch_desc_onWeekday":"%s","sch_desc_onWeekdays":"%s \u0438 %s","sch_desc_onWeekends":"\u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445","sch_desc_onWorkdays":"\u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0434\u043d\u0438","sch_desc_onceInPast":"\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u043e \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c","sch_desc_once_on":"%s","sch_desc_validFrom":"%s","sch_desc_validFromTo":"\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441","sch_desc_validTo":"%s","sch_every":"\u043a\u0430\u0436\u0434\u044b\u0439","sch_exactTime":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f","sch_from":"\u043e\u0442","sch_fromTo":"\u041e\u0442 \u0438 \u0434\u043e","sch_intervalTime":"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432\u0440\u0435\u043c\u0435\u043d\u0438","sch_invert":"\u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c","sch_no_one":"\u043d\u0438\u043a\u0430\u043a\u043e\u0439","sch_on":"\u043d\u0430","sch_period":"\u043f\u0435\u0440\u0438\u043e\u0434","sch_periodDaily":"\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e","sch_periodDates":"\u0414\u0430\u0442\u044b","sch_periodDay":"\u0414\u0435\u043d\u044c","sch_periodEvery":"\u043a\u0430\u0436\u0434\u044b\u0439","sch_periodEveryDay":"\u041a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c","sch_periodEveryMonth":"\u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446","sch_periodEveryWeek":"\u041a\u0430\u0436\u0434\u0443\u044e \u043d\u0435\u0434\u0435\u043b\u044e","sch_periodEveryYear":"\u041a\u0430\u0436\u0434\u044b\u0439 \u0433\u043e\u0434","sch_periodHours":"\u0447\u0430\u0441\u043e\u0432","sch_periodMinutes":"\u043c\u0438\u043d\u0443\u0442","sch_periodMonth":"\u043c\u0435\u0441\u044f\u0446","sch_periodMonthly":"\u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u043e","sch_periodOnce":"\u043e\u0434\u043d\u0430\u0436\u0434\u044b","sch_periodSpecificMonths":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u0435\u0441\u044f\u0446\u044b","sch_periodWeek":"\u041d\u0435\u0434\u0435\u043b\u044e","sch_periodWeekdays":"\u0411\u0443\u0434\u043d\u0438\u0435 \u0434\u043d\u0438","sch_periodWeekend":"\u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435","sch_periodWeekly":"\u0435\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e","sch_periodWorkdays":"\u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u0434\u043d\u0438","sch_periodYear":"\u0413\u043e\u0434","sch_periodYearly":"\u043a\u0430\u0436\u0434\u044b\u0439 \u0433\u043e\u0434","sch_specificTime":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f","sch_time":"\u0412\u0440\u0435\u043c\u044f","sch_to":"\u0432","sch_valid":"\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439","sch_validFrom":"\u043e\u0442","sch_validTo":"\u0432","sch_wholeDay":"\u0412\u0435\u0441\u044c \u0434\u0435\u043d\u044c","sch_yearEveryMonth":"\u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0435\u0441\u044f\u0446","ra_Define schedule...":"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 ...","ra_Repeat":"\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435","ra_use seconds":"\u0441\u0435\u043a\u0443\u043d\u0434\u044b","ra_close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","ra_months_Sep":"\u0421\u0435\u043d","ra_months_Oct":"\u041e\u043a\u0442","ra_months_Nov":"\u041d\u043e\u044f","ra_months_Mar":"\u041c\u0430\u0440\u0442","ra_months_Mai":"\u041c\u0430\u0439","ra_months_Jun":"\u0418\u044e\u043b\u044c","ra_months_Jul":"\u0418\u044e\u043d\u044c","ra_months_Jan":"\u042f\u043d\u0432","ra_months_Feb":"\u0424\u0435\u0432","ra_months_Dec":"\u0414\u0435\u043a","ra_months_Aug":"\u0410\u0432\u0433","ra_months_Apr":"\u0410\u043f\u0440","ra_Toggle the states view":"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439","ra_Add new child object to selected parent":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443","ra_Add objects tree from JSON file":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 JSON","ra_Save objects tree as JSON file":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043a\u0430\u043a \u0444\u0430\u0439\u043b JSON","ra_Objects":"\u041e\u0431\u044a\u0435\u043a\u0442\u044b","ra_States":"\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f","ra_object_changed_by_user":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0432","ra_object_changed_by":"\u041e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d","ra_state_changed_from":"\u041e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d \u0441","ra_state_changed_by":"\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e","ra_aclOwner_read_object":"\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_aclOwner_read_state":"\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_aclOwner_write_object":"\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_aclOwner_write_state":"\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_aclGroup_read_object":"\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_aclGroup_read_state":"\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_aclGroup_write_object":"\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_aclGroup_write_state":"\u0413\u0440\u0443\u043f\u043f\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_aclEveryone_read_object":"\u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_aclEveryone_read_state":"\u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_aclEveryone_write_object":"\u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442","ra_aclEveryone_write_state":"\u041a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_Folders always first":"\u041f\u0430\u043f\u043a\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u043c\u0435\u0441\u0442\u0435","ra_changedFrom":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u043e \u0441","ra_qualityCode":"\u041a\u043e\u0434 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430","ra_timestamp":"\u041e\u0442\u043c\u0435\u0442\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438","ra_lastChange":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435","ra_Owner group":"\u0413\u0440\u0443\u043f\u043f\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u0432","ra_Owner user":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c-\u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446","ra_Create":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c","ra_Changed from":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u043e","ra_Quality code":"\u0412\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c","ra_Timestamp":"\u0412\u0440\u0435\u043c\u0435\u043d\u0438","ra_Last change":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435","ra_Collapse all nodes":"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b","ra_Edit custom config":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e","ra_Collapse one step node":"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c","ra_Expand one step node":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u0434\u0438\u043d \u0443\u0440\u043e\u0432\u0435\u043d\u044c","ra_Refresh tree":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e","ra_Expand all nodes":"\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b","ra_Deselect all":"\u0423\u0431\u0440\u0430\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u0432\u0435\u0437\u0434\u0435","ra_Select all":"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435","ra_%s object(s) processed":"\u041e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043e: %s","ra_Invalid structure":"\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430","ra_%s was imported":"%s \u0431\u044b\u043b \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d","ra_Failed to open JSON File":"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b JSON","ra_Only following structures of objects are available:":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:","ra_Folder \u2192 State":"\u041f\u0430\u043f\u043a\u0430 \u2192 \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_Folder \u2192 Channel \u2192 State":"\u041f\u0430\u043f\u043a\u0430 \u2192 \u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"\u041f\u0430\u043f\u043a\u0430 \u2192 \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 \u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_Device \u2192 Channel \u2192 State":"\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2192 \u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_Channel \u2192 State":"\u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"\u041d\u0435-\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \xab0_userdata.0\xbb \u0438\u043b\u0438 \xabalias.0\xbb.","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"\u042d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u0435\u0437\u0434\u0435, \u043a\u0440\u043e\u043c\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \xabvis.0\xbb \u0438\u043b\u0438 \xabjavascript.0\xbb).","ra_expertMode":"\u042d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c","ra_On weekdays":"\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445","ra_Drop the files here...":"\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0441\u044e\u0434\u0430 ...","ra_Drag \'n\' drop some files here, or click to select files":"\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0441\u044e\u0434\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u043b\u0438 \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b","ra_Clear":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","ra_Clear icon":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a","ra_none":"\u043d\u0438\u0447\u0435\u0433\u043e","ra_Select predefined icon":"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0437\u043d\u0430\u0447\u043e\u043a","ra_Show lines between rows":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u0438\u043d\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438","ra_The page you are looking for was not found":"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0438\u0449\u0435\u0442\u0435, \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430","ra_Good luck":"\u0423\u0434\u0430\u0447\u0438","ra_Cannot find \\"%s\\"":"\u041d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0430\u0439\u0442\u0438 \\"%s\\"","ra_Cannot read \\"%s\\"":"\u041d\u0435 \u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \\"%s\\"","ra_Background image":"\u0424\u043e\u043d\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","ra_View: %s":"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440: %s","ra_Copy content":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435","ra_Filter":"\u0424\u0438\u043b\u044c\u0442\u0440","ra_All objects":"\u0412\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b","ra_Only selected":"\u0422\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435","ra_Change color theme":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0446\u0432\u0435\u0442\u043e\u0432\u0443\u044e \u0442\u0435\u043c\u0443","ra_daysShortText":"\u0434.","ra_Instance %s is alive":"\u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 %s \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442","ra_Instance %s is not alive":"\u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 %s \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442","ra_Used system settings":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435: \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0443\u0441\u0442\u044b, \u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 GPS \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.","ra_Define schedule":"\u0417\u0430\u0434\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435","ra___different__":"\u0440\u0430\u0437\u043d\u043e\u0435","ra_Please confirm":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435","ra_JSON editor":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 JSON","ra_System language":"\u042f\u0437\u044b\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b","ra_Too small":"\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435","ra_Too big":"\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435","ra_Passwords are not equal!":"\u041f\u0430\u0440\u043e\u043b\u0438 \u043d\u0435 \u0440\u0430\u0432\u043d\u044b!","ra_repeat":"\u043f\u043e\u0432\u0442\u043e\u0440","ra_You can filter entries by entering here some text":"\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438, \u0432\u0432\u0435\u0434\u044f \u0437\u0434\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442","ra_Show/hide filter input":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c/\u0441\u043a\u0440\u044b\u0442\u044c \u0432\u0432\u043e\u0434 \u0444\u0438\u043b\u044c\u0442\u0440\u0430","ra_Cannot add items with set filter":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c","ra_Add row":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u044f\u0434","ra_Move up":"\u0412\u0432\u0435\u0440\u0445","ra_Move down":"\u0412\u043d\u0438\u0437","ra_Delete current row":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","ra_All items are filtered out":"\u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b","ra_Double click to reset table layout":"\u0414\u0432\u0430\u0436\u0434\u044b \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043c\u0430\u043a\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","ra_Cannot retrieve options, as instance is offline":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.","ra_File is too big. Max %sk allowed. Try use SVG.":"\u0424\u0430\u0439\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e %sk. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SVG.","ra_Cannot upload":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c","ra_Crop":"\u041e\u0431\u0440\u0435\u0437\u0430\u0442\u044c","ra_tooltip_comment":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439","ra_Disconnected":"\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e","ra_Connected":"\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e","ra_Configure":"\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c","ra_Invalid CRON":"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 CRON","ra_Discard":"\u041e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f","ra_Some data are not stored. Discard?":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c. \u041e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f?","ra_month_Jan":"\u042f\u043d\u0432","ra_month_Feb":"\u0424\u0435\u0432","ra_month_Mar":"\u041c\u0440\u0442","ra_month_Apr":"\u0410\u043f\u0440","ra_month_Mai":"\u041c\u0430\u0439","ra_month_Jun":"\u0418\u044e\u043d","ra_month_Jul":"\u0418\u044e\u043b","ra_month_Aug":"\u0410\u0432\u0433","ra_month_Sep":"\u0421\u0435\u043d","ra_month_Oct":"\u041e\u043a\u0442","ra_month_Nov":"\u041d\u043e\u044f","ra_month_Dec":"\u0414\u0435\u043a","ra_Filter files":"\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b","ra_Please select file...":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b...","ra_fileType_all":"\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b","ra_fileType_audio":"\u0410\u0443\u0434\u0438\u043e","ra_fileType_code":"\u041a\u043e\u0434/JSON","ra_fileType_images":"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438","ra_fileType_txt":"\u0422\u0435\u043a\u0441\u0442","ra_fileType_video,":"\u0432\u0438\u0434\u0435\u043e","ra_Cannot decode license":"\u041d\u0435 \u043c\u043e\u0433\u0443 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e","ra_Invalid answer from server":"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","ra_License %s":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f %s","ra_License does not exist":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442","ra_License expired on %s":"\u0421\u0440\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0438\u0441\u0442\u0435\u043a %s","ra_License for other product \\"%s\\"":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \\"%s\\"","ra_License is for version %s, but required version is %s.":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 %s, \u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0432\u0435\u0440\u0441\u0438\u044f %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"\u0421\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 (UUID) \xab%s\xbb \u0432 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.","ra_Serial number (UUID)":"\u0421\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 (UUID)","ra_Check license":"\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e","ra_Request timed out":"\u0418\u0441\u0442\u0435\u043a\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430","ra_Instance is not alive":"\u042d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043d\u0435 \u0436\u0438\u0432\u043e\u0439","ra_Show/Hide object descriptions":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c/\u0441\u043a\u0440\u044b\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432","ra_Use system settings for position":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438","ra_Longitude":"\u0414\u043e\u043b\u0433\u043e\u0442\u0430","ra_Latitude":"\u0428\u0438\u0440\u043e\u0442\u0430","ra_Take browser position":"\u0412\u0437\u044f\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430","ra_Take position from system settings":"\u0417\u0430\u043d\u044f\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a","ra_Port is already used by %s":"\u041f\u043e\u0440\u0442 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f %s","ra_Port could be used by %s":"\u041f\u043e\u0440\u0442 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f %s","ra_filter_customs_without":"\u0431\u0435\u0437","ra_Use iobroker.acme adapter for letsencrypt certificates":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 iobroker.acme \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 letsencrypt","ra_Do not use let\'s encrypt":"\u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Let\u2019s Encrypt","ra_Use all available let\'s encrypt certificates":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b Let\u2019s encrypt","ra_Public certificate":"\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442","ra_Private certificate":"\u0427\u0430\u0441\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442","ra_Chained certificate":"Chained \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442","ra_Suitable license not found in license manager":"\u041f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439","ra_Please enter the license":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e","ra_Checked":"\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e","ra_locally":"\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e","ra_via internet":"\u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442","ra_Yes":"\u0414\u0430","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439. \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043e\u0442 iobroker.net?","ra_Fallback custom certificates":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b","ra_Clone current row":"\u041a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","ra_fileType_video":"\u0432\u0438\u0434\u0435\u043e","ra_select_folder_hint":"\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \xabShift\xbb, \u0449\u0435\u043b\u043a\u043d\u0443\u0432 \u043f\u0430\u043f\u043a\u0443.","ra_Accept license":"\u041f\u0440\u0438\u043d\u044f\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e","ra_License agreement":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435","ra_Import from %s":"\u0418\u043c\u043f\u043e\u0440\u0442 \u0438\u0437 %s","ra_Export data to %s file":"\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b %s","ra_Import data from %s file":"\u0418\u043c\u043f\u043e\u0440\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 %s","ra_No data found in file":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b","ra_Append or replace?":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c?","ra_Append %s entries or replace existing?":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 %s \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435?","ra_Replace":"\u0417\u0430\u043c\u0435\u043d\u044f\u0442\u044c","ra_Append":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c","ra_May not trigger \\"updateLicenses\\"":"\u041d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \xabupdateLicenses\xbb","ra_Unknown error":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430","ra_License must be converted":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043d\u0430 iobroker.net.","ra_No one license found in license manager":"\u0412 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043d\u0438 \u043e\u0434\u043d\u0430 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f","ra_Please create license":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e","ra_Product":"\u041f\u0440\u043e\u0434\u0443\u043a\u0442","ra_Version":"\u0412\u0435\u0440\u0441\u0438\u044f","ra_ValidTill":"\u0413\u043e\u0434\u0435\u043d \u0434\u043e","ra_Commercial":"\u041a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0430\u044f","ra_Not a number":"\u041d\u0435 \u0447\u0438\u0441\u043b\u043e","ra_Edit value":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435","ra_Edit ACL":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c ACL-\u0441\u043f\u0438\u0441\u043e\u043a","ra_Edit role":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u043e\u043b\u044c","ra_Edit function":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e","ra_Edit room":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043d\u0430\u0442\u0443","ra_Edit alias":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c","ra_View file":"\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0444\u0430\u0439\u043b","ra_Del":"Delete","ra_Show all folders":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438","ra_Restrict to folder":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043f\u0430\u043f\u043a\u043e\u0439","ra_Select type of export":"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430","ra_You can export all objects or just the selected branch.":"\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0442\u0432\u044c.","ra_Do not export values of states":"\u041d\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439","ra_Selected %s object(s)":"\u041e\u0431\u044a\u0435\u043a\u0442\u043e\u0432: %s","ra_create_device":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e","ra_create_channel":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u0430\u043d\u0430\u043b","ra_create_state":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_create_string_state":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438","ra_create_number_state":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u0430","ra_create_boolean_state":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_Select color":"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0446\u0432\u0435\u0442","ra_Cannot read licenses: %s":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438: %s","ra_Advanced options":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438"}')},57412:e=>{"use strict";e.exports=JSON.parse('{"ra_%s object(s) processed":"\u041e\u0431\u0440\u043e\u0431\u043b\u0435\u043d\u043e %s \u043e\u0431\u2019\u0454\u043a\u0442\u0456\u0432","ra_%s was imported":"%s \u0431\u0443\u043b\u043e \u0456\u043c\u043f\u043e\u0440\u0442\u043e\u0432\u0430\u043d\u043e","ra_Add new child object to selected parent":"\u0414\u043e\u0434\u0430\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u0434\u043e\u0447\u0456\u0440\u043d\u0456\u0439 \u043e\u0431\u2019\u0454\u043a\u0442 \u0434\u043e \u0432\u0438\u0431\u0440\u0430\u043d\u043e\u0433\u043e \u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u043e\u0433\u043e","ra_Add objects tree from JSON file":"\u0414\u043e\u0434\u0430\u0439\u0442\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0431\u2019\u0454\u043a\u0442\u0456\u0432 \u0456\u0437 \u0444\u0430\u0439\u043b\u0443 JSON","ra_Add row":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a","ra_All items are filtered out":"\u0423\u0441\u0456 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u0432\u0456\u0434\u0444\u0456\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043e","ra_All objects":"\u0412\u0441\u0456 \u043e\u0431\'\u0454\u043a\u0442\u0438","ra_Are you sure?":"\u0422\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0438\u0439?","ra_Auto (no custom columns)":"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e (\u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0445 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432)","ra_Back to %s":"\u041d\u0430\u0437\u0430\u0434 \u0434\u043e %s","ra_Background image":"\u0424\u043e\u043d\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","ra_Cancel":"\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438","ra_Cannot add items with set filter":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0434\u043e\u0434\u0430\u0442\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u0437\u0456 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u043c \u0444\u0456\u043b\u044c\u0442\u0440\u043e\u043c","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0432\u0438\u0437\u043d\u0430\u0447\u0438\u0442\u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044f: \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u043e\u0440\u043e\u0436\u043d\u0456, \u0430 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f GPS \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456","ra_Cannot find \\"%s\\"":"\u041d\u0435 \u0432\u0434\u0430\u0454\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0439\u0442\u0438 \\"%s\\"","ra_Cannot read \\"%s\\"":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u0438 \\"%s\\"","ra_Cannot retrieve options, as instance is offline":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u043e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438, \u043e\u0441\u043a\u0456\u043b\u044c\u043a\u0438 \u0435\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043e\u0444\u043b\u0430\u0439\u043d","ra_Cannot update attribute, because not found in the object":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u043e\u0441\u043a\u0456\u043b\u044c\u043a\u0438 \u0439\u043e\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0432 \u043e\u0431\u2019\u0454\u043a\u0442\u0456","ra_Cannot upload":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438","ra_Change color theme":"\u0417\u043c\u0456\u043d\u0438\u0442\u0438 \u043a\u043e\u043b\u044c\u043e\u0440\u043e\u0432\u0443 \u0442\u0435\u043c\u0443","ra_Changed from":"\u0417\u043c\u0456\u043d\u0435\u043d\u043e \u0437","ra_Channel \u2192 State":"\u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u0442\u0430\u043d","ra_Clear":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","ra_Clear filter":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u0456\u043b\u044c\u0442\u0440","ra_Clear icon":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0437\u043d\u0430\u0447\u043e\u043a","ra_Close":"\u0417\u0430\u043a\u0440\u0438\u0442\u0438","ra_Collapse all nodes":"\u0417\u0433\u043e\u0440\u043d\u0443\u0442\u0438 \u0432\u0441\u0456 \u0432\u0443\u0437\u043b\u0438","ra_Collapse one step node":"\u0417\u0433\u043e\u0440\u043d\u0443\u0442\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0440\u0456\u0432\u0435\u043d\u044c","ra_Configure":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438","ra_Configure visible columns":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0442\u043e\u0432\u043f\u0446\u0456","ra_Confirm deletion of %s":"\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f %s","ra_Connected":"\u041f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e","ra_Copied":"\u0421\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e","ra_Copied %s":"\u0421\u043a\u043e\u043f\u0456\u0439\u043e\u0432\u0430\u043d\u043e \\"%s\\"","ra_Copy content":"\u0421\u043a\u043e\u043f\u0456\u044e\u0439\u0442\u0435 \u0432\u043c\u0456\u0441\u0442","ra_Create":"\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438","ra_Create folder":"\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043f\u0430\u043f\u043a\u0443","ra_Create new folder in %s":"\u0421\u0442\u0432\u043e\u0440\u0456\u0442\u044c \u043d\u043e\u0432\u0443 \u043f\u0430\u043f\u043a\u0443 \u0432 %s","ra_Crop":"\u0423\u0440\u043e\u0436\u0430\u0439","ra_Define functions":"\u0412\u0438\u0437\u043d\u0430\u0447\u0438\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0456\u0457","ra_Define rooms":"\u0412\u0438\u0437\u043d\u0430\u0447\u0442\u0435 \u043a\u0456\u043c\u043d\u0430\u0442\u0438","ra_Define schedule":"\u0412\u0438\u0437\u043d\u0430\u0447\u0438\u0442\u0438 \u0440\u043e\u0437\u043a\u043b\u0430\u0434","ra_Define schedule...":"\u0412\u0438\u0437\u043d\u0430\u0447\u0438\u0442\u0438 \u0440\u043e\u0437\u043a\u043b\u0430\u0434...","ra_Delete":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","ra_Delete (no confirm for 5 mins)":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 (\u0431\u0435\u0437 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043d\u043d\u044f \u043f\u0440\u043e\u0442\u044f\u0433\u043e\u043c 5 \u0445\u0432\u0438\u043b\u0438\u043d)","ra_Delete current row":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a","ra_Deselect all":"\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438 \u0432\u0438\u0431\u0456\u0440 \u0443\u0441\u0456\u0445","ra_Device \u2192 Channel \u2192 State":"\u041f\u0440\u0438\u0441\u0442\u0440\u0456\u0439 \u2192 \u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u0442\u0430\u043d","ra_Discard":"\u0412\u0456\u0434\u043a\u0438\u043d\u0443\u0442\u0438","ra_Disconnected":"\u0412\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e","ra_Double click to reset table layout":"\u0414\u0432\u0456\u0447\u0456 \u043a\u043b\u0430\u0446\u043d\u0456\u0442\u044c, \u0449\u043e\u0431 \u0441\u043a\u0438\u043d\u0443\u0442\u0438 \u043c\u0430\u043a\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","ra_Drag \'n\' drop some files here, or click to select files":"\u041f\u0435\u0440\u0435\u0442\u044f\u0433\u043d\u0456\u0442\u044c \u0434\u0435\u044f\u043a\u0456 \u0444\u0430\u0439\u043b\u0438 \u0441\u044e\u0434\u0438 \u0430\u0431\u043e \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c, \u0449\u043e\u0431 \u0432\u0438\u0431\u0440\u0430\u0442\u0438 \u0444\u0430\u0439\u043b\u0438","ra_Drop file here":"\u041f\u0435\u0440\u0435\u0442\u044f\u0433\u043d\u0456\u0442\u044c \u0444\u0430\u0439\u043b \u0441\u044e\u0434\u0438","ra_Drop the files here...":"\u041f\u0435\u0440\u0435\u0442\u044f\u0433\u043d\u0456\u0442\u044c \u0444\u0430\u0439\u043b \u0441\u044e\u0434\u0438...","ra_Duplicate name":"\u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0432\u0430\u043d\u0435 \u0456\u043c\'\u044f","ra_Edit custom config":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0441\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0443 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044e","ra_Edit object field":"\u041f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043d\u043d\u044f \u043e\u0431\'\u0454\u043a\u0442\u0430","ra_Error":"\u041f\u043e\u043c\u0438\u043b\u043a\u0430","ra_Expand all nodes":"\u0420\u043e\u0437\u0433\u043e\u0440\u043d\u0443\u0442\u0438 \u0432\u0441\u0456 \u0432\u0443\u0437\u043b\u0438","ra_Expand one step node":"\u0420\u043e\u0437\u0433\u043e\u0440\u043d\u0456\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0456\u0432\u0435\u043d\u044c","ra_Failed to open JSON File":"\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0444\u0430\u0439\u043b JSON","ra_File is too big. Max %sk allowed. Try use SVG.":"\u0424\u0430\u0439\u043b \u0437\u0430\u0432\u0435\u043b\u0438\u043a\u0438\u0439. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e %sk. \u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 SVG.","ra_Filter":"\u0444\u0456\u043b\u044c\u0442\u0440","ra_Folder name":"\u041d\u0430\u0437\u0432\u0430 \u043f\u0430\u043f\u043a\u0438","ra_Folder \u2192 Channel \u2192 State":"\u041f\u0430\u043f\u043a\u0430 \u2192 \u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u0442\u0430\u043d","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"\u041f\u0430\u043f\u043a\u0430 \u2192 \u041f\u0440\u0438\u0441\u0442\u0440\u0456\u0439 \u2192 \u041a\u0430\u043d\u0430\u043b \u2192 \u0421\u0442\u0430\u043d","ra_Folder \u2192 State":"\u041f\u0430\u043f\u043a\u0430 \u2192 \u0421\u0442\u0430\u043d","ra_Folders always first":"\u041f\u0430\u043f\u043a\u0438 \u0437\u0430\u0432\u0436\u0434\u0438 \u043f\u0435\u0440\u0448\u0438\u043c\u0438","ra_Good luck":"\u0423\u0434\u0430\u0447\u0456","ra_Hide empty folders":"\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456 \u043f\u0430\u043f\u043a\u0438","ra_If no file will be created in the folder, it will disappear after the browser closed":"\u042f\u043a\u0449\u043e \u0432 \u043f\u0430\u043f\u0446\u0456 \u043d\u0435 \u0431\u0443\u0434\u0435 \u0441\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0444\u0430\u0439\u043b, \u0432\u0456\u043d \u0437\u043d\u0438\u043a\u043d\u0435 \u043f\u0456\u0441\u043b\u044f \u0437\u0430\u043a\u0440\u0438\u0442\u0442\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430","ra_Instance %s is alive":"\u041f\u0440\u0438\u043c\u0456\u0440\u043d\u0438\u043a %s \u0436\u0438\u0432\u0438\u0439","ra_Instance %s is not alive":"\u041f\u0440\u0438\u043c\u0456\u0440\u043d\u0438\u043a %s \u043d\u0435 \u0436\u0438\u0432\u0438\u0439","ra_Invalid CRON":"\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0438\u0439 CRON","ra_Invalid parent folder!":"\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0430 \u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u0430 \u043f\u0430\u043f\u043a\u0430!","ra_Invalid structure":"\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430","ra_JSON editor":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 JSON","ra_Last change":"\u041e\u0441\u0442\u0430\u043d\u043d\u044f \u0437\u043c\u0456\u043d\u0430","ra_Listen on all IPs":"\u041f\u0440\u043e\u0441\u043b\u0443\u0445\u043e\u0432\u0443\u0432\u0430\u043d\u043d\u044f \u043d\u0430 \u0432\u0441\u0456\u0445 IP","ra_Load configuration from file":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044e \u0437 \u0444\u0430\u0439\u043b\u0443","ra_Message":"\u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f","ra_Move down":"\u0420\u0443\u0445\u0430\u0442\u0438\u0441\u044f \u0432\u043d\u0438\u0437","ra_Move up":"\u0420\u0443\u0445\u0430\u0442\u0438\u0441\u044f \u0432\u0433\u043e\u0440\u0443","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"\u041d\u0435\u0435\u043a\u0441\u043f\u0435\u0440\u0442\u0438 \u043c\u043e\u0436\u0443\u0442\u044c \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u0442\u0438 \u043d\u043e\u0432\u0456 \u043e\u0431\u2019\u0454\u043a\u0442\u0438 \u043b\u0438\u0448\u0435 \u0432 \xab0_userdata.0\xbb \u0430\u0431\u043e \xabalias.0\xbb.","ra_Objects":"\u041e\u0431\'\u0454\u043a\u0442\u0438","ra_Ok":"\u0412 \u043f\u043e\u0440\u044f\u0434\u043a\u0443","ra_On weekdays":"\u0412 \u0431\u0443\u0434\u043d\u0456 \u0434\u043d\u0456","ra_Only following structures of objects are available:":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0456 \u0442\u0456\u043b\u044c\u043a\u0438 \u0442\u0430\u043a\u0456 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438 \u043e\u0431\'\u0454\u043a\u0442\u0456\u0432:","ra_Only selected":"\u0422\u0456\u043b\u044c\u043a\u0438 \u043e\u0431\u0440\u0430\u043d\u0456","ra_Owner group":"\u0413\u0440\u0443\u043f\u0430 \u0432\u043b\u0430\u0441\u043d\u0438\u043a\u0456\u0432","ra_Owner user":"\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447-\u0432\u043b\u0430\u0441\u043d\u0438\u043a","ra_Passwords are not equal!":"\u041f\u0430\u0440\u043e\u043b\u0456 \u043d\u0435 \u0431\u0443\u0432\u0430\u044e\u0442\u044c \u0440\u0456\u0432\u043d\u0438\u043c\u0438!","ra_Place your files here or click here to open the browse dialog":"\u0420\u043e\u0437\u043c\u0456\u0441\u0442\u0456\u0442\u044c \u0441\u0432\u043e\u0457 \u0444\u0430\u0439\u043b\u0438 \u0442\u0443\u0442 \u0430\u0431\u043e \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0442\u0443\u0442, \u0449\u043e\u0431 \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0434\u0456\u0430\u043b\u043e\u0433\u043e\u0432\u0435 \u0432\u0456\u043a\u043d\u043e \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443","ra_Please confirm":"\u0411\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430 \u043f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0456\u0442\u044c","ra_Please select object ID...":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0456\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440 \u043e\u0431\'\u0454\u043a\u0442\u0430...","ra_Quality code":"\u044f\u043a\u0456\u0441\u0442\u044c","ra_Refresh tree":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0434\u0435\u0440\u0435\u0432\u043e","ra_Reload files":"\u041f\u0435\u0440\u0435\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0442\u0435 \u0444\u0430\u0439\u043b\u0438","ra_Repeat":"\u041f\u043e\u0432\u0442\u043e\u0440\u0456\u0442\u044c","ra_Root":"\u041a\u043e\u0440\u0456\u043d\u044c","ra_Save":"\u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438","ra_Save and close":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0442\u0430 \u0437\u0430\u043a\u0440\u0438\u0442\u0438","ra_Save configuration to file":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u044e \u0443 \u0444\u0430\u0439\u043b","ra_Save objects tree as JSON file":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0434\u0435\u0440\u0435\u0432\u043e \u043e\u0431\u2019\u0454\u043a\u0442\u0456\u0432 \u044f\u043a \u0444\u0430\u0439\u043b JSON","ra_Select all":"\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0432\u0441\u0435","ra_Select predefined icon":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0437\u043d\u0430\u0447\u043e\u043a","ra_Selected":"\u0412\u0438\u0431\u0440\u0430\u043d\u0435","ra_Show lines between rows":"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043b\u0456\u043d\u0456\u0457 \u043c\u0456\u0436 \u0440\u044f\u0434\u043a\u0430\u043c\u0438","ra_Show/hide filter input":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438/\u0441\u0445\u043e\u0432\u0430\u0442\u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044f \u0444\u0456\u043b\u044c\u0442\u0440\u0430","ra_Some data are not stored. Discard?":"\u0414\u0435\u044f\u043a\u0456 \u0434\u0430\u043d\u0456 \u043d\u0435 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u044e\u0442\u044c\u0441\u044f. \u0412\u0456\u0434\u043a\u0438\u043d\u0443\u0442\u0438?","ra_States":"\u0434\u0435\u0440\u0436\u0430\u0432\u0438","ra_Suppress question for next %s minutes":"\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0437\u0430\u043f\u0438\u0442\u0430\u043d\u043d\u044f \u043d\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0456 %s \u0445\u0432\u0438\u043b\u0438\u043d","ra_System language":"\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430 \u043c\u043e\u0432\u0430","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"\u0415\u043a\u0441\u043f\u0435\u0440\u0442\u0438 \u043c\u043e\u0436\u0443\u0442\u044c \u0441\u0442\u0432\u043e\u0440\u044e\u0432\u0430\u0442\u0438 \u043e\u0431\u2019\u0454\u043a\u0442\u0438 \u0432\u0441\u044e\u0434\u0438, \u043a\u0440\u0456\u043c \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u0456\u0432\u043d\u044f (\u043d\u0430\u043f\u0440\u0438\u043a\u043b\u0430\u0434, \xabvis.0\xbb \u0430\u0431\u043e \xabjavascript.0\xbb).","ra_The page you are looking for was not found":"\u0421\u0442\u043e\u0440\u0456\u043d\u043a\u0430, \u044f\u043a\u0443 \u0432\u0438 \u0448\u0443\u043a\u0430\u0454\u0442\u0435, \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u0430","ra_Timestamp":"\u041c\u0456\u0442\u043a\u0430 \u0447\u0430\u0441\u0443","ra_Toggle expert mode":"\u041f\u0435\u0440\u0435\u043c\u043a\u043d\u0443\u0442\u0438 \u0435\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c","ra_Toggle the states view":"\u041f\u0435\u0440\u0435\u043c\u043a\u043d\u0443\u0442\u0438 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434 \u0448\u0442\u0430\u0442\u0456\u0432","ra_Toggle view mode":"\u041f\u0435\u0440\u0435\u043c\u043a\u043d\u0443\u0442\u0438 \u0440\u0435\u0436\u0438\u043c \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443","ra_Too big":"\u0417\u0430\u043d\u0430\u0434\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u0438\u0439","ra_Too small":"\u0417\u0430\u043d\u0430\u0434\u0442\u043e \u043c\u0430\u043b\u0438\u0439","ra_Transparent dialog":"\u041f\u0440\u043e\u0437\u043e\u0440\u0438\u0439 \u0434\u0456\u0430\u043b\u043e\u0433","ra_Unknown error!":"\u041d\u0435\u0432\u0456\u0434\u043e\u043c\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430!","ra_Update":"\u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f","ra_Upload file":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0444\u0430\u0439\u043b","ra_Used system settings":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u0456 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","ra_User files":"\u0424\u0430\u0439\u043b\u0438 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430","ra_Value":"\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f","ra_View: %s":"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434: %s","ra_Width":"\u0428\u0438\u0440\u0438\u043d\u0430","ra_You can filter entries by entering here some text":"\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0444\u0456\u043b\u044c\u0442\u0440\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438, \u0432\u0432\u0456\u0432\u0448\u0438 \u0442\u0443\u0442 \u043f\u0435\u0432\u043d\u0438\u0439 \u0442\u0435\u043a\u0441\u0442","ra___different__":"\u0456\u043d\u0448\u0438\u0439","ra_aclEveryone_read_object":"\u041a\u043e\u0436\u0435\u043d \u043c\u043e\u0436\u0435 \u0447\u0438\u0442\u0430\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_aclEveryone_read_state":"\u041a\u043e\u0436\u0435\u043d \u043c\u043e\u0436\u0435 \u0447\u0438\u0442\u0430\u0442\u0438 \u0441\u0442\u0430\u043d","ra_aclEveryone_write_object":"\u041a\u043e\u0436\u0435\u043d \u043c\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_aclEveryone_write_state":"\u041a\u043e\u0436\u0435\u043d \u043c\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u0441\u0442\u0430\u043d","ra_aclGroup_read_object":"\u0413\u0440\u0443\u043f\u0430 \u043c\u043e\u0436\u0435 \u0447\u0438\u0442\u0430\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_aclGroup_read_state":"\u0413\u0440\u0443\u043f\u0430 \u043c\u043e\u0436\u0435 \u0447\u0438\u0442\u0430\u0442\u0438 \u0441\u0442\u0430\u043d","ra_aclGroup_write_object":"\u0413\u0440\u0443\u043f\u0430 \u043c\u043e\u0436\u0435 \u043f\u0438\u0441\u0430\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_aclGroup_write_state":"\u0413\u0440\u0443\u043f\u0430 \u043c\u043e\u0436\u0435 \u043f\u0438\u0441\u0430\u0442\u0438 \u0441\u0442\u0430\u043d","ra_aclOwner_read_object":"\u0412\u043b\u0430\u0441\u043d\u0438\u043a \u043c\u043e\u0436\u0435 \u0447\u0438\u0442\u0430\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_aclOwner_read_state":"\u0412\u043b\u0430\u0441\u043d\u0438\u043a \u043c\u043e\u0436\u0435 \u0447\u0438\u0442\u0430\u0442\u0438 \u0441\u0442\u0430\u043d","ra_aclOwner_write_object":"\u0412\u043b\u0430\u0441\u043d\u0438\u043a \u043c\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_aclOwner_write_state":"\u0412\u043b\u0430\u0441\u043d\u0438\u043a \u043c\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u0441\u0442\u0430\u043d","ra_buttons":"\u043a\u043d\u043e\u043f\u043a\u0438","ra_changedFrom":"\u0417\u043c\u0456\u043d\u0435\u043d\u043e \u0437","ra_close":"\u0437\u0430\u043a\u0440\u0438\u0442\u0438","ra_daysShortText":"\u0434\u043d\u0456\u0432","ra_dow_Fr":"\u041e","ra_dow_Mo":"\u043f\u043d","ra_dow_Sa":"Sa","ra_dow_Su":"\u041d\u0434","ra_dow_Th":"\u0447\u0442","ra_dow_Tu":"\u0432\u0442","ra_dow_We":"\u043c\u0438","ra_expertMode":"\u0415\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c","ra_filter_customs":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","ra_filter_func":"\u0444\u0443\u043d\u043a\u0446\u0456\u044f","ra_filter_id":"ID","ra_filter_name":"\u0406\u043c\'\u044f","ra_filter_role":"\u0420\u043e\u043b\u044c","ra_filter_room":"\u041a\u0456\u043c\u043d\u0430\u0442\u0430","ra_filter_type":"\u0422\u0438\u043f","ra_invalidConfig":"\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","ra_lastChange":"\u041e\u0441\u0442\u0430\u043d\u043d\u044f \u0437\u043c\u0456\u043d\u0430","ra_months_Apr":"\u043a\u0432\u0456\u0442","ra_months_Aug":"\u0441\u0435\u0440\u043f","ra_months_Dec":"\u0433\u0440\u0443\u0434","ra_months_Feb":"\u043b\u044e\u0442\u0438\u0439","ra_months_Jan":"\u0441\u0456\u0447\u043d\u044f","ra_months_Jul":"\u043b\u0438\u043f","ra_months_Jun":"\u0447\u0435\u0440\u0432","ra_months_Mai":"\u0442\u0440\u0430\u0432\u0435\u043d\u044c","ra_months_Mar":"\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c","ra_months_Nov":"\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434","ra_months_Oct":"\u0436\u043e\u0432\u0442","ra_months_Sep":"\u0432\u0435\u0440","ra_none":"\u043d\u0435\u043c\u0430\u0454","ra_object_changed_by":"\u041e\u0431\'\u0454\u043a\u0442 \u0437\u043c\u0456\u043d\u0435\u043d\u043e","ra_object_changed_by_user":"\u041e\u0431\'\u0454\u043a\u0442 \u0432\u043e\u0441\u0442\u0430\u043d\u043d\u0454 \u0437\u043c\u0456\u043d\u0435\u043d\u043e \u043e","ra_otherConfig":"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0437 \u0456\u043d\u0448\u043e\u0433\u043e \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u0430 %s","ra_qualityCode":"\u041a\u043e\u0434 \u044f\u043a\u043e\u0441\u0442\u0456","ra_repeat":"\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438","ra_state_changed_by":"\u0421\u0442\u0430\u043d \u0437\u043c\u0456\u043d\u0435\u043d\u043e \u043d\u0430","ra_state_changed_from":"\u041e\u0431\'\u0454\u043a\u0442 \u0437\u043c\u0456\u043d\u0435\u043d\u043e \u0437","ra_timestamp":"\u041c\u0456\u0442\u043a\u0430 \u0447\u0430\u0441\u0443","ra_tooltip_ack":"\u0412\u0438\u0437\u043d\u0430\u043d\u043e","ra_tooltip_comment":"\u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440","ra_tooltip_copyState":"\u0421\u043a\u043e\u043f\u0456\u044e\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0441\u0442\u0430\u043d\u0443","ra_tooltip_customConfig":"\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","ra_tooltip_deleteObject":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_tooltip_editObject":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043e\u0431\'\u0454\u043a\u0442","ra_tooltip_editState":"\u0412\u0456\u0434\u0440\u0435\u0434\u0430\u0433\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0441\u0442\u0430\u043d\u0443","ra_tooltip_from":"\u0412\u0456\u0434","ra_tooltip_lc":"\u0412\u043e\u0441\u0442\u0430\u043d\u043d\u0454 \u0437\u043c\u0456\u043d\u0435\u043d\u043e","ra_tooltip_quality":"\u044f\u043a\u0456\u0441\u0442\u044c","ra_tooltip_ts":"\u041f\u043e\u0437\u043d\u0430\u0447\u043a\u0430 \u0447\u0430\u0441\u0443","ra_tooltip_user":"\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447","ra_tooltip_value":"\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f","ra_use seconds":"\u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u0438","ra_val":"\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f","sc_cron":"CRON","sc_date":"\u0414\u0430\u0442\u0430","sc_dates":"\u0434\u0430\u0442\u0438","sc_dows":"\u0414\u0435\u043d\u044c \u0442\u0438\u0436\u043d\u044f","sc_every":"\u043a\u043e\u0436\u0435\u043d","sc_everyN_dates":"\u043a\u043e\u0436\u043d\u0456 N \u0434\u043d\u0456\u0432","sc_everyN_dows":"\u043a\u043e\u0436\u043d\u0456 N \u0434\u043d\u0456\u0432 \u0442\u0438\u0436\u043d\u044f","sc_everyN_hours":"\u043a\u043e\u0436\u043d\u0456 N \u0433\u043e\u0434\u0438\u043d","sc_everyN_minutes":"\u043a\u043e\u0436\u043d\u0456 N \u0445\u0432\u0438\u043b\u0438\u043d","sc_everyN_months":"\u043a\u043e\u0436\u043d\u0456 N \u043c\u0456\u0441\u044f\u0446\u0456\u0432","sc_everyN_seconds":"\u043a\u043e\u0436\u043d\u0456 N \u0441\u0435\u043a\u0443\u043d\u0434","sc_every_dates":"\u043a\u043e\u0436\u0435\u043d \u0434\u0435\u043d\u044c","sc_every_dows":"\u043a\u043e\u0436\u0435\u043d \u0434\u0435\u043d\u044c \u0442\u0438\u0436\u043d\u044f","sc_every_hours":"\u0449\u043e\u0433\u043e\u0434\u0438\u043d\u0438","sc_every_minutes":"\u043a\u043e\u0436\u043d\u0443 \u0445\u0432\u0438\u043b\u0438\u043d\u0443","sc_every_months":"\u0449\u043e\u043c\u0456\u0441\u044f\u0446\u044f","sc_every_seconds":"\u043a\u043e\u0436\u043d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0430","sc_from":"\u0412\u0456\u0434","sc_hours":"\u0433\u043e\u0434\u0438\u043d\u0438","sc_interval":"\u0406\u043d\u0442\u0435\u0440\u0432\u0430\u043b","sc_intervalBetween":"\u0406\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0456\u0436","sc_minutes":"\u0445\u0432\u0438\u043b\u0438\u043d","sc_months":"\u043c\u0456\u0441\u044f\u0446\u0456\u0432","sc_once":"\u041e\u0434\u0438\u043d \u0440\u0430\u0437","sc_period":"\u041a\u0440\u0430\u043f\u043a\u0430","sc_seconds":"\u0441\u0435\u043a\u0443\u043d\u0434","sc_simple":"\u043f\u0440\u043e\u0441\u0442\u043e","sc_specific":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0438\u0439 \u0447\u0430\u0441","sc_specific_dates":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0456 \u0434\u0430\u0442\u0438","sc_specific_dows":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0442\u0438\u0436\u043d\u044f","sc_specific_hours":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0456 \u0433\u043e\u0434\u0438\u043d\u0438","sc_specific_minutes":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0456 \u0445\u0432\u0438\u043b\u0438\u043d\u0438","sc_specific_months":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0456 \u043c\u0456\u0441\u044f\u0446\u0456","sc_specific_seconds":"\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0456 \u0441\u0435\u043a\u0443\u043d\u0434\u0438","sc_time":"\u0447\u0430\u0441","sc_to":"\u0434\u043e","sc_wizard":"\u043c\u0430\u0439\u0441\u0442\u0435\u0440","sch_all":"\u0432\u0441\u0435","sch_astroDay":"\u0410\u0441\u0442\u0440\u043e\u0434\u0435\u043d\u044c","sch_astroNight":"\u0410\u0441\u0442\u0440\u043e \u043d\u0456\u0447","sch_astro_dawn":"\u0421\u0432\u0456\u0442\u0430\u043d\u043e\u043a","sch_astro_dusk":"\u0421\u0443\u0442\u0456\u043d\u043a\u0438","sch_astro_goldenHour":"\u0417\u043e\u043b\u043e\u0442\u0430 \u0433\u043e\u0434\u0438\u043d\u0430","sch_astro_goldenHourEnd":"\u041a\u0456\u043d\u0435\u0446\u044c \u0437\u043e\u043b\u043e\u0442\u043e\u0457 \u0433\u043e\u0434\u0438\u043d\u0438","sch_astro_nadir":"\u041d\u0430\u0434\u0456\u0440","sch_astro_nauticalDawn":"\u041c\u043e\u0440\u0441\u044c\u043a\u0438\u0439 \u0441\u0432\u0456\u0442\u0430\u043d\u043e\u043a","sch_astro_nauticalDusk":"\u041c\u043e\u0440\u0441\u044c\u043a\u0456 \u0441\u0443\u0442\u0456\u043d\u043a\u0438","sch_astro_night":"\u043d\u0456\u0447","sch_astro_nightEnd":"\u041a\u0456\u043d\u0435\u0446\u044c \u043d\u043e\u0447\u0456","sch_astro_solarNoon":"\u0421\u043e\u043d\u044f\u0447\u043d\u0438\u0439 \u043f\u043e\u043b\u0443\u0434\u0435\u043d\u044c","sch_astro_sunrise":"\u0421\u0445\u0456\u0434 \u0441\u043e\u043d\u0446\u044f","sch_astro_sunriseEnd":"\u041a\u0456\u043d\u0435\u0446\u044c \u0441\u0445\u043e\u0434\u0443 \u0441\u043e\u043d\u0446\u044f","sch_astro_sunset":"\u0417\u0430\u0445\u0456\u0434 \u0441\u043e\u043d\u0446\u044f","sch_astro_sunsetStart":"\u041f\u043e\u0447\u0430\u0442\u043e\u043a \u0437\u0430\u0445\u043e\u0434\u0443 \u0441\u043e\u043d\u0446\u044f","sch_at":"\u0432","sch_desc_atTime":"\u0432 %s","sch_desc_everyDay":"\u043a\u043e\u0436\u0435\u043d \u0434\u0435\u043d\u044c","sch_desc_everyHour":"\u0449\u043e\u0433\u043e\u0434\u0438\u043d\u0438","sch_desc_everyMinute":"\u043a\u043e\u0436\u043d\u0443 \u0445\u0432\u0438\u043b\u0438\u043d\u0443","sch_desc_everyMonth":"\u0449\u043e\u043c\u0456\u0441\u044f\u0446\u044f","sch_desc_everyNDay":"\u043a\u043e\u0436\u0435\u043d %s \u0434\u0435\u043d\u044c","sch_desc_everyNHours":"\u043a\u043e\u0436\u043d\u0456 %s \u0433\u043e\u0434\u0438\u043d","sch_desc_everyNMinutes":"\u043a\u043e\u0436\u043d\u0456 %s \u0445\u0432\u0438\u043b\u0438\u043d","sch_desc_everyNMonths":"\u043a\u043e\u0436\u043d\u0456 %s \u043c\u0456\u0441\u044f\u0446\u0456\u0432","sch_desc_everyNWeeks":"\u043a\u043e\u0436\u043d\u0456 %s \u0442\u0438\u0436\u043d\u0456\u0432","sch_desc_everyNYears":"\u043a\u043e\u0436\u043d\u0456 %s \u0440\u043e\u043a\u0456\u0432","sch_desc_everyWeek":"\u0449\u043e\u0442\u0438\u0436\u043d\u044f","sch_desc_everyYear":"\u0449\u043e\u0440\u043e\u043a\u0443","sch_desc_intervalFromTo":"\u0432\u0456\u0434 %s \u0434\u043e %s","sch_desc_never":"\u043d\u0456\u043a\u043e\u043b\u0438","sch_desc_onDate":"\u043d\u0430 %s \u0437 %s","sch_desc_onDates":"\u043d\u0430 %s \u0456 %s \u0437","sch_desc_onEveryDate":"\u043d\u0430 \u043a\u043e\u0436\u043d\u0443 \u0434\u0430\u0442\u0443","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s \u0456 %s","sch_desc_onWeekday":"\u043d\u0430 %s","sch_desc_onWeekdays":"\u043d\u0430 %s \u0456 %s","sch_desc_onWeekends":"\u043d\u0430 \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0445","sch_desc_onWorkdays":"\u0432 \u0440\u043e\u0431\u043e\u0447\u0456 \u0434\u043d\u0456","sch_desc_onceInPast":"\u0431\u0456\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u0438\u043a\u043e\u043d\u0443\u0432\u0430\u0442\u0438\u043c\u0435\u0442\u044c\u0441\u044f, \u043e\u0441\u043a\u0456\u043b\u044c\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0443 \u043c\u0438\u043d\u0443\u043b\u043e\u043c\u0443","sch_desc_once_on":"\u043d\u0430 %s","sch_desc_validFrom":"\u0432\u0456\u0434 %s","sch_desc_validFromTo":"\u0412\u0438\u043a\u043e\u043d\u0430\u0442\u0438 \u0432\u0456\u0434 \u0434\u043e","sch_desc_validTo":"\u0434\u043e %s","sch_every":"\u043a\u043e\u0436\u0435\u043d","sch_exactTime":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0438\u0439 \u0447\u0430\u0441","sch_from":"\u0432\u0456\u0434","sch_fromTo":"\u0412\u0456\u0434 \u0434\u043e","sch_intervalTime":"\u0427\u0430\u0441 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0443","sch_invert":"\u0456\u043d\u0432\u0435\u0440\u0442\u0443\u0432\u0430\u0442\u0438","sch_no_one":"\u043d\u0435\u043c\u0430\u0454","sch_on":"\u043d\u0430","sch_period":"\u041a\u0440\u0430\u043f\u043a\u0430","sch_periodDaily":"\u0429\u043e\u0434\u043d\u044f","sch_periodDates":"\u0434\u0430\u0442\u0438","sch_periodDay":"\u0414\u0435\u043d\u044c","sch_periodEvery":"\u043a\u043e\u0436\u0435\u043d","sch_periodEveryDay":"\u041a\u043e\u0436\u0435\u043d \u0434\u0435\u043d\u044c","sch_periodEveryMonth":"\u0429\u043e\u043c\u0456\u0441\u044f\u0446\u044f","sch_periodEveryWeek":"\u0429\u043e\u0442\u0438\u0436\u043d\u044f","sch_periodEveryYear":"\u0429\u043e\u0440\u043e\u043a\u0443","sch_periodHours":"\u0433\u043e\u0434\u0438\u043d\u0438","sch_periodMinutes":"\u0445\u0432\u0438\u043b\u0438\u043d","sch_periodMonth":"\u043c\u0456\u0441\u044f\u0446\u044c","sch_periodMonthly":"\u0429\u043e\u043c\u0456\u0441\u044f\u0446\u044f","sch_periodOnce":"\u041e\u0434\u0438\u043d \u0440\u0430\u0437","sch_periodSpecificMonths":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0456 \u043c\u0456\u0441\u044f\u0446\u0456","sch_periodWeek":"\u0442\u0438\u0436\u0434\u0435\u043d\u044c","sch_periodWeekdays":"\u0431\u0443\u0434\u043d\u0456","sch_periodWeekend":"\u0412\u0438\u0445\u0456\u0434\u043d\u0456","sch_periodWeekly":"\u0429\u043e\u0442\u0438\u0436\u043d\u044f","sch_periodWorkdays":"\u0440\u043e\u0431\u043e\u0447\u0456 \u0434\u043d\u0456","sch_periodYear":"\u0440\u0456\u043a","sch_periodYearly":"\u0449\u043e\u0440\u0456\u0447\u043d\u043e","sch_specificTime":"\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0438\u0439 \u0447\u0430\u0441","sch_time":"\u0447\u0430\u0441","sch_to":"\u0434\u043e","sch_valid":"\u0414\u0456\u0439\u0441\u043d\u0438\u0439","sch_validFrom":"\u0432\u0456\u0434","sch_validTo":"\u0434\u043e","sch_wholeDay":"\u0426\u0456\u043b\u0438\u0439 \u0434\u0435\u043d\u044c","sch_yearEveryMonth":"\u0449\u043e\u043c\u0456\u0441\u044f\u0446\u044f","ra_Filter files":"\u0424\u0456\u043b\u044c\u0442\u0440 \u0444\u0430\u0439\u043b\u0456\u0432","ra_Please select file...":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0444\u0430\u0439\u043b...","ra_fileType_all":"\u0412\u0441\u0456 \u0444\u0430\u0439\u043b\u0438","ra_fileType_audio":"\u0410\u0443\u0434\u0456\u043e","ra_fileType_code":"\u041a\u043e\u0434/JSON","ra_fileType_images":"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","ra_fileType_txt":"\u0442\u0435\u043a\u0441\u0442","ra_fileType_video,":"\u0432\u0456\u0434\u0435\u043e","ra_month_Apr":"\u043a\u0432\u0456\u0442","ra_month_Aug":"\u0441\u0435\u0440\u043f","ra_month_Dec":"\u0433\u0440\u0443\u0434","ra_month_Feb":"\u043b\u044e\u0442\u0438\u0439","ra_month_Jan":"\u0441\u0456\u0447\u043d\u044f","ra_month_Jul":"\u043b\u0438\u043f","ra_month_Jun":"\u0447\u0435\u0440\u0432","ra_month_Mai":"\u0442\u0440\u0430\u0432\u0435\u043d\u044c","ra_month_Mar":"\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c","ra_month_Nov":"\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434","ra_month_Oct":"\u0436\u043e\u0432\u0442","ra_month_Sep":"\u0432\u0435\u0440","ra_Cannot decode license":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0440\u043e\u0437\u0448\u0438\u0444\u0440\u0443\u0432\u0430\u0442\u0438 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u044e","ra_Invalid answer from server":"\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0430 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c \u0432\u0456\u0434 \u0441\u0435\u0440\u0432\u0435\u0440\u0430","ra_License %s":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u044f %s","ra_License does not exist":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u0457 \u043d\u0435 \u0456\u0441\u043d\u0443\u0454","ra_License expired on %s":"\u0422\u0435\u0440\u043c\u0456\u043d \u0434\u0456\u0457 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0457 \u0437\u0430\u043a\u0456\u043d\u0447\u0438\u0432\u0441\u044f %s","ra_License for other product \\"%s\\"":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u044f \u043d\u0430 \u0456\u043d\u0448\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \\"%s\\"","ra_License is for version %s, but required version is %s.":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u044f \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0456\u0457 %s, \u0430\u043b\u0435 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0430 \u0432\u0435\u0440\u0441\u0456\u044f %s.","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"\u0421\u0435\u0440\u0456\u0439\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 (UUID) \\"%s\\" \u0443 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0457 \u043f\u0440\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0456\u043d\u0448\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e.","ra_Serial number (UUID)":"\u0421\u0435\u0440\u0456\u0439\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 (UUID)","ra_Check license":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u044e","ra_Request timed out":"\u0427\u0430\u0441 \u0437\u0430\u043f\u0438\u0442\u0443 \u0432\u0438\u0447\u0435\u0440\u043f\u0430\u043d\u043e","ra_Instance is not alive":"\u041f\u0440\u0438\u043c\u0456\u0440\u043d\u0438\u043a \u043d\u0435 \u0436\u0438\u0432\u0438\u0439","ra_Show/Hide object descriptions":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438/\u0421\u0445\u043e\u0432\u0430\u0442\u0438 \u043e\u043f\u0438\u0441\u0438 \u043e\u0431\u2019\u0454\u043a\u0442\u0456\u0432","ra_Use system settings for position":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043b\u044f \u043f\u043e\u0437\u0438\u0446\u0456\u0457","ra_Longitude":"\u0414\u043e\u0432\u0433\u043e\u0442\u0430","ra_Latitude":"\u0428\u0438\u0440\u043e\u0442\u0430","ra_Take browser position":"\u0417\u0430\u0439\u043c\u0456\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0456\u044e \u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430","ra_Take position from system settings":"\u0417\u0430\u0439\u043c\u0456\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0456\u044e \u0432 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0438","ra_Port is already used by %s":"\u041f\u043e\u0440\u0442 \u0443\u0436\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454\u0442\u044c\u0441\u044f %s","ra_Port could be used by %s":"\u041f\u043e\u0440\u0442 \u043c\u043e\u0436\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438\u0441\u044f %s","ra_filter_customs_without":"\u0431\u0435\u0437","ra_Use iobroker.acme adapter for letsencrypt certificates":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 iobroker.acme \u0434\u043b\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u0456\u0432 letsencrypt","ra_Do not use let\'s encrypt":"\u041d\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 let\'s encrypt","ra_Use all available let\'s encrypt certificates":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0432\u0441\u0456 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0456 \u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u0438 let\'s encrypt","ra_Public certificate":"\u041f\u0443\u0431\u043b\u0456\u0447\u043d\u0438\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442","ra_Private certificate":"\u041f\u0440\u0438\u0432\u0430\u0442\u043d\u0438\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442","ra_Chained certificate":"\u041f\u0440\u0438\u043a\u0443\u0442\u0438\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442","ra_Suitable license not found in license manager":"\u0412\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u043d\u0430 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u044f \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0456 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0439","ra_Please enter the license":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044c \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u044e","ra_Checked":"\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u0435\u043d\u043e","ra_locally":"\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e","ra_via internet":"\u0447\u0435\u0440\u0435\u0437 \u0456\u043d\u0442\u0435\u0440\u043d\u0435\u0442","ra_Yes":"\u0422\u0430\u043a","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u044f \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0456 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0439. \u0425\u043e\u0447\u0435\u0442\u0435 \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0457 \u0437 iobroker.net?","ra_Fallback custom certificates":"\u0417\u0430\u043f\u0430\u0441\u043d\u0456 \u0441\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0456 \u0441\u0435\u0440\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u0438","ra_Clone current row":"\u041a\u043b\u043e\u043d\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a","ra_fileType_video":"\u0432\u0456\u0434\u0435\u043e","ra_select_folder_hint":"\u0429\u043e\u0431 \u0432\u0438\u0431\u0440\u0430\u0442\u0438 \u043f\u0430\u043f\u043a\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043b\u0430\u0446\u043d\u0456\u0442\u044c \u043f\u0430\u043f\u043a\u0443, \u0443\u0442\u0440\u0438\u043c\u0443\u044e\u0447\u0438 \u043a\u043b\u0430\u0432\u0456\u0448\u0443 \xabShift\xbb.","ra_Accept license":"\u041f\u0440\u0438\u0439\u043d\u044f\u0442\u0438 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u044e","ra_License agreement":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u0439\u043d\u0430 \u0443\u0433\u043e\u0434\u0430","ra_Import from %s":"\u0406\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437 %s","ra_Export data to %s file":"\u0415\u043a\u0441\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0434\u0430\u043d\u0456 \u0443 \u0444\u0430\u0439\u043b %s","ra_Import data from %s file":"\u0406\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0434\u0430\u043d\u0456 \u0437 \u0444\u0430\u0439\u043b\u0443 %s","ra_No data found in file":"\u041d\u0435\u043c\u0430\u0454 \u0434\u0430\u043d\u0438\u0445 \u0443 \u0444\u0430\u0439\u043b\u0456","ra_Append or replace?":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0447\u0438 \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438?","ra_Append %s entries or replace existing?":"\u0414\u043e\u0434\u0430\u0442\u0438 %s \u0437\u0430\u043f\u0438\u0441\u0456\u0432 \u0447\u0438 \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430\u044f\u0432\u043d\u0456?","ra_Replace":"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438","ra_Append":"\u0414\u043e\u0434\u0430\u0439\u0442\u0435","ra_May not trigger \\"updateLicenses\\"":"\u041c\u043e\u0436\u0435 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u0438 \\"updateLicenses\\"","ra_Unknown error":"\u041d\u0435\u0432\u0456\u0434\u043e\u043c\u0430 \u043f\u043e\u043c\u0438\u043b\u043a\u0430","ra_License must be converted":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u044e \u043d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0434\u043e \u043d\u043e\u0432\u0456\u0448\u043e\u0457 \u0432\u0435\u0440\u0441\u0456\u0457. \u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0440\u043e\u0431\u0438\u0442\u0438 \u0446\u0435 \u0443 \u0441\u0432\u043e\u0454\u043c\u0443 \u043f\u0440\u043e\u0444\u0456\u043b\u0456 \u043d\u0430 iobroker.net.","ra_No one license found in license manager":"\u0423 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0456 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0439 \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0436\u043e\u0434\u043d\u043e\u0457 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0457","ra_Please create license":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0441\u0442\u0432\u043e\u0440\u0456\u0442\u044c \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u044e","ra_Product":"\u041f\u0440\u043e\u0434\u0443\u043a\u0442","ra_Version":"\u0412\u0435\u0440\u0441\u0456\u044f","ra_ValidTill":"\u0414\u0456\u0439\u0441\u043d\u0438\u0439 \u0434\u043e","ra_Commercial":"\u041a\u043e\u043c\u0435\u0440\u0446\u0456\u0439\u043d\u0438\u0439","ra_Not a number":"\u041d\u0435 \u043d\u043e\u043c\u0435\u0440","ra_Edit value":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f","ra_Edit ACL":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 ACL","ra_Edit role":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0440\u043e\u043b\u044c","ra_Edit function":"\u0444\u0443\u043d\u043a\u0446\u0456\u044f \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043d\u043d\u044f","ra_Edit room":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043a\u0456\u043c\u043d\u0430\u0442\u0443","ra_Edit alias":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0456\u043c","ra_View file":"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u043d\u0443\u0442\u0438 \u0444\u0430\u0439\u043b","ra_Del":"Delete","ra_Show all folders":"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0432\u0441\u0456 \u043f\u0430\u043f\u043a\u0438","ra_Restrict to folder":"\u041e\u0431\u043c\u0435\u0436\u0438\u0442\u0438 \u043f\u0430\u043f\u043a\u043e\u044e","ra_Select type of export":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0442\u0438\u043f \u0435\u043a\u0441\u043f\u043e\u0440\u0442\u0443","ra_You can export all objects or just the selected branch.":"\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u043a\u0441\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0456 \u043e\u0431\u2019\u0454\u043a\u0442\u0438 \u0430\u0431\u043e \u043b\u0438\u0448\u0435 \u0432\u0438\u0431\u0440\u0430\u043d\u0443 \u0433\u0456\u043b\u043a\u0443.","ra_Do not export values of states":"\u041d\u0435 \u0435\u043a\u0441\u043f\u043e\u0440\u0442\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0441\u0442\u0430\u043d\u0456\u0432","ra_Selected %s object(s)":"\u0412\u0438\u0431\u0440\u0430\u043d\u0456 \u043e\u0431\u2019\u0454\u043a\u0442\u0438 %s","ra_create_device":"\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439","ra_create_channel":"\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043a\u0430\u043d\u0430\u043b","ra_create_state":"\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435","ra_create_string_state":"\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0440\u044f\u0434\u043a\u043e\u0432\u0438\u0439 \u0441\u0442\u0430\u043d","ra_create_number_state":"\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043d\u043e\u043c\u0435\u0440\u043d\u0438\u0439 \u0441\u0442\u0430\u043d","ra_create_boolean_state":"\u0421\u0442\u0432\u043e\u0440\u0456\u0442\u044c \u043b\u043e\u0433\u0456\u0447\u043d\u0438\u0439 \u0441\u0442\u0430\u043d","ra_Select color":"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u043a\u043e\u043b\u0456\u0440","ra_Cannot read licenses: %s":"\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u0438 \u043b\u0456\u0446\u0435\u043d\u0437\u0456\u0457: %s","ra_Advanced options":"\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456 \u043e\u043f\u0446\u0456\u0457"}')},89156:e=>{"use strict";e.exports=JSON.parse('{"ra_filter_func":"\u529f\u80fd","ra_filter_id":"ID","ra_filter_name":"\u540d\u79f0","ra_filter_role":"\u89d2\u8272","ra_filter_room":"\u623f\u95f4","ra_tooltip_ack":"\u81f4\u8c22\u56fd\u65d7","ra_tooltip_from":"\u4ece","ra_tooltip_lc":"\u6700\u540e\u6539\u53d8\u4e86","ra_tooltip_quality":"\u8d28\u91cf","ra_tooltip_ts":"\u65f6\u95f4\u6233","ra_tooltip_user":"\u7528\u6237","ra_tooltip_value":"\u503c","ra_Are you sure?":"\u4f60\u786e\u5b9a\u5417\uff1f","ra_Cancel":"\u53d6\u6d88","ra_Copied":"\u590d\u5236\u7684","ra_Copied %s":"\u590d\u5236\u7684\\"%s\\"","ra_Define functions":"\u5b9a\u4e49\u529f\u80fd","ra_Define rooms":"\u5b9a\u4e49\u623f\u95f4","ra_Error":"\u9519\u8bef","ra_Message":"\u4fe1\u606f","ra_Ok":"\u597d","ra_Please select object ID...":"\u8bf7\u9009\u62e9\u5bf9\u8c61ID ...","ra_Selected":"\u5df2\u9009","ra_Unknown error!":"\u672a\u77e5\u9519\u8bef\uff01","ra_Value":"\u503c","ra_filter_type":"\u7c7b\u578b","ra_invalidConfig":"\u65e0\u6548\u7684\u8bbe\u5b9a","ra_otherConfig":"\u6765\u81ea\u5176\u4ed6\u9002\u914d\u5668%s\u7684\u8bbe\u7f6e","ra_tooltip_copyState":"\u590d\u5236\u72b6\u6001\u503c","ra_tooltip_customConfig":"\u81ea\u5b9a\u4e49\u8bbe\u7f6e","ra_tooltip_deleteObject":"\u5220\u9664\u7269\u4ef6","ra_tooltip_editObject":"\u7f16\u8f91\u7269\u4ef6","ra_tooltip_editState":"\u7f16\u8f91\u72b6\u6001\u503c","ra_filter_customs":"\u8bbe\u5b9a\u503c","ra_Listen on all IPs":"\u76d1\u542c\u6240\u6709IP","ra_dow_Fr":"r","ra_dow_Mo":"\u83ab","ra_dow_Sa":"\u8428","ra_dow_Su":"\u82cf","ra_Save":"\u4fdd\u5b58","ra_Save and close":"\u4fdd\u5b58\u5e76\u5173\u95ed","ra_Close":"\u5173","ra_Auto (no custom columns)":"\u81ea\u52a8\uff08\u65e0\u81ea\u5b9a\u4e49\u5217\uff09","ra_Transparent dialog":"\u900f\u660e\u5bf9\u8bdd\u6846","ra_Width":"\u5bbd\u5ea6","ra_val":"\u503c","ra_buttons":"\u7ebd\u6263","ra_Configure visible columns":"\u914d\u7f6e\u53ef\u89c1\u5217","ra_Cannot update attribute, because not found in the object":"\u65e0\u6cd5\u66f4\u65b0\u5c5e\u6027\uff0c\u56e0\u4e3a\u5728\u5bf9\u8c61\u4e2d\u627e\u4e0d\u5230","ra_Edit object field":"\u7f16\u8f91\u5bf9\u8c61\u5b57\u6bb5","ra_Hide empty folders":"\u9690\u85cf\u7a7a\u6587\u4ef6\u5939","ra_Reload files":"\u91cd\u65b0\u8f7d\u5165\u6587\u4ef6","ra_Create folder":"\u521b\u5efa\u6587\u4ef6\u5939","ra_Upload file":"\u4e0a\u4f20\u6587\u4ef6","ra_User files":"\u7528\u6237\u6863\u6848","ra_Confirm deletion of %s":"\u786e\u8ba4\u5220\u9664%s","ra_Delete (no confirm for 5 mins)":"\u5220\u9664\uff085\u5206\u949f\u5185\u672a\u786e\u8ba4\uff09","ra_Delete":"\u5220\u9664","ra_Toggle expert mode":"\u5207\u6362\u4e13\u5bb6\u6a21\u5f0f","ra_Toggle view mode":"\u5207\u6362\u68c0\u89c6\u6a21\u5f0f","ra_Root":"\u6839","ra_Back to %s":"\u8fd4\u56de\u201c%s\u201d","ra_Place your files here or click here to open the browse dialog":"\u5c06\u6587\u4ef6\u653e\u5728\u6b64\u5904\u6216\u5355\u51fb\u6b64\u5904\u6253\u5f00\u6d4f\u89c8\u5bf9\u8bdd\u6846","ra_If no file will be created in the folder, it will disappear after the browser closed":"\u5982\u679c\u5728\u8be5\u6587\u4ef6\u5939\u4e2d\u672a\u521b\u5efa\u4efb\u4f55\u6587\u4ef6\uff0c\u5219\u8be5\u6587\u4ef6\u5c06\u5728\u6d4f\u89c8\u5668\u5173\u95ed\u540e\u6d88\u5931","ra_Folder name":"\u6587\u4ef6\u5939\u540d\u79f0","ra_Create new folder in %s":"\u5728%s\u4e2d\u521b\u5efa\u65b0\u6587\u4ef6\u5939","ra_Duplicate name":"\u540d\u79f0\u91cd\u590d","ra_Invalid parent folder!":"\u7236\u6587\u4ef6\u5939\u65e0\u6548\uff01","ra_Drop file here":"\u5c06\u6863\u6848\u653e\u5728\u8fd9\u91cc","ra_Suppress question for next %s minutes":"\u5728\u63a5\u4e0b\u6765\u7684%s\u5206\u949f\u5185\u53d6\u6d88\u63d0\u95ee","ra_Clear filter":"\u6e05\u9664\u7b5b\u9009","ra_Update":"\u66f4\u65b0\u8d44\u6599","ra_Load configuration from file":"\u4ece\u6587\u4ef6\u52a0\u8f7d\u914d\u7f6e","ra_Save configuration to file":"\u5c06\u914d\u7f6e\u4fdd\u5b58\u5230\u6587\u4ef6","sc_cron":"\u5468\u671f\u4efb\u52a1","sc_date":"\u65e5\u671f","sc_dates":"\u65e5","sc_dows":"\u661f\u671f","sc_every":"\u6bcf","sc_everyN_dates":"\u6bcfN\u5929","sc_everyN_dows":"\u6bcf\u5468N\u5929","sc_everyN_hours":"\u6bcfN\u5c0f\u65f6\u4e00\u6b21","sc_everyN_minutes":"\u6bcfN\u5206\u949f","sc_everyN_months":"\u6bcfN\u4e2a\u6708","sc_everyN_seconds":"\u6bcfN\u79d2","sc_every_dates":"\u6bcf\u5929","sc_every_dows":"\u4e00\u5468\u7684\u6bcf\u4e00\u5929","sc_every_hours":"\u6bcf\u5c0f\u65f6","sc_every_minutes":"\u6bcf\u5206\u949f","sc_every_months":"\u6bcf\u6708","sc_every_seconds":"\u6bcf\u79d2","sc_from":"\u4ece","sc_hours":"\u5c0f\u65f6","sc_interval":"\u95f4\u9694","sc_intervalBetween":"\u95f4\u9694\u65f6\u95f4","sc_minutes":"\u5206\u949f","sc_months":"\u6708","sc_once":"\u4e00\u6b21","sc_period":"\u5468\u671f","sc_seconds":"\u79d2","sc_simple":"\u7b80\u5355\u6a21\u5f0f","sc_specific":"\u7279\u5b9a\u7684\u65f6\u95f4","sc_specific_dates":"\u7279\u5b9a\u7684\u65e5\u5b50","sc_specific_dows":"\u7279\u5b9a\u7684\u4e00\u5468","sc_specific_hours":"\u7279\u5b9a\u7684\u5c0f\u65f6","sc_specific_minutes":"\u7279\u5b9a\u7684\u5206\u949f","sc_specific_months":"\u7279\u5b9a\u7684\u6708\u4efd","sc_specific_seconds":"\u7279\u5b9a\u7684\u63cf\u8ff0","sc_time":"\u65f6\u95f4","sc_to":"\u81f3","sc_wizard":"\u5411\u5bfc\u6a21\u5f0f","sch_all":"\u5168\u9009","sch_astroDay":"\u5929\u6587\u767d\u5929","sch_astroNight":"\u5929\u6587\u591c\u665a","sch_astro_dawn":"\u9ece\u660e","sch_astro_dusk":"\u9ec4\u660f","sch_astro_goldenHour":"\u9ec4\u91d1\u65f6\u6bb5","sch_astro_goldenHourEnd":"\u9ec4\u91d1\u65f6\u6bb5\u7ed3\u675f","sch_astro_nadir":"\u5929\u5e95","sch_astro_nauticalDawn":"\u822a\u6d77\u9ece\u660e","sch_astro_nauticalDusk":"\u822a\u6d77\u9ec4\u660f","sch_astro_night":"\u591c\u665a","sch_astro_nightEnd":"\u591c\u665a\u7ed3\u675f","sch_astro_solarNoon":"\u6b63\u5348","sch_astro_sunrise":"\u65e5\u51fa","sch_astro_sunriseEnd":"\u65e5\u51fa\u7ed3\u675f","sch_astro_sunset":"\u65e5\u843d","sch_astro_sunsetStart":"\u65e5\u843d\u5f00\u59cb","sch_at":"\u5728","sch_desc_atTime":"\u7684%s","sch_desc_everyDay":"\u6bcf\u5929","sch_desc_everyHour":"\u6bcf\u5c0f\u65f6","sch_desc_everyMinute":"\u6bcf\u5206\u949f","sch_desc_everyMonth":"\u6bcf\u6708","sch_desc_everyNDay":"\u6bcf%s\u5929","sch_desc_everyNHours":"\u6bcf%s\u5c0f\u65f6","sch_desc_everyNMinutes":"\u6bcf%s\u5206\u949f","sch_desc_everyNMonths":"\u6bcf%s\u6708","sch_desc_everyNWeeks":"\u6bcf%s\u5468","sch_desc_everyNYears":"\u6bcf%s\u5e74","sch_desc_everyWeek":"\u6bcf\u5468","sch_desc_everyYear":"\u6bcf\u5e74","sch_desc_intervalFromTo":"\u4ece%s\u5230%s","sch_desc_never":"\u51b3\u4e0d","sch_desc_onDate":"\u5728%s\u7684%s\u4e0a","sch_desc_onDates":"\u5728%s\u548c%s\u4e0a","sch_desc_onEveryDate":"\u5728\u6bcf\u5929","sch_desc_onMonth":"%s","sch_desc_onMonths":"%s\u548c%s","sch_desc_onWeekday":"\u5728%s\u4e0a","sch_desc_onWeekdays":"\u5728%s\u548c%s\u4e0a","sch_desc_onWeekends":"\u5728\u5468\u672b","sch_desc_onWorkdays":"\u5728\u5de5\u4f5c\u65e5","sch_desc_onceInPast":"\u5c06\u4e0d\u518d\u6267\u884c\uff0c\u56e0\u4e3a\u8d77\u59cb\u65f6\u95f4\u5df2\u7ecf\u662f\u8fc7\u53bb\u7684\u65f6\u95f4\u4e86\u3002","sch_desc_once_on":"\u5728%s\u4e0a","sch_desc_validFrom":"\u6765\u81ea%s","sch_desc_validFromTo":"\u4ece\u6267\u884c\u5230","sch_desc_validTo":"\u5230%s","sch_every":"\u6bcf","sch_exactTime":"\u7279\u5b9a\u7684\u65f6\u95f4","sch_from":"\u4ece","sch_fromTo":"\u4ece\u5230","sch_intervalTime":"\u95f4\u9694\u65f6\u95f4","sch_invert":"\u5012\u7f6e","sch_no_one":"\u53d6\u6d88\u5168\u9009","sch_on":"\u7684","sch_period":"\u5468\u671f","sch_periodDaily":"\u6bcf\u5929","sch_periodDates":"\u65e5\u671f","sch_periodDay":"\u5929","sch_periodEvery":"\u6bcf","sch_periodEveryDay":"\u6bcf\u5929","sch_periodEveryMonth":"\u6bcf\u6708","sch_periodEveryWeek":"\u6bcf\u5468","sch_periodEveryYear":"\u6bcf\u5e74","sch_periodHours":"\u5c0f\u65f6","sch_periodMinutes":"\u5206\u949f","sch_periodMonth":"\u6708","sch_periodMonthly":"\u6bcf\u6708\u4e00\u6b21","sch_periodOnce":"\u4e00\u6b21","sch_periodSpecificMonths":"\u7279\u5b9a\u7684\u6708\u4efd","sch_periodWeek":"\u5468","sch_periodWeekdays":"\u5de5\u4f5c\u65e5","sch_periodWeekend":"\u5468\u672b","sch_periodWeekly":"\u6bcf\u5468","sch_periodWorkdays":"\u5de5\u4f5c\u65e5","sch_periodYear":"\u5e74","sch_periodYearly":"\u6bcf\u5e74","sch_specificTime":"\u7279\u5b9a\u7684\u65f6\u95f4","sch_time":"\u65f6\u95f4","sch_to":"\u81f3","sch_valid":"\u751f\u6548","sch_validFrom":"\u4ece","sch_validTo":"\u81f3","sch_wholeDay":"\u4e00\u6574\u5929","sch_yearEveryMonth":"\u6bcf\u6708","ra_Define schedule...":"\u5b9a\u4e49\u65f6\u95f4\u8868...","ra_Repeat":"\u91cd\u590d","ra_use seconds":"\u7528\u79d2","ra_close":"\u5173\u95ed","ra_dow_Th":"Th","ra_dow_Tu":"Tu","ra_Toggle the states view":"\u5207\u6362\u72b6\u6001\u89c6\u56fe","ra_Add new child object to selected parent":"\u5c06\u65b0\u7684\u5b50\u5bf9\u8c61\u6dfb\u52a0\u5230\u9009\u5b9a\u7684\u7236\u5bf9\u8c61","ra_Add objects tree from JSON file":"\u4eceJSON\u6587\u4ef6\u6dfb\u52a0\u5bf9\u8c61\u6811","ra_Save objects tree as JSON file":"\u5c06\u5bf9\u8c61\u6811\u53e6\u5b58\u4e3aJSON\u6587\u4ef6","ra_Objects":"\u5bf9\u8c61","ra_States":"\u72b6\u6001","ra_object_changed_by_user":"\u5bf9\u8c61\u4e0a\u6b21\u66f4\u6539\u65f6\u95f4\u4e3a","ra_object_changed_by":"\u7269\u4ef6\u53d8\u66f4\u8005","ra_state_changed_from":"\u5bf9\u8c61\u5df2\u4ece\u66f4\u6539","ra_state_changed_by":"\u72b6\u6001\u7531","ra_aclOwner_read_object":"\u6240\u6709\u8005\u53ef\u4ee5\u8bfb\u53d6\u5bf9\u8c61","ra_aclOwner_read_state":"\u6240\u6709\u8005\u53ef\u4ee5\u8bfb\u53d6\u72b6\u6001","ra_aclOwner_write_object":"\u6240\u6709\u8005\u53ef\u4ee5\u5199\u5bf9\u8c61","ra_aclOwner_write_state":"\u6240\u6709\u8005\u53ef\u4ee5\u5199\u72b6\u6001","ra_aclGroup_read_object":"\u7ec4\u53ef\u4ee5\u8bfb\u53d6\u5bf9\u8c61","ra_aclGroup_read_state":"\u7fa4\u7ec4\u53ef\u4ee5\u8bfb\u53d6\u72b6\u6001","ra_aclGroup_write_object":"\u7ec4\u53ef\u4ee5\u5199\u5bf9\u8c61","ra_aclGroup_write_state":"\u7ec4\u53ef\u4ee5\u5199\u72b6\u6001","ra_aclEveryone_read_object":"\u6bcf\u4e2a\u4eba\u90fd\u53ef\u4ee5\u9605\u8bfb\u5bf9\u8c61","ra_aclEveryone_read_state":"\u6bcf\u4e2a\u4eba\u90fd\u53ef\u4ee5\u9605\u8bfb\u72b6\u6001","ra_aclEveryone_write_object":"\u6bcf\u4e2a\u4eba\u90fd\u53ef\u4ee5\u5199\u5bf9\u8c61","ra_aclEveryone_write_state":"\u6bcf\u4e2a\u4eba\u90fd\u53ef\u4ee5\u5199\u72b6\u6001","ra_Folders always first":"\u8d44\u6599\u5939\u6c38\u8fdc\u4f18\u5148","ra_changedFrom":"\u66f4\u6539\u4e3a","ra_qualityCode":"\u8d28\u91cf\u4ee3\u7801","ra_timestamp":"\u65f6\u95f4\u6233\u8bb0","ra_lastChange":"\u6700\u540e\u4e00\u6b21\u53d8\u66f4","ra_Owner group":"\u6240\u6709\u8005\u7ec4","ra_Owner user":"\u6240\u6709\u8005\u7528\u6237","ra_Create":"\u521b\u5efa","ra_Changed from":"\u66f4\u6539\u4e3a","ra_Quality code":"\u8d28\u91cf\u4ee3\u7801","ra_Timestamp":"\u65f6\u95f4\u6233\u8bb0","ra_Last change":"\u6700\u540e\u4e00\u6b21\u53d8\u66f4","ra_Collapse all nodes":"\u6536\u5408\u6240\u6709\u8282\u70b9","ra_Edit custom config":"\u7f16\u8f91\u81ea\u5b9a\u4e49\u914d\u7f6e","ra_Collapse one step node":"\u6298\u53e0\u4e00\u7ea7","ra_Expand one step node":"\u6269\u5927\u4e00\u7ea7","ra_Refresh tree":"\u5237\u65b0\u6811","ra_Expand all nodes":"\u5c55\u5f00\u6240\u6709\u8282\u70b9","ra_Deselect all":"\u5168\u90e8\u53d6\u6d88\u9009\u62e9","ra_Select all":"\u5168\u9009","ra_%s object(s) processed":"\u5df2\u5904\u7406%s\u4e2a\u5bf9\u8c61","ra_Invalid structure":"\u7ed3\u6784\u65e0\u6548","ra_%s was imported":"\u5bf9\u8c61\u5df2\u5bfc\u5165","ra_Failed to open JSON File":"\u65e0\u6cd5\u6253\u5f00JSON\u6587\u4ef6","ra_Only following structures of objects are available:":"\u4ec5\u4ee5\u4e0b\u5bf9\u8c61\u7ed3\u6784\u53ef\u7528\uff1a","ra_Folder \u2192 State":"\u6587\u4ef6\u5939\u2192\u72b6\u6001","ra_Folder \u2192 Channel \u2192 State":"\u6587\u4ef6\u5939\u2192\u9891\u9053\u2192\u72b6\u6001","ra_Folder \u2192 Device \u2192 Channel \u2192 State":"\u6587\u4ef6\u5939\u2192\u8bbe\u5907\u2192\u9891\u9053\u2192\u72b6\u6001","ra_Device \u2192 Channel \u2192 State":"\u8bbe\u5907\u2192\u9891\u9053\u2192\u72b6\u6001","ra_Channel \u2192 State":"\u9891\u9053\u2192\u72b6\u6001","ra_Non-experts may create new objects only in \\"0_userdata.0\\" or \\"alias.0\\".":"\u975e\u4e13\u5bb6\u53ea\u80fd\u5728\u201c 0_userdata.0\u201d\u6216\u201c alias.0\u201d\u4e2d\u521b\u5efa\u65b0\u5bf9\u8c61\u3002","ra_The experts may create objects everywhere but from second level (e.g. \\"vis.0\\" or \\"javascript.0\\").":"\u4e13\u5bb6\u53ef\u4ee5\u5728\u4efb\u4f55\u5730\u65b9\u521b\u5efa\u5bf9\u8c61\uff0c\u4f46\u8981\u4ece\u7b2c\u4e8c\u5c42\u5f00\u59cb\uff08\u4f8b\u5982\u201c vis.0\u201d\u6216\u201c javascript.0\u201d\uff09\u3002","ra_expertMode":"\u4e13\u5bb6\u6a21\u5f0f","ra_On weekdays":"\u5728\u5de5\u4f5c\u65e5","ra_Drop the files here...":"\u628a\u6587\u4ef6\u653e\u5728\u8fd9\u91cc...","ra_Drag \'n\' drop some files here, or click to select files":"\u5c06\u4e00\u4e9b\u6587\u4ef6\u62d6\u653e\u5230\u6b64\u5904\uff0c\u6216\u5355\u51fb\u4ee5\u9009\u62e9\u6587\u4ef6","ra_Clear":"\u5220\u9664","ra_Clear icon":"\u6e05\u9664\u56fe\u6807","ra_none":"\u6ca1\u6709\u4efb\u4f55","ra_Select predefined icon":"\u9009\u62e9\u9884\u5b9a\u4e49\u56fe\u6807","ra_Show lines between rows":"\u663e\u793a\u884c\u4e4b\u95f4\u7684\u7ebf","ra_The page you are looking for was not found":"\u672a\u627e\u5230\u60a8\u8981\u67e5\u627e\u7684\u9875\u9762","ra_Good luck":"\u795d\u4f60\u597d\u8fd0","ra_Cannot find \\"%s\\"":"\u627e\u4e0d\u5230\u201c%s\u201d","ra_Cannot read \\"%s\\"":"\u65e0\u6cd5\u9605\u8bfb\u201c%s\u201d","ra_Background image":"\u80cc\u666f\u56fe\u50cf","ra_View: %s":"\u67e5\u770b\uff1a%s","ra_Copy content":"\u590d\u5236\u5185\u5bb9","ra_Filter":"\u7b5b\u9009","ra_All objects":"\u6240\u6709\u5bf9\u8c61","ra_Only selected":"\u53ea\u9009\u62e9","ra_Change color theme":"\u66f4\u6539\u989c\u8272\u4e3b\u9898","ra_daysShortText":"\u5929","ra_Instance %s is alive":"\u5b9e\u4f8b %s \u662f\u6d3b\u52a8\u7684","ra_Instance %s is not alive":"\u5b9e\u4f8b %s \u4e0d\u5b58\u5728","ra_Used system settings":"\u4f7f\u7528\u7684\u7cfb\u7edf\u8bbe\u7f6e","ra_Cannot determine position: System settings are empty and GPS detection is disabled in browser":"\u65e0\u6cd5\u786e\u5b9a\u4f4d\u7f6e\uff1a\u7cfb\u7edf\u8bbe\u7f6e\u4e3a\u7a7a\u4e14\u6d4f\u89c8\u5668\u4e2d\u7981\u7528\u4e86 GPS \u68c0\u6d4b","ra_Define schedule":"\u5b9a\u4e49\u65f6\u95f4\u8868","ra___different__":"\u4e0d\u540c\u7684","ra_Please confirm":"\u8bf7\u786e\u8ba4","ra_JSON editor":"JSON \u7f16\u8f91\u5668","ra_System language":"\u7cfb\u7edf\u8bed\u8a00","ra_Too small":"\u592a\u5c0f","ra_Too big":"\u592a\u5927","ra_Passwords are not equal!":"\u5bc6\u7801\u4e0d\u76f8\u7b49\uff01","ra_repeat":"\u91cd\u590d","ra_You can filter entries by entering here some text":"\u60a8\u53ef\u4ee5\u901a\u8fc7\u5728\u6b64\u5904\u8f93\u5165\u4e00\u4e9b\u6587\u672c\u6765\u8fc7\u6ee4\u6761\u76ee","ra_Show/hide filter input":"\u663e\u793a/\u9690\u85cf\u8fc7\u6ee4\u5668\u8f93\u5165","ra_Cannot add items with set filter":"\u65e0\u6cd5\u4f7f\u7528\u8bbe\u7f6e\u8fc7\u6ee4\u5668\u6dfb\u52a0\u9879\u76ee","ra_Add row":"\u6dfb\u52a0\u884c","ra_Move up":"\u63d0\u5347","ra_Move down":"\u4e0b\u79fb","ra_Delete current row":"\u5220\u9664\u5f53\u524d\u884c","ra_All items are filtered out":"\u6240\u6709\u9879\u76ee\u90fd\u88ab\u8fc7\u6ee4\u6389","ra_Double click to reset table layout":"\u53cc\u51fb\u91cd\u7f6e\u8868\u683c\u5e03\u5c40","ra_Cannot retrieve options, as instance is offline":"\u65e0\u6cd5\u68c0\u7d22\u9009\u9879\uff0c\u56e0\u4e3a\u5b9e\u4f8b\u5904\u4e8e\u8131\u673a\u72b6\u6001","ra_File is too big. Max %sk allowed. Try use SVG.":"\u6587\u4ef6\u592a\u5927\u3002\u5141\u8bb8\u7684\u6700\u5927\u5b57\u8282%s\u6570\u3002\u5c1d\u8bd5\u4f7f\u7528 SVG\u3002","ra_Cannot upload":"\u65e0\u6cd5\u4e0a\u4f20","ra_Crop":"\u5e84\u7a3c","ra_tooltip_comment":"\u8bc4\u8bba","ra_Disconnected":"\u65ad\u5f00\u8fde\u63a5","ra_Connected":"\u8fde\u63a5\u7684","ra_Configure":"\u914d\u7f6e","ra_Invalid CRON":"\u65e0\u6548\u7684 CRON","ra_Discard":"\u4e22\u5f03","ra_Some data are not stored. Discard?":"\u90e8\u5206\u6570\u636e\u672a\u5b58\u50a8\u3002\u4e22\u5f03\uff1f","ra_Filter files":"\u8fc7\u6ee4\u6587\u4ef6","ra_Please select file...":"\u8bf7\u9009\u62e9\u6587\u4ef6...","ra_dow_We":"\u6211\u4eec","ra_fileType_all":"\u6240\u6709\u6587\u4ef6","ra_fileType_audio":"\u58f0\u97f3\u7684","ra_fileType_code":"\u4ee3\u7801/JSON","ra_fileType_images":"\u56fe\u7247","ra_fileType_txt":"\u6587\u672c","ra_fileType_video,":"\u89c6\u9891","ra_month_Apr":"4\u6708","ra_month_Aug":"\u516b\u6708","ra_month_Dec":"\u5341\u4e8c\u6708","ra_month_Feb":"\u4e8c\u6708","ra_month_Jan":"\u7b80","ra_month_Jul":"\u4e03\u6708","ra_month_Jun":"\u541b","ra_month_Mai":"\u8fc8","ra_month_Mar":"\u4e09\u6708","ra_month_Nov":"\u5341\u4e00\u6708","ra_month_Oct":"\u5341\u6708","ra_month_Sep":"\u4e5d\u6708","ra_months_Apr":"4\u6708","ra_months_Aug":"\u516b\u6708","ra_months_Dec":"\u5341\u4e8c\u6708","ra_months_Feb":"\u4e8c\u6708","ra_months_Jan":"\u7b80","ra_months_Jul":"\u4e03\u6708","ra_months_Jun":"\u541b","ra_months_Mai":"\u8fc8","ra_months_Mar":"\u4e09\u6708","ra_months_Nov":"\u5341\u4e00\u6708","ra_months_Oct":"\u5341\u6708","ra_months_Sep":"\u4e5d\u6708","ra_Cannot decode license":"\u65e0\u6cd5\u89e3\u7801\u8bb8\u53ef\u8bc1","ra_Invalid answer from server":"\u6765\u81ea\u670d\u52a1\u5668\u7684\u65e0\u6548\u7b54\u6848","ra_License %s":"\u8bb8\u53ef\u8bc1 %s","ra_License does not exist":"\u8bb8\u53ef\u8bc1\u4e0d\u5b58\u5728","ra_License expired on %s":"\u8bb8\u53ef\u8bc1\u5df2\u4e8e %s \u8fc7\u671f","ra_License for other product \\"%s\\"":"\u5176\u4ed6\u4ea7\u54c1\u201c%s\u201d\u7684\u8bb8\u53ef\u8bc1","ra_License is for version %s, but required version is %s.":"\u8bb8\u53ef\u8bc1\u9002\u7528\u4e8e\u7248\u672c %s\uff0c\u4f46\u6240\u9700\u7248\u672c\u4e3a %s\u3002","ra_Serial number (UUID) \\"%s\\" in license is for other device.":"\u8bb8\u53ef\u8bc1\u4e2d\u7684\u5e8f\u5217\u53f7 (UUID)\u201c%s\u201d\u7528\u4e8e\u5176\u4ed6\u8bbe\u5907\u3002","ra_Serial number (UUID)":"\u5e8f\u5217\u53f7 (UUID)","ra_Check license":"\u68c0\u67e5\u8bb8\u53ef\u8bc1","ra_Request timed out":"\u8bf7\u6c42\u8d85\u65f6","ra_Instance is not alive":"\u5b9e\u4f8b\u4e0d\u5b58\u5728","ra_Show/Hide object descriptions":"\u663e\u793a/\u9690\u85cf\u5bf9\u8c61\u63cf\u8ff0","ra_Use system settings for position":"\u4f7f\u7528\u7cfb\u7edf\u8bbe\u7f6e\u5b9a\u4f4d","ra_Longitude":"\u7ecf\u5ea6","ra_Latitude":"\u7eac\u5ea6","ra_Take browser position":"\u4ece\u6d4f\u89c8\u5668\u83b7\u53d6\u4f4d\u7f6e","ra_Take position from system settings":"\u4ece\u7cfb\u7edf\u8bbe\u7f6e\u4e2d\u83b7\u53d6\u4f4d\u7f6e","ra_Port is already used by %s":"\u7aef\u53e3\u5df2\u88ab %s \u4f7f\u7528","ra_Port could be used by %s":"%s \u53ef\u4ee5\u4f7f\u7528\u7aef\u53e3","ra_filter_customs_without":"\u6ca1\u6709","ra_Use iobroker.acme adapter for letsencrypt certificates":"\u4f7f\u7528 iobroker.acme \u9002\u914d\u5668\u83b7\u53d6 letsencrypt \u8bc1\u4e66","ra_Do not use let\'s encrypt":"\u4e0d\u8981\u4f7f\u7528\u8ba9\u6211\u4eec\u52a0\u5bc6","ra_Use all available let\'s encrypt certificates":"\u4f7f\u7528\u6240\u6709\u53ef\u7528\u7684\u8ba9\u6211\u4eec\u52a0\u5bc6\u8bc1\u4e66","ra_Public certificate":"\u516c\u5171\u8bc1\u4e66","ra_Private certificate":"\u79c1\u6709\u8bc1\u4e66","ra_Chained certificate":"\u94fe\u5f0f\u8bc1\u4e66","ra_Suitable license not found in license manager":"\u5728\u8bb8\u53ef\u8bc1\u7ba1\u7406\u5668\u4e2d\u627e\u4e0d\u5230\u5408\u9002\u7684\u8bb8\u53ef\u8bc1","ra_Please enter the license":"\u8bf7\u8f93\u5165\u8bb8\u53ef\u8bc1","ra_Checked":"\u52fe\u9009","ra_locally":"\u672c\u5730","ra_via internet":"\u901a\u8fc7\u4e92\u8054\u7f51","ra_Yes":"\u662f\u7684","ra_License not found in license manager. Do you want to read licenses from iobroker.net?":"\u5728\u8bb8\u53ef\u8bc1\u7ba1\u7406\u5668\u4e2d\u627e\u4e0d\u5230\u8bb8\u53ef\u8bc1\u3002\u60a8\u8981\u4ece iobroker.net \u66f4\u65b0\u8bb8\u53ef\u8bc1\u5417\uff1f","ra_Fallback custom certificates":"\u540e\u5907\u81ea\u5b9a\u4e49\u8bc1\u4e66","ra_Clone current row":"\u514b\u9686\u5f53\u524d\u884c","ra_fileType_video":"\u89c6\u9891","ra_select_folder_hint":"\u8981\u9009\u62e9\u6587\u4ef6\u5939\uff0c\u53ea\u9700\u6309\u4f4f\u201cshift\u201d\u952e\u5355\u51fb\u6587\u4ef6\u5939\u5373\u53ef\u3002","ra_Accept license":"\u63a5\u53d7\u8bb8\u53ef","ra_License agreement":"\u8bb8\u53ef\u534f\u8bae","ra_Import from %s":"\u4ece %s \u5bfc\u5165","ra_Export data to %s file":"\u5c06\u6570\u636e\u5bfc\u51fa\u5230 %s \u6587\u4ef6","ra_Import data from %s file":"\u4ece %s \u6587\u4ef6\u5bfc\u5165\u6570\u636e","ra_No data found in file":"\u6587\u4ef6\u4e2d\u672a\u627e\u5230\u6570\u636e","ra_Append or replace?":"\u8ffd\u52a0\u8fd8\u662f\u66ff\u6362\uff1f","ra_Append %s entries or replace existing?":"\u8ffd\u52a0 %s \u6761\u76ee\u8fd8\u662f\u66ff\u6362\u73b0\u6709\u6761\u76ee\uff1f","ra_Replace":"\u4ee3\u66ff","ra_Append":"\u9644\u52a0","ra_May not trigger \\"updateLicenses\\"":"\u53ef\u80fd\u4e0d\u4f1a\u89e6\u53d1\u201cupdateLicenses\u201d","ra_Unknown error":"\u672a\u77e5\u9519\u8bef","ra_License must be converted":"\u8bb8\u53ef\u8bc1\u5fc5\u987b\u8f6c\u6362\u4e3a\u66f4\u65b0\u7248\u672c\u3002\u60a8\u53ef\u4ee5\u5728 iobroker.net \u4e2a\u4eba\u8d44\u6599\u4e2d\u6267\u884c\u6b64\u64cd\u4f5c\u3002","ra_No one license found in license manager":"\u8bb8\u53ef\u8bc1\u7ba1\u7406\u5668\u4e2d\u672a\u627e\u5230\u4efb\u4f55\u8bb8\u53ef\u8bc1","ra_Please create license":"\u8bf7\u521b\u5efa\u8bb8\u53ef\u8bc1","ra_Product":"\u4ea7\u54c1","ra_Version":"\u7248\u672c","ra_ValidTill":"\u6709\u6548\u671f\u81f3","ra_Commercial":"\u5546\u4e1a\u7684","ra_Not a number":"\u4e0d\u662f\u6570\u5b57","ra_Edit value":"\u7f16\u8f91\u503c","ra_Edit ACL":"\u7f16\u8f91\u8bbf\u95ee\u63a7\u5236\u5217\u8868","ra_Edit role":"\u7f16\u8f91\u89d2\u8272","ra_Edit function":"\u7f16\u8f91\u529f\u80fd","ra_Edit room":"\u7f16\u8f91\u5ba4","ra_Edit alias":"\u7f16\u8f91\u522b\u540d","ra_View file":"\u67e5\u770b\u6587\u4ef6","ra_Del":"Delete","ra_Show all folders":"\u663e\u793a\u6240\u6709\u6587\u4ef6\u5939","ra_Restrict to folder":"\u9650\u5236\u5230\u6587\u4ef6\u5939","ra_Select type of export":"\u9009\u62e9\u5bfc\u51fa\u7c7b\u578b","ra_You can export all objects or just the selected branch.":"\u60a8\u53ef\u4ee5\u5bfc\u51fa\u6240\u6709\u5bf9\u8c61\u6216\u4ec5\u5bfc\u51fa\u9009\u5b9a\u7684\u5206\u652f\u3002","ra_Do not export values of states":"\u4e0d\u5bfc\u51fa\u72b6\u6001\u503c","ra_Selected %s object(s)":"\u9009\u5b9a\u7684 %s \u4e2a\u5bf9\u8c61","ra_create_device":"\u521b\u5efa\u8bbe\u5907","ra_create_channel":"\u521b\u5efa\u9891\u9053","ra_create_state":"\u521b\u5efa\u72b6\u6001","ra_create_string_state":"\u521b\u5efa\u5b57\u7b26\u4e32\u72b6\u6001","ra_create_number_state":"\u521b\u5efa\u53f7\u7801\u72b6\u6001","ra_create_boolean_state":"\u521b\u5efa\u5e03\u5c14\u72b6\u6001","ra_Select color":"\u9009\u62e9\u989c\u8272","ra_Cannot read licenses: %s":"\u65e0\u6cd5\u8bfb\u53d6\u8bb8\u53ef\u8bc1\uff1a%s","ra_Advanced options":"\u9ad8\u7ea7\u9009\u9879"}')}}]); +//# sourceMappingURL=275.88f32e0b.chunk.js.map \ No newline at end of file diff --git a/admin/static/js/275.88f32e0b.chunk.js.LICENSE.txt b/admin/static/js/275.88f32e0b.chunk.js.LICENSE.txt new file mode 100644 index 000000000..c982862f5 --- /dev/null +++ b/admin/static/js/275.88f32e0b.chunk.js.LICENSE.txt @@ -0,0 +1,6 @@ +/*! + localForage -- Offline Storage, Improved + Version 1.10.0 + https://localforage.github.io/localForage + (c) 2013-2017 Mozilla, Apache License 2.0 +*/ diff --git a/admin/static/js/275.88f32e0b.chunk.js.map b/admin/static/js/275.88f32e0b.chunk.js.map new file mode 100644 index 000000000..3e18cd6e4 --- /dev/null +++ b/admin/static/js/275.88f32e0b.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/275.88f32e0b.chunk.js","mappings":"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ACA,YACA,UACA,WACA,YAEJD,IAAK,CACD,UACA,SACA,WACA,WACA,aACA,UACA,WAEJO,MAAO,UACPT,IAAK,MACL,YAAa,YACb,kBAAmB,eACnBa,KAAM,SACNE,OAAQ,SACR,YAAa,cACbD,OAAQ,UACR,mBAAoB,wBACpB,kBAAmB,aACnB,oBAAqB,qBACrB,SAAU,KACV,iBAAkB,iBAClB,YAAa,eACbF,GAAI,KACJI,GAAI,KACJC,GAAI,MAERa,GAAI,CACAtC,SAAU,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IAERO,MAAO,CACH,uCACA,6CACA,iCACA,uCACA,2BACA,2BACA,2BACA,6CACA,mDACA,6CACA,uCACA,8CAEJD,IAAK,CACD,qEACA,qEACA,6CACA,iCACA,6CACA,6CACA,8CAEJO,MAAO,qDACPT,IAAK,SACL,YAAa,gEACb,kBAAmB,8CACnBa,KAAM,yCACNE,OAAQ,uCACR,YAAa,gDACbD,OAAQ,6CACR,mBAAoB,yFACpB,kBAAmB,gGACnB,oBAAqB,+FACrB,SAAU,GACV,iBAAkB,iHAClB,YAAa,8CACbF,GAAI,SACJI,GAAI,SACJC,GAAI,UAERc,GAAI,CACAvC,SAAU,CACNC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAERO,MAAO,CACH,SACA,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,UAEJD,IAAK,CACD,MACA,MACA,MACA,MACA,MACA,MACA,OAEJO,MAAO,SACPT,IAAK,KACL,YAAa,iBACb,kBAAmB,qBACnBa,KAAM,QACNE,OAAQ,SACR,YAAa,YACbD,OAAQ,UACR,mBAAoB,oBACpB,kBAAmB,sBACnB,oBAAqB,2BACrB,SAAU,SACV,iBAAkB,iBAClB,YAAa,UACbF,GAAI,OACJI,GAAI,MACJC,GAAI,QAER1d,GAAI,CACAic,SAAU,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IAERO,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJD,IAAK,CACD,MACA,MACA,MACA,MACA,MACA,KACA,OAEJO,MAAO,OACPT,IAAK,IACL,YAAa,cACb,kBAAmB,cACnBa,KAAM,MACNE,OAAQ,SACR,YAAa,YACbD,OAAQ,UACR,mBAAoB,oBACpB,kBAAmB,kBACnB,oBAAqB,kBACrB,SAAU,MACV,iBAAkB,eAClB,YAAa,SACbF,GAAI,IACJI,GAAI,QACJC,GAAI,MAERe,GAAI,CACAxC,SAAU,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IAERO,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJD,IAAK,CACD,MACA,MACA,MACA,MACA,MACA,MACA,OAEJO,MAAO,OACPT,IAAK,IACL,YAAa,WACb,kBAAmB,mBACnBa,KAAM,OACNE,OAAQ,SACR,YAAa,YACbD,OAAQ,UACR,mBAAoB,oBACpB,kBAAmB,kBACnB,oBAAqB,qBACrB,SAAU,KACV,iBAAkB,oBAClB,YAAa,UACbF,GAAI,KACJI,GAAI,KACJC,GAAI,UAERgB,GAAI,CACAzC,SAAU,CACNC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAERO,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,WACA,MACA,OAEJD,IAAK,CACD,MACA,MACA,MACA,WACA,MACA,WACA,OAEJO,MAAO,iBACPT,IAAK,IACL,YAAa,aACb,kBAAmB,WACnBa,KAAM,UACNE,OAAQ,WACR,YAAa,WACbD,OAAQ,UACR,mBAAoB,wBACpB,kBAAmB,YACnB,oBAAqB,wBACrB,SAAU,IACV,iBAAkB,6BAClB,YAAa,iBACbF,GAAI,IACJI,GAAI,IACJC,GAAI,KAERiB,GAAI,CACA1C,SAAU,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IAERO,MAAO,CACH,MACA,MACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJD,IAAK,CACD,MACA,MACA,MACA,MACA,MACA,MACA,OAEJO,MAAO,OACPT,IAAK,IACL,YAAa,cACb,kBAAmB,mBACnBa,KAAM,OACNE,OAAQ,SACR,YAAa,YACbD,OAAQ,UACR,mBAAoB,oBACpB,kBAAmB,kBACnB,oBAAqB,mBACrB,SAAU,WACV,iBAAkB,cAClB,YAAa,SACbF,GAAI,IACJI,GAAI,KACJC,GAAI,MAERkB,GAAI,CACA3C,SAAU,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IAERO,MAAO,CACH,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJD,IAAK,CACD,MACA,MACA,KACA,KACA,MACA,OACA,MAEJO,MAAO,OACPT,IAAK,KACL,YAAa,WACb,kBAAmB,oBACnBa,KAAM,MACNE,OAAQ,SACR,YAAa,aACbD,OAAQ,SACR,mBAAoB,mBACpB,kBAAmB,mBACnB,oBAAqB,iBACrB,SAAU,QACV,iBAAkB,iBAClB,YAAa,UACbF,GAAI,KACJI,GAAI,KACJC,GAAI,MAERmB,GAAI,CACA5C,SAAU,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IAERO,MAAO,CACH,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEJD,IAAK,CACD,qEACA,yDACA,mDACA,uCACA,uCACA,8CACA,wCAEJO,MAAO,+CACPT,IAAK,SACL,YAAa,0DACb,kBAAmB,4EACnBa,KAAM,uCACNE,OAAQ,6CACR,YAAa,6CACbD,OAAQ,6CACR,mBAAoB,+FACpB,kBAAmB,gGACnB,oBAAqB,iHACrB,SAAU,GACV,iBAAkB,iHAClB,YAAa,oDACbF,GAAI,SACJI,GAAI,SACJC,GAAI,UAER,QAAS,CACLzB,SAAU,CACNC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,IAERO,MAAO,CACH,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,eACA,qBACA,sBAEJD,IAAK,CACD,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEJO,MAAO,SACPT,IAAK,SACL,YAAa,eACb,kBAA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","sources":["../node_modules/@iobroker/adapter-react-v5/Components/ComplexCron.js","../node_modules/@iobroker/adapter-react-v5/Components/CopyToClipboard.js","../node_modules/@iobroker/adapter-react-v5/Components/Icon.js","../node_modules/@iobroker/adapter-react-v5/Components/Loader.js","../node_modules/@iobroker/adapter-react-v5/Components/ObjectBrowser.js","../node_modules/@iobroker/adapter-react-v5/Components/Router.js","../node_modules/@iobroker/adapter-react-v5/Components/SaveCloseButtons.js","../node_modules/@iobroker/adapter-react-v5/Components/Schedule.js","../node_modules/@iobroker/adapter-react-v5/Components/SimpleCron/cron2text.js","../node_modules/@iobroker/adapter-react-v5/Components/SimpleCron/cronText.js","../node_modules/@iobroker/adapter-react-v5/Components/SimpleCron/jquery.cron.locale.js","../node_modules/@iobroker/adapter-react-v5/Components/TabContainer.js","../node_modules/@iobroker/adapter-react-v5/Components/TabContent.js","../node_modules/@iobroker/adapter-react-v5/Components/TabHeader.js","../node_modules/@iobroker/adapter-react-v5/Components/Utils.js","../node_modules/@iobroker/adapter-react-v5/Components/withWidth.js","../node_modules/@iobroker/adapter-react-v5/Connection.js","../node_modules/@iobroker/adapter-react-v5/Dialogs/Confirm.js","../node_modules/@iobroker/adapter-react-v5/Dialogs/Error.js","../node_modules/@iobroker/adapter-react-v5/Dialogs/Message.js","../node_modules/@iobroker/adapter-react-v5/Dialogs/SelectID.js","../node_modules/@iobroker/adapter-react-v5/GenericApp.js","../node_modules/@iobroker/adapter-react-v5/Prompt.js","../node_modules/@iobroker/adapter-react-v5/Theme.js","../node_modules/@iobroker/adapter-react-v5/i18n.js","../node_modules/@iobroker/adapter-react-v5/icons/IconAdapter.js","../node_modules/@iobroker/adapter-react-v5/icons/IconAlias.js","../node_modules/@iobroker/adapter-react-v5/icons/IconChannel.js","../node_modules/@iobroker/adapter-react-v5/icons/IconClearFilter.js","../node_modules/@iobroker/adapter-react-v5/icons/IconClosed.js","../node_modules/@iobroker/adapter-react-v5/icons/IconCopy.js","../node_modules/@iobroker/adapter-react-v5/icons/IconDevice.js","../node_modules/@iobroker/adapter-react-v5/icons/IconDocument.js","../node_modules/@iobroker/adapter-react-v5/icons/IconDocumentReadOnly.js","../node_modules/@iobroker/adapter-react-v5/icons/IconExpert.js","../node_modules/@iobroker/adapter-react-v5/icons/IconInstance.js","../node_modules/@iobroker/adapter-react-v5/icons/IconOpen.js","../node_modules/@iobroker/adapter-react-v5/icons/IconState.js","../node_modules/@iobroker/adapter-react-v5/node_modules/react-from-dom/src/helpers.ts","../node_modules/@iobroker/adapter-react-v5/node_modules/react-from-dom/src/index.ts","../node_modules/@iobroker/adapter-react-v5/node_modules/react-inlinesvg/src/index.tsx","../node_modules/@iobroker/adapter-react-v5/node_modules/react-inlinesvg/src/config.ts","../node_modules/@iobroker/adapter-react-v5/node_modules/react-inlinesvg/src/helpers.ts","../node_modules/@iobroker/adapter-react-v5/node_modules/react-inlinesvg/src/cache.ts","../node_modules/@sentry/src/integrations/functiontostring.ts","../node_modules/@sentry/src/integrations/inboundfilters.ts","../node_modules/@sentry/src/aggregate-errors.ts","../node_modules/@sentry/src/eventbuilder.ts","../node_modules/@sentry/src/integrations/linkederrors.ts","../node_modules/@sentry/src/index.ts","../node_modules/@sentry/src/dsn.ts","../node_modules/@sentry/src/envelope.ts","../node_modules/@sentry/src/metadata.ts","../node_modules/@sentry/src/integrations/metadata.ts","../node_modules/@sentry/src/semanticAttributes.ts","../node_modules/@sentry/src/error.ts","../node_modules/@sentry/src/api.ts","../node_modules/@sentry/src/metrics/utils.ts","../node_modules/@sentry/src/metrics/envelope.ts","../node_modules/@sentry/src/baseclient.ts","../node_modules/@sentry/src/instrument/globalError.ts","../node_modules/@sentry/src/instrument/globalUnhandledRejection.ts","../node_modules/@sentry/src/tracing/utils.ts","../node_modules/@sentry/src/tracing/errors.ts","../node_modules/@sentry/src/utils/handleCallbackErrors.ts","../node_modules/@sentry/src/utils/hasTracingEnabled.ts","../node_modules/@sentry/src/tracing/trace.ts","../node_modules/@sentry/src/metrics/metric-summary.ts","../node_modules/@sentry/src/tracing/spanstatus.ts","../node_modules/@sentry/src/tracing/span.ts","../node_modules/@sentry/src/tracing/transaction.ts","../node_modules/@sentry/src/tracing/idletransaction.ts","../node_modules/@sentry/src/tracing/sampling.ts","../node_modules/@sentry/src/tracing/hubextensions.ts","../node_modules/@sentry/src/promisebuffer.ts","../node_modules/@sentry/src/ratelimit.ts","../node_modules/@sentry/src/transports/base.ts","../node_modules/@sentry/src/transports/multiplexed.ts","../node_modules/@sentry/src/metrics/constants.ts","../node_modules/@sentry/src/metrics/instance.ts","../node_modules/@sentry/src/metrics/browser-aggregator.ts","../node_modules/@sentry/src/metrics/integration.ts","../node_modules/@sentry/src/metrics/exports.ts","../node_modules/@sentry/src/utils/parameterize.ts","../node_modules/@sentry/src/sdk.ts","../node_modules/@sentry/src/tracing/measurement.ts","../node_modules/src/helpers.ts","../node_modules/src/debug-build.ts","../node_modules/src/eventbuilder.ts","../node_modules/src/userfeedback.ts","../node_modules/src/client.ts","../node_modules/@sentry/src/utils/sdkMetadata.ts","../node_modules/@sentry/src/clientreport.ts","../node_modules/src/transports/utils.ts","../node_modules/src/transports/fetch.ts","../node_modules/src/transports/xhr.ts","../node_modules/src/stack-parsers.ts","../node_modules/@sentry/src/vendor/supportsHistory.ts","../node_modules/@sentry/src/instrument/history.ts","../node_modules/@sentry/src/instrument/dom.ts","../node_modules/src/integrations/breadcrumbs.ts","../node_modules/src/integrations/dedupe.ts","../node_modules/src/integrations/globalhandlers.ts","../node_modules/src/integrations/httpcontext.ts","../node_modules/src/integrations/linkederrors.ts","../node_modules/src/integrations/trycatch.ts","../node_modules/src/sdk.ts","../node_modules/@sentry/src/buildPolyfills/_optionalChain.ts","../node_modules/@sentry/src/isBrowser.ts","../node_modules/@sentry-internal/src/common/debug-build.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/bindReporter.ts","../node_modules/@sentry-internal/src/browser/types.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getNavigationEntry.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getActivationStart.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/initMetric.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/generateUniqueID.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/observe.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/onHidden.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getCLS.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getFID.ts","../node_modules/@sentry-internal/src/browser/web-vitals/lib/polyfills/interactionCountPolyfill.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getINP.ts","../node_modules/@sentry-internal/src/browser/web-vitals/getLCP.ts","../node_modules/@sentry-internal/src/browser/web-vitals/onTTFB.ts","../node_modules/@sentry-internal/src/browser/instrument.ts","../node_modules/src/constants.ts","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/@sentry/src/buildPolyfills/_nullishCoalesce.ts","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/types/dist/rrweb-types.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/src/types/rrweb.ts","../node_modules/src/util/timestamp.ts","../node_modules/src/coreHandlers/util/addBreadcrumbEvent.ts","../node_modules/src/coreHandlers/util/domUtils.ts","../node_modules/src/coreHandlers/util/onWindowOpen.ts","../node_modules/src/coreHandlers/handleClick.ts","../node_modules/src/util/createBreadcrumb.ts","../../node_modules/@sentry-internal/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/src/coreHandlers/util/getAttributesToRecord.ts","../node_modules/src/coreHandlers/handleDom.ts","../node_modules/src/coreHandlers/handleKeyboardEvent.ts","../node_modules/src/util/createPerformanceEntries.ts","../node_modules/src/coreHandlers/performanceObserver.ts","../replay-worker/build/npm/esm/worker.ts","../node_modules/src/util/log.ts","../node_modules/src/eventBuffer/error.ts","../node_modules/src/eventBuffer/EventBufferArray.ts","../node_modules/src/eventBuffer/WorkerHandler.ts","../node_modules/src/eventBuffer/EventBufferCompressionWorker.ts","../node_modules/src/eventBuffer/EventBufferProxy.ts","../node_modules/src/eventBuffer/index.ts","../replay-worker/build/npm/esm/index.js","../node_modules/src/util/hasSessionStorage.ts","../node_modules/src/session/clearSession.ts","../node_modules/src/util/isSampled.ts","../node_modules/src/session/Session.ts","../node_modules/src/session/saveSession.ts","../node_modules/src/session/createSession.ts","../node_modules/src/util/isExpired.ts","../node_modules/src/util/isSessionExpired.ts","../node_modules/src/session/shouldRefreshSession.ts","../node_modules/src/session/loadOrCreateSession.ts","../node_modules/src/session/fetchSession.ts","../node_modules/src/util/addEvent.ts","../node_modules/src/util/eventUtils.ts","../node_modules/src/coreHandlers/handleAfterSendEvent.ts","../node_modules/src/coreHandlers/handleBeforeSendEvent.ts","../node_modules/src/coreHandlers/handleGlobalEvent.ts","../node_modules/src/coreHandlers/util/addFeedbackBreadcrumb.ts","../node_modules/src/util/isRrwebError.ts","../node_modules/src/coreHandlers/util/shouldSampleForBufferEvent.ts","../node_modules/src/util/createPerformanceSpans.ts","../node_modules/src/coreHandlers/handleHistory.ts","../node_modules/src/coreHandlers/util/addNetworkBreadcrumb.ts","../node_modules/src/util/shouldFilterRequest.ts","../node_modules/src/coreHandlers/handleXhr.ts","../node_modules/src/coreHandlers/util/networkUtils.ts","../node_modules/src/coreHandlers/util/fetchUtils.ts","../node_modules/src/coreHandlers/util/xhrUtils.ts","../node_modules/src/coreHandlers/handleNetworkBreadcrumbs.ts","../node_modules/src/coreHandlers/handleFetch.ts","../node_modules/src/coreHandlers/handleScope.ts","../node_modules/src/util/addGlobalListeners.ts","../node_modules/src/util/addMemoryEntry.ts","../node_modules/src/util/handleRecordingEmit.ts","../node_modules/src/util/sendReplayRequest.ts","../node_modules/src/util/prepareRecordingData.ts","../node_modules/src/util/prepareReplayEvent.ts","../node_modules/src/util/createReplayEnvelope.ts","../node_modules/src/util/sendReplay.ts","../node_modules/src/util/throttle.ts","../node_modules/src/replay.ts","../node_modules/src/util/debounce.ts","../node_modules/src/util/getPrivacyOptions.ts","../node_modules/src/integration.ts","../node_modules/src/util/maskAttribute.ts","../node_modules/src/util/getReplay.ts","../../node_modules/@sentry-internal/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-worker/es/rrweb-worker/index.js","../../node_modules/@sentry-internal/rrweb/es/rrweb/packages/rrweb-worker/es/rrweb-worker/image-bitmap-data-url-worker.js","../node_modules/src/canvas.ts","../node_modules/src/util/sendFeedbackRequest.ts","../node_modules/src/util/prepareFeedbackEvent.ts","../node_modules/src/sendFeedback.ts","../node_modules/src/util/mergeOptions.ts","../node_modules/src/widget/Main.css.ts","../node_modules/src/widget/createShadowHost.ts","../node_modules/src/widget/Dialog.css.ts","../node_modules/src/util/handleFeedbackSubmit.ts","../node_modules/src/util/setAttributesNS.ts","../node_modules/src/widget/Icon.ts","../node_modules/src/widget/util/createElement.ts","../node_modules/src/widget/Actor.ts","../node_modules/src/widget/Form.ts","../node_modules/src/widget/SubmitButton.ts","../node_modules/src/widget/Logo.ts","../node_modules/src/widget/Dialog.ts","../node_modules/src/widget/SuccessIcon.ts","../node_modules/src/widget/SuccessMessage.ts","../node_modules/src/widget/createWidget.ts","../node_modules/src/widget/Actor.css.ts","../node_modules/@sentry-internal/src/browser/backgroundtab.ts","../node_modules/@sentry/src/span.ts","../node_modules/@sentry-internal/src/browser/metrics/utils.ts","../node_modules/@sentry-internal/src/browser/metrics/index.ts","../node_modules/@sentry-internal/src/common/fetch.ts","../node_modules/@sentry-internal/src/browser/request.ts","../node_modules/@sentry-internal/src/browser/browsertracing.ts","../node_modules/@sentry-internal/src/browser/router.ts","../node_modules/@sentry-internal/src/browser/browserTracingIntegration.ts","../node_modules/@sentry/src/transports/offline.ts","../node_modules/src/transports/offline.ts","../node_modules/src/profiling/utils.ts","../node_modules/src/profiling/hubextensions.ts","../node_modules/src/profiling/integration.ts","../node_modules/src/index.ts","../node_modules/@sentry/src/constants.ts","../node_modules/@sentry/src/debug-build.ts","../node_modules/@sentry/src/eventProcessors.ts","../node_modules/@sentry/src/exports.ts","../node_modules/@sentry/src/hub.ts","../node_modules/@sentry/src/integration.ts","../node_modules/@sentry/src/scope.ts","../node_modules/@sentry/src/session.ts","../node_modules/@sentry/src/tracing/dynamicSamplingContext.ts","../node_modules/@sentry/src/utils/applyScopeDataToEvent.ts","../node_modules/@sentry/src/utils/getRootSpan.ts","../node_modules/@sentry/src/utils/isSentryRequestUrl.ts","../node_modules/@sentry/src/utils/prepareEvent.ts","../node_modules/@sentry/src/utils/spanUtils.ts","../node_modules/@sentry/src/version.ts","../node_modules/src/captureconsole.ts","../node_modules/src/contextlines.ts","../node_modules/src/debug.ts","../node_modules/src/dedupe.ts","../node_modules/src/extraerrordata.ts","../node_modules/src/httpclient.ts","../node_modules/src/offline.ts","../node_modules/src/transaction.ts","../node_modules/src/reportingobserver.ts","../node_modules/@sentry/src/path.ts","../node_modules/src/rewriteframes.ts","../node_modules/src/sessiontiming.ts","../node_modules/@sentry/src/baggage.ts","../node_modules/@sentry/src/browser.ts","../node_modules/@sentry/src/env.ts","../node_modules/@sentry/src/instrument/_handlers.ts","../node_modules/@sentry/src/instrument/console.ts","../node_modules/@sentry/src/instrument/fetch.ts","../node_modules/@sentry/src/instrument/xhr.ts","../node_modules/@sentry/src/is.ts","../node_modules/@sentry/src/logger.ts","../node_modules/@sentry/src/misc.ts","../node_modules/@sentry/src/node.ts","../node_modules/@sentry/src/normalize.ts","../node_modules/@sentry/src/memo.ts","../node_modules/@sentry/src/object.ts","../node_modules/@sentry/src/severity.ts","../node_modules/@sentry/src/stacktrace.ts","../node_modules/@sentry/src/string.ts","../node_modules/@sentry/src/supports.ts","../node_modules/@sentry/src/syncpromise.ts","../node_modules/@sentry/src/time.ts","../node_modules/@sentry/src/tracing.ts","../node_modules/@sentry/src/url.ts","../node_modules/@sentry/src/worldwide.ts","../node_modules/attr-accept/dist/es/index.js","../node_modules/localforage/dist/localforage.js","../node_modules/file-selector/src/file.ts","../node_modules/file-selector/src/file-selector.ts","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../node_modules/@iobroker/socket-client/src/AdminConnection.ts","../node_modules/@iobroker/socket-client/src/Connection.ts","../node_modules/@iobroker/socket-client/dist/esm/ConnectionProps.js","../node_modules/@iobroker/socket-client/src/DeferredPromise.ts","../node_modules/@iobroker/socket-client/src/index.ts","../node_modules/@iobroker/socket-client/src/tools.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/react-icons/fa/index.mjs","../node_modules/react-icons/lib/iconsManifest.mjs","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst styles_1 = require(\"@mui/styles\");\nconst material_1 = require(\"@mui/material\");\nconst i18n_1 = __importDefault(require(\"../i18n\"));\nconst cronText_1 = __importDefault(require(\"./SimpleCron/cronText\"));\nconst styles = {\n mainDiv: {\n width: '100%',\n height: '100%',\n },\n periodSelect: {\n // margin: '0 10px 60px 10px',\n display: 'block',\n width: 200,\n },\n slider: {\n marginTop: 20,\n display: 'block',\n width: '100%',\n },\n tabContent: {\n padding: 20,\n height: 'calc(100% - 240px)',\n overflow: 'auto',\n },\n numberButton: {\n padding: 4,\n minWidth: 40,\n margin: 5,\n },\n numberButtonBreak: {\n display: 'block',\n },\n appBar: {\n color: 'white',\n },\n};\nconst WEEKDAYS = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday',\n];\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n// 5-7,9-11 => [5,6,7,9,10,11]\nfunction convertMinusIntoArray(value, max) {\n let result = [];\n if (value === '*') {\n if (max === 24 || max === 60 || max === 7) {\n for (let i = 0; i < max; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = 1; i <= max; i++) {\n result.push(i);\n }\n }\n return result; // array with entries max\n }\n const parts = (value || '').toString().split(',');\n for (let p = 0; p < parts.length; p++) {\n if (!parts[p].trim().length) {\n continue;\n }\n const items = parts[p].trim().split('-');\n if (items.length > 1) {\n const iMax = parseInt(items[1], 10);\n for (let i = parseInt(items[0], 10); i <= iMax; i++) {\n result.push(i);\n }\n }\n else {\n result.push(parseInt(parts[p], 10));\n }\n }\n result.sort();\n // remove double entries\n for (let p = result.length - 1; p >= 0; p--) {\n if (result[p] === result[p + 1]) {\n result.splice(p + 1, 1);\n }\n }\n return result;\n}\n// [5,6,7,9,10,11] => 5-7,9-11\nfunction convertArrayIntoMinus(value, max) {\n if (typeof value !== 'object') {\n value = [value];\n }\n if (value.length === max) {\n return '*';\n }\n const newParts = [];\n if (!value.length) {\n return '-';\n }\n value = value.map(a => parseInt(a, 10));\n value.sort((a, b) => a - b);\n let start = value[0];\n let end = value[0];\n for (let p = 1; p < value.length; p++) {\n if (value[p] - 1 !== parseInt(value[p - 1], 10)) {\n if (start === end) {\n newParts.push(start);\n }\n else if (end - 1 === start) {\n newParts.push(`${start},${end}`);\n }\n else {\n newParts.push(`${start}-${end}`);\n }\n start = value[p];\n }\n end = value[p];\n }\n if (start === end) {\n newParts.push(start);\n }\n else if (end - 1 === start) {\n newParts.push(`${start},${end}`);\n }\n else {\n newParts.push(`${start}-${end}`);\n }\n return newParts.join(',');\n}\nclass ComplexCron extends react_1.Component {\n constructor(props) {\n super(props);\n let cron = typeof this.props.cronExpression === 'string' ?\n this.props.cronExpression.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '') : '';\n if (cron[0] === '{') {\n cron = '';\n }\n const state = ComplexCron.cron2state(cron || '* * * * *');\n this.state = {\n extended: false,\n tab: state.seconds !== false ? 1 : 0,\n cron: ComplexCron.state2cron(state),\n modes: {\n seconds: null,\n minutes: null,\n hours: null,\n dates: null,\n months: null,\n dow: null,\n },\n };\n Object.assign(this.state, state);\n if (this.state.cron !== this.props.cronExpression) {\n setTimeout(() => this.props.onChange && this.props.onChange(this.state.cron), 100);\n }\n }\n static cron2state(cron) {\n cron = cron.replace(/['\"]/g, '').trim();\n const cronParts = cron.split(' ').map(p => p.trim());\n let options;\n if (cronParts.length === 6) {\n options = {\n seconds: cronParts[0] || '*',\n minutes: cronParts[1] || '*',\n hours: cronParts[2] || '*',\n dates: cronParts[3] || '*',\n months: cronParts[4] || '*',\n dow: cronParts[5] || '*',\n };\n }\n else {\n options = {\n seconds: false,\n minutes: cronParts[0] || '*',\n hours: cronParts[1] || '*',\n dates: cronParts[2] || '*',\n months: cronParts[3] || '*',\n dow: cronParts[4] || '*',\n };\n }\n return options;\n }\n static state2cron(state) {\n let text = `${state.minutes} ${state.hours} ${state.dates} ${state.months} ${state.dow}`;\n if (state.seconds !== false) {\n text = `${state.seconds} ${text}`;\n }\n return text;\n }\n recalcCron() {\n const cron = ComplexCron.state2cron(this.state);\n if (cron !== this.state.cron) {\n this.setState({ cron }, () => this.props.onChange && this.props.onChange(this.state.cron));\n }\n }\n onChange(cron) {\n if (cron !== this.state.cron) {\n this.setState({ cron });\n this.props.onChange && this.props.onChange(cron);\n }\n }\n onToggle(i, type, max) {\n if (i === true) {\n this.setCronAttr(type, '*');\n }\n else if (i === false) {\n if (max === 60 || max === 24) {\n this.setCronAttr(type, '0');\n }\n else {\n this.setCronAttr(type, '1');\n }\n }\n else {\n const nums = convertMinusIntoArray(this.state[type], max);\n const pos = nums.indexOf(i);\n if (pos !== -1) {\n nums.splice(pos, 1);\n }\n else {\n nums.push(i);\n nums.sort();\n }\n this.setCronAttr(type, convertArrayIntoMinus(nums, max));\n }\n }\n getDigitsSelector(type, max) {\n let values = [];\n if (max === 7) {\n values = [1, 2, 3, 4, 5, 6, 0];\n }\n else if (max === 60 || max === 24) {\n for (let i = 0; i < max; i++) {\n values.push(i);\n }\n }\n else {\n for (let i = 1; i <= max; i++) {\n values.push(i);\n }\n }\n const parts = convertMinusIntoArray(this.state[type], max);\n return [\n react_1.default.createElement(material_1.Button, { key: \"removeall\", variant: \"outlined\", className: this.props.classes.numberButton, \n // style={{paddingBottom: 20}}\n color: \"primary\", onClick: () => this.onToggle(false, type, max) }, i18n_1.default.t('ra_Deselect all')),\n react_1.default.createElement(material_1.Button, { key: \"addall\", variant: \"contained\", \n // style={{paddingBottom: 20}}\n className: this.props.classes.numberButton, color: \"secondary\", onClick: () => this.onToggle(true, type, max) }, i18n_1.default.t('ra_Select all')),\n react_1.default.createElement(\"div\", { key: \"all\" }, values.map(i => [((max === 7 && i === 4) ||\n (max === 12 && i === 7) ||\n (max === 31 && !((i - 1) % 10)) ||\n (max === 60 && i && !(i % 10)) ||\n (max === 24 && i && !(i % 6))) ?\n react_1.default.createElement(\"div\", { key: `allInner${i}`, style: { width: '100%' } }) : null, react_1.default.createElement(material_1.Button, { key: `_${i}`, variant: parts.indexOf(i) !== -1 ? 'contained' : 'outlined', className: this.props.classes.numberButton, color: parts.indexOf(i) !== -1 ? 'secondary' : 'primary', onClick: () => this.onToggle(i, type, max) }, max === 7 ? i18n_1.default.t(WEEKDAYS[i]) : (max === 12 ? MONTHS[i - 1] : i)),\n ])),\n ];\n }\n getPeriodsTab(type, max) {\n let value = this.state[type];\n let every = value === '*';\n let everyN = value === undefined || value === null ? false : value.toString().includes('/');\n let select;\n if (this.state.modes[type] === null) {\n select = every ? 'every' : (everyN ? 'everyN' : 'specific');\n const modes = JSON.parse(JSON.stringify(this.state.modes));\n modes[type] = select;\n setTimeout(() => this.setState({ modes }, () => this.recalcCron()), 100);\n return null;\n }\n every = this.state.modes[type] === 'every';\n everyN = this.state.modes[type] === 'everyN';\n select = this.state.modes[type];\n let valueNumber = 1;\n if (everyN && value) {\n valueNumber = parseInt(value.replace('*/', ''), 10) || 1;\n }\n return react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.Select, { variant: \"standard\", className: this.props.classes.periodSelect, style: { verticalAlign: 'bottom' }, value: select, onChange: e => {\n const modes = JSON.parse(JSON.stringify(this.state.modes));\n modes[type] = e.target.value;\n if (e.target.value === 'every') {\n this.setCronAttr(type, '*', modes);\n }\n else if (e.target.value === 'everyN') {\n const num = parseInt((this.state[type] || '').toString().replace('*/', ''), 10) || 1;\n this.setCronAttr(type, `*/${num}`, modes);\n }\n else if (e.target.value === 'specific') {\n let num = parseInt((this.state[type] || '').toString().split(',')[0], 10) || 0;\n if (!num && (type === 'months' || type === 'dates')) {\n num = 1;\n }\n this.setCronAttr(type, convertArrayIntoMinus(num, max), modes);\n }\n } },\n react_1.default.createElement(material_1.MenuItem, { key: \"every\", value: \"every\" }, i18n_1.default.t(`sc_every_${type}`)),\n react_1.default.createElement(material_1.MenuItem, { key: \"everyN\", value: \"everyN\" }, i18n_1.default.t(`sc_everyN_${type}`)),\n react_1.default.createElement(material_1.MenuItem, { key: \"specific\", value: \"specific\" }, i18n_1.default.t(`sc_specific_${type}`))),\n everyN && false && react_1.default.createElement(\"span\", null, value),\n everyN && react_1.default.createElement(material_1.TextField, { variant: \"standard\", key: \"interval\", label: i18n_1.default.t(`sc_${type}`), value: valueNumber, inputProps: { min: 1, max: max }, onChange: e => {\n // @ts-expect-error is allowed\n this.setState({ [type]: `*/${e.target.value}` }, () => this.recalcCron());\n }, InputLabelProps: { shrink: true }, type: \"number\", margin: \"normal\" }),\n !every && !everyN && this.getDigitsSelector(type, max));\n }\n static convertCronToText(cron, lang) {\n if (cron.split(' ').includes('-')) {\n return i18n_1.default.t('ra_Invalid CRON');\n }\n return (0, cronText_1.default)(cron, lang);\n }\n setCronAttr(attr, value, modes) {\n if (modes) {\n if (attr === 'seconds') {\n this.setState({ seconds: value, modes }, () => this.recalcCron());\n }\n else if (attr === 'minutes') {\n this.setState({ minutes: value, modes }, () => this.recalcCron());\n }\n else if (attr === 'hours') {\n this.setState({ hours: value, modes }, () => this.recalcCron());\n }\n else if (attr === 'dates') {\n this.setState({ hours: value, modes }, () => this.recalcCron());\n }\n else if (attr === 'months') {\n this.setState({ months: value, modes }, () => this.recalcCron());\n }\n else if (attr === 'dow') {\n this.setState({ dow: value, modes }, () => this.recalcCron());\n }\n else {\n this.setState({ modes }, () => this.recalcCron());\n }\n }\n else {\n if (attr === 'seconds') {\n this.setState({ seconds: value }, () => this.recalcCron());\n }\n else if (attr === 'minutes') {\n this.setState({ minutes: value }, () => this.recalcCron());\n }\n else if (attr === 'hours') {\n this.setState({ hours: value }, () => this.recalcCron());\n }\n else if (attr === 'dates') {\n this.setState({ hours: value }, () => this.recalcCron());\n }\n else if (attr === 'months') {\n this.setState({ months: value }, () => this.recalcCron());\n }\n else if (attr === 'dow') {\n this.setState({ dow: value }, () => this.recalcCron());\n }\n }\n }\n render() {\n const tab = this.state.seconds !== false ? this.state.tab : this.state.tab + 1;\n return react_1.default.createElement(\"div\", { className: this.props.classes.mainDiv },\n react_1.default.createElement(\"div\", { style: { paddingLeft: 8, width: '100%' } },\n react_1.default.createElement(material_1.TextField, { variant: \"standard\", style: { width: '100%' }, value: this.state.cron, disabled: true })),\n react_1.default.createElement(\"div\", { style: { paddingLeft: 8, width: '100%', height: 60 } }, ComplexCron.convertCronToText(this.state.cron, this.props.language || 'en')),\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: !!this.state.seconds, onChange: e => this.setState({ seconds: e.target.checked ? '*' : false }, () => this.recalcCron()) }), label: i18n_1.default.t('ra_use seconds') }),\n react_1.default.createElement(material_1.AppBar, { position: \"static\", classes: { root: this.props.classes.appBar }, color: \"secondary\" },\n react_1.default.createElement(material_1.Tabs, { value: this.state.tab, className: this.props.classes.appBar, color: \"secondary\", onChange: (active, _tab) => this.setState({ tab: _tab }) },\n this.state.seconds !== false && react_1.default.createElement(material_1.Tab, { id: \"sc_seconds\", label: i18n_1.default.t('sc_seconds') }),\n react_1.default.createElement(material_1.Tab, { id: \"minutes\", label: i18n_1.default.t('sc_minutes') }),\n react_1.default.createElement(material_1.Tab, { id: \"hours\", label: i18n_1.default.t('sc_hours') }),\n react_1.default.createElement(material_1.Tab, { id: \"dates\", label: i18n_1.default.t('sc_dates') }),\n react_1.default.createElement(material_1.Tab, { id: \"months\", label: i18n_1.default.t('sc_months') }),\n react_1.default.createElement(material_1.Tab, { id: \"dow\", label: i18n_1.default.t('sc_dows') }))),\n tab === 0 && react_1.default.createElement(\"div\", { className: this.props.classes.tabContent }, this.getPeriodsTab('seconds', 60)),\n tab === 1 && react_1.default.createElement(\"div\", { className: this.props.classes.tabContent }, this.getPeriodsTab('minutes', 60)),\n tab === 2 && react_1.default.createElement(\"div\", { className: this.props.classes.tabContent }, this.getPeriodsTab('hours', 24)),\n tab === 3 && react_1.default.createElement(\"div\", { className: this.props.classes.tabContent }, this.getPeriodsTab('dates', 31)),\n tab === 4 && react_1.default.createElement(\"div\", { className: this.props.classes.tabContent }, this.getPeriodsTab('months', 12)),\n tab === 5 && react_1.default.createElement(\"div\", { className: this.props.classes.tabContent }, this.getPeriodsTab('dow', 7)));\n }\n}\nexports.default = (0, styles_1.withStyles)(styles)(ComplexCron);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\nMIT License\n\nCopyright (c) 2017 sudodoki \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n */\n// https://github.com/sudodoki/toggle-selection/blob/gh-pages/index.js\nfunction deselectCurrent() {\n const selection = document.getSelection();\n if (!(selection === null || selection === void 0 ? void 0 : selection.rangeCount)) {\n return () => { };\n }\n let active = document.activeElement;\n const ranges = [];\n for (let i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n switch (active === null || active === void 0 ? void 0 : active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n default:\n active = null;\n break;\n }\n selection.removeAllRanges();\n return () => {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n if (!selection.rangeCount) {\n ranges.forEach(range => selection.addRange(range));\n }\n active && active.focus();\n };\n}\n// https://github.com/sudodoki/copy-to-clipboard/blob/master/index.js\nconst clipboardToIE11Formatting = {\n 'text/plain': 'Text',\n 'text/html': 'Url',\n default: 'Text',\n};\nconst defaultMessage = 'Copy to clipboard: #{key}, Enter';\nfunction format(message) {\n const copyKey = `${/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl'}+C`;\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\nfunction copy(text, options) {\n let reselectPrevious;\n let range;\n let selection;\n let mark;\n let success = false;\n options = options || {};\n const debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n range = document.createRange();\n selection = document.getSelection();\n mark = document.createElement('span');\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = 'true';\n // reset user styles for span element\n mark.style.all = 'unset';\n // prevents scrolling to the end of the page\n mark.style.position = 'fixed';\n mark.style.top = '0px';\n mark.style.clip = 'rect(0, 0, 0, 0)';\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = 'pre';\n // do not inherit user-select (it may be `none`)\n // @ts-ignore\n mark.style.webkitUserSelect = 'text';\n // @ts-ignore\n mark.style.MozUserSelect = 'text';\n // @ts-ignore\n mark.style.msUserSelect = 'text';\n mark.style.userSelect = 'text';\n mark.addEventListener('copy', e => {\n var _a, _b, _c, _d;\n e.stopPropagation();\n if (options === null || options === void 0 ? void 0 : options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === 'undefined') { // IE 11\n debug && console.warn('unable to use e.clipboardData');\n debug && console.warn('trying IE specific stuff');\n (_a = window.clipboardData) === null || _a === void 0 ? void 0 : _a.clearData();\n // @ts-ignore\n const _format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting.default;\n (_b = window.clipboardData) === null || _b === void 0 ? void 0 : _b.setData(_format, text);\n }\n else { // all other browsers\n (_c = e.clipboardData) === null || _c === void 0 ? void 0 : _c.clearData();\n (_d = e.clipboardData) === null || _d === void 0 ? void 0 : _d.setData(options.format, text);\n }\n }\n });\n document.body.appendChild(mark);\n range.selectNodeContents(mark);\n selection === null || selection === void 0 ? void 0 : selection.addRange(range);\n const successful = document.execCommand('copy');\n if (!successful) {\n throw new Error('copy command was unsuccessful');\n }\n success = true;\n }\n catch (err) {\n debug && console.error('unable to copy using execCommand: ', err);\n debug && console.warn('trying IE specific stuff');\n try {\n window.clipboardData.setData(options.format || 'text', text);\n // options.onCopy && options.onCopy((window as any).clipboardData);\n success = true;\n }\n catch (error) {\n debug && console.error('unable to copy using clipboardData: ', error);\n debug && console.error('falling back to prompt');\n const message = format('message' in options ? options.message || '' : defaultMessage);\n window.prompt(message, text);\n }\n }\n finally {\n if (selection) {\n if (range && typeof selection.removeRange === 'function') {\n selection.removeRange(range);\n }\n else {\n selection.removeAllRanges();\n }\n }\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious && reselectPrevious();\n }\n return success;\n}\nexports.default = copy;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSelectIdIcon = exports.getSystemIcon = void 0;\nconst react_1 = __importDefault(require(\"react\"));\nconst react_inlinesvg_1 = __importDefault(require(\"react-inlinesvg\"));\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst IconAlias_1 = __importDefault(require(\"../icons/IconAlias\"));\nconst Utils_1 = __importDefault(require(\"./Utils\"));\nfunction getSystemIcon(obj) {\n let icon;\n const id = obj === null || obj === void 0 ? void 0 : obj._id;\n if (!id) {\n return null;\n }\n // system or design has special icons\n if (id.startsWith('_design/') || (id === 'system')) {\n icon = react_1.default.createElement(icons_material_1.SettingsApplications, { className: \"iconOwn\" });\n }\n else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = react_1.default.createElement(icons_material_1.Photo, { className: \"iconOwn\" });\n }\n else if (id === 'alias' || id === 'alias.0') {\n icon = react_1.default.createElement(IconAlias_1.default, { className: \"iconOwn\" });\n }\n else if (id === 'system.adapter') {\n icon = react_1.default.createElement(icons_material_1.SettingsApplications, { className: \"iconOwn\" });\n }\n else if (id === 'system.group') {\n icon = react_1.default.createElement(icons_material_1.SupervisedUserCircle, { className: \"iconOwn\" });\n }\n else if (id === 'system.user') {\n icon = react_1.default.createElement(icons_material_1.PersonOutlined, { className: \"iconOwn\" });\n }\n else if (id === 'system.host') {\n icon = react_1.default.createElement(icons_material_1.Router, { className: \"iconOwn\" });\n }\n else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = react_1.default.createElement(icons_material_1.Wifi, { className: \"iconOwn\" });\n }\n else if (id.endsWith('.info')) {\n icon = react_1.default.createElement(icons_material_1.Info, { className: \"iconOwn\" });\n }\n else if ((obj === null || obj === void 0 ? void 0 : obj.type) === 'meta') {\n icon = react_1.default.createElement(icons_material_1.Description, { className: \"iconOwn\" });\n }\n return icon || null;\n}\nexports.getSystemIcon = getSystemIcon;\nfunction getSelectIdIcon(obj, imagePrefix) {\n imagePrefix = imagePrefix || '.'; // http://localhost:8081';\n let src = '';\n const common = obj === null || obj === void 0 ? void 0 : obj.common;\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (obj.type === 'instance' || obj.type === 'adapter') {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n }\n else if (obj._id && obj._id.startsWith('system.adapter.')) {\n instance = obj._id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n }\n else {\n instance[2] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n }\n else {\n instance = obj._id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n }\n else {\n instance[0] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n }\n else {\n return null;\n }\n }\n else {\n // base 64 image\n src = cIcon;\n }\n }\n }\n return src || null;\n}\nexports.getSelectIdIcon = getSelectIdIcon;\nconst REMOTE_SERVER = window.location.hostname.includes('iobroker.in');\nconst REMOTE_PREFIX = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);\nconst Icon = (props) => {\n var _a, _b, _c;\n if (props.src) {\n if (typeof props.src === 'string') {\n if (props.src.length < 3) {\n // utf-8 char\n return react_1.default.createElement(\"span\", { title: props.title || undefined, style: Object.assign({ height: 27, marginTop: -8 }, (props.styleUTF8 || props.style)), className: Utils_1.default.clsx(props.className, 'iconOwn') }, props.src);\n }\n if (props.src.startsWith('data:image/svg')) {\n return react_1.default.createElement(react_inlinesvg_1.default, { title: props.title || undefined, src: props.src, className: Utils_1.default.clsx(props.className, 'iconOwn'), width: ((_a = props.style) === null || _a === void 0 ? void 0 : _a.width) || 28, height: ((_b = props.style) === null || _b === void 0 ? void 0 : _b.height) || ((_c = props.style) === null || _c === void 0 ? void 0 : _c.width) || 28, style: props.style || {} });\n }\n if (REMOTE_SERVER && !props.src.startsWith('http://') && !props.src.startsWith('https://')) {\n let src = props.src;\n if (src.startsWith('./')) {\n src = REMOTE_PREFIX + src.substring(2);\n }\n else if (!src.startsWith('/')) {\n src = REMOTE_PREFIX + src;\n }\n return react_1.default.createElement(\"img\", { title: props.title || undefined, style: props.style || {}, className: Utils_1.default.clsx(props.className, 'iconOwn'), src: `https://remote-files.iobroker.in${src}`, alt: props.alt || undefined, ref: props.ref, onError: e => {\n // analyse error\n props.onError && props.onError(e);\n } });\n }\n return react_1.default.createElement(\"img\", { title: props.title || undefined, style: props.style || {}, className: Utils_1.default.clsx(props.className, 'iconOwn'), src: props.src, alt: props.alt || undefined, ref: props.ref, onError: props.onError });\n }\n return props.src;\n }\n return null;\n};\nexports.default = Icon;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Copyright 2018-2024 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\nconst react_1 = __importStar(require(\"react\"));\nconst loaderStyles = `\n/**\n * Copyright 2018-2024 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\n\n.logo-background-light, .logo-background-colored {\n background: white;\n}\n.logo-background-dark, .logo-background-blue {\n background: black;\n}\n.logo-div {\n position: absolute;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n overflow: hidden;\n border-radius: 50%;\n z-index: 2;\n}\n.logo-border {\n /*border-color: #164477;*/\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n.logo-top {\n position: absolute;\n width: 4.5%;\n height: 16%;\n top: 0;\n z-index: 2;\n}\n.logo-i {\n position: absolute;\n width: 14.5%;\n height: 60%;\n top: 20%;\n left: 42%;\n background: #3399CC;\n}\n.logo-i-top {\n position: absolute;\n width: 14.5%;\n height: 4%;\n left: 42%;\n background: #3399CC;\n border-radius: 100%;\n}\n.logo-back {\n width: 100%;\n height: 100%;\n z-index: 0;\n overflow: hidden;\n}\n@keyframes logo-grow {\n 0% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(1);\n opacity: 1\n }\n 99% {\n width: 230px;\n height: 230px;\n transform: translate(-50%,-50%) scale(10);\n opacity: 0;\n }\n 100% {\n width: 0;\n height: 0;\n opacity: 0;\n }\n}\n@keyframes logo-spin { 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }\n@keyframes logo-color-inside-light {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-dark {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-colored {\n 0% {\n background: #FEFEFE;\n }\n 100% {\n background: #3399CC;\n }\n}\n@keyframes logo-color-inside-blue {\n 0% {\n background: #030303;\n }\n 100% {\n background: #3399CC;\n }\n}\n\n@keyframes logo-color-outside-light {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-dark {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-colored {\n 0% {\n border-color: #FEFEFE;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n@keyframes logo-color-outside-blue {\n 0% {\n border-color: #040404;\n }\n 100% {\n border-top-color: #3399CC;\n border-left-color: #164477;\n border-bottom-color: #164477;\n border-right-color: #164477;\n }\n}\n\n.logo-animate-wait {\n animation: logo-color-outside 1.5s, logo-spin 1.5s linear infinite;\n}\n\n.logo-animate-grow-light {\n background: #DDD;\n}\n.logo-animate-grow-dark {\n background: #1d1d1d;\n}\n.logo-animate-grow-colored {\n background: #DDD;\n}\n.logo-animate-grow-blue {\n background: #1d1d1d;\n}\n\n.logo-animate-grow {\n display: inline-block;\n text-align: center;\n z-index: 1;\n top: 50%;\n left: 50%;\n -ms-transform: translateX(-50%) translateY(-50%);\n -webkit-transform: translate(-50%,-50%);\n transform: translate(-50%,-50%);\n width: 245px;\n height: 245px;\n border-radius: 50%;\n position: absolute;\n animation: logo-grow 1s 1 ease forwards;\n}\n\n.logo-animate-color-inside-light {\n animation: logo-color-inside-light 2.5s;\n}\n.logo-animate-color-inside-dark {\n animation: logo-color-inside-dark 2.5s;\n}\n.logo-animate-color-inside-colored {\n animation: logo-color-inside-colored 2.5s;\n}\n.logo-animate-color-inside-blue {\n animation: logo-color-inside-blue 2.5s;\n}\n\n.logo-animate-color-outside-light {\n animation: logo-color-outside-light 1.5s;\n}\n.logo-animate-color-outside-dark {\n animation: logo-color-outside-dark 1.5s;\n}\n.logo-animate-color-outside-colored {\n animation: logo-color-outside-colored 1.5s;\n}\n.logo-animate-color-outside-blue {\n animation: logo-color-outside-blue 1.5s;\n}\n`;\nfunction Loader(props) {\n (0, react_1.useEffect)(() => {\n if (!window.document.getElementById('loader-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'loader-iobroker-component');\n style.innerHTML = loaderStyles;\n window.document.head.appendChild(style);\n }\n }, []);\n const size = props.size || 234;\n const theme = props.themeName || props.theme || props.themeType || 'light';\n return react_1.default.createElement(\"div\", { className: `logo-back logo-background-${theme}`, style: {\n backgroundImage: (props.backgroundImage && props.backgroundImage !== '@@loginBackgroundImage@@') ? props.backgroundImage :\n (window.loadingBackgroundImage && window.loadingBackgroundImage !== '@@loginBackgroundImage@@' ? `url(${window.loadingBackgroundImage})` : undefined),\n backgroundColor: (props.backgroundColor && props.backgroundColor !== '@@loginBackgroundColor@@') ? props.backgroundColor :\n (window.loadingBackgroundColor && window.loadingBackgroundColor !== '@@loginBackgroundColor@@' ? window.loadingBackgroundColor : undefined),\n backgroundSize: 'cover',\n } }, window.loadingHideLogo === 'true' ?\n null\n :\n react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(\"div\", { className: \"logo-div\", style: { width: size, height: size } },\n react_1.default.createElement(\"div\", { className: `logo-top logo-background-${theme}`, style: { left: '37%' } }),\n react_1.default.createElement(\"div\", { className: `logo-top logo-background-${theme}`, style: { left: '57%' } }),\n react_1.default.createElement(\"div\", { className: `logo-border logo-background-${theme} logo-animate-wait`, style: { borderWidth: size * 0.132 } }),\n react_1.default.createElement(\"div\", { className: `logo-i logo-animate-color-inside-${theme}` }),\n react_1.default.createElement(\"div\", { className: `logo-i-top logo-animate-color-inside-${theme}`, style: { top: '18%' } }),\n react_1.default.createElement(\"div\", { className: `logo-i-top logo-animate-color-inside-${theme}`, style: { bottom: '18%' } })),\n react_1.default.createElement(\"div\", { className: `logo-animate-grow logo-animate-grow-${theme}`, style: { width: size + 11, height: size + 11 } })));\n}\nexports.default = Loader;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _a, _ObjectBrowser_NON_EXPERT_NAMESPACES;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ITEM_IMAGES = exports.getSelectIdIconFromObjects = void 0;\n/**\n * Copyright 2020-2024, Denis Haev \n *\n * MIT License\n *\n * */\nconst react_1 = __importStar(require(\"react\"));\nconst styles_1 = require(\"@mui/styles\");\nconst react_inlinesvg_1 = __importDefault(require(\"react-inlinesvg\"));\nconst material_1 = require(\"@mui/material\");\n// Icons\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst IconExpert_1 = __importDefault(require(\"../icons/IconExpert\"));\nconst IconAdapter_1 = __importDefault(require(\"../icons/IconAdapter\"));\nconst IconChannel_1 = __importDefault(require(\"../icons/IconChannel\"));\nconst IconCopy_1 = __importDefault(require(\"../icons/IconCopy\"));\nconst IconDevice_1 = __importDefault(require(\"../icons/IconDevice\"));\nconst IconDocument_1 = __importDefault(require(\"../icons/IconDocument\"));\nconst IconDocumentReadOnly_1 = __importDefault(require(\"../icons/IconDocumentReadOnly\"));\nconst IconInstance_1 = __importDefault(require(\"../icons/IconInstance\"));\nconst IconState_1 = __importDefault(require(\"../icons/IconState\"));\nconst IconClosed_1 = __importDefault(require(\"../icons/IconClosed\"));\nconst IconOpen_1 = __importDefault(require(\"../icons/IconOpen\"));\nconst IconClearFilter_1 = __importDefault(require(\"../icons/IconClearFilter\"));\nconst Connection_1 = __importDefault(require(\"../Connection\"));\nconst Icon_1 = __importDefault(require(\"./Icon\"));\nconst withWidth_1 = __importDefault(require(\"./withWidth\"));\nconst Utils_1 = __importDefault(require(\"./Utils\")); // @iobroker/adapter-react-v5/Components/Utils\nconst TabContainer_1 = __importDefault(require(\"./TabContainer\"));\nconst TabContent_1 = __importDefault(require(\"./TabContent\"));\nconst TabHeader_1 = __importDefault(require(\"./TabHeader\"));\nconst ICON_SIZE = 24;\nconst ROW_HEIGHT = 32;\nconst ITEM_LEVEL = 16;\nconst SMALL_BUTTON_SIZE = 20;\nconst COLOR_NAME_USERDATA = (themeType) => (themeType === 'dark' ? '#62ff25' : '#37c400');\nconst COLOR_NAME_ALIAS = (themeType) => (themeType === 'dark' ? '#ee56ff' : '#a204b4');\nconst COLOR_NAME_JAVASCRIPT = (themeType) => (themeType === 'dark' ? '#fff46e' : '#b89101');\nconst COLOR_NAME_SYSTEM = (themeType) => (themeType === 'dark' ? '#ff6d69' : '#ff6d69');\nconst COLOR_NAME_SYSTEM_ADAPTER = (themeType) => (themeType === 'dark' ? '#5773ff' : '#5773ff');\nconst COLOR_NAME_ERROR_DARK = '#ff413c';\nconst COLOR_NAME_ERROR_LIGHT = '#86211f';\nconst COLOR_NAME_CONNECTED_DARK = '#57ff45';\nconst COLOR_NAME_CONNECTED_LIGHT = '#098c04';\nconst COLOR_NAME_DISCONNECTED_DARK = '#f3ad11';\nconst COLOR_NAME_DISCONNECTED_LIGHT = '#6c5008';\nconst styles = (theme) => ({\n toolbar: {\n minHeight: 38, // Theme.toolbar.height,\n // boxShadow: '0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)'\n },\n toolbarButtons: {\n padding: 4,\n marginLeft: 4,\n },\n switchColumnAuto: {\n marginLeft: theme.spacing(2),\n },\n dialogColumns: {\n transition: 'opacity 1s',\n },\n dialogColumnsLabel: {\n fontSize: 12,\n paddingTop: theme.spacing(1),\n },\n columnCustom: {\n width: '100%',\n display: 'inline-block',\n },\n columnCustomEditable: {\n cursor: 'text',\n },\n columnCustom_center: {\n textAlign: 'center',\n },\n columnCustom_left: {\n textAlign: 'left',\n },\n columnCustom_right: {\n textAlign: 'right',\n },\n width100: {\n width: '100%',\n },\n transparent_10: {\n opacity: 0.1,\n },\n transparent_20: {\n opacity: 0.2,\n },\n transparent_30: {\n opacity: 0.3,\n },\n transparent_40: {\n opacity: 0.4,\n },\n transparent_50: {\n opacity: 0.5,\n },\n transparent_60: {\n opacity: 0.6,\n },\n transparent_70: {\n opacity: 0.7,\n },\n transparent_80: {\n opacity: 0.8,\n },\n transparent_90: {\n opacity: 0.9,\n },\n transparent_100: {\n opacity: 1,\n },\n columnsDialogInputWidth: {\n width: 80,\n },\n headerRow: {\n paddingLeft: theme.spacing(1),\n height: 38,\n whiteSpace: 'nowrap',\n userSelect: 'none',\n },\n buttonClearFilter: {\n position: 'relative',\n float: 'right',\n padding: 0,\n },\n buttonClearFilterIcon: {\n zIndex: 2,\n position: 'absolute',\n top: 0,\n left: 0,\n color: '#FF0000',\n opacity: 0.7,\n },\n tableDiv: {\n paddingTop: 0, // theme.spacing(1),\n paddingLeft: 0,\n width: `calc(100% - ${theme.spacing(1)})`,\n height: 'calc(100% - 38px)',\n overflow: 'auto',\n },\n tableRow: {\n paddingLeft: theme.spacing(1),\n height: ROW_HEIGHT,\n lineHeight: `${ROW_HEIGHT}px`,\n verticalAlign: 'top',\n userSelect: 'none',\n width: '100%',\n '&:hover': {\n background: `${theme.palette.mode === 'dark' ? theme.palette.primary.dark : theme.palette.primary.light} !important`,\n color: Utils_1.default.invertColor(theme.palette.primary.main, true),\n },\n whiteSpace: 'nowrap',\n flexWrap: 'nowrap',\n },\n tableRowLines: {\n borderBottom: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n '& > div': {\n borderRight: `1px solid ${theme.palette.mode === 'dark' ? '#8888882e' : '#8888882e'}`,\n },\n },\n tableRowNoDragging: {\n cursor: 'pointer',\n },\n tableRowAlias: {\n height: ROW_HEIGHT + 10,\n },\n tableRowAliasReadWrite: {\n height: ROW_HEIGHT + 22,\n },\n checkBox: {\n padding: 0,\n },\n cellId: {\n position: 'relative',\n fontSize: '1rem',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n // verticalAlign: 'top',\n // position: 'relative',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n '& .iconOwn': {\n display: 'block',\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n marginTop: 2,\n float: 'right',\n },\n '&:hover .iconOwn': {\n display: 'none',\n },\n '& *': {\n width: 'initial',\n },\n },\n cellIdSpan: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n // display: 'inline-block',\n // verticalAlign: 'top',\n },\n cellIdIconFolder: {\n marginRight: theme.spacing(1),\n width: ROW_HEIGHT - 4,\n height: ROW_HEIGHT - 4,\n cursor: 'pointer',\n color: theme.palette.secondary.main || '#fbff7d',\n verticalAlign: 'top',\n },\n cellIdIconDocument: {\n verticalAlign: 'middle',\n marginLeft: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n marginRight: theme.spacing(1),\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n },\n cellIdIconOwn: {},\n cellIdTooltip: {\n fontSize: 14,\n },\n cellIdTooltipLink: {\n color: '#7ec2fd',\n '&:hover': {\n color: '#7ec2fd',\n },\n '&:visited': {\n color: '#7ec2fd',\n },\n },\n cellCopyButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n opacity: 0.8,\n '&:hover': {\n opacity: 1,\n },\n position: 'absolute',\n right: 3,\n },\n cellEditButton: {\n width: SMALL_BUTTON_SIZE,\n height: SMALL_BUTTON_SIZE,\n color: 'white',\n position: 'absolute',\n top: (ROW_HEIGHT - SMALL_BUTTON_SIZE) / 2,\n right: SMALL_BUTTON_SIZE + 3,\n opacity: 0.7,\n '&:hover': {\n opacity: 1,\n },\n },\n cellName: {\n display: 'inline-block',\n verticalAlign: 'top',\n fontSize: 14,\n marginLeft: 5,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n },\n cellNameWithDesc: {\n lineHeight: 'normal',\n },\n cellNameDivDiv: {},\n cellDescription: {\n fontSize: 10,\n opacity: 0.5,\n fontStyle: 'italic',\n },\n cellIdAlias: {\n fontStyle: 'italic',\n fontSize: 12,\n opacity: 0.7,\n '&:hover': {\n color: theme.palette.mode === 'dark' ? '#009900' : '#007700',\n },\n },\n cellIdAliasReadWriteDiv: {\n height: 24,\n marginTop: -5,\n },\n cellIdAliasAlone: {\n lineHeight: 0,\n },\n cellIdAliasReadWrite: {\n lineHeight: '12px',\n },\n cellType: {\n display: 'inline-block',\n verticalAlign: 'top',\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n '& .itemIconFolder': {\n marginLeft: 3,\n },\n },\n cellRole: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellRoom: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellEnumParent: {\n opacity: 0.4,\n },\n cellFunc: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValue: {\n display: 'inline-block',\n verticalAlign: 'top',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n },\n cellValueButton: {\n marginTop: 5,\n '&:active': {\n transform: 'scale(0.8)',\n },\n },\n cellValueButtonFalse: {\n opacity: 0.3,\n },\n cellAdapter: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellValueTooltip: {\n fontSize: 12,\n },\n cellValueText: {\n width: '100%',\n height: ROW_HEIGHT,\n fontSize: 16,\n display: 'inline-block',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n position: 'relative',\n verticalAlign: 'top',\n '& .copyButton': {\n display: 'none',\n },\n '&:hover .copyButton': {\n display: 'block',\n },\n },\n cellValueFile: {\n color: '#2837b9',\n },\n cellValueTooltipTitle: {\n fontStyle: 'italic',\n width: 100,\n display: 'inline-block',\n },\n cellValueTooltipValue: {\n width: 120,\n display: 'inline-block',\n // overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n },\n cellValueTooltipBoth: {\n width: 220,\n display: 'inline-block',\n whiteSpace: 'nowrap',\n },\n cellValueTooltipBox: {\n width: 250,\n overflow: 'hidden',\n pointerEvents: 'none',\n },\n tooltip: {\n pointerEvents: 'none',\n },\n cellValueTextUnit: {\n marginLeft: theme.spacing(0.5),\n opacity: 0.8,\n },\n newValue: {\n animation: '$newValueAnimation 2s ease-in-out',\n },\n '@keyframes newValueAnimation': {\n '0%': {\n color: '#00f900',\n },\n '80%': {\n color: '#008000',\n },\n '100%': {\n color: theme.palette.mode === 'dark' ? '#fff' : '#000',\n },\n },\n cellValueTextState: {\n opacity: 0.7,\n },\n cellValueTooltipCopy: {\n position: 'absolute',\n bottom: 3,\n right: 3,\n },\n cellValueTooltipEdit: {\n position: 'absolute',\n bottom: 3,\n right: 15,\n },\n cellButtons: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n cellButtonsButton: {\n display: 'inline-block',\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE + 4,\n height: SMALL_BUTTON_SIZE + 4,\n '&:hover': {\n opacity: 1,\n },\n paddingTop: 0,\n paddingLeft: 0,\n marginTop: -2,\n },\n cellButtonsEmptyButton: {\n fontSize: 12,\n },\n cellButtonMinWidth: {\n minWidth: 47,\n },\n cellButtonsButtonAlone: {\n marginLeft: SMALL_BUTTON_SIZE + 4,\n paddingTop: 0,\n marginTop: -2,\n },\n cellButtonsButtonWithCustoms: {\n color: theme.palette.mode === 'dark' ? theme.palette.primary.main : theme.palette.secondary.main,\n },\n cellButtonsButtonWithoutCustoms: {\n opacity: 0.2,\n },\n cellButtonsValueButton: {\n position: 'absolute',\n display: 'inline-block',\n top: SMALL_BUTTON_SIZE / 2 - 2,\n opacity: 0.7,\n width: SMALL_BUTTON_SIZE - 2,\n height: SMALL_BUTTON_SIZE - 2,\n color: theme.palette.action.active,\n '&:hover': {\n opacity: 1,\n },\n },\n cellButtonsValueButtonCopy: {\n right: theme.spacing(1),\n cursor: 'pointer',\n },\n cellButtonsValueButtonEdit: {\n right: SMALL_BUTTON_SIZE / 2 + parseInt(theme.spacing(2), 10),\n },\n filteredOut: {\n opacity: 0.5,\n },\n filteredParentOut: {\n opacity: 0.3,\n },\n filterInput: {\n marginTop: 0,\n marginBottom: 0,\n },\n selectIcon: {\n width: 24,\n height: 24,\n marginRight: 4,\n },\n selectNone: {\n opacity: 0.5,\n },\n itemSelected: {\n background: `${theme.palette.primary.main} !important`,\n color: `${Utils_1.default.invertColor(theme.palette.primary.main, true)} !important`,\n },\n header: {\n width: '100%',\n },\n headerCell: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n headerCellValue: {\n paddingTop: 4,\n // paddingLeft: 5,\n fontSize: 16,\n },\n headerCellInput: {\n width: 'calc(100% - 5px)',\n height: ROW_HEIGHT,\n paddingTop: 0,\n '& .itemIcon': {\n verticalAlign: 'middle',\n width: ICON_SIZE,\n height: ICON_SIZE,\n display: 'inline-block',\n },\n },\n headerCellSelectItem: {\n '& .itemIcon': {\n width: ICON_SIZE,\n height: ICON_SIZE,\n marginRight: 5,\n display: 'inline-block',\n },\n },\n visibleButtons: {\n color: '#2196f3',\n opacity: 0.7,\n },\n grow: {\n flexGrow: 1,\n },\n enumIconDiv: {\n marginRight: theme.spacing(1),\n width: 32,\n height: 32,\n borderRadius: 8,\n background: '#FFFFFF',\n },\n enumIcon: {\n marginTop: 4,\n marginLeft: 4,\n width: 24,\n height: 24,\n },\n enumDialog: {\n overflow: 'hidden',\n },\n enumList: {\n minWidth: 250,\n height: 'calc(100% - 50px)',\n overflow: 'auto',\n },\n enumButton: {\n float: 'right',\n },\n enumCheckbox: {\n minWidth: 0,\n },\n buttonDiv: {\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n },\n aclText: {\n fontSize: 13,\n },\n rightsObject: {\n color: '#55ff55',\n paddingLeft: 3,\n },\n rightsState: {\n color: '#86b6ff',\n paddingLeft: 3,\n },\n textCenter: {\n padding: 12,\n textAlign: 'center',\n },\n tooltipAccessControl: {\n display: 'flex',\n flexDirection: 'column',\n },\n '@media screen and (max-width: 465px)': {\n columnsDialogInputWidth: {\n width: 50,\n },\n fontSizeTitle: {\n '& *': {\n fontSize: 12,\n },\n },\n },\n '@media screen and (max-width: 700px)': {},\n '@media screen and (max-width: 430px)': {},\n draggable: {\n cursor: 'copy',\n },\n nonDraggable: {\n cursor: 'no-drop',\n },\n selectClearButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 20,\n backgroundColor: theme.palette.background.default,\n },\n iconDeviceConnected: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n },\n iconDeviceDisconnected: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_DISCONNECTED_DARK : COLOR_NAME_DISCONNECTED_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 32,\n width: 20,\n },\n iconDeviceError: {\n color: theme.palette.mode === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT,\n opacity: 0.8,\n position: 'absolute',\n top: 4,\n right: 50,\n width: 20,\n },\n resizeHandle: {\n display: 'block',\n position: 'absolute',\n cursor: 'col-resize',\n width: 7,\n top: 2,\n bottom: 2,\n zIndex: 1,\n },\n resizeHandleRight: {\n right: 3,\n borderRight: '2px dotted #888',\n '&:hover': {\n borderColor: '#ccc',\n borderRightStyle: 'solid',\n },\n '&.active': {\n borderColor: '#517ea5',\n borderRightStyle: 'solid',\n },\n },\n invertedBackground: {\n backgroundColor: theme.palette.mode === 'dark' ? '#9a9a9a' : '#565656',\n padding: '0 3px',\n borderRadius: '2px 0 0 2px',\n },\n invertedBackgroundFlex: {\n backgroundColor: theme.palette.mode === 'dark' ? '#9a9a9a' : '#565656',\n borderRadius: '0 2px 2px 0',\n },\n contextMenuEdit: {\n color: theme.palette.mode === 'dark' ? '#ffee48' : '#cbb801',\n },\n contextMenuEditValue: {\n color: theme.palette.mode === 'dark' ? '#5dff45' : '#1cd301',\n },\n contextMenuView: {\n color: theme.palette.mode === 'dark' ? '#FFF' : '#000',\n },\n contextMenuCustom: {\n color: theme.palette.mode === 'dark' ? '#42eaff' : '#01bbc2',\n },\n contextMenuACL: {\n color: theme.palette.mode === 'dark' ? '#e079ff' : '#500070',\n },\n contextMenuRoom: {\n color: theme.palette.mode === 'dark' ? '#ff9a33' : '#642a00',\n },\n contextMenuRole: {\n color: theme.palette.mode === 'dark' ? '#ffdb43' : '#562d00',\n },\n contextMenuAlias: {\n color: theme.palette.mode === 'dark' ? '#5cabfb' : '#011ed0',\n },\n contextMenuDelete: {\n color: theme.palette.mode === 'dark' ? '#ff4f4f' : '#cf0000',\n },\n contextMenuKeys: {\n marginLeft: theme.spacing(1),\n opacity: 0.7,\n fontSize: 'smaller',\n },\n contextMenuWithSubMenu: {\n display: 'flex',\n },\n});\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nfunction walkThroughArray(object, iteratee) {\n const copiedObject = [];\n for (let index = 0; index < object.length; index++) {\n iteratee(copiedObject, object[index], index);\n }\n return copiedObject;\n}\n/**\n * Function that walks through all keys of an object or array and applies a function to each key.\n */\nfunction walkThroughObject(object, iteratee) {\n const copiedObject = {};\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n iteratee(copiedObject, object[key], key);\n }\n }\n return copiedObject;\n}\n/**\n * Function to reduce an object primarily by a given list of keys\n */\nfunction filterObject(\n/** The objects which should be filtered */\nobj, \n/** The keys which should be excluded */\nfilterKeys, \n/** Whether translations should be reduced to only the english value */\nexcludeTranslations) {\n if (Array.isArray(obj)) {\n return walkThroughArray(obj, (result, value, key) => {\n if (value === undefined || value === null) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n }\n return walkThroughObject(obj, (result, value, key) => {\n if (value === undefined || value === null) {\n return;\n }\n if (filterKeys.includes(key)) {\n return;\n }\n // if the key is an object, run it through the inner function - omitFromObject\n const isObject = typeof value === 'object';\n if (excludeTranslations && isObject) {\n if (typeof value.en === 'string' && typeof value.de === 'string') {\n result[key] = value.en;\n return;\n }\n }\n result[key] = isObject ? filterObject(value, filterKeys, excludeTranslations) : value;\n });\n}\n/**\n * Function to generate a json-file for an object and trigger download it\n */\nfunction generateFile(\n/** The desired filename */\nfileName, \n/** The objects which should be downloaded */\nobj, \n/** Options to filter/reduce the output */\noptions) {\n const el = document.createElement('a');\n const filterKeys = [];\n if (options.excludeSystemRepositories) {\n filterKeys.push('system.repositories');\n }\n const filteredObject = filterKeys.length > 0 || options.excludeTranslations ? filterObject(obj, filterKeys, options.excludeTranslations) : obj;\n const data = options.beautify ? JSON.stringify(filteredObject, null, 2) : JSON.stringify(filteredObject);\n el.setAttribute('href', `data:application/json;charset=utf-8,${encodeURIComponent(data)}`);\n el.setAttribute('download', fileName);\n el.style.display = 'none';\n document.body.appendChild(el);\n el.click();\n document.body.removeChild(el);\n}\n// d=data, t=target, s=start, e=end, m=middle\nfunction binarySearch(list, find, _start, _end) {\n _start = _start || 0;\n if (_end === undefined) {\n _end = list.length - 1;\n if (!_end) {\n return list[0] === find;\n }\n }\n const middle = Math.floor((_start + _end) / 2);\n if (find === list[middle]) {\n return true;\n }\n if (_end - 1 === _start) {\n return list[_start] === find || list[_end] === find;\n }\n if (find > list[middle]) {\n return binarySearch(list, find, middle, _end);\n }\n if (find < list[middle]) {\n return binarySearch(list, find, _start, middle);\n }\n return false;\n}\nfunction getName(name, lang) {\n if (name && typeof name === 'object') {\n return (name[lang] || name.en || '').toString();\n }\n return (name || '').toString();\n}\nfunction getSelectIdIconFromObjects(objects, id, imagePrefix) {\n // `admin` has prefix '.' and `web` has '../..'\n imagePrefix = imagePrefix || '.'; // http://localhost:8081';\n let src = '';\n const _id_ = `system.adapter.${id}`;\n const aIcon = id && objects[_id_] && objects[_id_].common && objects[_id_].common.icon;\n if (aIcon) {\n // if not BASE64\n if (!aIcon.startsWith('data:image/')) {\n if (aIcon.includes('.')) {\n src = `${imagePrefix}/adapter/${objects[_id_].common.name}/${aIcon}`;\n }\n else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n }\n else {\n return null; // '' + objects[_id_].common.icon + '';\n }\n }\n else if (aIcon.startsWith('data:image/svg')) {\n src = react_1.default.createElement(react_inlinesvg_1.default, { className: \"iconOwn\", src: aIcon, width: 28, height: 28 });\n }\n else {\n src = aIcon;\n }\n }\n else {\n const common = objects[id] && objects[id].common;\n if (common) {\n const cIcon = common.icon;\n if (cIcon) {\n if (!cIcon.startsWith('data:image/')) {\n if (cIcon.includes('.')) {\n let instance;\n if (objects[id].type === 'instance' || objects[id].type === 'adapter') {\n src = `${imagePrefix}/adapter/${common.name}/${cIcon}`;\n }\n else if (id && id.startsWith('system.adapter.')) {\n instance = id.split('.', 3);\n if (cIcon[0] === '/') {\n instance[2] += cIcon;\n }\n else {\n instance[2] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[2]}`;\n }\n else {\n instance = id.split('.', 2);\n if (cIcon[0] === '/') {\n instance[0] += cIcon;\n }\n else {\n instance[0] += `/${cIcon}`;\n }\n src = `${imagePrefix}/adapter/${instance[0]}`;\n }\n }\n else if (aIcon && aIcon.length < 3) {\n return aIcon; // utf-8\n }\n else {\n return null;\n }\n }\n else if (cIcon.startsWith('data:image/svg')) {\n // if base 64 image\n src = react_1.default.createElement(react_inlinesvg_1.default, { className: \"iconOwn\", src: cIcon, width: 28, height: 28 });\n }\n else {\n src = cIcon;\n }\n }\n }\n }\n return src || null;\n}\nexports.getSelectIdIconFromObjects = getSelectIdIconFromObjects;\nfunction applyFilter(item, filters, lang, objects, context, counter, customFilter, selectedTypes, _depth) {\n var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n _depth = _depth || 0;\n let filteredOut = false;\n if (!context) {\n context = {};\n if (filters.id) {\n context.id = filters.id.toLowerCase();\n }\n if (filters.name) {\n context.name = filters.name.toLowerCase();\n }\n if (filters.type) {\n context.type = filters.type.toLowerCase();\n }\n if (filters.custom) {\n context.custom = filters.custom.toLowerCase();\n }\n if (filters.role) {\n context.role = filters.role.toLowerCase();\n }\n if (filters.room) {\n context.room = ((_c = (_b = objects[filters.room]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.members) || [];\n }\n if (filters.func) {\n context.func = ((_e = (_d = objects[filters.func]) === null || _d === void 0 ? void 0 : _d.common) === null || _e === void 0 ? void 0 : _e.members) || [];\n }\n }\n const data = item.data;\n if (data && data.id) {\n const common = (_f = data.obj) === null || _f === void 0 ? void 0 : _f.common;\n if (customFilter) {\n if (customFilter.type) {\n if (typeof customFilter.type === 'string') {\n if (!data.obj || customFilter.type !== data.obj.type) {\n filteredOut = true;\n }\n }\n else if (Array.isArray(customFilter.type)) {\n if (!data.obj || !customFilter.type.includes(data.obj.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && ((_g = customFilter.common) === null || _g === void 0 ? void 0 : _g.type)) {\n if (!(common === null || common === void 0 ? void 0 : common.type)) {\n filteredOut = true;\n }\n else if (typeof customFilter.common.type === 'string') {\n if (customFilter.common.type !== common.type) {\n filteredOut = true;\n }\n }\n else if (Array.isArray(customFilter.common.type)) {\n if (!customFilter.common.type.includes(common.type)) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && ((_h = customFilter.common) === null || _h === void 0 ? void 0 : _h.role)) {\n if (!(common === null || common === void 0 ? void 0 : common.role)) {\n filteredOut = true;\n }\n else if (typeof customFilter.common.role === 'string') {\n if (common.role.startsWith(customFilter.common.role)) {\n filteredOut = true;\n }\n }\n else if (Array.isArray(customFilter.common.role)) {\n if (!customFilter.common.role.find(role => common.role.startsWith(role))) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && ((_j = customFilter.common) === null || _j === void 0 ? void 0 : _j.custom) === '_' && (common === null || common === void 0 ? void 0 : common.custom)) {\n filteredOut = true;\n }\n else if (!filteredOut && ((_k = customFilter.common) === null || _k === void 0 ? void 0 : _k.custom) && ((_l = customFilter.common) === null || _l === void 0 ? void 0 : _l.custom) !== '_') {\n const filterOfCustom = customFilter.common.custom;\n if (!(common === null || common === void 0 ? void 0 : common.custom)) {\n filteredOut = true;\n }\n else if (filterOfCustom === '_dataSources') {\n // TODO: make it configurable\n if (!Object.keys(common.custom).find(id => id.startsWith('history.') || id.startsWith('sql.') || id.startsWith('influxdb.'))) {\n filteredOut = true;\n }\n }\n else if (Array.isArray(filterOfCustom)) { // here are ['influxdb.', 'telegram.']\n const customs = Object.keys(common.custom); // here are ['influxdb.0', 'telegram.2']\n if (filterOfCustom.find(cst => customs.find(id => id.startsWith(cst)))) {\n filteredOut = true;\n }\n }\n else if (filterOfCustom !== true &&\n !Object.keys(common.custom).find(id => id.startsWith(filterOfCustom))) {\n filteredOut = true;\n }\n }\n }\n if (!filteredOut && !filters.expertMode) {\n filteredOut =\n data.id === 'system' ||\n data.id === 'enum' ||\n // (data.obj && data.obj.type === 'meta') ||\n data.id.startsWith('system.') ||\n data.id.startsWith('enum.') ||\n data.id.startsWith('_design/') ||\n data.id.endsWith('.admin') ||\n !!(common === null || common === void 0 ? void 0 : common.expert);\n }\n if (!filteredOut && context.id) {\n if (data.fID === undefined) {\n data.fID = data.id.toLowerCase();\n }\n filteredOut = !data.fID.includes(context.id);\n }\n if (!filteredOut && context.name) {\n if (common) {\n if (data.fName === undefined) {\n data.fName = (common && getName(common.name, lang)) || '';\n data.fName = data.fName.toLowerCase();\n }\n filteredOut = !data.fName.includes(context.name);\n }\n else {\n filteredOut = true;\n }\n }\n if (!filteredOut && filters.role && common) {\n if (common) {\n filteredOut = !(common.role && common.role.startsWith(context.role));\n }\n else {\n filteredOut = true;\n }\n }\n if (!filteredOut && context.room) {\n filteredOut = !context.room.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.func) {\n filteredOut = !context.func.find(id => id === data.id || data.id.startsWith(`${id}.`));\n }\n if (!filteredOut && context.type) {\n filteredOut = !(data.obj && data.obj.type && data.obj.type === context.type);\n }\n if (!filteredOut && selectedTypes) {\n filteredOut = !(data.obj && data.obj.type && selectedTypes.includes(data.obj.type));\n }\n if (!filteredOut && context.custom) {\n if (common) {\n if (context.custom === '_') {\n filteredOut = !!common.custom;\n }\n else {\n filteredOut = !common.custom || !common.custom[context.custom];\n }\n }\n else {\n filteredOut = true;\n }\n }\n }\n data.visible = !filteredOut;\n data.hasVisibleChildren = false;\n if (item.children && _depth < 20) {\n item.children.forEach(_item => {\n const visible = applyFilter(_item, filters, lang, objects, context, counter, customFilter, selectedTypes, _depth + 1);\n if (visible) {\n data.hasVisibleChildren = true;\n }\n });\n }\n // const visible = data.visible || data.hasVisibleChildren;\n data.sumVisibility = data.visible || data.hasVisibleChildren; // || data.hasVisibleParent;\n if (counter && data.sumVisibility) {\n counter.count++;\n }\n // show all children of visible object with opacity 0.5\n if (data.id && data.sumVisibility && item.children) {\n item.children.forEach(_item => (_item.data.hasVisibleParent = true));\n }\n return data.visible || data.hasVisibleChildren;\n}\nfunction getVisibleItems(item, type, objects, _result) {\n var _b;\n _result = _result || [];\n const data = item.data;\n if (data.sumVisibility) {\n data.id && objects[data.id] && (!type || objects[data.id].type === type) && _result.push(data.id);\n (_b = item.children) === null || _b === void 0 ? void 0 : _b.forEach(_item => getVisibleItems(_item, type, objects, _result));\n }\n return _result;\n}\nfunction getSystemIcon(objects, id, level, themeType, imagePrefix) {\n let icon;\n // system or design has special icons\n if (id === 'alias' || id === 'alias.0') {\n icon = react_1.default.createElement(icons_material_1.Link, { className: \"iconOwn\", style: { color: COLOR_NAME_ALIAS(themeType) } });\n }\n else if (id === '0_userdata' || id === '0_userdata.0') {\n icon = react_1.default.createElement(icons_material_1.DataObject, { className: \"iconOwn\", style: { color: COLOR_NAME_USERDATA(themeType) } });\n }\n else if (id.startsWith('_design/') || id === 'system') {\n icon = react_1.default.createElement(icons_material_1.SettingsApplications, { className: \"iconOwn\", style: { color: COLOR_NAME_SYSTEM(themeType) } });\n }\n else if (id === 'system.adapter') {\n icon = react_1.default.createElement(icons_material_1.SettingsApplications, { className: \"iconOwn\", style: { color: COLOR_NAME_SYSTEM_ADAPTER(themeType) } });\n }\n else if (id === 'system.group') {\n icon = react_1.default.createElement(icons_material_1.SupervisedUserCircle, { className: \"iconOwn\" });\n }\n else if (id === 'system.user') {\n icon = react_1.default.createElement(icons_material_1.PersonOutlined, { className: \"iconOwn\" });\n }\n else if (id === 'system.host') {\n icon = react_1.default.createElement(icons_material_1.Router, { className: \"iconOwn\" });\n }\n else if (id.endsWith('.connection') || id.endsWith('.connected')) {\n icon = react_1.default.createElement(icons_material_1.Wifi, { className: \"iconOwn\" });\n }\n else if (id.endsWith('.info')) {\n icon = react_1.default.createElement(icons_material_1.Info, { className: \"iconOwn\" });\n }\n else if (objects[id] && objects[id].type === 'meta') {\n icon = react_1.default.createElement(icons_material_1.Description, { className: \"iconOwn\" });\n }\n else if (level < 2) {\n // detect \"cloud.0\"\n if (objects[`system.adapter.${id}`]) {\n icon = getSelectIdIconFromObjects(objects, `system.adapter.${id}`, imagePrefix);\n }\n }\n return icon || null;\n}\nfunction getObjectTooltip(data, lang) {\n var _b, _c;\n if ((_c = (_b = data === null || data === void 0 ? void 0 : data.obj) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.desc) {\n return getName(data.obj.common.desc, lang) || null;\n }\n return null;\n}\nfunction getIdFieldTooltip(data, classes, lang) {\n const tooltip = getObjectTooltip(data, lang);\n if (tooltip === null || tooltip === void 0 ? void 0 : tooltip.startsWith('http')) {\n return react_1.default.createElement(\"a\", { className: Utils_1.default.clsx(classes.cellIdTooltipLink), href: tooltip, target: \"_blank\", rel: \"noreferrer\" }, tooltip);\n }\n return react_1.default.createElement(\"span\", { className: Utils_1.default.clsx(classes.cellIdTooltip) }, tooltip || data.id || '');\n}\nfunction buildTree(objects, options) {\n var _b, _c, _d, _e, _f;\n const imagePrefix = options.imagePrefix || '.';\n let ids = Object.keys(objects);\n ids.sort((a, b) => {\n if (a === b) {\n return 0;\n }\n a = a.replace(/\\./g, '!!!');\n b = b.replace(/\\./g, '!!!');\n if (a > b) {\n return 1;\n }\n return -1;\n });\n if (options.root) {\n ids = ids.filter(id => id === options.root || id.startsWith(`${options.root}.`));\n }\n // find empty nodes and create names for it\n let currentPathArr = [];\n let currentPath = '';\n let currentPathLen = 0;\n const root = {\n data: {\n name: '',\n id: '',\n },\n children: [],\n };\n const info = {\n funcEnums: [],\n roomEnums: [],\n roles: [],\n ids: [],\n types: [],\n objects,\n customs: ['_'],\n enums: [],\n hasSomeCustoms: false,\n };\n let cRoot = root;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n if (!id) {\n continue;\n }\n const obj = objects[id];\n const parts = id.split('.');\n if (obj.type && !info.types.includes(obj.type)) {\n info.types.push(obj.type);\n }\n if (obj) {\n const common = obj.common;\n const role = common && common.role;\n if (role && !info.roles.includes(role)) {\n info.roles.push(role);\n }\n else if (id.startsWith('enum.rooms.')) {\n info.roomEnums.push(id);\n info.enums.push(id);\n }\n else if (id.startsWith('enum.functions.')) {\n info.funcEnums.push(id);\n info.enums.push(id);\n }\n else if (obj.type === 'enum') {\n info.enums.push(id);\n }\n else if (obj.type === 'instance' && common && (common.supportCustoms || ((_b = common.adminUI) === null || _b === void 0 ? void 0 : _b.custom))) {\n info.hasSomeCustoms = true;\n info.customs.push(id.substring('system.adapter.'.length));\n }\n }\n info.ids.push(id);\n let repeat;\n // if next level\n do {\n repeat = false;\n // If the current level is still OK, and we can add ID to children\n if (!currentPath || id.startsWith(`${currentPath}.`)) {\n // if more than one level added\n if (parts.length - currentPathLen > 1) {\n let curPath = currentPath;\n // generate missing levels\n for (let k = currentPathLen; k < parts.length - 1; k++) {\n curPath += (curPath ? '.' : '') + parts[k];\n // level does not exist\n if (!binarySearch(info.ids, curPath)) {\n const _cRoot = {\n data: {\n name: parts[k],\n parent: cRoot,\n id: curPath,\n obj: objects[curPath],\n level: k,\n icon: getSystemIcon(objects, curPath, k, options.themeType, imagePrefix),\n generated: true,\n },\n };\n cRoot.children = cRoot.children || [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n info.ids.push(curPath); // IDs will be added by alphabet\n }\n else if (cRoot.children) {\n cRoot = cRoot.children.find(item => item.data.name === parts[k]);\n }\n }\n }\n const _cRoot = {\n data: {\n name: parts[parts.length - 1],\n title: getName((_c = obj === null || obj === void 0 ? void 0 : obj.common) === null || _c === void 0 ? void 0 : _c.name, options.lang),\n obj,\n parent: cRoot,\n icon: getSelectIdIconFromObjects(objects, id, imagePrefix) ||\n getSystemIcon(objects, id, 0, options.themeType, imagePrefix),\n id,\n hasCustoms: !!(((_d = obj.common) === null || _d === void 0 ? void 0 : _d.custom) && Object.keys(obj.common.custom).length),\n level: parts.length - 1,\n generated: false,\n button: obj.type === 'state' &&\n !!((_e = obj.common) === null || _e === void 0 ? void 0 : _e.role) &&\n typeof obj.common.role === 'string' &&\n obj.common.role.startsWith('button') &&\n ((_f = obj.common) === null || _f === void 0 ? void 0 : _f.write) !== false,\n },\n };\n cRoot.children = cRoot.children || [];\n cRoot.children.push(_cRoot);\n cRoot = _cRoot;\n currentPathLen = parts.length;\n currentPathArr = parts;\n currentPath = id;\n }\n else {\n let u = 0;\n while (currentPathArr[u] === parts[u]) {\n u++;\n }\n if (u > 0) {\n let move = currentPathArr.length;\n currentPathArr = currentPathArr.splice(0, u);\n currentPathLen = u;\n currentPath = currentPathArr.join('.');\n while (move > u) {\n if (cRoot.data.parent) {\n cRoot = cRoot.data.parent;\n }\n else {\n console.error(`Parent is null for ${id} ${currentPath} ${currentPathArr.join('.')}`);\n }\n move--;\n }\n }\n else {\n cRoot = root;\n currentPathArr = [];\n currentPath = '';\n currentPathLen = 0;\n }\n repeat = true;\n }\n } while (repeat);\n }\n info.roomEnums.sort((a, b) => {\n var _b, _c, _d, _e;\n const aName = getName((_c = (_b = objects[a]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.name, options.lang) || a.split('.').pop();\n const bName = getName((_e = (_d = objects[b]) === null || _d === void 0 ? void 0 : _d.common) === null || _e === void 0 ? void 0 : _e.name, options.lang) || b.split('.').pop();\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.funcEnums.sort((a, b) => {\n var _b, _c, _d, _e;\n const aName = getName((_c = (_b = objects[a]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.name, options.lang) || a.split('.').pop();\n const bName = getName((_e = (_d = objects[b]) === null || _d === void 0 ? void 0 : _d.common) === null || _e === void 0 ? void 0 : _e.name, options.lang) || b.split('.').pop();\n if (aName > bName) {\n return 1;\n }\n if (aName < bName) {\n return -1;\n }\n return 0;\n });\n info.roles.sort();\n info.types.sort();\n return { info, root };\n}\nfunction findNode(root, id, _parts, _path, _level) {\n if (root.data.id === id) {\n return root;\n }\n if (!_parts) {\n _parts = id.split('.');\n _level = 0;\n _path = _parts[_level];\n }\n if (!root.children && root.data.id !== id) {\n return null;\n }\n let found;\n if (root.children) {\n for (let i = 0; i < root.children.length; i++) {\n const _id = root.children[i].data.id;\n if (_id === _path) {\n found = root.children[i];\n break;\n }\n else if (_id > _path) {\n break;\n }\n }\n }\n if (found) {\n _level = _level || 0;\n return findNode(found, id, _parts, `${_path}.${_parts[_level + 1]}`, _level + 1);\n }\n return null;\n}\nfunction findRoomsForObject(info, id, lang, rooms) {\n var _b, _c;\n if (!id) {\n return { rooms: [], per: false };\n }\n rooms = rooms || [];\n for (const room of info.roomEnums) {\n const common = (_b = info.objects[room]) === null || _b === void 0 ? void 0 : _b.common;\n if (!common) {\n continue;\n }\n const name = getName(common.name, lang);\n if (((_c = common.members) === null || _c === void 0 ? void 0 : _c.includes(id)) && !rooms.includes(name)) {\n rooms.push(name);\n }\n }\n let ownEnums;\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = rooms.length;\n findRoomsForObject(info, id, lang, rooms);\n }\n return { rooms, per: !ownEnums }; // per is if the enums are from parent\n}\nfunction findEnumsForObjectAsIds(info, id, enumName, funcs) {\n var _b, _c;\n if (!id) {\n return [];\n }\n funcs = funcs || [];\n for (let i = 0; i < info[enumName].length; i++) {\n const common = (_b = info.objects[info[enumName][i]]) === null || _b === void 0 ? void 0 : _b.common;\n if (((_c = common === null || common === void 0 ? void 0 : common.members) === null || _c === void 0 ? void 0 : _c.includes(id)) && !funcs.includes(info[enumName][i])) {\n funcs.push(info[enumName][i]);\n }\n }\n funcs.sort();\n return funcs;\n}\nfunction findFunctionsForObject(info, id, lang, funcs) {\n var _b, _c;\n if (!id) {\n return { funcs: [], pef: false };\n }\n funcs = funcs || [];\n for (let i = 0; i < info.funcEnums.length; i++) {\n const common = (_b = info.objects[info.funcEnums[i]]) === null || _b === void 0 ? void 0 : _b.common;\n if (!common) {\n continue;\n }\n const name = getName(common.name, lang);\n if (((_c = common.members) === null || _c === void 0 ? void 0 : _c.includes(id)) && !funcs.includes(name)) {\n funcs.push(name);\n }\n }\n let ownEnums;\n // Check parent\n const parts = id.split('.');\n parts.pop();\n id = parts.join('.');\n if (info.objects[id]) {\n ownEnums = funcs.length;\n findFunctionsForObject(info, id, lang, funcs);\n }\n return { funcs, pef: !ownEnums };\n}\n/*\nfunction quality2text(q) {\n if (!q) {\n return 'ok';\n }\n const custom = q & 0xFFFF0000;\n let text = '';\n if (q & 0x40) text += 'device';\n if (q & 0x80) text += 'sensor';\n if (q & 0x01) text += ' bad';\n if (q & 0x02) text += ' not connected';\n if (q & 0x04) text += ' error';\n\n return text + (custom ? '|0x' + (custom >> 16).toString(16).toUpperCase() : '') + ' [0x' + q.toString(16).toUpperCase() + ']';\n}\n*/\n/**\n * Format a state value for visualization\n */\nfunction formatValue(options) {\n const { dateFormat, state, isFloatComma, texts, obj, } = options;\n const states = Utils_1.default.getStates(obj);\n const isCommon = obj.common;\n let v = \n // @ts-expect-error deprecated from js-controller 6\n (isCommon === null || isCommon === void 0 ? void 0 : isCommon.type) === 'file'\n ? '[file]'\n : !state || state.val === null\n ? '(null)'\n : state.val === undefined\n ? '[undef]'\n : state.val;\n const type = typeof v;\n if ((isCommon === null || isCommon === void 0 ? void 0 : isCommon.role) && typeof isCommon.role === 'string' && isCommon.role.match(/^value\\.time|^date/)) {\n if (v && typeof v === 'string') {\n if (Utils_1.default.isStringInteger(v)) {\n // we assume a unix ts\n v = new Date(parseInt(v, 10)).toString();\n }\n else {\n // check if parsable by new date\n try {\n const parsedDate = new Date(v);\n if (Utils_1.default.isValidDate(parsedDate)) {\n v = parsedDate.toString();\n }\n }\n catch (_b) {\n // ignore\n }\n }\n }\n else {\n if (v > 946681200 && v < 946681200000) {\n // '2000-01-01T00:00:00' => 946681200000\n v *= 1000; // maybe the time is in seconds (UNIX time)\n }\n // null and undefined could not be here. See `let v = (isCommon && isCommon.type === 'file') ....` above\n v = v ? new Date(v).toString() : v;\n }\n }\n else {\n if (type === 'number') {\n if (!Number.isInteger(v)) {\n v = Math.round(v * 100000000) / 100000000; // remove 4.00000000000000001\n if (isFloatComma) {\n v = v.toString().replace('.', ',');\n }\n }\n }\n else if (type === 'object') {\n v = JSON.stringify(v);\n }\n else if (type !== 'string') {\n v = v.toString();\n }\n if (typeof v !== 'string') {\n v = v.toString();\n }\n }\n const valText = { v: v };\n // try to replace number with \"common.states\"\n if (states && states[v] !== undefined) {\n if (v !== states[v]) {\n valText.s = v;\n v = states[v];\n valText.v = v;\n }\n }\n if (isCommon === null || isCommon === void 0 ? void 0 : isCommon.unit) {\n valText.u = isCommon.unit;\n }\n const valFull = [{ t: texts.value, v }];\n if (state) {\n if (state.ack !== undefined && state.ack !== null) {\n valFull.push({ t: texts.ack, v: state.ack.toString() });\n }\n if (state.ts) {\n valFull.push({ t: texts.ts, v: state.ts ? Utils_1.default.formatDate(new Date(state.ts), dateFormat) : '' });\n }\n if (state.lc) {\n valFull.push({ t: texts.lc, v: state.lc ? Utils_1.default.formatDate(new Date(state.lc), dateFormat) : '' });\n }\n if (state.from) {\n let from = state.from.toString();\n if (from.startsWith('system.adapter.')) {\n from = from.substring(15);\n }\n valFull.push({ t: texts.from, v: from });\n }\n if (state.user) {\n let user = state.user.toString();\n if (user.startsWith('system.user.')) {\n user = user.substring(12);\n }\n valFull.push({ t: texts.user, v: user });\n }\n if (state.c) {\n valFull.push({ t: texts.c, v: state.c });\n }\n valFull.push({ t: texts.quality, v: Utils_1.default.quality2text(state.q || 0).join(', '), nbr: true });\n }\n return {\n valText,\n valFull,\n };\n}\n/**\n * Get css style for given state value\n */\nfunction getValueStyle(options) {\n const { state, isExpertMode, isButton } = options;\n let color = (state === null || state === void 0 ? void 0 : state.ack) ? (state.q ? '#ffa500' : '') : '#ff2222c9';\n if (!isExpertMode && isButton) {\n color = '';\n }\n return { color };\n}\nfunction prepareSparkData(values, from) {\n // set one point every hour\n let time = from;\n let i = 1;\n const v = [];\n while (i < values.length && time < from + 25 * 3600000) {\n // find the interval\n while (values[i - 1].ts < time && time <= values[i].ts && i < values.length) {\n i++;\n }\n if (i === 1 && values[i - 1].ts >= time) {\n // assume the value was always null\n v.push(0);\n }\n else if (i < values.length) {\n if (typeof values[i].val === 'boolean' || typeof values[i - 1].val === 'boolean') {\n v.push(values[i].val ? 1 : 0);\n }\n else {\n // remove nulls\n values[i - 1].val = values[i - 1].val || 0;\n values[i].val = values[i].val || 0;\n // interpolate\n const nm1 = values[i - 1].val;\n const n = values[i].val;\n const val = nm1 + ((n - nm1) * (time - values[i - 1].ts)) / (values[i].ts - values[i - 1].ts);\n v.push(val);\n }\n }\n time += 3600000;\n }\n return v;\n}\nexports.ITEM_IMAGES = {\n state: react_1.default.createElement(IconState_1.default, { className: \"itemIcon\" }),\n channel: react_1.default.createElement(IconChannel_1.default, { className: \"itemIcon\" }),\n device: react_1.default.createElement(IconDevice_1.default, { className: \"itemIcon\" }),\n adapter: react_1.default.createElement(IconAdapter_1.default, { className: \"itemIcon\" }),\n meta: react_1.default.createElement(icons_material_1.Description, { className: \"itemIcon\" }),\n instance: react_1.default.createElement(IconInstance_1.default, { className: \"itemIcon\", style: { color: '#7da7ff' } }),\n enum: react_1.default.createElement(icons_material_1.ListAlt, { className: \"itemIcon\" }),\n chart: react_1.default.createElement(icons_material_1.ShowChart, { className: \"itemIcon\" }),\n config: react_1.default.createElement(icons_material_1.Settings, { className: \"itemIcon\" }),\n group: react_1.default.createElement(icons_material_1.SupervisedUserCircle, { className: \"itemIcon\" }),\n user: react_1.default.createElement(icons_material_1.PersonOutlined, { className: \"itemIcon\" }),\n host: react_1.default.createElement(icons_material_1.Router, { className: \"itemIcon\" }),\n schedule: react_1.default.createElement(icons_material_1.CalendarToday, { className: \"itemIcon\" }),\n script: react_1.default.createElement(icons_material_1.Code, { className: \"itemIcon\" }),\n folder: react_1.default.createElement(IconClosed_1.default, { className: \"itemIcon itemIconFolder\" }),\n};\nconst StyledBadge = (0, styles_1.withStyles)(theme => ({\n badge: {\n right: 3,\n top: 3,\n border: `2px solid ${theme.palette.background.paper}`,\n padding: '0 4px',\n },\n}))(material_1.Badge);\nconst SCREEN_WIDTHS = {\n // extra-small: 0px\n xs: { idWidth: '100%', fields: [], widths: {} },\n // small: 600px\n sm: { idWidth: 300, fields: ['room', 'val'], widths: { room: 100, val: 200 } },\n // medium: 960px\n md: {\n idWidth: 300,\n fields: ['room', 'func', 'val', 'buttons'],\n widths: {\n name: 200,\n room: 150,\n func: 150,\n val: 120,\n buttons: 120,\n },\n },\n // large: 1280px\n lg: {\n idWidth: 300,\n fields: [\n 'name',\n 'type',\n 'role',\n 'room',\n 'func',\n 'val',\n 'buttons',\n 'changedFrom',\n 'qualityCode',\n 'timestamp',\n 'lastChange',\n ],\n widths: {\n name: 300,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 165,\n lastChange: 165,\n },\n },\n // /////////////\n // extra-large: 1920px\n xl: {\n idWidth: 550,\n fields: [\n 'name',\n 'type',\n 'role',\n 'room',\n 'func',\n 'val',\n 'buttons',\n 'changedFrom',\n 'qualityCode',\n 'timestamp',\n 'lastChange',\n ],\n widths: {\n name: 400,\n type: 80,\n role: 120,\n room: 180,\n func: 180,\n val: 140,\n buttons: 120,\n changedFrom: 120,\n qualityCode: 100,\n timestamp: 170,\n lastChange: 170,\n },\n },\n};\nlet objectsAlreadyLoaded = false;\nconst DEFAULT_FILTER = {\n id: '',\n name: '',\n room: '',\n func: '',\n role: '',\n type: '',\n custom: '',\n expertMode: false,\n};\nclass ObjectBrowser extends react_1.Component {\n constructor(props) {\n super(props);\n this.localStorage = window._localStorage || window.localStorage;\n this.lastAppliedFilter = null;\n this.pausedSubscribes = false;\n this.selectedFound = false;\n this.root = null;\n this.states = {};\n this.subscribes = [];\n this.unsubscribeTimer = null;\n this.statesUpdateTimer = null;\n this.objectsUpdateTimer = null;\n this.filterTimer = null;\n this.adapterColumns = [];\n this.edit = { id: '', val: '', q: 0, ack: false };\n this.customWidth = false;\n this.resizeTimeout = null;\n this.resizerNextName = null;\n this.resizerActiveName = null;\n this.resizerCurrentWidths = {};\n this.resizeLeft = false;\n this.resizerOldWidth = 0;\n this.resizerMin = 0;\n this.resizerNextMin = 0;\n this.resizerOldWidthNext = 0;\n this.resizerPosition = 0;\n this.resizerActiveDiv = null;\n this.resizerNextDiv = null;\n this.storedWidths = null;\n this.defaultHistory = '';\n this.changedIds = null;\n this.contextMenu = null;\n this.recordStates = [];\n this.customColumnDialog = null;\n /**\n * Context menu handler.\n */\n this.onContextMenu = (e) => {\n // console.log(`CONTEXT MENU: ${this.contextMenu ? Date.now() - this.contextMenu.ts : 'false'}`);\n if (this.contextMenu && Date.now() - this.contextMenu.ts < 2000) {\n e.preventDefault();\n this.setState({ showContextMenu: { item: this.contextMenu.item } });\n }\n else if (this.state.showContextMenu) {\n e.preventDefault();\n this.setState({ showContextMenu: null });\n }\n this.contextMenu = null;\n };\n /**\n * Called when a state changes.\n */\n this.onStateChange = (id, state) => {\n console.log(`> stateChange ${id}`);\n if (this.states[id]) {\n const item = this.findItem(id);\n if (item === null || item === void 0 ? void 0 : item.data.state) {\n item.data.state = undefined;\n }\n }\n if (state) {\n this.states[id] = state;\n }\n else {\n delete this.states[id];\n }\n if (!this.pausedSubscribes) {\n if (!this.statesUpdateTimer) {\n this.statesUpdateTimer = setTimeout(() => {\n this.statesUpdateTimer = null;\n this.forceUpdate();\n }, 300);\n }\n }\n else if (this.statesUpdateTimer) {\n clearTimeout(this.statesUpdateTimer);\n this.statesUpdateTimer = null;\n }\n };\n this.onObjectChangeFromWorker = (events) => {\n if (Array.isArray(events)) {\n let newState = null;\n events.forEach(event => {\n const { newInnerState, filtered } = this.processOnObjectChangeElement(event.id, event.obj);\n if (filtered) {\n return;\n }\n if (newInnerState && newState) {\n Object.assign(newState, newInnerState);\n }\n else {\n newState = newInnerState;\n }\n });\n newState && this.setState(newState);\n this.afterObjectUpdated();\n }\n };\n this.onObjectChange = (id, obj) => {\n const { newInnerState, filtered } = this.processOnObjectChangeElement(id, obj);\n if (filtered) {\n return;\n }\n newInnerState && this.setState(newInnerState);\n this.afterObjectUpdated();\n };\n this.getEnumsForId = (id) => {\n const result = [];\n this.info.enums.forEach(_id => {\n var _b, _c, _d;\n if ((_d = (_c = (_b = this.objects[_id]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.members) === null || _d === void 0 ? void 0 : _d.includes(id)) {\n const enumItem = {\n _id: this.objects[_id]._id,\n common: JSON.parse(JSON.stringify(this.objects[_id].common)),\n native: this.objects[_id].native,\n type: 'enum',\n };\n if (enumItem.common) {\n delete enumItem.common.members;\n delete enumItem.common.custom;\n // @ts-expect-error deprecated attribute\n delete enumItem.common.mobile;\n }\n result.push(enumItem);\n }\n });\n return result.length ? result : undefined;\n };\n this._createAllEnums = async (enums, objId) => {\n var _b, _c;\n for (let e = 0; e < enums.length; e++) {\n const item = enums[e];\n let id;\n let newObj;\n // some admin version delivered enums as string\n if (typeof item === 'object') {\n newObj = item;\n id = newObj._id;\n }\n else {\n id = item;\n }\n let oldObj = this.objects[id];\n // if enum does not exist\n if (!oldObj) {\n // create a new one\n oldObj = newObj || {\n _id: id,\n common: {\n name: id.split('.').pop(),\n members: [],\n },\n native: {},\n type: 'enum',\n };\n oldObj.common = oldObj.common || {};\n oldObj.common.members = [objId];\n oldObj.type = 'enum';\n await this.props.socket.setObject(id, oldObj);\n }\n else if (!((_c = (_b = oldObj.common) === null || _b === void 0 ? void 0 : _b.members) === null || _c === void 0 ? void 0 : _c.includes(objId))) {\n oldObj.common = oldObj.common || {};\n oldObj.type = 'enum';\n oldObj.common.members = oldObj.common.members || [];\n // add the missing object\n oldObj.common.members.push(objId);\n oldObj.common.members.sort();\n await this.props.socket.setObject(id, oldObj);\n }\n }\n };\n this.toolTipObjectCreating = () => {\n var _b, _c;\n const { t } = this.props;\n let value = [\n react_1.default.createElement(\"div\", { key: 1 }, t('ra_Only following structures of objects are available:')),\n react_1.default.createElement(\"div\", { key: 2 }, t('ra_Folder → State')),\n react_1.default.createElement(\"div\", { key: 3 }, t('ra_Folder → Channel → State')),\n react_1.default.createElement(\"div\", { key: 4 }, t('ra_Folder → Device → Channel → State')),\n react_1.default.createElement(\"div\", { key: 5 }, t('ra_Device → Channel → State')),\n react_1.default.createElement(\"div\", { key: 6 }, t('ra_Channel → State')),\n react_1.default.createElement(\"div\", { key: 7, style: { height: 10 } }),\n react_1.default.createElement(\"div\", { key: 8 }, t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')),\n react_1.default.createElement(\"div\", { key: 9 }, t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')),\n ];\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n if (id.split('.').length < 2 || (this.objects[id] && ((_b = this.objects[id]) === null || _b === void 0 ? void 0 : _b.type) === 'state')) {\n // show default tooltip\n }\n else if (this.state.filter.expertMode) {\n switch ((_c = this.objects[id]) === null || _c === void 0 ? void 0 : _c.type) {\n case 'device':\n value = [\n react_1.default.createElement(\"div\", { key: 1 }, t('ra_Only following structures of objects are available:')),\n react_1.default.createElement(\"div\", { key: 5 }, t('ra_Device → Channel → State')),\n react_1.default.createElement(\"div\", { key: 7, style: { height: 10 } }),\n react_1.default.createElement(\"div\", { key: 8 }, t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')),\n react_1.default.createElement(\"div\", { key: 9 }, t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')),\n ];\n break;\n case 'folder':\n value = [\n react_1.default.createElement(\"div\", { key: 1 }, t('ra_Only following structures of objects are available:')),\n react_1.default.createElement(\"div\", { key: 2 }, t('ra_Folder → State')),\n react_1.default.createElement(\"div\", { key: 3 }, t('ra_Folder → Channel → State')),\n react_1.default.createElement(\"div\", { key: 4 }, t('ra_Folder → Device → Channel → State')),\n react_1.default.createElement(\"div\", { key: 7, style: { height: 10 } }),\n react_1.default.createElement(\"div\", { key: 8 }, t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')),\n react_1.default.createElement(\"div\", { key: 9 }, t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')),\n ];\n break;\n case 'channel':\n value = [\n react_1.default.createElement(\"div\", { key: 1 }, t('ra_Only following structures of objects are available:')),\n react_1.default.createElement(\"div\", { key: 1 }, t('ra_Channel → State')),\n react_1.default.createElement(\"div\", { key: 7, style: { height: 10 } }),\n react_1.default.createElement(\"div\", { key: 8 }, t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')),\n react_1.default.createElement(\"div\", { key: 9 }, t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')),\n ];\n break;\n default:\n break;\n }\n }\n else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n value = [\n react_1.default.createElement(\"div\", { key: 1 }, t('ra_Only following structures of objects are available:')),\n react_1.default.createElement(\"div\", { key: 2 }, t('ra_Folder → State')),\n react_1.default.createElement(\"div\", { key: 3 }, t('ra_Folder → Channel → State')),\n react_1.default.createElement(\"div\", { key: 4 }, t('ra_Folder → Device → Channel → State')),\n react_1.default.createElement(\"div\", { key: 5 }, t('ra_Device → Channel → State')),\n react_1.default.createElement(\"div\", { key: 6 }, t('ra_Channel → State')),\n react_1.default.createElement(\"div\", { key: 7, style: { height: 10 } }),\n react_1.default.createElement(\"div\", { key: 7 }, t('ra_Non-experts may create new objects only in \"0_userdata.0\" or \"alias.0\".')),\n react_1.default.createElement(\"div\", { key: 8 }, t('ra_The experts may create objects everywhere but from second level (e.g. \"vis.0\" or \"javascript.0\").')),\n ];\n }\n }\n return value.length ? value : t('ra_Add new child object to selected parent');\n };\n this.renderTooltipAccessControl = (acl) => {\n // acl ={object,state,owner,ownerGroup}\n if (!acl) {\n return null;\n }\n const check = [\n {\n value: '0x400',\n valueNum: 0x400,\n title: 'read',\n group: 'Owner',\n },\n {\n value: '0x200',\n valueNum: 0x200,\n title: 'write',\n group: 'Owner',\n },\n {\n value: '0x40',\n valueNum: 0x40,\n title: 'read',\n group: 'Group',\n },\n {\n value: '0x20',\n valueNum: 0x20,\n title: 'write',\n group: 'Group',\n },\n {\n value: '0x4',\n valueNum: 0x4,\n title: 'read',\n group: 'Everyone',\n },\n {\n value: '0x2',\n valueNum: 0x2,\n title: 'write',\n group: 'Everyone',\n },\n ];\n const arrayTooltipText = [];\n const funcRenderStateObject = (value) => {\n const rights = acl[value];\n check.forEach((el, i) => {\n // eslint-disable-next-line no-bitwise\n if (rights & el.valueNum) {\n arrayTooltipText.push(react_1.default.createElement(\"span\", { key: value + i },\n this.texts[`acl${el.group}_${el.title}_${value}`],\n \",\",\n react_1.default.createElement(\"span\", { className: value === 'object'\n ? this.props.classes.rightsObject\n : this.props.classes.rightsState }, el.value)));\n }\n });\n };\n arrayTooltipText.push(react_1.default.createElement(\"span\", { key: \"group\" }, `${this.texts.ownerGroup}: ${(acl.ownerGroup || '').replace('system.group.', '')}`));\n arrayTooltipText.push(react_1.default.createElement(\"span\", { key: \"owner\" }, `${this.texts.ownerUser}: ${(acl.owner || '').replace('system.user.', '')}`));\n funcRenderStateObject('object');\n if (acl.state) {\n funcRenderStateObject('state');\n }\n return arrayTooltipText.length ? react_1.default.createElement(\"span\", { className: this.props.classes.tooltipAccessControl }, arrayTooltipText.map(el => el)) : null;\n };\n this.resizerMouseMove = (e) => {\n if (this.resizerActiveDiv) {\n let width;\n let widthNext;\n if (this.resizeLeft) {\n width = this.resizerOldWidth - e.clientX + this.resizerPosition;\n widthNext = this.resizerOldWidthNext + e.clientX - this.resizerPosition;\n }\n else {\n width = this.resizerOldWidth + e.clientX - this.resizerPosition;\n widthNext = this.resizerOldWidthNext - e.clientX + this.resizerPosition;\n }\n if (this.resizerActiveName && this.resizerNextName &&\n (!this.resizerMin || width > this.resizerMin) &&\n (!this.resizerNextMin || widthNext > this.resizerNextMin)) {\n this.resizerCurrentWidths[this.resizerActiveName] = width;\n this.resizerCurrentWidths[this.resizerNextName] = widthNext;\n this.resizerActiveDiv.style.width = `${width}px`;\n if (this.resizerNextDiv) {\n this.resizerNextDiv.style.width = `${widthNext}px`;\n }\n this.columnsVisibility[this.resizerActiveName] = width;\n this.columnsVisibility[this.resizerNextName] = widthNext;\n if (this.resizerNextName === 'nameHeader') {\n this.columnsVisibility.name = widthNext - this.state.scrollBarWidth;\n this.resizerCurrentWidths.name = widthNext - this.state.scrollBarWidth;\n }\n else if (this.resizerActiveName === 'nameHeader') {\n this.columnsVisibility.name = width - this.state.scrollBarWidth;\n this.resizerCurrentWidths.name = width - this.state.scrollBarWidth;\n }\n this.customWidth = true;\n this.resizeTimeout && clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n this.resizeTimeout = null;\n this.forceUpdate();\n }, 200);\n }\n }\n };\n this.resizerMouseUp = () => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.table`, JSON.stringify(this.resizerCurrentWidths));\n this.resizerActiveName = null;\n this.resizerNextName = null;\n this.resizerActiveDiv = null;\n this.resizerNextDiv = null;\n window.removeEventListener('mousemove', this.resizerMouseMove);\n window.removeEventListener('mouseup', this.resizerMouseUp);\n };\n this.resizerMouseDown = (e) => {\n this.storedWidths = this.storedWidths || JSON.parse(JSON.stringify(SCREEN_WIDTHS[this.props.width || 'lg']));\n this.resizerCurrentWidths = this.resizerCurrentWidths || {};\n this.resizerActiveDiv = e.target.parentNode;\n this.resizerActiveName = this.resizerActiveDiv.dataset.name || null;\n if (this.resizerActiveName) {\n let i = 0;\n if (e.target.dataset.left === 'true') {\n this.resizeLeft = true;\n this.resizerNextDiv = this.resizerActiveDiv.previousElementSibling;\n let handle = this.resizerNextDiv.querySelector(`.${this.props.classes.resizeHandle}`);\n while (this.resizerNextDiv && !handle && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.previousElementSibling;\n handle = this.resizerNextDiv.querySelector(`.${this.props.classes.resizeHandle}`);\n i++;\n }\n if ((handle === null || handle === void 0 ? void 0 : handle.dataset.left) !== 'true') {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n }\n }\n else {\n this.resizeLeft = false;\n this.resizerNextDiv = this.resizerActiveDiv.nextElementSibling;\n /* while (this.resizerNextDiv && !this.resizerNextDiv.querySelector('.' + this.props.classes.resizeHandle) && i < 10) {\n this.resizerNextDiv = this.resizerNextDiv.nextElementSibling;\n i++;\n } */\n }\n this.resizerNextName = this.resizerNextDiv.dataset.name || null;\n this.resizerMin = parseInt(this.resizerActiveDiv.dataset.min, 10) || 0;\n this.resizerNextMin = parseInt(this.resizerNextDiv.dataset.min, 10) || 0;\n this.resizerPosition = e.clientX;\n this.resizerCurrentWidths[this.resizerActiveName] = this.resizerActiveDiv.offsetWidth;\n this.resizerOldWidth = this.resizerCurrentWidths[this.resizerActiveName];\n if (this.resizerNextName) {\n this.resizerCurrentWidths[this.resizerNextName] = this.resizerNextDiv.offsetWidth;\n this.resizerOldWidthNext = this.resizerCurrentWidths[this.resizerNextName];\n }\n window.addEventListener('mousemove', this.resizerMouseMove);\n window.addEventListener('mouseup', this.resizerMouseUp);\n }\n };\n this.resizerReset = () => {\n this.customWidth = false;\n SCREEN_WIDTHS[this.props.width || 'lg'] = JSON.parse(JSON.stringify(this.storedWidths));\n this.calculateColumnsVisibility();\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.table`);\n this.forceUpdate();\n };\n const lastSelectedItems = this.localStorage.getItem(`${props.dialogName || 'App'}.objectSelected`) || '[]';\n try {\n this.lastSelectedItems = JSON.parse(lastSelectedItems);\n if (typeof this.lastSelectedItems !== 'object') {\n this.lastSelectedItems = [this.lastSelectedItems];\n }\n // remove empty items\n this.lastSelectedItems = this.lastSelectedItems.filter((id) => id);\n }\n catch (e) {\n // ignore\n this.lastSelectedItems = [];\n }\n let expanded;\n const expandedStr = this.localStorage.getItem(`${props.dialogName || 'App'}.objectExpanded`) || '[]';\n try {\n expanded = JSON.parse(expandedStr);\n }\n catch (e) {\n expanded = [];\n }\n let filter;\n const filterStr = props.defaultFilters\n ? ''\n : this.localStorage.getItem(`${props.dialogName || 'App'}.objectFilter`) || '';\n if (filterStr) {\n try {\n filter = JSON.parse(filterStr);\n }\n catch (e) {\n filter = Object.assign({}, DEFAULT_FILTER);\n }\n }\n else if (props.defaultFilters && typeof props.defaultFilters === 'object') {\n filter = Object.assign({}, props.defaultFilters);\n }\n else {\n filter = Object.assign({}, DEFAULT_FILTER);\n }\n filter.expertMode =\n props.expertMode !== undefined\n ? props.expertMode\n : (window._sessionStorage || window.sessionStorage).getItem('App.expertMode') === 'true';\n this.tableRef = (0, react_1.createRef)();\n this.filterRefs = {};\n Object.keys(DEFAULT_FILTER).forEach(name => (this.filterRefs[name] = (0, react_1.createRef)()));\n this.visibleCols = props.columns || SCREEN_WIDTHS[props.width || 'lg'].fields;\n // remove type column if only one type must be selected\n if (props.types && props.types.length === 1) {\n const pos = this.visibleCols.indexOf('type');\n pos !== -1 && this.visibleCols.splice(pos, 1);\n }\n this.possibleCols = SCREEN_WIDTHS.xl.fields;\n let customDialog = null;\n if (props.router) {\n const location = props.router.getLocation();\n if (location.id && location.dialog === 'customs') {\n customDialog = [location.id];\n this.pauseSubscribe(true);\n }\n }\n let selected;\n if (!Array.isArray(props.selected)) {\n selected = [props.selected || ''];\n }\n else {\n selected = props.selected;\n }\n selected = selected.map(id => id.replace(/[\"']/g, '')).filter(id => id);\n const columnsStr = this.localStorage.getItem(`${props.dialogName || 'App'}.columns`);\n let columns;\n try {\n columns = columnsStr ? JSON.parse(columnsStr) : null;\n }\n catch (e) {\n columns = null;\n }\n let columnsWidths = null; // this.localStorage.getItem(`${props.dialogName || 'App'}.columnsWidths`);\n try {\n columnsWidths = columnsWidths ? JSON.parse(columnsWidths) : {};\n }\n catch (e) {\n columnsWidths = {};\n }\n this.imagePrefix = props.imagePrefix || '.';\n let foldersFirst;\n const foldersFirstStr = this.localStorage.getItem(`${props.dialogName || 'App'}.foldersFirst`);\n if (foldersFirstStr === 'false') {\n foldersFirst = false;\n }\n else if (foldersFirstStr === 'true') {\n foldersFirst = true;\n }\n else {\n foldersFirst = props.foldersFirst === undefined ? true : props.foldersFirst;\n }\n let statesView = false;\n try {\n statesView = this.props.objectStatesView\n ? JSON.parse(this.localStorage.getItem(`${props.dialogName || 'App'}.objectStatesView`) || '') || false\n : false;\n }\n catch (error) {\n // ignore\n }\n this.state = {\n loaded: false,\n foldersFirst,\n selected,\n selectedNonObject: this.localStorage.getItem(`${props.dialogName || 'App'}.selectedNonObject`) || '',\n filter,\n filterKey: 0,\n depth: 0,\n expandAllVisible: false,\n expanded,\n toast: '',\n scrollBarWidth: 16,\n customDialog,\n editObjectDialog: '',\n editObjectAlias: false, // open the edit object dialog on alias tab\n viewFileDialog: '',\n showAliasEditor: '',\n enumDialog: null,\n roleDialog: null,\n statesView,\n columns,\n columnsForAdmin: null,\n columnsSelectorShow: false,\n columnsAuto: this.localStorage.getItem(`${props.dialogName || 'App'}.columnsAuto`) !== 'false',\n columnsWidths,\n columnsDialogTransparent: 100,\n columnsEditCustomDialog: null,\n customColumnDialogValueChanged: false,\n showExportDialog: false,\n showAllExportOptions: false,\n linesEnabled: this.localStorage.getItem(`${props.dialogName || 'App'}.lines`) === 'true',\n showDescription: this.localStorage.getItem(`${props.dialogName || 'App'}.desc`) !== 'false',\n showContextMenu: null,\n noStatesByExportImport: false,\n beautifyJsonExport: true,\n excludeSystemRepositoriesFromExport: true,\n excludeTranslations: false,\n };\n this.texts = {\n value: props.t('ra_tooltip_value'),\n ack: props.t('ra_tooltip_ack'),\n ts: props.t('ra_tooltip_ts'),\n lc: props.t('ra_tooltip_lc'),\n from: props.t('ra_tooltip_from'),\n user: props.t('ra_tooltip_user'),\n c: props.t('ra_tooltip_comment'),\n quality: props.t('ra_tooltip_quality'),\n editObject: props.t('ra_tooltip_editObject'),\n deleteObject: props.t('ra_tooltip_deleteObject'),\n customConfig: props.t('ra_tooltip_customConfig'),\n copyState: props.t('ra_tooltip_copyState'),\n editState: props.t('ra_tooltip_editState'),\n close: props.t('ra_Close'),\n filter_id: props.t('ra_filter_id'),\n filter_name: props.t('ra_filter_name'),\n filter_type: props.t('ra_filter_type'),\n filter_role: props.t('ra_filter_role'),\n filter_room: props.t('ra_filter_room'),\n filter_func: props.t('ra_filter_func'),\n filter_custom: props.t('ra_filter_customs'), //\n filterCustomsWithout: props.t('ra_filter_customs_without'), //\n objectChangedByUser: props.t('ra_object_changed_by_user'), // Object last changed at\n objectChangedBy: props.t('ra_object_changed_by'), // Object changed by\n objectChangedFrom: props.t('ra_state_changed_from'), // Object changed from\n stateChangedBy: props.t('ra_state_changed_by'), // State changed by\n stateChangedFrom: props.t('ra_state_changed_from'), // State changed from\n ownerGroup: props.t('ra_Owner group'),\n ownerUser: props.t('ra_Owner user'),\n deviceError: props.t('ra_Error'),\n deviceDisconnected: props.t('ra_Disconnected'),\n deviceConnected: props.t('ra_Connected'),\n aclOwner_read_object: props.t('ra_aclOwner_read_object'),\n aclOwner_read_state: props.t('ra_aclOwner_read_state'),\n aclOwner_write_object: props.t('ra_aclOwner_write_object'),\n aclOwner_write_state: props.t('ra_aclOwner_write_state'),\n aclGroup_read_object: props.t('ra_aclGroup_read_object'),\n aclGroup_read_state: props.t('ra_aclGroup_read_state'),\n aclGroup_write_object: props.t('ra_aclGroup_write_object'),\n aclGroup_write_state: props.t('ra_aclGroup_write_state'),\n aclEveryone_read_object: props.t('ra_aclEveryone_read_object'),\n aclEveryone_read_state: props.t('ra_aclEveryone_read_state'),\n aclEveryone_write_object: props.t('ra_aclEveryone_write_object'),\n aclEveryone_write_state: props.t('ra_aclEveryone_write_state'),\n create: props.t('ra_Create'),\n createBooleanState: props.t('ra_create_boolean_state'),\n createNumberState: props.t('ra_create_number_state'),\n createStringState: props.t('ra_create_string_state'),\n createState: props.t('ra_create_state'),\n createChannel: props.t('ra_create_channel'),\n createDevice: props.t('ra_create_device'),\n createFolder: props.t('ra_Create folder'),\n };\n this.levelPadding = props.levelPadding || ITEM_LEVEL;\n const resizerCurrentWidthsStr = this.localStorage.getItem(`${this.props.dialogName || 'App'}.table`);\n if (resizerCurrentWidthsStr) {\n try {\n const resizerCurrentWidths = JSON.parse(resizerCurrentWidthsStr);\n const width = this.props.width || 'lg';\n this.storedWidths = JSON.parse(JSON.stringify(SCREEN_WIDTHS[width]));\n Object.keys(resizerCurrentWidths).forEach(id => {\n if (id === 'id') {\n SCREEN_WIDTHS[width].idWidth = resizerCurrentWidths.id;\n }\n else if (id === 'nameHeader') {\n SCREEN_WIDTHS[width].widths.name = resizerCurrentWidths[id];\n }\n else if (SCREEN_WIDTHS[width].widths[id] !== undefined) {\n SCREEN_WIDTHS[width].widths[id] =\n resizerCurrentWidths[id];\n }\n });\n this.customWidth = true;\n }\n catch (e) {\n // ignore\n }\n }\n this.calculateColumnsVisibility();\n }\n async loadAllObjects(update) {\n const props = this.props;\n try {\n await new Promise(resolve => {\n this.setState({ updating: true }, () => resolve());\n });\n const objects = (this.props.objectsWorker\n ? await this.props.objectsWorker.getObjects(update)\n : await props.socket.getObjects(update, true)) || {};\n if (props.types && Connection_1.default.isWeb()) {\n for (let i = 0; i < props.types.length; i++) {\n // admin has ALL objects\n // web has only state, channel, device, enum, and system.config\n if (props.types[i] === 'state' ||\n props.types[i] === 'channel' ||\n props.types[i] === 'device' ||\n props.types[i] === 'enum') {\n continue;\n }\n const moreObjects = await props.socket.getObjectViewSystem(props.types[i]);\n Object.assign(objects || {}, moreObjects);\n }\n }\n this.systemConfig =\n this.systemConfig ||\n (objects === null || objects === void 0 ? void 0 : objects['system.config']) ||\n (await props.socket.getObject('system.config'));\n this.systemConfig.common = this.systemConfig.common || {};\n this.systemConfig.common.defaultNewAcl = this.systemConfig.common.defaultNewAcl || {\n object: 0,\n state: 0,\n file: 0,\n owner: 'system.user.admin',\n ownerGroup: 'system.group.administrator'\n };\n this.systemConfig.common.defaultNewAcl.owner =\n this.systemConfig.common.defaultNewAcl.owner || 'system.user.admin';\n this.systemConfig.common.defaultNewAcl.ownerGroup =\n this.systemConfig.common.defaultNewAcl.ownerGroup || 'system.group.administrator';\n if (typeof this.systemConfig.common.defaultNewAcl.state !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n if (typeof this.systemConfig.common.defaultNewAcl.object !== 'number') {\n // TODO: may be convert here from string\n this.systemConfig.common.defaultNewAcl.state = 0x664;\n }\n if (typeof props.filterFunc === 'function') {\n this.objects = {};\n const filterFunc = props.filterFunc;\n Object.keys(objects).forEach(id => {\n try {\n if (filterFunc(objects[id])) {\n this.objects[id] = objects[id];\n }\n else {\n const type = objects[id] && objects[id].type;\n // include \"folder\" types too for icons and names of nodes\n if (type &&\n (type === 'channel' ||\n type === 'device' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance')) {\n this.objects[id] = objects[id];\n }\n }\n }\n catch (e) {\n console.log(`Error by filtering of \"${id}\": ${e}`);\n }\n });\n }\n else if (props.types) {\n this.objects = {};\n const propsTypes = props.types;\n Object.keys(objects).forEach(id => {\n const type = objects[id] && objects[id].type;\n // include \"folder\" types too\n if (type &&\n (type === 'channel' ||\n type === 'device' ||\n type === 'enum' ||\n type === 'folder' ||\n type === 'adapter' ||\n type === 'instance' ||\n propsTypes.includes(type))) {\n this.objects[id] = objects[id];\n }\n });\n }\n else {\n this.objects = objects;\n }\n props.setObjectsReference && props.setObjectsReference(this.objects);\n // read default history\n this.defaultHistory = this.systemConfig.common.defaultHistory;\n if (this.defaultHistory) {\n props.socket\n .getState(`system.adapter.${this.defaultHistory}.alive`)\n .then(state => {\n if (!state || !state.val) {\n this.defaultHistory = '';\n }\n })\n .catch(e => window.alert(`Cannot get state: ${e}`));\n }\n const columnsForAdmin = await this.getAdditionalColumns();\n this.calculateColumnsVisibility(null, null, columnsForAdmin);\n const { info, root } = buildTree(this.objects, {\n imagePrefix: this.props.imagePrefix,\n root: this.props.root,\n lang: this.props.lang,\n themeType: this.props.themeType,\n });\n this.root = root;\n this.info = info;\n // Show first selected item\n const node = this.state.selected && this.state.selected.length && findNode(this.root, this.state.selected[0]);\n this.lastAppliedFilter = null;\n // If the selected ID is not visible, reset filter\n if (node &&\n !applyFilter(node, this.state.filter, this.props.lang, this.objects, undefined, undefined, props.customFilter, props.types)) {\n // reset filter\n this.setState({ filter: Object.assign({}, DEFAULT_FILTER), columnsForAdmin }, () => {\n this.setState({ loaded: true, updating: false }, () => this.expandAllSelected(() => this.onAfterSelect()));\n });\n }\n else {\n this.setState({ loaded: true, updating: false, columnsForAdmin }, () => this.expandAllSelected(() => this.onAfterSelect()));\n }\n }\n catch (e1) {\n this.showError(e1);\n }\n }\n /**\n * Check if it is a non-expert id\n */\n static isNonExpertId(\n /** id to test */\n id) {\n return !!__classPrivateFieldGet(_a, _a, \"f\", _ObjectBrowser_NON_EXPERT_NAMESPACES).find(saveNamespace => id.startsWith(saveNamespace));\n }\n expandAllSelected(cb) {\n const expanded = [...this.state.expanded];\n let changed = false;\n this.state.selected.forEach(id => {\n const parts = id.split('.');\n const path = [];\n for (let i = 0; i < parts.length - 1; i++) {\n path.push(parts[i]);\n if (!expanded.includes(path.join('.'))) {\n expanded.push(path.join('.'));\n changed = true;\n }\n }\n });\n if (changed) {\n expanded.sort();\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ expanded }, cb);\n }\n else {\n cb && cb();\n }\n }\n /**\n * @param isDouble is double click\n */\n onAfterSelect(isDouble) {\n this.lastSelectedItems = [...this.state.selected];\n if (this.state.selected && this.state.selected.length) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, JSON.stringify(this.lastSelectedItems));\n const name = this.lastSelectedItems.length === 1\n ? Utils_1.default.getObjectName(this.objects, this.lastSelectedItems[0], null, { language: this.props.lang })\n : '';\n this.props.onSelect && this.props.onSelect(this.lastSelectedItems, name, isDouble);\n }\n else {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, '');\n if (this.state.selected.length) {\n this.setState({ selected: [] }, () => this.props.onSelect && this.props.onSelect([], ''));\n }\n else {\n this.props.onSelect && this.props.onSelect([], '');\n }\n }\n }\n static getDerivedStateFromProps(props, state) {\n const newState = {};\n let changed = false;\n if (props.expertMode !== undefined && props.expertMode !== state.filter.expertMode) {\n changed = true;\n newState.filter = Object.assign({}, state.filter);\n newState.filter.expertMode = props.expertMode;\n }\n return changed ? newState : null;\n }\n /**\n * Called when component is mounted.\n */\n async componentDidMount() {\n await this.loadAllObjects(!objectsAlreadyLoaded);\n if (this.props.objectsWorker) {\n this.props.objectsWorker.registerHandler(this.onObjectChangeFromWorker);\n }\n else {\n await this.props.socket.subscribeObject('*', this.onObjectChange);\n }\n objectsAlreadyLoaded = true;\n window.addEventListener('contextmenu', this.onContextMenu, true);\n }\n /**\n * Called when component is unmounted.\n */\n componentWillUnmount() {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = null;\n window.removeEventListener('contextmenu', this.onContextMenu, true);\n if (this.props.objectsWorker) {\n this.props.objectsWorker.unregisterHandler(this.onObjectChangeFromWorker, true);\n }\n else {\n this.props.socket.unsubscribeObject('*', this.onObjectChange);\n }\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n console.log(`- unsubscribe ${pattern}`);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n this.subscribes = [];\n this.objects = {};\n }\n /**\n * Show the deletion dialog for a given object\n */\n showDeleteDialog(options) {\n var _b, _c;\n const { id, obj, item } = options;\n // calculate the number of children\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n }\n else if (keys[i] > start) {\n break;\n }\n }\n this.props.onObjectDelete && this.props.onObjectDelete(id, !!((_b = item.children) === null || _b === void 0 ? void 0 : _b.length), !((_c = obj.common) === null || _c === void 0 ? void 0 : _c.dontDelete), count + 1);\n }\n /**\n * Called when component is mounted.\n */\n refreshComponent() {\n // remove all subscribes\n this.subscribes.forEach(pattern => {\n console.log(`- unsubscribe ${pattern}`);\n this.props.socket.unsubscribeState(pattern, this.onStateChange);\n });\n this.subscribes = [];\n this.loadAllObjects(true).then(() => console.log('updated!'));\n }\n /**\n * Renders the error dialog.\n */\n renderErrorDialog() {\n return this.state.error ? react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: \"sm\", fullWidth: true, onClose: () => this.setState({ error: '' }), \"aria-labelledby\": \"error-dialog-title\", \"aria-describedby\": \"error-dialog-description\" },\n react_1.default.createElement(material_1.DialogTitle, { id: \"alert-dialog-title\" }, this.props.t('ra_Error')),\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.DialogContentText, { id: \"alert-dialog-description\" }, this.state.error)),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { variant: \"contained\", onClick: () => this.setState({ error: '' }), color: \"primary\", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Check, null) }, this.props.t('ra_Ok')))) : null;\n }\n /**\n * Show the error dialog.\n */\n showError(error) {\n this.setState({\n error: typeof error === 'object'\n ? error && typeof error.toString === 'function'\n ? error.toString()\n : JSON.stringify(error)\n : error,\n });\n }\n /**\n * Called when an item is selected/deselected.\n */\n onSelect(toggleItem, isDouble, cb) {\n if (!this.props.multiSelect) {\n if (this.objects[toggleItem] &&\n (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))) {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n if (this.state.selected[0] !== toggleItem) {\n this.setState({ selected: [toggleItem], selectedNonObject: '' }, () => {\n this.onAfterSelect(isDouble);\n cb && cb();\n });\n }\n else if (isDouble && this.props.onSelect) {\n this.onAfterSelect(isDouble);\n }\n }\n else {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.selectedNonObject`, toggleItem);\n this.setState({ selected: [], selectedNonObject: toggleItem }, () => {\n this.onAfterSelect();\n cb && cb();\n });\n }\n }\n else if (this.objects[toggleItem] &&\n (!this.props.types || this.props.types.includes(this.objects[toggleItem].type))) {\n this.localStorage.removeItem(`${this.props.dialogName || 'App'}.selectedNonObject`);\n const selected = [...this.state.selected];\n const pos = selected.indexOf(toggleItem);\n if (pos === -1) {\n selected.push(toggleItem);\n selected.sort();\n }\n else if (!isDouble) {\n selected.splice(pos, 1);\n }\n this.setState({ selected, selectedNonObject: '' }, () => {\n this.onAfterSelect(isDouble);\n cb && cb();\n });\n }\n }\n _renderDefinedList(isLast) {\n const cols = [...this.possibleCols];\n cols.unshift('id');\n if (this.props.columns && !this.props.columns.includes('buttons')) {\n const pos = cols.indexOf('buttons');\n if (pos !== -1) {\n cols.splice(pos, 1);\n }\n }\n return cols\n .filter(id => (isLast && (id === 'val' || id === 'buttons')) ||\n (!isLast && id !== 'val' && id !== 'buttons'))\n .map(id => {\n var _b;\n return react_1.default.createElement(material_1.ListItemButton, { onClick: () => {\n if (!this.state.columnsAuto && id !== 'id') {\n const columns = [...(this.state.columns || [])];\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n }\n else {\n columns.splice(pos, 1);\n }\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.columns`, JSON.stringify(columns));\n this.calculateColumnsVisibility(null, columns);\n this.setState({ columns });\n }\n }, key: id },\n react_1.default.createElement(material_1.Checkbox, { edge: \"start\", disabled: id === 'id' || this.state.columnsAuto, checked: id === 'id' ||\n !!(this.state.columnsAuto\n ? this.visibleCols.includes(id)\n : (_b = this.state.columns) === null || _b === void 0 ? void 0 : _b.includes(id)), disableRipple: true }),\n react_1.default.createElement(material_1.ListItemText, { primary: this.texts[`filter_${id}`] || this.props.t(`ra_${id}`) }));\n });\n }\n /**\n * Renders the columns' selector.\n */\n renderColumnsSelectorDialog() {\n if (!this.state.columnsSelectorShow) {\n return null;\n }\n return react_1.default.createElement(material_1.Dialog, { onClose: () => this.setState({ columnsSelectorShow: false }), open: !0, classes: {\n root: Utils_1.default.clsx(this.props.classes.dialogColumns, this.props.classes[`transparent_${this.state.columnsDialogTransparent}`]),\n } },\n react_1.default.createElement(material_1.DialogTitle, { className: this.props.classes.fontSizeTitle }, this.props.t('ra_Configure')),\n react_1.default.createElement(material_1.DialogContent, { className: this.props.classes.fontSizeTitle },\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.switchColumnAuto, control: react_1.default.createElement(material_1.Switch, { checked: this.state.foldersFirst, onChange: () => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.foldersFirst`, this.state.foldersFirst ? 'false' : 'true');\n this.setState({ foldersFirst: !this.state.foldersFirst });\n } }), label: this.props.t('ra_Folders always first') }),\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.switchColumnAuto, control: react_1.default.createElement(material_1.Switch, { checked: this.state.linesEnabled, onChange: () => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.lines`, this.state.linesEnabled ? 'false' : 'true');\n this.setState({ linesEnabled: !this.state.linesEnabled });\n } }), label: this.props.t('ra_Show lines between rows') }),\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.switchColumnAuto, control: react_1.default.createElement(material_1.Switch, { checked: this.state.columnsAuto, onChange: () => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.columnsAuto`, this.state.columnsAuto ? 'false' : 'true');\n if (!this.state.columnsAuto) {\n this.calculateColumnsVisibility(true);\n this.setState({ columnsAuto: true });\n }\n else if (!this.state.columns) {\n this.calculateColumnsVisibility(false, [...this.visibleCols]);\n this.setState({ columnsAuto: false, columns: [...this.visibleCols] });\n }\n else {\n this.calculateColumnsVisibility(false);\n this.setState({ columnsAuto: false });\n }\n } }), label: this.props.t('ra_Auto (no custom columns)') }),\n react_1.default.createElement(material_1.List, null,\n this._renderDefinedList(false),\n this.state.columnsForAdmin && Object.keys(this.state.columnsForAdmin)\n .sort()\n .map(adapter => this.state.columnsForAdmin && this.state.columnsForAdmin[adapter].map(column => {\n var _b;\n return react_1.default.createElement(material_1.ListItemButton, { onClick: () => {\n if (!this.state.columnsAuto) {\n const columns = [...(this.state.columns || [])];\n const id = `_${adapter}_${column.path}`;\n const pos = columns.indexOf(id);\n if (pos === -1) {\n columns.push(id);\n columns.sort();\n }\n else {\n columns.splice(pos, 1);\n }\n this.calculateColumnsVisibility(null, columns);\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.columns`, JSON.stringify(columns));\n this.setState({ columns });\n }\n }, key: `${adapter}_${column.name}` },\n react_1.default.createElement(material_1.ListItemIcon, null,\n react_1.default.createElement(material_1.Checkbox, { disabled: this.state.columnsAuto, edge: \"start\", checked: !this.state.columnsAuto &&\n ((_b = this.state.columns) === null || _b === void 0 ? void 0 : _b.includes(`_${adapter}_${column.path}`)), disableRipple: true })),\n react_1.default.createElement(material_1.ListItemText, { primary: `${column.name} (${adapter})` }));\n })),\n this._renderDefinedList(true))),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { variant: \"contained\", onClick: () => this.setState({ columnsSelectorShow: false }), color: \"primary\", startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.texts.close)));\n }\n async getAdditionalColumns() {\n try {\n const instances = await this.props.socket\n .getAdapters();\n let columnsForAdmin = null;\n // find all additional columns\n instances.forEach(obj => (columnsForAdmin = this.parseObjectForAdmins(columnsForAdmin, obj)));\n return columnsForAdmin;\n }\n catch (err) {\n // window.alert('Cannot get adapters: ' + e);\n // Object browser in Web has no additional columns\n console.error(`Cannot get adapters: ${err}`);\n return null;\n }\n }\n checkUnsubscribes() {\n // Remove unused subscriptions\n for (let i = this.subscribes.length - 1; i >= 0; i--) {\n !this.recordStates.includes(this.subscribes[i]) && this.unsubscribe(this.subscribes[i]);\n }\n this.recordStates = [];\n }\n /**\n * Find an item.\n */\n findItem(id, _parts, _root, _partyId) {\n _parts = _parts || id.split('.');\n _root = _root || this.root;\n if (!_root || !_parts.length) {\n return null;\n }\n _partyId = (_partyId ? `${_partyId}.` : '') + _parts.shift();\n if (_root.children) {\n const item = _root.children.find(i => i.data.id === _partyId);\n if (item) {\n if (item.data.id === id) {\n return item;\n }\n if (_parts.length) {\n return this.findItem(id, _parts, item, _partyId);\n }\n }\n else {\n return null;\n }\n }\n return null;\n }\n parseObjectForAdmins(columnsForAdmin, obj) {\n if (obj.common && obj.common.adminColumns && obj.common.name) {\n let columns = obj.common.adminColumns;\n if (columns && typeof columns !== 'object') {\n columns = [columns];\n }\n let cColumns;\n if (columns) {\n cColumns = columns\n .map((_item) => {\n if (typeof _item !== 'object') {\n return { path: _item, name: _item.split('.').pop() };\n }\n const item = _item;\n // string => array\n if (item.objTypes && typeof item.objTypes !== 'object') {\n item.objTypes = [item.objTypes];\n }\n else if (!item.objTypes) {\n item.objTypes = null;\n }\n if (!item.name && item.path) {\n return {\n path: item.path,\n name: item.path.split('.').pop(),\n width: item.width,\n edit: !!item.edit,\n type: item.type,\n objTypes: item.objTypes,\n };\n }\n if (!item.path) {\n console.warn(`Admin columns for ${obj._id} ignored, because path not found`);\n return null;\n }\n return {\n path: item.path,\n name: getName(item.name || '', this.props.lang),\n width: item.width,\n edit: !!item.edit,\n type: item.type,\n objTypes: item.objTypes,\n };\n })\n .filter(item => item);\n }\n else {\n cColumns = null;\n }\n if (cColumns === null || cColumns === void 0 ? void 0 : cColumns.length) {\n columnsForAdmin = columnsForAdmin || {};\n columnsForAdmin[obj.common.name] = cColumns.sort((a, b) => (a.path > b.path ? -1 : a.path < b.path ? 1 : 0));\n }\n }\n else if (obj.common && obj.common.name && columnsForAdmin && columnsForAdmin[obj.common.name]) {\n delete columnsForAdmin[obj.common.name];\n }\n return columnsForAdmin;\n }\n afterObjectUpdated() {\n if (!this.objectsUpdateTimer && this.objects) {\n this.objectsUpdateTimer = setTimeout(() => {\n this.objectsUpdateTimer = null;\n const { info, root } = buildTree(this.objects, {\n imagePrefix: this.props.imagePrefix,\n root: this.props.root,\n lang: this.props.lang,\n themeType: this.props.themeType,\n });\n this.root = root;\n this.info = info;\n this.lastAppliedFilter = null; // apply filter anew\n if (!this.pausedSubscribes) {\n this.forceUpdate();\n }\n // else it will be re-rendered when the dialog will be closed\n }, 500);\n }\n }\n /**\n * Processes a single element in regard to certain filters, columns for admin and updates object dict\n * @returns Returns an object containing the new state (if any) and whether the object was filtered.\n */\n processOnObjectChangeElement(\n /** The id of the object */\n id, \n /** The object itself */\n obj) {\n console.log(`> objectChange ${id}`);\n const type = obj === null || obj === void 0 ? void 0 : obj.type;\n if (obj &&\n typeof this.props.filterFunc === 'function' &&\n !this.props.filterFunc(obj) &&\n type !== 'channel' &&\n type !== 'device' &&\n type !== 'folder' &&\n type !== 'adapter' &&\n type !== 'instance') {\n return { newInnerState: null, filtered: true };\n }\n let newInnerState = null;\n if (id.startsWith('system.adapter.') && obj && obj.type === 'adapter') {\n const columnsForAdmin = JSON.parse(JSON.stringify(this.state.columnsForAdmin));\n this.parseObjectForAdmins(columnsForAdmin, obj);\n if (JSON.stringify(this.state.columnsForAdmin) !== JSON.stringify(columnsForAdmin)) {\n newInnerState = { columnsForAdmin };\n }\n }\n this.objects = this.objects || {};\n if (obj) {\n this.objects[id] = obj;\n }\n else if (this.objects[id]) {\n delete this.objects[id];\n }\n return { newInnerState, filtered: false };\n }\n subscribe(id) {\n if (!this.subscribes.includes(id)) {\n this.subscribes.push(id);\n console.log(`+ subscribe ${id}`);\n !this.pausedSubscribes && this.props.socket.subscribeState(id, this.onStateChange);\n }\n }\n unsubscribe(id) {\n const pos = this.subscribes.indexOf(id);\n if (pos !== -1) {\n this.subscribes.splice(pos, 1);\n if (this.states[id]) {\n delete this.states[id];\n }\n console.log(`- unsubscribe ${id}`);\n this.props.socket.unsubscribeState(id, this.onStateChange);\n if (this.pausedSubscribes) {\n console.warn('Unsubscribe during pause?');\n }\n }\n }\n pauseSubscribe(isPause) {\n if (!this.pausedSubscribes && isPause) {\n this.pausedSubscribes = true;\n this.subscribes.forEach(id => this.props.socket.unsubscribeState(id, this.onStateChange));\n }\n else if (this.pausedSubscribes && !isPause) {\n this.pausedSubscribes = false;\n this.subscribes.forEach(id => this.props.socket.subscribeState(id, this.onStateChange));\n }\n }\n onFilter(name, value) {\n this.filterTimer = null;\n const filter = Object.assign({}, this.state.filter);\n Object.keys(this.filterRefs).forEach(_name => {\n if (this.filterRefs[_name] && this.filterRefs[_name].current) {\n const filterRef = this.filterRefs[_name].current;\n for (let i = 0; i < filterRef.children.length; i++) {\n if (filterRef.children[i].tagName === 'INPUT') {\n filter[_name] = filterRef.children[i].value;\n break;\n }\n }\n }\n });\n if (name) {\n filter[name] = value;\n if (name === 'expertMode') {\n (window._sessionStorage || window.sessionStorage).setItem('App.expertMode', value ? 'true' : 'false');\n }\n }\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectFilter`, JSON.stringify(filter));\n this.setState({ filter }, () => this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n clearFilter() {\n const filter = Object.assign({}, this.state.filter);\n Object.keys(this.filterRefs).forEach(name => {\n if (this.filterRefs[name] && this.filterRefs[name].current) {\n const filterRef = this.filterRefs[name].current;\n for (let i = 0; i < filterRef.childNodes.length; i++) {\n const item = filterRef.childNodes[i];\n if (item.tagName === 'INPUT') {\n filter[name] = '';\n item.value = '';\n break;\n }\n }\n }\n });\n if (JSON.stringify(this.state.filter) !== JSON.stringify(filter)) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectFilter`, JSON.stringify(filter));\n this.setState({ filter, filterKey: this.state.filterKey + 1 }, () => this.props.onFilterChanged && this.props.onFilterChanged(filter));\n }\n }\n isFilterEmpty() {\n const someNotEmpty = Object.keys(this.state.filter)\n .find(attr => attr !== 'expertMode' && this.state.filter[attr]);\n return !someNotEmpty;\n }\n getFilterInput(filterName) {\n var _b, _c, _d;\n return react_1.default.createElement(material_1.FormControl, { className: Utils_1.default.clsx(this.props.classes.headerCellInput, this.props.classes.filterInput), key: `${filterName}_${this.state.filterKey}`, \n // style={{ marginTop: 0, marginBottom: 0 }}\n margin: \"dense\" },\n react_1.default.createElement(material_1.Input, { ref: this.filterRefs[filterName], classes: { underline: 'no-underline' }, id: filterName, placeholder: this.texts[`filter_${filterName}`], defaultValue: this.state.filter[filterName] || '', onChange: () => {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }, autoComplete: \"off\" }),\n ((_d = (_c = (_b = this.filterRefs[filterName]) === null || _b === void 0 ? void 0 : _b.current) === null || _c === void 0 ? void 0 : _c.firstChild) === null || _d === void 0 ? void 0 : _d.value) ? react_1.default.createElement(\"div\", { style: {\n position: 'absolute',\n right: 0,\n } },\n react_1.default.createElement(material_1.IconButton, { size: \"small\", onClick: () => {\n var _b;\n ((_b = this.filterRefs[filterName].current) === null || _b === void 0 ? void 0 : _b.firstChild).value = '';\n this.onFilter(filterName, '');\n } },\n react_1.default.createElement(icons_material_1.Close, null))) : null);\n }\n getFilterSelect(name, values) {\n var _b, _c, _d;\n const hasIcons = !!(values === null || values === void 0 ? void 0 : values.find(item => item.icon));\n return react_1.default.createElement(\"div\", { style: { position: 'relative' } },\n react_1.default.createElement(material_1.Select, { variant: \"standard\", key: `${name}_${this.state.filterKey}`, ref: this.filterRefs[name], className: `${this.props.classes.headerCellInput} no-underline`, onChange: () => {\n this.filterTimer && clearTimeout(this.filterTimer);\n this.filterTimer = setTimeout(() => this.onFilter(), 400);\n }, defaultValue: this.state.filter[name] || '', inputProps: { name, id: name }, displayEmpty: true },\n react_1.default.createElement(material_1.MenuItem, { key: \"empty\", value: \"\" },\n react_1.default.createElement(\"span\", { className: this.props.classes.selectNone }, this.texts[`filter_${name}`])), values === null || values === void 0 ? void 0 :\n values.map(item => {\n let id;\n let _name;\n let icon;\n if (typeof item === 'object') {\n id = item.value;\n _name = item.name;\n icon = item.icon;\n }\n else {\n id = item;\n _name = item;\n }\n return react_1.default.createElement(material_1.MenuItem, { className: this.props.classes.headerCellSelectItem, key: id, value: id },\n icon || (hasIcons ? react_1.default.createElement(\"div\", { className: \"itemIcon\" }) : null),\n _name);\n })),\n ((_d = (_c = (_b = this.filterRefs[name]) === null || _b === void 0 ? void 0 : _b.current) === null || _c === void 0 ? void 0 : _c.childNodes[1]) === null || _d === void 0 ? void 0 : _d.value) ? react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(this.props.classes.selectClearButton) },\n react_1.default.createElement(material_1.IconButton, { size: \"small\", onClick: () => {\n var _b;\n const newFilter = Object.assign({}, this.state.filter);\n newFilter[name] = '';\n ((_b = this.filterRefs[name].current) === null || _b === void 0 ? void 0 : _b.childNodes[1]).value = '';\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectFilter`, JSON.stringify(newFilter));\n this.setState({ filter: newFilter, filterKey: this.state.filterKey + 1 }, () => this.props.onFilterChanged && this.props.onFilterChanged(newFilter));\n } },\n react_1.default.createElement(icons_material_1.Close, null))) : null);\n }\n getFilterSelectRole() {\n return this.getFilterSelect('role', this.info.roles);\n }\n getFilterSelectRoom() {\n const rooms = this.info.roomEnums.map(id => {\n var _b, _c, _d, _e;\n return ({\n name: getName((_c = (_b = this.objects[id]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.name, this.props.lang) || id.split('.').pop(),\n value: id,\n icon: react_1.default.createElement(Icon_1.default, { src: ((_e = (_d = this.objects[id]) === null || _d === void 0 ? void 0 : _d.common) === null || _e === void 0 ? void 0 : _e.icon) || '', className: this.props.classes.selectIcon }),\n });\n });\n return this.getFilterSelect('room', rooms);\n }\n getFilterSelectFunction() {\n const func = this.info.funcEnums.map(id => {\n var _b, _c, _d, _e;\n return ({\n name: getName((_c = (_b = this.objects[id]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.name, this.props.lang) || id.split('.').pop(),\n value: id,\n icon: react_1.default.createElement(Icon_1.default, { src: ((_e = (_d = this.objects[id]) === null || _d === void 0 ? void 0 : _d.common) === null || _e === void 0 ? void 0 : _e.icon) || '', className: this.props.classes.selectIcon }),\n });\n });\n return this.getFilterSelect('func', func);\n }\n getFilterSelectType() {\n const types = this.info.types.map(type => ({\n name: type,\n value: type,\n icon: exports.ITEM_IMAGES[type] || null,\n }));\n return this.getFilterSelect('type', types);\n }\n getFilterSelectCustoms() {\n if (this.info.customs.length > 1) {\n const customs = this.info.customs.map(id => ({\n name: id === '_' ? this.texts.filterCustomsWithout : id,\n value: id,\n icon: id === '_' ? null : react_1.default.createElement(Icon_1.default, { src: getSelectIdIconFromObjects(this.objects, id, this.imagePrefix) || '', className: this.props.classes.selectIcon }),\n }));\n return this.getFilterSelect('custom', customs);\n }\n return null;\n }\n onExpandAll(root, expanded) {\n var _b;\n const _root = root || this.root;\n expanded = expanded || [];\n (_b = _root === null || _root === void 0 ? void 0 : _root.children) === null || _b === void 0 ? void 0 : _b.forEach((item) => {\n if (item.data.sumVisibility) {\n expanded.push(item.data.id);\n this.onExpandAll(item, expanded);\n }\n });\n if (_root === this.root) {\n expanded.sort();\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ expanded });\n }\n }\n onCollapseAll() {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify([]));\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, '[]');\n this.setState({ expanded: [], depth: 0, selected: [] }, () => this.onAfterSelect());\n }\n expandDepth(root, depth, expanded) {\n var _b;\n root = root || this.root;\n if (depth > 0) {\n (_b = root.children) === null || _b === void 0 ? void 0 : _b.forEach(item => {\n if (item.data.sumVisibility) {\n if (!binarySearch(expanded, item.data.id)) {\n expanded.push(item.data.id);\n expanded.sort();\n }\n if (depth - 1 > 0) {\n this.expandDepth(item, depth - 1, expanded);\n }\n }\n });\n }\n }\n static collapseDepth(depth, expanded) {\n return expanded.filter(id => id.split('.').length <= depth);\n }\n onExpandVisible() {\n if (this.state.depth < 9) {\n const depth = this.state.depth + 1;\n const expanded = [...this.state.expanded];\n this.root && this.expandDepth(this.root, depth, expanded);\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n onStatesViewVisible() {\n const statesView = !this.state.statesView;\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectStatesView`, JSON.stringify(statesView));\n this.setState({ statesView });\n }\n onCollapseVisible() {\n if (this.state.depth > 0) {\n const depth = this.state.depth - 1;\n const expanded = _a.collapseDepth(depth, this.state.expanded);\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ depth, expanded });\n }\n }\n async loadObjects(objs) {\n if (objs) {\n for (const id in objs) {\n if (!Object.prototype.hasOwnProperty.call(objs, id) || !objs[id]) {\n continue;\n }\n const obj = objs[id];\n let enums = null;\n let val;\n let ack;\n if (obj && obj.common && obj.common.enums) {\n enums = obj.common.enums;\n delete obj.common.enums;\n }\n else {\n enums = null;\n }\n if (obj.val || obj.val === 0) {\n val = obj.val;\n delete obj.val;\n }\n if (obj.ack !== undefined) {\n ack = obj.ack;\n delete obj.ack;\n }\n try {\n await this.props.socket.setObject(id, obj);\n enums && (await this._createAllEnums(enums, obj._id));\n if (obj.type === 'state') {\n if (val !== undefined && val !== null) {\n try {\n await this.props.socket.setState(obj._id, val, ack !== undefined ? ack : true);\n }\n catch (e) {\n window.alert(`Cannot set state \"${obj._id} with ${val}\": ${e}`);\n }\n }\n else {\n try {\n const state = await this.props.socket.getState(obj._id);\n if (!state || state.val === null) {\n try {\n await this.props.socket.setState(obj._id, !obj.common || obj.common.def === undefined ? null : obj.common.def, true);\n }\n catch (e) {\n window.alert(`Cannot set state \"${obj._id}\": ${e}`);\n }\n }\n }\n catch (e) {\n window.alert(`Cannot read state \"${obj._id}\": ${e}`);\n }\n }\n }\n }\n catch (error) {\n window.alert(error);\n }\n }\n }\n }\n _getSelectedIdsForExport() {\n if (this.state.selected.length || this.state.selectedNonObject) {\n const result = [];\n const keys = Object.keys(this.objects);\n keys.sort();\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const idDot = `${id}.`;\n const idLen = idDot.length;\n for (let k = 0; k < keys.length; k++) {\n const key = keys[k];\n if (id === key || key.startsWith(idDot)) {\n result.push(key);\n }\n if (key.substring(0, idLen) > idDot) {\n break;\n }\n }\n return result;\n }\n return [];\n }\n /**\n * Exports the selected objects based on the given options and triggers file generation\n */\n async _exportObjects(\n /** Options to filter/reduce the output */\n options) {\n var _b;\n if (options.isAll) {\n generateFile('allObjects.json', this.objects, options);\n return;\n }\n if (!(this.state.selected.length || this.state.selectedNonObject)) {\n window.alert(this.props.t('ra_Save of objects-tree is not possible'));\n return;\n }\n const result = {};\n const id = this.state.selected[0] || this.state.selectedNonObject;\n const ids = this._getSelectedIdsForExport();\n for (const key of ids) {\n result[key] = JSON.parse(JSON.stringify(this.objects[key]));\n // read states values\n if (((_b = result[key]) === null || _b === void 0 ? void 0 : _b.type) === 'state' && !options.noStatesByExportImport) {\n const state = await this.props.socket.getState(key);\n if (state) {\n result[key].val = state.val;\n result[key].ack = state.ack;\n }\n }\n // add enum information\n if (result[key].common) {\n const enums = this.getEnumsForId(key);\n if (enums) {\n result[key].common.enums = enums;\n }\n }\n }\n generateFile(`${id}.json`, result, options);\n }\n renderExportDialog() {\n if (this.state.showExportDialog === false) {\n return null;\n }\n return react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: \"lg\" },\n react_1.default.createElement(material_1.DialogTitle, null, this.props.t('ra_Select type of export')),\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.DialogContentText, null, this.state.filter.expertMode || this.state.showAllExportOptions ? react_1.default.createElement(react_1.default.Fragment, null,\n this.props.t('ra_You can export all objects or just the selected branch.'),\n react_1.default.createElement(\"br\", null),\n this.props.t('ra_Selected %s object(s)', this.state.showExportDialog),\n react_1.default.createElement(\"br\", null),\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: this.state.noStatesByExportImport, onChange: e => this.setState({ noStatesByExportImport: e.target.checked }) }), label: this.props.t('ra_Do not export values of states') }),\n react_1.default.createElement(\"br\", null),\n this.props.t('These options can reduce the size of the export file:'),\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: this.state.beautifyJsonExport, onChange: e => this.setState({ beautifyJsonExport: e.target.checked }) }), label: this.props.t('Beautify JSON output') }),\n react_1.default.createElement(\"br\", null),\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: this.state.excludeSystemRepositoriesFromExport, onChange: e => this.setState({ excludeSystemRepositoriesFromExport: e.target.checked }) }), label: this.props.t('Exclude system repositories from export JSON') }),\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { checked: this.state.excludeTranslations, onChange: e => this.setState({ excludeTranslations: e.target.checked }) }), label: this.props.t('Exclude translations (except english) from export JSON') })) : null)),\n react_1.default.createElement(material_1.DialogActions, null,\n this.state.filter.expertMode || this.state.showAllExportOptions ? react_1.default.createElement(material_1.Button\n // @ts-expect-error grey is valid color\n , { \n // @ts-expect-error grey is valid color\n color: \"grey\", variant: \"outlined\", onClick: () => this.setState({ showExportDialog: false, showAllExportOptions: false }, () => this._exportObjects({\n isAll: true,\n noStatesByExportImport: this.state.noStatesByExportImport,\n beautify: this.state.beautifyJsonExport,\n excludeSystemRepositories: this.state.excludeSystemRepositoriesFromExport,\n excludeTranslations: this.state.excludeTranslations,\n })) },\n react_1.default.createElement(\"span\", { style: { marginRight: 8 } }, this.props.t('ra_All objects')),\n \"(\",\n Object.keys(this.objects).length,\n \")\") : react_1.default.createElement(material_1.Button\n // @ts-expect-error grey is valid color\n , { \n // @ts-expect-error grey is valid color\n color: \"grey\", variant: \"outlined\", startIcon: react_1.default.createElement(IconExpert_1.default, null), onClick: () => this.setState({ showAllExportOptions: true }) }, this.props.t('ra_Advanced options')),\n react_1.default.createElement(material_1.Button, { color: \"primary\", variant: \"contained\", autoFocus: true, onClick: () => this.setState({ showExportDialog: false, showAllExportOptions: false }, () => this._exportObjects({\n isAll: false,\n noStatesByExportImport: this.state.noStatesByExportImport,\n beautify: this.state.beautifyJsonExport,\n excludeSystemRepositories: this.state.excludeSystemRepositoriesFromExport,\n excludeTranslations: this.state.excludeTranslations,\n })) },\n react_1.default.createElement(\"span\", { style: { marginRight: 8 } }, this.props.t('ra_Only selected')),\n \"(\",\n this.state.showExportDialog,\n \")\"),\n react_1.default.createElement(material_1.Button\n // @ts-expect-error grey is valid color\n , { \n // @ts-expect-error grey is valid color\n color: \"grey\", variant: \"contained\", onClick: () => this.setState({ showExportDialog: false, showAllExportOptions: false }), startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.t('ra_Cancel'))));\n }\n handleJsonUpload(evt) {\n var _b;\n const target = evt.target;\n const f = ((_b = target.files) === null || _b === void 0 ? void 0 : _b.length) && target.files[0];\n if (f) {\n const r = new FileReader();\n r.onload = async (e) => {\n var _b;\n const contents = (_b = e.target) === null || _b === void 0 ? void 0 : _b.result;\n try {\n const json = JSON.parse(contents);\n const len = Object.keys(json).length;\n const id = json._id;\n // it could be a single object or many objects\n if (id === undefined && len) {\n // many objects\n await this.loadObjects(json);\n window.alert(this.props.t('ra_%s object(s) processed', len));\n }\n else {\n // it is only one object in form\n // {\n // \"_id\": \"xxx\",\n // \"common\": \"yyy\",\n // \"native\": \"zzz\"\n // \"val\": JSON.stringify(value)\n // \"ack\": true\n // }\n if (!id) {\n return window.alert(this.props.t('ra_Invalid structure'));\n }\n try {\n let enums;\n let val;\n let ack;\n if (json.common.enums) {\n enums = json.common.enums;\n delete json.common.enums;\n }\n if (json.val) {\n val = json.val;\n delete json.val;\n }\n if (json.ack !== undefined) {\n ack = json.ack;\n delete json.ack;\n }\n await this.props.socket.setObject(json._id, json);\n if (json.type === 'state') {\n if (val !== undefined && val !== null) {\n await this.props.socket.setState(json._id, val, ack === undefined ? true : ack);\n }\n else {\n const state = await this.props.socket.getState(json._id);\n if (!state || state.val === null || state.val === undefined) {\n await this.props.socket.setState(json._id, json.common.def === undefined ? null : json.common.def, true);\n }\n }\n }\n if (enums) {\n await this._createAllEnums(enums, json._id);\n }\n window.alert(this.props.t('ra_%s was imported', json._id));\n }\n catch (err) {\n window.alert(err);\n }\n }\n }\n catch (err) {\n window.alert(err);\n }\n return null;\n };\n r.readAsText(f);\n }\n else {\n window.alert(this.props.t('ra_Failed to open JSON File'));\n }\n }\n /**\n * Renders the toolbar.\n */\n getToolbar() {\n let allowObjectCreation = false;\n if (this.state.selected.length || this.state.selectedNonObject) {\n const id = this.state.selected[0] || this.state.selectedNonObject;\n if (id.split('.').length < 2 || (this.objects[id] && this.objects[id].type === 'state')) {\n allowObjectCreation = false;\n }\n else if (this.state.filter.expertMode) {\n allowObjectCreation = true;\n }\n else if (id.startsWith('alias.0') || id.startsWith('0_userdata')) {\n allowObjectCreation = true;\n }\n }\n return react_1.default.createElement(\"div\", { style: {\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n } },\n react_1.default.createElement(\"div\", { style: {\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n } },\n react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Refresh tree'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.IconButton, { onClick: () => this.refreshComponent(), disabled: this.state.updating, size: \"large\" },\n react_1.default.createElement(icons_material_1.Refresh, null)))),\n this.props.showExpertButton && !this.props.expertMode && (react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_expertMode'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { key: \"expertMode\", color: this.state.filter.expertMode ? 'secondary' : 'default', onClick: () => this.onFilter('expertMode', !this.state.filter.expertMode), size: \"large\" },\n react_1.default.createElement(IconExpert_1.default, null)))),\n !this.props.disableColumnSelector && (react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Configure'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { key: \"columnSelector\", color: this.state.columnsAuto ? 'primary' : 'default', onClick: () => this.setState({ columnsSelectorShow: true }), size: \"large\" },\n react_1.default.createElement(icons_material_1.ViewColumn, null)))),\n this.state.expandAllVisible && (react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Expand all nodes'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { key: \"expandAll\", onClick: () => this.onExpandAll(), size: \"large\" },\n react_1.default.createElement(IconOpen_1.default, null)))),\n react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Collapse all nodes'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { key: \"collapseAll\", onClick: () => this.onCollapseAll(), size: \"large\" },\n react_1.default.createElement(IconClosed_1.default, null))),\n react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Expand one step node'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { key: \"expandVisible\", color: \"primary\", onClick: () => this.onExpandVisible(), size: \"large\" },\n react_1.default.createElement(StyledBadge, { badgeContent: this.state.depth, color: \"secondary\" },\n react_1.default.createElement(IconOpen_1.default, null)))),\n react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Collapse one step node'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { key: \"collapseVisible\", color: \"primary\", onClick: () => this.onCollapseVisible(), size: \"large\" },\n react_1.default.createElement(StyledBadge, { badgeContent: this.state.depth, color: \"secondary\" },\n react_1.default.createElement(IconClosed_1.default, null)))),\n this.props.objectStatesView && (react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Toggle the states view'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { onClick: () => this.onStatesViewVisible(), size: \"large\" },\n react_1.default.createElement(icons_material_1.LooksOne, { color: this.state.statesView ? 'primary' : 'inherit' })))),\n react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Show/Hide object descriptions'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { onClick: () => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.desc`, this.state.showDescription ? 'false' : 'true');\n this.setState({ showDescription: !this.state.showDescription });\n }, size: \"large\" },\n react_1.default.createElement(icons_material_1.TextFields, { color: this.state.showDescription ? 'primary' : 'inherit' }))),\n this.props.objectAddBoolean ? react_1.default.createElement(material_1.Tooltip, { title: this.toolTipObjectCreating(), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.IconButton, { disabled: !allowObjectCreation, onClick: () => this.setState({\n modalNewObj: {\n id: this.state.selected[0] || this.state.selectedNonObject,\n },\n }), size: \"large\" },\n react_1.default.createElement(icons_material_1.Add, null)))) : null,\n this.props.objectImportExport && react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Add objects tree from JSON file'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { onClick: () => {\n const input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.setAttribute('id', 'files');\n input.setAttribute('opacity', '0');\n input.addEventListener('change', (e) => this.handleJsonUpload(e), false);\n input.click();\n }, size: \"large\" },\n react_1.default.createElement(icons_material_1.Publish, null))),\n this.props.objectImportExport &&\n (!!this.state.selected.length || this.state.selectedNonObject) &&\n react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Save objects tree as JSON file'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { onClick: () => this.setState({ showExportDialog: this._getSelectedIdsForExport().length }), size: \"large\" },\n react_1.default.createElement(icons_material_1.Publish, { style: { transform: 'rotate(180deg)' } })))),\n !!this.props.objectBrowserEditObject && (react_1.default.createElement(\"div\", { style: { display: 'flex', whiteSpace: 'nowrap' } }, `${this.props.t('ra_Objects')}: ${Object.keys(this.info.objects).length}, ${this.props.t('ra_States')}: ${Object.keys(this.info.objects).filter(el => this.info.objects[el].type === 'state').length}`)),\n this.props.objectEditBoolean && react_1.default.createElement(material_1.Tooltip, { title: this.props.t('ra_Edit custom config'), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { onClick: () => {\n var _b;\n // get all visible states\n const ids = this.root ? getVisibleItems(this.root, 'state', this.objects) : [];\n if (ids.length) {\n this.pauseSubscribe(true);\n if (ids.length === 1) {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, this.state.selected[0]);\n (_b = this.props.router) === null || _b === void 0 ? void 0 : _b.doNavigate(null, 'custom', this.state.selected[0]);\n }\n this.setState({ customDialog: ids, customDialogAll: true });\n }\n else {\n this.setState({ toast: this.props.t('ra_please select object') });\n }\n }, size: \"large\" },\n react_1.default.createElement(icons_material_1.Build, null))));\n }\n toggleExpanded(id) {\n const expanded = JSON.parse(JSON.stringify(this.state.expanded));\n const pos = expanded.indexOf(id);\n if (pos === -1) {\n expanded.push(id);\n expanded.sort();\n }\n else {\n expanded.splice(pos, 1);\n }\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectExpanded`, JSON.stringify(expanded));\n this.setState({ expanded });\n }\n onCopy(e, text) {\n e.stopPropagation();\n e.preventDefault();\n Utils_1.default.copyToClipboard(text);\n if (text.length < 50) {\n this.setState({ toast: this.props.t('ra_Copied %s', text) });\n }\n else {\n this.setState({ toast: this.props.t('ra_Copied') });\n }\n }\n renderColumnButtons(id, item, classes) {\n var _b, _c, _d;\n if (!item.data.obj) {\n return this.props.onObjectDelete || this.props.objectEditOfAccessControl ? react_1.default.createElement(\"div\", { className: classes.buttonDiv },\n this.state.filter.expertMode && this.props.objectEditOfAccessControl ? react_1.default.createElement(material_1.IconButton, { className: Utils_1.default.clsx(classes.cellButtonsButton, classes.cellButtonsEmptyButton, classes.cellButtonMinWidth), onClick: () => this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data }), size: \"large\" }, \"---\") : null,\n this.props.onObjectDelete && item.children && item.children.length ? react_1.default.createElement(material_1.IconButton, { className: Utils_1.default.clsx(classes.cellButtonsButton, classes.cellButtonsButtonAlone), size: \"small\", \"aria-label\": \"delete\", title: this.texts.deleteObject, onClick: () => {\n var _b;\n // calculate the number of children\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n }\n else if (keys[i] > start) {\n break;\n }\n }\n this.props.onObjectDelete && this.props.onObjectDelete(id, !!((_b = item.children) === null || _b === void 0 ? void 0 : _b.length), false, count + 1);\n } },\n react_1.default.createElement(icons_material_1.Delete, { className: classes.cellButtonsButtonIcon })) : null) : null;\n }\n item.data.aclTooltip = item.data.aclTooltip || this.renderTooltipAccessControl(item.data.obj.acl);\n const acl = item.data.obj.acl\n ? item.data.obj.type === 'state'\n ? item.data.obj.acl.state\n : item.data.obj.acl.object\n : 0;\n const aclSystemConfig = item.data.obj.acl &&\n (item.data.obj.type === 'state'\n ? this.systemConfig.common.defaultNewAcl.state\n : this.systemConfig.common.defaultNewAcl.object);\n const showEdit = this.state.filter.expertMode || _a.isNonExpertId(item.data.id);\n return [\n this.state.filter.expertMode && this.props.objectEditOfAccessControl ? react_1.default.createElement(material_1.Tooltip, { key: \"acl\", title: item.data.aclTooltip, classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(material_1.IconButton, { className: classes.cellButtonMinWidth, onClick: () => this.setState({ modalEditOfAccess: true, modalEditOfAccessObjData: item.data }), size: \"large\" },\n react_1.default.createElement(\"div\", { className: classes.aclText }, Number.isNaN(Number(acl))\n ? Number(aclSystemConfig).toString(16)\n : Number(acl).toString(16)))) :\n react_1.default.createElement(\"div\", { key: \"aclEmpty\", className: classes.cellButtonMinWidth }),\n showEdit ? react_1.default.createElement(material_1.IconButton, { key: \"edit\", className: classes.cellButtonsButton, size: \"small\", \"aria-label\": \"edit\", title: this.texts.editObject, onClick: () => {\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n this.setState({ editObjectDialog: id, editObjectAlias: false });\n } },\n react_1.default.createElement(icons_material_1.Edit, { className: classes.cellButtonsButtonIcon })) :\n react_1.default.createElement(\"div\", { key: \"editDisabled\", className: classes.cellButtonsButton }),\n this.props.onObjectDelete && (((_b = item.children) === null || _b === void 0 ? void 0 : _b.length) || !((_c = item.data.obj.common) === null || _c === void 0 ? void 0 : _c.dontDelete)) ? react_1.default.createElement(material_1.IconButton, { key: \"delete\", className: classes.cellButtonsButton, size: \"small\", \"aria-label\": \"delete\", onClick: () => {\n var _b, _c, _d;\n const keys = Object.keys(this.objects);\n keys.sort();\n let count = 0;\n const start = `${id}.`;\n for (let i = 0; i < keys.length; i++) {\n if (keys[i].startsWith(start)) {\n count++;\n }\n else if (keys[i] > start) {\n break;\n }\n }\n this.props.onObjectDelete && this.props.onObjectDelete(id, !!((_b = item.children) === null || _b === void 0 ? void 0 : _b.length), !((_d = (_c = item.data.obj) === null || _c === void 0 ? void 0 : _c.common) === null || _d === void 0 ? void 0 : _d.dontDelete), count);\n }, title: this.texts.deleteObject },\n react_1.default.createElement(icons_material_1.Delete, { className: classes.cellButtonsButtonIcon })) : null,\n this.props.objectCustomDialog &&\n this.info.hasSomeCustoms &&\n item.data.obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n ((_d = item.data.obj.common) === null || _d === void 0 ? void 0 : _d.type) !== 'file' ? react_1.default.createElement(material_1.IconButton, { className: Utils_1.default.clsx(classes.cellButtonsButton, item.data.hasCustoms\n ? classes.cellButtonsButtonWithCustoms\n : classes.cellButtonsButtonWithoutCustoms), key: \"custom\", size: \"small\", \"aria-label\": \"config\", title: this.texts.customConfig, onClick: () => {\n var _b;\n this.localStorage.setItem(`${this.props.dialogName || 'App'}.objectSelected`, id);\n this.pauseSubscribe(true);\n (_b = this.props.router) === null || _b === void 0 ? void 0 : _b.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id], customDialogAll: false });\n } },\n react_1.default.createElement(icons_material_1.Settings, { className: classes.cellButtonsButtonIcon })) : null,\n ];\n }\n readHistory(id) {\n var _b, _c;\n /* interface GetHistoryOptions {\n instance?: string;\n start?: number;\n end?: number;\n step?: number;\n count?: number;\n from?: boolean;\n ack?: boolean;\n q?: boolean;\n addID?: boolean;\n limit?: number;\n ignoreNull?: boolean;\n sessionId?: any;\n aggregate?: 'minmax' | 'min' | 'max' | 'average' | 'total' | 'count' | 'none';\n } */\n if (window.sparkline &&\n this.defaultHistory &&\n ((_c = (_b = this.objects[id]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.custom) &&\n this.objects[id].common.custom[this.defaultHistory]) {\n const now = new Date();\n now.setHours(now.getHours() - 24);\n now.setMinutes(0);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const nowMs = now.getTime();\n this.props.socket\n .getHistory(id, {\n instance: this.defaultHistory,\n start: nowMs,\n end: Date.now(),\n step: 3600000,\n from: false,\n ack: false,\n q: false,\n addID: false,\n aggregate: 'minmax',\n })\n .then(values => {\n const sparks = window.document.getElementsByClassName('sparkline');\n for (let s = 0; s < sparks.length; s++) {\n if (sparks[s].dataset.id === id) {\n const v = prepareSparkData(values, nowMs);\n window.sparkline.sparkline(sparks[s], v);\n break;\n }\n }\n })\n .catch(e => console.warn(`Cannot read history: ${e}`));\n }\n }\n renderColumnValue(id, item, classes) {\n var _b, _c, _d;\n const obj = item.data.obj;\n if (!obj || !this.states) {\n return null;\n }\n if (((_b = obj.common) === null || _b === void 0 ? void 0 : _b.type) === 'file') {\n return react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.cellValueText, classes.cellValueFile) }, \"[file]\");\n }\n if (!this.states[id]) {\n if (obj.type === 'state') {\n // we are waiting for state\n !this.recordStates.includes(id) && this.recordStates.push(id);\n this.states[id] = { val: null };\n this.subscribe(id);\n }\n return null;\n }\n !this.recordStates.includes(id) && this.recordStates.push(id);\n const state = this.states[id];\n let info = item.data.state;\n if (!info) {\n const { valFull, valText } = formatValue({\n state,\n obj: obj,\n texts: this.texts,\n dateFormat: this.props.dateFormat || this.systemConfig.common.dateFormat,\n isFloatComma: this.props.isFloatComma === undefined ? this.systemConfig.common.isFloatComma : this.props.isFloatComma,\n });\n const valFullRx = [];\n const valTextRx = [];\n item.data.state = { valFullRx, valTextRx };\n valFull.forEach(_item => {\n if (_item.t === this.texts.quality && state.q) {\n valFullRx.push(react_1.default.createElement(\"div\", { className: classes.cellValueTooltipBoth, key: _item.t },\n _item.t,\n \":\\u00A0\",\n _item.v));\n //
{item.v}
,\n !_item.nbr && valFullRx.push(react_1.default.createElement(\"br\", { key: `${_item.t}_br` }));\n }\n else {\n valFullRx.push(react_1.default.createElement(\"div\", { className: classes.cellValueTooltipTitle, key: _item.t },\n _item.t,\n \":\\u00A0\"));\n valFullRx.push(react_1.default.createElement(\"div\", { className: classes.cellValueTooltipValue, key: `${_item.t}_v` }, _item.v));\n !_item.nbr && valFullRx.push(react_1.default.createElement(\"br\", { key: `${_item.t}_br` }));\n }\n });\n if (this.defaultHistory &&\n ((_d = (_c = this.objects[id]) === null || _c === void 0 ? void 0 : _c.common) === null || _d === void 0 ? void 0 : _d.custom) &&\n this.objects[id].common.custom[this.defaultHistory]) {\n valFullRx.push(react_1.default.createElement(\"svg\", { key: \"sparkline\", className: \"sparkline\", \"data-id\": id, style: { fill: '#3d85de' }, width: \"200\", height: \"30\", strokeWidth: \"3\" }));\n }\n const copyText = valText.v || '';\n valTextRx.push(react_1.default.createElement(\"span\", { className: classes.newValue, key: `${valText.v.toString()}valText` }, valText.v.toString()));\n valText.u && valTextRx.push(react_1.default.createElement(\"span\", { className: Utils_1.default.clsx(classes.cellValueTextUnit, classes.newValue), key: `${valText.v.toString()}unit` }, valText.u));\n valText.s !== undefined && valTextRx.push(react_1.default.createElement(\"span\", { className: Utils_1.default.clsx(classes.cellValueTextState, classes.newValue), key: `${valText.v.toString()}states` },\n \"(\",\n valText.s,\n \")\"));\n valTextRx.push(react_1.default.createElement(IconCopy_1.default, { className: Utils_1.default.clsx(classes.cellButtonsValueButton, 'copyButton', classes.cellButtonsValueButtonCopy), onClick: e => this.onCopy(e, copyText), key: \"cc\" }));\n // \n info = item.data.state;\n }\n info.style = getValueStyle({ state, isExpertMode: this.state.filter.expertMode, isButton: item.data.button });\n let val = info.valTextRx;\n if (!this.state.filter.expertMode && item.data.button) {\n val = [react_1.default.createElement(icons_material_1.RoomService, { className: this.props.classes.cellValueButton })];\n }\n return react_1.default.createElement(material_1.Tooltip, { key: \"value\", title: info.valFullRx, classes: {\n tooltip: this.props.classes.cellValueTooltip,\n popper: this.props.classes.cellValueTooltipBox,\n }, onOpen: () => this.readHistory(id) },\n react_1.default.createElement(\"div\", { style: info.style, className: classes.cellValueText }, val));\n }\n _syncEnum(id, enumIds, newArray, cb) {\n var _b, _c, _d;\n if (!enumIds || !enumIds.length) {\n cb && cb();\n return;\n }\n const enumId = enumIds.pop() || '';\n const promises = [];\n if ((_b = this.info.objects[enumId]) === null || _b === void 0 ? void 0 : _b.common) {\n if ((_c = this.info.objects[enumId].common.members) === null || _c === void 0 ? void 0 : _c.length) {\n const pos = this.info.objects[enumId].common.members.indexOf(id);\n if (pos !== -1 && !newArray.includes(enumId)) {\n // delete from members\n const obj = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members.splice(pos, 1);\n promises.push(this.props.socket\n .setObject(enumId, obj)\n .then(() => (this.info.objects[enumId] = obj))\n .catch(e => this.showError(e)));\n }\n }\n // add to it\n if (newArray.includes(enumId) && !((_d = this.info.objects[enumId].common.members) === null || _d === void 0 ? void 0 : _d.includes(id))) {\n // add to object\n const obj = JSON.parse(JSON.stringify(this.info.objects[enumId]));\n obj.common.members = obj.common.members || [];\n obj.common.members.push(id);\n obj.common.members.sort();\n promises.push(this.props.socket\n .setObject(enumId, obj)\n .then(() => (this.info.objects[enumId] = obj))\n .catch(e => this.showError(e)));\n }\n }\n Promise.all(promises)\n .then(() => {\n setTimeout(() => this._syncEnum(id, enumIds, newArray, cb), 0);\n });\n }\n syncEnum(id, enumName, newArray) {\n const toCheck = [...this.info[enumName === 'func' ? 'funcEnums' : 'roomEnums']];\n return new Promise(resolve => {\n this._syncEnum(id, toCheck, newArray, () => {\n // force update of an object\n resolve();\n });\n });\n }\n renderEnumDialog() {\n if (!this.state.enumDialog) {\n return null;\n }\n const type = this.state.enumDialog.type;\n const item = this.state.enumDialog.item;\n const itemEnums = this.state.enumDialogEnums;\n const enumsOriginal = this.state.enumDialog.enumsOriginal;\n const enums = (type === 'room' ? this.info.roomEnums : this.info.funcEnums)\n .map(id => {\n var _b, _c;\n return ({\n name: getName(((_c = (_b = this.objects[id]) === null || _b === void 0 ? void 0 : _b.common) === null || _c === void 0 ? void 0 : _c.name) || id.split('.').pop() || '', this.props.lang),\n value: id,\n icon: getSelectIdIconFromObjects(this.objects, id, this.imagePrefix),\n });\n })\n .sort((a, b) => (a.name > b.name ? 1 : -1));\n enums.forEach(_item => {\n if (_item.icon && typeof _item.icon === 'string') {\n _item.icon = (react_1.default.createElement(\"div\", { className: this.props.classes.enumIconDiv },\n react_1.default.createElement(\"img\", { src: _item.icon, className: this.props.classes.enumIcon, alt: _item.name })));\n }\n });\n // const hasIcons = !!enums.find(item => item.icon);\n return react_1.default.createElement(material_1.Dialog, { className: this.props.classes.enumDialog, onClose: () => this.setState({ enumDialog: null }), \"aria-labelledby\": \"enum-dialog-title\", open: !0 },\n react_1.default.createElement(material_1.DialogTitle, { id: \"enum-dialog-title\" },\n type === 'func' ? this.props.t('ra_Define functions') : this.props.t('ra_Define rooms'),\n react_1.default.createElement(material_1.Fab, { className: this.props.classes.enumButton, color: \"primary\", disabled: enumsOriginal === JSON.stringify(itemEnums), size: \"small\", onClick: () => this.syncEnum(item.data.id, type, itemEnums).then(() => this.setState({ enumDialog: null, enumDialogEnums: null })) },\n react_1.default.createElement(icons_material_1.Check, null))),\n react_1.default.createElement(material_1.List, { classes: { root: this.props.classes.enumList } }, enums.map(_item => {\n let id;\n let name;\n let icon;\n if (typeof _item === 'object') {\n id = _item.value;\n name = _item.name;\n icon = _item.icon;\n }\n else {\n id = _item;\n name = _item;\n }\n const labelId = `checkbox-list-label-${id}`;\n return react_1.default.createElement(material_1.ListItem, { className: this.props.classes.headerCellSelectItem, key: id, onClick: () => {\n const pos = itemEnums.indexOf(id);\n const enumDialogEnums = JSON.parse(JSON.stringify(this.state.enumDialogEnums));\n if (pos === -1) {\n enumDialogEnums.push(id);\n enumDialogEnums.sort();\n }\n else {\n enumDialogEnums.splice(pos, 1);\n }\n this.setState({ enumDialogEnums });\n } },\n react_1.default.createElement(material_1.ListItemIcon, { classes: { root: this.props.classes.enumCheckbox } },\n react_1.default.createElement(material_1.Checkbox, { edge: \"start\", checked: itemEnums.includes(id), tabIndex: -1, disableRipple: true, inputProps: { 'aria-labelledby': labelId } })),\n react_1.default.createElement(material_1.ListItemText, { id: labelId }, name),\n icon ? react_1.default.createElement(material_1.ListItemSecondaryAction, null, icon) : null);\n })));\n }\n renderEditRoleDialog() {\n if (!this.state.roleDialog || !this.props.objectBrowserEditRole) {\n return null;\n }\n if (this.state.roleDialog && this.props.objectBrowserEditRole) {\n const ObjectBrowserEditRole = this.props.objectBrowserEditRole;\n // @ts-expect-error How to solve it?\n return react_1.default.createElement(ObjectBrowserEditRole, { key: \"objectBrowserEditRole\", id: this.state.roleDialog, socket: this.props.socket, t: this.props.t, roles: this.info.roles, onClose: (obj) => {\n if (obj) {\n this.info.objects[this.state.roleDialog] = obj;\n }\n this.setState({ roleDialog: null });\n } });\n }\n return null;\n }\n onColumnsEditCustomDialogClose(isSave) {\n var _b, _c;\n // cannot be null\n const customColumnDialog = this.customColumnDialog;\n if (isSave) {\n let value = customColumnDialog.value;\n if (customColumnDialog.type === 'boolean') {\n value = value === 'true' || value === true;\n }\n else if (customColumnDialog.type === 'number') {\n value = parseFloat(value);\n }\n this.customColumnDialog = null;\n this.props.socket\n .getObject(((_c = (_b = this.state.columnsEditCustomDialog) === null || _b === void 0 ? void 0 : _b.obj) === null || _c === void 0 ? void 0 : _c._id) || '')\n .then(obj => {\n var _b;\n if (obj && _a.setCustomValue(obj, (_b = this.state.columnsEditCustomDialog) === null || _b === void 0 ? void 0 : _b.it, value)) {\n return this.props.socket.setObject(obj._id, obj);\n }\n throw new Error(this.props.t('ra_Cannot update attribute, because not found in the object'));\n })\n .then(() => this.setState({ columnsEditCustomDialog: null }))\n .catch(e => this.showError(e));\n }\n else {\n this.customColumnDialog = null;\n this.setState({ columnsEditCustomDialog: null });\n }\n }\n renderColumnsEditCustomDialog() {\n if (!this.state.columnsEditCustomDialog) {\n return null;\n }\n if (!this.customColumnDialog) {\n const value = _a.getCustomValue(this.state.columnsEditCustomDialog.obj, this.state.columnsEditCustomDialog.it);\n this.customColumnDialog = {\n type: (this.state.columnsEditCustomDialog.it.type || typeof value),\n initValue: (value === null || value === undefined ? '' : value).toString(),\n value: (value === null || value === undefined ? '' : value).toString(),\n };\n }\n return react_1.default.createElement(material_1.Dialog, { onClose: () => this.setState({ columnsEditCustomDialog: null }), maxWidth: \"md\", \"aria-labelledby\": \"custom-dialog-title\", open: !0 },\n react_1.default.createElement(material_1.DialogTitle, { id: \"custom-dialog-title\" }, `${this.props.t('ra_Edit object field')}: ${this.state.columnsEditCustomDialog.obj._id}`),\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.DialogContentText, { id: \"alert-dialog-description\" }, this.customColumnDialog.type === 'boolean' ? react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { onKeyUp: e => e.key === 'Enter' && this.onColumnsEditCustomDialogClose(true), defaultChecked: this.customColumnDialog.value === 'true', onChange: e => {\n const customColumnDialog = this.customColumnDialog;\n customColumnDialog.value = e.target.checked.toString();\n const changed = customColumnDialog.value !== customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n } }), label: `${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})` }) : react_1.default.createElement(material_1.TextField, { variant: \"standard\", defaultValue: this.customColumnDialog.value, fullWidth: true, onKeyUp: e => e.key === 'Enter' && this.onColumnsEditCustomDialogClose(true), label: `${this.state.columnsEditCustomDialog.it.name} (${this.state.columnsEditCustomDialog.it.pathText})`, onChange: e => {\n const customColumnDialog = this.customColumnDialog;\n customColumnDialog.value = e.target.value;\n const changed = customColumnDialog.value !== customColumnDialog.initValue;\n if (changed === !this.state.customColumnDialogValueChanged) {\n this.setState({ customColumnDialogValueChanged: changed });\n }\n }, autoFocus: true }))),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { variant: \"contained\", onClick: () => this.onColumnsEditCustomDialogClose(true), disabled: !this.state.customColumnDialogValueChanged, color: \"primary\", startIcon: react_1.default.createElement(icons_material_1.Check, null) }, this.props.t('ra_Update')),\n react_1.default.createElement(material_1.Button\n // @ts-expect-error grey is valid color\n , { \n // @ts-expect-error grey is valid color\n color: \"grey\", variant: \"contained\", onClick: () => this.onColumnsEditCustomDialogClose(), startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.t('ra_Cancel'))));\n }\n static getCustomValue(obj, it) {\n var _b;\n if (((_b = obj === null || obj === void 0 ? void 0 : obj._id) === null || _b === void 0 ? void 0 : _b.startsWith(`${it.adapter}.`)) && it.path.length > 1) {\n const p = it.path;\n let value;\n const anyObj = obj;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n value = anyObj[p[0]][p[1]];\n }\n else if (p.length === 3) {\n value = anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' ? anyObj[p[0]][p[1]][p[2]] : null;\n }\n else if (p.length === 4) {\n value =\n anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object' && anyObj[p[0]][p[1]][p[2]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]]\n : null;\n }\n else if (p.length === 5) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n : null;\n }\n else if (p.length === 6) {\n value =\n anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]]\n ? anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]]\n : null;\n }\n if (value === undefined || value === null) {\n return null;\n }\n return value;\n }\n }\n return null;\n }\n static setCustomValue(obj, it, value) {\n var _b;\n if (((_b = obj === null || obj === void 0 ? void 0 : obj._id) === null || _b === void 0 ? void 0 : _b.startsWith(`${it.adapter}.`)) && it.path.length > 1) {\n const p = it.path;\n const anyObj = obj;\n if (anyObj[p[0]] && typeof anyObj[p[0]] === 'object') {\n if (p.length === 2) {\n // most common case\n anyObj[p[0]][p[1]] = value;\n return true;\n }\n if (p.length === 3) {\n if (anyObj[p[0]][p[1]] && typeof anyObj[p[0]][p[1]] === 'object') {\n anyObj[p[0]][p[1]][p[2]] = value;\n return true;\n }\n }\n else if (p.length === 4) {\n if (anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object') {\n anyObj[p[0]][p[1]][p[2]][p[3]] = value;\n return true;\n }\n }\n else if (p.length === 5) {\n if (anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object') {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] = value;\n return true;\n }\n }\n else if (p.length === 6) {\n if (anyObj[p[0]][p[1]] &&\n typeof anyObj[p[0]][p[1]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]] &&\n typeof anyObj[p[0]][p[1]][p[2]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]] === 'object' &&\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] &&\n typeof anyObj[p[0]][p[1]][p[2]][p[3]][p[4]] === 'object') {\n anyObj[p[0]][p[1]][p[2]][p[3]][p[4]][p[5]] = value;\n return true;\n }\n }\n }\n }\n return false;\n }\n /**\n * Renders a custom value.\n */\n renderCustomValue(obj, it, item) {\n const text = _a.getCustomValue(obj, it);\n if (text !== null && text !== undefined) {\n if (it.edit && !this.props.notEditable && (!it.objTypes || it.objTypes.includes(obj.type))) {\n return react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(this.props.classes.columnCustom, this.props.classes.columnCustomEditable, this.props.classes[`columnCustom_${it.align}`]), onClick: () => this.setState({\n columnsEditCustomDialog: { item, it, obj },\n customColumnDialogValueChanged: false,\n }) }, text);\n }\n return react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(this.props.classes.columnCustom, this.props.classes[`columnCustom_${it.align}`]) }, text);\n }\n return null;\n }\n /**\n * Renders a leaf.\n */\n renderLeaf(item, isExpanded, classes, counter) {\n var _b, _c, _d, _e, _f, _g, _h, _j, _k;\n const id = item.data.id;\n counter.count++;\n isExpanded = isExpanded === undefined ? this.state.expanded.includes(id) : isExpanded;\n // icon\n let iconFolder;\n const obj = item.data.obj;\n const itemType = obj === null || obj === void 0 ? void 0 : obj.type;\n if (item.children ||\n itemType === 'folder' ||\n itemType === 'device' ||\n itemType === 'channel' ||\n itemType === 'meta') {\n iconFolder = isExpanded ? (react_1.default.createElement(IconOpen_1.default, { className: classes.cellIdIconFolder, onClick: () => this.toggleExpanded(id) })) : (react_1.default.createElement(IconClosed_1.default, { className: classes.cellIdIconFolder, onClick: () => this.toggleExpanded(id) }));\n }\n else if (obj && obj.common && obj.common.write === false && obj.type === 'state') {\n iconFolder = react_1.default.createElement(IconDocumentReadOnly_1.default, { className: classes.cellIdIconDocument });\n }\n else {\n iconFolder = react_1.default.createElement(IconDocument_1.default, { className: classes.cellIdIconDocument });\n }\n let iconItem = null;\n if (item.data.icon) {\n if (typeof item.data.icon === 'string') {\n if (item.data.icon.length < 3) {\n iconItem = react_1.default.createElement(\"span\", { className: Utils_1.default.clsx(classes.cellIdIconOwn, 'iconOwn') }, item.data.icon); // utf-8 char\n }\n else {\n iconItem = react_1.default.createElement(Icon_1.default, { className: Utils_1.default.clsx(classes.cellIdIconOwn, 'iconOwn'), src: item.data.icon, alt: \"\" });\n }\n }\n else {\n iconItem = item.data.icon;\n }\n }\n const common = obj === null || obj === void 0 ? void 0 : obj.common;\n const typeImg = ((obj === null || obj === void 0 ? void 0 : obj.type) && exports.ITEM_IMAGES[obj.type]) || react_1.default.createElement(\"div\", { className: \"itemIcon\" });\n const paddingLeft = this.levelPadding * (item.data.level || 0);\n // recalculate rooms and function names if the language changed\n if (item.data.lang !== this.props.lang) {\n const { rooms, per } = findRoomsForObject(this.info, id, this.props.lang);\n item.data.rooms = rooms.join(', ');\n item.data.per = per;\n const { funcs, pef } = findFunctionsForObject(this.info, id, this.props.lang);\n item.data.funcs = funcs.join(', ');\n item.data.pef = pef;\n item.data.lang = this.props.lang;\n }\n const checkbox = this.props.multiSelect &&\n this.objects[id] &&\n (!this.props.types || this.props.types.includes(this.objects[id].type)) ?\n react_1.default.createElement(material_1.Checkbox, { className: classes.checkBox, checked: this.state.selected.includes(id) }) : null;\n let valueEditable = !this.props.notEditable &&\n itemType === 'state' &&\n (this.state.filter.expertMode || (common === null || common === void 0 ? void 0 : common.write) !== false);\n if (this.props.objectBrowserViewFile && (common === null || common === void 0 ? void 0 : common.type) === 'file') {\n valueEditable = true;\n }\n const enumEditable = !this.props.notEditable &&\n this.objects[id] &&\n (this.state.filter.expertMode || itemType === 'state' || itemType === 'channel' || itemType === 'device');\n const checkVisibleObjectType = this.state.statesView && (itemType === 'state' || itemType === 'channel' || itemType === 'device');\n let newValue = '';\n const newValueTitle = [];\n if (checkVisibleObjectType) {\n newValue = (_b = this.states[id]) === null || _b === void 0 ? void 0 : _b.from;\n if (newValue === undefined) {\n newValue = ' ';\n }\n else {\n newValue = newValue ? newValue.replace(/^system\\.adapter\\.|^system\\./, '') : '';\n newValueTitle.push(`${this.texts.stateChangedFrom} ${newValue}`);\n }\n if (obj === null || obj === void 0 ? void 0 : obj.user) {\n const user = obj.user.replace('system.user.', '');\n newValue += `/${user}`;\n newValueTitle.push(`${this.texts.stateChangedBy} ${user}`);\n }\n }\n if (obj) {\n obj.from &&\n newValueTitle.push(`${this.texts.objectChangedFrom} ${obj.from.replace(/^system\\.adapter\\.|^system\\./, '')}`);\n obj.user && newValueTitle.push(`${this.texts.objectChangedBy} ${obj.user.replace(/^system\\.user\\./, '')}`);\n obj.ts &&\n newValueTitle.push(`${this.texts.objectChangedByUser} ${Utils_1.default.formatDate(new Date(obj.ts), this.props.dateFormat || this.systemConfig.common.dateFormat)}`);\n }\n const readWriteAlias = typeof ((_c = common === null || common === void 0 ? void 0 : common.alias) === null || _c === void 0 ? void 0 : _c.id) === 'object';\n const alias = id.startsWith('alias.') && ((_d = common === null || common === void 0 ? void 0 : common.alias) === null || _d === void 0 ? void 0 : _d.id) ? (readWriteAlias ?\n react_1.default.createElement(\"div\", { className: classes.cellIdAliasReadWriteDiv },\n common.alias.id.read ? react_1.default.createElement(\"div\", { onClick: e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.read);\n setTimeout(() => this.expandAllSelected(() => this.scrollToItem(common.alias.id.read)), 100);\n }, className: Utils_1.default.clsx(classes.cellIdAlias, classes.cellIdAliasReadWrite) },\n \"\\u2190\",\n common.alias.id.read) : null,\n common.alias.id.write ? react_1.default.createElement(\"div\", { onClick: e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id.write);\n setTimeout(() => this.expandAllSelected(() => this.scrollToItem(common.alias.id.write)), 100);\n }, className: Utils_1.default.clsx(classes.cellIdAlias, classes.cellIdAliasReadWrite) },\n \"\\u2192\",\n common.alias.id.write) : null)\n :\n react_1.default.createElement(\"div\", { onClick: e => {\n e.stopPropagation();\n e.preventDefault();\n this.onSelect(common.alias.id);\n setTimeout(() => this.expandAllSelected(() => this.scrollToItem(common.alias.id)), 100);\n }, className: Utils_1.default.clsx(classes.cellIdAlias, classes.cellIdAliasAlone) },\n \"\\u2192\",\n common.alias.id)) : null;\n let checkColor = common === null || common === void 0 ? void 0 : common.color;\n let invertBackground;\n if (checkColor && !this.state.selected.includes(id)) {\n const background = this.props.themeName === 'dark' ? '#1f1f1f' : this.props.themeName === 'blue' ? '#222a2e' : '#FFFFFF';\n const distance = Utils_1.default.colorDistance(checkColor, background);\n // console.log(`Distance: ${checkColor} - ${background} = ${distance}`);\n if (distance < 1000) {\n invertBackground = this.props.themeType === 'dark' ? '#9a9a9a' : '#565656';\n }\n }\n let bold = false;\n if (id === '0_userdata') {\n checkColor = COLOR_NAME_USERDATA(this.props.themeType);\n bold = true;\n }\n else if (id === 'alias') {\n checkColor = COLOR_NAME_ALIAS(this.props.themeType);\n bold = true;\n }\n else if (id === 'javascript') {\n checkColor = COLOR_NAME_JAVASCRIPT(this.props.themeType);\n bold = true;\n }\n else if (id === 'system') {\n checkColor = COLOR_NAME_SYSTEM(this.props.themeType);\n bold = true;\n }\n else if (id === 'system.adapter') {\n checkColor = COLOR_NAME_SYSTEM_ADAPTER(this.props.themeType);\n }\n else if (!checkColor || this.state.selected.includes(id)) {\n checkColor = 'inherit';\n }\n const icons = [];\n if (common === null || common === void 0 ? void 0 : common.statusStates) {\n const ids = {};\n Object.keys(common.statusStates).forEach(name => {\n var _b;\n let _id = common.statusStates[name];\n if (_id.split('.').length < 3) {\n _id = `${id}.${_id}`;\n }\n ids[name] = _id;\n if (!this.states[_id]) {\n if (((_b = this.objects[_id]) === null || _b === void 0 ? void 0 : _b.type) === 'state') {\n !this.recordStates.includes(_id) && this.recordStates.push(_id);\n this.states[_id] = { val: null };\n this.subscribe(_id);\n }\n }\n else {\n !this.recordStates.includes(_id) && this.recordStates.push(_id);\n }\n });\n // calculate color\n // errorId has priority\n let colorSet = false;\n if (common.statusStates.errorId && this.states[ids.errorId] && this.states[ids.errorId].val) {\n checkColor = this.props.themeType === 'dark' ? COLOR_NAME_ERROR_DARK : COLOR_NAME_ERROR_LIGHT;\n colorSet = true;\n icons.push(react_1.default.createElement(icons_material_1.Error, { key: \"error\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceError }));\n }\n if (ids.onlineId && this.states[ids.onlineId]) {\n if (!colorSet) {\n if (this.states[ids.onlineId].val) {\n checkColor =\n this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(react_1.default.createElement(icons_material_1.Wifi, { key: \"conn\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceConnected }));\n }\n else {\n checkColor =\n this.props.themeType === 'dark'\n ? COLOR_NAME_DISCONNECTED_DARK\n : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(react_1.default.createElement(icons_material_1.WifiOff, { key: \"disc\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceDisconnected }));\n }\n }\n else if (this.states[ids.onlineId].val) {\n icons.push(react_1.default.createElement(icons_material_1.Wifi, { key: \"conn\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceConnected }));\n }\n else {\n icons.push(react_1.default.createElement(icons_material_1.WifiOff, { key: \"disc\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceDisconnected }));\n }\n }\n else if (ids.offlineId && this.states[ids.offlineId]) {\n if (!colorSet) {\n if (this.states[ids.offlineId].val) {\n checkColor =\n this.props.themeType === 'dark'\n ? COLOR_NAME_DISCONNECTED_DARK\n : COLOR_NAME_DISCONNECTED_LIGHT;\n icons.push(react_1.default.createElement(icons_material_1.WifiOff, { key: \"disc\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceDisconnected }));\n }\n else {\n checkColor =\n this.props.themeType === 'dark' ? COLOR_NAME_CONNECTED_DARK : COLOR_NAME_CONNECTED_LIGHT;\n icons.push(react_1.default.createElement(icons_material_1.Wifi, { key: \"conn\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceConnected }));\n }\n }\n else if (this.states[ids.offlineId].val) {\n icons.push(react_1.default.createElement(icons_material_1.WifiOff, { key: \"disc\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceDisconnected }));\n }\n else {\n icons.push(react_1.default.createElement(icons_material_1.Wifi, { key: \"conn\", \n // title={this.texts.deviceError}\n className: this.props.classes.iconDeviceConnected }));\n }\n }\n }\n const q = checkVisibleObjectType ? Utils_1.default.quality2text(((_e = this.states[id]) === null || _e === void 0 ? void 0 : _e.q) || 0).join(', ') : null;\n let name = ((_f = item.data) === null || _f === void 0 ? void 0 : _f.title) || '';\n let useDesc = false;\n if (this.state.showDescription) {\n const oTooltip = getObjectTooltip(item.data, this.props.lang);\n if (oTooltip) {\n name = [\n react_1.default.createElement(\"div\", { key: \"name\", className: classes.cellNameDivDiv }, name),\n react_1.default.createElement(\"div\", { key: \"desc\", className: classes.cellDescription }, oTooltip),\n ];\n useDesc = !!oTooltip;\n }\n }\n return react_1.default.createElement(material_1.Grid, { container: true, direction: \"row\", wrap: \"nowrap\", className: Utils_1.default.clsx(classes.tableRow, this.state.linesEnabled && classes.tableRowLines, !this.props.dragEnabled && classes.tableRowNoDragging, alias && classes.tableRowAlias, readWriteAlias && classes.tableRowAliasReadWrite, !item.data.visible && classes.filteredOut, item.data.hasVisibleParent &&\n !item.data.visible &&\n !item.data.hasVisibleChildren &&\n classes.filteredParentOut, this.state.selected.includes(id) && classes.itemSelected, this.state.selectedNonObject === id && classes.itemSelected), key: id, id: id, onMouseDown: e => {\n this.onSelect(id);\n let isRightMB;\n if ('which' in e) {\n // Gecko (Firefox), WebKit (Safari/Chrome) & Opera\n isRightMB = e.which === 3;\n }\n else if ('button' in e) {\n // IE, Opera\n isRightMB = e.button === 2;\n }\n if (isRightMB) {\n this.contextMenu = {\n item,\n ts: Date.now(),\n };\n }\n else {\n this.contextMenu = null;\n }\n }, onDoubleClick: () => {\n if (!item.children) {\n this.onSelect(id, true);\n }\n else {\n this.toggleExpanded(id);\n }\n } },\n react_1.default.createElement(material_1.Grid, { container: true, wrap: \"nowrap\", direction: \"row\", className: classes.cellId, style: { width: this.columnsVisibility.id, paddingLeft } },\n react_1.default.createElement(material_1.Grid, { item: true, container: true, alignItems: \"center\" },\n checkbox,\n iconFolder),\n react_1.default.createElement(material_1.Grid, { item: true, style: { color: checkColor, fontWeight: bold ? 'bold' : undefined }, className: Utils_1.default.clsx(classes.cellIdSpan, invertBackground && classes.invertedBackground) },\n react_1.default.createElement(material_1.Tooltip, { title: getIdFieldTooltip(item.data, this.props.classes, this.props.lang), classes: { popper: this.props.classes.tooltip } },\n react_1.default.createElement(\"div\", null, item.data.name)),\n alias,\n icons),\n react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.grow, invertBackground && classes.invertedBackgroundFlex) }),\n react_1.default.createElement(material_1.Grid, { item: true, container: true, alignItems: \"center\" }, iconItem),\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(IconCopy_1.default, { className: Utils_1.default.clsx(classes.cellCopyButton, 'copyButton'), onClick: e => this.onCopy(e, id) }))),\n this.columnsVisibility.name ? react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.cellName, useDesc && classes.cellNameWithDesc), style: { width: this.columnsVisibility.name } },\n name,\n ((_g = item.data) === null || _g === void 0 ? void 0 : _g.title) ? react_1.default.createElement(\"div\", { style: { color: checkColor } },\n react_1.default.createElement(IconCopy_1.default, { className: Utils_1.default.clsx(classes.cellCopyButton, 'copyButton'), onClick: e => { var _b; return this.onCopy(e, (_b = item.data) === null || _b === void 0 ? void 0 : _b.title); } })) : null) : null,\n !this.state.statesView ? react_1.default.createElement(react_1.default.Fragment, null,\n this.columnsVisibility.type ? react_1.default.createElement(\"div\", { className: classes.cellType, style: { width: this.columnsVisibility.type } },\n typeImg,\n \"\\u00A0\",\n obj && obj.type) : null,\n this.columnsVisibility.role ? react_1.default.createElement(\"div\", { className: classes.cellRole, style: {\n width: this.columnsVisibility.role,\n cursor: this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole\n ? 'text'\n : 'default',\n }, onClick: this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole\n ? () => this.setState({ roleDialog: item.data.id })\n : undefined }, common === null || common === void 0 ? void 0 : common.role) : null,\n this.columnsVisibility.room ? react_1.default.createElement(\"div\", { className: `${classes.cellRoom} ${item.data.per ? classes.cellEnumParent : ''}`, style: {\n width: this.columnsVisibility.room,\n cursor: enumEditable ? 'text' : 'default',\n }, onClick: enumEditable ? () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n } : undefined }, item.data.rooms) : null,\n this.columnsVisibility.func ? react_1.default.createElement(\"div\", { className: `${classes.cellFunc} ${item.data.pef ? classes.cellEnumParent : ''}`, style: {\n width: this.columnsVisibility.func,\n cursor: enumEditable ? 'text' : 'default',\n }, onClick: enumEditable ? () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n });\n } : undefined }, item.data.funcs) : null) : react_1.default.createElement(react_1.default.Fragment, null,\n this.columnsVisibility.changedFrom ? react_1.default.createElement(\"div\", { className: classes.cellRole, style: { width: this.columnsVisibility.changedFrom }, title: newValueTitle.join('\\n') }, checkVisibleObjectType && ((_h = this.states[id]) === null || _h === void 0 ? void 0 : _h.from) ? newValue : null) : null,\n this.columnsVisibility.qualityCode ? react_1.default.createElement(\"div\", { className: classes.cellRole, style: { width: this.columnsVisibility.qualityCode }, title: q || '' }, q) : null,\n this.columnsVisibility.timestamp ? react_1.default.createElement(\"div\", { className: classes.cellRole, style: { width: this.columnsVisibility.timestamp } }, checkVisibleObjectType && ((_j = this.states[id]) === null || _j === void 0 ? void 0 : _j.ts)\n ? Utils_1.default.formatDate(new Date(this.states[id].ts), this.props.dateFormat || this.systemConfig.common.dateFormat)\n : null) : null,\n this.columnsVisibility.lastChange ? react_1.default.createElement(\"div\", { className: classes.cellRole, style: { width: this.columnsVisibility.lastChange } }, checkVisibleObjectType && ((_k = this.states[id]) === null || _k === void 0 ? void 0 : _k.lc)\n ? Utils_1.default.formatDate(new Date(this.states[id].lc), this.props.dateFormat || this.systemConfig.common.dateFormat)\n : null) : null),\n this.adapterColumns.map(it => react_1.default.createElement(\"div\", { className: classes.cellAdapter, style: { width: this.columnsVisibility[it.id] }, key: it.id, title: `${it.adapter} => ${it.pathText}` }, obj ? this.renderCustomValue(obj, it, item) : null)),\n this.columnsVisibility.val ? react_1.default.createElement(\"div\", { className: classes.cellValue, style: {\n width: this.columnsVisibility.val,\n cursor: valueEditable ? ((common === null || common === void 0 ? void 0 : common.type) === 'file' ? 'zoom-in' : (item.data.button ? 'grab' : 'text')) : 'default',\n }, onClick: valueEditable ? () => {\n if (!obj || !this.states) {\n // return;\n }\n else if ((common === null || common === void 0 ? void 0 : common.type) === 'file') {\n this.setState({ viewFileDialog: id });\n // eslint-disable-next-line brace-style\n }\n else if (!this.state.filter.expertMode && item.data.button) {\n // in non-expert mode control button directly\n this.props.socket\n .setState(id, true)\n .catch(e => window.alert(`Cannot write state \"${id}\": ${e}`));\n }\n else {\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id] ? this.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true });\n }\n } : undefined }, this.renderColumnValue(id, item, classes)) : null,\n this.columnsVisibility.buttons ? react_1.default.createElement(\"div\", { className: classes.cellButtons, style: { width: this.columnsVisibility.buttons } }, this.renderColumnButtons(id, item, classes)) : null);\n }\n /**\n * Renders an item.\n */\n renderItem(root, isExpanded, classes, counter) {\n const items = [];\n counter = counter || { count: 0 };\n let leaf = this.renderLeaf(root, isExpanded, classes, counter);\n const DragWrapper = this.props.DragWrapper;\n if (this.props.dragEnabled) {\n if (root.data.sumVisibility) {\n // @ts-expect-error How to solve it?\n leaf = react_1.default.createElement(DragWrapper, { key: root.data.id, item: root, className: classes.draggable }, leaf);\n }\n else {\n // change cursor\n leaf = react_1.default.createElement(\"div\", { key: root.data.id, className: classes.nonDraggable }, leaf);\n }\n }\n root.data.id && leaf && items.push(leaf);\n isExpanded = isExpanded === undefined ? binarySearch(this.state.expanded, root.data.id) : isExpanded;\n if (!root.data.id || isExpanded) {\n if (!this.state.foldersFirst) {\n root.children && items.push(root.children.map(item => {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n return null;\n }));\n }\n else {\n // first only folder\n root.children && items.push(root.children.map(item => {\n if (item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n }\n return null;\n }));\n // then items\n root.children && items.push(root.children.map(item => {\n if (!item.children) {\n // do not render too many items in column editor mode\n if (!this.state.columnsSelectorShow || counter.count < 15) {\n if (item.data.sumVisibility) {\n return this.renderItem(item, undefined, classes, counter);\n }\n }\n }\n return null;\n }));\n }\n }\n return items;\n }\n calculateColumnsVisibility(aColumnsAuto, aColumns, aColumnsForAdmin, aColumnsWidths) {\n let columnsWidths = aColumnsWidths || this.state.columnsWidths;\n const columnsForAdmin = aColumnsForAdmin || this.state.columnsForAdmin;\n const columns = aColumns || this.state.columns || [];\n const columnsAuto = typeof aColumnsAuto !== 'boolean' ? this.state.columnsAuto : aColumnsAuto;\n columnsWidths = JSON.parse(JSON.stringify(columnsWidths));\n Object.keys(columnsWidths).forEach(name => {\n if (columnsWidths[name]) {\n columnsWidths[name] = parseInt(columnsWidths[name], 10) || 0;\n }\n });\n this.adapterColumns = [];\n const WIDTHS = SCREEN_WIDTHS[this.props.width || 'lg'].widths;\n if (columnsAuto) {\n this.columnsVisibility = {\n id: SCREEN_WIDTHS[this.props.width || 'lg'].idWidth,\n name: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n nameHeader: this.visibleCols.includes('name') ? WIDTHS.name || 0 : 0,\n type: this.visibleCols.includes('type') ? WIDTHS.type || 0 : 0,\n role: this.visibleCols.includes('role') ? WIDTHS.role || 0 : 0,\n room: this.visibleCols.includes('room') ? WIDTHS.room || 0 : 0,\n func: this.visibleCols.includes('func') ? WIDTHS.func || 0 : 0,\n changedFrom: this.visibleCols.includes('changedFrom') ? WIDTHS.changedFrom || 0 : 0,\n qualityCode: this.visibleCols.includes('qualityCode') ? WIDTHS.qualityCode || 0 : 0,\n timestamp: this.visibleCols.includes('timestamp') ? WIDTHS.timestamp || 0 : 0,\n lastChange: this.visibleCols.includes('lastChange') ? WIDTHS.lastChange || 0 : 0,\n val: this.visibleCols.includes('val') ? WIDTHS.val || 0 : 0,\n buttons: this.visibleCols.includes('buttons') ? WIDTHS.buttons || 0 : 0,\n };\n // in xs name is not visible\n if (this.columnsVisibility.name && !this.customWidth) {\n let widthSum = this.columnsVisibility.id || 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom || 0;\n widthSum += this.columnsVisibility.qualityCode || 0;\n widthSum += this.columnsVisibility.timestamp || 0;\n widthSum += this.columnsVisibility.lastChange || 0;\n }\n else {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n widthSum += this.columnsVisibility.val || 0;\n widthSum += this.columnsVisibility.buttons || 0;\n this.columnsVisibility.name = `calc(100% - ${widthSum + 5}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n }\n else if (!this.customWidth) {\n // Calculate the width of ID\n let widthSum = 0; // id is always visible\n if (this.state.statesView) {\n widthSum += this.columnsVisibility.changedFrom || 0;\n widthSum += this.columnsVisibility.qualityCode || 0;\n widthSum += this.columnsVisibility.timestamp || 0;\n widthSum += this.columnsVisibility.lastChange || 0;\n }\n else {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n widthSum += this.columnsVisibility.val || 0;\n widthSum += this.columnsVisibility.buttons || 0;\n this.columnsVisibility.id = `calc(100% - ${widthSum + 5}px)`;\n }\n }\n else {\n const width = this.props.width || 'lg';\n this.columnsVisibility = {\n id: columnsWidths.id || SCREEN_WIDTHS[width].idWidth,\n name: columns.includes('name')\n ? columnsWidths.name || WIDTHS.name || SCREEN_WIDTHS[width].widths.name || 0\n : 0,\n type: columns.includes('type')\n ? columnsWidths.type || WIDTHS.type || SCREEN_WIDTHS[width].widths.type || 0\n : 0,\n role: columns.includes('role')\n ? columnsWidths.role || WIDTHS.role || SCREEN_WIDTHS[width].widths.role || 0\n : 0,\n room: columns.includes('room')\n ? columnsWidths.room || WIDTHS.room || SCREEN_WIDTHS[width].widths.room || 0\n : 0,\n func: columns.includes('func')\n ? columnsWidths.func || WIDTHS.func || SCREEN_WIDTHS[width].widths.func || 0\n : 0,\n };\n let widthSum = this.columnsVisibility.id; // id is always visible\n if (this.columnsVisibility.name) {\n widthSum += this.columnsVisibility.type || 0;\n widthSum += this.columnsVisibility.role || 0;\n widthSum += this.columnsVisibility.room || 0;\n widthSum += this.columnsVisibility.func || 0;\n }\n if (columnsForAdmin && columns) {\n Object.keys(columnsForAdmin)\n .sort()\n .forEach(adapter => columnsForAdmin[adapter]\n .forEach(column => {\n const id = `_${adapter}_${column.path}`;\n if (columns.includes(id)) {\n const item = {\n adapter,\n id: `_${adapter}_${column.path}`,\n name: column.name,\n path: column.path.split('.'),\n pathText: column.path,\n };\n if (column.edit) {\n item.edit = true;\n if (column.type) {\n item.type = column.type;\n }\n if (column.objTypes) {\n item.objTypes = column.objTypes;\n }\n }\n this.adapterColumns.push(item);\n this.columnsVisibility[id] =\n columnsWidths[item.id] ||\n column.width ||\n SCREEN_WIDTHS[width].widths.func ||\n SCREEN_WIDTHS.xl.widths.func || 0;\n widthSum += this.columnsVisibility[id];\n }\n else {\n this.columnsVisibility[id] = 0;\n }\n }));\n }\n this.adapterColumns.sort((a, b) => (a.id > b.id ? -1 : a.id < b.id ? 1 : 0));\n this.columnsVisibility.val = columns.includes('val')\n ? columnsWidths.val || WIDTHS.val || SCREEN_WIDTHS.xl.widths.val\n : 0;\n // do not show buttons if not desired\n if (!this.props.columns || this.props.columns.includes('buttons')) {\n this.columnsVisibility.buttons = columns.includes('buttons')\n ? columnsWidths.buttons || WIDTHS.buttons || SCREEN_WIDTHS.xl.widths.buttons\n : 0;\n widthSum += this.columnsVisibility.buttons || 0;\n }\n if (this.columnsVisibility.name && !columnsWidths.name) {\n widthSum += this.columnsVisibility.val || 0;\n this.columnsVisibility.name = `calc(100% - ${widthSum}px)`;\n this.columnsVisibility.nameHeader = `calc(100% - ${widthSum + 5 + this.state.scrollBarWidth}px)`;\n }\n else {\n const newWidth = Object.keys(this.columnsVisibility)\n .reduce((accumulator, name) => {\n // do not summarize strings\n if (name === 'id' ||\n typeof this.columnsVisibility[name] === 'string' ||\n !this.columnsVisibility[name]) {\n return accumulator;\n }\n return accumulator + this.columnsVisibility[name];\n }, 0);\n this.columnsVisibility.id = `calc(100% - ${newWidth}px)`;\n }\n }\n }\n /**\n * Handle keyboard events for navigation\n */\n navigateKeyPress(event) {\n var _b, _c;\n const selectedId = this.state.selectedNonObject || this.state.selected[0];\n if (!selectedId) {\n return;\n }\n if (event.code === 'ArrowUp' || event.code === 'ArrowDown') {\n event.preventDefault();\n const ids = [];\n (_b = this.tableRef.current) === null || _b === void 0 ? void 0 : _b.childNodes.forEach((node) => ids.push(node.id));\n const idx = ids.indexOf(selectedId);\n const newIdx = event.code === 'ArrowDown' ? idx + 1 : idx - 1;\n const newId = ids[newIdx] || selectedId;\n this.onSelect(newId);\n this.scrollToItem(newId);\n }\n if (event.code === 'ArrowRight' || event.code === 'ArrowLeft') {\n this.toggleExpanded(selectedId);\n }\n if (event.code === 'Delete' && this.root && selectedId) {\n const item = this.getItemFromRoot(this.root, selectedId);\n if (item) {\n const { obj } = item.data;\n if (obj && !((_c = obj.common) === null || _c === void 0 ? void 0 : _c.dontDelete)) {\n this.showDeleteDialog({ id: selectedId, obj, item });\n }\n }\n }\n }\n /**\n * Find the id from the root\n */\n getItemFromRoot(\n /** The current root */\n root, \n /** the object id to find */\n id) {\n var _b;\n const idArr = id.split('.');\n let currId = '';\n let _root = root;\n for (const idEntry of idArr) {\n currId = currId ? `${currId}.${idEntry}` : idEntry;\n _root = (_b = _root.children) === null || _b === void 0 ? void 0 : _b.find(item => item.data.id === currId);\n if (!_root) {\n break;\n }\n }\n return _root || null;\n }\n /**\n * Render the right handle for resizing\n */\n renderHandleRight() {\n return react_1.default.createElement(\"div\", { className: `${this.props.classes.resizeHandle} ${this.props.classes.resizeHandleRight}`, onMouseDown: this.resizerMouseDown, onDoubleClick: this.resizerReset, title: this.props.t('ra_Double click to reset table layout') });\n }\n renderHeader() {\n const classes = this.props.classes;\n let filterClearInValue = null;\n if (!this.columnsVisibility.buttons && !this.isFilterEmpty()) {\n filterClearInValue = react_1.default.createElement(material_1.IconButton, { onClick: () => this.clearFilter(), className: classes.buttonClearFilter, title: this.props.t('ra_Clear filter'), size: \"large\" },\n react_1.default.createElement(IconClearFilter_1.default, null),\n react_1.default.createElement(icons_material_1.Close, { className: classes.buttonClearFilterIcon }));\n }\n return react_1.default.createElement(\"div\", { className: classes.headerRow },\n react_1.default.createElement(\"div\", { className: classes.headerCell, style: { width: this.columnsVisibility.id, position: 'relative' }, \"data-min\": 240, \"data-name\": \"id\" },\n this.getFilterInput('id'),\n this.renderHandleRight()),\n this.columnsVisibility.name ? react_1.default.createElement(\"div\", { className: classes.headerCell, style: { width: this.columnsVisibility.nameHeader, position: 'relative' }, \"data-min\": 100, \"data-name\": \"nameHeader\" },\n this.getFilterInput('name'),\n this.renderHandleRight()) : null,\n !this.state.statesView && react_1.default.createElement(react_1.default.Fragment, null,\n this.columnsVisibility.type ? react_1.default.createElement(\"div\", { className: classes.headerCell, style: { width: this.columnsVisibility.type, position: 'relative' }, \"data-min\": 100, \"data-name\": \"type\" },\n this.getFilterSelectType(),\n this.renderHandleRight()) : null,\n this.columnsVisibility.role ? react_1.default.createElement(\"div\", { className: classes.headerCell, style: { width: this.columnsVisibility.role, position: 'relative' }, \"data-min\": 100, \"data-name\": \"role\" },\n this.getFilterSelectRole(),\n this.renderHandleRight()) : null,\n this.columnsVisibility.room ? react_1.default.createElement(\"div\", { className: classes.headerCell, style: { width: this.columnsVisibility.room, position: 'relative' }, \"data-min\": 100, \"data-name\": \"room\" },\n this.getFilterSelectRoom(),\n this.renderHandleRight()) : null,\n this.columnsVisibility.func ? react_1.default.createElement(\"div\", { className: classes.headerCell, style: { width: this.columnsVisibility.func, position: 'relative' }, \"data-min\": 100, \"data-name\": \"func\" },\n this.getFilterSelectFunction(),\n this.renderHandleRight()) : null),\n this.state.statesView && react_1.default.createElement(react_1.default.Fragment, null,\n react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.headerCell, classes.headerCellValue), style: { width: this.columnsVisibility.changedFrom, position: 'relative' }, \"data-min\": 100, \"data-name\": \"changedFrom\" },\n this.props.t('ra_Changed from'),\n this.renderHandleRight()),\n react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.headerCell, classes.headerCellValue), style: { width: this.columnsVisibility.qualityCode, position: 'relative' }, \"data-min\": 100, \"data-name\": \"qualityCode\" },\n this.props.t('ra_Quality code'),\n this.renderHandleRight()),\n react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.headerCell, classes.headerCellValue), style: { width: this.columnsVisibility.timestamp, position: 'relative' }, \"data-min\": 100, \"data-name\": \"timestamp\" },\n this.props.t('ra_Timestamp'),\n this.renderHandleRight()),\n react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.headerCell, classes.headerCellValue), style: { width: this.columnsVisibility.lastChange, position: 'relative' }, \"data-min\": 100, \"data-name\": \"lastChange\" },\n this.props.t('ra_Last change'),\n this.renderHandleRight())),\n this.adapterColumns.map(item => react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.headerCell, classes.headerCellValue), style: { width: this.columnsVisibility[item.id] }, title: item.adapter, key: item.id, \"data-min\": 100, \"data-name\": item.id }, item.name)),\n this.columnsVisibility.val ? react_1.default.createElement(\"div\", { className: Utils_1.default.clsx(classes.headerCell, classes.headerCellValue), style: { width: this.columnsVisibility.val, position: 'relative' }, \"data-min\": 120, \"data-name\": \"val\" },\n this.props.t('ra_Value'),\n filterClearInValue) : null,\n this.columnsVisibility.buttons ? react_1.default.createElement(\"div\", { className: classes.headerCell, title: this.texts.filter_custom, style: { width: this.columnsVisibility.buttons } },\n ' ',\n this.getFilterSelectCustoms()) : null);\n }\n renderToast() {\n return react_1.default.createElement(material_1.Snackbar, { open: !!this.state.toast, autoHideDuration: 3000, onClick: () => this.setState({ toast: '' }), onClose: () => this.setState({ toast: '' }), message: this.state.toast, action: react_1.default.createElement(material_1.IconButton, { size: \"small\", \"aria-label\": \"close\", color: \"inherit\", onClick: () => this.setState({ toast: '' }) },\n react_1.default.createElement(icons_material_1.Close, { fontSize: \"small\" })) });\n }\n /**\n * Called when component is updated.\n */\n componentDidUpdate() {\n var _b, _c, _d, _e;\n if (this.tableRef.current) {\n const scrollBarWidth = this.tableRef.current.offsetWidth - this.tableRef.current.clientWidth;\n if (this.state.scrollBarWidth !== scrollBarWidth) {\n setTimeout(() => this.setState({ scrollBarWidth }), 100);\n }\n else if (!this.selectedFound &&\n (((_b = this.state.selected) === null || _b === void 0 ? void 0 : _b[0]) || ((_c = this.lastSelectedItems) === null || _c === void 0 ? void 0 : _c[0]))) {\n this.scrollToItem(((_d = this.state.selected) === null || _d === void 0 ? void 0 : _d[0]) || ((_e = this.lastSelectedItems) === null || _e === void 0 ? void 0 : _e[0]));\n }\n }\n }\n scrollToItem(id) {\n const node = window.document.getElementById(id);\n node &&\n node.scrollIntoView({\n behavior: 'auto',\n block: 'center',\n inline: 'center',\n });\n this.selectedFound = true;\n }\n renderCustomDialog() {\n if (this.state.customDialog && this.props.objectCustomDialog) {\n const ObjectCustomDialog = this.props.objectCustomDialog;\n // @ts-expect-error How to solve it?\n return react_1.default.createElement(ObjectCustomDialog, { reportChangedIds: (changedIds) => (this.changedIds = [...changedIds]), objectIDs: this.state.customDialog, allVisibleObjects: this.state.customDialogAll, expertMode: this.state.filter.expertMode, isFloatComma: this.props.isFloatComma, t: this.props.t, lang: this.props.lang, socket: this.props.socket, themeName: this.props.themeName, themeType: this.props.themeType, theme: this.props.theme, objects: this.objects, customsInstances: this.info.customs, onClose: () => {\n var _b;\n this.pauseSubscribe(false);\n this.setState({ customDialog: null });\n if (this.changedIds) {\n this.changedIds = null;\n // update all changed IDs\n this.forceUpdate();\n }\n (_b = this.props.router) === null || _b === void 0 ? void 0 : _b.doNavigate('tab-objects');\n } });\n }\n return null;\n }\n onUpdate(valAck) {\n this.props.socket\n .setState(this.edit.id, {\n val: valAck.val,\n ack: valAck.ack,\n q: valAck.q || 0,\n expire: valAck.expire || undefined,\n })\n .catch(e => this.showError(`Cannot write value: ${e}`));\n }\n renderEditObjectDialog() {\n if (!this.state.editObjectDialog || !this.props.objectBrowserEditObject) {\n return null;\n }\n const ObjectBrowserEditObject = this.props.objectBrowserEditObject;\n // @ts-expect-error How to solve it?\n return react_1.default.createElement(ObjectBrowserEditObject, { key: this.state.editObjectDialog, obj: this.objects[this.state.editObjectDialog], roleArray: this.info.roles, objects: this.objects, dateFormat: this.props.dateFormat, isFloatComma: this.props.isFloatComma, themeType: this.props.themeType, socket: this.props.socket, dialogName: this.props.dialogName, aliasTab: this.state.editObjectAlias, t: this.props.t, expertMode: this.state.filter.expertMode, onNewObject: (obj) => this.props.socket\n .setObject(obj._id, obj)\n .then(() => this.setState({ editObjectDialog: obj._id, editObjectAlias: false }, () => this.onSelect(obj._id)))\n .catch(e => this.showError(`Cannot write object: ${e}`)), onClose: (obj) => {\n var _b, _c;\n if (obj) {\n let updateAlias;\n if (this.state.editObjectDialog.startsWith('alias.')) {\n if (JSON.stringify((_b = this.objects[this.state.editObjectDialog].common) === null || _b === void 0 ? void 0 : _b.alias) !==\n JSON.stringify((_c = obj.common) === null || _c === void 0 ? void 0 : _c.alias)) {\n updateAlias = this.state.editObjectDialog;\n }\n }\n this.props.socket\n .setObject(obj._id, obj)\n .then(() => {\n if (updateAlias && this.subscribes.includes(updateAlias)) {\n this.unsubscribe(updateAlias);\n setTimeout(() => this.subscribe(updateAlias), 100);\n }\n })\n .catch(e => this.showError(`Cannot write object: ${e}`));\n }\n this.setState({ editObjectDialog: '', editObjectAlias: false });\n } });\n }\n renderViewObjectFileDialog() {\n if (!this.state.viewFileDialog || !this.props.objectBrowserViewFile) {\n return null;\n }\n const ObjectBrowserViewFile = this.props.objectBrowserViewFile;\n // @ts-expect-error How to solve it?\n return react_1.default.createElement(ObjectBrowserViewFile, { key: \"viewFile\", obj: this.objects[this.state.viewFileDialog], themeType: this.props.themeType, socket: this.props.socket, dialogName: this.props.dialogName, t: this.props.t, expertMode: this.state.filter.expertMode, onClose: () => this.setState({ viewFileDialog: '' }) });\n }\n renderAliasEditorDialog() {\n if (!this.props.objectBrowserAliasEditor || !this.state.showAliasEditor) {\n return null;\n }\n const ObjectBrowserAliasEditor = this.props.objectBrowserAliasEditor;\n // @ts-expect-error How to solve it?\n return react_1.default.createElement(ObjectBrowserAliasEditor, { key: \"editAlias\", obj: this.objects[this.state.showAliasEditor], objects: this.objects, themeType: this.props.themeType, socket: this.props.socket, dialogName: this.props.dialogName, t: this.props.t, expertMode: this.state.filter.expertMode, onClose: () => this.setState({ showAliasEditor: '' }), onRedirect: (id, timeout) => setTimeout(() => this.onSelect(id, false, () => this.expandAllSelected(() => {\n this.scrollToItem(id);\n setTimeout(() => this.setState({\n editObjectDialog: id,\n showAliasEditor: '',\n editObjectAlias: true,\n }), 300);\n })), timeout || 0) });\n }\n showAddDataPointDialog(id, initialType, initialStateType) {\n this.setState({\n showContextMenu: null,\n modalNewObj: {\n id,\n initialType,\n initialStateType,\n },\n });\n }\n /**\n * Renders the right mouse button context menu\n */\n renderContextMenu() {\n var _b, _c, _d, _e, _f, _g, _h;\n if (!this.state.showContextMenu) {\n return null;\n }\n const item = this.state.showContextMenu.item;\n const id = item.data.id;\n const items = [];\n // const ctrl = isIOS() ? '⌘' : (this.props.lang === 'de' ? 'Strg+' : 'Ctrl+');\n const obj = item.data.obj;\n let showACL = '';\n if (this.props.objectEditOfAccessControl && this.state.filter.expertMode) {\n if (!obj) {\n showACL = '---';\n }\n else {\n const acl = obj.acl ? (obj.type === 'state' ? obj.acl.state : obj.acl.object) : 0;\n const aclSystemConfig = obj.acl &&\n (obj.type === 'state'\n ? this.systemConfig.common.defaultNewAcl.state\n : this.systemConfig.common.defaultNewAcl.object);\n showACL = Number.isNaN(Number(acl)) ? Number(aclSystemConfig).toString(16) : Number(acl).toString(16);\n }\n }\n const enumEditable = !this.props.notEditable &&\n obj &&\n (this.state.filter.expertMode || obj.type === 'state' || obj.type === 'channel' || obj.type === 'device');\n const createStateVisible = !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.obj.type === 'channel' ||\n item.data.obj.type === 'device' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createChannelVisible = !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.obj.type === 'device' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createDeviceVisible = !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const createFolderVisible = !item.data.obj ||\n item.data.obj.type === 'folder' ||\n item.data.id === '0_userdata.0' ||\n item.data.obj.type === 'meta';\n const ITEMS = {\n EDIT: {\n key: '0',\n visibility: !!(this.props.objectBrowserEditObject &&\n obj &&\n (this.state.filter.expertMode || _a.isNonExpertId(id))),\n icon: react_1.default.createElement(icons_material_1.Edit, { fontSize: \"small\", className: this.props.classes.contextMenuEdit }),\n label: this.texts.editObject,\n onClick: () => this.setState({ editObjectDialog: item.data.id, showContextMenu: null, editObjectAlias: false }),\n },\n EDIT_VALUE: {\n key: '1',\n visibility: !!(this.states &&\n !this.props.notEditable &&\n obj &&\n obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n ((_b = obj.common) === null || _b === void 0 ? void 0 : _b.type) !== 'file' &&\n (this.state.filter.expertMode || obj.common.write !== false)),\n icon: react_1.default.createElement(icons_material_1.FormatItalic, { fontSize: \"small\", className: this.props.classes.contextMenuEditValue }),\n label: this.props.t('ra_Edit value'),\n onClick: () => {\n this.edit = {\n val: this.states[id] ? this.states[id].val : '',\n q: this.states[id] ? this.states[id].q || 0 : 0,\n ack: false,\n id,\n };\n this.setState({ updateOpened: true, showContextMenu: null });\n },\n },\n VIEW: {\n visibility: !!this.props.objectBrowserViewFile && (obj === null || obj === void 0 ? void 0 : obj.type) === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n ((_c = obj.common) === null || _c === void 0 ? void 0 : _c.type) === 'file',\n icon: react_1.default.createElement(icons_material_1.FindInPage, { fontSize: \"small\", className: this.props.classes.contextMenuView }),\n className: '',\n label: this.props.t('ra_View file'),\n onClick: () => this.setState({ viewFileDialog: (obj === null || obj === void 0 ? void 0 : obj._id) || '', showContextMenu: null }),\n },\n CUSTOM: {\n key: '2',\n visibility: !(this.props.objectCustomDialog &&\n this.info.hasSomeCustoms &&\n obj &&\n obj.type === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n ((_d = obj.common) === null || _d === void 0 ? void 0 : _d.type) !== 'file'),\n icon: react_1.default.createElement(icons_material_1.Settings, { fontSize: \"small\", className: item.data.hasCustoms\n ? this.props.classes.cellButtonsButtonWithCustoms\n : this.props.classes.cellButtonsButtonWithoutCustoms }),\n className: this.props.classes.contextMenuCustom,\n label: this.texts.customConfig,\n onClick: () => {\n var _b;\n this.pauseSubscribe(true);\n (_b = this.props.router) === null || _b === void 0 ? void 0 : _b.doNavigate(null, 'customs', id);\n this.setState({ customDialog: [id], showContextMenu: null });\n },\n },\n ACL: {\n key: '3',\n visibility: !!showACL,\n icon: showACL,\n iconStyle: { fontSize: 'smaller' },\n listItemIconClass: this.props.classes.contextMenuACL,\n className: this.props.classes.contextMenuACL,\n label: this.props.t('ra_Edit ACL'),\n onClick: () => this.setState({\n showContextMenu: null,\n modalEditOfAccess: true,\n modalEditOfAccessObjData: item.data,\n }),\n },\n ROLE: {\n key: '4',\n visibility: !!(this.state.filter.expertMode && enumEditable && this.props.objectBrowserEditRole),\n icon: react_1.default.createElement(icons_material_1.BorderColor, { fontSize: \"small\", className: this.props.classes.contextMenuRole }),\n className: '',\n label: this.props.t('ra_Edit role'),\n onClick: () => this.setState({ roleDialog: item.data.id, showContextMenu: null }),\n },\n FUNCTION: {\n key: '5',\n visibility: !!enumEditable,\n icon: react_1.default.createElement(icons_material_1.BedroomParent, { fontSize: \"small\", className: this.props.classes.contextMenuRole }),\n className: '',\n label: this.props.t('ra_Edit function'),\n onClick: () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'funcEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'func',\n enumsOriginal: JSON.stringify(enums),\n },\n showContextMenu: null,\n });\n },\n },\n ROOM: {\n key: '6',\n visibility: !!enumEditable,\n icon: react_1.default.createElement(icons_material_1.Construction, { fontSize: \"small\", className: this.props.classes.contextMenuRoom }),\n className: '',\n label: this.props.t('ra_Edit room'),\n onClick: () => {\n const enums = findEnumsForObjectAsIds(this.info, item.data.id, 'roomEnums');\n this.setState({\n enumDialogEnums: enums,\n enumDialog: {\n item,\n type: 'room',\n enumsOriginal: JSON.stringify(enums),\n },\n showContextMenu: null,\n });\n },\n },\n ALIAS: {\n key: '7',\n visibility: !!(!this.props.notEditable &&\n this.props.objectBrowserAliasEditor &&\n this.props.objectBrowserEditObject &&\n this.state.filter.expertMode &&\n (obj === null || obj === void 0 ? void 0 : obj.type) === 'state' &&\n // @ts-expect-error deprecated from js-controller 6\n ((_e = obj.common) === null || _e === void 0 ? void 0 : _e.type) !== 'file'),\n icon: react_1.default.createElement(icons_material_1.Link, { className: ((_f = obj === null || obj === void 0 ? void 0 : obj.common) === null || _f === void 0 ? void 0 : _f.alias)\n ? this.props.classes.cellButtonsButtonWithCustoms\n : this.props.classes.cellButtonsButtonWithoutCustoms }),\n className: '',\n label: this.props.t('ra_Edit alias'),\n onClick: () => {\n var _b;\n if ((_b = obj === null || obj === void 0 ? void 0 : obj.common) === null || _b === void 0 ? void 0 : _b.alias) {\n this.setState({ editObjectDialog: item.data.id, showContextMenu: null, editObjectAlias: true });\n }\n else {\n this.setState({ showContextMenu: null, showAliasEditor: item.data.id });\n }\n },\n },\n CREATE: {\n key: '+',\n visibility: (item.data.id.startsWith('0_userdata.0') || item.data.id.startsWith('javascript.')) &&\n (createStateVisible || createChannelVisible || createDeviceVisible || createFolderVisible),\n icon: react_1.default.createElement(icons_material_1.Add, { fontSize: \"small\", className: this.props.classes.cellButtonsButtonWithCustoms }),\n className: this.props.classes.contextMenuWithSubMenu,\n label: this.texts.create,\n subMenu: [\n {\n label: this.texts.createBooleanState,\n visibility: createStateVisible,\n icon: react_1.default.createElement(IconState_1.default, { fontSize: \"small\" }),\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'boolean'),\n },\n {\n label: this.texts.createNumberState,\n visibility: createStateVisible,\n icon: react_1.default.createElement(IconState_1.default, { fontSize: \"small\" }),\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'number'),\n },\n {\n label: this.texts.createStringState,\n visibility: createStateVisible,\n icon: react_1.default.createElement(IconState_1.default, { fontSize: \"small\" }),\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state', 'string'),\n },\n {\n label: this.texts.createState,\n visibility: createStateVisible,\n icon: react_1.default.createElement(IconState_1.default, { fontSize: \"small\" }),\n onClick: () => this.showAddDataPointDialog(item.data.id, 'state'),\n },\n {\n label: this.texts.createChannel,\n visibility: createChannelVisible,\n icon: react_1.default.createElement(IconChannel_1.default, { fontSize: \"small\" }),\n onClick: () => this.showAddDataPointDialog(item.data.id, 'channel'),\n },\n {\n label: this.texts.createDevice,\n visibility: createDeviceVisible,\n icon: react_1.default.createElement(IconDevice_1.default, { fontSize: \"small\" }),\n onClick: () => this.showAddDataPointDialog(item.data.id, 'device'),\n },\n {\n label: this.texts.createFolder,\n icon: react_1.default.createElement(icons_material_1.CreateNewFolder, { fontSize: \"small\" }),\n visibility: createFolderVisible,\n onClick: () => this.showAddDataPointDialog(item.data.id, 'folder'),\n },\n ],\n },\n DELETE: {\n key: 'Delete',\n visibility: !!(this.props.onObjectDelete && (((_g = item.children) === null || _g === void 0 ? void 0 : _g.length) || (obj && !((_h = obj.common) === null || _h === void 0 ? void 0 : _h.dontDelete)))),\n icon: react_1.default.createElement(icons_material_1.Delete, { fontSize: \"small\", className: this.props.classes.contextMenuDelete }),\n className: this.props.classes.contextMenuDelete,\n label: this.texts.deleteObject,\n onClick: () => this.setState({ showContextMenu: null }, () => this.showDeleteDialog({\n id,\n obj: obj || {},\n item,\n })),\n },\n };\n Object.keys(ITEMS).forEach(key => {\n var _b, _c;\n if (ITEMS[key].visibility) {\n if (ITEMS[key].subMenu) {\n items.push(react_1.default.createElement(material_1.MenuItem, { key: key, onClick: (e) => this.state.showContextMenu && this.setState({\n showContextMenu: {\n item: this.state.showContextMenu.item,\n subItem: key,\n subAnchor: e.target,\n },\n }), className: ITEMS[key].className },\n react_1.default.createElement(material_1.ListItemIcon, { style: ITEMS[key].iconStyle, className: ITEMS[key].listItemIconClass }, ITEMS[key].icon),\n react_1.default.createElement(material_1.ListItemText, null,\n ITEMS[key].label,\n \"...\"),\n react_1.default.createElement(material_1.ListItemSecondaryAction, null,\n react_1.default.createElement(icons_material_1.ArrowRight, null))));\n if (((_b = this.state.showContextMenu) === null || _b === void 0 ? void 0 : _b.subItem) === key) {\n items.push(react_1.default.createElement(material_1.Menu, { key: \"subContextMenu\", open: !0, anchorEl: this.state.showContextMenu.subAnchor, onClose: () => {\n this.state.showContextMenu && this.setState({ showContextMenu: { item: this.state.showContextMenu.item } });\n this.contextMenu = null;\n } }, (_c = ITEMS[key].subMenu) === null || _c === void 0 ? void 0 : _c.map(subItem => (subItem.visibility ? react_1.default.createElement(material_1.MenuItem, { key: subItem.label, onClick: subItem.onClick, className: subItem.className },\n react_1.default.createElement(material_1.ListItemIcon, { style: subItem.iconStyle, className: subItem.listItemIconClass }, subItem.icon),\n react_1.default.createElement(material_1.ListItemText, null, subItem.label)) : null))));\n }\n }\n else {\n items.push(react_1.default.createElement(material_1.MenuItem, { key: key, onClick: ITEMS[key].onClick, className: ITEMS[key].className },\n react_1.default.createElement(material_1.ListItemIcon, { style: ITEMS[key].iconStyle, className: ITEMS[key].listItemIconClass }, ITEMS[key].icon),\n react_1.default.createElement(material_1.ListItemText, null, ITEMS[key].label),\n ITEMS[key].key ? react_1.default.createElement(\"div\", { className: this.props.classes.contextMenuKeys }, `Alt+${ITEMS[key].key === 'Delete' ? this.props.t('ra_Del') : ITEMS[key].key}`) : null));\n }\n }\n });\n if (!items.length) {\n setTimeout(() => this.setState({ showContextMenu: null }), 100);\n return null;\n }\n const el = document.getElementById(id);\n return react_1.default.createElement(material_1.Menu, { key: \"contextMenu\", open: !0, onKeyUp: e => {\n e.preventDefault();\n if (e.altKey) {\n Object.keys(ITEMS).forEach(key => {\n if (e.key === ITEMS[key].key) {\n ITEMS[key].onClick && ITEMS[key].onClick();\n }\n });\n }\n }, anchorEl: el, onClose: () => {\n this.setState({ showContextMenu: null });\n this.contextMenu = null;\n } }, items);\n }\n renderEditValueDialog() {\n var _b;\n if (!this.state.updateOpened || !this.props.objectBrowserValue) {\n return null;\n }\n if (!this.edit.id) {\n console.error(`Invalid ID for edit: ${JSON.stringify(this.edit)}`);\n return null;\n }\n if (!this.objects[this.edit.id]) {\n console.error(`Something went wrong. Possibly the object ${this.edit.id} was deleted.`);\n return null;\n }\n const type = ((_b = this.objects[this.edit.id].common) === null || _b === void 0 ? void 0 : _b.type)\n ? this.objects[this.edit.id].common.type\n : typeof this.edit.val;\n const role = this.objects[this.edit.id].common.role;\n const ObjectBrowserValue = this.props.objectBrowserValue;\n // @ts-expect-error How to solve it?\n return react_1.default.createElement(ObjectBrowserValue, { t: this.props.t, lang: this.props.lang, type: type, role: role, states: Utils_1.default.getStates(this.objects[this.edit.id]), themeType: this.props.themeType, expertMode: this.state.filter.expertMode, value: this.edit.val, socket: this.props.socket, object: this.objects[this.edit.id], defaultHistory: this.defaultHistory, dateFormat: this.props.dateFormat, onClose: (res) => {\n this.setState({ updateOpened: false });\n res && this.onUpdate(res);\n } });\n }\n /**\n * The rendering method of this component.\n */\n render() {\n this.recordStates = [];\n this.unsubscribeTimer && clearTimeout(this.unsubscribeTimer);\n // apply filter if changed\n const jsonFilter = JSON.stringify(this.state.filter);\n if (this.lastAppliedFilter !== jsonFilter && this.objects && this.root) {\n const counter = { count: 0 };\n applyFilter(this.root, this.state.filter, this.props.lang, this.objects, undefined, counter, this.props.customFilter, this.props.types);\n if (counter.count < 500 && !this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: true }));\n }\n else if (counter.count >= 500 && this.state.expandAllVisible) {\n setTimeout(() => this.setState({ expandAllVisible: false }));\n }\n this.lastAppliedFilter = jsonFilter;\n }\n this.unsubscribeTimer = setTimeout(() => {\n this.unsubscribeTimer = null;\n this.checkUnsubscribes();\n }, 200);\n if (!this.state.loaded) {\n return react_1.default.createElement(material_1.CircularProgress, { key: `${this.props.dialogName}_c` });\n }\n const classes = this.props.classes;\n const items = this.root ? this.renderItem(this.root, undefined, classes) : null;\n return react_1.default.createElement(TabContainer_1.default, { key: this.props.dialogName },\n react_1.default.createElement(TabHeader_1.default, null, this.getToolbar()),\n react_1.default.createElement(TabContent_1.default, null,\n this.renderHeader(),\n react_1.default.createElement(\"div\", { className: this.props.classes.tableDiv, ref: this.tableRef, onKeyDown: event => this.navigateKeyPress(event) }, items)),\n this.renderContextMenu(),\n this.renderToast(),\n this.renderColumnsEditCustomDialog(),\n this.renderColumnsSelectorDialog(),\n this.renderCustomDialog(),\n this.renderEditValueDialog(),\n this.renderEditObjectDialog(),\n this.renderViewObjectFileDialog(),\n this.renderAliasEditorDialog(),\n this.renderEditRoleDialog(),\n this.renderEnumDialog(),\n this.renderErrorDialog(),\n this.renderExportDialog(),\n this.state.modalNewObj && this.props.modalNewObject && this.props.modalNewObject(this),\n this.state.modalEditOfAccess && this.state.modalEditOfAccessObjData &&\n this.props.modalEditOfAccessControl &&\n this.props.modalEditOfAccessControl(this, this.state.modalEditOfAccessObjData));\n }\n}\n_a = ObjectBrowser;\n/** Namespaces which are allowed to be edited by non-expert users */\n_ObjectBrowser_NON_EXPERT_NAMESPACES = { value: ['0_userdata.0.', 'alias.0.'] };\nexports.default = (0, withWidth_1.default)()((0, styles_1.withStyles)(styles)(ObjectBrowser));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = require(\"react\");\nclass Router extends react_1.Component {\n constructor(props) {\n super(props);\n this.onHashChangedBound = this.onHashChanged.bind(this);\n }\n componentDidMount() {\n window.addEventListener('hashchange', this.onHashChangedBound);\n }\n componentWillUnmount() {\n window.removeEventListener('hashchange', this.onHashChangedBound);\n }\n onHashChanged() {\n // override this function\n }\n /**\n * Gets the location object.\n */\n static getLocation() {\n let hash = window.location.hash;\n hash = hash.replace(/^#/, '');\n const parts = hash.split('/').map(item => {\n try {\n return item ? decodeURIComponent(item) : '';\n }\n catch (e) {\n console.error(`Router: Cannot decode ${item}`);\n return item || '';\n }\n });\n // #tabName/dialogName/deviceId\n return {\n tab: parts[0] || '',\n dialog: parts[1] || '',\n id: parts[2] || '',\n arg: parts[3] || '',\n };\n }\n /**\n * Navigate to a new location. Any parameters that are not set will be taken from the current location.\n */\n static doNavigate(tab, dialog, id, arg) {\n let hash = '';\n const location = Router.getLocation();\n if (arg !== undefined && !id) {\n id = location.id;\n }\n if (id && !dialog) {\n dialog = location.dialog;\n }\n if (dialog && !tab) {\n tab = location.tab;\n }\n else if (tab === null) {\n tab = location.tab;\n }\n if (tab) {\n hash = `#${tab}`;\n if (dialog) {\n hash += `/${dialog}`;\n if (id) {\n hash += `/${id}`;\n if (arg !== undefined) {\n hash += `/${arg}`;\n }\n }\n }\n }\n if (window.location.hash !== hash) {\n window.location.hash = hash;\n }\n }\n}\nexports.default = Router;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nconst react_1 = __importDefault(require(\"react\"));\nconst styles_1 = require(\"@mui/styles\");\nconst material_1 = require(\"@mui/material\");\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst i18n_1 = __importDefault(require(\"../i18n\"));\nconst styles = () => ({\n buttonIcon: {\n marginRight: 8,\n },\n});\n/**\n * @typedef {object} SaveCloseButtonsProps\n * @property {boolean} noTextOnButtons Are the buttons without text\n * @property {any} theme Theme object (from this.state.theme)\n * @property {boolean} isIFrame bottom position 0 or 38 for iFrame\n * @property {boolean} newReact is used in new react\n * @property {function} onSave on Save handler\n * @property {function} onClose on Close handler\n *\n * @extends {React.Component}\n */\nclass SaveCloseButtons extends react_1.default.Component {\n /**\n * @param {SaveCloseButtonsProps} props\n */\n constructor(props) {\n super(props);\n const newReact = props.newReact === undefined ? true : props.newReact;\n try {\n this.isIFrame = !newReact && window.self !== window.top;\n }\n catch (e) {\n this.isIFrame = !newReact;\n }\n }\n render() {\n const noTextOnButtons = this.props.noTextOnButtons;\n const buttonStyle = {\n borderRadius: this.props.theme.saveToolbar.button.borderRadius || 3,\n height: this.props.theme.saveToolbar.button.height || 32,\n };\n const style = {\n bottom: this.isIFrame ? 38 : 0,\n left: this.props.paddingLeft || 0,\n right: 0,\n position: 'absolute',\n background: this.props.theme.saveToolbar.background,\n };\n if (this.props.dense) {\n style.minHeight = 48;\n }\n if (this.props.error) {\n buttonStyle.border = '1px solid red';\n }\n return react_1.default.createElement(material_1.Toolbar\n // position=\"absolute\"\n , { \n // position=\"absolute\"\n style: style },\n react_1.default.createElement(material_1.Fab, { variant: \"extended\", \"aria-label\": \"Save\", disabled: !this.props.changed || this.props.error, onClick: () => this.props.onSave(false), style: buttonStyle },\n react_1.default.createElement(icons_material_1.Save, { className: !noTextOnButtons ? this.props.classes.buttonIcon : '' }),\n !noTextOnButtons && i18n_1.default.t('ra_Save')),\n react_1.default.createElement(material_1.Fab, { variant: \"extended\", \"aria-label\": \"Save and close\", disabled: !this.props.changed || this.props.error, onClick: () => this.props.onSave(true), style: Object.assign(Object.assign({}, buttonStyle), { marginLeft: 10 }) },\n react_1.default.createElement(icons_material_1.Save, { className: !noTextOnButtons ? this.props.classes.buttonIcon : '' }),\n !noTextOnButtons ? i18n_1.default.t('ra_Save and close') : '+',\n noTextOnButtons && react_1.default.createElement(icons_material_1.Close, null)),\n react_1.default.createElement(\"div\", { style: { flexGrow: 1 } }),\n react_1.default.createElement(material_1.Fab, { variant: \"extended\", \"aria-label\": \"Close\", onClick: () => this.props.onClose(), style: buttonStyle },\n react_1.default.createElement(icons_material_1.Close, { className: !noTextOnButtons ? this.props.classes.buttonIcon : '' }),\n !noTextOnButtons && i18n_1.default.t('ra_Close')));\n }\n}\n/** @type {typeof SaveCloseButtons} */\nconst _export = (0, styles_1.withStyles)(styles)(SaveCloseButtons);\nexports.default = _export;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst styles_1 = require(\"@mui/styles\");\nconst material_1 = require(\"@mui/material\");\nconst i18n_1 = __importDefault(require(\"../i18n\"));\nconst styles = (theme) => ({\n hr: {\n border: 0,\n borderTop: '1px solid gray',\n },\n scrollWindow: {\n width: '100%',\n overflow: 'auto',\n height: 'calc(100% - 22px)',\n },\n rowDiv: {\n width: '100%',\n },\n modeDiv: {\n width: 200,\n display: 'inline-block',\n verticalAlign: 'top',\n },\n settingsDiv: {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n inputTime: {\n width: 90,\n marginTop: 0,\n marginLeft: 5,\n },\n inputDate: {\n width: 140,\n marginTop: 0,\n marginLeft: 5,\n },\n inputEvery: {\n width: 40,\n marginLeft: 5,\n marginRight: 5,\n },\n inputRadio: {\n padding: '4px 12px',\n verticalAlign: 'top',\n },\n inputGroup: {\n maxWidth: 400,\n display: 'inline-block',\n },\n inputGroupElement: {\n width: 120,\n },\n inputDateDay: {\n width: 60,\n },\n inputDateDayCheck: {\n padding: 4,\n },\n inputSmallCheck: {\n padding: 0,\n },\n rowOnce: {},\n rowDays: {\n background: theme.palette.mode !== 'dark' ? '#ddeaff' : '#4b5057',\n },\n rowDows: {\n background: theme.palette.mode !== 'dark' ? '#DDFFDD' : '#52646c',\n },\n rowDates: {\n background: theme.palette.mode !== 'dark' ? '#DDDDFF' : '#747a86',\n },\n rowWeeks: {\n background: theme.palette.mode !== 'dark' ? '#DDDDFF' : '#717680',\n },\n rowMonths: {\n background: theme.palette.mode !== 'dark' ? '#DDFFFF' : '#1f5557',\n },\n rowMonthsDates: {\n background: theme.palette.mode !== 'dark' ? '#EEFFFF' : '#3c5737',\n maxWidth: 600,\n },\n rowYears: {\n background: theme.palette.mode !== 'dark' ? '#fbffdd' : '#574b33',\n },\n rowDaysDows: {\n background: theme.palette.mode !== 'dark' ? '#EEEAFF' : '#573544',\n paddingLeft: 10,\n paddingBottom: 10,\n },\n rowDowsDows: {\n background: theme.palette.mode !== 'dark' ? '#EEFFEE' : '#3d4c54',\n paddingLeft: 10,\n paddingBottom: 10,\n },\n});\nconst WEEKDAYS = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday',\n];\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\nconst PERIODS = {\n minutes: 'minutes',\n hours: 'hours',\n};\nconst ASTRO = [\n 'sunrise',\n 'sunriseEnd',\n 'goldenHourEnd',\n 'solarNoon',\n 'goldenHour',\n 'sunsetStart',\n 'sunset',\n 'dusk',\n 'nauticalDusk',\n 'night',\n 'nightEnd',\n 'nauticalDawn',\n 'dawn',\n 'nadir',\n];\nfunction padding(num) {\n if (num < 10) {\n return `0${num}`;\n }\n return `${num}`;\n}\n// interface TextTimeProps {\n// inputRef: React.RefObject;\n// placeholder?: string;\n// }\n// function TextTime(props: TextTimeProps) {\n// const { inputRef, ...other } = props;\n//\n// return ;\n// }\n// function TextDate(props: TextTimeProps) {\n// const { inputRef, ...other } = props;\n//\n// return ;\n// }\nconst DEFAULT = {\n time: {\n exactTime: false,\n start: '00:00',\n end: '23:59',\n mode: 'hours',\n interval: 1,\n },\n period: {\n once: '',\n days: 1,\n dows: '',\n dates: '',\n weeks: 0,\n months: '',\n years: 0,\n yearMonth: 0,\n yearDate: 0,\n },\n valid: {\n from: '',\n to: '',\n },\n};\nfunction string2USdate(date) {\n const parts = date.split('.');\n if (parts.length === 3) {\n return `${parts[2]}-${parts[1]}-${parts[0]}`;\n }\n return '';\n}\nclass Schedule extends react_1.Component {\n constructor(props) {\n super(props);\n this.timerOnce = null;\n this.timerFrom = null;\n this.timerTo = null;\n let schedule = undefined;\n if (this.props.schedule && typeof this.props.schedule === 'string' && this.props.schedule[0] === '{') {\n try {\n schedule = JSON.parse(this.props.schedule);\n }\n catch (e) {\n // ignore\n }\n }\n else if (typeof this.props.schedule === 'object') {\n schedule = this.props.schedule;\n }\n if ((!schedule || !Object.keys(schedule).length)) {\n setTimeout(() => this.onChange(this.state.schedule, true), 200);\n schedule = DEFAULT;\n }\n schedule = Object.assign(Object.assign({}, DEFAULT), schedule);\n schedule.valid.from = schedule.valid.from || Schedule.now2string();\n this.refFrom = react_1.default.createRef();\n this.refTo = react_1.default.createRef();\n this.refOnce = react_1.default.createRef();\n this.state = {\n schedule,\n desc: Schedule.state2text(schedule),\n };\n if (JSON.stringify(schedule) !== this.props.schedule) {\n setTimeout(() => this.props.onChange && this.props.onChange(JSON.stringify(schedule)), 100);\n }\n }\n onChange(schedule, force) {\n const isDiff = JSON.stringify(schedule) !== JSON.stringify(this.state.schedule);\n if (force || isDiff) {\n isDiff && this.setState({ schedule, desc: Schedule.state2text(schedule) });\n const copy = JSON.parse(JSON.stringify(schedule));\n if (copy.period.once) {\n const once = copy.period.once;\n delete copy.period;\n copy.period = { once };\n delete copy.valid;\n }\n else if (copy.period.days) {\n const days = copy.period.days;\n const daysOfWeek = copy.period.dows;\n delete copy.period;\n copy.period = { days };\n if (daysOfWeek && daysOfWeek !== '[]') {\n copy.period.dows = daysOfWeek;\n }\n }\n else if (copy.period.weeks) {\n const weeks = copy.period.weeks;\n const daysOfWeek = copy.period.dows;\n delete copy.period;\n copy.period = { weeks };\n if (daysOfWeek && daysOfWeek !== '[]') {\n copy.period.dows = daysOfWeek;\n }\n }\n else if (copy.period.months) {\n const months = copy.period.months;\n const dates = copy.period.dates;\n delete copy.period;\n copy.period = { months };\n if (dates && dates !== '[]') {\n copy.period.dates = dates;\n }\n }\n else if (copy.period.years) {\n const years = copy.period.years;\n const yearMonth = copy.period.yearMonth;\n const yearDate = copy.period.yearDate;\n delete copy.period;\n copy.period = { years, yearDate };\n if (yearMonth) {\n copy.period.yearMonth = yearMonth;\n }\n }\n if (copy.time.exactTime) {\n delete copy.time.end;\n delete copy.time.mode;\n delete copy.time.interval;\n }\n else {\n delete copy.time.exactTime;\n }\n if (copy.valid) {\n if (!copy.valid.to) {\n delete copy.valid.to;\n }\n if (copy.period.days === 1 || copy.period.weeks === 1 || copy.period.months === 1 || copy.period.years === 1) {\n const from = Schedule.string2date(copy.valid.from);\n const today = new Date();\n today.setHours(0);\n today.setMinutes(0);\n today.setSeconds(0);\n today.setMilliseconds(0);\n if (from <= today) {\n delete copy.valid.from;\n }\n }\n if (!copy.valid.from && !copy.valid.to) {\n delete copy.valid;\n }\n }\n this.props.onChange && this.props.onChange(JSON.stringify(copy), Schedule.state2text(schedule));\n }\n }\n static state2text(schedule) {\n if (typeof schedule === 'string') {\n try {\n schedule = JSON.parse(schedule);\n }\n catch (e) {\n return '';\n }\n }\n const desc = [];\n const validFrom = Schedule.string2date(schedule.valid.from);\n if (schedule.period.once) {\n // once\n const once = Schedule.string2date(schedule.period.once);\n const now = new Date();\n now.setMilliseconds(0);\n now.setSeconds(0);\n now.setMinutes(0);\n now.setHours(0);\n //\n if (once < now) {\n // will be not executed anymore, because start is in the past\n return i18n_1.default.t('sch_desc_onceInPast');\n }\n // only once\n desc.push(i18n_1.default.t('sch_desc_once_on', schedule.period.once));\n }\n else if (schedule.period.days) {\n if (schedule.period.days === 1) {\n if (schedule.period.dows) {\n const daysOfWeek = JSON.parse(schedule.period.dows);\n if (daysOfWeek.length === 2 && daysOfWeek[0] === 0 && daysOfWeek[1] === 6) {\n // on weekends\n desc.push(i18n_1.default.t('sch_desc_onWeekends'));\n }\n else if (daysOfWeek.length === 5 && daysOfWeek[0] === 1 && daysOfWeek[1] === 2 && daysOfWeek[2] === 3 && daysOfWeek[3] === 4 && daysOfWeek[4] === 5) {\n // on workdays\n desc.push(i18n_1.default.t('sch_desc_onWorkdays'));\n }\n else {\n const tDows = daysOfWeek.map((day) => i18n_1.default.t(WEEKDAYS[day]));\n if (tDows.length === 1) {\n // on Monday\n desc.push(i18n_1.default.t('sch_desc_onWeekday', tDows[0]));\n }\n else if (tDows.length === 7) {\n // on every day\n desc.push(i18n_1.default.t('sch_desc_everyDay'));\n }\n else {\n const last = tDows.pop();\n // on Monday and Sunday\n desc.push(i18n_1.default.t('sch_desc_onWeekdays', tDows.join(', '), last));\n }\n }\n }\n else {\n desc.push(i18n_1.default.t('sch_desc_everyDay'));\n }\n }\n else {\n desc.push(i18n_1.default.t('sch_desc_everyNDay', schedule.period.days.toString()));\n }\n }\n else if (schedule.period.weeks) {\n if (schedule.period.weeks === 1) {\n desc.push(i18n_1.default.t('sch_desc_everyWeek'));\n }\n else {\n desc.push(i18n_1.default.t('sch_desc_everyNWeeks', schedule.period.weeks.toString()));\n }\n if (schedule.period.dows) {\n const daysOfWeek = JSON.parse(schedule.period.dows);\n if (daysOfWeek.length === 2 && daysOfWeek[0] === 0 && daysOfWeek[1] === 6) {\n // on weekends\n desc.push(i18n_1.default.t('sch_desc_onWeekends'));\n }\n else if (daysOfWeek.length === 5 && daysOfWeek[0] === 1 && daysOfWeek[1] === 2 && daysOfWeek[2] === 3 && daysOfWeek[3] === 4 && daysOfWeek[4] === 5) {\n // on workdays\n desc.push(i18n_1.default.t('sch_desc_onWorkdays'));\n }\n else {\n const tDows = daysOfWeek.map((day) => i18n_1.default.t(WEEKDAYS[day]));\n if (tDows.length === 1) {\n // on Monday\n desc.push(i18n_1.default.t('sch_desc_onWeekday', tDows[0]));\n }\n else if (tDows.length === 7) {\n // on every day\n desc.push(i18n_1.default.t('sch_desc_everyDay'));\n }\n else {\n const last = tDows.pop();\n // on Monday and Sunday\n desc.push(i18n_1.default.t('sch_desc_onWeekdays', tDows.join(', '), last));\n }\n }\n }\n else {\n return i18n_1.default.t('sch_desc_never');\n }\n }\n else if (schedule.period.months) {\n if (schedule.period.dates) {\n const dates = JSON.parse(schedule.period.dates);\n if (dates.length === 1) {\n // in 1 of month\n desc.push(i18n_1.default.t('sch_desc_onDate', dates[0]));\n }\n else if (dates.length === 31) {\n desc.push(i18n_1.default.t('sch_desc_onEveryDate'));\n }\n else if (!dates.length) {\n return i18n_1.default.t('sch_desc_never');\n }\n else {\n const last = dates.pop();\n // in 1 and 4 of month\n desc.push(i18n_1.default.t('sch_desc_onDates', dates.join(', '), last));\n }\n }\n else {\n desc.push(i18n_1.default.t('sch_desc_onEveryDate'));\n }\n if (schedule.period.months === 1) {\n desc.push(i18n_1.default.t('sch_desc_everyMonth'));\n }\n else if (typeof schedule.period.months === 'number') {\n desc.push(i18n_1.default.t('sch_desc_everyNMonths', schedule.period.months.toString()));\n }\n else {\n const months = JSON.parse(schedule.period.months);\n const tMonths = months.map((month) => i18n_1.default.t(MONTHS[month - 1]));\n if (!tMonths.length) {\n // in January\n return i18n_1.default.t('sch_desc_never');\n }\n if (tMonths.length === 1) {\n // in January\n desc.push(i18n_1.default.t('sch_desc_onMonth', tMonths[0]));\n }\n else if (tMonths.length === 12) {\n // every month\n desc.push(i18n_1.default.t('sch_desc_everyMonth'));\n }\n else {\n const last = tMonths.pop();\n // in January and May\n desc.push(i18n_1.default.t('sch_desc_onMonths', tMonths.join(', '), last));\n }\n }\n }\n else if (schedule.period.years) {\n if (schedule.period.years === 1) {\n desc.push(i18n_1.default.t('sch_desc_everyYear'));\n }\n else {\n desc.push(i18n_1.default.t('sch_desc_everyNYears', schedule.period.years.toString()));\n }\n desc.push(i18n_1.default.t('sch_desc_onDate', schedule.period.yearDate.toString(), schedule.period.yearMonth ? i18n_1.default.t(MONTHS[schedule.period.yearMonth - 1]) : i18n_1.default.t('sch_desc_everyMonth')));\n }\n // time\n if (schedule.time.exactTime) {\n if (ASTRO.indexOf(schedule.time.start) !== -1) {\n // at sunset\n desc.push(i18n_1.default.t('sch_desc_atTime', i18n_1.default.t(`sch_astro_${schedule.time.start}`)));\n }\n else {\n // at HH:MM\n desc.push(i18n_1.default.t('sch_desc_atTime', schedule.time.start));\n }\n }\n else {\n if (schedule.time.mode === PERIODS.minutes) {\n if (schedule.time.interval === 1) {\n // every minute\n desc.push(i18n_1.default.t('sch_desc_everyMinute'));\n }\n else {\n // every N minutes\n desc.push(i18n_1.default.t('sch_desc_everyNMinutes', schedule.time.interval.toString()));\n }\n }\n else if (schedule.time.interval === 1) {\n // every minute\n desc.push(i18n_1.default.t('sch_desc_everyHour'));\n }\n else {\n // every N minutes\n desc.push(i18n_1.default.t('sch_desc_everyNHours', schedule.time.interval.toString()));\n }\n const start = ASTRO.indexOf(schedule.time.start) !== -1 ? i18n_1.default.t(`sch_astro_${schedule.time.start}`) : schedule.time.start;\n const end = ASTRO.indexOf(schedule.time.end) !== -1 ? i18n_1.default.t(`sch_astro_${schedule.time.end}`) : schedule.time.end;\n if (start !== '00:00' || (end !== '24:00' && end !== '23:59')) {\n // from HH:mm to HH:mm\n desc.push(i18n_1.default.t('sch_desc_intervalFromTo', start, end));\n }\n }\n if (!schedule.period.once) {\n // valid\n if (validFrom.getTime() > Date.now() && schedule.valid.to) {\n // from XXX to XXXX\n desc.push(i18n_1.default.t('sch_desc_validFromTo', schedule.valid.from, schedule.valid.to));\n }\n else if (validFrom.getTime() > Date.now()) {\n // from XXXX\n desc.push(i18n_1.default.t('sch_desc_validFrom', schedule.valid.from));\n }\n else if (schedule.valid.to) {\n // till XXXX\n desc.push(i18n_1.default.t('sch_desc_validTo', schedule.valid.to));\n }\n }\n return desc.join(' ');\n }\n getTimePeriodElements() {\n const schedule = this.state.schedule;\n let wholeDay = false;\n let day = false;\n let night = false;\n let fromTo = true;\n if (schedule.time.start === '00:00' && schedule.time.end === '24:00') {\n wholeDay = true;\n fromTo = false;\n }\n else if (schedule.time.start === 'sunrise') {\n day = true;\n fromTo = false;\n }\n else if (schedule.time.start === 'sunset') {\n night = true;\n fromTo = false;\n }\n return react_1.default.createElement(\"div\", { key: \"timePeriod\", className: this.props.classes.rowDiv },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !schedule.time.exactTime, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.exactTime = false;\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_intervalTime') })),\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n !schedule.time.exactTime && react_1.default.createElement(\"div\", null,\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!fromTo, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.start = '00:00';\n _schedule.time.end = '23:59';\n this.onChange(_schedule);\n } }), label: !fromTo ? i18n_1.default.t('sch_fromTo') : '' }),\n fromTo && [\n react_1.default.createElement(material_1.TextField, { variant: \"standard\", className: this.props.classes.inputTime, style: { marginRight: 10 }, key: \"exactTimeFrom\", type: \"time\", value: this.state.schedule.time.start, \n // InputProps={{inputComponent: TextTime}}\n onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.start = e.target.value;\n this.onChange(_schedule);\n }, InputLabelProps: { shrink: true }, label: i18n_1.default.t('sch_from'), margin: \"normal\" }),\n react_1.default.createElement(material_1.TextField, { variant: \"standard\", className: this.props.classes.inputTime, key: \"exactTimeTo\", type: \"time\", value: this.state.schedule.time.end, \n // InputProps={{inputComponent: TextTime}}\n onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.end = e.target.value;\n this.onChange(_schedule);\n }, InputLabelProps: { shrink: true }, label: i18n_1.default.t('sch_to'), margin: \"normal\" }),\n ])),\n !schedule.time.exactTime && react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!wholeDay, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.start = '00:00';\n _schedule.time.end = '24:00';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_wholeDay') })),\n !schedule.time.exactTime && react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!day, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.start = 'sunrise';\n _schedule.time.end = 'sunset';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_astroDay') })),\n !schedule.time.exactTime && react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!night, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.start = 'sunset';\n _schedule.time.end = 'sunrise';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_astroNight') }))),\n !schedule.time.exactTime && this.getPeriodSettingsMinutes()));\n }\n getTimeExactElements() {\n const isAstro = ASTRO.includes(this.state.schedule.time.start);\n return react_1.default.createElement(\"div\", { key: \"timeExact\", className: this.props.classes.rowDiv },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!this.state.schedule.time.exactTime, onClick: () => {\n const schedule = JSON.parse(JSON.stringify(this.state.schedule));\n schedule.time.exactTime = true;\n this.onChange(schedule);\n } }), label: i18n_1.default.t('sch_exactTime') })),\n this.state.schedule.time.exactTime && react_1.default.createElement(material_1.Select, { variant: \"standard\", value: isAstro ? this.state.schedule.time.start : '00:00', onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.start = e.target.value;\n this.onChange(_schedule);\n } },\n react_1.default.createElement(material_1.MenuItem, { key: \"specific\", value: \"00:00\" }, i18n_1.default.t('sch_specificTime')),\n ASTRO.map(event => react_1.default.createElement(material_1.MenuItem, { key: event, value: event }, i18n_1.default.t(`sch_astro_${event}`)))),\n this.state.schedule.time.exactTime && !isAstro &&\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n react_1.default.createElement(material_1.TextField, { variant: \"standard\", className: this.props.classes.inputTime, key: \"exactTimeValue\", value: this.state.schedule.time.start, type: \"time\", \n // inputComponent={TextTime}\n onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.start = e.target.value;\n this.onChange(_schedule);\n }, InputLabelProps: { shrink: true }, margin: \"normal\" })));\n }\n getDivider() {\n return react_1.default.createElement(\"hr\", { className: this.props.classes.hr });\n }\n getPeriodModes() {\n const schedule = this.state.schedule;\n const isOnce = !schedule.period.dows && !schedule.period.months && !schedule.period.dates && !schedule.period.years && !schedule.period.days && !schedule.period.weeks;\n if (isOnce && !schedule.period.once) {\n schedule.period.once = Schedule.now2string(true);\n }\n return [\n // ----- once ---\n react_1.default.createElement(\"div\", { key: \"once\", className: `${this.props.classes.rowDiv} ${this.props.classes.rowOnce}` },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!isOnce, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.once = _schedule.period.once || Schedule.now2string(true);\n _schedule.period.dows = '';\n _schedule.period.months = '';\n _schedule.period.dates = '';\n _schedule.period.years = 0;\n _schedule.period.yearDate = 0;\n _schedule.period.yearMonth = 0;\n _schedule.period.weeks = 0;\n _schedule.period.days = 0;\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodOnce') })),\n isOnce && react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n react_1.default.createElement(material_1.TextField, { variant: \"standard\", className: this.props.classes.inputDate, type: \"date\", ref: this.refOnce, key: \"exactDateAt\", defaultValue: string2USdate(schedule.period.once), \n // InputProps={{inputComponent: TextTime}}\n onChange: e => {\n this.timerOnce && clearTimeout(this.timerOnce);\n this.timerOnce = null;\n if (this.refOnce.current) {\n this.refOnce.current.style.background = '#ff000030';\n }\n this.timerOnce = setTimeout(value => {\n this.timerOnce = null;\n if (this.refOnce.current) {\n this.refOnce.current.style.background = '';\n }\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n const date = Schedule.string2date(value);\n if (date.toString() !== 'Invalid Date') {\n _schedule.period.once = `${padding(date.getDate())}.${padding(date.getMonth() + 1)}.${date.getFullYear()}`;\n this.onChange(_schedule);\n }\n }, 1500, e.target.value);\n }, InputLabelProps: { shrink: true }, label: i18n_1.default.t('sch_at'), margin: \"normal\" }))),\n // ----- days ---\n react_1.default.createElement(\"div\", { key: \"days\", className: `${this.props.classes.rowDiv} ${this.props.classes.rowDays}` },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!schedule.period.days, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.days = 1;\n _schedule.period.dows = '';\n _schedule.period.months = '';\n _schedule.period.dates = '';\n _schedule.period.years = 0;\n _schedule.period.yearDate = 0;\n _schedule.period.yearMonth = 0;\n _schedule.period.weeks = 0;\n _schedule.period.once = '';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodDaily') })),\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n this.getPeriodSettingsDaily(),\n schedule.period.days ? this.getPeriodSettingsWeekdays() : null)),\n // ----- days of weeks ---\n /*\n !schedule.period.days && (\n
\n
\n {\n const schedule = JSON.parse(JSON.stringify(this.state.schedule));\n schedule.period.dows = schedule.period.dows ? '' : '[0,1,2,3,4,5,6]';\n this.onChange(schedule);\n }}/>}\n label={I18n.t('sch_periodWeekdays')} />\n
\n
\n {this.getPeriodSettingsWeekdays()}\n
\n
,\n */\n // ----- weeks ---\n react_1.default.createElement(\"div\", { key: \"weeks\", className: `${this.props.classes.rowDiv} ${this.props.classes.rowDows}` },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!schedule.period.weeks, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.weeks = schedule.period.weeks ? 0 : 1;\n _schedule.period.dows = schedule.period.dows || '[0]';\n _schedule.period.months = '';\n _schedule.period.dates = '';\n _schedule.period.years = 0;\n _schedule.period.yearDate = 0;\n _schedule.period.yearMonth = 0;\n _schedule.period.days = 0;\n _schedule.period.once = '';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodWeekly') })),\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv }, this.getPeriodSettingsWeekly()),\n react_1.default.createElement(\"div\", { className: `${this.props.classes.settingsDiv} ${this.props.classes.rowDowsDows}` }, this.state.schedule.period.weeks ? this.getPeriodSettingsWeekdays() : null))),\n // ----- months ---\n react_1.default.createElement(\"div\", { key: \"months\", className: `${this.props.classes.rowDiv} ${this.props.classes.rowMonths}` },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!schedule.period.months, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.months = 1;\n _schedule.period.dows = '';\n _schedule.period.dates = '';\n _schedule.period.years = 0;\n _schedule.period.yearDate = 0;\n _schedule.period.yearMonth = 0;\n _schedule.period.weeks = 0;\n _schedule.period.days = 0;\n _schedule.period.once = '';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodMonthly') })),\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n this.getPeriodSettingsMonthly(),\n schedule.period.months ? react_1.default.createElement(\"div\", null,\n react_1.default.createElement(\"div\", { className: `${this.props.classes.settingsDiv} ${this.props.classes.rowMonthsDates}` },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputRadio, checked: !!schedule.period.dates, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.months = _schedule.period.months || 1;\n const dates = [];\n for (let i = 1; i <= 31; i++) {\n dates.push(i);\n }\n _schedule.period.dates = _schedule.period.dates || JSON.stringify(dates);\n _schedule.period.dows = '';\n _schedule.period.years = 0;\n _schedule.period.yearDate = 0;\n _schedule.period.yearMonth = 0;\n _schedule.period.weeks = 0;\n _schedule.period.days = 0;\n _schedule.period.once = '';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodDates') })),\n react_1.default.createElement(\"div\", { className: `${this.props.classes.settingsDiv} ${this.props.classes.rowMonthsDates}` }, this.getPeriodSettingsDates())) : null)),\n // ----- years ---\n react_1.default.createElement(\"div\", { key: \"years\", className: `${this.props.classes.rowDiv} ${this.props.classes.rowYears}` },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!schedule.period.years, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.years = 1;\n _schedule.period.yearDate = 1;\n _schedule.period.yearMonth = 1;\n _schedule.period.dows = '';\n _schedule.period.months = 0;\n _schedule.period.dates = '';\n _schedule.period.weeks = 0;\n _schedule.period.days = 0;\n _schedule.period.once = '';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodYearly') })),\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv }, this.getPeriodSettingsYearly()),\n !!schedule.period.years && react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n react_1.default.createElement(\"span\", null, i18n_1.default.t('sch_on')),\n react_1.default.createElement(material_1.Input, { key: \"input\", value: this.state.schedule.period.yearDate, className: this.props.classes.inputEvery, type: \"number\", inputProps: { min: 1, max: 31 }, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.yearDate = parseInt(e.target.value, 10);\n if (_schedule.period.yearDate < 1)\n _schedule.period.yearDate = 31;\n if (_schedule.period.yearDate > 31)\n _schedule.period.yearDate = 1;\n this.onChange(_schedule);\n } }),\n react_1.default.createElement(material_1.Select, { variant: \"standard\", value: schedule.period.yearMonth, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.yearMonth = e.target.value;\n this.onChange(_schedule);\n } },\n react_1.default.createElement(material_1.MenuItem, { key: \"every\", value: 0 }, i18n_1.default.t('sch_yearEveryMonth')),\n MONTHS.map((month, i) => react_1.default.createElement(material_1.MenuItem, { key: month, value: i + 1 }, i18n_1.default.t(month))))))),\n ];\n }\n getPeriodSettingsMinutes() {\n return react_1.default.createElement(\"div\", { style: { display: 'inline-block' } },\n react_1.default.createElement(\"label\", null, i18n_1.default.t('sch_every')),\n react_1.default.createElement(material_1.Input, { value: this.state.schedule.time.interval, style: { verticalAlign: 'bottom' }, className: this.props.classes.inputEvery, type: \"number\", inputProps: { min: 1 }, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.interval = parseInt(e.target.value, 10);\n this.onChange(_schedule);\n } }),\n react_1.default.createElement(material_1.Select, { variant: \"standard\", value: this.state.schedule.time.mode, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.time.mode = e.target.value;\n this.onChange(_schedule);\n } },\n react_1.default.createElement(material_1.MenuItem, { value: PERIODS.minutes }, i18n_1.default.t('sch_periodMinutes')),\n react_1.default.createElement(material_1.MenuItem, { value: PERIODS.hours }, i18n_1.default.t('sch_periodHours'))));\n }\n getPeriodSettingsWeekdays() {\n // || this.state.schedule.period.dows === '[1, 2, 3, 4, 5]' || this.state.schedule.period.dows === '[0, 6]'\n const schedule = this.state.schedule;\n const isSpecific = schedule.period.dows && schedule.period.dows !== '[1, 2, 3, 4, 5]' && schedule.period.dows !== '[0, 6]';\n return [\n react_1.default.createElement(\"div\", { key: \"workdays\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.dows === '[1, 2, 3, 4, 5]', onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.dows = '[1, 2, 3, 4, 5]';\n if (_schedule.period.days) {\n _schedule.period.days = 1;\n }\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodWorkdays') })),\n react_1.default.createElement(\"div\", { key: \"weekend\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.dows === '[0, 6]', onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.dows = '[0, 6]';\n if (_schedule.period.days) {\n _schedule.period.days = 1;\n }\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodWeekend') })),\n react_1.default.createElement(\"div\", { key: \"specific\", style: { verticalAlign: 'top' } },\n react_1.default.createElement(material_1.FormControlLabel, { style: { verticalAlign: 'top' }, control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: !!isSpecific, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.dows = '[0, 1, 2, 3, 4, 5, 6]';\n if (_schedule.period.days) {\n _schedule.period.days = 1;\n }\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodWeekdays') }),\n isSpecific && (schedule.period.days === 1 || schedule.period.weeks) &&\n react_1.default.createElement(material_1.FormGroup, { row: true, className: this.props.classes.inputGroup, style: { width: 150 } }, [1, 2, 3, 4, 5, 6, 0].map(i => react_1.default.createElement(material_1.FormControlLabel, { key: `specific_${i}`, className: this.props.classes.inputGroupElement, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputSmallCheck, checked: schedule.period.dows.includes(i.toString()), onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n let daysOfWeek;\n try {\n daysOfWeek = JSON.parse(_schedule.period.dows);\n }\n catch (err) {\n daysOfWeek = [];\n }\n if (e.target.checked && !daysOfWeek.includes(i)) {\n daysOfWeek.push(i);\n }\n else if (!e.target.checked && daysOfWeek.includes(i)) {\n daysOfWeek.splice(daysOfWeek.indexOf(i), 1);\n }\n daysOfWeek.sort((a, b) => a - b);\n _schedule.period.dows = JSON.stringify(daysOfWeek);\n if (_schedule.period.days) {\n _schedule.period.days = 1;\n }\n this.onChange(_schedule);\n } }), label: i18n_1.default.t(WEEKDAYS[i]) })))),\n ];\n }\n getPeriodSettingsDaily() {\n if (!this.state.schedule.period.days) {\n return null;\n }\n const schedule = this.state.schedule;\n return [\n react_1.default.createElement(\"div\", { key: \"every_day\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.days === 1 && !schedule.period.dows, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.days = 1;\n _schedule.period.dows = '';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodEveryDay') })),\n react_1.default.createElement(\"div\", { key: \"everyN_day\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.days > 1, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.days = 2;\n _schedule.period.dows = '';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodEvery') }),\n schedule.period.days > 1 && [\n react_1.default.createElement(material_1.Input, { key: \"input\", value: this.state.schedule.period.days, className: this.props.classes.inputEvery, type: \"number\", inputProps: { min: 2 }, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.days = parseInt(e.target.value, 10);\n _schedule.period.dows = '';\n this.onChange(_schedule);\n } }),\n react_1.default.createElement(\"span\", { key: \"span\", style: { paddingRight: 10 } }, i18n_1.default.t('sch_periodDay')),\n ]),\n ];\n }\n getPeriodSettingsWeekly() {\n if (!this.state.schedule.period.weeks) {\n return null;\n }\n const schedule = this.state.schedule;\n return [\n react_1.default.createElement(\"div\", { key: \"radios\", style: { display: 'inline-block', verticalAlign: 'top' } },\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.weeks === 1, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.weeks = 1;\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodEveryWeek') })),\n react_1.default.createElement(\"div\", null,\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.weeks > 1, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.weeks = 2;\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodEvery') }),\n schedule.period.weeks > 1 && [\n react_1.default.createElement(material_1.Input, { key: \"input\", value: this.state.schedule.period.weeks, className: this.props.classes.inputEvery, type: \"number\", inputProps: { min: 2 }, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.weeks = parseInt(e.target.value, 10);\n this.onChange(_schedule);\n } }),\n react_1.default.createElement(\"span\", { key: \"text\" }, i18n_1.default.t('sch_periodWeek')),\n ])),\n ];\n }\n getPeriodSettingsDates() {\n if (!this.state.schedule.period.dates) {\n return null;\n }\n const schedule = this.state.schedule;\n const dates = [];\n for (let i = 1; i <= 31; i++) {\n dates.push(i);\n }\n const parsedDates = JSON.parse(schedule.period.dates);\n return react_1.default.createElement(material_1.FormGroup, { row: true, className: this.props.classes.inputGroup, style: { maxWidth: 620 } },\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.inputDateDay, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputDateDayCheck, checked: parsedDates.length === 31, onChange: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n const _dates = [];\n for (let i = 1; i <= 31; i++) {\n _dates.push(i);\n }\n _schedule.period.dates = JSON.stringify(_dates);\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_all') }),\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.inputDateDay, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputDateDayCheck, checked: !parsedDates.length, onChange: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.dates = '[]';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_no_one') }),\n parsedDates.length !== 31 && !!parsedDates.length &&\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.inputDateDay, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputDateDayCheck, checked: false, onChange: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n const result = [];\n const _parsedDates = JSON.parse(_schedule.period.dates);\n for (let i = 1; i <= 31; i++) {\n if (!_parsedDates.includes(i)) {\n result.push(i);\n }\n }\n result.sort((a, b) => a - b);\n _schedule.period.dates = JSON.stringify(result);\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_invert') }),\n react_1.default.createElement(\"div\", null),\n dates.map(i => react_1.default.createElement(material_1.FormControlLabel, { key: `date_${i}`, className: this.props.classes.inputDateDay, style: !i ? {\n opacity: 0,\n cursor: 'default',\n userSelect: 'none',\n pointerEvents: 'none',\n } : {}, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputDateDayCheck, checked: JSON.parse(schedule.period.dates).includes(i), onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n let _dates;\n try {\n _dates = JSON.parse(_schedule.period.dates);\n }\n catch (err) {\n _dates = [];\n }\n if (e.target.checked && !_dates.includes(i)) {\n _dates.push(i);\n }\n else if (!e.target.checked && _dates.includes(i)) {\n _dates.splice(_dates.indexOf(i), 1);\n }\n _dates.sort((a, b) => a - b);\n _schedule.period.dates = JSON.stringify(_dates);\n this.onChange(_schedule);\n } }), label: i < 10 ? [\n react_1.default.createElement(\"span\", { key: \"0\", style: { opacity: 0 } }, \"0\"),\n react_1.default.createElement(\"span\", { key: \"num\" }, i),\n ] : i })));\n }\n getPeriodSettingsMonthly() {\n if (!this.state.schedule.period.months) {\n return null;\n }\n const schedule = this.state.schedule;\n const parsedMonths = typeof schedule.period.months === 'string' ? JSON.parse(schedule.period.months) : [];\n return [\n react_1.default.createElement(\"div\", { key: \"every\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: typeof schedule.period.months === 'number' && schedule.period.months === 1, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.months = 1;\n this.onChange(schedule);\n } }), label: i18n_1.default.t('sch_periodEveryMonth') })),\n react_1.default.createElement(\"div\", { key: \"everyN\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: typeof schedule.period.months === 'number' && schedule.period.months > 1, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.months = 2;\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodEvery') }),\n typeof schedule.period.months === 'number' && schedule.period.months > 1 && [\n react_1.default.createElement(material_1.Input, { key: \"input\", value: schedule.period.months, className: this.props.classes.inputEvery, type: \"number\", inputProps: { min: 2 }, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.months = parseInt(e.target.value, 10);\n if (_schedule.period.months < 1)\n _schedule.period.months = 1;\n this.onChange(_schedule);\n } }),\n react_1.default.createElement(\"span\", { key: \"text\" }, i18n_1.default.t('sch_periodMonth')),\n ]),\n react_1.default.createElement(\"div\", { key: \"specific\", style: { verticalAlign: 'top' } },\n react_1.default.createElement(material_1.FormControlLabel, { style: { verticalAlign: 'top' }, control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: typeof schedule.period.months === 'string', onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.months = '[1,2,3,4,5,6,7,8,9,10,11,12]';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodSpecificMonths') }),\n typeof schedule.period.months === 'string' &&\n react_1.default.createElement(material_1.FormGroup, { row: true, className: this.props.classes.inputGroup },\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.inputDateDay, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputDateDayCheck, checked: parsedMonths.length === 12, onChange: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n const months = [];\n for (let i = 1; i <= 12; i++) {\n months.push(i);\n }\n _schedule.period.months = JSON.stringify(months);\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_all') }),\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.inputDateDay, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputDateDayCheck, checked: !parsedMonths.length, onChange: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.months = '[]';\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_no_one') }),\n parsedMonths.length !== 12 && !!parsedMonths.length &&\n react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.inputDateDay, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputDateDayCheck, checked: false, onChange: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n const result = [];\n const _parsedMonths = JSON.parse(_schedule.period.months);\n for (let i = 1; i <= 12; i++) {\n if (!_parsedMonths.includes(i)) {\n result.push(i);\n }\n }\n result.sort((a, b) => a - b);\n _schedule.period.months = JSON.stringify(result);\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_invert') }),\n react_1.default.createElement(\"div\", null),\n MONTHS.map((month, i) => react_1.default.createElement(material_1.FormControlLabel, { className: this.props.classes.inputGroupElement, control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputSmallCheck, checked: typeof schedule.period.months === 'string' ? JSON.parse(schedule.period.months).includes(i + 1) : schedule.period.months === i, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n let months;\n try {\n months = JSON.parse(_schedule.period.months);\n }\n catch (err) {\n months = [];\n }\n if (e.target.checked && !months.includes(i + 1)) {\n months.push(i + 1);\n }\n else if (!e.target.checked && months.includes(i + 1)) {\n months.splice(months.indexOf(i + 1), 1);\n }\n months.sort((a, b) => a - b);\n _schedule.period.months = JSON.stringify(months);\n this.onChange(_schedule);\n } }), label: i18n_1.default.t(month) })))),\n ];\n }\n getPeriodSettingsYearly() {\n if (!this.state.schedule.period.years) {\n return null;\n }\n const schedule = this.state.schedule;\n return [\n react_1.default.createElement(\"div\", { key: \"year\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.years === 1, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.years = 1;\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodEveryYear') })),\n react_1.default.createElement(\"div\", { key: \"every\" },\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Radio, { className: this.props.classes.inputRadio, checked: schedule.period.years > 1, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.years = 2;\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_periodEvery') }),\n schedule.period.years > 1 && [\n react_1.default.createElement(material_1.Input, { key: \"input\", value: this.state.schedule.period.years, className: this.props.classes.inputEvery, type: \"number\", inputProps: { min: 2 }, onChange: e => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.period.years = parseInt(e.target.value, 10);\n if (_schedule.period.years < 1)\n _schedule.period.years = 1;\n this.onChange(_schedule);\n } }),\n react_1.default.createElement(\"span\", { key: \"text\" }, i18n_1.default.t('sch_periodYear')),\n ]),\n ];\n }\n static now2string(isEnd) {\n const d = new Date();\n d.setHours(0);\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n if (isEnd) {\n d.setDate(d.getDate() + 2);\n d.setMilliseconds(d.getMilliseconds() - 1);\n }\n return `${padding(d.getDate())}.${padding(d.getMonth() + 1)}.${padding(d.getFullYear())}`;\n }\n static string2date(str) {\n let parts = str.split('.'); // 31.12.2019\n if (parts.length === 1) {\n parts = str.split('-'); // 2018-12-31\n return new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10));\n }\n return new Date(parseInt(parts[2], 10), parseInt(parts[1], 10) - 1, parseInt(parts[0], 10));\n }\n getValidSettings() {\n const schedule = this.state.schedule;\n // ----- from ---\n return react_1.default.createElement(\"div\", { className: this.props.classes.rowDiv },\n react_1.default.createElement(\"div\", { className: this.props.classes.modeDiv, style: { verticalAlign: 'middle' } },\n react_1.default.createElement(\"span\", { style: { fontWeight: 'bold', paddingRight: 10 } }, i18n_1.default.t('sch_valid')),\n react_1.default.createElement(\"span\", null, i18n_1.default.t('sch_validFrom'))),\n react_1.default.createElement(\"div\", { className: this.props.classes.settingsDiv },\n react_1.default.createElement(material_1.TextField, { variant: \"standard\", className: this.props.classes.inputDate, style: { marginRight: 10 }, key: \"exactTimeFrom\", inputRef: this.refFrom, defaultValue: string2USdate(schedule.valid.from), type: \"date\", \n // inputComponent={TextDate}\n onChange: e => {\n this.timerFrom && clearTimeout(this.timerFrom);\n if (this.refFrom.current) {\n this.refFrom.current.style.background = '#ff000030';\n }\n this.timerFrom = setTimeout(value => {\n this.timerFrom = null;\n if (this.refFrom.current) {\n this.refFrom.current.style.background = '';\n }\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n const date = Schedule.string2date(value);\n if (date.toString() !== 'Invalid Date') {\n _schedule.valid.from = `${padding(date.getDate())}.${padding(date.getMonth() + 1)}.${date.getFullYear()}`;\n this.onChange(_schedule);\n }\n }, 1500, e.target.value);\n }, InputLabelProps: { shrink: true }, margin: \"normal\" }),\n react_1.default.createElement(material_1.FormControlLabel, { control: react_1.default.createElement(material_1.Checkbox, { className: this.props.classes.inputRadio, checked: !!schedule.valid.to, onClick: () => {\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n _schedule.valid.to = _schedule.valid.to ? '' : Schedule.now2string(true);\n this.onChange(_schedule);\n } }), label: i18n_1.default.t('sch_validTo') }),\n !!schedule.valid.to && react_1.default.createElement(material_1.TextField, { variant: \"standard\", inputRef: this.refTo, className: this.props.classes.inputDate, style: { marginRight: 10 }, key: \"exactTimeFrom\", type: \"date\", defaultValue: string2USdate(schedule.valid.to), \n // inputComponent={TextDate}\n onChange: e => {\n this.timerTo && clearTimeout(this.timerTo);\n if (this.refTo.current) {\n this.refTo.current.style.background = '#ff000030';\n }\n this.timerTo = setTimeout(value => {\n this.timerTo = null;\n if (this.refTo.current) {\n this.refTo.current.style.background = '';\n }\n const _schedule = JSON.parse(JSON.stringify(this.state.schedule));\n const date = Schedule.string2date(value);\n if (date.toString() !== 'Invalid Date') {\n _schedule.valid.to = `${padding(date.getDate())}.${padding(date.getMonth() + 1)}.${date.getFullYear()}`;\n this.onChange(_schedule);\n }\n }, 1500, e.target.value);\n }, InputLabelProps: { shrink: true }, margin: \"normal\" })));\n }\n render() {\n return react_1.default.createElement(\"div\", { style: { height: 'calc(100% - 48px)', width: '100%', overflow: 'hidden' } },\n react_1.default.createElement(\"div\", null, this.state.desc),\n react_1.default.createElement(\"div\", { className: this.props.classes.scrollWindow },\n react_1.default.createElement(\"h5\", null, i18n_1.default.t('sch_time')),\n this.getTimePeriodElements(),\n this.getTimeExactElements(),\n this.getDivider(),\n react_1.default.createElement(\"h5\", null, i18n_1.default.t('sch_period')),\n this.getPeriodModes(),\n !this.state.schedule.period.once && this.getDivider(),\n !this.state.schedule.period.once && this.getValidSettings()));\n }\n}\nexports.default = (0, styles_1.withStyles)(styles)(Schedule);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Given a cronSpec, return the human-readable string.\n */\nfunction cronToText(cronSpec, withSeconds, locale) {\n // Constant array to convert valid names to values\n const NAMES = {\n JAN: 1,\n FEB: 2,\n MAR: 3,\n APR: 4,\n MAY: 5,\n JUN: 6,\n JUL: 7,\n AUG: 8,\n SEP: 9,\n OCT: 10,\n NOV: 11,\n DEC: 12,\n SUN: 1,\n MON: 2,\n TUE: 3,\n WED: 4,\n THU: 5,\n FRI: 6,\n SAT: 7,\n };\n // Parsable replacements for common expressions\n const REPLACEMENTS = {\n '* * * * * *': '0/1 * * * * *',\n '@YEARLY': '0 0 1 1 *',\n '@ANNUALLY': '0 0 1 1 *',\n '@MONTHLY': '0 0 1 * *',\n '@WEEKLY': '0 0 * * 0',\n '@DAILY': '0 0 * * *',\n '@HOURLY': '0 * * * *',\n };\n // Contains the index, min, and max for each of the constraints\n const FIELDS = {\n s: [0, 0, 59], // seconds\n m: [1, 0, 59], // minutes\n h: [2, 0, 23], // hours\n D: [3, 1, 31], // day of month\n M: [4, 1, 12], // month\n Y: [6, 1970, 2099], // year\n d: [5, 1, 7, 1], // day of the week\n };\n /**\n * Returns the value + offset if value is a number, otherwise it\n * attempts to look up the value in the NAMES table and returns\n * that result instead.\n */\n function getValue(\n /** the value that should be parsed */\n value, \n /** Any offset that must be added to the value */\n offset = 0, max = 9999) {\n return Number.isNaN(value) ? NAMES[value] || null : Math.min(+value + offset, max);\n }\n /**\n * Returns a deep clone of a schedule skipping any day of week\n * constraints.\n */\n function cloneSchedule(\n /** The schedule that will be cloned */\n sched) {\n const clone = {};\n let field;\n for (field in sched) {\n if (field !== 'dc' && field !== 'd') {\n clone[field] = sched[field].slice(0);\n }\n }\n return clone;\n }\n /**\n * Adds values to the specified constraint in the current schedule.\n */\n function add(\n /** The schedule to add the constraint to */\n sched, \n /** The name of the constraint to add */\n name, \n /** The minimum value for this constraint */\n min, \n /** The maximum value for this constraint */\n max, \n /** The increment value for this constraint */\n inc = 0) {\n let i = min;\n if (!sched[name]) {\n sched[name] = [];\n }\n while (i <= max) {\n if (sched[name].indexOf(i) < 0) {\n sched[name].push(i);\n }\n i += inc || 1;\n }\n sched[name].sort((a, b) => a - b);\n }\n /**\n * Adds a hash item (of the form x#y or xL) to the schedule.\n */\n function addHash(\n /** The current set of schedules */\n schedules, \n /** The current schedule to add to */\n curSched, \n /** The value to add (x of x#y or xL) */\n value, \n /** The hash value to add (y of x#y) */\n hash) {\n // if there are any existing days of week constraints that\n // aren't equal to the one we're adding, create a new\n // composite schedule\n if ((curSched.d && !curSched.dc) || (curSched.dc && !curSched.dc.includes(hash))) {\n schedules.push(cloneSchedule(curSched));\n curSched = schedules[schedules.length - 1];\n }\n add(curSched, 'd', value, value);\n add(curSched, 'dc', hash, hash);\n }\n function addWeekday(\n /** The existing set of schedules */\n s, \n /** The current schedule to add to */\n curSched, value) {\n const except1 = {};\n const except2 = {};\n if (value === 1) {\n // cron doesn't pass month boundaries, so if 1st is a\n // weekend then we need to use 2nd or 3rd instead\n add(curSched, 'D', 1, 3);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', 2, 2);\n add(except1, 'd', NAMES.TUE, NAMES.FRI);\n add(except2, 'D', 3, 3);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n }\n else {\n // normally you want the closest day, so if v is a\n // Saturday, use the previous Friday. If it's a\n // sunday, use the following Monday.\n add(curSched, 'D', value - 1, value + 1);\n add(curSched, 'd', NAMES.MON, NAMES.FRI);\n add(except1, 'D', value - 1, value - 1);\n add(except1, 'd', NAMES.MON, NAMES.THU);\n add(except2, 'D', value + 1, value + 1);\n add(except2, 'd', NAMES.TUE, NAMES.FRI);\n }\n s.exceptions.push(except1);\n s.exceptions.push(except2);\n }\n /**\n * Adds a range item (of the form x-y/z) to the schedule.\n */\n function addRange(\n /** The cron expression item to add */\n item, \n /** The current schedule to add to */\n curSched, \n /** The name to use for this constraint */\n name, \n /** The min value for the constraint */\n min, \n /** The max value for the constraint */\n max, \n /** The offset to apply to the cron value */\n offset) {\n // parse range/x\n const incSplit = item.split('/');\n const inc = +incSplit[1];\n const range = incSplit[0];\n // parse x-y or * or 0\n if (range !== '*' && range !== '0') {\n const rangeSplit = range.split('-');\n min = getValue(rangeSplit[0], offset, max) || offset;\n // fix for issue #13, range may be a single digit\n max = getValue(rangeSplit[1], offset, max) || max;\n }\n add(curSched, name, min, max, inc);\n }\n /**\n * Parses a particular item within a cron expression.\n */\n function parse(\n /** The cron expression item to parse */\n item, \n /** The existing set of schedules */\n s, \n /** The name to use for this constraint */\n name, \n /** The min value for the constraint */\n min, \n /** The max value for the constraint */\n max, \n /** The offset to apply to the cron value */\n offset) {\n let value;\n let split;\n const schedules = s.schedules;\n const curSched = schedules[schedules.length - 1];\n // L just means min - 1 (this also makes it work for any field)\n if (item === 'L') {\n item = (min - 1).toString(10);\n }\n // parse x\n if ((value = getValue(item, offset, max)) !== null) {\n add(curSched, name, value, value);\n }\n else if ((value = getValue(item.replace('W', ''), offset, max)) !== null) {\n // parse xW\n addWeekday(s, curSched, value);\n }\n else if ((value = getValue(item.replace('L', ''), offset, max)) !== null) {\n // parse xL\n addHash(schedules, curSched, value, min - 1);\n }\n else if ((split = item.split('#')).length === 2) {\n // parse x#y\n value = getValue(split[0], offset, max) || offset;\n addHash(schedules, curSched, value, getValue(split[1]) || 0);\n }\n else {\n // parse x-y or x-y/z or */z or 0/z\n addRange(item, curSched, name, min, max, offset);\n }\n }\n /**\n * Returns true if the item is either of the form x#y or xL.\n */\n function isHash(\n /** The expression item to check */\n item) {\n return item.includes('#') || item.indexOf('L') > 0;\n }\n function itemSorter(a, b) {\n return isHash(a) && !isHash(b) ? 1 : (a > b ? 1 : (a < b ? -1 : 0));\n }\n /**\n * Parses each of the fields in a cron expression. The expression must\n * include the second's field, the year field is optional.\n *\n */\n function parseExpr(\n /** The cron expression to parse */\n expr) {\n const schedule = { schedules: [{}], exceptions: [] };\n const components = expr.replace(/(\\s)+/g, ' ').split(' ');\n let field;\n let f;\n let component;\n let items;\n for (field in FIELDS) {\n f = FIELDS[field];\n component = components[f[0]];\n if (component && component !== '*' && component !== '?') {\n // need to sort so that any #'s come last, otherwise\n // schedule clones to handle # won't contain all of the\n // other constraints\n items = component.split(',').sort(itemSorter);\n let i;\n const length = items.length;\n for (i = 0; i < length; i++) {\n parse(items[i], schedule, field, f[1], f[2], f[3]);\n }\n }\n }\n return schedule;\n }\n /**\n * Make cron expression parsable.\n */\n function prepareExpr(\n /** The cron expression to prepare */\n expr) {\n const prepared = expr.toUpperCase();\n return REPLACEMENTS[prepared] || prepared;\n }\n function parseCron(expr, hasSeconds) {\n const e = prepareExpr(expr);\n return parseExpr(hasSeconds ? e : `0 ${e}`);\n }\n const schedule = parseCron(cronSpec, withSeconds);\n function absFloor(number) {\n if (number < 0) {\n return Math.ceil(number);\n }\n return Math.floor(number);\n }\n function toInt(argumentForCoercion) {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n }\n function ordinal(number) {\n const b = number % 10;\n const output = (toInt(number % 100 / 10) === 1) ? locale.ORDINALS.th :\n b === 1 ? locale.ORDINALS.st :\n b === 2 ? locale.ORDINALS.nd :\n b === 3 ? locale.ORDINALS.rd : locale.ORDINALS.th;\n return number + output;\n }\n /**\n * For an array of numbers, e.g., a list of hours in a schedule,\n * return a string listing out all of the values (complete with\n * \"and\" plus ordinal text on the last item).\n */\n function numberList(numbers) {\n if (numbers.length < 2) {\n return ordinal(numbers[0]);\n }\n const lastVal = numbers.pop() || 0;\n return `${numbers.join(', ')} ${locale.and} ${ordinal(lastVal)}`;\n }\n /**\n * Parse a number into day of week, or a month name;\n * used in dateList below.\n * @param {Number|String} value\n * @param {String} type\n * @returns {String}\n */\n function numberToDateName(value, type) {\n if (type === 'dow') {\n return locale.DOW[value - 1];\n }\n if (type === 'mon') {\n return locale.MONTH[value - 1];\n }\n return value;\n }\n /**\n * From an array of numbers corresponding to dates (given in type: either\n * days of the week, or months), return a string listing all the values.\n * @param {Number[]} numbers\n * @param {String} type\n * @returns {String}\n */\n function dateList(numbers, type) {\n if (numbers.length < 2) {\n return numberToDateName(numbers[0], type);\n }\n const lastVal = numbers.pop() || 0;\n let outputText = '';\n for (let i = 0, value; (value = numbers[i]); i++) {\n if (outputText.length > 0) {\n outputText += ', ';\n }\n outputText += numberToDateName(value, type);\n }\n return `${outputText} ${locale.and} ${numberToDateName(lastVal, type)}`;\n }\n /**\n * Pad to the equivalent of sprintf('%02d').\n * @param {Number} x\n * @returns {string}\n */\n function zeroPad(x) {\n return x < 10 ? `0${x}` : x.toString();\n }\n //----------------\n /**\n * Given a schedule, generate a friendly sentence description.\n */\n function scheduleToSentence(_schedule, _withSeconds) {\n let outputText = `${locale.Every} `;\n if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2 && _withSeconds && _schedule.s && _schedule.s.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM:SS format\n const hm = [];\n for (let i = 0; i < _schedule.h.length; i++) {\n for (let j = 0; j < _schedule.m.length; j++) {\n for (let k = 0; k < _schedule.s.length; k++) {\n hm.push(`${zeroPad(_schedule.h[i])}:${zeroPad(_schedule.m[j])}:${zeroPad(_schedule.s[k])}`);\n }\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n }\n else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n if (!_schedule.d && !_schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n }\n else if (_schedule.h && _schedule.m && _schedule.h.length <= 2 && _schedule.m.length <= 2) {\n // If there are only one or two specified values for\n // hour or minute, print them in HH:MM format\n const hm = [];\n for (let i = 0; i < _schedule.h.length; i++) {\n for (let j = 0; j < _schedule.m.length; j++) {\n hm.push(`${zeroPad(_schedule.h[i])}:${zeroPad(_schedule.m[j])}`);\n }\n }\n if (hm.length < 2) {\n outputText = `${locale.At} ${hm[0]}`;\n }\n else {\n const lastVal = hm.pop();\n outputText = `${locale.At} ${hm.join(', ')} ${locale.and} ${lastVal}`;\n }\n if (!_schedule.d && !_schedule.D) {\n outputText += ` ${locale['every day']} `;\n }\n }\n else if (_schedule.h) { // runs only at specific hours\n // Otherwise, list out every specified hour/minute value.\n if (_schedule.m) { // and only at specific minutes\n if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n }\n else {\n outputText += `${numberList(_schedule.m)} ${locale['minute past the']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n }\n else if (_withSeconds) {\n // specific hours, but every minute\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n }\n else {\n outputText += `${locale['minute of']} ${numberList(_schedule.h)} ${locale.hour}`;\n }\n }\n else if (_schedule.m) { // every hour, but specific minutes\n if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += `${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute every hour']}`;\n }\n else {\n outputText += `${numberList(_schedule.s)} ${locale['second of every']} ${numberList(_schedule.m)} ${locale['minute every hour']}`;\n }\n }\n else {\n outputText += `${numberList(_schedule.m)} ${locale['minute every hour']}`;\n }\n }\n else if (_withSeconds) {\n if (!_schedule.s || _schedule.s.length === 60) {\n outputText += locale.second;\n }\n else {\n outputText += `${numberList(_schedule.s)} ${locale.second}`;\n }\n }\n else { // cronSpec has \"*\" for both hour and minute\n outputText += locale.minute;\n }\n if (_schedule.D) { // runs only on specific day(s) of month\n outputText += (locale['on the'] ? ` ${locale['on the']} ` : ' ') + numberList(_schedule.D);\n if (!_schedule.M) {\n outputText += ` ${locale['of every month']}`;\n }\n }\n if (_schedule.d) { // runs only on specific day(s) of week\n if (_schedule.D) {\n // if both day fields are specified, cron uses both; superuser.com/a/348372\n outputText += ` ${locale['and every']} `;\n }\n else {\n outputText += ` ${locale.on} `;\n }\n outputText += dateList(_schedule.d, 'dow');\n }\n if (_schedule.M) {\n // runs only in specific months; put this output last\n outputText += ` ${locale.in} ${dateList(_schedule.M, 'mon')}`;\n }\n return outputText;\n }\n return scheduleToSentence(schedule.schedules[0], withSeconds);\n}\nexports.default = cronToText;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cron2text_1 = __importDefault(require(\"./cron2text\"));\nconst jquery_cron_locale_1 = __importDefault(require(\"./jquery.cron.locale\"));\nfunction correctCasus(text /* , seconds */) {\n text = text.replace('Каждую(ый) минуту', 'Каждую минуту');\n text = text.replace('Каждую(ый) минут(у)', 'Каждую минуту');\n text = text.replace('Каждую(ый) час', 'Каждый час');\n text = text.replace('Каждую(ый) секунду', 'Каждую секунду');\n text = text.replace(/ (\\d{1,2}) числа/, ' $1го числа');\n text = text.replace(/ (\\d{1,2}) в Январе/, ' $1го числа в Январе');\n text = text.replace(/ (\\d{1,2}) в Феврале/, ' $1го числа в Феврале');\n text = text.replace(/ (\\d{1,2}) в Марте/, ' $1го числа в Марте');\n text = text.replace(/ (\\d{1,2}) в Апреле/, ' $1го числа в Апреле');\n text = text.replace(/ (\\d{1,2}) в Майе/, ' $1го числа в Майе');\n text = text.replace(/ (\\d{1,2}) в Июне/, ' $1го числа в Июне');\n text = text.replace(/ (\\d{1,2}) в Июле/, ' $1го числа в Июле');\n text = text.replace(/ (\\d{1,2}) в Августе/, ' $1го числа в Августе');\n text = text.replace(/ (\\d{1,2}) в Сентябре/, ' $1го числа в Сентябре');\n text = text.replace(/ (\\d{1,2}) в Октябре/, ' $1го числа в Октябре');\n text = text.replace(/ (\\d{1,2}) в Ноябре/, ' $1го числа в Ноябре');\n text = text.replace(/ (\\d{1,2}) в Декабре/, ' $1го числа в Декабре');\n text = text.replace('Каждую(ый) 0 минуту', 'Каждые ноль минут');\n text = text.replace(/Каждую\\(ый\\) ([\\d\\sи,]+) минуту/, 'Каждую $1 минуту');\n text = text.replace(/каждой\\(го\\) ([\\d\\sи,]+) минуту/, 'каждой $1 минуты');\n text = text.replace('каждой(го) минут(у)', 'каждой минуты');\n text = text.replace(' 0 часа(ов)', ' 0 часов');\n text = text.replace(' 1 часа(ов)', ' 1 час');\n text = text.replace(' 2 часа(ов)', ' 2 часа');\n text = text.replace(' 3 часа(ов)', ' 3 часа');\n text = text.replace(' 4 часа(ов)', ' 4 часа');\n text = text.replace(/ (\\d{1,2}) часа\\(ов\\)/, ' $1 часов');\n text = text.replace('Jede(r) Sekunde', 'Jede Sekunde');\n text = text.replace(/Jede\\(r\\) ([\\d\\sund,]+) Sekunde/, 'Jede $1 Sekunde');\n text = text.replace('Jede(r) Minute', 'Jede Minute');\n text = text.replace('Jede Minuten', 'Jede Minute');\n text = text.replace('Jede(r) Stunde', 'Jede Stunde');\n text = text.replace(/Jede\\(r\\) ([\\d\\sund,]+) Minute/, 'Jede $1 Minute');\n text = text.replace('Jede Sekunde in Minuten', 'Jede Sekunde in jeder Minute');\n return text;\n}\nfunction convertCronToText(cron, lang) {\n const withSeconds = cron.split(' ').length === 6;\n const locale = (lang && jquery_cron_locale_1.default[lang]) || jquery_cron_locale_1.default.en;\n const text = (0, cron2text_1.default)(cron, withSeconds, locale);\n return correctCasus(text /*, withSeconds*/);\n}\nexports.default = convertCronToText;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst JQUERY_CRON_LOCALE = {\n en: {\n ORDINALS: {\n th: 'th',\n st: 'st',\n nd: 'nd',\n rd: 'rd',\n },\n MONTH: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n DOW: [\n 'Sun',\n 'Mon',\n 'Tue',\n 'Wed',\n 'Thu',\n 'Fri',\n 'Sat',\n ],\n Every: 'Every', // start of expression\n and: 'and', // 1, 2, 3 and 15th\n 'every day': 'every day',\n 'minute past the': 'minute past the',\n hour: 'hour',\n minute: 'minute',\n 'minute of': 'minute of',\n second: 'second',\n 'second in minute': 'second in minute',\n 'second of every': 'second of every',\n 'minute every hour': 'minute every hour',\n 'on the': 'on the',\n 'of every month': 'of every month',\n 'and every': 'and every',\n At: 'At',\n on: 'on', // on sun, mon\n in: 'in', // in jan, apr\n },\n de: {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n 'Januar',\n 'Februar',\n 'März',\n 'April',\n 'Mai',\n 'Juni',\n 'Juli',\n 'August',\n 'September',\n 'Oktober',\n 'November',\n 'Dezember',\n ],\n DOW: [\n 'Sonntag',\n 'Montag',\n 'Dienstag',\n 'Mittwoch',\n 'Donnerstag',\n 'Freitag',\n 'Samstag',\n ],\n Every: 'Jede(r)', // start of expression\n and: 'und', // 1, 2, 3 and 15th\n 'every day': 'jeden Tag',\n 'minute past the': 'Minuten nach',\n hour: 'Stunde',\n minute: 'Minute',\n 'minute of': 'Minuten von',\n second: 'Sekunde',\n 'second in minute': 'Sekunde in der Minute',\n 'second of every': 'Sekunde in',\n 'minute every hour': 'Minute jede Stunde',\n 'on the': 'am',\n 'of every month': 'im jeden Monat',\n 'and every': 'und am jeden',\n At: 'Um',\n on: 'am', // on sun, mon\n in: 'im', // in jan, apr\n },\n ru: {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n 'Январе',\n 'Феврале',\n 'Марте',\n 'Апреле',\n 'Майе',\n 'Июне',\n 'Июле',\n 'Августе',\n 'Сентябре',\n 'Октябре',\n 'Ноябре',\n 'Декабре',\n ],\n DOW: [\n 'воскресение',\n 'понедельник',\n 'вторник',\n 'среду',\n 'четверг',\n 'пятницу',\n 'субботу',\n ],\n Every: 'Каждую(ый)', // start of expression\n and: 'и', // 1, 2, 3 and 15th\n 'every day': 'каждый день',\n 'minute past the': 'минуту в',\n hour: 'часа(ов)',\n minute: 'минуту',\n 'minute of': 'минут(у) в',\n second: 'секунду',\n 'second in minute': 'секунду в минуте',\n 'second of every': 'секунду каждой(го)',\n 'minute every hour': 'минуту каждый час',\n 'on the': '',\n 'of every month': 'числа каждого месяца',\n 'and every': 'и каждый',\n At: 'В',\n on: 'в', // on sun, mon\n in: 'в', // in jan, apr\n },\n fr: {\n ORDINALS: {\n th: 'th',\n st: 'st',\n nd: 'nd',\n rd: 'rd',\n },\n MONTH: [\n 'Fév',\n 'Mar',\n 'Avr',\n 'Mai',\n 'Jun',\n 'Juil',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Déc',\n ],\n DOW: [\n 'Dim',\n 'Lun',\n 'Mar',\n 'Mer',\n 'Jeu',\n 'Ven',\n 'Sam',\n ],\n Every: 'Chaque',\n and: 'et',\n 'every day': 'tous les jours',\n 'minute past the': 'minute après le',\n hour: 'heure',\n minute: 'minute',\n 'minute of': 'minute de',\n second: 'seconde',\n 'second in minute': 'seconde en minute',\n 'second of every': 'deuxième de tous',\n 'minute every hour': 'minute toutes les heures',\n 'on the': 'sur le',\n 'of every month': 'de chaque mois',\n 'and every': 'et tous',\n At: 'À',\n on: 'sur',\n in: 'dans',\n },\n it: {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'Pot',\n 'Giu',\n 'Lug',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dic',\n ],\n DOW: [\n 'Dom',\n 'Mon',\n 'Mar',\n 'Mer',\n 'Gio',\n 'Ve',\n 'Sat',\n ],\n Every: 'Ogni',\n and: 'e',\n 'every day': 'ogni giorno',\n 'minute past the': 'minuto dopo',\n hour: 'ora',\n minute: 'Minuto',\n 'minute of': 'minuto di',\n second: 'secondo',\n 'second in minute': 'secondo in minuto',\n 'second of every': 'secondo di ogni',\n 'minute every hour': 'minuto ogni ora',\n 'on the': 'sul',\n 'of every month': 'di ogni mese',\n 'and every': 'e ogni',\n At: 'A',\n on: 'sopra',\n in: 'in',\n },\n pt: {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Abr',\n 'Pod',\n 'Jun',\n 'Jul',\n 'Ago',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ],\n DOW: [\n 'Dom',\n 'Seg',\n 'Ter',\n 'Qua',\n 'Qui',\n 'Sex',\n 'Sen',\n ],\n Every: 'Cada',\n and: 'e',\n 'every day': 'todo dia',\n 'minute past the': 'minuto após o',\n hour: 'hora',\n minute: 'minuto',\n 'minute of': 'minuto de',\n second: 'segundo',\n 'second in minute': 'segundo em minuto',\n 'second of every': 'segundo de cada',\n 'minute every hour': 'minuto a cada hora',\n 'on the': 'no',\n 'of every month': 'de todos os meses',\n 'and every': 'e todos',\n At: 'At',\n on: 'em',\n in: 'dentro',\n },\n pl: {\n ORDINALS: {\n th: 'th',\n st: 'st',\n nd: 'nd',\n rd: 'rd',\n },\n MONTH: [\n 'Sty', // or 'Styczeń'\n 'Lut', // or 'Luty'\n 'Mar', // or 'Marzec'\n 'Kwi', // or 'Kwiecień'\n 'Maj', // or 'Maj'\n 'Cze', // or 'Czerwiec'\n 'Lip', // or 'Lipiec'\n 'Sie', // or 'Sierpień'\n 'Wrz', // or 'Wrzesień'\n 'Paź', // or 'Październik'\n 'Lis', // or 'Listopad'\n 'Gru', // or 'Grudzień'\n ],\n DOW: [\n 'Nie', // or 'Niedziela'\n 'Pon', // or 'Poniedziałek'\n 'Wto', // or 'Wtorek'\n 'Śro', // or 'Środa'\n 'Czw', // or 'Czwartek'\n 'Pią', // or 'Piątek'\n 'Sob', // or 'Sobota\n ],\n Every: 'Każde(go)', // start of expression\n and: 'i', // 1, 2, 3 and 15th\n 'every day': 'codziennie',\n 'minute past the': 'minut po', // minute past the hour?\n hour: 'godzina',\n minute: 'minut(a)',\n 'minute of': 'minut po',\n second: 'sekunda',\n 'second in minute': 'sekund na minutę',\n 'second of every': 'sekund co',\n 'minute every hour': 'minut co godzinę',\n 'on the': 'w',\n 'of every month': 'każdego miesiąca',\n 'and every': 'i każdego',\n At: 'O',\n on: 'w', // on sun, mon\n in: 'w', // in jan, apr\n },\n es: {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n 'Ene',\n 'Feb',\n 'Mar',\n 'Abr',\n 'Mayo',\n 'Jun',\n 'Jul',\n 'Ago',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dic',\n ],\n DOW: [\n 'Sol',\n 'Lun',\n 'Mar',\n 'Mie',\n 'Jue',\n 'Vie',\n 'Sab',\n ],\n Every: 'Cada',\n and: 'y',\n 'every day': 'cada día',\n 'minute past the': 'minuto pasado el',\n hour: 'hora',\n minute: 'minuto',\n 'minute of': 'minuto de',\n second: 'segundo',\n 'second in minute': 'segundo en minuto',\n 'second of every': 'segundo de cada',\n 'minute every hour': 'minuto cada hora',\n 'on the': 'sobre el',\n 'of every month': 'de cada mes',\n 'and every': 'y cada',\n At: 'A',\n on: 'en',\n in: 'en',\n },\n nl: {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'Mei',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Okt',\n 'Nov',\n 'Dec',\n ],\n DOW: [\n 'Zon',\n 'Mon',\n 'Di',\n 'Wo',\n 'Don',\n 'Vrij',\n 'Za',\n ],\n Every: 'Elke',\n and: 'en',\n 'every day': 'elke dag',\n 'minute past the': 'minuut voorbij de',\n hour: 'uur',\n minute: 'minuut',\n 'minute of': 'minuut van',\n second: 'tweede',\n 'second in minute': 'tweede in minuut',\n 'second of every': 'tweede van alles',\n 'minute every hour': 'minuut elk uur',\n 'on the': 'op de',\n 'of every month': 'van elke maand',\n 'and every': 'en elke',\n At: 'Op',\n on: 'op',\n in: 'in',\n },\n uk: {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n 'Січ',\n 'Лют',\n 'Бер',\n 'Кві',\n 'Тра',\n 'Чер',\n 'Лип',\n 'Сер',\n 'Вер',\n 'Жов',\n 'Лис',\n 'Гру',\n ],\n DOW: [\n 'Воскресіння',\n 'Понеділок',\n 'Вівторок',\n 'Середа',\n 'Четвер',\n 'П\\'ятниця',\n 'Субота',\n ],\n Every: 'Кожну(ий)', // start of expression\n and: 'і', // 1, 2, 3 and 15th\n 'every day': 'кожен день',\n 'minute past the': 'хвилину після',\n hour: 'години',\n minute: 'хвилину',\n 'minute of': 'хвилини',\n second: 'секунду',\n 'second in minute': 'секунду в хвилині',\n 'second of every': 'секунду кожної(го)',\n 'minute every hour': 'хвилину кожну годину',\n 'on the': '',\n 'of every month': 'числа кожного місяця',\n 'and every': 'і кожного',\n At: 'В',\n on: 'в', // on sun, mon\n in: 'в', // in jan, apr\n },\n 'zh-cn': {\n ORDINALS: {\n th: '',\n st: '',\n nd: '',\n rd: '',\n },\n MONTH: [\n '一月',\n '二月',\n '三月',\n '四月',\n '五月',\n '六月',\n '七月',\n '八月',\n '九月',\n '十月',\n '十一月',\n '十二月',\n ],\n DOW: [\n '星期日',\n '星期一',\n '星期二',\n '星期三',\n '星期四',\n '星期五',\n '星期六',\n ],\n Every: '每', // start of expression\n and: '和', // 1, 2, 3 and 15th\n 'every day': '每天',\n 'minute past the': '分钟在每天第',\n hour: '小时',\n minute: '分钟',\n 'minute of': '分钟的',\n second: '秒',\n 'second in minute': '秒在分钟',\n 'second of every': '秒在每',\n 'minute every hour': '分钟在每小时中',\n 'on the': '在',\n 'of every month': '日在每月',\n 'and every': '且每',\n At: '在',\n on: '在', // on sun, mon\n in: '在', // in jan, apr\n },\n};\nexports.default = JQUERY_CRON_LOCALE;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importStar(require(\"react\"));\nconst styles_1 = require(\"@mui/styles\");\nconst material_1 = require(\"@mui/material\");\nconst Utils_1 = __importDefault(require(\"./Utils\"));\nconst styles = {\n root: {\n width: '100%',\n height: '100%',\n },\n overflowHidden: {\n overflow: 'hidden',\n },\n container: {\n height: '100%',\n },\n};\nclass TabContainer extends react_1.Component {\n render() {\n const { classes } = this.props;\n return react_1.default.createElement(material_1.Paper, { elevation: !Number.isNaN(this.props.elevation) ? this.props.elevation : 1, className: Utils_1.default.clsx(classes.root, { [classes.overflowHidden]: this.props.overflow !== 'visible' }, this.props.className), onKeyDown: this.props.onKeyDown, tabIndex: this.props.tabIndex },\n react_1.default.createElement(material_1.Grid, { container: true, direction: \"column\", wrap: \"nowrap\", className: classes.container }, this.props.children));\n }\n}\n/** @type {typeof TabContainer} */\nconst _export = (0, styles_1.withStyles)(styles)(TabContainer);\nexports.default = _export;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nconst react_1 = __importDefault(require(\"react\"));\nconst styles_1 = require(\"@mui/styles\");\nconst material_1 = require(\"@mui/material\");\nconst Utils_1 = __importDefault(require(\"./Utils\"));\nconst styles = {\n root: {\n height: '100%',\n overflow: 'hidden',\n },\n overflowAuto: {\n overflow: 'auto',\n },\n};\nclass TabContent extends react_1.default.Component {\n render() {\n const { classes } = this.props;\n return react_1.default.createElement(material_1.Grid, { item: true, className: Utils_1.default.clsx(classes.root, this.props.overflow === 'auto' ? classes.overflowAuto : '') }, this.props.children);\n }\n}\nexports.default = (0, styles_1.withStyles)(styles)(TabContent);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nclass TabHeader extends react_1.default.Component {\n render() {\n return react_1.default.createElement(material_1.Grid, { item: true, container: true, alignItems: \"center\" }, this.props.children);\n }\n}\nexports.default = TabHeader;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Copyright 2018-2023 Denis Haev \n *\n * MIT License\n *\n **/\nconst react_1 = __importDefault(require(\"react\"));\nconst CopyToClipboard_1 = __importDefault(require(\"./CopyToClipboard\"));\nconst i18n_1 = __importDefault(require(\"../i18n\"));\nconst NAMESPACE = 'material';\nconst days = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst months = ['Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst QUALITY_BITS = {\n 0x00: '0x00 - good',\n 0x01: '0x01 - general problem',\n 0x02: '0x02 - no connection problem',\n 0x10: '0x10 - substitute value from controller',\n 0x20: '0x20 - substitute initial value',\n 0x40: '0x40 - substitute value from device or instance',\n 0x80: '0x80 - substitute value from sensor',\n 0x11: '0x11 - general problem by instance',\n 0x41: '0x41 - general problem by device',\n 0x81: '0x81 - general problem by sensor',\n 0x12: '0x12 - instance not connected',\n 0x42: '0x42 - device not connected',\n 0x82: '0x82 - sensor not connected',\n 0x44: '0x44 - device reports error',\n 0x84: '0x84 - sensor reports error',\n};\nconst SIGNATURES = {\n JVBERi0: 'pdf',\n R0lGODdh: 'gif',\n R0lGODlh: 'gif',\n iVBORw0KGgo: 'png',\n '/9j/': 'jpg',\n PHN2Zw: 'svg',\n Qk1: 'bmp',\n AAABAA: 'ico', // 00 00 01 00 according to https://en.wikipedia.org/wiki/List_of_file_signatures\n};\nclass Utils {\n /**\n * Capitalize words.\n */\n static CapitalWords(name) {\n return (name || '').split(/[\\s_]/)\n .filter(item => item)\n .map(word => (word ? word[0].toUpperCase() + word.substring(1).toLowerCase() : ''))\n .join(' ');\n }\n static formatSeconds(seconds) {\n const days_ = Math.floor(seconds / (3600 * 24));\n seconds %= 3600 * 24;\n const hours = Math.floor(seconds / 3600);\n seconds %= 3600;\n const minutes = Math.floor(seconds / 60);\n seconds %= 60;\n seconds = Math.floor(seconds);\n let text = '';\n if (days_) {\n text += `${days_} ${i18n_1.default.t('ra_daysShortText')} `;\n }\n text += `${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes}` : minutes}:${seconds < 10 ? `0${seconds}` : seconds}`;\n return text;\n }\n /**\n * Get the name of the object by id from the name or description.\n * @param objects\n * @param id\n * @param settings\n * @param options\n * @param isDesc Set to true to get the description.\n */\n static getObjectName(objects, id, settings, options, isDesc) {\n const item = objects[id];\n let text;\n const attr = isDesc ? 'desc' : 'name';\n if (typeof settings === 'string' && !options) {\n options = { language: settings };\n settings = null;\n }\n options = options || {};\n if (!options.language) {\n options.language = (objects['system.config'] && objects['system.config'].common && objects['system.config'].common.language) || window.sysLang || 'en';\n }\n if (settings === null || settings === void 0 ? void 0 : settings.name) {\n text = settings.name;\n if (typeof text === 'object') {\n text = (options.language && text[options.language]) || text.en;\n }\n }\n else if (item && item.common && item.common[attr]) {\n text = item.common[attr];\n if (attr !== 'desc' && !text && item.common.desc) {\n text = item.common.desc;\n }\n if (typeof text === 'object') {\n text = (options.language && text[options.language]) || text.en || text.de || text.ru || '';\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n }\n else {\n const pos = id.lastIndexOf('.');\n text = id.substring(pos + 1).replace(/[_.]/g, ' ');\n text = Utils.CapitalWords(text);\n }\n return text.trim();\n }\n /**\n * Get the name of the object from the name or description.\n * @param obj\n * @param settings or language\n * @param options\n * @param isDesc Set to true to get the description.\n * @param noTrim Allow to use spaces in name (by edit)\n */\n static getObjectNameFromObj(obj, settings, options, isDesc, noTrim) {\n const item = obj;\n let text = (obj && obj._id) || '';\n const attr = isDesc ? 'desc' : 'name';\n if (typeof settings === 'string' && !options) {\n options = { language: settings };\n settings = null;\n }\n options = options || {};\n if (settings === null || settings === void 0 ? void 0 : settings.name) {\n const textOrTranslation = settings.name;\n if (textOrTranslation && typeof textOrTranslation === 'object') {\n text = (options.language && textOrTranslation[options.language]) || textOrTranslation.en;\n }\n else {\n text = textOrTranslation;\n }\n }\n else if ((item === null || item === void 0 ? void 0 : item.common) && item.common[attr]) {\n let textOrTranslation = item.common[attr];\n if (attr !== 'desc' && !textOrTranslation && item.common.desc) {\n textOrTranslation = item.common.desc;\n }\n if (typeof textOrTranslation === 'object') {\n text = (options.language && textOrTranslation[options.language]) || textOrTranslation.en;\n }\n else {\n text = textOrTranslation;\n }\n text = (text || '').toString().replace(/[_.]/g, ' ');\n if (text === text.toUpperCase()) {\n text = text[0] + text.substring(1).toLowerCase();\n }\n }\n return noTrim ? text : text.trim();\n }\n /**\n * Extracts from the object material settings, depends on username\n */\n static getSettingsOrder(obj, forEnumId, options) {\n let common;\n if (obj && Object.prototype.hasOwnProperty.call(obj, 'common')) {\n common = obj.common;\n }\n else {\n common = obj;\n }\n let settings;\n if (common === null || common === void 0 ? void 0 : common.custom) {\n settings = common.custom[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subOrder && settings[user].subOrder[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subOrder[forEnumId]));\n }\n }\n else if (settings[user].order) {\n return JSON.parse(JSON.stringify(settings[user].order));\n }\n }\n }\n return null;\n }\n /**\n Used in material\n */\n static getSettingsCustomURLs(obj, forEnumId, options) {\n let common;\n if (obj && Object.prototype.hasOwnProperty.call(obj, 'common')) {\n common = obj.common;\n }\n else {\n common = obj;\n }\n let settings;\n if (common === null || common === void 0 ? void 0 : common.custom) {\n settings = common.custom[NAMESPACE];\n const user = options.user || 'admin';\n if (settings && settings[user]) {\n if (forEnumId) {\n if (settings[user].subURLs && settings[user].subURLs[forEnumId]) {\n return JSON.parse(JSON.stringify(settings[user].subURLs[forEnumId]));\n }\n }\n else if (settings[user].URLs) {\n return JSON.parse(JSON.stringify(settings[user].URLs));\n }\n }\n }\n return null;\n }\n /**\n * Reorder the array items in list between source and dest.\n */\n static reorder(list, source, dest) {\n const result = Array.from(list);\n const [removed] = result.splice(source, 1);\n result.splice(dest, 0, removed);\n return result;\n }\n /**\n Get smart name settings for the given object.\n */\n static getSettings(obj, options, defaultEnabling) {\n let settings;\n const id = (obj === null || obj === void 0 ? void 0 : obj._id) || (options === null || options === void 0 ? void 0 : options.id);\n let common;\n if (obj && Object.prototype.hasOwnProperty.call(obj, 'common')) {\n common = obj.common;\n }\n else {\n common = obj;\n }\n if (common === null || common === void 0 ? void 0 : common.custom) {\n settings = common.custom;\n settings = settings[NAMESPACE] && settings[NAMESPACE][options.user || 'admin'] ? JSON.parse(JSON.stringify(settings[NAMESPACE][options.user || 'admin'])) : { enabled: true };\n }\n else {\n settings = { enabled: defaultEnabling === undefined ? true : defaultEnabling, useCustom: false };\n }\n if (!Object.prototype.hasOwnProperty.call(settings, 'enabled')) {\n settings.enabled = defaultEnabling === undefined ? true : defaultEnabling;\n }\n // if (false && settings.useCommon) {\n // if (obj.color) settings.color = obj.color;\n // if (obj.icon) settings.icon = obj.icon;\n // if (obj.name) settings.name = obj.name;\n // } else {\n if (options) {\n if (!settings.name && options.name) {\n settings.name = options.name;\n }\n if (!settings.icon && options.icon) {\n settings.icon = options.icon;\n }\n if (!settings.color && options.color) {\n settings.color = options.color;\n }\n }\n if (common) {\n // @ts-ignore todo: after new types released\n settings.color = settings.color || common.color;\n settings.icon = settings.icon || common.icon;\n settings.name = settings.name || common.name;\n }\n if (typeof settings.name === 'object') {\n settings.name = (options.language && settings.name[options.language]) || settings.name.en;\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n if (settings.name === settings.name.toUpperCase()) {\n settings.name = settings.name[0] + settings.name.substring(1).toLowerCase();\n }\n }\n if (!settings.name && id) {\n const pos = id.lastIndexOf('.');\n settings.name = id.substring(pos + 1).replace(/[_.]/g, ' ');\n settings.name = (settings.name || '').toString().replace(/_/g, ' ');\n settings.name = Utils.CapitalWords(settings.name);\n }\n return settings;\n }\n /**\n Sets smartName settings for the given object.\n */\n static setSettings(obj, settings, options) {\n if (obj) {\n obj.common = obj.common || {};\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[NAMESPACE] = obj.common.custom[NAMESPACE] || {};\n obj.common.custom[NAMESPACE][options.user || 'admin'] = settings;\n const s = obj.common.custom[NAMESPACE][options.user || 'admin'];\n if (s.useCommon) {\n if (s.color !== undefined) {\n // @ts-ignore todo: after new types released\n obj.common.color = s.color;\n delete s.color;\n }\n if (s.icon !== undefined) {\n obj.common.icon = s.icon;\n delete s.icon;\n }\n if (s.name !== undefined) {\n if (typeof obj.common.name !== 'object' && options.language) {\n obj.common.name = { [options.language]: s.name };\n }\n else if (typeof obj.common.name === 'object' && options.language) {\n obj.common.name[options.language] = s.name;\n }\n delete s.name;\n }\n }\n return true;\n }\n return false;\n }\n /**\n * Get the icon for the given settings.\n */\n static getIcon(settings, style) {\n if (settings && settings.icon) {\n // If UTF-8 icon\n if (settings.icon.length <= 2) {\n return react_1.default.createElement(\"span\", { style: style || {} }, settings.icon);\n }\n if (settings.icon.startsWith('data:image')) {\n return react_1.default.createElement(\"img\", { alt: settings.name, src: settings.icon, style: style || {} });\n }\n // maybe later some changes for a second type\n return react_1.default.createElement(\"img\", { alt: settings.name, src: (settings.prefix || '') + settings.icon, style: style });\n }\n return null;\n }\n /**\n * Get the icon for the given object.\n */\n static getObjectIcon(id, obj) {\n // If id is Object\n if (typeof id === 'object') {\n obj = id;\n id = obj === null || obj === void 0 ? void 0 : obj._id;\n }\n if (obj && obj.common && obj.common.icon) {\n let icon = obj.common.icon;\n // If UTF-8 icon\n if (typeof icon === 'string' && icon.length <= 2) {\n return icon;\n }\n if (icon.startsWith('data:image')) {\n return icon;\n }\n const parts = id.split('.');\n if (parts[0] === 'system') {\n icon = `adapter/${parts[2]}${icon.startsWith('/') ? '' : '/'}${icon}`;\n }\n else {\n icon = `adapter/${parts[0]}${icon.startsWith('/') ? '' : '/'}${icon}`;\n }\n if (window.location.pathname.match(/adapter\\/[^/]+\\/[^/]+\\.html/)) {\n icon = `../../${icon}`;\n }\n else if (window.location.pathname.match(/material\\/[.\\d]+/)) {\n icon = `../../${icon}`;\n }\n else if (window.location.pathname.match(/material\\//)) {\n icon = `../${icon}`;\n }\n return icon;\n }\n return null;\n }\n /**\n * Splits CamelCase into words.\n */\n static splitCamelCase(text) {\n // if (false && text !== text.toUpperCase()) {\n // const words = text.split(/\\s+/);\n // for (let i = 0; i < words.length; i++) {\n // const word = words[i];\n // if (word.toLowerCase() !== word && word.toUpperCase() !== word) {\n // let z = 0;\n // const ww = [];\n // let start = 0;\n // while (z < word.length) {\n // if (word[z].match(/[A-ZÜÄÖА-Я]/)) {\n // ww.push(word.substring(start, z));\n // start = z;\n // }\n // z++;\n // }\n // if (start !== z) {\n // ww.push(word.substring(start, z));\n // }\n // for (let k = 0; k < ww.length; k++) {\n // words.splice(i + k, 0, ww[k]);\n // }\n // i += ww.length;\n // }\n // }\n //\n // return words.map(w => {\n // w = w.trim();\n // if (w) {\n // return w[0].toUpperCase() + w.substring(1).toLowerCase();\n // }\n // return '';\n // }).join(' ');\n // }\n return text ? Utils.CapitalWords(text) : '';\n }\n /**\n * Check if the given color is bright.\n * https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n */\n static isUseBright(color, defaultValue) {\n if (!color) {\n return defaultValue === undefined ? true : defaultValue;\n }\n color = color.toString();\n if (color.startsWith('#')) {\n color = color.slice(1);\n }\n let r;\n let g;\n let b;\n const rgb = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n if (rgb && rgb.length === 4) {\n r = parseInt(rgb[1], 10);\n g = parseInt(rgb[2], 10);\n b = parseInt(rgb[3], 10);\n }\n else {\n // convert 3-digit hex to 6-digits.\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n // remove alfa channel\n if (color.length === 8) {\n color = color.substring(0, 6);\n }\n else if (color.length !== 6) {\n return false;\n }\n r = parseInt(color.slice(0, 2), 16);\n g = parseInt(color.slice(2, 4), 16);\n b = parseInt(color.slice(4, 6), 16);\n }\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) <= 186;\n }\n /**\n * Get the time string in the format 00:00.\n */\n static getTimeString(seconds) {\n seconds = parseFloat(seconds.toString());\n if (Number.isNaN(seconds)) {\n return '--:--';\n }\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor((seconds % 3600) / 60);\n const secs = seconds % 60;\n if (hours) {\n return `${hours}:${minutes < 10 ? `0${minutes}` : minutes}:${secs < 10 ? `0${secs}` : secs}`;\n }\n return `${minutes < 10 ? `0${minutes}` : minutes}:${secs < 10 ? `0${secs}` : secs}`;\n }\n /**\n * Gets the wind direction with the given angle (degrees).\n * @param angle in degrees.\n */\n static getWindDirection(angle) {\n if (angle >= 0 && angle < 11.25) {\n return 'N';\n }\n if (angle >= 11.25 && angle < 33.75) {\n return 'NNE';\n }\n if (angle >= 33.75 && angle < 56.25) {\n return 'NE';\n }\n if (angle >= 56.25 && angle < 78.75) {\n return 'ENE';\n }\n if (angle >= 78.75 && angle < 101.25) {\n return 'E';\n }\n if (angle >= 101.25 && angle < 123.75) {\n return 'ESE';\n }\n if (angle >= 123.75 && angle < 146.25) {\n return 'SE';\n }\n if (angle >= 146.25 && angle < 168.75) {\n return 'SSE';\n }\n if (angle >= 168.75 && angle < 191.25) {\n return 'S';\n }\n if (angle >= 191.25 && angle < 213.75) {\n return 'SSW';\n }\n if (angle >= 213.75 && angle < 236.25) {\n return 'SW';\n }\n if (angle >= 236.25 && angle < 258.75) {\n return 'WSW';\n }\n if (angle >= 258.75 && angle < 281.25) {\n return 'W';\n }\n if (angle >= 281.25 && angle < 303.75) {\n return 'WNW';\n }\n if (angle >= 303.75 && angle < 326.25) {\n return 'NW';\n }\n if (angle >= 326.25 && angle < 348.75) {\n return 'NNW';\n }\n // if (angle >= 348.75) {\n return 'N';\n }\n /**\n * Pad the given number with a zero if it's not two digits long.\n */\n static padding(num) {\n if (typeof num === 'string') {\n if (num.length < 2) {\n return `0${num}`;\n }\n return num;\n }\n if (num < 10) {\n return `0${num}`;\n }\n return num.toString();\n }\n /**\n * Sets the date format.\n */\n static setDataFormat(format) {\n if (format) {\n Utils.dateFormat = format.toUpperCase().split(/[.-/]/);\n Utils.dateFormat.splice(Utils.dateFormat.indexOf('YYYY'), 1);\n }\n }\n /**\n * Converts the date to a string.\n */\n static date2string(now) {\n if (typeof now === 'string') {\n now = now.trim();\n if (!now) {\n return '';\n }\n // only letters\n if (now.match(/^[\\w\\s]+$/)) {\n // Day of the week\n return now;\n }\n const m = now.match(/(\\d{1,4})[-./](\\d{1,2})[-./](\\d{1,4})/);\n if (m) {\n const a = [parseInt(m[1], 10), parseInt(m[2], 10), parseInt(m[3], 10)];\n // we now have 3 numbers. Let's try to detect where is year, where is day and where is month\n const year = a.find(y => y > 31);\n if (year !== undefined) {\n a.splice(a.indexOf(year), 1);\n const day = a.find(mm => mm > 12);\n if (day) {\n a.splice(a.indexOf(day), 1);\n now = new Date(year, a[0] - 1, day);\n }\n else if (Utils.dateFormat[0][0] === 'M' && Utils.dateFormat[1][0] === 'D') {\n // MM DD\n now = new Date(year, a[0] - 1, a[1]);\n if (Math.abs(now.getTime() - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[1] - 1, a[0]);\n }\n }\n else if (Utils.dateFormat[0][0] === 'D' && Utils.dateFormat[1][0] === 'M') {\n // DD MM\n now = new Date(year, a[1] - 1, a[0]);\n if (Math.abs(now.getTime() - Date.now()) > 3600000 * 24 * 10) {\n now = new Date(year, a[0] - 1, a[1]);\n }\n }\n else {\n now = new Date(now);\n }\n }\n else {\n now = new Date(now);\n }\n }\n else {\n now = new Date(now);\n }\n }\n else {\n now = new Date(now);\n }\n let date = i18n_1.default.t(`ra_dow_${days[now.getDay()]}`).replace('ra_dow_', '');\n date += `. ${now.getDate()} ${i18n_1.default.t(`ra_month_${months[now.getMonth()]}`).replace('ra_month_', '')}`;\n return date;\n }\n /**\n * Render a text as a link.\n */\n static renderTextWithA(text) {\n let m = text.match(/
||[^<]+<\\/b>|[^<]+<\\/i>/);\n if (m) {\n const result = [];\n let key = 1;\n do {\n const start = text.substring(0, m.index);\n text = text.substring((m.index || 0) + m[0].length);\n start && result.push(react_1.default.createElement(\"span\", { key: `a${key++}` }, start));\n if (m[0].startsWith('')) {\n result.push(react_1.default.createElement(\"b\", { key: `a${key++}` }, m[0].substring(3, m[0].length - 4)));\n }\n else if (m[0].startsWith('')) {\n result.push(react_1.default.createElement(\"i\", { key: `a${key++}` }, m[0].substring(3, m[0].length - 4)));\n }\n else if (m[0].startsWith('([^<]*)||[^<]+<\\/b>|[^<]+<\\/i>/) : null;\n if (!m) {\n text && result.push(react_1.default.createElement(\"span\", { key: `a${key++}` }, text));\n }\n } while (m);\n return result;\n }\n return text;\n }\n /**\n * Get the smart name of the given state.\n */\n static getSmartName(states, id, instanceId, noCommon) {\n var _a, _b;\n if (!id) {\n if (!noCommon) {\n if (!states.common) {\n // @ts-ignore\n return states.smartName;\n }\n if (states && !states.common) {\n // @ts-ignore\n return states.smartName;\n }\n // @ts-ignore\n return states.common.smartName;\n }\n if (states && !states.common) {\n // @ts-ignore\n return states.smartName;\n }\n const obj = states;\n return ((_a = obj === null || obj === void 0 ? void 0 : obj.common) === null || _a === void 0 ? void 0 : _a.custom) && obj.common.custom[instanceId] ?\n obj.common.custom[instanceId].smartName : undefined;\n }\n if (!noCommon) {\n // @ts-ignore\n return states[id].common.smartName;\n }\n const obj = states[id];\n return ((_b = obj === null || obj === void 0 ? void 0 : obj.common) === null || _b === void 0 ? void 0 : _b.custom) && obj.common.custom[instanceId] ?\n obj.common.custom[instanceId].smartName || null : null;\n }\n /**\n * Get the smart name from a state.\n */\n static getSmartNameFromObj(obj, instanceId, noCommon) {\n var _a;\n if (!noCommon) {\n if (!obj.common) {\n // @ts-ignore\n return obj.smartName;\n }\n if (obj && !obj.common) {\n // @ts-ignore\n return obj.smartName;\n }\n // @ts-ignore\n return obj.common.smartName;\n }\n if (obj && !obj.common) {\n // @ts-ignore\n return obj.smartName;\n }\n return ((_a = obj === null || obj === void 0 ? void 0 : obj.common) === null || _a === void 0 ? void 0 : _a.custom) && obj.common.custom[instanceId] ?\n obj.common.custom[instanceId].smartName : undefined;\n }\n /**\n * Enable smart name for a state.\n */\n static enableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = {};\n }\n else {\n obj.common.smartName = {};\n }\n }\n /**\n * Completely remove smart name from a state.\n */\n static removeSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n if (obj.common && obj.common.custom && obj.common.custom[instanceId]) {\n obj.common.custom[instanceId] = null;\n }\n }\n else {\n // @ts-ignore\n obj.common.smartName = null;\n }\n }\n /**\n * Update the smartname of a state.\n */\n static updateSmartName(obj, newSmartName, byON, smartType, instanceId, noCommon) {\n const language = i18n_1.default.getLanguage();\n // convert the old format\n if (typeof obj.common.smartName === 'string') {\n const nnn = obj.common.smartName;\n obj.common.smartName = {};\n obj.common.smartName[language] = nnn;\n }\n // convert the old settings\n if (obj.native && obj.native.byON) {\n delete obj.native.byON;\n let _smartName = obj.common.smartName;\n if (!_smartName) {\n _smartName = {};\n }\n else if (typeof _smartName !== 'object') {\n _smartName = { en: _smartName };\n _smartName[language] = _smartName.en;\n }\n obj.common.smartName = _smartName;\n }\n if (smartType !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n if (!smartType) {\n delete obj.common.custom[instanceId].smartName.smartType;\n }\n else {\n obj.common.custom[instanceId].smartName.smartType = smartType;\n }\n }\n else {\n obj.common.smartName = obj.common.smartName || {};\n if (!smartType) {\n delete obj.common.smartName.smartType;\n }\n else {\n obj.common.smartName.smartType = smartType;\n }\n }\n }\n if (byON !== undefined) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n obj.common.custom[instanceId].smartName.byON = byON;\n }\n else {\n obj.common.smartName = obj.common.smartName || {};\n // @ts-ignore\n obj.common.smartName.byON = byON;\n }\n }\n if (newSmartName !== undefined) {\n let smartName;\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = obj.common.custom[instanceId].smartName || {};\n smartName = obj.common.custom[instanceId].smartName;\n }\n else {\n obj.common.smartName = obj.common.smartName || {};\n smartName = obj.common.smartName;\n }\n smartName[language] = newSmartName;\n // If smart name deleted\n if (smartName && (!smartName[language] ||\n (smartName[language] === obj.common.name &&\n (!obj.common.role || obj.common.role.includes('button'))))) {\n delete smartName[language];\n let empty = true;\n // Check if the structure has any definitions\n for (const key in smartName) {\n if (Object.prototype.hasOwnProperty.call(smartName, key)) {\n empty = false;\n break;\n }\n }\n // If empty => delete smartName completely\n if (empty) {\n if (noCommon && obj.common.custom && obj.common.custom[instanceId]) {\n if (obj.common.custom[instanceId].smartName.byON === undefined) {\n delete obj.common.custom[instanceId];\n }\n else {\n delete obj.common.custom[instanceId].en;\n delete obj.common.custom[instanceId].de;\n delete obj.common.custom[instanceId].ru;\n delete obj.common.custom[instanceId].nl;\n delete obj.common.custom[instanceId].pl;\n delete obj.common.custom[instanceId].it;\n delete obj.common.custom[instanceId].fr;\n delete obj.common.custom[instanceId].pt;\n delete obj.common.custom[instanceId].es;\n delete obj.common.custom[instanceId].uk;\n delete obj.common.custom[instanceId]['zh-cn'];\n }\n // @ts-ignore\n }\n else if (obj.common.smartName && obj.common.smartName.byON !== undefined) {\n delete obj.common.smartName.en;\n delete obj.common.smartName.de;\n delete obj.common.smartName.ru;\n delete obj.common.smartName.nl;\n delete obj.common.smartName.pl;\n delete obj.common.smartName.it;\n delete obj.common.smartName.fr;\n delete obj.common.smartName.pt;\n delete obj.common.smartName.es;\n delete obj.common.smartName.uk;\n delete obj.common.smartName['zh-cn'];\n }\n else {\n // @ts-ignore\n obj.common.smartName = null;\n }\n }\n }\n }\n }\n /**\n * Disable the smart name of a state.\n */\n static disableSmartName(obj, instanceId, noCommon) {\n if (noCommon) {\n obj.common.custom = obj.common.custom || {};\n obj.common.custom[instanceId] = obj.common.custom[instanceId] || {};\n obj.common.custom[instanceId].smartName = false;\n }\n else {\n // @ts-ignore\n obj.common.smartName = false;\n }\n }\n /**\n * Copy text to the clipboard.\n */\n static copyToClipboard(text, e) {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n return (0, CopyToClipboard_1.default)(text);\n }\n /**\n * Gets the extension of a file name.\n * @param fileName the file name.\n * @returns The extension in lower case.\n */\n static getFileExtension(fileName) {\n const pos = (fileName || '').lastIndexOf('.');\n if (pos !== -1) {\n return fileName.substring(pos + 1).toLowerCase();\n }\n return null;\n }\n /**\n * Format number of bytes as a string with B, KB, MB or GB.\n * The base for all calculations is 1024.\n * @param bytes The number of bytes.\n * @returns The formatted string (e.g. '723.5 KB')\n */\n static formatBytes(bytes) {\n if (Math.abs(bytes) < 1024) {\n return `${bytes} B`;\n }\n const units = ['KB', 'MB', 'GB'];\n // const units = ['KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB'];\n let u = -1;\n do {\n bytes /= 1024;\n ++u;\n } while (Math.abs(bytes) >= 1024 && u < units.length - 1);\n return `${bytes.toFixed(1)} ${units[u]}`;\n }\n /**\n * Invert the given color according to a theme type to get the inverted text color for background\n * @param color Color in the format '#rrggbb' or '#rgb' (or without a hash)\n * @param themeType theme type\n * @param invert dark theme has light color in control or light theme has light color in control\n */\n static getInvertedColor(color, themeType, invert) {\n if (!color) {\n return undefined;\n }\n const invertedColor = Utils.invertColor(color, true);\n if (invertedColor === '#FFFFFF' && (themeType === 'dark' || (invert && themeType === 'light'))) {\n return '#DDD';\n }\n if (invertedColor === '#000000' && (themeType === 'light' || (invert && themeType === 'dark'))) {\n return '#222';\n }\n return undefined;\n }\n // Big thanks to: https://stackoverflow.com/questions/35969656/how-can-i-generate-the-opposite-color-according-to-current-color\n /**\n * Invert the given color\n * @param hex Color in the format '#rrggbb' or '#rgb' (or without hash)\n * @param bw Set to black or white.\n */\n static invertColor(hex, bw) {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return '';\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n }\n else if (hex.startsWith('rgb')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n }\n else if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n let alfa = null;\n if (hex.length === 8) {\n alfa = hex.substring(6, 8);\n hex = hex.substring(0, 6);\n }\n else if (hex.length !== 6) {\n console.warn(`Cannot invert color: ${hex}`);\n return hex;\n }\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n if (bw) {\n // http://stackoverflow.com/a/3943023/112731\n return (r * 0.299 + g * 0.587 + b * 0.114) > 186\n ? `#000000${alfa || ''}`\n : `#FFFFFF${alfa || ''}`;\n }\n // invert color components\n const rs = (255 - r).toString(16);\n const gs = (255 - g).toString(16);\n const bd = (255 - b).toString(16);\n // pad each with zeros and return\n return `#${rs.padStart(2, '0')}${gs.padStart(2, '0')}${bd.padStart(2, '0')}${alfa || ''}`;\n }\n /**\n * Convert RGB to array [r, g, b]\n * @param hex Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns Array with 3 elements [r, g, b]\n */\n static color2rgb(hex) {\n if (hex === undefined || hex === null || hex === '' || typeof hex !== 'string') {\n return '';\n }\n if (hex.startsWith('rgba')) {\n const m = hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([.\\d]+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n }\n else if (hex.startsWith('rgb')) {\n const m = hex.match(/rgb?\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (m) {\n hex = parseInt(m[1], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0') +\n parseInt(m[2], 10).toString(16).padStart(2, '0');\n }\n }\n else if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n // convert 3-digit hex to 6-digits.\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n if (hex.length !== 6 && hex.length !== 8) {\n console.warn(`Cannot invert color: ${hex}`);\n return false;\n }\n return [\n parseInt(hex.slice(0, 2), 16),\n parseInt(hex.slice(2, 4), 16),\n parseInt(hex.slice(4, 6), 16),\n ];\n }\n // Big thanks to: https://github.com/antimatter15/rgb-lab\n /**\n * Convert RGB to LAB\n * @param {Array} rgb color in format [r,g,b]\n * @returns {Array} lab color in format [l,a,b]\n */\n static rgb2lab(rgb) {\n let r = rgb[0] / 255;\n let g = rgb[1] / 255;\n let b = rgb[2] / 255;\n r = (r > 0.04045) ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92;\n g = (g > 0.04045) ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;\n b = (b > 0.04045) ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;\n let x = (r * 0.4124 + g * 0.3576 + b * 0.1805) / 0.95047;\n let y = (r * 0.2126 + g * 0.7152 + b * 0.0722); /* / 1.00000; */\n let z = (r * 0.0193 + g * 0.1192 + b * 0.9505) / 1.08883;\n x = (x > 0.008856) ? x ** 0.33333333 : (7.787 * x) + 0.137931; // 16 / 116;\n y = (y > 0.008856) ? y ** 0.33333333 : (7.787 * y) + 0.137931; // 16 / 116;\n z = (z > 0.008856) ? z ** 0.33333333 : (7.787 * z) + 0.137931; // 16 / 116;\n return [(116 * y) - 16, 500 * (x - y), 200 * (y - z)];\n }\n /**\n * Calculate the distance between two colors in LAB color space in the range 0-100^2\n * If distance is less than 1000, the colors are similar\n * @param color1 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @param color2 Color in the format '#rrggbb' or '#rgb' (or without hash) or rgb(r,g,b) or rgba(r,g,b,a)\n * @returns distance in the range 0-100^2\n */\n static colorDistance(color1, color2) {\n const rgb1 = Utils.color2rgb(color1);\n const rgb2 = Utils.color2rgb(color2);\n if (!rgb1 || !rgb2) {\n return 0;\n }\n const lab1 = Utils.rgb2lab(rgb1);\n const lab2 = Utils.rgb2lab(rgb2);\n const dltL = lab1[0] - lab2[0];\n const dltA = lab1[1] - lab2[1];\n const dltB = lab1[2] - lab2[2];\n const c1 = Math.sqrt(lab1[1] * lab1[1] + lab1[2] * lab1[2]);\n const c2 = Math.sqrt(lab2[1] * lab2[1] + lab2[2] * lab2[2]);\n const dltC = c1 - c2;\n let dltH = dltA * dltA + dltB * dltB - dltC * dltC;\n dltH = dltH < 0 ? 0 : Math.sqrt(dltH);\n const sc = 1.0 + 0.045 * c1;\n const sh = 1.0 + 0.015 * c1;\n const dltLKlsl = dltL;\n const dltCkcsc = dltC / sc;\n const dltHkhsh = dltH / sh;\n const i = dltLKlsl * dltLKlsl + dltCkcsc * dltCkcsc + dltHkhsh * dltHkhsh;\n return i < 0 ? 0 : i;\n }\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * @private\n */\n static _toVal(mix) {\n let y;\n let str = '';\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n }\n else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n y = Utils._toVal(mix[k]);\n if (y) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n }\n else {\n for (const k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n return str;\n }\n // https://github.com/lukeed/clsx/blob/master/src/index.js\n // License\n // MIT © Luke Edwards\n /**\n * Convert any object to a string with its values.\n * @returns {string}\n */\n static clsx(...inputs) {\n let i = 0;\n let tmp;\n let x;\n let str = '';\n while (i < inputs.length) {\n // eslint-disable-next-line prefer-rest-params\n tmp = inputs[i++];\n if (tmp) {\n x = Utils._toVal(tmp);\n if (x) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n return str;\n }\n /**\n * Get the current theme name (either from local storage or the browser settings).\n */\n static getThemeName(themeName) {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@' && window.vendorPrefix !== 'MV') {\n return window.vendorPrefix;\n }\n return themeName || ((window._localStorage || window.localStorage).getItem('App.themeName') ?\n (window._localStorage || window.localStorage).getItem('App.themeName') : window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'colored');\n }\n /**\n * Get the type of theme.\n */\n static getThemeType(themeName) {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@') {\n return 'light';\n }\n themeName = themeName || (window._localStorage || window.localStorage).getItem('App.themeName');\n return themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light';\n }\n /**\n * Set the theme name and theme type.\n */\n static setThemeName(themeName) {\n const vendorPrefix = window.vendorPrefix;\n if (vendorPrefix && vendorPrefix !== '@@vendorPrefix@@' && vendorPrefix !== 'MV') {\n return; // ignore\n }\n (window._localStorage || window.localStorage).setItem('App.themeName', themeName);\n (window._localStorage || window.localStorage).setItem('App.theme', themeName === 'dark' || themeName === 'blue' ? 'dark' : 'light');\n }\n /**\n * Toggle the theme name between 'dark' and 'colored'.\n * @returns the new theme name.\n */\n static toggleTheme(themeName) {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@' && window.vendorPrefix !== 'MV') {\n return window.vendorPrefix;\n }\n themeName = themeName || (window._localStorage || window.localStorage).getItem('App.themeName') || 'light';\n // dark => blue => colored => light => dark\n const themes = Utils.getThemeNames();\n const pos = themeName ? themes.indexOf(themeName) : -1;\n let newTheme;\n if (pos !== -1) {\n newTheme = themes[(pos + 1) % themes.length];\n }\n else {\n newTheme = themes[0];\n }\n Utils.setThemeName(newTheme);\n return newTheme;\n }\n /**\n * Get the list of themes\n * @returns list of possible themes\n */\n static getThemeNames() {\n if (window.vendorPrefix && window.vendorPrefix !== '@@vendorPrefix@@' && window.vendorPrefix !== 'MV') {\n return [window.vendorPrefix];\n }\n return ['light', 'dark', 'blue', 'colored'];\n }\n /**\n * Parse a query string into its parts.\n */\n static parseQuery(query) {\n query = (query || '').toString().replace(/^\\?/, '');\n /** @type {Record} */\n const result = {};\n query.split('&').forEach(part => {\n part = part.trim();\n if (part) {\n const parts = part.split('=');\n const attr = decodeURIComponent(parts[0]).trim();\n if (parts.length > 1) {\n result[attr] = decodeURIComponent(parts[1]);\n if (result[attr] === 'true') {\n result[attr] = true;\n }\n else if (result[attr] === 'false') {\n result[attr] = false;\n }\n else if (result[attr]) {\n const f = parseFloat(result[attr].toString());\n if (f.toString() === result[attr]) {\n result[attr] = f;\n }\n }\n }\n else {\n result[attr] = true;\n }\n }\n });\n return result;\n }\n /**\n * Returns parent ID.\n * @returns parent ID or null if no parent\n */\n static getParentId(id) {\n const p = (id || '').toString().split('.');\n if (p.length > 1) {\n p.pop();\n return p.join('.');\n }\n return null;\n }\n static formatDate(dateObj, dateFormat) {\n // format could be DD.MM.YYYY, YYYY.MM.DD or MM/DD/YYYY\n if (!dateObj) {\n return '';\n }\n let text;\n const mm = dateObj.getMonth() + 1;\n const dd = dateObj.getDate();\n if (dateFormat === 'MM/DD/YYYY') {\n text = `${mm < 10 ? `0${mm}` : mm}/${dd < 10 ? `0${dd}` : dd}/${dateObj.getFullYear()}`;\n }\n else {\n text = `${dateObj.getFullYear()}-${mm}-${dd}`;\n }\n // time\n let v = dateObj.getHours();\n if (v < 10) {\n text += ` 0${v}`;\n }\n else {\n text += ` ${v}`;\n }\n v = dateObj.getMinutes();\n if (v < 10) {\n text += `:0${v}`;\n }\n else {\n text += `:${v}`;\n }\n v = dateObj.getSeconds();\n if (v < 10) {\n text += `:0${v}`;\n }\n else {\n text += `:${v}`;\n }\n v = dateObj.getMilliseconds();\n if (v < 10) {\n text += `.00${v}`;\n }\n else if (v < 100) {\n text += `.0${v}`;\n }\n else {\n text += `.${v}`;\n }\n return text;\n }\n /*\n Format seconds to string like 'h:mm:ss' or 'd.hh:mm:ss'\n */\n static formatTime(seconds) {\n if (seconds) {\n seconds = Math.round(seconds);\n const d = Math.floor(seconds / (3600 * 24));\n const h = Math.floor((seconds % (3600 * 24)) / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (d) {\n return `${d}.${h.toString().padStart(2, '0')}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n if (h) {\n return `${h}:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n return `0:${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`;\n }\n return '0:00:00';\n }\n static MDtext2link(text) {\n const m = text.match(/\\d+\\.\\)\\s/);\n if (m) {\n text = text.replace(m[0], m[0].replace(/\\s/, ' '));\n }\n return text.replace(/[^a-zA-Zа-яА-Я0-9]/g, '').trim().replace(/\\s/g, '').toLowerCase();\n }\n /*\n Open url link in the new target window\n */\n static openLink(url, target) {\n // replace IPv6 Address with [ipv6]:port\n url = url.replace(/\\/\\/([0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*)(:\\d+)?\\//i, '//[$1]$2/');\n if (target === 'this') {\n window.location.href = url;\n }\n else {\n window.open(url, target || '_blank');\n }\n }\n static MDgetTitle(text) {\n const result = Utils.MDextractHeader(text);\n const header = result.header;\n let body = result.body;\n if (!header.title) {\n // remove {docsify-bla}\n body = body.replace(/{[^}]*}/g, '');\n body = body.trim();\n const lines = body.replace(/\\r/g, '').split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].startsWith('# ')) {\n return lines[i].substring(2).trim();\n }\n }\n return '';\n }\n return header.title ? header.title.toString() : '';\n }\n static MDextractHeader(text) {\n const attrs = {};\n if (text.substring(0, 3) === '---') {\n const pos = text.substring(3).indexOf('\\n---');\n if (pos !== -1) {\n const _header = text.substring(3, pos + 3);\n const lines = _header.replace(/\\r/g, '').split('\\n');\n lines.forEach(line => {\n if (!line.trim()) {\n return;\n }\n const pos_ = line.indexOf(':');\n if (pos_ !== -1) {\n const attr = line.substring(0, pos_).trim();\n let val = line.substring(pos_ + 1).trim();\n val = val.replace(/^['\"]|['\"]$/g, '');\n if (val === 'true') {\n attrs[attr] = true;\n }\n else if (val === 'false') {\n attrs[attr] = false;\n }\n else if (parseFloat(val).toString() === val) {\n attrs[attr] = parseFloat(val);\n }\n else {\n attrs[attr] = val;\n }\n }\n else {\n attrs[line.trim()] = true;\n }\n });\n text = text.substring(pos + 7);\n }\n }\n return { header: attrs, body: text };\n }\n static MDremoveDocsify(text) {\n const m = text.match(/{docsify-[^}]*}/g);\n if (m) {\n m.forEach(doc => text = text.replace(doc, ''));\n }\n return text;\n }\n /**\n * Generate the json file on the file for download.\n * @param fileName file name\n * @param json file data\n * @returns {object} json structure (not stringified)\n */\n static generateFile(fileName, json) {\n const el = document.createElement('a');\n el.setAttribute('href', `data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify(json, null, 2))}`);\n el.setAttribute('download', fileName);\n el.style.display = 'none';\n document.body.appendChild(el);\n el.click();\n document.body.removeChild(el);\n }\n /**\n * Convert quality code into text\n * @param {number} quality code\n * @returns {array} lines that decode quality\n */\n static quality2text(quality) {\n // eslint-disable-next-line no-bitwise\n const custom = quality & 0xFFFF0000;\n // @ts-ignore\n const text = QUALITY_BITS[quality];\n let result;\n if (text) {\n result = [text];\n // eslint-disable-next-line no-bitwise\n }\n else if (quality & 0x01) {\n // eslint-disable-next-line no-bitwise\n result = [QUALITY_BITS[0x01], `0x${(quality & (0xFFFF & ~1)).toString(16)}`];\n // eslint-disable-next-line no-bitwise\n }\n else if (quality & 0x02) {\n // eslint-disable-next-line no-bitwise\n result = [QUALITY_BITS[0x02], `0x${(quality & (0xFFFF & ~2)).toString(16)}`];\n }\n else {\n result = [`0x${quality.toString(16)}`];\n }\n if (custom) {\n // eslint-disable-next-line no-bitwise\n result.push(`0x${(custom >> 16).toString(16).toUpperCase()}`);\n }\n return result;\n }\n /**\n * Deep copy object\n */\n static clone(object) {\n return JSON.parse(JSON.stringify(object));\n }\n /**\n * Get states of object\n * @returns states as an object in form {\"value1\": \"label1\", \"value2\": \"label2\"} or null\n */\n static getStates(obj) {\n var _a;\n let states = (_a = obj === null || obj === void 0 ? void 0 : obj.common) === null || _a === void 0 ? void 0 : _a.states;\n if (states) {\n if (typeof states === 'string' && states[0] === '{') {\n try {\n states = JSON.parse(states);\n }\n catch (ex) {\n console.error(`Cannot parse states: ${states}`);\n states = null;\n }\n }\n else if (typeof states === 'string') {\n // if old format val1:text1;val2:text2\n const parts = states.split(';');\n states = {};\n for (let p = 0; p < parts.length; p++) {\n const s = parts[p].split(':');\n states[s[0]] = s[1];\n }\n }\n else if (Array.isArray(states)) {\n const result = {};\n if ((obj === null || obj === void 0 ? void 0 : obj.common.type) === 'number') {\n states.forEach((value, key) => result[key] = value);\n }\n else if ((obj === null || obj === void 0 ? void 0 : obj.common.type) === 'string') {\n states.forEach(value => result[value] = value);\n }\n else if ((obj === null || obj === void 0 ? void 0 : obj.common.type) === 'boolean') {\n result.false = states[0];\n result.true = states[1];\n }\n return result;\n }\n }\n return states ? states : null;\n }\n /**\n * Get svg file as text\n * @param url URL of SVG file\n * @returns Promise with \"data:image...\"\n */\n static async getSvg(url) {\n const response = await fetch(url);\n const blob = await response.blob();\n return await new Promise(resolve => {\n const reader = new FileReader();\n // eslint-disable-next-line func-names\n reader.onload = function () {\n var _a;\n resolve(((_a = this.result) === null || _a === void 0 ? void 0 : _a.toString()) || '');\n };\n reader.readAsDataURL(blob);\n });\n }\n /**\n * Detect file extension by its content\n * @param {string} base64 Base64 encoded binary file\n * @returns {string} Detected extension, like 'jpg'\n */\n static detectMimeType(base64) {\n const signature = Object.keys(SIGNATURES).find(s => base64.startsWith(s));\n // @ts-ignore\n return signature ? SIGNATURES[signature] : null;\n }\n /**\n * Check if configured repository is the stable repository\n *\n * @param activeRepo current configured repository or multi repository\n */\n static isStableRepository(activeRepo) {\n return !!((typeof activeRepo === 'string' &&\n activeRepo.toLowerCase().startsWith('stable'))\n ||\n (activeRepo &&\n typeof activeRepo !== 'string' &&\n activeRepo.find(r => r.toLowerCase().startsWith('stable'))));\n }\n /**\n * Check if a given string is an integer\n *\n * @param str string to check\n */\n static isStringInteger(str) {\n return parseInt(str).toString() === str;\n }\n /**\n * Check if the date is valid\n *\n * @param {Date} date\n * @return {boolean}\n */\n static isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n }\n}\nUtils.namespace = NAMESPACE;\nUtils.INSTANCES = 'instances';\nUtils.dateFormat = ['DD', 'MM'];\nUtils.FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\nexports.default = Utils;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst styles_1 = require(\"@mui/material/styles\");\nconst material_1 = require(\"@mui/material\");\nfunction useWidth() {\n const theme = (0, styles_1.useTheme)();\n const keys = [...theme.breakpoints.keys].reverse();\n return keys.reduce((output, key) => {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const matches = (0, material_1.useMediaQuery)(theme.breakpoints.up(key));\n return !output && matches ? key : output;\n }, null) || 'xs';\n}\n// FIXME checkout https://mui.com/components/use-media-query/#migrating-from-withwidth\nconst withWidth = () => (WrappedComponent) => (props) => {\n const width = useWidth();\n return react_1.default.createElement(WrappedComponent, Object.assign({}, props, { width: width }));\n};\nexports.default = withWidth;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PERMISSION_ERROR = exports.ERRORS = exports.PROGRESS = void 0;\nconst socket_client_1 = require(\"@iobroker/socket-client\");\nObject.defineProperty(exports, \"PROGRESS\", { enumerable: true, get: function () { return socket_client_1.PROGRESS; } });\nObject.defineProperty(exports, \"ERRORS\", { enumerable: true, get: function () { return socket_client_1.ERRORS; } });\nObject.defineProperty(exports, \"PERMISSION_ERROR\", { enumerable: true, get: function () { return socket_client_1.PERMISSION_ERROR; } });\nexports.default = socket_client_1.Connection;\n","\"use strict\";\n/**\n * Copyright 2019-2023 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nconst react_1 = __importStar(require(\"react\"));\nconst styles_1 = require(\"@mui/styles\");\nconst material_1 = require(\"@mui/material\");\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst i18n_1 = __importDefault(require(\"../i18n\"));\nconst styles = {\n suppress: {\n fontSize: 12,\n },\n suppressRoot: {\n marginTop: 16,\n },\n};\n/**\n * @property title The dialog title; default: Are you sure? (translated)\n * @property text The dialog text.\n * @property ok The ok button text; default: OK (translated)\n * @property cancel The cancel button text; default: Cancel (translated)\n * @property suppressQuestionMinutes interval in minutes for which the confirmation dialog will be suppressed if activated.\n * @property suppressText The suppress checkbox text; default: Suppress question for next %s minutes (translated)\n * @property dialogName Name of the dialog. Used only with suppressQuestionMinutes to store the user choice\n * @property onClose Close handler.\n */\nclass DialogConfirm extends react_1.Component {\n constructor(props) {\n super(props);\n if (!this.props.dialogName && this.props.suppressQuestionMinutes) {\n throw new Error('dialogName required if suppressQuestionMinutes used');\n }\n let suppress = false;\n if (this.props.suppressQuestionMinutes) {\n suppress = parseInt((window._localStorage || window.localStorage).getItem(this.props.dialogName), 10) || 0;\n if (!suppress) {\n suppress = false;\n }\n else if (Date.now() > suppress) {\n (window._localStorage || window.localStorage).removeItem(this.props.dialogName);\n suppress = false;\n }\n }\n this.state = {\n suppress,\n };\n }\n handleOk() {\n if (this.state.suppress) {\n (window._localStorage || window.localStorage).setItem(this.props.dialogName, Date.now() + (this.props.suppressQuestionMinutes || 2) * 60000);\n }\n this.props.onClose && this.props.onClose(true);\n }\n handleCancel() {\n this.props.onClose && this.props.onClose(false);\n }\n render() {\n if (typeof this.state.suppress === 'number') {\n setTimeout(() => this.props.onClose && this.props.onClose(true), 100);\n return null;\n }\n return react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: \"md\", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: (event, reason) => {\n if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {\n this.handleCancel();\n }\n }, \"aria-labelledby\": \"ar_confirmation_dialog_title\", \"aria-describedby\": \"ar_confirmation_dialog_description\" },\n react_1.default.createElement(material_1.DialogTitle, { id: \"ar_confirmation_dialog_title\" }, this.props.title || i18n_1.default.t('ra_Are you sure?')),\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.DialogContentText, { id: \"ar_confirmation_dialog_description\" },\n this.props.icon || null,\n this.props.text,\n this.props.suppressQuestionMinutes ? react_1.default.createElement(\"br\", null) : null,\n this.props.suppressQuestionMinutes ? react_1.default.createElement(material_1.FormControlLabel, { classes: { label: this.props.classes.suppress, root: this.props.classes.suppressRoot }, control: react_1.default.createElement(material_1.Checkbox, { id: `ar_dialog_confirm_suppress_${this.props.dialogName || ''}`, checked: !!this.state.suppress, onChange: () => this.setState({ suppress: !this.state.suppress }) }), label: this.props.suppressText || i18n_1.default.t('ra_Suppress question for next %s minutes', (this.props.suppressQuestionMinutes || 2).toString()) }) : null)),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { id: `ar_dialog_confirm_ok_${this.props.dialogName || ''}`, variant: \"contained\", onClick: () => this.handleOk(), color: \"primary\", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Check, null) }, this.props.ok || i18n_1.default.t('ra_Ok')),\n react_1.default.createElement(material_1.Button, { id: `ar_dialog_confirm_cancel_${this.props.dialogName || ''}`, variant: \"contained\", onClick: () => this.handleCancel(), \n // @ts-expect-error\n color: \"grey\", startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));\n }\n}\nconst _export = (0, styles_1.withStyles)(styles)(DialogConfirm);\nexports.default = _export;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Copyright 2018-2023 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst i18n_1 = __importDefault(require(\"../i18n\"));\n/**\n * @property title The dialog title; default: Error (translated)\n * @property text The dialog text.\n * @property onClose Close handler.\n * @property classes The styling class names.\n */\nclass DialogError extends react_1.Component {\n handleOk() {\n this.props.onClose && this.props.onClose();\n }\n render() {\n return react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: \"sm\", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: () => this.handleOk(), \"aria-labelledby\": \"alert-dialog-title\", \"aria-describedby\": \"alert-dialog-description\" },\n react_1.default.createElement(material_1.DialogTitle, { id: \"ar_alert_dialog_title\" }, this.props.title || i18n_1.default.t('ra_Error')),\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.DialogContentText, { id: \"ar_alert_dialog_description\" }, this.props.text || i18n_1.default.t('ra_Unknown error!'))),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { id: \"ar_dialog_error_ok\", variant: \"contained\", onClick: () => this.handleOk(), color: \"primary\", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Check, null) }, i18n_1.default.t('ra_Ok'))));\n }\n}\nexports.default = DialogError;\n","\"use strict\";\n/**\n * Copyright 2018-2023 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst i18n_1 = __importDefault(require(\"../i18n\"));\n/**\n * @property title The dialog title; default: Message (translated)\n * @property text The dialog text.\n * @property onClose Close handler.\n *\n * @extends {React.Component}\n */\nclass DialogMessage extends react_1.Component {\n handleOk() {\n this.props.onClose && this.props.onClose();\n }\n render() {\n return react_1.default.createElement(material_1.Dialog, { open: !0, maxWidth: \"sm\", fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: () => this.handleOk(), \"aria-labelledby\": \"ar_dialog_message_title\", \"aria-describedby\": \"ar_dialog_message_description\" },\n react_1.default.createElement(material_1.DialogTitle, { id: \"ar_dialog_message_title\" }, this.props.title || i18n_1.default.t('ra_Message')),\n react_1.default.createElement(material_1.DialogContent, null,\n react_1.default.createElement(material_1.DialogContentText, { id: \"ar_dialog_message_description\" },\n react_1.default.createElement(\"span\", { style: { marginRight: this.props.icon ? 8 : 0 } }, this.props.icon || null),\n this.props.text)),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { id: \"ar_dialog_message_ok\", variant: \"contained\", onClick: () => this.handleOk(), color: \"primary\", autoFocus: true, startIcon: react_1.default.createElement(icons_material_1.Close, null) }, this.props.ok || i18n_1.default.t('ra_Close'))));\n }\n}\nexports.default = DialogMessage;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Copyright 2018-2023 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nconst react_1 = __importStar(require(\"react\"));\nconst material_1 = require(\"@mui/material\");\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst i18n_1 = __importDefault(require(\"../i18n\"));\nconst ObjectBrowser_1 = __importDefault(require(\"../Components/ObjectBrowser\"));\nclass DialogSelectID extends react_1.Component {\n constructor(props) {\n super(props);\n this.dialogName = this.props.dialogName || 'default';\n this.dialogName = `SelectID.${this.dialogName}`;\n const filters = (window._localStorage || window.localStorage).getItem(this.dialogName) || '{}';\n try {\n this.filters = JSON.parse(filters);\n }\n catch (e) {\n this.filters = {};\n }\n if (props.filters) {\n this.filters = Object.assign(Object.assign({}, this.filters), (props.filters || {}));\n }\n let selected = this.props.selected || [];\n if (!Array.isArray(selected)) {\n selected = [selected];\n }\n selected = selected.filter(id => id);\n if (props.filterFunc) {\n if (typeof props.filterFunc === 'string') {\n try {\n this.filterFunc = new Function('obj', props.filterFunc);\n }\n catch (e) {\n console.error(`Cannot parse filter function: \"obj => ${props.filterFunc}\"`);\n this.filterFunc = undefined;\n }\n }\n else {\n this.filterFunc = props.filterFunc;\n }\n }\n this.state = {\n selected,\n name: '',\n };\n }\n handleCancel() {\n this.props.onClose();\n }\n handleOk() {\n this.props.onOk(this.props.multiSelect ? this.state.selected : this.state.selected[0] || '', this.state.name);\n this.props.onClose();\n }\n render() {\n let title;\n if (this.state.name || this.state.selected.length) {\n if (this.state.selected.length === 1) {\n title = [\n react_1.default.createElement(\"span\", { key: \"selected\" },\n i18n_1.default.t('ra_Selected'),\n \"\\u00A0\"),\n react_1.default.createElement(\"span\", { key: \"id\", style: { fontWeight: 'bold', fontStyle: 'italic' } }, (this.state.name || this.state.selected) + (this.state.name ? ` [${this.state.selected}]` : '')),\n ];\n }\n else {\n title = [\n react_1.default.createElement(\"span\", { key: \"selected\" },\n i18n_1.default.t('ra_Selected'),\n \"\\u00A0\"),\n react_1.default.createElement(\"span\", { key: \"id\", style: { fontWeight: 'bold', fontStyle: 'italic' } }, i18n_1.default.t('%s items', this.state.selected.length.toString())),\n ];\n }\n }\n else {\n title = this.props.title || i18n_1.default.t('ra_Please select object ID...');\n }\n return react_1.default.createElement(material_1.Dialog, { onClose: () => { }, maxWidth: false, sx: {\n '& .MuiDialog-paper': {\n height: '95%',\n padding: 4,\n width: '100%',\n maxWidth: '100%',\n maxHeight: 'calc(100% - 16px)',\n }\n }, fullWidth: true, open: !0, \"aria-labelledby\": \"ar_dialog_selectid_title\" },\n react_1.default.createElement(material_1.DialogTitle, { id: \"ar_dialog_selectid_title\", style: {\n whiteSpace: 'nowrap',\n width: 'calc(100% - 72px)',\n overflow: 'hidden',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n } }, title),\n react_1.default.createElement(material_1.DialogContent, { style: {\n height: '100%',\n overflow: 'hidden',\n padding: '8px 4px',\n } },\n react_1.default.createElement(ObjectBrowser_1.default, { foldersFirst: this.props.foldersFirst, imagePrefix: this.props.imagePrefix || this.props.prefix, defaultFilters: this.filters, dialogName: this.dialogName, showExpertButton: this.props.showExpertButton !== undefined ? this.props.showExpertButton : true, expertMode: this.props.expertMode, \n // style={{ width: '100%', height: '100%' }}\n columns: this.props.columns || ['name', 'type', 'role', 'room', 'func', 'val'], types: this.props.types ? (Array.isArray(this.props.types) ? this.props.types : [this.props.types]) : ['state'], root: this.props.root, t: i18n_1.default.t, lang: this.props.lang || i18n_1.default.getLanguage(), socket: this.props.socket, selected: this.state.selected, multiSelect: this.props.multiSelect, notEditable: this.props.notEditable === undefined ? true : this.props.notEditable, \n // name={this.state.name}\n themeName: this.props.themeName, themeType: this.props.themeType, customFilter: this.props.customFilter, onFilterChanged: filterConfig => {\n this.filters = filterConfig;\n (window._localStorage || window.localStorage).setItem(this.dialogName, JSON.stringify(filterConfig));\n }, onSelect: (selected, name, isDouble) => {\n if (JSON.stringify(selected) !== JSON.stringify(this.state.selected)) {\n this.setState({ selected, name }, () => isDouble && this.handleOk());\n }\n else if (isDouble) {\n this.handleOk();\n }\n }, filterFunc: this.filterFunc, title: \"\", classes: {} })),\n react_1.default.createElement(material_1.DialogActions, null,\n react_1.default.createElement(material_1.Button, { id: `ar_dialog_selectid_ok_${this.props.dialogName || ''}`, variant: \"contained\", onClick: () => this.handleOk(), startIcon: react_1.default.createElement(icons_material_1.Check, null), disabled: !this.state.selected.length, color: \"primary\" }, this.props.ok || i18n_1.default.t('ra_Ok')),\n react_1.default.createElement(material_1.Button, { id: `ar_dialog_selectid_cancel_${this.props.dialogName || ''}`, \n // @ts-expect-error\n color: \"grey\", variant: \"contained\", onClick: () => this.handleCancel(), startIcon: react_1.default.createElement(icons_material_1.Cancel, null) }, this.props.cancel || i18n_1.default.t('ra_Cancel'))));\n }\n}\nexports.default = DialogSelectID;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Copyright 2018-2023 Denis Haev (bluefox) \n *\n * MIT License\n *\n **/\nconst react_1 = __importDefault(require(\"react\"));\nconst socket_client_1 = require(\"@iobroker/socket-client\");\nconst Sentry = __importStar(require(\"@sentry/browser\"));\nconst SentryIntegrations = __importStar(require(\"@sentry/integrations\"));\nconst material_1 = require(\"@mui/material\");\nconst icons_material_1 = require(\"@mui/icons-material\");\nconst Prompt_1 = __importDefault(require(\"./Prompt\"));\nconst Theme_1 = __importDefault(require(\"./Theme\"));\nconst Loader_1 = __importDefault(require(\"./Components/Loader\"));\nconst Router_1 = __importDefault(require(\"./Components/Router\"));\nconst Utils_1 = __importDefault(require(\"./Components/Utils\"));\nconst SaveCloseButtons_1 = __importDefault(require(\"./Components/SaveCloseButtons\"));\nconst Confirm_1 = __importDefault(require(\"./Dialogs/Confirm\"));\nconst i18n_1 = __importDefault(require(\"./i18n\"));\nconst Error_1 = __importDefault(require(\"./Dialogs/Error\"));\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\nclass GenericApp extends Router_1.default {\n /**\n * @param {import('./types').GenericAppProps} props\n * @param {import('./types').GenericAppSettings | undefined} settings\n */\n constructor(props, settings) {\n var _a, _b;\n const ConnectionClass = (props.Connection || (settings === null || settings === void 0 ? void 0 : settings.Connection) || socket_client_1.Connection);\n // const ConnectionClass = props.Connection === 'admin' || settings.Connection = 'admin' ? AdminConnection : (props.Connection || settings.Connection || Connection);\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!GenericApp.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n }\n catch (e) {\n // ignore\n }\n }\n super(props);\n this.common = null;\n this.sentryStarted = false;\n this.sentryInited = false;\n this.resizeTimer = null;\n this.onSystemConfigChanged = (id, obj) => {\n var _a, _b;\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== (obj === null || obj === void 0 ? void 0 : obj.common.language)) {\n this.socket.systemLang = (obj === null || obj === void 0 ? void 0 : obj.common.language) || 'en';\n i18n_1.default.setLanguage(this.socket.systemLang);\n }\n if (((_a = this._systemConfig) === null || _a === void 0 ? void 0 : _a.expertMode) !== !!((_b = obj === null || obj === void 0 ? void 0 : obj.common) === null || _b === void 0 ? void 0 : _b.expertMode)) {\n this._systemConfig = (obj === null || obj === void 0 ? void 0 : obj.common) || {};\n this.setState({ expertMode: this.getExpertMode() });\n }\n else {\n this._systemConfig = (obj === null || obj === void 0 ? void 0 : obj.common) || {};\n }\n }\n };\n this.onReceiveMessage = (message) => {\n if (message === null || message === void 0 ? void 0 : message.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils_1.default.getThemeName();\n Utils_1.default.setThemeName(Utils_1.default.getThemeName());\n const newTheme = this.createTheme(newThemeName);\n this.setState({\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n });\n }\n else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n }\n else if (message.data !== 'chartReady') { // if not \"echart ready\" message\n console.debug(`Received unknown message: \"${JSON.stringify(message.data)}\". May be it will be processed later`);\n }\n }\n };\n /**\n * @private\n */\n this.onResize = () => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({ width: GenericApp.getWidth() });\n }, 200);\n };\n (0, Prompt_1.default)();\n const query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n const args = {};\n query.trim().split('&').filter(t => t.trim()).forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n }\n else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n // extract instance from URL\n this.instance = (_b = (_a = settings === null || settings === void 0 ? void 0 : settings.instance) !== null && _a !== void 0 ? _a : props.instance) !== null && _b !== void 0 ? _b : (args.instance !== undefined ? parseInt(args.instance, 10) || 0 : (parseInt(window.location.search.slice(1), 10) || 0));\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName = (settings === null || settings === void 0 ? void 0 : settings.adapterName) || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n const location = Router_1.default.getLocation();\n location.tab = location.tab || (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '';\n const themeInstance = this.createTheme();\n this.state = Object.assign(Object.assign({}, (this.state || {})), { selectedTab: (window._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '', selectedTabNum: -1, native: {}, errorText: '', changed: false, connected: false, loaded: false, isConfigurationError: '', expertMode: false, toast: '', theme: themeInstance, themeName: this.getThemeName(themeInstance), themeType: this.getThemeType(themeInstance), bottomButtons: (settings && settings.bottomButtons) === false ? false : ((props === null || props === void 0 ? void 0 : props.bottomButtons) !== false), width: GenericApp.getWidth(), confirmClose: false, _alert: false, _alertType: 'info', _alertMessage: '' });\n // init translations\n const translations = {\n en: require('./i18n/en.json'),\n de: require('./i18n/de.json'),\n ru: require('./i18n/ru.json'),\n pt: require('./i18n/pt.json'),\n nl: require('./i18n/nl.json'),\n fr: require('./i18n/fr.json'),\n it: require('./i18n/it.json'),\n es: require('./i18n/es.json'),\n pl: require('./i18n/pl.json'),\n uk: require('./i18n/uk.json'),\n 'zh-cn': require('./i18n/zh-cn.json'),\n };\n // merge together\n if (settings && settings.translations) {\n Object.keys(settings.translations).forEach(lang => {\n if (settings.translations) {\n translations[lang] = Object.assign(translations[lang], settings.translations[lang] || {});\n }\n });\n }\n else if (props.translations) {\n Object.keys(props.translations).forEach(lang => {\n if (props.translations) {\n translations[lang] = Object.assign(translations[lang], props.translations[lang] || {});\n }\n });\n }\n i18n_1.default.setTranslations(translations);\n this.savedNative = {}; // to detect if the config changed\n this.encryptedFields = props.encryptedFields || (settings === null || settings === void 0 ? void 0 : settings.encryptedFields) || [];\n this.sentryDSN = (settings && settings.sentryDSN) || props.sentryDSN;\n if (window.socketUrl) {\n if (window.socketUrl.startsWith(':')) {\n window.socketUrl = `${window.location.protocol}//${window.location.hostname}${window.socketUrl}`;\n }\n else if (!window.socketUrl.startsWith('http://') && !window.socketUrl.startsWith('https://')) {\n window.socketUrl = `${window.location.protocol}//${window.socketUrl}`;\n }\n }\n this.alertDialogRendered = false;\n window.oldAlert = window.alert;\n window.alert = message => {\n if (!this.alertDialogRendered) {\n window.oldAlert(message);\n return;\n }\n if (message && message.toString().toLowerCase().includes('error')) {\n console.error(message);\n this.showAlert(message.toString(), 'error');\n }\n else {\n console.log(message);\n this.showAlert(message.toString(), 'info');\n }\n };\n // @ts-expect-error either make props in ConnectionProps required or the constructor needs to accept than as they are (means adapt socket-client)\n this.socket = new ConnectionClass(Object.assign(Object.assign({}, ((props === null || props === void 0 ? void 0 : props.socket) || (settings === null || settings === void 0 ? void 0 : settings.socket))), { name: this.adapterName, doNotLoadAllObjects: settings === null || settings === void 0 ? void 0 : settings.doNotLoadAllObjects, onProgress: (progress) => {\n if (progress === socket_client_1.PROGRESS.CONNECTING) {\n this.setState({ connected: false });\n }\n else if (progress === socket_client_1.PROGRESS.READY) {\n this.setState({ connected: true });\n }\n else {\n this.setState({ connected: true });\n }\n }, onReady: ( /* objects, scripts */) => {\n i18n_1.default.setLanguage(this.socket.systemLang);\n // subscribe because of language and expert mode\n this.socket.subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret = (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = (obj === null || obj === void 0 ? void 0 : obj.common) || {};\n return this.socket.getObject(this.instanceId);\n })\n .then(async (obj) => {\n var _a, _b;\n let waitPromise;\n const instanceObj = obj;\n const sentryPluginEnabled = (_a = (await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`))) === null || _a === void 0 ? void 0 : _a.val;\n const sentryEnabled = sentryPluginEnabled !== false &&\n ((_b = this._systemConfig) === null || _b === void 0 ? void 0 : _b.diag) !== 'none' &&\n (instanceObj === null || instanceObj === void 0 ? void 0 : instanceObj.common) &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n // @ts-expect-error will be extended in js-controller TODO: this is redundant to state `${this.instanceId}.plugins.sentry.enabled`, remove this in future when admin sets the state correctly\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [\n new SentryIntegrations.Dedupe(),\n ],\n });\n console.log('Sentry initialized');\n }\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n waitPromise = this.socket.getObject('system.meta.uuid')\n .then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n Sentry.configureScope(scope => scope.setUser({ id: uuidObj.native.uuid }));\n }\n });\n }\n waitPromise = waitPromise || Promise.resolve();\n waitPromise\n .then(() => {\n if (instanceObj) {\n this.common = instanceObj === null || instanceObj === void 0 ? void 0 : instanceObj.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState({ native: instanceObj.native, loaded: true, expertMode: this.getExpertMode() }, () => this.onConnectionReady && this.onConnectionReady());\n }\n else {\n console.warn('Cannot load instance settings');\n this.setState({\n native: {},\n loaded: true,\n expertMode: this.getExpertMode(),\n }, () => this.onConnectionReady && this.onConnectionReady());\n }\n });\n })\n .catch(e => window.alert(`Cannot settings: ${e}`));\n }, onError: (err) => {\n console.error(err);\n this.showError(err);\n } }));\n }\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n * @returns True if running in a web adapter or in a socketio adapter.\n */\n static isWeb() {\n return window.socketUrl !== undefined;\n }\n showAlert(message, type) {\n if (type !== 'error' && type !== 'warning' && type !== 'info' && type !== 'success') {\n type = 'info';\n }\n this.setState({\n _alert: true,\n _alertType: type,\n _alertMessage: message,\n });\n }\n renderAlertSnackbar() {\n this.alertDialogRendered = true;\n return react_1.default.createElement(material_1.Snackbar, { style: this.state._alertType === 'error' ?\n { backgroundColor: '#f44336' } :\n (this.state._alertType === 'success' ? { backgroundColor: '#4caf50' } : undefined), open: this.state._alert, autoHideDuration: 6000, onClose: (_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false }), message: this.state._alertMessage });\n }\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount() {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount() {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n super.componentWillUnmount();\n }\n /**\n * Gets the width depending on the window inner width.\n * @returns {import('./types').Width}\n */\n static getWidth() {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n const SIZES = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key]);\n return widthComputed || 'xs';\n }\n /**\n * Get a theme\n * @param name Theme name\n */\n createTheme(name) {\n return (0, Theme_1.default)(Utils_1.default.getThemeName(name));\n }\n /**\n * Get the theme name\n */\n getThemeName(currentTheme) {\n return currentTheme.name;\n }\n /**\n * Get the theme type\n */\n getThemeType(currentTheme) {\n return currentTheme.palette.mode;\n }\n onThemeChanged(newThemeName) {\n }\n onToggleExpertMode(expertMode) {\n }\n /**\n * Changes the current theme\n * @param newThemeName Theme name\n **/\n toggleTheme(newThemeName) {\n const themeName = this.state.themeName;\n // dark => blue => colored => light => dark\n newThemeName = newThemeName || (themeName === 'dark' ? 'blue' :\n (themeName === 'blue' ? 'colored' :\n (themeName === 'colored' ? 'light' : 'dark')));\n if (newThemeName !== themeName) {\n Utils_1.default.setThemeName(newThemeName);\n const newTheme = this.createTheme(newThemeName);\n this.setState({\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n }, () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName || 'light');\n this.onThemeChanged && this.onThemeChanged(newThemeName || 'light');\n });\n }\n }\n /**\n * Gets the system configuration.\n * @returns {Promise}\n */\n getSystemConfig() {\n return this.socket.getSystemConfig();\n }\n /**\n * Get current expert mode\n * @returns {boolean}\n */\n getExpertMode() {\n var _a;\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!((_a = this._systemConfig) === null || _a === void 0 ? void 0 : _a.expertMode);\n }\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n onConnectionReady() {\n }\n /**\n * Encrypts a string.\n */\n encrypt(value) {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n }\n return result;\n }\n /**\n * Decrypts a string.\n */\n decrypt(value) {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i));\n }\n }\n return result;\n }\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged() {\n const location = Router_1.default.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n /**\n * Selects the given tab.\n */\n selectTab(tab, index) {\n (window._localStorage || window.localStorage).setItem(`${this.adapterName}-adapter`, tab);\n this.setState({ selectedTab: tab, selectedTabNum: index });\n }\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n */\n onPrepareSave(settings) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n return true;\n }\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n * @param encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings, encryptedNative) {\n // here you can encode values\n this.encryptedFields && this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative && encryptedNative.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n /**\n * Gets the extendable instances.\n * @returns {Promise}\n */\n async getExtendableInstances() {\n try {\n const instances = await this.socket.getObjectViewSystem('instance', 'system.adapter.', 'system.adapter.\\u9999');\n return Object.values(instances).filter(instance => { var _a; return !!((_a = instance === null || instance === void 0 ? void 0 : instance.common) === null || _a === void 0 ? void 0 : _a.webExtendable); });\n }\n catch (e) {\n return [];\n }\n }\n /**\n * Gets the IP addresses of the given host.\n */\n async getIpAddresses(host) {\n var _a;\n const ips = await this.socket.getHostByIp(host || ((_a = this.common) === null || _a === void 0 ? void 0 : _a.host) || '');\n // translate names\n const ip4_0 = ips.find(ip => ip.address === '0.0.0.0');\n if (ip4_0) {\n ip4_0.name = `[IPv4] 0.0.0.0 - ${i18n_1.default.t('ra_Listen on all IPs')}`;\n }\n const ip6_0 = ips.find(ip => ip.address === '::');\n if (ip6_0) {\n ip6_0.name = `[IPv4] :: - ${i18n_1.default.t('ra_Listen on all IPs')}`;\n }\n return ips;\n }\n /**\n * Saves the settings to the server.\n * @param isClose True if the user is closing the dialog.\n */\n onSave(isClose) {\n let oldObj;\n if (this.state.isConfigurationError) {\n this.setState({ errorText: this.state.isConfigurationError });\n return;\n }\n this.socket.getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = (_oldObj || {});\n for (const a in this.state.native) {\n if (Object.prototype.hasOwnProperty.call(this.state.native, a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n }\n else if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n }\n else {\n delete oldObj.native[a];\n }\n }\n }\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n oldObj.common[b] = null;\n }\n else if (this.state.common[b] !== undefined) {\n oldObj.common[b] = JSON.parse(JSON.stringify(this.state.common[b]));\n }\n else {\n delete oldObj.common[b];\n }\n }\n }\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n }\n return Promise.reject(new Error('Invalid configuration'));\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n try {\n window.parent.postMessage('nochange', '*');\n }\n catch (e) {\n // ignore\n }\n this.setState({ changed: false });\n isClose && GenericApp.onClose();\n })\n .catch(e => console.error(`Cannot save configuration: ${e}`));\n }\n /**\n * Renders the toast.\n */\n renderToast() {\n var _a;\n if (!this.state.toast) {\n return null;\n }\n return react_1.default.createElement(material_1.Snackbar, { anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n }, open: !0, autoHideDuration: 6000, onClose: () => this.setState({ toast: '' }), ContentProps: { 'aria-describedby': 'message-id' }, message: react_1.default.createElement(\"span\", { id: \"message-id\" }, this.state.toast), action: [\n react_1.default.createElement(material_1.IconButton, { key: \"close\", \"aria-label\": \"Close\", color: \"inherit\", className: (_a = this.props.classes) === null || _a === void 0 ? void 0 : _a.close, onClick: () => this.setState({ toast: '' }), size: \"large\" },\n react_1.default.createElement(icons_material_1.Close, null)),\n ] });\n }\n /**\n * Closes the dialog.\n * @private\n */\n static onClose() {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n }\n else {\n window.parent.postMessage('close', '*');\n }\n }\n catch (e) {\n window.parent.postMessage('close', '*');\n }\n }\n }\n /**\n * Renders the error dialog.\n * @returns {JSX.Element | null} The JSX element.\n */\n renderError() {\n if (!this.state.errorText) {\n return null;\n }\n return react_1.default.createElement(Error_1.default, { text: this.state.errorText, onClose: () => this.setState({ errorText: '' }) });\n }\n /**\n * Checks if the configuration has changed.\n * @param {Record} [native] the new state\n */\n getIsChanged(native) {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n globalThis.changed = isChanged;\n return isChanged;\n }\n /**\n * Gets called when loading the configuration.\n * @param newNative The new configuration object.\n */\n onLoadConfig(newNative) {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({ native: newNative, changed: this.getIsChanged(newNative) });\n }\n }\n /**\n * Sets the configuration error.\n */\n setConfigurationError(errorText) {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({ isConfigurationError: errorText });\n }\n }\n /**\n * Renders the save and close buttons.\n * @returns {JSX.Element | undefined} The JSX element.\n */\n renderSaveCloseButtons() {\n if (!this.state.confirmClose && !this.state.bottomButtons) {\n return null;\n }\n return react_1.default.createElement(react_1.default.Fragment, null,\n this.state.bottomButtons ? react_1.default.createElement(SaveCloseButtons_1.default, { theme: this.state.theme, newReact: this.newReact, noTextOnButtons: this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md', changed: this.state.changed, onSave: isClose => this.onSave(isClose), onClose: () => {\n if (this.state.changed) {\n this.setState({ confirmClose: true });\n }\n else {\n GenericApp.onClose();\n }\n } }) : null,\n this.state.confirmClose ? react_1.default.createElement(Confirm_1.default, { title: i18n_1.default.t('ra_Please confirm'), text: i18n_1.default.t('ra_Some data are not stored. Discard?'), ok: i18n_1.default.t('ra_Discard'), cancel: i18n_1.default.t('ra_Cancel'), onClose: isYes => this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose()) }) : null);\n }\n /**\n * @private\n */\n _updateNativeValue(obj, attrs, value) {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr = attrs.shift() || '';\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n return false;\n }\n if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n }\n return false;\n }\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error(`attribute ${attr} is no object, but ${typeof obj[attr]}`);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n /**\n * Update the native value\n * @param attr The attribute name with dots as delimiter.\n * @param value The new value.\n * @param cb Callback which will be called upon completion.\n */\n updateNativeValue(attr, value, cb) {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n if (changed !== this.state.changed) {\n try {\n window.parent.postMessage(changed ? 'change' : 'nochange', '*');\n }\n catch (e) {\n // ignore\n }\n }\n this.setState({ native, changed }, cb);\n }\n }\n /**\n * Set the error text to be shown.\n */\n showError(text) {\n this.setState({ errorText: text });\n }\n /**\n * Sets the toast to be shown.\n * @param {string} toast\n */\n showToast(toast) {\n this.setState({ toast });\n }\n /**\n * Renders helper dialogs\n * @returns {JSX.Element} The JSX element.\n */\n renderHelperDialogs() {\n return react_1.default.createElement(react_1.default.Fragment, null,\n this.renderError(),\n this.renderToast(),\n this.renderSaveCloseButtons(),\n this.renderAlertSnackbar());\n }\n /**\n * Renders this component.\n * @returns {JSX.Element} The JSX element.\n */\n render() {\n if (!this.state.loaded) {\n return react_1.default.createElement(Loader_1.default, { themeType: this.state.themeType });\n }\n return react_1.default.createElement(\"div\", { className: \"App\" },\n this.renderError(),\n this.renderToast(),\n this.renderSaveCloseButtons(),\n this.renderAlertSnackbar());\n }\n}\nexports.default = GenericApp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Print the ioBroker welcome screen to the developer console.\n */\nfunction printPrompt() {\n const prompt = `\n██╗ ██████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗ \n██║██╔═══██╗██╔══██╗██╔══██╗██╔═══██╗██║ ██╔╝██╔════╝██╔══██╗\n██║██║ ██║██████╔╝██████╔╝██║ ██║█████╔╝ █████╗ ██████╔╝\n██║██║ ██║██╔══██╗██╔══██╗██║ ██║██╔═██╗ ██╔══╝ ██╔══██╗\n██║╚██████╔╝██████╔╝██║ ██║╚██████╔╝██║ ██╗███████╗██║ ██║\n╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝\n`;\n console.log(prompt);\n console.log('Nice to see you here! :) Join our dev community here https://github.com/ioBroker/ioBroker or here https://github.com/iobroker-community-adapters');\n console.log('Help us to create open source project with reactJS!');\n console.log('See you :)');\n}\nexports.default = printPrompt;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst styles_1 = require(\"@mui/material/styles\");\nconst colors_1 = require(\"@mui/material/colors\");\nconst step = (16 - 5) / 23 / 100;\n/**\n * Convert hex color in the format '#rrggbb' or '#rgb' to an RGB object.\n */\nfunction toInt(hex) {\n const rgb = {\n r: 0,\n g: 0,\n b: 0,\n };\n if (hex.length === 7) {\n rgb.r = parseInt(hex.substr(1, 2), 16);\n rgb.g = parseInt(hex.substr(3, 2), 16);\n rgb.b = parseInt(hex.substr(5, 2), 16);\n }\n else if (hex.length === 4) {\n const r = hex.substr(1, 1);\n const g = hex.substr(2, 1);\n const b = hex.substr(3, 1);\n rgb.r = parseInt(r + r, 16);\n rgb.g = parseInt(g + g, 16);\n rgb.b = parseInt(b + b, 16);\n }\n return rgb;\n}\n/**\n * Convert an RGB object to a hex color string in the format '#rrggbb'.\n */\nfunction toHex(int) {\n return `#${Math.round(int.r).toString(16)}${Math.round(int.g).toString(16)}${Math.round(int.b).toString(16)}`;\n}\n/** Returns the hex color string in the format '#rrggbb' */\nfunction getElevation(\n/** color in the format '#rrggbb' or '#rgb' */\ncolor, \n/** overlay color in the format '#rrggbb' or '#rgb' */\noverlayColor, \n/** elevation as an integer starting with 1 */\nelevation) {\n const rgb = toInt(color);\n const overlay = toInt(overlayColor);\n rgb.r += overlay.r * (0.05 + step * (elevation - 1));\n rgb.g += overlay.g * (0.05 + step * (elevation - 1));\n rgb.b += overlay.b * (0.05 + step * (elevation - 1));\n return toHex(rgb);\n}\n/**\n * Get all 24 elevations of the given color and overlay.\n */\nfunction getElevations(\n/** color in the format '#rrggbb' or '#rgb' */\ncolor, \n/** overlay color in the format '#rrggbb' or '#rgb' */\noverlay) {\n const elevations = {};\n for (let i = 1; i <= 24; i++) {\n elevations[`elevation${i}`] = {\n backgroundColor: getElevation(color, overlay, i),\n };\n }\n return elevations;\n}\n// const buttonsPalette = () => ({\n// palette: {\n// // mode: \"dark\",\n// grey: {\n// main: grey[300],\n// dark: grey[400],\n// },\n// },\n// });\n// const buttonsTheme = theme => ({\n// components: {\n// MuiButton: {\n// variants: [\n// {\n// props: { variant: 'contained', color: 'grey' },\n// style: {\n// color: theme.palette.getContrastText(theme.palette.grey[300]),\n// },\n// },\n// {\n// props: { variant: 'outlined', color: 'grey' },\n// style: {\n// color: theme.palette.text.primary,\n// borderColor:\n// theme.palette.mode === 'light'\n// ? 'rgba(0, 0, 0, 0.23)'\n// : 'rgba(255, 255, 255, 0.23)',\n// '&.Mui-disabled': {\n// border: `1px solid ${theme.palette.action.disabledBackground}`,\n// },\n// '&:hover': {\n// borderColor:\n// theme.palette.mode === 'light'\n// ? 'rgba(0, 0, 0, 0.23)'\n// : 'rgba(255, 255, 255, 0.23)',\n// backgroundColor: alpha(\n// theme.palette.text.primary,\n// theme.palette.action.hoverOpacity,\n// ),\n// },\n// },\n// },\n// {\n// props: { color: 'grey', variant: 'text' },\n// style: {\n// color: 'black',\n// '&:hover': {\n// backgroundColor: alpha(\n// theme.palette.text.primary,\n// theme.palette.action.hoverOpacity,\n// ),\n// },\n// },\n// },\n// ],\n// },\n// },\n// });\n/**\n * The theme creation factory function.\n */\nconst CustomTheme = (type) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n let options;\n if (type === 'dark') {\n options = {\n name: type,\n palette: {\n mode: 'dark',\n background: {\n paper: '#121212',\n default: '#121212',\n },\n primary: {\n main: '#4dabf5',\n },\n secondary: {\n main: '#436a93',\n },\n // @ts-expect-error Custom field\n expert: '#14bb00',\n text: {\n primary: '#ffffff',\n secondary: '#ffffff',\n },\n },\n overrides: {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#272727',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: colors_1.orange[200],\n '&:hover': {\n color: colors_1.orange[100],\n },\n },\n },\n MuiPaper: getElevations('#121212', '#fff'),\n },\n };\n }\n else if (type === 'blue') {\n options = {\n name: type,\n palette: {\n mode: 'dark',\n background: {\n paper: '#151d21',\n default: '#151d21',\n },\n primary: {\n main: '#4dabf5',\n },\n secondary: {\n main: '#436a93',\n },\n // @ts-expect-error Custom field\n expert: '#14bb00',\n text: {\n primary: '#ffffff',\n secondary: '#ffffff',\n },\n },\n overrides: {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#2a3135',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: colors_1.orange[200],\n '&:hover': {\n color: colors_1.orange[100],\n },\n },\n },\n MuiPaper: getElevations('#151d21', '#fff'),\n },\n };\n }\n else if (type === 'colored') {\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#3399CC',\n },\n secondary: {\n main: '#164477',\n },\n // @ts-expect-error Custom field\n expert: '#96fc96',\n },\n overrides: {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#3399CC',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: colors_1.orange[400],\n '&:hover': {\n color: colors_1.orange[300],\n },\n },\n },\n },\n };\n }\n else if (type === 'PT') {\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#0F99DE',\n },\n secondary: {\n main: '#88A536',\n },\n // @ts-expect-error Custom field\n expert: '#BD1B24',\n },\n overrides: {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#0F99DE',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: colors_1.orange[400],\n '&:hover': {\n color: colors_1.orange[300],\n },\n },\n },\n },\n };\n }\n else if (type === 'DX') {\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#F5F5F7',\n },\n secondary: {\n main: '#a9a9a9',\n },\n // @ts-expect-error Custom field\n expert: '#BD1B24',\n text: {\n primary: '#007AFE',\n secondary: '#007AFE',\n disabled: '#007AFEAA',\n },\n },\n overrides: {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#a9a9a9',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: colors_1.orange[400],\n '&:hover': {\n color: colors_1.orange[300],\n },\n },\n },\n },\n };\n }\n else {\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#3399CC',\n light: undefined,\n dark: undefined,\n contrastText: undefined,\n },\n secondary: {\n main: '#164477',\n },\n // @ts-ignore\n expert: '#14bb00',\n },\n overrides: {\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: colors_1.orange[400],\n '&:hover': {\n color: colors_1.orange[300],\n },\n },\n },\n },\n };\n }\n // @ts-expect-error Custom field\n options.toolbar = {\n height: 48,\n };\n // @ts-expect-error Custom field\n options.saveToolbar = {\n background: (_b = (_a = options.palette) === null || _a === void 0 ? void 0 : _a.primary) === null || _b === void 0 ? void 0 : _b.main,\n button: {\n borderRadius: 3,\n height: 32,\n },\n };\n if (options.palette) {\n options.palette.grey = {\n // @ts-expect-error Custom field\n main: colors_1.grey[300],\n dark: colors_1.grey[400],\n };\n }\n const theme = (0, styles_1.createTheme)(options);\n const palette = theme.palette;\n return (0, styles_1.createTheme)(theme, {\n components: {\n MuiButton: {\n variants: [\n {\n props: { variant: 'contained', color: 'grey' },\n style: {\n color: palette.getContrastText && palette.grey && palette.grey[300] ? palette.getContrastText(palette.grey[300]) : undefined,\n },\n },\n {\n props: { variant: 'outlined', color: 'grey' },\n style: {\n color: (_c = palette.text) === null || _c === void 0 ? void 0 : _c.primary,\n borderColor: palette.mode === 'light'\n ? 'rgba(0, 0, 0, 0.23)'\n : 'rgba(255, 255, 255, 0.23)',\n '&.Mui-disabled': {\n border: `1px solid ${(_d = palette.action) === null || _d === void 0 ? void 0 : _d.disabledBackground}`,\n },\n '&:hover': {\n borderColor: palette.mode === 'light'\n ? 'rgba(0, 0, 0, 0.23)'\n : 'rgba(255, 255, 255, 0.23)',\n backgroundColor: (0, styles_1.alpha)(((_e = palette.text) === null || _e === void 0 ? void 0 : _e.primary) || '', ((_f = palette.action) === null || _f === void 0 ? void 0 : _f.hoverOpacity) || 0.04),\n },\n },\n },\n {\n props: { variant: 'text', color: 'grey' },\n style: {\n color: (_g = palette.text) === null || _g === void 0 ? void 0 : _g.primary,\n '&:hover': {\n backgroundColor: (0, styles_1.alpha)(((_h = palette.text) === null || _h === void 0 ? void 0 : _h.primary) || '', ((_j = palette.action) === null || _j === void 0 ? void 0 : _j.hoverOpacity) || 0.04),\n },\n },\n },\n ],\n },\n },\n });\n};\nexports.default = CustomTheme;\n","\"use strict\";\n/**\n * Copyright 2018-2024 Denis Haev (bluefox) \n *\n * MIT License\n *\n ***/\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Translation string management.\n */\nclass I18n {\n /** Set the language to display */\n static setLanguage(lang) {\n if (lang) {\n I18n.lang = lang;\n }\n }\n /**\n * Add translations\n * User can provide two types of structures:\n * - {\"word1\": \"translated word1\", \"word2\": \"translated word2\"}, but in this case the lang must be provided\n * - {\"word1\": {\"en\": \"translated en word1\", \"de\": \"translated de word1\"}, \"word2\": {\"en\": \"translated en word2\", \"de\": \"translated de word2\"}}, but no lang must be provided\n * @param {object} words additional words for specific language\n * @param {ioBroker.Languages} lang\n */\n static extendTranslations(words, lang) {\n // automatically extend all languages with prefix\n if (words.prefix) {\n const wordsWithPrefix = words;\n if (typeof wordsWithPrefix.prefix === 'string') {\n const prefix = wordsWithPrefix.prefix;\n delete wordsWithPrefix.prefix;\n Object.keys(wordsWithPrefix).forEach(key => {\n const _lang = key;\n const _words = {};\n const wordsOfOneLanguage = wordsWithPrefix[_lang];\n Object.keys(wordsOfOneLanguage).forEach(word => {\n if (!word) {\n return;\n }\n if (wordsOfOneLanguage) {\n if (!word.startsWith(prefix)) {\n _words[`${prefix}${word}`] = wordsOfOneLanguage[word];\n }\n else {\n _words[word] = wordsOfOneLanguage[word];\n }\n }\n });\n words[_lang] = _words;\n });\n }\n else {\n console.warn('Found prefix in translations, but it is not a string');\n }\n }\n try {\n if (!lang) {\n // if it is a dictionary with all/many languages\n if (words.en && words.de && words.ru) {\n Object.keys(words).forEach(key => {\n const _lang = key;\n I18n.translations[_lang] = I18n.translations[_lang] || {};\n const wordsOfOneLang = I18n.translations[_lang];\n Object.assign(wordsOfOneLang, words[_lang]);\n });\n }\n else {\n // It could be vice versa: words.word1 = {en: 'translated word1', de: 'übersetztes Wort2'}\n Object.keys(words).forEach(word => {\n const _word = words[word];\n Object.keys(_word).forEach(key => {\n const _lang = key;\n const languageDictionary = I18n.translations[_lang];\n if (!languageDictionary) {\n console.warn(`Used unknown language: ${_lang}`);\n }\n else {\n if (!languageDictionary[word]) {\n languageDictionary[word] = _word[_lang];\n }\n else if (languageDictionary[word] !== _word[_lang]) {\n console.warn(`Translation for word \"${word}\" in \"${_lang}\" was ignored: existing = \"${languageDictionary[word]}\", new = ${_word[_lang]}`);\n }\n }\n });\n });\n }\n }\n else {\n // translations for one language\n if (!I18n.translations[lang]) {\n console.warn(`Used unknown language: ${lang}`);\n }\n I18n.translations[lang] = I18n.translations[lang] || {};\n const languageDictionary = I18n.translations[lang];\n if (languageDictionary) {\n Object.keys(words)\n .forEach(word => {\n if (!languageDictionary[word]) {\n languageDictionary[word] = words[word];\n }\n else if (languageDictionary[word] !== words[word]) {\n console.warn(`Translation for word \"${word}\" in \"${lang}\" was ignored: existing = \"${languageDictionary[word]}\", new = ${words[word]}`);\n }\n });\n }\n }\n }\n catch (e) {\n console.error(`Cannot apply translations: ${e}`);\n }\n }\n /**\n * Sets all translations (in all languages).\n * @param {{ [lang in ioBroker.Languages]?: Record; }} translations\n */\n static setTranslations(translations) {\n if (translations) {\n I18n.translations = translations;\n }\n }\n /**\n * Get the currently chosen language.\n * @returns {ioBroker.Languages} The current language.\n */\n static getLanguage() {\n return I18n.lang;\n }\n /** Translate the given string to the selected language */\n static t(\n /** The (key) word to look up the string. */\n word, \n /** Optional arguments which will replace the first (second, third, ...) occurrences of %s */\n ...args) {\n const translation = I18n.translations[I18n.lang];\n if (translation) {\n const w = translation[word];\n if (w) {\n word = w;\n }\n else {\n if (!I18n.unknownTranslations.includes(word)) {\n I18n.unknownTranslations.push(word);\n !I18n._disableWarning && console.log(`Translate: ${word}`);\n }\n // fallback to english\n if (I18n.lang !== 'en' && I18n.translations.en) {\n const wordEn = I18n.translations.en[word];\n if (wordEn) {\n word = wordEn;\n }\n }\n }\n }\n for (const arg of args) {\n word = word.replace('%s', arg);\n }\n return word;\n }\n /**\n * Show non-translated words\n * Required during development\n */\n static i18nShow(\n /** The filter to apply to the list of non-translated words. */\n filter) {\n /** List words with their translations. */\n const result = {};\n if (!filter) {\n I18n.unknownTranslations.forEach(word => result[word] = word);\n console.log(JSON.stringify(result, null, 2));\n }\n else if (typeof filter === 'string') {\n I18n.unknownTranslations.forEach(word => {\n if (word.startsWith(filter)) {\n result[word] = word.replace(filter, '');\n }\n });\n console.log(JSON.stringify(result, null, 2));\n }\n else if (typeof filter === 'object') {\n I18n.unknownTranslations.forEach(word => {\n if (filter.test(word)) {\n result[word] = word;\n }\n });\n console.log(JSON.stringify(result, null, 2));\n }\n }\n /**\n * Disable warning about non-translated words\n * Required during development\n * @param {boolean} disable\n */\n static disableWarning(\n /** Whether to disable the warning. */\n disable) {\n I18n._disableWarning = !!disable;\n }\n}\n/** List of all languages with their translations. */\nI18n.translations = {};\n/** List of unknown translations during development. */\nI18n.unknownTranslations = [];\n/** The currently displayed language. */\nI18n.lang = window.sysLang || 'en';\nI18n._disableWarning = false;\n// install global handlers\nwindow.i18nShow = I18n.i18nShow;\nwindow.i18nDisableWarning = I18n.disableWarning;\n/*\nI18n.translations = {\n 'en': require('./i18n/en'),\n 'ru': require('./i18n/ru'),\n 'de': require('./i18n/de'),\n};\nI18n.fallbacks = true;\nI18n.t = function () {};\n*/\nexports.default = I18n;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/\nconst IconAdapter = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 512 512\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\" }));\nexports.default = IconAdapter;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/\nconst IconAlias = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 512 512\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\" }));\nexports.default = IconAlias;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst IconChannel = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 320 320\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"g\", { fill: \"currentColor\" },\n react_1.default.createElement(\"rect\", { rx: \"32\", height: \"272\", width: \"267\", y: \"25\", x: \"25\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"none\" }),\n react_1.default.createElement(\"ellipse\", { stroke: \"currentColor\", ry: \"26\", rx: \"26\", cy: \"248\", cx: \"160\", fill: \"none\", strokeWidth: \"15\" }),\n react_1.default.createElement(\"line\", { y2: \"201.94531\", x2: \"159.5\", y1: \"46.94531\", x1: \"159.5\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"none\" }),\n react_1.default.createElement(\"rect\", { height: \"27\", width: \"50\", y: \"79.7979\", x: \"133.5\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"#fff\" })));\nexports.default = IconChannel;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Copyright Apache 2.0 https://raw.githubusercontent.com/material-icons/material-icons/master/svg/filter_alt/baseline.svg\n// https://github.com/material-icons/material-icons/blob/master/LICENSE\nconst IconClearFilter = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 24 24\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", stroke: \"currentColor\", d: \"M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z\" }));\nexports.default = IconClearFilter;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/\nconst IconClosed = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 650 512\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\" }));\nexports.default = IconClosed;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst IconCopy = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 512 512\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\" }));\nexports.default = IconCopy;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst IconDevice = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 320 320\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"g\", { fill: \"currentColor\" },\n react_1.default.createElement(\"rect\", { rx: \"32\", height: \"272\", width: \"267\", y: \"25\", x: \"25\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"none\" }),\n react_1.default.createElement(\"ellipse\", { stroke: \"currentColor\", ry: \"26\", rx: \"26\", cy: \"252\", cx: \"160\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", fill: \"#fff\" }),\n react_1.default.createElement(\"line\", { y2: \"201.94531\", x2: \"159.5\", y1: \"46.94531\", x1: \"159.5\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"none\" }),\n react_1.default.createElement(\"rect\", { height: \"27\", width: \"50\", y: \"140.83068\", x: \"133.5\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"#fff\" }),\n react_1.default.createElement(\"ellipse\", { stroke: \"currentColor\", ry: \"26\", rx: \"26\", cy: \"251\", cx: \"241\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", fill: \"#fff\" }),\n react_1.default.createElement(\"line\", { y2: \"200.94531\", x2: \"240.5\", y1: \"45.94531\", x1: \"240.5\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"none\" }),\n react_1.default.createElement(\"rect\", { height: \"27\", width: \"50\", y: \"78.7979\", x: \"214.5\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"#fff\" }),\n react_1.default.createElement(\"ellipse\", { stroke: \"currentColor\", ry: \"26\", rx: \"26\", cy: \"252\", cx: \"84\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", fill: \"#fff\" }),\n react_1.default.createElement(\"line\", { y2: \"201.94531\", x2: \"83.5\", y1: \"46.94531\", x1: \"83.5\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"none\" }),\n react_1.default.createElement(\"rect\", { height: \"27\", width: \"50\", y: \"79.7979\", x: \"57.5\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\", fill: \"#fff\" })));\nexports.default = IconDevice;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/\nconst IconDocument = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 512 512\", onClick: e => props.onClick && props.onClick(e), width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\" }));\nexports.default = IconDocument;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/\nconst IconDocumentReadOnly = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 512 512\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48z\" }),\n react_1.default.createElement(\"path\", { fill: \"currentColor\", stroke: \"null\", d: \"m261,270l-12,0l0,-24c0,-33.12 -26.88,-60 -60,-60s-60,26.88 -60,60l0,24l-12,0c-13.2,0 -24,10.8 -24,24l0,120c0,13.2 10.8,24 24,24l144,0c13.2,0 24,-10.8 24,-24l0,-120c0,-13.2 -10.8,-24 -24,-24zm-72,108c-13.2,0 -24,-10.8 -24,-24s10.8,-24 24,-24s24,10.8 24,24s-10.8,24 -24,24zm37.2,-108l-74.4,0l0,-24c0,-20.52 16.68,-37.2 37.2,-37.2c20.52,0 37.2,16.68 37.2,37.2l0,24z\" }));\nexports.default = IconDocumentReadOnly;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst ExpertIcon = (props) => react_1.default.createElement(\"svg\", { onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 486 486\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), xmlns: \"http://www.w3.org/2000/svg\", className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"m414.928297,149.715165 c-2.639376,-57.222555 -35.669446,-106.505345 -83.345894,-132.039151 c-3.758948,-2.049842 -7.636885,-3.932022 -11.590542,-5.641125 c-19.303146,-8.394083 -40.607459,-13.050853 -63.004303,-13.050853 c-84.113909,0 -152.791790,65.703174 -157.718988,148.605566 l0.043268,-0.010816 v0.281245 c0,3.061243 -0.146031,16.750306 -0.146031,16.750306 l-2.352723,5.224668 h15.744315 c5.916964,-19.384275 24.078904,-32.635245 45.513024,-32.635245 c26.231510,0 47.573684,21.915481 47.573684,48.146991 c0,26.226103 -21.342174,47.146409 -47.573684,47.146409 c-25.111939,0 -45.734774,-19.735831 -47.443879,-44.658471 h-18.789334 c-0.400232,0 -0.778832,0.638209 -1.162839,0.584122 l-19.762875,55.199753 c-2.774590,7.696379 2.926030,16.214860 11.103771,16.214860 h17.020735 l-0.129805,87.899899 c0,17.356066 14.073071,31.174935 31.429136,31.174935 h56.205745 v82.648189 c0,12.877778 12.937273,22.580734 25.815051,22.580734 h144.597825 c12.877778,0 23.429877,-9.702955 23.429877,-22.580734 v-166.037352 c0,-22.645636 5.976457,-44.761234 16.561008,-64.789128 c11.055093,-20.925714 17.523731,-44.620611 18.129489,-69.792045 c0.027042,-1.260193 0.037858,-2.552839 0.037858,-3.845485 c0,-2.466302 -0.070310,-4.938014 -0.183890,-7.377273 zm-155.393308,-11.731165 h-13.456494 v13.559257 c0,4.732489 -4.267352,8.567157 -8.999842,8.567157 c-4.727079,0 -8.999842,-3.834667 -8.999842,-8.567157 v-13.559257 h-12.185483 c-4.732489,0 -8.567157,-4.267352 -8.567157,-8.999842 c0,-4.727079 3.834667,-8.999842 8.567157,-8.999842 h12.185483 v-12.077311 c0,-4.732489 4.272762,-8.567157 8.999842,-8.567157 c4.732489,0 8.999842,3.834667 8.999842,8.567157 v12.077311 h13.456494 c4.727079,0 8.567157,4.272762 8.567157,8.999842 c0,4.732489 -3.840077,8.999842 -8.567157,8.999842 zm0,0\" }),\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"m187.695312 285.875c3.9375-3.980469 6.414063-9.449219 6.414063-15.523438 0-12.128906-9.855469-21.980468-21.984375-21.980468-6.007812 0-11.472656 2.410156-15.457031 6.347656-4.023438 4.003906-6.523438 9.539062-6.523438 15.636719 0 12.125 9.855469 21.980469 21.980469 21.980469 6.078125 0 11.585938-2.476563 15.570312-6.460938zm0 0\" }));\nexports.default = ExpertIcon;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/\nconst IconInstance = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 512 512\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\" }));\nexports.default = IconInstance;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\n// Icon copied from https://github.com/FortAwesome/Font-Awesome/blob/0d1f27efb836eb2ab994ba37221849ed64a73e5c/svgs/regular/\nconst IconOpen = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 650 512\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"path\", { fill: \"currentColor\", d: \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\" }));\nexports.default = IconOpen;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst IconState = (props) => react_1.default.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", onClick: e => props.onClick && props.onClick(e), viewBox: \"0 0 320 320\", width: props.width || (props.fontSize === 'small' ? 16 : 20), height: props.height || props.width || (props.fontSize === 'small' ? 16 : 20), className: props.className, style: props.style },\n react_1.default.createElement(\"rect\", { fill: \"none\", rx: \"32\", height: \"272\", width: \"267\", y: \"25\", x: \"25\", strokeWidth: \"15\", stroke: \"currentColor\" }),\n react_1.default.createElement(\"ellipse\", { fill: \"none\", ry: \"54\", rx: \"54\", cy: \"160\", cx: \"160\", fillOpacity: \"null\", strokeOpacity: \"null\", strokeWidth: \"15\", stroke: \"currentColor\" }));\nexports.default = IconState;\n","export const styleToObject = (input: string): Record => {\n const attributes = input.split(/ ?; ?/);\n\n return attributes.reduce((acc: Record, d: string) => {\n const [key, value] = d.split(/ ?: ?/);\n\n if (key && value) {\n acc[key.replace(/-(\\w)/g, (_$0, $1) => $1.toUpperCase())] = Number.isNaN(Number(value))\n ? value\n : Number(value);\n }\n\n return acc;\n }, {});\n};\n\n/* istanbul ignore next */\nexport function randomString(length = 6): string {\n const characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n let result = '';\n\n for (let index = length; index > 0; --index) {\n result += characters[Math.round(Math.random() * (characters.length - 1))];\n }\n\n return result;\n}\n\nexport const noTextChildNodes = [\n 'br',\n 'col',\n 'colgroup',\n 'dl',\n 'hr',\n 'iframe',\n 'img',\n 'input',\n 'link',\n 'menuitem',\n 'meta',\n 'ol',\n 'param',\n 'select',\n 'table',\n 'tbody',\n 'tfoot',\n 'thead',\n 'tr',\n 'ul',\n 'wbr',\n];\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Taken from https://raw.githubusercontent.com/facebook/react/baff5cc2f69d30589a5dc65b089e47765437294b/packages/react-dom/src/shared/possibleStandardNames.js\n// tslint:disable:object-literal-sort-keys\nexport const possibleStandardNames: Record = {\n // HTML\n 'accept-charset': 'acceptCharset',\n acceptcharset: 'acceptCharset',\n accesskey: 'accessKey',\n allowfullscreen: 'allowFullScreen',\n autocapitalize: 'autoCapitalize',\n autocomplete: 'autoComplete',\n autocorrect: 'autoCorrect',\n autofocus: 'autoFocus',\n autoplay: 'autoPlay',\n autosave: 'autoSave',\n cellpadding: 'cellPadding',\n cellspacing: 'cellSpacing',\n charset: 'charSet',\n class: 'className',\n classid: 'classID',\n classname: 'className',\n colspan: 'colSpan',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n controlslist: 'controlsList',\n crossorigin: 'crossOrigin',\n dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n datetime: 'dateTime',\n defaultchecked: 'defaultChecked',\n defaultvalue: 'defaultValue',\n enctype: 'encType',\n for: 'htmlFor',\n formmethod: 'formMethod',\n formaction: 'formAction',\n formenctype: 'formEncType',\n formnovalidate: 'formNoValidate',\n formtarget: 'formTarget',\n frameborder: 'frameBorder',\n hreflang: 'hrefLang',\n htmlfor: 'htmlFor',\n httpequiv: 'httpEquiv',\n 'http-equiv': 'httpEquiv',\n icon: 'icon',\n innerhtml: 'innerHTML',\n inputmode: 'inputMode',\n itemid: 'itemID',\n itemprop: 'itemProp',\n itemref: 'itemRef',\n itemscope: 'itemScope',\n itemtype: 'itemType',\n keyparams: 'keyParams',\n keytype: 'keyType',\n marginwidth: 'marginWidth',\n marginheight: 'marginHeight',\n maxlength: 'maxLength',\n mediagroup: 'mediaGroup',\n minlength: 'minLength',\n nomodule: 'noModule',\n novalidate: 'noValidate',\n playsinline: 'playsInline',\n radiogroup: 'radioGroup',\n readonly: 'readOnly',\n referrerpolicy: 'referrerPolicy',\n rowspan: 'rowSpan',\n spellcheck: 'spellCheck',\n srcdoc: 'srcDoc',\n srclang: 'srcLang',\n srcset: 'srcSet',\n tabindex: 'tabIndex',\n typemustmatch: 'typeMustMatch',\n usemap: 'useMap',\n\n // SVG\n accentheight: 'accentHeight',\n 'accent-height': 'accentHeight',\n alignmentbaseline: 'alignmentBaseline',\n 'alignment-baseline': 'alignmentBaseline',\n allowreorder: 'allowReorder',\n arabicform: 'arabicForm',\n 'arabic-form': 'arabicForm',\n attributename: 'attributeName',\n attributetype: 'attributeType',\n autoreverse: 'autoReverse',\n basefrequency: 'baseFrequency',\n baselineshift: 'baselineShift',\n 'baseline-shift': 'baselineShift',\n baseprofile: 'baseProfile',\n calcmode: 'calcMode',\n capheight: 'capHeight',\n 'cap-height': 'capHeight',\n clippath: 'clipPath',\n 'clip-path': 'clipPath',\n clippathunits: 'clipPathUnits',\n cliprule: 'clipRule',\n 'clip-rule': 'clipRule',\n colorinterpolation: 'colorInterpolation',\n 'color-interpolation': 'colorInterpolation',\n colorinterpolationfilters: 'colorInterpolationFilters',\n 'color-interpolation-filters': 'colorInterpolationFilters',\n colorprofile: 'colorProfile',\n 'color-profile': 'colorProfile',\n colorrendering: 'colorRendering',\n 'color-rendering': 'colorRendering',\n contentscripttype: 'contentScriptType',\n contentstyletype: 'contentStyleType',\n diffuseconstant: 'diffuseConstant',\n dominantbaseline: 'dominantBaseline',\n 'dominant-baseline': 'dominantBaseline',\n edgemode: 'edgeMode',\n enablebackground: 'enableBackground',\n 'enable-background': 'enableBackground',\n externalresourcesrequired: 'externalResourcesRequired',\n fillopacity: 'fillOpacity',\n 'fill-opacity': 'fillOpacity',\n fillrule: 'fillRule',\n 'fill-rule': 'fillRule',\n filterres: 'filterRes',\n filterunits: 'filterUnits',\n floodopacity: 'floodOpacity',\n 'flood-opacity': 'floodOpacity',\n floodcolor: 'floodColor',\n 'flood-color': 'floodColor',\n fontfamily: 'fontFamily',\n 'font-family': 'fontFamily',\n fontsize: 'fontSize',\n 'font-size': 'fontSize',\n fontsizeadjust: 'fontSizeAdjust',\n 'font-size-adjust': 'fontSizeAdjust',\n fontstretch: 'fontStretch',\n 'font-stretch': 'fontStretch',\n fontstyle: 'fontStyle',\n 'font-style': 'fontStyle',\n fontvariant: 'fontVariant',\n 'font-variant': 'fontVariant',\n fontweight: 'fontWeight',\n 'font-weight': 'fontWeight',\n glyphname: 'glyphName',\n 'glyph-name': 'glyphName',\n glyphorientationhorizontal: 'glyphOrientationHorizontal',\n 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n glyphorientationvertical: 'glyphOrientationVertical',\n 'glyph-orientation-vertical': 'glyphOrientationVertical',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n horizadvx: 'horizAdvX',\n 'horiz-adv-x': 'horizAdvX',\n horizoriginx: 'horizOriginX',\n 'horiz-origin-x': 'horizOriginX',\n imagerendering: 'imageRendering',\n 'image-rendering': 'imageRendering',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n letterspacing: 'letterSpacing',\n 'letter-spacing': 'letterSpacing',\n lightingcolor: 'lightingColor',\n 'lighting-color': 'lightingColor',\n limitingconeangle: 'limitingConeAngle',\n markerend: 'markerEnd',\n 'marker-end': 'markerEnd',\n markerheight: 'markerHeight',\n markermid: 'markerMid',\n 'marker-mid': 'markerMid',\n markerstart: 'markerStart',\n 'marker-start': 'markerStart',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n numoctaves: 'numOctaves',\n overlineposition: 'overlinePosition',\n 'overline-position': 'overlinePosition',\n overlinethickness: 'overlineThickness',\n 'overline-thickness': 'overlineThickness',\n paintorder: 'paintOrder',\n 'paint-order': 'paintOrder',\n 'panose-1': 'panose1',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointerevents: 'pointerEvents',\n 'pointer-events': 'pointerEvents',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n refx: 'refX',\n refy: 'refY',\n renderingintent: 'renderingIntent',\n 'rendering-intent': 'renderingIntent',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n shaperendering: 'shapeRendering',\n 'shape-rendering': 'shapeRendering',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stitchtiles: 'stitchTiles',\n stopcolor: 'stopColor',\n 'stop-color': 'stopColor',\n stopopacity: 'stopOpacity',\n 'stop-opacity': 'stopOpacity',\n strikethroughposition: 'strikethroughPosition',\n 'strikethrough-position': 'strikethroughPosition',\n strikethroughthickness: 'strikethroughThickness',\n 'strikethrough-thickness': 'strikethroughThickness',\n strokedasharray: 'strokeDasharray',\n 'stroke-dasharray': 'strokeDasharray',\n strokedashoffset: 'strokeDashoffset',\n 'stroke-dashoffset': 'strokeDashoffset',\n strokelinecap: 'strokeLinecap',\n 'stroke-linecap': 'strokeLinecap',\n strokelinejoin: 'strokeLinejoin',\n 'stroke-linejoin': 'strokeLinejoin',\n strokemiterlimit: 'strokeMiterlimit',\n 'stroke-miterlimit': 'strokeMiterlimit',\n strokewidth: 'strokeWidth',\n 'stroke-width': 'strokeWidth',\n strokeopacity: 'strokeOpacity',\n 'stroke-opacity': 'strokeOpacity',\n suppresscontenteditablewarning: 'suppressContentEditableWarning',\n suppresshydrationwarning: 'suppressHydrationWarning',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textanchor: 'textAnchor',\n 'text-anchor': 'textAnchor',\n textdecoration: 'textDecoration',\n 'text-decoration': 'textDecoration',\n textlength: 'textLength',\n textrendering: 'textRendering',\n 'text-rendering': 'textRendering',\n underlineposition: 'underlinePosition',\n 'underline-position': 'underlinePosition',\n underlinethickness: 'underlineThickness',\n 'underline-thickness': 'underlineThickness',\n unicodebidi: 'unicodeBidi',\n 'unicode-bidi': 'unicodeBidi',\n unicoderange: 'unicodeRange',\n 'unicode-range': 'unicodeRange',\n unitsperem: 'unitsPerEm',\n 'units-per-em': 'unitsPerEm',\n unselectable: 'unselectable',\n valphabetic: 'vAlphabetic',\n 'v-alphabetic': 'vAlphabetic',\n vectoreffect: 'vectorEffect',\n 'vector-effect': 'vectorEffect',\n vertadvy: 'vertAdvY',\n 'vert-adv-y': 'vertAdvY',\n vertoriginx: 'vertOriginX',\n 'vert-origin-x': 'vertOriginX',\n vertoriginy: 'vertOriginY',\n 'vert-origin-y': 'vertOriginY',\n vhanging: 'vHanging',\n 'v-hanging': 'vHanging',\n videographic: 'vIdeographic',\n 'v-ideographic': 'vIdeographic',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n vmathematical: 'vMathematical',\n 'v-mathematical': 'vMathematical',\n wordspacing: 'wordSpacing',\n 'word-spacing': 'wordSpacing',\n writingmode: 'writingMode',\n 'writing-mode': 'writingMode',\n xchannelselector: 'xChannelSelector',\n xheight: 'xHeight',\n 'x-height': 'xHeight',\n xlinkactuate: 'xlinkActuate',\n 'xlink:actuate': 'xlinkActuate',\n xlinkarcrole: 'xlinkArcrole',\n 'xlink:arcrole': 'xlinkArcrole',\n xlinkhref: 'xlinkHref',\n 'xlink:href': 'xlinkHref',\n xlinkrole: 'xlinkRole',\n 'xlink:role': 'xlinkRole',\n xlinkshow: 'xlinkShow',\n 'xlink:show': 'xlinkShow',\n xlinktitle: 'xlinkTitle',\n 'xlink:title': 'xlinkTitle',\n xlinktype: 'xlinkType',\n 'xlink:type': 'xlinkType',\n xmlbase: 'xmlBase',\n 'xml:base': 'xmlBase',\n xmllang: 'xmlLang',\n 'xml:lang': 'xmlLang',\n 'xml:space': 'xmlSpace',\n xmlnsxlink: 'xmlnsXlink',\n 'xmlns:xlink': 'xmlnsXlink',\n xmlspace: 'xmlSpace',\n ychannelselector: 'yChannelSelector',\n zoomandpan: 'zoomAndPan',\n\n // event handlers\n onblur: 'onBlur',\n onchange: 'onChange',\n onclick: 'onClick',\n oncontextmenu: 'onContextMenu',\n ondoubleclick: 'onDoubleClick',\n ondrag: 'onDrag',\n ondragend: 'onDragEnd',\n ondragenter: 'onDragEnter',\n ondragexit: 'onDragExit',\n ondragleave: 'onDragLeave',\n ondragover: 'onDragOver',\n ondragstart: 'onDragStart',\n ondrop: 'onDrop',\n onerror: 'onError',\n onfocus: 'onFocus',\n oninput: 'onInput',\n oninvalid: 'onInvalid',\n onkeydown: 'onKeyDown',\n onkeypress: 'onKeyPress',\n onkeyup: 'onKeyUp',\n onload: 'onLoad',\n onmousedown: 'onMouseDown',\n onmouseenter: 'onMouseEnter',\n onmouseleave: 'onMouseLeave',\n onmousemove: 'onMouseMove',\n onmouseout: 'onMouseOut',\n onmouseover: 'onMouseOver',\n onmouseup: 'onMouseUp',\n onscroll: 'onScroll',\n onsubmit: 'onSubmit',\n ontouchcancel: 'onTouchCancel',\n ontouchend: 'onTouchEnd',\n ontouchmove: 'onTouchMove',\n ontouchstart: 'onTouchStart',\n onwheel: 'onWheel',\n};\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\n\nimport { noTextChildNodes, possibleStandardNames, randomString, styleToObject } from './helpers';\n\nexport interface Options {\n actions?: Action[];\n index?: number;\n level?: number;\n nodeOnly?: boolean;\n randomKey?: boolean;\n selector?: string;\n type?: string;\n}\n\ninterface Attributes {\n [index: string]: any;\n\n key: string;\n}\n\nexport interface Action {\n // If this returns true, the two following functions are called if they are defined\n condition: (node: Node, key: string, level: number) => boolean;\n\n // Use this to inject a component or remove the node\n // It must return something that can be rendered by React\n post?: (node: Node, key: string, level: number) => React.ReactNode;\n\n // Use this to update or replace the node\n // e.g. for removing or adding attributes, changing the node type\n pre?: (node: Node, key: string, level: number) => Node;\n}\n\nfunction parseAttributes(node: Node, reactKey: string): Attributes {\n const attributes: Attributes = {\n key: reactKey,\n };\n\n /* istanbul ignore else */\n if (node instanceof Element) {\n const nodeClassNames = node.getAttribute('class');\n\n if (nodeClassNames) {\n attributes.className = nodeClassNames;\n }\n\n [...node.attributes].forEach(d => {\n switch (d.name) {\n // this is manually handled above, so break;\n case 'class':\n break;\n case 'style':\n attributes[d.name] = styleToObject(d.value);\n break;\n case 'allowfullscreen':\n case 'allowpaymentrequest':\n case 'async':\n case 'autofocus':\n case 'autoplay':\n case 'checked':\n case 'controls':\n case 'default':\n case 'defer':\n case 'disabled':\n case 'formnovalidate':\n case 'hidden':\n case 'ismap':\n case 'itemscope':\n case 'loop':\n case 'multiple':\n case 'muted':\n case 'nomodule':\n case 'novalidate':\n case 'open':\n case 'readonly':\n case 'required':\n case 'reversed':\n case 'selected':\n case 'typemustmatch':\n attributes[possibleStandardNames[d.name] || d.name] = true;\n break;\n default:\n attributes[possibleStandardNames[d.name] || d.name] = d.value;\n }\n });\n }\n\n return attributes;\n}\n\nfunction parseChildren(childNodeList: NodeList, level: number, options: Options) {\n const children: React.ReactNode[] = [...childNodeList]\n .map((node, index) =>\n convertFromNode(node, {\n ...options,\n index,\n level: level + 1,\n }),\n )\n .filter(Boolean);\n\n if (!children.length) {\n return null;\n }\n\n return children;\n}\n\nfunction parseName(nodeName: string) {\n if (/[a-z]+[A-Z]+[a-z]+/.test(nodeName)) {\n return nodeName;\n }\n\n return nodeName.toLowerCase();\n}\n\nexport function convertFromNode(input: Node, options: Options = {}): React.ReactNode {\n if (!input || !(input instanceof Node)) {\n return null;\n }\n\n const { actions = [], index = 0, level = 0, randomKey } = options;\n\n let node = input;\n let key = `${level}-${index}`;\n const result: React.ReactNode[] = [];\n\n if (randomKey && level === 0) {\n key = `${randomString()}-${key}`;\n }\n\n /* istanbul ignore else */\n if (Array.isArray(actions)) {\n actions.forEach((action: Action) => {\n if (action.condition(node, key, level)) {\n if (typeof action.pre === 'function') {\n node = action.pre(node, key, level);\n\n if (!(node instanceof Node)) {\n node = input;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\n 'The `pre` method always must return a valid DomNode (instanceof Node) - your modification will be ignored (Hint: if you want to render a React-component, use the `post` method instead)',\n );\n }\n }\n }\n\n if (typeof action.post === 'function') {\n result.push(action.post(node, key, level));\n }\n }\n });\n }\n\n if (result.length) {\n return result;\n }\n\n switch (node.nodeType) {\n case 1: {\n // regular dom-node\n return React.createElement(\n parseName(node.nodeName),\n parseAttributes(node, key),\n parseChildren(node.childNodes, level, options),\n );\n }\n case 3: {\n // textnode\n const nodeText = node.nodeValue?.toString() || '';\n\n /* istanbul ignore else */\n if (/^\\s+$/.test(nodeText) && !/[\\u00A0\\u202F]/.test(nodeText)) {\n return null;\n }\n\n /* istanbul ignore next */\n if (!node.parentNode) {\n return nodeText;\n }\n\n const parentNodeName = node.parentNode.nodeName.toLowerCase();\n\n if (noTextChildNodes.includes(parentNodeName)) {\n /* istanbul ignore else */\n if (/\\S/.test(nodeText)) {\n // eslint-disable-next-line no-console\n console.warn(\n `A textNode is not allowed inside '${parentNodeName}'. Your text \"${nodeText}\" will be ignored`,\n );\n }\n\n return null;\n }\n\n return nodeText;\n }\n case 8: {\n // html-comment\n return null;\n }\n /* istanbul ignore next */\n default: {\n return null;\n }\n }\n}\n\nexport function convertFromString(input: string, options: Options = {}): React.ReactNode | Node {\n if (!input || typeof input !== 'string') {\n return null;\n }\n\n const { nodeOnly = false, selector = 'body > *', type = 'text/html' } = options;\n\n try {\n const parser = new DOMParser();\n const document = parser.parseFromString(input, type as DOMParserSupportedType);\n const node = document.querySelector(selector);\n\n if (!(node instanceof Node)) {\n throw new TypeError('Error parsing input');\n }\n\n if (nodeOnly) {\n return node;\n }\n\n return convertFromNode(node, options);\n } catch (error) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n\n return null;\n}\n\nexport default function convert(\n input: Node | string,\n options: Options = {},\n): React.ReactNode | Node {\n if (typeof input === 'string') {\n return convertFromString(input, options);\n }\n\n if (input instanceof Node) {\n return convertFromNode(input, options);\n }\n\n return null;\n}\n","import * as React from 'react';\nimport convert from 'react-from-dom';\n\nimport CacheStore from './cache';\nimport { STATUS } from './config';\nimport { canUseDOM, isSupportedEnvironment, omit, randomString, request } from './helpers';\nimport { FetchError, Props, State, Status } from './types';\n\n// eslint-disable-next-line import/no-mutable-exports\nexport let cacheStore: CacheStore;\n\nclass ReactInlineSVG extends React.PureComponent {\n private readonly hash: string;\n private isActive = false;\n private isInitialized = false;\n\n public static defaultProps = {\n cacheRequests: true,\n uniquifyIDs: false,\n };\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n content: '',\n element: null,\n isCached: !!props.cacheRequests && cacheStore.isCached(props.src),\n status: STATUS.IDLE,\n };\n\n this.hash = props.uniqueHash || randomString(8);\n }\n\n public componentDidMount(): void {\n this.isActive = true;\n\n if (!canUseDOM() || this.isInitialized) {\n return;\n }\n\n const { status } = this.state;\n const { src } = this.props;\n\n try {\n /* istanbul ignore else */\n if (status === STATUS.IDLE) {\n /* istanbul ignore else */\n if (!isSupportedEnvironment()) {\n throw new Error('Browser does not support SVG');\n }\n\n /* istanbul ignore else */\n if (!src) {\n throw new Error('Missing src');\n }\n\n this.load();\n }\n } catch (error: any) {\n this.handleError(error);\n }\n\n this.isInitialized = true;\n }\n\n public componentDidUpdate(previousProps: Props, previousState: State): void {\n if (!canUseDOM()) {\n return;\n }\n\n const { isCached, status } = this.state;\n const { onLoad, src } = this.props;\n\n if (previousState.status !== STATUS.READY && status === STATUS.READY) {\n /* istanbul ignore else */\n if (onLoad) {\n onLoad(src, isCached);\n }\n }\n\n if (previousProps.src !== src) {\n if (!src) {\n this.handleError(new Error('Missing src'));\n\n return;\n }\n\n this.load();\n }\n }\n\n public componentWillUnmount(): void {\n this.isActive = false;\n }\n\n private fetchContent = async () => {\n const { fetchOptions, src } = this.props;\n\n const content: string = await request(src, fetchOptions);\n\n this.handleLoad(content);\n };\n\n private getElement() {\n try {\n const node = this.getNode() as Node;\n const element = convert(node);\n\n if (!element || !React.isValidElement(element)) {\n throw new Error('Could not convert the src to a React element');\n }\n\n this.setState({\n element,\n status: STATUS.READY,\n });\n } catch (error: any) {\n this.handleError(new Error(error.message));\n }\n }\n\n private getNode() {\n const { description, title } = this.props;\n\n try {\n const svgText = this.processSVG();\n const node = convert(svgText, { nodeOnly: true });\n\n if (!node || !(node instanceof SVGSVGElement)) {\n throw new Error('Could not convert the src to a DOM Node');\n }\n\n const svg = this.updateSVGAttributes(node);\n\n if (description) {\n const originalDesc = svg.querySelector('desc');\n\n if (originalDesc && originalDesc.parentNode) {\n originalDesc.parentNode.removeChild(originalDesc);\n }\n\n const descElement = document.createElementNS('http://www.w3.org/2000/svg', 'desc');\n\n descElement.innerHTML = description;\n svg.prepend(descElement);\n }\n\n if (typeof title !== 'undefined') {\n const originalTitle = svg.querySelector('title');\n\n if (originalTitle && originalTitle.parentNode) {\n originalTitle.parentNode.removeChild(originalTitle);\n }\n\n if (title) {\n const titleElement = document.createElementNS('http://www.w3.org/2000/svg', 'title');\n\n titleElement.innerHTML = title;\n svg.prepend(titleElement);\n }\n }\n\n return svg;\n } catch (error: any) {\n return this.handleError(error);\n }\n }\n\n private handleError = (error: Error | FetchError) => {\n const { onError } = this.props;\n const status =\n error.message === 'Browser does not support SVG' ? STATUS.UNSUPPORTED : STATUS.FAILED;\n\n /* istanbul ignore else */\n if (this.isActive) {\n this.setState({ status }, () => {\n /* istanbul ignore else */\n if (typeof onError === 'function') {\n onError(error);\n }\n });\n }\n };\n\n private handleLoad = (content: string, hasCache = false) => {\n /* istanbul ignore else */\n if (this.isActive) {\n this.setState(\n {\n content,\n isCached: hasCache,\n status: STATUS.LOADED,\n },\n this.getElement,\n );\n }\n };\n\n private load() {\n /* istanbul ignore else */\n if (this.isActive) {\n this.setState(\n {\n content: '',\n element: null,\n isCached: false,\n status: STATUS.LOADING,\n },\n async () => {\n const { cacheRequests, fetchOptions, src } = this.props;\n\n const dataURI = src.match(/^data:image\\/svg[^,]*?(;base64)?,(.*)/u);\n let inlineSrc;\n\n if (dataURI) {\n inlineSrc = dataURI[1] ? window.atob(dataURI[2]) : decodeURIComponent(dataURI[2]);\n } else if (src.includes('\n linkAttributes.includes(name) && (value ? !value.includes('#') : false);\n\n if (!uniquifyIDs) {\n return node;\n }\n\n [...node.children].forEach(d => {\n if (d.attributes && d.attributes.length) {\n const attributes = Object.values(d.attributes).map(a => {\n const attribute = a;\n const match = a.value.match(/url\\((.*?)\\)/);\n\n if (match && match[1]) {\n attribute.value = a.value.replace(match[0], `url(${baseURL}${match[1]}__${this.hash})`);\n }\n\n return attribute;\n });\n\n replaceableAttributes.forEach(r => {\n const attribute = attributes.find(a => a.name === r);\n\n if (attribute && !isDataValue(r, attribute.value)) {\n attribute.value = `${attribute.value}__${this.hash}`;\n }\n });\n }\n\n if (d.children.length) {\n return this.updateSVGAttributes(d as SVGSVGElement);\n }\n\n return d;\n });\n\n return node;\n }\n\n public render(): React.ReactNode {\n const { element, status } = this.state;\n const { children = null, innerRef, loader = null } = this.props;\n const elementProps = omit(\n this.props,\n 'baseURL',\n 'cacheRequests',\n 'children',\n 'description',\n 'fetchOptions',\n 'innerRef',\n 'loader',\n 'onError',\n 'onLoad',\n 'preProcessor',\n 'src',\n 'title',\n 'uniqueHash',\n 'uniquifyIDs',\n );\n\n if (!canUseDOM()) {\n return loader;\n }\n\n if (element) {\n return React.cloneElement(element as React.ReactElement, { ref: innerRef, ...elementProps });\n }\n\n if (([STATUS.UNSUPPORTED, STATUS.FAILED] as Status[]).includes(status)) {\n return children;\n }\n\n return loader;\n }\n}\n\nexport default function InlineSVG(props: Props) {\n if (!cacheStore) {\n cacheStore = new CacheStore();\n }\n\n const { loader } = props;\n const hasCallback = React.useRef(false);\n const [isReady, setReady] = React.useState(cacheStore.isReady);\n\n React.useEffect(() => {\n if (!hasCallback.current) {\n cacheStore.onReady(() => {\n setReady(true);\n });\n\n hasCallback.current = true;\n }\n }, []);\n\n if (!isReady) {\n return loader;\n }\n\n return ;\n}\n\nexport * from './types';\n","export const CACHE_NAME = 'react-inlinesvg';\nexport const CACHE_MAX_RETRIES = 10;\n\nexport const STATUS = {\n IDLE: 'idle',\n LOADING: 'loading',\n LOADED: 'loaded',\n FAILED: 'failed',\n READY: 'ready',\n UNSUPPORTED: 'unsupported',\n} as const;\n","import type { PlainObject } from './types';\n\nexport function canUseDOM(): boolean {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\n\nexport function isSupportedEnvironment(): boolean {\n return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;\n}\n\nexport async function request(url: string, options?: RequestInit) {\n const response = await fetch(url, options);\n const contentType = response.headers.get('content-type');\n const [fileType] = (contentType || '').split(/ ?; ?/);\n\n if (response.status > 299) {\n throw new Error('Not found');\n }\n\n if (!['image/svg+xml', 'text/plain'].some(d => fileType.includes(d))) {\n throw new Error(`Content type isn't valid: ${fileType}`);\n }\n\n return response.text();\n}\n\nexport function sleep(seconds = 1) {\n return new Promise(resolve => {\n setTimeout(resolve, seconds * 1000);\n });\n}\n\nexport function supportsInlineSVG(): boolean {\n /* istanbul ignore next */\n if (!document) {\n return false;\n }\n\n const div = document.createElement('div');\n\n div.innerHTML = '';\n const svg = div.firstChild as SVGSVGElement;\n\n return !!svg && svg.namespaceURI === 'http://www.w3.org/2000/svg';\n}\n\nfunction randomCharacter(character: string) {\n return character[Math.floor(Math.random() * character.length)];\n}\n\nexport function randomString(length: number): string {\n const letters = 'abcdefghijklmnopqrstuvwxyz';\n const numbers = '1234567890';\n const charset = `${letters}${letters.toUpperCase()}${numbers}`;\n\n let R = '';\n\n for (let index = 0; index < length; index++) {\n R += randomCharacter(charset);\n }\n\n return R;\n}\n\n/**\n * Remove properties from an object\n */\nexport function omit(\n input: T,\n ...filter: K[]\n): Omit {\n const output: any = {};\n\n for (const key in input) {\n /* istanbul ignore else */\n if ({}.hasOwnProperty.call(input, key)) {\n if (!filter.includes(key as unknown as K)) {\n output[key] = input[key];\n }\n }\n }\n\n return output as Omit;\n}\n","import { CACHE_MAX_RETRIES, CACHE_NAME, STATUS } from './config';\nimport { canUseDOM, request, sleep } from './helpers';\nimport { StorageItem } from './types';\n\nexport default class CacheStore {\n private cacheApi: Cache | undefined;\n private readonly cacheStore: Map;\n private readonly subscribers: Array<() => void> = [];\n public isReady = false;\n\n constructor() {\n this.cacheStore = new Map();\n\n let cacheName = CACHE_NAME;\n let usePersistentCache = false;\n\n if (canUseDOM()) {\n cacheName = window.REACT_INLINESVG_CACHE_NAME ?? CACHE_NAME;\n usePersistentCache = !!window.REACT_INLINESVG_PERSISTENT_CACHE;\n }\n\n if (usePersistentCache) {\n caches.open(cacheName).then(cache => {\n this.cacheApi = cache;\n this.isReady = true;\n\n this.subscribers.forEach(callback => callback());\n });\n } else {\n this.isReady = true;\n }\n }\n\n public onReady(callback: () => void) {\n if (this.isReady) {\n callback();\n } else {\n this.subscribers.push(callback);\n }\n }\n\n public async get(url: string, fetchOptions?: RequestInit) {\n await (this.cacheApi\n ? this.fetchAndAddToPersistentCache(url, fetchOptions)\n : this.fetchAndAddToInternalCache(url, fetchOptions));\n\n return this.cacheStore.get(url)?.content ?? '';\n }\n\n public set(url: string, data: StorageItem) {\n this.cacheStore.set(url, data);\n }\n\n public isCached(url: string) {\n return this.cacheStore.get(url)?.status === STATUS.LOADED;\n }\n\n private async fetchAndAddToInternalCache(url: string, fetchOptions?: RequestInit) {\n const cache = this.cacheStore.get(url);\n\n if (cache?.status === STATUS.LOADING) {\n await this.handleLoading(url, async () => {\n this.cacheStore.set(url, { content: '', status: STATUS.IDLE });\n await this.fetchAndAddToInternalCache(url, fetchOptions);\n });\n\n return;\n }\n\n if (!cache?.content) {\n this.cacheStore.set(url, { content: '', status: STATUS.LOADING });\n\n try {\n const content = await request(url, fetchOptions);\n\n this.cacheStore.set(url, { content, status: STATUS.LOADED });\n } catch (error: any) {\n this.cacheStore.set(url, { content: '', status: STATUS.FAILED });\n throw error;\n }\n }\n }\n\n private async fetchAndAddToPersistentCache(url: string, fetchOptions?: RequestInit) {\n const cache = this.cacheStore.get(url);\n\n if (cache?.status === STATUS.LOADED) {\n return;\n }\n\n if (cache?.status === STATUS.LOADING) {\n await this.handleLoading(url, async () => {\n this.cacheStore.set(url, { content: '', status: STATUS.IDLE });\n await this.fetchAndAddToPersistentCache(url, fetchOptions);\n });\n\n return;\n }\n\n this.cacheStore.set(url, { content: '', status: STATUS.LOADING });\n\n const data = await this.cacheApi?.match(url);\n\n if (data) {\n const content = await data.text();\n\n this.cacheStore.set(url, { content, status: STATUS.LOADED });\n\n return;\n }\n\n try {\n await this.cacheApi?.add(new Request(url, fetchOptions));\n\n const response = await this.cacheApi?.match(url);\n const content = (await response?.text()) ?? '';\n\n this.cacheStore.set(url, { content, status: STATUS.LOADED });\n } catch (error: any) {\n this.cacheStore.set(url, { content: '', status: STATUS.FAILED });\n throw error;\n }\n }\n\n private async handleLoading(url: string, callback: () => Promise) {\n let retryCount = 0;\n\n // eslint-disable-next-line no-await-in-loop\n while (this.cacheStore.get(url)?.status === STATUS.LOADING && retryCount < CACHE_MAX_RETRIES) {\n // eslint-disable-next-line no-await-in-loop\n await sleep(0.1);\n retryCount += 1;\n }\n\n if (retryCount >= CACHE_MAX_RETRIES) {\n await callback();\n }\n }\n\n public keys(): Array {\n return [...this.cacheStore.keys()];\n }\n\n public data(): Array> {\n return [...this.cacheStore.entries()].map(([key, value]) => ({ [key]: value }));\n }\n\n public async delete(url: string) {\n if (this.cacheApi) {\n await this.cacheApi.delete(url);\n }\n\n this.cacheStore.delete(url);\n }\n\n public async clear() {\n if (this.cacheApi) {\n const keys = await this.cacheApi.keys();\n\n for (const key of keys) {\n // eslint-disable-next-line no-await-in-loop\n await this.cacheApi.delete(key);\n }\n }\n\n this.cacheStore.clear();\n }\n}\n","import type { Client, Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\nimport { getClient } from '../exports';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nlet originalFunctionToString: () => void;\n\nconst INTEGRATION_NAME = 'FunctionToString';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _functionToStringIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // intrinsics (like Function.prototype) might be immutable in some environments\n // e.g. Node with --frozen-intrinsics, XS (an embedded JavaScript engine) or SES (a JavaScript proposal)\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const originalFunction = getOriginalFunction(this);\n const context =\n SETUP_CLIENTS.has(getClient() as Client) && originalFunction !== undefined ? originalFunction : this;\n return originalFunctionToString.apply(context, args);\n };\n } catch {\n // ignore errors here, just don't patch this\n }\n },\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * ```js\n * Sentry.init({\n * integrations: [\n * functionToStringIntegration(),\n * ],\n * });\n * ```\n */\nexport const functionToStringIntegration = defineIntegration(_functionToStringIntegration);\n\n/**\n * Patch toString calls to return proper name for wrapped functions.\n *\n * @deprecated Use `functionToStringIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const FunctionToString = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n functionToStringIntegration,\n) as IntegrationClass void }>;\n\n// eslint-disable-next-line deprecation/deprecation\nexport type FunctionToString = typeof FunctionToString;\n","import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [\n /^Script error\\.?$/,\n /^Javascript error: Script error\\.? on line 0$/,\n /^ResizeObserver loop completed with undelivered notifications.$/,\n /^Cannot redefine property: googletag$/,\n];\n\nconst DEFAULT_IGNORE_TRANSACTIONS = [\n /^.*\\/healthcheck$/,\n /^.*\\/healthy$/,\n /^.*\\/live$/,\n /^.*\\/ready$/,\n /^.*\\/heartbeat$/,\n /^.*\\/health$/,\n /^.*\\/healthz$/,\n];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n disableTransactionDefaults: boolean;\n}\n\nconst INTEGRATION_NAME = 'InboundFilters';\nconst _inboundFiltersIntegration = ((options: Partial = {}) => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n processEvent(event, _hint, client) {\n const clientOptions = client.getOptions();\n const mergedOptions = _mergeOptions(options, clientOptions);\n return _shouldDropEvent(event, mergedOptions) ? null : event;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const inboundFiltersIntegration = defineIntegration(_inboundFiltersIntegration);\n\n/**\n * Inbound filters configurable by the user.\n * @deprecated Use `inboundFiltersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const InboundFilters = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n inboundFiltersIntegration,\n) as IntegrationClass void }> & {\n new (\n options?: Partial<{\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreTransactions: Array;\n ignoreInternal: boolean;\n disableErrorDefaults: boolean;\n disableTransactionDefaults: boolean;\n }>,\n ): Integration;\n};\n\nfunction _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...(internalOptions.disableErrorDefaults ? [] : DEFAULT_IGNORE_ERRORS),\n ],\n ignoreTransactions: [\n ...(internalOptions.ignoreTransactions || []),\n ...(clientOptions.ignoreTransactions || []),\n ...(internalOptions.disableTransactionDefaults ? [] : DEFAULT_IGNORE_TRANSACTIONS),\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\nfunction _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isIgnoredTransaction(event, options.ignoreTransactions)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreTransactions\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n // If event.type, this is not an error\n if (event.type || !ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message => stringMatchesSomePattern(message, ignoreErrors));\n}\n\nfunction _isIgnoredTransaction(event: Event, ignoreTransactions?: Array): boolean {\n if (event.type !== 'transaction' || !ignoreTransactions || !ignoreTransactions.length) {\n return false;\n }\n\n const name = event.transaction;\n return name ? stringMatchesSomePattern(name, ignoreTransactions) : false;\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : stringMatchesSomePattern(url, denyUrls);\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : stringMatchesSomePattern(url, allowUrls);\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n const possibleMessages: string[] = [];\n\n if (event.message) {\n possibleMessages.push(event.message);\n }\n\n let lastException;\n try {\n // @ts-expect-error Try catching to save bundle size\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n lastException = event.exception.values[event.exception.values.length - 1];\n } catch (e) {\n // try catching to save bundle size checking existence of variables\n }\n\n if (lastException) {\n if (lastException.value) {\n possibleMessages.push(lastException.value);\n if (lastException.type) {\n possibleMessages.push(`${lastException.type}: ${lastException.value}`);\n }\n }\n }\n\n if (DEBUG_BUILD && possibleMessages.length === 0) {\n logger.error(`Could not extract message for event ${getEventDescription(event)}`);\n }\n\n return possibleMessages;\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-expect-error can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-expect-error we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types';\n\nimport { isInstanceOf } from './is';\nimport { truncate } from './string';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n maxValueLimit: number = 250,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): void {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return;\n }\n\n // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n const originalException: Exception | undefined =\n event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n // We only create exception grouping if there is an exception in the event.\n if (originalException) {\n event.exception.values = truncateAggregateExceptions(\n aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n hint.originalException as ExtendedError,\n key,\n event.exception.values,\n originalException,\n 0,\n ),\n maxValueLimit,\n );\n }\n}\n\nfunction aggregateExceptionsFromError(\n exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n prevExceptions: Exception[],\n exception: Exception,\n exceptionId: number,\n): Exception[] {\n if (prevExceptions.length >= limit + 1) {\n return prevExceptions;\n }\n\n let newExceptions = [...prevExceptions];\n\n // Recursively call this function in order to walk down a chain of errors\n if (isInstanceOf(error[key], Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, error[key]);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n error[key],\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n\n // This will create exception grouping for AggregateErrors\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n if (Array.isArray(error.errors)) {\n error.errors.forEach((childError, i) => {\n if (isInstanceOf(childError, Error)) {\n applyExceptionGroupFieldsForParentException(exception, exceptionId);\n const newException = exceptionFromErrorImplementation(parser, childError);\n const newExceptionId = newExceptions.length;\n applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n newExceptions = aggregateExceptionsFromError(\n exceptionFromErrorImplementation,\n parser,\n limit,\n childError,\n key,\n [newException, ...newExceptions],\n newException,\n newExceptionId,\n );\n }\n });\n }\n\n return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n exception_id: exceptionId,\n };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n exception: Exception,\n source: string,\n exceptionId: number,\n parentId: number | undefined,\n): void {\n // Don't know if this default makes sense. The protocol requires us to set these values so we pick *some* default.\n exception.mechanism = exception.mechanism || { type: 'generic', handled: true };\n\n exception.mechanism = {\n ...exception.mechanism,\n type: 'chained',\n source,\n exception_id: exceptionId,\n parent_id: parentId,\n };\n}\n\n/**\n * Truncate the message (exception.value) of all exceptions in the event.\n * Because this event processor is ran after `applyClientOptions`,\n * we need to truncate the message of the added exceptions here.\n */\nfunction truncateAggregateExceptions(exceptions: Exception[], maxValueLength: number): Exception[] {\n return exceptions.map(exception => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n return exception;\n });\n}\n","import type {\n Client,\n Event,\n EventHint,\n Exception,\n Extras,\n Hub,\n Mechanism,\n ParameterizedString,\n Severity,\n SeverityLevel,\n StackFrame,\n StackParser,\n} from '@sentry/types';\n\nimport { isError, isParameterizedString, isPlainObject } from './is';\nimport { addExceptionMechanism, addExceptionTypeValue } from './misc';\nimport { normalizeToSize } from './normalize';\nimport { extractExceptionKeysForMessage } from './object';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nexport function parseStackFrames(stackParser: StackParser, error: Error): StackFrame[] {\n return stackParser(error.stack || '', 1);\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nexport function exceptionFromError(stackParser: StackParser, error: Error): Exception {\n const exception: Exception = {\n type: error.name || error.constructor.name,\n value: error.message,\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\nfunction getMessageForObject(exception: object): string {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n } else {\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n return `Object captured as exception with keys: ${extractExceptionKeysForMessage(\n exception as Record,\n )}`;\n }\n}\n\n/**\n * Builds and Event from a Exception\n *\n * TODO(v8): Remove getHub fallback\n * @hidden\n */\nexport function eventFromUnknownInput(\n // eslint-disable-next-line deprecation/deprecation\n getHubOrClient: (() => Hub) | Client | undefined,\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n): Event {\n const client =\n typeof getHubOrClient === 'function'\n ? // eslint-disable-next-line deprecation/deprecation\n getHubOrClient().getClient()\n : getHubOrClient;\n\n let ex: unknown = exception;\n const providedMechanism: Mechanism | undefined =\n hint && hint.data && (hint.data as { mechanism: Mechanism }).mechanism;\n const mechanism: Mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n let extras: Extras | undefined;\n\n if (!isError(exception)) {\n if (isPlainObject(exception)) {\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n extras = { ['__serialized__']: normalizeToSize(exception as Record, normalizeDepth) };\n\n const message = getMessageForObject(exception);\n ex = (hint && hint.syntheticException) || new Error(message);\n (ex as Error).message = message;\n } else {\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n ex = (hint && hint.syntheticException) || new Error(exception as string);\n (ex as Error).message = exception as string;\n }\n mechanism.synthetic = true;\n }\n\n const event: Event = {\n exception: {\n values: [exceptionFromError(stackParser, ex as Error)],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint && hint.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n event_id: hint && hint.event_id,\n level,\n };\n\n if (attachStacktrace && hint && hint.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n","import type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent, exceptionFromError } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Adds SDK info to an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n","export type { ClientClass } from './sdk';\nexport type { AsyncContextStrategy, Carrier, Layer, RunWithAsyncContextOptions } from './hub';\nexport type { OfflineStore, OfflineTransportOptions } from './transports/offline';\nexport type { ServerRuntimeClientOptions } from './server-runtime-client';\nexport type { RequestDataIntegrationOptions } from './integrations/requestdata';\nexport type { IntegrationIndex } from './integration';\n\nexport * from './tracing';\nexport * from './semanticAttributes';\nexport { createEventEnvelope, createSessionEnvelope } from './envelope';\nexport {\n addBreadcrumb,\n captureCheckIn,\n withMonitor,\n captureException,\n captureEvent,\n captureMessage,\n close,\n // eslint-disable-next-line deprecation/deprecation\n configureScope,\n flush,\n // eslint-disable-next-line deprecation/deprecation\n lastEventId,\n // eslint-disable-next-line deprecation/deprecation\n startTransaction,\n setContext,\n setExtra,\n setExtras,\n setTag,\n setTags,\n setUser,\n withScope,\n withIsolationScope,\n getClient,\n isInitialized,\n getCurrentScope,\n startSession,\n endSession,\n captureSession,\n withActiveSpan,\n} from './exports';\nexport {\n // eslint-disable-next-line deprecation/deprecation\n getCurrentHub,\n getIsolationScope,\n getHubFromCarrier,\n // eslint-disable-next-line deprecation/deprecation\n Hub,\n // eslint-disable-next-line deprecation/deprecation\n makeMain,\n getMainCarrier,\n runWithAsyncContext,\n setHubOnCarrier,\n ensureHubOnCarrier,\n setAsyncContextStrategy,\n} from './hub';\nexport { makeSession, closeSession, updateSession } from './session';\nexport { SessionFlusher } from './sessionflusher';\nexport { Scope, getGlobalScope, setGlobalScope } from './scope';\nexport {\n notifyEventProcessors,\n // eslint-disable-next-line deprecation/deprecation\n addGlobalEventProcessor,\n} from './eventProcessors';\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api';\nexport { BaseClient, addEventProcessor } from './baseclient';\nexport { ServerRuntimeClient } from './server-runtime-client';\nexport { initAndBind, setCurrentClient } from './sdk';\nexport { createTransport } from './transports/base';\nexport { makeOfflineTransport } from './transports/offline';\nexport { makeMultiplexedTransport } from './transports/multiplexed';\nexport { SDK_VERSION } from './version';\nexport {\n getIntegrationsToSetup,\n addIntegration,\n defineIntegration,\n // eslint-disable-next-line deprecation/deprecation\n convertIntegrationFnToClass,\n} from './integration';\nexport { applyScopeDataToEvent, mergeScopeData } from './utils/applyScopeDataToEvent';\nexport { prepareEvent } from './utils/prepareEvent';\nexport { createCheckInEnvelope } from './checkin';\nexport { createSpanEnvelope } from './span';\nexport { hasTracingEnabled } from './utils/hasTracingEnabled';\nexport { isSentryRequestUrl } from './utils/isSentryRequestUrl';\nexport { handleCallbackErrors } from './utils/handleCallbackErrors';\nexport { parameterize } from './utils/parameterize';\nexport { spanToTraceHeader, spanToJSON, spanIsSampled, spanToTraceContext } from './utils/spanUtils';\nexport { getRootSpan } from './utils/getRootSpan';\nexport { applySdkMetadata } from './utils/sdkMetadata';\nexport { DEFAULT_ENVIRONMENT } from './constants';\n/* eslint-disable deprecation/deprecation */\nexport { ModuleMetadata } from './integrations/metadata';\nexport { RequestData } from './integrations/requestdata';\nexport { InboundFilters } from './integrations/inboundfilters';\nexport { FunctionToString } from './integrations/functiontostring';\nexport { LinkedErrors } from './integrations/linkederrors';\n/* eslint-enable deprecation/deprecation */\nimport * as INTEGRATIONS from './integrations';\nexport { functionToStringIntegration } from './integrations/functiontostring';\nexport { inboundFiltersIntegration } from './integrations/inboundfilters';\nexport { linkedErrorsIntegration } from './integrations/linkederrors';\nexport { moduleMetadataIntegration } from './integrations/metadata';\nexport { requestDataIntegration } from './integrations/requestdata';\nexport { metrics } from './metrics/exports';\n\n/** @deprecated Import the integration function directly, e.g. `inboundFiltersIntegration()` instead of `new Integrations.InboundFilter(). */\nconst Integrations = INTEGRATIONS;\n\n// eslint-disable-next-line deprecation/deprecation\nexport { Integrations };\n","import type { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { consoleSandbox, logger } from './logger';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents or undefined if @param str is not a valid DSN string\n */\nexport function dsnFromString(str: string): DsnComponents | undefined {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n // This should be logged to the console\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return undefined;\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean {\n if (!DEBUG_BUILD) {\n return true;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n const hasMissingRequiredComponent = requiredComponents.find(component => {\n if (!dsn[component]) {\n logger.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n\n if (hasMissingRequiredComponent) {\n return false;\n }\n\n if (!projectId.match(/^\\d+$/)) {\n logger.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n\n if (!isValidProtocol(protocol)) {\n logger.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n logger.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Creates a valid Sentry Dsn object, identifying a Sentry instance and project.\n * @returns a valid DsnComponents object or `undefined` if @param from is an invalid DSN source\n */\nexport function makeDsn(from: DsnLike): DsnComponents | undefined {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return undefined;\n }\n return components;\n}\n","import type {\n Attachment,\n AttachmentItem,\n BaseEnvelopeHeaders,\n BaseEnvelopeItemHeaders,\n DataCategory,\n DsnComponents,\n Envelope,\n EnvelopeItemType,\n Event,\n EventEnvelopeHeaders,\n SdkInfo,\n SdkMetadata,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dsnToString } from './dsn';\nimport { normalize } from './normalize';\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as unknown as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n *\n * If the callback returns true, the rest of the items will be skipped.\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => boolean | void,\n): boolean {\n const envelopeItems = envelope[1];\n\n for (const envelopeItem of envelopeItems) {\n const envelopeItemType = envelopeItem[0].type;\n const result = callback(envelopeItem, envelopeItemType);\n\n if (result) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if the envelope contains any of the given envelope item types\n */\nexport function envelopeContainsItemType(envelope: Envelope, types: EnvelopeItemType[]): boolean {\n return forEachEnvelopeItem(envelope, (_, type) => types.includes(type));\n}\n\n/**\n * Encode a string to UTF8.\n */\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item;\n\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n\n if (typeof payload === 'string' || payload instanceof Uint8Array) {\n append(payload);\n } else {\n let stringifiedPayload: string;\n try {\n stringifiedPayload = JSON.stringify(payload);\n } catch (e) {\n // In case, despite all our efforts to keep `payload` circular-dependency-free, `JSON.strinify()` still\n // fails, we try again after normalizing it again with infinite normalization depth. This of course has a\n // performance impact but in this case a performance hit is better than throwing.\n stringifiedPayload = JSON.stringify(normalize(payload));\n }\n append(stringifiedPayload);\n }\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\nexport interface TextDecoderInternal {\n decode(input?: Uint8Array): string;\n}\n\n/**\n * Parses an envelope\n */\nexport function parseEnvelope(\n env: string | Uint8Array,\n textEncoder: TextEncoderInternal,\n textDecoder: TextDecoderInternal,\n): Envelope {\n let buffer = typeof env === 'string' ? textEncoder.encode(env) : env;\n\n function readBinary(length: number): Uint8Array {\n const bin = buffer.subarray(0, length);\n // Replace the buffer with the remaining data excluding trailing newline\n buffer = buffer.subarray(length + 1);\n return bin;\n }\n\n function readJson(): T {\n let i = buffer.indexOf(0xa);\n // If we couldn't find a newline, we must have found the end of the buffer\n if (i < 0) {\n i = buffer.length;\n }\n\n return JSON.parse(textDecoder.decode(readBinary(i))) as T;\n }\n\n const envelopeHeader = readJson();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const items: [any, any][] = [];\n\n while (buffer.length) {\n const itemHeader = readJson();\n const binaryLength = typeof itemHeader.length === 'number' ? itemHeader.length : undefined;\n\n items.push([itemHeader, binaryLength ? readBinary(binaryLength) : readJson()]);\n }\n\n return [envelopeHeader, items];\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n profile: 'profile',\n replay_event: 'replay',\n replay_recording: 'replay',\n check_in: 'monitor',\n feedback: 'feedback',\n span: 'span',\n statsd: 'metric_bucket',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n/** Extracts the minimal SDK info from the metadata or an events */\nexport function getSdkMetadataForEnvelopeHeader(metadataOrEvent?: SdkMetadata | Event): SdkInfo | undefined {\n if (!metadataOrEvent || !metadataOrEvent.sdk) {\n return;\n }\n const { name, version } = metadataOrEvent.sdk;\n return { name, version };\n}\n\n/**\n * Creates event envelope headers, based on event, sdk info and tunnel\n * Note: This function was extracted from the core package to make it available in Replay\n */\nexport function createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn?: DsnComponents,\n): EventEnvelopeHeaders {\n const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext;\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && dsn && { dsn: dsnToString(dsn) }),\n ...(dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }),\n }),\n };\n}\n","import type { Event, StackParser } from '@sentry/types';\nimport { GLOBAL_OBJ } from '@sentry/utils';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\nfunction ensureMetadataStacksAreParsed(parser: StackParser): void {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMetadataForUrl(parser: StackParser, filename: string): any | undefined {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nexport function addMetadataToStackFrames(parser: StackParser, event: Event): void {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values!.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n if (!frame.filename) {\n continue;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Strips metadata from stack frames.\n */\nexport function stripMetadataFromStackFrames(event: Event): void {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values!.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n delete frame.module_metadata;\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n","import type { Client, Event, EventHint, EventItem, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { forEachEnvelopeItem } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\n\nimport { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata';\n\nconst INTEGRATION_NAME = 'ModuleMetadata';\n\nconst _moduleMetadataIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (typeof client.on !== 'function') {\n return;\n }\n\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n },\n\n processEvent(event, _hint, client) {\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n return event;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const moduleMetadataIntegration = defineIntegration(_moduleMetadataIntegration);\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n *\n * @deprecated Use `moduleMetadataIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const ModuleMetadata = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n moduleMetadataIntegration,\n) as IntegrationClass<\n Integration & {\n setup: (client: Client) => void;\n processEvent: (event: Event, hint: EventHint, client: Client) => Event;\n }\n>;\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nexport const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nexport const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n","import type { ConsoleLevel } from '@sentry/types';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public logLevel: ConsoleLevel;\n\n public constructor(public message: string, logLevel: ConsoleLevel = 'warn') {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n","import type { ClientOptions, DsnComponents, DsnLike, SdkInfo } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents, sdkInfo: SdkInfo | undefined): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(\n dsn: DsnComponents,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions: string | ClientOptions = {} as ClientOptions,\n): string {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n const tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n const sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n if (!dsn) {\n return '';\n }\n\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'onClose') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import type { MeasurementUnit, MetricBucketItem, Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport type { MetricType } from './types';\n\n/**\n * Generate bucket key from metric properties.\n */\nexport function getBucketKey(\n metricType: MetricType,\n name: string,\n unit: MeasurementUnit,\n tags: Record,\n): string {\n const stringifiedTags = Object.entries(dropUndefinedKeys(tags)).sort((a, b) => a[0].localeCompare(b[0]));\n return `${metricType}${name}${unit}${stringifiedTags}`;\n}\n\n/* eslint-disable no-bitwise */\n/**\n * Simple hash function for strings.\n */\nexport function simpleHash(s: string): number {\n let rv = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n rv = (rv << 5) - rv + c;\n rv &= rv;\n }\n return rv >>> 0;\n}\n/* eslint-enable no-bitwise */\n\n/**\n * Serialize metrics buckets into a string based on statsd format.\n *\n * Example of format:\n * metric.name@second:1:1.2|d|#a:value,b:anothervalue|T12345677\n * Segments:\n * name: metric.name\n * unit: second\n * value: [1, 1.2]\n * type of metric: d (distribution)\n * tags: { a: value, b: anothervalue }\n * timestamp: 12345677\n */\nexport function serializeMetricBuckets(metricBucketItems: MetricBucketItem[]): string {\n let out = '';\n for (const item of metricBucketItems) {\n const tagEntries = Object.entries(item.tags);\n const maybeTags = tagEntries.length > 0 ? `|#${tagEntries.map(([key, value]) => `${key}:${value}`).join(',')}` : '';\n out += `${item.name}@${item.unit}:${item.metric}|${item.metricType}${maybeTags}|T${item.timestamp}\\n`;\n }\n return out;\n}\n\n/** Sanitizes units */\nexport function sanitizeUnit(unit: string): string {\n return unit.replace(/[^\\w]+/gi, '_');\n}\n\n/** Sanitizes metric keys */\nexport function sanitizeMetricKey(key: string): string {\n return key.replace(/[^\\w\\-.]+/gi, '_');\n}\n\nfunction sanitizeTagKey(key: string): string {\n return key.replace(/[^\\w\\-./]+/gi, '');\n}\n\nconst tagValueReplacements: [string, string][] = [\n ['\\n', '\\\\n'],\n ['\\r', '\\\\r'],\n ['\\t', '\\\\t'],\n ['\\\\', '\\\\\\\\'],\n ['|', '\\\\u{7c}'],\n [',', '\\\\u{2c}'],\n];\n\nfunction getCharOrReplacement(input: string): string {\n for (const [search, replacement] of tagValueReplacements) {\n if (input === search) {\n return replacement;\n }\n }\n\n return input;\n}\n\nfunction sanitizeTagValue(value: string): string {\n return [...value].reduce((acc, char) => acc + getCharOrReplacement(char), '');\n}\n\n/**\n * Sanitizes tags.\n */\nexport function sanitizeTags(unsanitizedTags: Record): Record {\n const tags: Record = {};\n for (const key in unsanitizedTags) {\n if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) {\n const sanitizedKey = sanitizeTagKey(key);\n tags[sanitizedKey] = sanitizeTagValue(String(unsanitizedTags[key]));\n }\n }\n return tags;\n}\n","import type { DsnComponents, MetricBucketItem, SdkMetadata, StatsdEnvelope, StatsdItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\nimport { serializeMetricBuckets } from './utils';\n\n/**\n * Create envelope from a metric aggregate.\n */\nexport function createMetricEnvelope(\n metricBucketItems: Array,\n dsn?: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): StatsdEnvelope {\n const headers: StatsdEnvelope[0] = {\n sent_at: new Date().toISOString(),\n };\n\n if (metadata && metadata.sdk) {\n headers.sdk = {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n };\n }\n\n if (!!tunnel && dsn) {\n headers.dsn = dsnToString(dsn);\n }\n\n const item = createMetricEnvelopeItem(metricBucketItems);\n return createEnvelope(headers, [item]);\n}\n\nfunction createMetricEnvelopeItem(metricBucketItems: MetricBucketItem[]): StatsdItem {\n const payload = serializeMetricBuckets(metricBucketItems);\n const metricHeaders: StatsdItem[0] = {\n type: 'statsd',\n length: payload.length,\n };\n return [metricHeaders, payload];\n}\n","/* eslint-disable max-lines */\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n DynamicSamplingContext,\n Envelope,\n ErrorEvent,\n Event,\n EventDropReason,\n EventHint,\n EventProcessor,\n FeedbackEvent,\n Integration,\n IntegrationClass,\n MetricBucketItem,\n MetricsAggregator,\n Outcome,\n ParameterizedString,\n SdkMetadata,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n StartSpanOptions,\n Transaction,\n TransactionEvent,\n Transport,\n TransportMakeRequestResponse,\n} from '@sentry/types';\nimport {\n SentryError,\n SyncPromise,\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n isParameterizedString,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n rejectedSyncPromise,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { getClient } from './exports';\nimport { getIsolationScope } from './hub';\nimport type { IntegrationIndex } from './integration';\nimport { afterSetupIntegrations } from './integration';\nimport { setupIntegration, setupIntegrations } from './integration';\nimport { createMetricEnvelope } from './metrics/envelope';\nimport type { Scope } from './scope';\nimport { updateSession } from './session';\nimport { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext';\nimport { prepareEvent } from './utils/prepareEvent';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * A reference to a metrics aggregator\n *\n * @experimental Note this is alpha API. It may experience breaking changes in the future.\n */\n public metricsAggregator?: MetricsAggregator;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex;\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean;\n\n /** Number of calls being processed */\n protected _numProcessing: number;\n\n protected _eventProcessors: EventProcessor[];\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number };\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n private _hooks: Record;\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n this._integrations = {};\n this._integrationsInitialized = false;\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(eventMessage, level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope: Scope | undefined = sdkProcessingMetadata.capturedSpanScope;\n\n this._process(\n this._captureEvent(event, hint, capturedSpanScope || scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!(typeof session.release === 'string')) {\n DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @see SdkMetadata in @sentry/types\n *\n * @return The metadata of the SDK\n */\n public getSdkMetadata(): SdkMetadata | undefined {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n if (this.metricsAggregator) {\n this.metricsAggregator.flush();\n }\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n if (this.metricsAggregator) {\n this.metricsAggregator.close();\n }\n return result;\n });\n }\n\n /** Get all installed event processors. */\n public getEventProcessors(): EventProcessor[] {\n return this._eventProcessors;\n }\n\n /** @inheritDoc */\n public addEventProcessor(eventProcessor: EventProcessor): void {\n this._eventProcessors.push(eventProcessor);\n }\n\n /**\n * This is an internal function to setup all integrations that should run on the client.\n * @deprecated Use `client.init()` instead.\n */\n public setupIntegrations(forceInitialize?: boolean): void {\n if ((forceInitialize && !this._integrationsInitialized) || (this._isEnabled() && !this._integrationsInitialized)) {\n this._setupIntegrations();\n }\n }\n\n /** @inheritdoc */\n public init(): void {\n if (this._isEnabled()) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this.getIntegrationByName(integrationId);\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n */\n public getIntegrationByName(integrationName: string): T | undefined {\n return this._integrations[integrationName] as T | undefined;\n }\n\n /**\n * Returns the client's instance of the given integration class, it any.\n * @deprecated Use `getIntegrationByName()` instead.\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public addIntegration(integration: Integration): void {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n const promise = this._sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(env);\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory, _event?: Event): void {\n // Note: we use `event` in replay, where we overwrite this hook.\n\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /**\n * @inheritDoc\n */\n public captureAggregateMetrics(metricBucketItems: Array): void {\n DEBUG_BUILD && logger.log(`Flushing aggregated metrics, number of metrics: ${metricBucketItems.length}`);\n const metricsEnvelope = createMetricEnvelope(\n metricBucketItems,\n this._dsn,\n this._options._metadata,\n this._options.tunnel,\n );\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(metricsEnvelope);\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n /* eslint-disable @typescript-eslint/unified-signatures */\n\n /** @inheritdoc */\n public on(hook: 'startTransaction', callback: (transaction: Transaction) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'finishTransaction', callback: (transaction: Transaction) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeEnvelope', callback: (envelope: Envelope) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeSendEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'preprocessEvent', callback: (event: Event, hint?: EventHint) => void): void;\n\n /** @inheritdoc */\n public on(\n hook: 'afterSendEvent',\n callback: (event: Event, sendResponse: TransportMakeRequestResponse | void) => void,\n ): void;\n\n /** @inheritdoc */\n public on(hook: 'beforeAddBreadcrumb', callback: (breadcrumb: Breadcrumb, hint?: BreadcrumbHint) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'otelSpanEnd', callback: (otelSpan: unknown, mutableOptions: { drop: boolean }) => void): void;\n\n /** @inheritdoc */\n public on(\n hook: 'beforeSendFeedback',\n callback: (feedback: FeedbackEvent, options?: { includeReplay: boolean }) => void,\n ): void;\n\n /** @inheritdoc */\n public on(hook: 'startPageLoadSpan', callback: (options: StartSpanOptions) => void): void;\n\n /** @inheritdoc */\n public on(hook: 'startNavigationSpan', callback: (options: StartSpanOptions) => void): void;\n\n /** @inheritdoc */\n public on(hook: string, callback: unknown): void {\n if (!this._hooks[hook]) {\n this._hooks[hook] = [];\n }\n\n // @ts-expect-error We assue the types are correct\n this._hooks[hook].push(callback);\n }\n\n /** @inheritdoc */\n public emit(hook: 'startTransaction', transaction: Transaction): void;\n\n /** @inheritdoc */\n public emit(hook: 'finishTransaction', transaction: Transaction): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeEnvelope', envelope: Envelope): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeSendEvent', event: Event, hint?: EventHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'preprocessEvent', event: Event, hint?: EventHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'afterSendEvent', event: Event, sendResponse: TransportMakeRequestResponse | void): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeAddBreadcrumb', breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void;\n\n /** @inheritdoc */\n public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;\n\n /** @inheritdoc */\n public emit(hook: 'otelSpanEnd', otelSpan: unknown, mutableOptions: { drop: boolean }): void;\n\n /** @inheritdoc */\n public emit(hook: 'beforeSendFeedback', feedback: FeedbackEvent, options?: { includeReplay: boolean }): void;\n\n /** @inheritdoc */\n public emit(hook: 'startPageLoadSpan', options: StartSpanOptions): void;\n\n /** @inheritdoc */\n public emit(hook: 'startNavigationSpan', options: StartSpanOptions): void;\n\n /** @inheritdoc */\n public emit(hook: string, ...rest: unknown[]): void {\n if (this._hooks[hook]) {\n this._hooks[hook].forEach(callback => callback(...rest));\n }\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n protected _setupIntegrations(): void {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n\n // TODO v8: We don't need this flag anymore\n this._integrationsInitialized = true;\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(\n event: Event,\n hint: EventHint,\n scope?: Scope,\n isolationScope = getIsolationScope(),\n ): PromiseLike {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n return prepareEvent(options, event, hint, scope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n const propagationContext = {\n ...isolationScope.getPropagationContext(),\n ...(scope ? scope.getPropagationContext() : undefined),\n };\n\n const trace = evt.contexts && evt.contexts.trace;\n if (!trace && propagationContext) {\n const { traceId: trace_id, spanId, parentSpanId, dsc } = propagationContext;\n evt.contexts = {\n trace: {\n trace_id,\n span_id: spanId,\n parent_span_id: parentSpanId,\n },\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = dsc ? dsc : getDynamicSamplingContextFromClient(trace_id, this, scope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n }\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason as SentryError;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (isError && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory: DataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanIsolationScope: Scope | undefined = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n return this._prepareEvent(event, hint, scope, capturedSpanIsolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): PromiseLike | void {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n return this._transport.send(envelope).then(null, reason => {\n DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n } else {\n DEBUG_BUILD && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult: PromiseLike | Event | null,\n beforeSendLabel: string,\n): PromiseLike | Event | null {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n options: ClientOptions,\n event: Event,\n hint: EventHint,\n): PromiseLike | Event | null {\n const { beforeSend, beforeSendTransaction } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event) && beforeSendTransaction) {\n return beforeSendTransaction(event, hint);\n }\n\n return event;\n}\n\nfunction isErrorEvent(event: Event): event is ErrorEvent {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/**\n * Add an event processor to the current client.\n * This event processor will run for all events processed by this client.\n */\nexport function addEventProcessor(callback: EventProcessor): void {\n const client = getClient();\n\n if (!client || !client.addEventProcessor) {\n return;\n }\n\n client.addEventProcessor(callback);\n}\n","import type { HandlerDataError } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnErrorHandler: (typeof GLOBAL_OBJ)['onerror'] | null = null;\n\n/**\n * Add an instrumentation handler for when an error is captured by the global error handler.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalErrorInstrumentationHandler(handler: (data: HandlerDataError) => void): void {\n const type = 'error';\n addHandler(type, handler);\n maybeInstrument(type, instrumentError);\n}\n\nfunction instrumentError(): void {\n _oldOnErrorHandler = GLOBAL_OBJ.onerror;\n\n GLOBAL_OBJ.onerror = function (\n msg: string | object,\n url?: string,\n line?: number,\n column?: number,\n error?: Error,\n ): boolean {\n const handlerData: HandlerDataError = {\n column,\n error,\n line,\n msg,\n url,\n };\n triggerHandlers('error', handlerData);\n\n if (_oldOnErrorHandler && !_oldOnErrorHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n\n GLOBAL_OBJ.onerror.__SENTRY_INSTRUMENTED__ = true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { HandlerDataUnhandledRejection } from '@sentry/types';\n\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nlet _oldOnUnhandledRejectionHandler: (typeof GLOBAL_OBJ)['onunhandledrejection'] | null = null;\n\n/**\n * Add an instrumentation handler for when an unhandled promise rejection is captured.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addGlobalUnhandledRejectionInstrumentationHandler(\n handler: (data: HandlerDataUnhandledRejection) => void,\n): void {\n const type = 'unhandledrejection';\n addHandler(type, handler);\n maybeInstrument(type, instrumentUnhandledRejection);\n}\n\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = GLOBAL_OBJ.onunhandledrejection;\n\n GLOBAL_OBJ.onunhandledrejection = function (e: any): boolean {\n const handlerData: HandlerDataUnhandledRejection = e;\n triggerHandlers('unhandledrejection', handlerData);\n\n if (_oldOnUnhandledRejectionHandler && !_oldOnUnhandledRejectionHandler.__SENTRY_LOADER__) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n\n GLOBAL_OBJ.onunhandledrejection.__SENTRY_INSTRUMENTED__ = true;\n}\n","import type { Transaction } from '@sentry/types';\nimport { extractTraceparentData as _extractTraceparentData } from '@sentry/utils';\n\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\n\n/**\n * Grabs active transaction off scope.\n *\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const hub = maybeHub || getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const scope = hub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n return scope.getTransaction() as T | undefined;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n *\n * @deprecated Import this function from `@sentry/utils` instead\n */\nexport const extractTraceparentData = _extractTraceparentData;\n","import {\n addGlobalErrorInstrumentationHandler,\n addGlobalUnhandledRejectionInstrumentationHandler,\n logger,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SpanStatusType } from './spanstatus';\nimport { getActiveTransaction } from './utils';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n","import { isThenable } from '@sentry/utils';\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nexport function handleCallbackErrors<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Fn extends () => any,\n>(\n fn: Fn,\n onError: (error: unknown) => void,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onFinally: () => void = () => {},\n): ReturnType {\n let maybePromiseResult: ReturnType;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection(\n value: MaybePromise,\n onError: (error: unknown) => void,\n onFinally: () => void,\n): MaybePromise {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n return value;\n}\n","import type { Options } from '@sentry/types';\n\nimport { getClient } from '../exports';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean | undefined;\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n","import type { Scope, Span, SpanTimeInput, StartSpanOptions, TransactionContext } from '@sentry/types';\n\nimport { addNonEnumerableProperty, dropUndefinedKeys, logger, tracingContextFromHeaders } from '@sentry/utils';\nimport { getDynamicSamplingContextFromSpan } from '.';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getCurrentScope, withScope } from '../exports';\nimport type { Hub } from '../hub';\nimport { runWithAsyncContext } from '../hub';\nimport { getIsolationScope } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport type { Scope as ScopeClass } from '../scope';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n *\n * @deprecated Use `startSpan` instead.\n */\nexport function trace(\n context: TransactionContext,\n callback: (span?: Span) => T,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError: (error: unknown, span?: Span) => void = () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n afterFinish: () => void = () => {},\n): T {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const scope = getCurrentScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const spanContext = normalizeContext(context);\n const activeSpan = createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: false,\n scope,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n error => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(error, activeSpan);\n },\n () => {\n activeSpan && activeSpan.end();\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(parentSpan);\n afterFinish();\n },\n );\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpan(context: StartSpanOptions, callback: (span: Span | undefined) => T): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet\n if (activeSpan) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n () => activeSpan && activeSpan.end(),\n );\n });\n });\n}\n\n/**\n * @deprecated Use {@link startSpan} instead.\n */\nexport const startActiveSpan = startSpan;\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startSpanManual(\n context: StartSpanOptions,\n callback: (span: Span | undefined, finish: () => void) => T,\n): T {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n function finishAndSetSpan(): void {\n activeSpan && activeSpan.end();\n }\n\n return handleCallbackErrors(\n () => callback(activeSpan, finishAndSetSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n if (activeSpan && activeSpan.isRecording()) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nexport function startInactiveSpan(context: StartSpanOptions): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const spanContext = normalizeContext(context);\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const parentSpan = context.scope\n ? // eslint-disable-next-line deprecation/deprecation\n context.scope.getSpan()\n : getActiveSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return undefined;\n }\n\n const scope = context.scope || getCurrentScope();\n\n // Even though we don't actually want to make this span active on the current scope,\n // we need to make it active on a temporary scope that we use for event processing\n // as otherwise, it won't pick the correct span for the event when processing it\n const temporaryScope = (scope as ScopeClass).clone();\n\n return createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope: temporaryScope,\n });\n}\n\n/**\n * Returns the currently active span.\n */\nexport function getActiveSpan(): Span | undefined {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentScope().getSpan();\n}\n\ninterface ContinueTrace {\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers,\n * or in the browser from `` and `` HTML tags.\n *\n * @deprecated Use the version of this function taking a callback as second parameter instead:\n *\n * ```\n * Sentry.continueTrace(sentryTrace: '...', baggage: '...' }, () => {\n * // ...\n * })\n * ```\n *\n */\n ({\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n }): Partial;\n\n /**\n * Continue a trace from `sentry-trace` and `baggage` values.\n * These values can be obtained from incoming request headers, or in the browser from ``\n * and `` HTML tags.\n *\n * Spans started with `startSpan`, `startSpanManual` and `startInactiveSpan`, within the callback will automatically\n * be attached to the incoming trace.\n *\n * Deprecation notice: In the next major version of the SDK the provided callback will not receive a transaction\n * context argument.\n */\n (\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n },\n // TODO(v8): Remove parameter from this callback.\n callback: (transactionContext: Partial) => V,\n ): V;\n}\n\nexport const continueTrace: ContinueTrace = (\n {\n sentryTrace,\n baggage,\n }: {\n // eslint-disable-next-line deprecation/deprecation\n sentryTrace: Parameters[0];\n // eslint-disable-next-line deprecation/deprecation\n baggage: Parameters[1];\n },\n callback?: (transactionContext: Partial) => V,\n): V | Partial => {\n // TODO(v8): Change this function so it doesn't do anything besides setting the propagation context on the current scope:\n /*\n return withScope((scope) => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n return callback();\n })\n */\n\n const currentScope = getCurrentScope();\n\n // eslint-disable-next-line deprecation/deprecation\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n currentScope.setPropagationContext(propagationContext);\n\n if (DEBUG_BUILD && traceparentData) {\n logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);\n }\n\n const transactionContext: Partial = {\n ...traceparentData,\n metadata: dropUndefinedKeys({\n dynamicSamplingContext,\n }),\n };\n\n if (!callback) {\n return transactionContext;\n }\n\n return runWithAsyncContext(() => {\n return callback(transactionContext);\n });\n};\n\nfunction createChildSpanOrTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n {\n parentSpan,\n spanContext,\n forceTransaction,\n scope,\n }: {\n parentSpan: Span | undefined;\n spanContext: TransactionContext;\n forceTransaction?: boolean;\n scope: Scope;\n },\n): Span | undefined {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const isolationScope = getIsolationScope();\n\n let span: Span | undefined;\n if (parentSpan && !forceTransaction) {\n // eslint-disable-next-line deprecation/deprecation\n span = parentSpan.startChild(spanContext);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const sampled = spanIsSampled(parentSpan);\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n } else {\n const { traceId, dsc, parentSpanId, sampled } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n }\n\n // We always set this as active span on the scope\n // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place\n // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to TransactionContext.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n *\n * Eventually the StartSpanOptions will be more aligned with OpenTelemetry.\n */\nfunction normalizeContext(context: StartSpanOptions): TransactionContext {\n if (context.startTime) {\n const ctx: TransactionContext & { startTime?: SpanTimeInput } = { ...context };\n ctx.startTimestamp = spanTimeInputToSeconds(context.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return context;\n}\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\ntype SpanWithScopes = Span & {\n [SCOPE_ON_START_SPAN_FIELD]?: Scope;\n [ISOLATION_SCOPE_ON_START_SPAN_FIELD]?: Scope;\n};\n\nfunction setCapturedScopesOnSpan(span: Span | undefined, scope: Scope, isolationScope: Scope): void {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nexport function getCapturedScopesOnSpan(span: Span): { scope?: Scope; isolationScope?: Scope } {\n return {\n scope: (span as SpanWithScopes)[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: (span as SpanWithScopes)[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n };\n}\n","import type { MeasurementUnit, Span } from '@sentry/types';\nimport type { MetricSummary } from '@sentry/types';\nimport type { Primitive } from '@sentry/types';\nimport { dropUndefinedKeys } from '@sentry/utils';\nimport { getActiveSpan } from '../tracing';\nimport type { MetricType } from './types';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\ntype MetricSummaryStorage = Map;\n\nlet SPAN_METRIC_SUMMARY: WeakMap | undefined;\n\nfunction getMetricStorageForSpan(span: Span): MetricSummaryStorage | undefined {\n return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined;\n}\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nexport function getMetricSummaryJsonForSpan(span: Span): Record> | undefined {\n const storage = getMetricStorageForSpan(span);\n\n if (!storage) {\n return undefined;\n }\n const output: Record> = {};\n\n for (const [, [exportKey, summary]] of storage) {\n if (!output[exportKey]) {\n output[exportKey] = [];\n }\n\n output[exportKey].push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nexport function updateMetricSummaryOnActiveSpan(\n metricType: MetricType,\n sanitizedName: string,\n value: number,\n unit: MeasurementUnit,\n tags: Record,\n bucketKey: string,\n): void {\n const span = getActiveSpan();\n if (span) {\n const storage = getMetricStorageForSpan(span) || new Map();\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n\n if (!SPAN_METRIC_SUMMARY) {\n SPAN_METRIC_SUMMARY = new WeakMap();\n }\n\n SPAN_METRIC_SUMMARY.set(span, storage);\n }\n}\n","import type { Span } from '@sentry/types';\n\n/** The status of an Span.\n *\n * @deprecated Use string literals - if you require type casting, cast to SpanStatusType type\n */\nexport enum SpanStatus {\n /** The operation completed successfully. */\n Ok = 'ok',\n /** Deadline expired before operation could complete. */\n DeadlineExceeded = 'deadline_exceeded',\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n Unauthenticated = 'unauthenticated',\n /** 403 Forbidden */\n PermissionDenied = 'permission_denied',\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n NotFound = 'not_found',\n /** 429 Too Many Requests */\n ResourceExhausted = 'resource_exhausted',\n /** Client specified an invalid argument. 4xx. */\n InvalidArgument = 'invalid_argument',\n /** 501 Not Implemented */\n Unimplemented = 'unimplemented',\n /** 503 Service Unavailable */\n Unavailable = 'unavailable',\n /** Other/generic 5xx. */\n InternalError = 'internal_error',\n /** Unknown. Any non-standard HTTP status code. */\n UnknownError = 'unknown_error',\n /** The operation was cancelled (typically by the user). */\n Cancelled = 'cancelled',\n /** Already exists (409) */\n AlreadyExists = 'already_exists',\n /** Operation was rejected because the system is not in a state required for the operation's */\n FailedPrecondition = 'failed_precondition',\n /** The operation was aborted, typically due to a concurrency issue. */\n Aborted = 'aborted',\n /** Operation was attempted past the valid range. */\n OutOfRange = 'out_of_range',\n /** Unrecoverable data loss or corruption */\n DataLoss = 'data_loss',\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function getSpanStatusFromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @deprecated Use {@link spanStatusFromHttpCode} instead.\n * This export will be removed in v8 as the signature contains a typo.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport const spanStatusfromHttpCode = getSpanStatusFromHttpCode;\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nexport function setHttpStatus(span: Span, httpStatus: number): void {\n // TODO (v8): Remove these calls\n // Relay does not require us to send the status code as a tag\n // For now, just because users might expect it to land as a tag we keep sending it.\n // Same with data.\n // In v8, we replace both, simply with\n // span.setAttribute('http.response.status_code', httpStatus);\n\n // eslint-disable-next-line deprecation/deprecation\n span.setTag('http.status_code', String(httpStatus));\n // eslint-disable-next-line deprecation/deprecation\n span.setData('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n","/* eslint-disable max-lines */\nimport type {\n Instrumenter,\n Measurements,\n Primitive,\n Span as SpanInterface,\n SpanAttributeValue,\n SpanAttributes,\n SpanContext,\n SpanContextData,\n SpanJSON,\n SpanOrigin,\n SpanTimeInput,\n TraceContext,\n Transaction,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport {\n SEMANTIC_ATTRIBUTE_PROFILE_ID,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n} from '../semanticAttributes';\nimport { getRootSpan } from '../utils/getRootSpan';\nimport {\n TRACE_FLAG_NONE,\n TRACE_FLAG_SAMPLED,\n spanTimeInputToSeconds,\n spanToJSON,\n spanToTraceContext,\n spanToTraceHeader,\n} from '../utils/spanUtils';\nimport type { SpanStatusType } from './spanstatus';\nimport { setHttpStatus } from './spanstatus';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n // eslint-disable-next-line deprecation/deprecation\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * Tags for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public tags: { [key: string]: Primitive };\n\n /**\n * Data for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any };\n\n /**\n * List of spans that were finalized\n *\n * @deprecated This property will no longer be public. Span recording will be handled internally.\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n * @deprecated Use top level `Sentry.getRootSpan()` instead\n */\n public transaction?: Transaction;\n\n /**\n * The instrumenter that created this span.\n *\n * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class.\n * the instrumenter can only be sentry or otel so we can check the span instance\n * to verify which one it is and remove this field entirely.\n *\n * @deprecated This field will be removed.\n */\n public instrumenter: Instrumenter;\n\n protected _traceId: string;\n protected _spanId: string;\n protected _parentSpanId?: string | undefined;\n protected _sampled: boolean | undefined;\n protected _name?: string | undefined;\n protected _attributes: SpanAttributes;\n /** Epoch timestamp in seconds when the span started. */\n protected _startTime: number;\n /** Epoch timestamp in seconds when the span ended. */\n protected _endTime?: number | undefined;\n /** Internal keeper of the status */\n protected _status?: SpanStatusType | string | undefined;\n protected _exclusiveTime?: number;\n\n protected _measurements: Measurements;\n\n private _logMessage?: string;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext: SpanContext = {}) {\n this._traceId = spanContext.traceId || uuid4();\n this._spanId = spanContext.spanId || uuid4().substring(16);\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags ? { ...spanContext.tags } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data ? { ...spanContext.data } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.instrumenter = spanContext.instrumenter || 'sentry';\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n\n if (spanContext.parentSpanId) {\n this._parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this._sampled = spanContext.sampled;\n }\n if (spanContext.status) {\n this._status = spanContext.status;\n }\n if (spanContext.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n if (spanContext.exclusiveTime !== undefined) {\n this._exclusiveTime = spanContext.exclusiveTime;\n }\n this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};\n }\n\n // This rule conflicts with another eslint rule :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * An alias for `description` of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name || '';\n }\n\n /**\n * Update the name of the span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set name(name: string) {\n this.updateName(name);\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get description(): string | undefined {\n return this._name;\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public set description(description: string | undefined) {\n this._name = description;\n }\n\n /**\n * The ID of the trace.\n * @deprecated Use `spanContext().traceId` instead.\n */\n public get traceId(): string {\n return this._traceId;\n }\n\n /**\n * The ID of the trace.\n * @deprecated You cannot update the traceId of a span after span creation.\n */\n public set traceId(traceId: string) {\n this._traceId = traceId;\n }\n\n /**\n * The ID of the span.\n * @deprecated Use `spanContext().spanId` instead.\n */\n public get spanId(): string {\n return this._spanId;\n }\n\n /**\n * The ID of the span.\n * @deprecated You cannot update the spanId of a span after span creation.\n */\n public set spanId(spanId: string) {\n this._spanId = spanId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `startSpan` functions instead.\n */\n public set parentSpanId(string) {\n this._parentSpanId = string;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).parent_span_id` instead.\n */\n public get parentSpanId(): string | undefined {\n return this._parentSpanId;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated Use `isRecording()` instead.\n */\n public get sampled(): boolean | undefined {\n return this._sampled;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated You cannot update the sampling decision of a span after span creation.\n */\n public set sampled(sampled: boolean | undefined) {\n this._sampled = sampled;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n public get attributes(): SpanAttributes {\n return this._attributes;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `setAttributes()` instead.\n */\n public set attributes(attributes: SpanAttributes) {\n this._attributes = attributes;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get startTimestamp(): number {\n return this._startTime;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated In v8, you will not be able to update the span start time after creation.\n */\n public set startTimestamp(startTime: number) {\n this._startTime = startTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Use `spanToJSON()` instead.\n */\n public get endTimestamp(): number | undefined {\n return this._endTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Set the end time via `span.end()` instead.\n */\n public set endTimestamp(endTime: number | undefined) {\n this._endTime = endTime;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `spanToJSON().status` instead to get the status.\n */\n public get status(): SpanStatusType | string | undefined {\n return this._status;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `.setStatus()` instead to set or update the status.\n */\n public set status(status: SpanStatusType | string | undefined) {\n this._status = status;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `spanToJSON().op` to read the op instead.\n */\n public get op(): string | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op')\n * to update the span instead.\n */\n public set op(op: string | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `spanToJSON().origin` to read the origin instead.\n */\n public get origin(): SpanOrigin | undefined {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined;\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `startSpan()` functions to set the origin instead.\n */\n public set origin(origin: SpanOrigin | undefined) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /** @inheritdoc */\n public spanContext(): SpanContextData {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * Also the `sampled` decision will be inherited.\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n public startChild(\n spanContext?: Pick>,\n ): SpanInterface {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this._spanId,\n sampled: this._sampled,\n traceId: this._traceId,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder = this.spanRecorder;\n // eslint-disable-next-line deprecation/deprecation\n if (childSpan.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder.add(childSpan);\n }\n\n const rootSpan = getRootSpan(this);\n // TODO: still set span.transaction here until we have a more permanent solution\n // Probably similarly to the weakmap we hold in node-experimental\n // eslint-disable-next-line deprecation/deprecation\n childSpan.transaction = rootSpan as Transaction;\n\n if (DEBUG_BUILD && rootSpan) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = spanToJSON(childSpan).description || '< unknown name >';\n const idStr = rootSpan.spanContext().spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n logger.log(logMessage);\n this._logMessage = logMessage;\n }\n\n return childSpan;\n }\n\n /**\n * Sets the tag attribute on the current span.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key Tag key\n * @param value Tag value\n * @deprecated Use `setAttribute()` instead.\n */\n public setTag(key: string, value: Primitive): this {\n // eslint-disable-next-line deprecation/deprecation\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * Sets the data attribute on the current span\n * @param key Data key\n * @param value Data value\n * @deprecated Use `setAttribute()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setData(key: string, value: any): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /** @inheritdoc */\n public setAttribute(key: string, value: SpanAttributeValue | undefined): void {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n }\n\n /** @inheritdoc */\n public setAttributes(attributes: SpanAttributes): void {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top-level `setHttpStatus()` instead.\n */\n public setHttpStatus(httpStatus: number): this {\n setHttpStatus(this, httpStatus);\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @deprecated Use `.updateName()` instead.\n */\n public setName(name: string): void {\n this.updateName(name);\n }\n\n /**\n * @inheritDoc\n */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).status === 'ok'` instead.\n */\n public isSuccess(): boolean {\n return this._status === 'ok';\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `.end()` instead.\n */\n public finish(endTimestamp?: number): void {\n return this.end(endTimestamp);\n }\n\n /** @inheritdoc */\n public end(endTimestamp?: SpanTimeInput): void {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n const rootSpan = getRootSpan(this);\n if (\n DEBUG_BUILD &&\n // Don't call this for transactions\n rootSpan &&\n rootSpan.spanContext().spanId !== this._spanId\n ) {\n const logMessage = this._logMessage;\n if (logMessage) {\n logger.log((logMessage as string).replace('Starting', 'Finishing'));\n }\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n public toTraceparent(): string {\n return spanToTraceHeader(this);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON()` or access the fields directly instead.\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n endTimestamp: this._endTime,\n // eslint-disable-next-line deprecation/deprecation\n op: this.op,\n parentSpanId: this._parentSpanId,\n sampled: this._sampled,\n spanId: this._spanId,\n startTimestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n traceId: this._traceId,\n });\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Update the fields directly instead.\n */\n public updateWithContext(spanContext: SpanContext): this {\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data || {};\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n this._endTime = spanContext.endTimestamp;\n // eslint-disable-next-line deprecation/deprecation\n this.op = spanContext.op;\n this._parentSpanId = spanContext.parentSpanId;\n this._sampled = spanContext.sampled;\n this._spanId = spanContext.spanId || this._spanId;\n this._startTime = spanContext.startTimestamp || this._startTime;\n this._status = spanContext.status;\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags || {};\n this._traceId = spanContext.traceId || this._traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceContext()` util function instead.\n */\n public getTraceContext(): TraceContext {\n return spanToTraceContext(this);\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n public getSpanJSON(): SpanJSON {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] as string | undefined,\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined,\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined,\n exclusive_time: this._exclusiveTime,\n measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined,\n });\n }\n\n /** @inheritdoc */\n public isRecording(): boolean {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * Convert the object to JSON.\n * @deprecated Use `spanToJSON(span)` instead.\n */\n public toJSON(): SpanJSON {\n return this.getSpanJSON();\n }\n\n /**\n * Get the merged data for this span.\n * For now, this combines `data` and `attributes` together,\n * until eventually we can ingest `attributes` directly.\n */\n private _getData():\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n }\n | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const { data, _attributes: attributes } = this;\n\n const hasData = Object.keys(data).length > 0;\n const hasAttributes = Object.keys(attributes).length > 0;\n\n if (!hasData && !hasAttributes) {\n return undefined;\n }\n\n if (hasData && hasAttributes) {\n return {\n ...data,\n ...attributes,\n };\n }\n\n return hasData ? data : attributes;\n }\n}\n","import type {\n Context,\n Contexts,\n DynamicSamplingContext,\n MeasurementUnit,\n SpanTimeInput,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionEvent,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getCurrentHub } from '../hub';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes';\nimport { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext';\nimport { Span as SpanClass, SpanRecorder } from './span';\nimport { getCapturedScopesOnSpan } from './trace';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n /**\n * The reference to the current hub.\n */\n // eslint-disable-next-line deprecation/deprecation\n public _hub: Hub;\n\n protected _name: string;\n\n private _contexts: Contexts;\n\n private _trimEnd?: boolean | undefined;\n\n // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility.\n private _frozenDynamicSamplingContext: Readonly> | undefined;\n\n private _metadata: Partial;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n *\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n this._contexts = {};\n\n // eslint-disable-next-line deprecation/deprecation\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this._metadata = {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.metadata,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n // TODO (v8): Replace this with another way to set the root span\n // eslint-disable-next-line deprecation/deprecation\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this._metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n // This sadly conflicts with the getter/setter ordering :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * Getter for `name` property.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n public get name(): string {\n return this._name;\n }\n\n /**\n * Setter for `name` property, which also sets `source` as custom.\n * @deprecated Use `updateName()` and `setMetadata()` instead.\n */\n public set name(newName: string) {\n // eslint-disable-next-line deprecation/deprecation\n this.setName(newName);\n }\n\n /**\n * Get the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public get metadata(): TransactionMetadata {\n // We merge attributes in for backwards compatibility\n return {\n // Defaults\n // eslint-disable-next-line deprecation/deprecation\n source: 'custom',\n spanMetadata: {},\n\n // Legacy metadata\n ...this._metadata,\n\n // From attributes\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && {\n source: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] as TransactionMetadata['source'],\n }),\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && {\n sampleRate: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] as TransactionMetadata['sampleRate'],\n }),\n };\n }\n\n /**\n * Update the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n public set metadata(metadata: TransactionMetadata) {\n this._metadata = metadata;\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /**\n * Setter for `name` property, which also sets `source` on the metadata.\n *\n * @deprecated Use `.updateName()` and `.setAttribute()` instead.\n */\n public setName(name: string, source: TransactionMetadata['source'] = 'custom'): void {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n\n /** @inheritdoc */\n public updateName(name: string): this {\n this._name = name;\n return this;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Set the context of a transaction event.\n * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction.\n */\n public setContext(key: string, context: Context | null): void {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top-level `setMeasurement()` instead.\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * Store metadata on this transaction.\n * @deprecated Use attributes or store data on the scope instead.\n */\n public setMetadata(newMetadata: Partial): void {\n this._metadata = { ...this._metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const timestampInS = spanTimeInputToSeconds(endTimestamp);\n const transaction = this._finishTransaction(timestampInS);\n if (!transaction) {\n return undefined;\n }\n // eslint-disable-next-line deprecation/deprecation\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n // eslint-disable-next-line deprecation/deprecation\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this._name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n // eslint-disable-next-line deprecation/deprecation\n super.updateWithContext(transactionContext);\n\n this._name = transactionContext.name || '';\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n *\n * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead.\n */\n public getDynamicSamplingContext(): Readonly> {\n return getDynamicSamplingContextFromSpan(this);\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n // eslint-disable-next-line deprecation/deprecation\n public setHub(hub: Hub): void {\n this._hub = hub;\n }\n\n /**\n * Get the profile id of the transaction.\n */\n public getProfileId(): string | undefined {\n if (this._contexts !== undefined && this._contexts['profile'] !== undefined) {\n return this._contexts['profile'].profile_id as string;\n }\n return undefined;\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n protected _finishTransaction(endTimestamp?: number): TransactionEvent | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this._endTime !== undefined) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n // just sets the end timestamp\n super.end(endTimestamp);\n\n // eslint-disable-next-line deprecation/deprecation\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this._sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const finishedSpans = this.spanRecorder\n ? // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans.filter(span => span !== this && spanToJSON(span).timestamp)\n : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n const endTimes = finishedSpans.map(span => spanToJSON(span).timestamp).filter(Boolean) as number[];\n this._endTime = endTimes.reduce((prev, current) => {\n return prev > current ? prev : current;\n });\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n // eslint-disable-next-line deprecation/deprecation\n const { metadata } = this;\n // eslint-disable-next-line deprecation/deprecation\n const { source } = metadata;\n\n const transaction: TransactionEvent = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: spanToTraceContext(this),\n },\n // TODO: Pass spans serialized via `spanToJSON()` here instead in v8.\n spans: finishedSpans,\n start_timestamp: this._startTime,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n capturedSpanScope,\n capturedSpanIsolationScope,\n ...dropUndefinedKeys({\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n }),\n },\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);\n\n return transaction;\n }\n}\n","/* eslint-disable max-lines */\nimport type { SpanTimeInput, TransactionContext } from '@sentry/types';\nimport { logger, timestampInSeconds } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils';\nimport type { Span } from './span';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanContext().spanId !== this.transactionSpanId) {\n // We patch span.end() to pop an activity after setting an endTimestamp.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEnd = span.end;\n span.end = (...rest: unknown[]) => {\n this._popActivity(span.spanContext().spanId);\n return originalEnd.apply(span, rest);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (spanToJSON(span).timestamp === undefined) {\n this._pushActivity(span.spanContext().spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record;\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean;\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n private _idleTimeoutCanceledPermanently: boolean;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n private _finishReason: (typeof IDLE_TRANSACTION_FINISH_REASONS)[number];\n\n private _autoFinishAllowed: boolean;\n\n /**\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n public constructor(\n transactionContext: TransactionContext,\n // eslint-disable-next-line deprecation/deprecation\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = TRACING_DEFAULTS.finalTimeout,\n private readonly _heartbeatInterval: number = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n /**\n * When set to `true`, will disable the idle timeout (`_idleTimeout` option) and heartbeat mechanisms (`_heartbeatInterval`\n * option) until the `sendAutoFinishSignal()` method is called. The final timeout mechanism (`_finalTimeout` option)\n * will not be affected by this option, meaning the transaction will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n delayAutoFinishUntilSignal: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n this._autoFinishAllowed = !delayAutoFinishUntilSignal;\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);\n // eslint-disable-next-line deprecation/deprecation\n _idleHub.getScope().setSpan(this);\n }\n\n if (!delayAutoFinishUntilSignal) {\n this._restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.end();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public end(endTimestamp?: SpanTimeInput): string | undefined {\n const endTimestampInS = spanTimeInputToSeconds(endTimestamp);\n\n this._finished = true;\n this.activities = {};\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.op === 'ui.action.click') {\n this.setAttribute(FINISH_REASON_TAG, this._finishReason);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.spanRecorder) {\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestampInS * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestampInS);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanContext().spanId === this.spanContext().spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!spanToJSON(span).timestamp) {\n span.setStatus('cancelled');\n span.end(endTimestampInS);\n DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const { start_timestamp: startTime, timestamp: endTime } = spanToJSON(span);\n const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this._idleHub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n if (scope.getTransaction() === this) {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(undefined);\n }\n }\n\n return super.end(endTimestamp);\n }\n\n /**\n * Register a callback function that gets executed before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n public cancelIdleTimeout(\n endTimestamp?: Parameters[0],\n {\n restartOnChildSpanChange,\n }: {\n restartOnChildSpanChange?: boolean;\n } = {\n restartOnChildSpanChange: true,\n },\n ): void {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n public setFinishReason(reason: string): void {\n this._finishReason = reason;\n }\n\n /**\n * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`.\n */\n public sendAutoFinishSignal(): void {\n if (!this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Received finish signal for idle transaction.');\n this._restartIdleTimeout();\n this._autoFinishAllowed = true;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n private _restartIdleTimeout(endTimestamp?: Parameters[0]): void {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.end(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n if (this._autoFinishAllowed) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n if (this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.end();\n }\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n","import type { Options, SamplingContext } from '@sentry/types';\nimport { isNaN, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled';\nimport { spanToJSON } from '../utils/spanUtils';\nimport type { Transaction } from './transaction';\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * This method muttes the given `transaction` and will set the `sampled` value on it.\n * It returns the same transaction, for convenience.\n */\nexport function sampleTransaction(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n // eslint-disable-next-line deprecation/deprecation\n if (transaction.sampled !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled));\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n // eslint-disable-next-line deprecation/deprecation\n if (!transaction.sampled) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanToJSON(transaction).description}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nexport function isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n DEBUG_BUILD &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n","import type { ClientOptions, CustomSamplingContext, TransactionContext } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { Hub } from '../hub';\nimport { getMainCarrier } from '../hub';\nimport { spanToTraceHeader } from '../utils/spanUtils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { sampleTransaction } from './sampling';\nimport { Transaction } from './transaction';\n\n/** Returns all trace headers that are currently on the top scope. */\n// eslint-disable-next-line deprecation/deprecation\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': spanToTraceHeader(span),\n }\n : {};\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n // eslint-disable-next-line deprecation/deprecation\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n DEBUG_BUILD &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n // eslint-disable-next-line deprecation/deprecation\n transactionContext.sampled = false;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new Transaction(transactionContext, this);\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n heartbeatInterval?: number,\n delayAutoFinishUntilSignal: boolean = false,\n): IdleTransaction {\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new IdleTransaction(\n transactionContext,\n hub,\n idleTimeout,\n finalTimeout,\n heartbeatInterval,\n onScope,\n delayAutoFinishUntilSignal,\n );\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nexport function addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n","import { SentryError } from './error';\nimport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","import type { DataCategory, TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that the given category is disabled until for rate limiting.\n * In case no category-specific limit is set but a general rate limit across all categories is active,\n * that time is returned.\n *\n * @return the time in ms that the category is disabled until or 0 if there's no active rate limit.\n */\nexport function disabledUntil(limits: RateLimits, dataCategory: DataCategory): number {\n return limits[dataCategory] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, dataCategory: DataCategory, now: number = Date.now()): boolean {\n return disabledUntil(limits, dataCategory) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n *\n * @return the updated RateLimits object.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n * Semicolon-separated list of metric namespace identifiers. Defines which namespace(s) will be affected.\n * Only present if rate limit applies to the metric_bucket data category.\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories, , , namespaces] = limit.split(':', 5);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n if (category === 'metric_bucket') {\n // namespaces will be present when category === 'metric_bucket'\n if (!namespaces || namespaces.split(';').includes('custom')) {\n updatedRateLimits[category] = now + delay;\n }\n } else {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n","import type {\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n Event,\n EventDropReason,\n EventItem,\n InternalBaseTransportOptions,\n Transport,\n TransportMakeRequestResponse,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport type { PromiseBuffer, RateLimits } from '@sentry/utils';\nimport {\n SentryError,\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n resolvedSyncPromise,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(\n options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,\n ),\n): Transport {\n let rateLimits: RateLimits = {};\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const dataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, dataCategory)) {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent('ratelimit_backoff', dataCategory, event);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (item, type) => {\n const event: Event | undefined = getEventForEnvelopeItem(item, type);\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event);\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n DEBUG_BUILD && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n return response;\n },\n error => {\n recordEnvelopeLoss('network_error');\n throw error;\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n DEBUG_BUILD && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n // We use this to identifify if the transport is the base transport\n // TODO (v8): Remove this again as we'll no longer need it\n send.__sentry__baseTransport__ = true;\n\n return {\n send,\n flush,\n };\n}\n\nfunction getEventForEnvelopeItem(item: Envelope[1][number], type: EnvelopeItemType): Event | undefined {\n if (type !== 'event' && type !== 'transaction') {\n return undefined;\n }\n\n return Array.isArray(item) ? (item as EventItem)[1] : undefined;\n}\n","import type {\n BaseTransportOptions,\n Envelope,\n EnvelopeItemType,\n Event,\n EventItem,\n Transport,\n TransportMakeRequestResponse,\n} from '@sentry/types';\nimport { createEnvelope, dsnFromString, forEachEnvelopeItem } from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from '../api';\n\ninterface MatchParam {\n /** The envelope to be sent */\n envelope: Envelope;\n /**\n * A function that returns an event from the envelope if one exists. You can optionally pass an array of envelope item\n * types to filter by - only envelopes matching the given types will be multiplexed.\n * Allowed values are: 'event', 'transaction', 'profile', 'replay_event'\n *\n * @param types Defaults to ['event']\n */\n getEvent(types?: EnvelopeItemType[]): Event | undefined;\n}\n\ntype RouteTo = { dsn: string; release: string };\ntype Matcher = (param: MatchParam) => (string | RouteTo)[];\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nexport function eventFromEnvelope(env: Envelope, types: EnvelopeItemType[]): Event | undefined {\n let event: Event | undefined;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item as EventItem)[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport: (options: TO) => Transport,\n release: string,\n): (options: TO) => Transport {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope: Envelope): Promise => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope: Envelope, dsn: string): Envelope {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n */\nexport function makeMultiplexedTransport(\n createTransport: (options: TO) => Transport,\n matcher: Matcher,\n): (options: TO) => Transport {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports = new Map();\n\n function getTransport(dsn: string, release: string | undefined): [string, Transport] | undefined {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope: Envelope): Promise {\n function getEvent(types?: EnvelopeItemType[]): Event | undefined {\n const eventTypes: EnvelopeItemType[] = types && types.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = matcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t): t is [string, Transport] => !!t);\n\n // If we have no transports to send to, use the fallback transport\n if (transports.length === 0) {\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n transports.push(['', fallbackTransport]);\n }\n\n const results = await Promise.all(\n transports.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n );\n\n return results[0];\n }\n\n async function flush(timeout: number | undefined): Promise {\n const promises = [await fallbackTransport.flush(timeout)];\n for (const [, transport] of otherTransports) {\n promises.push(await transport.flush(timeout));\n }\n\n return promises.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n","export const COUNTER_METRIC_TYPE = 'c' as const;\nexport const GAUGE_METRIC_TYPE = 'g' as const;\nexport const SET_METRIC_TYPE = 's' as const;\nexport const DISTRIBUTION_METRIC_TYPE = 'd' as const;\n\n/**\n * This does not match spec in https://develop.sentry.dev/sdk/metrics\n * but was chosen to optimize for the most common case in browser environments.\n */\nexport const DEFAULT_BROWSER_FLUSH_INTERVAL = 5000;\n\n/**\n * SDKs are required to bucket into 10 second intervals (rollup in seconds)\n * which is the current lower bound of metric accuracy.\n */\nexport const DEFAULT_FLUSH_INTERVAL = 10000;\n\n/**\n * The maximum number of metrics that should be stored in memory.\n */\nexport const MAX_WEIGHT = 10000;\n","import type { MetricInstance } from '@sentry/types';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, GAUGE_METRIC_TYPE, SET_METRIC_TYPE } from './constants';\nimport { simpleHash } from './utils';\n\n/**\n * A metric instance representing a counter.\n */\nexport class CounterMetric implements MetricInstance {\n public constructor(private _value: number) {}\n\n /** @inheritDoc */\n public get weight(): number {\n return 1;\n }\n\n /** @inheritdoc */\n public add(value: number): void {\n this._value += value;\n }\n\n /** @inheritdoc */\n public toString(): string {\n return `${this._value}`;\n }\n}\n\n/**\n * A metric instance representing a gauge.\n */\nexport class GaugeMetric implements MetricInstance {\n private _last: number;\n private _min: number;\n private _max: number;\n private _sum: number;\n private _count: number;\n\n public constructor(value: number) {\n this._last = value;\n this._min = value;\n this._max = value;\n this._sum = value;\n this._count = 1;\n }\n\n /** @inheritDoc */\n public get weight(): number {\n return 5;\n }\n\n /** @inheritdoc */\n public add(value: number): void {\n this._last = value;\n if (value < this._min) {\n this._min = value;\n }\n if (value > this._max) {\n this._max = value;\n }\n this._sum += value;\n this._count++;\n }\n\n /** @inheritdoc */\n public toString(): string {\n return `${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`;\n }\n}\n\n/**\n * A metric instance representing a distribution.\n */\nexport class DistributionMetric implements MetricInstance {\n private _value: number[];\n\n public constructor(first: number) {\n this._value = [first];\n }\n\n /** @inheritDoc */\n public get weight(): number {\n return this._value.length;\n }\n\n /** @inheritdoc */\n public add(value: number): void {\n this._value.push(value);\n }\n\n /** @inheritdoc */\n public toString(): string {\n return this._value.join(':');\n }\n}\n\n/**\n * A metric instance representing a set.\n */\nexport class SetMetric implements MetricInstance {\n private _value: Set;\n\n public constructor(public first: number | string) {\n this._value = new Set([first]);\n }\n\n /** @inheritDoc */\n public get weight(): number {\n return this._value.size;\n }\n\n /** @inheritdoc */\n public add(value: number | string): void {\n this._value.add(value);\n }\n\n /** @inheritdoc */\n public toString(): string {\n return Array.from(this._value)\n .map(val => (typeof val === 'string' ? simpleHash(val) : val))\n .join(':');\n }\n}\n\nexport const METRIC_MAP = {\n [COUNTER_METRIC_TYPE]: CounterMetric,\n [GAUGE_METRIC_TYPE]: GaugeMetric,\n [DISTRIBUTION_METRIC_TYPE]: DistributionMetric,\n [SET_METRIC_TYPE]: SetMetric,\n};\n","import type { Client, ClientOptions, MeasurementUnit, MetricsAggregator, Primitive } from '@sentry/types';\nimport { timestampInSeconds } from '@sentry/utils';\nimport { DEFAULT_BROWSER_FLUSH_INTERVAL, SET_METRIC_TYPE } from './constants';\nimport { METRIC_MAP } from './instance';\nimport { updateMetricSummaryOnActiveSpan } from './metric-summary';\nimport type { MetricBucket, MetricType } from './types';\nimport { getBucketKey, sanitizeMetricKey, sanitizeTags, sanitizeUnit } from './utils';\n\n/**\n * A simple metrics aggregator that aggregates metrics in memory and flushes them periodically.\n * Default flush interval is 5 seconds.\n *\n * @experimental This API is experimental and might change in the future.\n */\nexport class BrowserMetricsAggregator implements MetricsAggregator {\n // TODO(@anonrig): Use FinalizationRegistry to have a proper way of flushing the buckets\n // when the aggregator is garbage collected.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n private _buckets: MetricBucket;\n private readonly _interval: ReturnType;\n\n public constructor(private readonly _client: Client) {\n this._buckets = new Map();\n this._interval = setInterval(() => this.flush(), DEFAULT_BROWSER_FLUSH_INTERVAL);\n }\n\n /**\n * @inheritDoc\n */\n public add(\n metricType: MetricType,\n unsanitizedName: string,\n value: number | string,\n unsanitizedUnit: MeasurementUnit | undefined = 'none',\n unsanitizedTags: Record | undefined = {},\n maybeFloatTimestamp: number | undefined = timestampInSeconds(),\n ): void {\n const timestamp = Math.floor(maybeFloatTimestamp);\n const name = sanitizeMetricKey(unsanitizedName);\n const tags = sanitizeTags(unsanitizedTags);\n const unit = sanitizeUnit(unsanitizedUnit as string);\n\n const bucketKey = getBucketKey(metricType, name, unit, tags);\n\n let bucketItem = this._buckets.get(bucketKey);\n // If this is a set metric, we need to calculate the delta from the previous weight.\n const previousWeight = bucketItem && metricType === SET_METRIC_TYPE ? bucketItem.metric.weight : 0;\n\n if (bucketItem) {\n bucketItem.metric.add(value);\n // TODO(abhi): Do we need this check?\n if (bucketItem.timestamp < timestamp) {\n bucketItem.timestamp = timestamp;\n }\n } else {\n bucketItem = {\n // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size.\n metric: new METRIC_MAP[metricType](value),\n timestamp,\n metricType,\n name,\n unit,\n tags,\n };\n this._buckets.set(bucketKey, bucketItem);\n }\n\n // If value is a string, it's a set metric so calculate the delta from the previous weight.\n const val = typeof value === 'string' ? bucketItem.metric.weight - previousWeight : value;\n updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey);\n }\n\n /**\n * @inheritDoc\n */\n public flush(): void {\n // short circuit if buckets are empty.\n if (this._buckets.size === 0) {\n return;\n }\n\n if (this._client.captureAggregateMetrics) {\n // TODO(@anonrig): Use Object.values() when we support ES6+\n const metricBuckets = Array.from(this._buckets).map(([, bucketItem]) => bucketItem);\n this._client.captureAggregateMetrics(metricBuckets);\n }\n\n this._buckets.clear();\n }\n\n /**\n * @inheritDoc\n */\n public close(): void {\n clearInterval(this._interval);\n this.flush();\n }\n}\n","import type { Client, ClientOptions, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport type { BaseClient } from '../baseclient';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration';\nimport { BrowserMetricsAggregator } from './browser-aggregator';\n\nconst INTEGRATION_NAME = 'MetricsAggregator';\n\nconst _metricsAggregatorIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client: BaseClient) {\n client.metricsAggregator = new BrowserMetricsAggregator(client);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const metricsAggregatorIntegration = defineIntegration(_metricsAggregatorIntegration);\n\n/**\n * Enables Sentry metrics monitoring.\n *\n * @experimental This API is experimental and might having breaking changes in the future.\n * @deprecated Use `metricsAggegratorIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const MetricsAggregator = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n metricsAggregatorIntegration,\n) as IntegrationClass void }>;\n","import type { ClientOptions, MeasurementUnit, Primitive } from '@sentry/types';\nimport { logger } from '@sentry/utils';\nimport type { BaseClient } from '../baseclient';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { getClient, getCurrentScope } from '../exports';\nimport { spanToJSON } from '../utils/spanUtils';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, GAUGE_METRIC_TYPE, SET_METRIC_TYPE } from './constants';\nimport { MetricsAggregator, metricsAggregatorIntegration } from './integration';\nimport type { MetricType } from './types';\n\ninterface MetricData {\n unit?: MeasurementUnit;\n tags?: Record;\n timestamp?: number;\n}\n\nfunction addToMetricsAggregator(\n metricType: MetricType,\n name: string,\n value: number | string,\n data: MetricData | undefined = {},\n): void {\n const client = getClient>();\n const scope = getCurrentScope();\n if (client) {\n if (!client.metricsAggregator) {\n DEBUG_BUILD &&\n logger.warn('No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs');\n return;\n }\n const { unit, tags, timestamp } = data;\n const { release, environment } = client.getOptions();\n // eslint-disable-next-line deprecation/deprecation\n const transaction = scope.getTransaction();\n const metricTags: Record = {};\n if (release) {\n metricTags.release = release;\n }\n if (environment) {\n metricTags.environment = environment;\n }\n if (transaction) {\n metricTags.transaction = spanToJSON(transaction).description || '';\n }\n\n DEBUG_BUILD && logger.log(`Adding value of ${value} to ${metricType} metric ${name}`);\n client.metricsAggregator.add(metricType, name, value, unit, { ...metricTags, ...tags }, timestamp);\n }\n}\n\n/**\n * Adds a value to a counter metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function increment(name: string, value: number = 1, data?: MetricData): void {\n addToMetricsAggregator(COUNTER_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a distribution metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function distribution(name: string, value: number, data?: MetricData): void {\n addToMetricsAggregator(DISTRIBUTION_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a set metric. Value must be a string or integer.\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function set(name: string, value: number | string, data?: MetricData): void {\n addToMetricsAggregator(SET_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a gauge metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nexport function gauge(name: string, value: number, data?: MetricData): void {\n addToMetricsAggregator(GAUGE_METRIC_TYPE, name, value, data);\n}\n\nexport const metrics = {\n increment,\n distribution,\n set,\n gauge,\n /** @deprecated Use `metrics.metricsAggregratorIntegration()` instead. */\n // eslint-disable-next-line deprecation/deprecation\n MetricsAggregator,\n metricsAggregatorIntegration,\n};\n","import type { ParameterizedString } from '@sentry/types';\n\n/**\n * Tagged template function which returns paramaterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns String with template information in __sentry_template_string__ and __sentry_template_values__ properties\n */\nexport function parameterize(strings: TemplateStringsArray, ...values: string[]): ParameterizedString {\n const formatted = new String(String.raw(strings, ...values)) as ParameterizedString;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n","import type { Client, ClientOptions } from '@sentry/types';\nimport { consoleSandbox, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { getCurrentScope } from './exports';\nimport { getCurrentHub } from './hub';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n });\n }\n }\n const scope = getCurrentScope();\n scope.update(options.initialScope);\n\n const client = new clientClass(options);\n setCurrentClient(client);\n initializeClient(client);\n}\n\n/**\n * Make the given client the current client.\n */\nexport function setCurrentClient(client: Client): void {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const top = hub.getStackTop();\n top.client = client;\n top.scope.setClient(client);\n}\n\n/**\n * Initialize the client for the current scope.\n * Make sure to call this after `setCurrentClient()`.\n */\nfunction initializeClient(client: Client): void {\n if (client.init) {\n client.init();\n // TODO v8: Remove this fallback\n // eslint-disable-next-line deprecation/deprecation\n } else if (client.setupIntegrations) {\n // eslint-disable-next-line deprecation/deprecation\n client.setupIntegrations();\n }\n}\n","import type { MeasurementUnit } from '@sentry/types';\n\nimport { getActiveTransaction } from './utils';\n\n/**\n * Adds a measurement to the current active transaction.\n */\nexport function setMeasurement(name: string, value: number, unit: MeasurementUnit): void {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction();\n if (transaction) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setMeasurement(name, value, unit);\n }\n}\n","import type { browserTracingIntegration } from '@sentry-internal/tracing';\nimport { BrowserTracing } from '@sentry-internal/tracing';\nimport { captureException, withScope } from '@sentry/core';\nimport type { DsnLike, Integration, Mechanism, WrappedFunction } from '@sentry/types';\nimport {\n GLOBAL_OBJ,\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n *\n * @deprecated This type will be removed in the next major version of the Sentry SDK. `showReportDialog` will still be around, however the `eventId` option will now be required.\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(this: void): void;\n /** Callback after reportDialog closed */\n onClose?(this: void): void;\n}\n\n/**\n * This is a slim shim of `browserTracingIntegration` for the CDN bundles.\n * Since the actual functional integration uses a different code from `BrowserTracing`,\n * we want to avoid shipping both of them in the CDN bundles, as that would blow up the size.\n * Instead, we provide a functional integration with the same API, but the old implementation.\n * This means that it's not possible to register custom routing instrumentation, but that's OK for now.\n * We also don't expose the utilities for this anyhow in the CDN bundles.\n * For users that need custom routing in CDN bundles, they have to continue using `new BrowserTracing()` until v8.\n */\nexport function bundleBrowserTracingIntegration(\n options: Parameters[0] = {},\n): Integration {\n // Migrate some options from the old integration to the new one\n // eslint-disable-next-line deprecation/deprecation\n const opts: ConstructorParameters[0] = options;\n\n if (typeof options.markBackgroundSpan === 'boolean') {\n opts.markBackgroundTransactions = options.markBackgroundSpan;\n }\n\n if (typeof options.instrumentPageLoad === 'boolean') {\n opts.startTransactionOnPageLoad = options.instrumentPageLoad;\n }\n\n if (typeof options.instrumentNavigation === 'boolean') {\n opts.startTransactionOnLocationChange = options.instrumentNavigation;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n return new BrowserTracing(opts);\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import { getClient } from '@sentry/core';\nimport type {\n Event,\n EventHint,\n Exception,\n ParameterizedString,\n Severity,\n SeverityLevel,\n StackFrame,\n StackParser,\n} from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isParameterizedString,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const client = getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n message: ParameterizedString,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception: Record,\n { isUnhandledRejection }: { isUnhandledRejection?: boolean },\n): string {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj: unknown): string | undefined | void {\n try {\n const prototype: Prototype | null = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n","import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types';\nimport { createEnvelope, dsnToString } from '@sentry/utils';\n\n/**\n * Creates an envelope from a user feedback.\n */\nexport function createUserFeedbackEnvelope(\n feedback: UserFeedback,\n {\n metadata,\n tunnel,\n dsn,\n }: {\n metadata: SdkMetadata | undefined;\n tunnel: string | undefined;\n dsn: DsnComponents | undefined;\n },\n): EventEnvelope {\n const headers: EventEnvelope[0] = {\n event_id: feedback.event_id,\n sent_at: new Date().toISOString(),\n ...(metadata &&\n metadata.sdk && {\n sdk: {\n name: metadata.sdk.name,\n version: metadata.sdk.version,\n },\n }),\n ...(!!tunnel && !!dsn && { dsn: dsnToString(dsn) }),\n };\n const item = createUserFeedbackEnvelopeItem(feedback);\n\n return createEnvelope(headers, [item]);\n}\n\nfunction createUserFeedbackEnvelopeItem(feedback: UserFeedback): UserFeedbackItem {\n const feedbackHeaders: UserFeedbackItem[0] = {\n type: 'user_report',\n };\n return [feedbackHeaders, feedback];\n}\n","import type { Scope } from '@sentry/core';\nimport { applySdkMetadata } from '@sentry/core';\nimport { BaseClient } from '@sentry/core';\nimport type {\n BrowserClientProfilingOptions,\n BrowserClientReplayOptions,\n ClientOptions,\n Event,\n EventHint,\n Options,\n ParameterizedString,\n Severity,\n SeverityLevel,\n UserFeedback,\n} from '@sentry/types';\nimport { createClientReportEnvelope, dsnToString, getSDKSource, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from './debug-build';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { WINDOW } from './helpers';\nimport type { BrowserTransportOptions } from './transports/types';\nimport { createUserFeedbackEnvelope } from './userfeedback';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport type BrowserOptions = Options &\n BrowserClientReplayOptions &\n BrowserClientProfilingOptions;\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport type BrowserClientOptions = ClientOptions &\n BrowserClientReplayOptions &\n BrowserClientProfilingOptions;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(options, 'browser', ['browser'], sdkSource);\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: ParameterizedString,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n public captureUserFeedback(feedback: UserFeedback): void {\n if (!this._isEnabled()) {\n DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n}\n","import type { Options } from '@sentry/types';\nimport { SDK_VERSION } from '../version';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nexport function applySdkMetadata(options: Options, name: string, names = [name], source = 'npm'): void {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n","import type { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import { isNativeFetch, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\nlet cachedFetchImpl: FetchImpl | undefined = undefined;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(WINDOW.fetch)) {\n return (cachedFetchImpl = WINDOW.fetch.bind(WINDOW));\n }\n\n const document = WINDOW.document;\n let fetchImpl = WINDOW.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n DEBUG_BUILD && logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(WINDOW));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/** Clears cached fetch impl */\nexport function clearCachedFetchImplementation(): void {\n cachedFetchImpl = undefined;\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { rejectedSyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\nimport type { FetchImpl } from './utils';\nimport { clearCachedFetchImplementation, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n let pendingBodySize = 0;\n let pendingCount = 0;\n\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestSize = request.body.length;\n pendingBodySize += requestSize;\n pendingCount++;\n\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n // Outgoing requests are usually cancelled when navigating to a different page, causing a \"TypeError: Failed to\n // fetch\" error and sending a \"network_error\" client-outcome - in Chrome, the request status shows \"(cancelled)\".\n // The `keepalive` flag keeps outgoing requests alive, even when switching pages. We want this since we're\n // frequently sending events right before the user is switching pages (eg. whenfinishing navigation transactions).\n // Gotchas:\n // - `keepalive` isn't supported by Firefox\n // - As per spec (https://fetch.spec.whatwg.org/#http-network-or-cache-fetch):\n // If the sum of contentLength and inflightKeepaliveBytes is greater than 64 kibibytes, then return a network error.\n // We will therefore only activate the flag when we're below that limit.\n // There is also a limit of requests that can be open at the same time, so we also limit this to 15\n // See https://github.com/getsentry/sentry-javascript/pull/7553 for details\n keepalive: pendingBodySize <= 60_000 && pendingCount < 15,\n ...options.fetchOptions,\n };\n\n try {\n return nativeFetch(options.url, requestOptions).then(response => {\n pendingBodySize -= requestSize;\n pendingCount--;\n return {\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n };\n });\n } catch (e) {\n clearCachedFetchImplementation();\n pendingBodySize -= requestSize;\n pendingCount--;\n return rejectedSyncPromise(e);\n }\n }\n\n return createTransport(options, makeRequest);\n}\n","import { createTransport } from '@sentry/core';\nimport type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport type { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n","// This was originally forked from https://github.com/csnover/TraceKit, and was largely\n// re - written as part of raven - js.\n//\n// This code was later copied to the JavaScript mono - repo and further modified and\n// refactored over the years.\n\n// Copyright (c) 2013 Onur Can Cakmak onur.cakmak@gmail.com and all TraceKit contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this\n// software and associated documentation files(the 'Software'), to deal in the Software\n// without restriction, including without limitation the rights to use, copy, modify,\n// merge, publish, distribute, sublicense, and / or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following\n// conditions:\n//\n// The above copyright notice and this permission notice shall be included in all copies\n// or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n// PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE\n// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nimport type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n in_app: true, // All browser frames are considered in_app\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.+?\\)(?: \\[.+\\])?|.*?) ?\\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n// We cannot call this variable `chrome` because it can conflict with global `chrome` variable in certain environments\n// See: https://github.com/getsentry/sentry-javascript/issues/6880\nconst chromeStackParserFn: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chromeStackParserFn];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:[-a-z]+)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:[-a-z]+):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n// Copyright (c) 2010-2016 Google, Inc. http://angularjs.org\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport { getGlobalObject } from '../worldwide';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chromeVar = (WINDOW as any).chrome;\n const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataHistory } from '@sentry/types';\n\nimport { fill } from '../object';\nimport { supportsHistory } from '../supports';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nlet lastHref: string | undefined;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addHistoryInstrumentationHandler(handler: (data: HandlerDataHistory) => void): void {\n const type = 'history';\n addHandler(type, handler);\n maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n const handlerData: HandlerDataHistory = { from, to };\n triggerHandlers('history', handlerData);\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n const handlerData: HandlerDataHistory = { from, to };\n triggerHandlers('history', handlerData);\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n","// TODO(v8): Move everything in this file into the browser package. Nothing here is generic and we run risk of leaking browser types into non-browser packages.\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport type { HandlerDataDom } from '@sentry/types';\n\nimport { uuid4 } from '../misc';\nimport { addNonEnumerableProperty, fill } from '../object';\nimport { GLOBAL_OBJ } from '../worldwide';\nimport { addHandler, maybeInstrument, triggerHandlers } from './_handlers';\n\ntype SentryWrappedTarget = HTMLElement & { _sentryId?: string };\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID: number | undefined;\nlet lastCapturedEventType: string | undefined;\nlet lastCapturedEventTargetId: string | undefined;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addClickKeypressInstrumentationHandler(handler: (data: HandlerDataDom) => void): void {\n const type = 'dom';\n addHandler(type, handler);\n maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nexport function instrumentDOM(): void {\n if (!WINDOW.document) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (WINDOW as any)[target] && (WINDOW as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event: Event): boolean {\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (event.type !== lastCapturedEventType) {\n return false;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (!event.target || (event.target as SentryWrappedTarget)._sentryId !== lastCapturedEventTargetId) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType: string, target: SentryWrappedTarget | null): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (eventType !== 'keypress') {\n return false;\n }\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n handler: (data: HandlerDataDom) => void,\n globalListener: boolean = false,\n): (event: Event) => void {\n return (event: Event & { _sentryCaptured?: true }): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || event['_sentryCaptured']) {\n return;\n }\n\n const target = getEventTarget(event);\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event.type, target)) {\n return;\n }\n\n // Mark event as \"seen\"\n addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n if (target && !target._sentryId) {\n // Add UUID to event target so we can identify if\n addNonEnumerableProperty(target, '_sentryId', uuid4());\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n if (!isSimilarToLastCapturedEvent(event)) {\n const handlerData: HandlerDataDom = { event, name, global: globalListener };\n handler(handlerData);\n lastCapturedEventType = event.type;\n lastCapturedEventTargetId = target ? target._sentryId : undefined;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n lastCapturedEventTargetId = undefined;\n lastCapturedEventType = undefined;\n }, DEBOUNCE_DURATION);\n };\n}\n\nfunction getEventTarget(event: Event): SentryWrappedTarget | null {\n try {\n return event.target as SentryWrappedTarget | null;\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n return null;\n }\n}\n","/* eslint-disable max-lines */\nimport { addBreadcrumb, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n Client,\n Event as SentryEvent,\n HandlerDataConsole,\n HandlerDataDom,\n HandlerDataFetch,\n HandlerDataHistory,\n HandlerDataXhr,\n Integration,\n IntegrationClass,\n IntegrationFn,\n} from '@sentry/types';\nimport type {\n Breadcrumb,\n FetchBreadcrumbData,\n FetchBreadcrumbHint,\n XhrBreadcrumbData,\n XhrBreadcrumbHint,\n} from '@sentry/types/build/types/breadcrumb';\nimport {\n SENTRY_XHR_DATA_KEY,\n addClickKeypressInstrumentationHandler,\n addConsoleInstrumentationHandler,\n addFetchInstrumentationHandler,\n addHistoryInstrumentationHandler,\n addXhrInstrumentationHandler,\n getComponentName,\n getEventDescription,\n htmlTreeAsString,\n logger,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { WINDOW } from '../helpers';\n\ninterface BreadcrumbsOptions {\n console: boolean;\n dom:\n | boolean\n | {\n serializeAttribute?: string | string[];\n maxStringLength?: number;\n };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/** maxStringLength gets capped to prevent 100 breadcrumbs exceeding 1MB event payload size */\nconst MAX_ALLOWED_STRING_LENGTH = 1024;\n\nconst INTEGRATION_NAME = 'Breadcrumbs';\n\nconst _breadcrumbsIntegration = ((options: Partial = {}) => {\n const _options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (_options.console) {\n addConsoleInstrumentationHandler(_getConsoleBreadcrumbHandler(client));\n }\n if (_options.dom) {\n addClickKeypressInstrumentationHandler(_getDomBreadcrumbHandler(client, _options.dom));\n }\n if (_options.xhr) {\n addXhrInstrumentationHandler(_getXhrBreadcrumbHandler(client));\n }\n if (_options.fetch) {\n addFetchInstrumentationHandler(_getFetchBreadcrumbHandler(client));\n }\n if (_options.history) {\n addHistoryInstrumentationHandler(_getHistoryBreadcrumbHandler(client));\n }\n if (_options.sentry && client.on) {\n client.on('beforeSendEvent', _getSentryBreadcrumbHandler(client));\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const breadcrumbsIntegration = defineIntegration(_breadcrumbsIntegration);\n\n/**\n * Default Breadcrumbs instrumentations\n *\n * @deprecated Use `breadcrumbsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Breadcrumbs = convertIntegrationFnToClass(INTEGRATION_NAME, breadcrumbsIntegration) as IntegrationClass<\n Integration & { setup: (client: Client) => void }\n> & {\n new (\n options?: Partial<{\n console: boolean;\n dom:\n | boolean\n | {\n serializeAttribute?: string | string[];\n maxStringLength?: number;\n };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n }>,\n ): Integration;\n};\n\n/**\n * Adds a breadcrumb for Sentry events or transactions if this option is enabled.\n */\nfunction _getSentryBreadcrumbHandler(client: Client): (event: SentryEvent) => void {\n return function addSentryBreadcrumb(event: SentryEvent): void {\n if (getClient() !== client) {\n return;\n }\n\n addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n };\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _getDomBreadcrumbHandler(\n client: Client,\n dom: BreadcrumbsOptions['dom'],\n): (handlerData: HandlerDataDom) => void {\n return function _innerDomBreadcrumb(handlerData: HandlerDataDom): void {\n if (getClient() !== client) {\n return;\n }\n\n let target;\n let componentName;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n let maxStringLength =\n typeof dom === 'object' && typeof dom.maxStringLength === 'number' ? dom.maxStringLength : undefined;\n if (maxStringLength && maxStringLength > MAX_ALLOWED_STRING_LENGTH) {\n DEBUG_BUILD &&\n logger.warn(\n `\\`dom.maxStringLength\\` cannot exceed ${MAX_ALLOWED_STRING_LENGTH}, but a value of ${maxStringLength} was configured. Sentry will use ${MAX_ALLOWED_STRING_LENGTH} instead.`,\n );\n maxStringLength = MAX_ALLOWED_STRING_LENGTH;\n }\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n const event = handlerData.event as Event | Node;\n const element = _isEvent(event) ? event.target : event;\n\n target = htmlTreeAsString(element, { keyAttrs, maxStringLength });\n componentName = getComponentName(element);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n const breadcrumb: Breadcrumb = {\n category: `ui.${handlerData.name}`,\n message: target,\n };\n\n if (componentName) {\n breadcrumb.data = { 'ui.component_name': componentName };\n }\n\n addBreadcrumb(breadcrumb, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _getConsoleBreadcrumbHandler(client: Client): (handlerData: HandlerDataConsole) => void {\n return function _consoleBreadcrumb(handlerData: HandlerDataConsole): void {\n if (getClient() !== client) {\n return;\n }\n\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _getXhrBreadcrumbHandler(client: Client): (handlerData: HandlerDataXhr) => void {\n return function _xhrBreadcrumb(handlerData: HandlerDataXhr): void {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n const sentryXhrData = handlerData.xhr[SENTRY_XHR_DATA_KEY];\n\n // We only capture complete, non-sentry requests\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return;\n }\n\n const { method, url, status_code, body } = sentryXhrData;\n\n const data: XhrBreadcrumbData = {\n method,\n url,\n status_code,\n };\n\n const hint: XhrBreadcrumbHint = {\n xhr: handlerData.xhr,\n input: body,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'xhr',\n data,\n type: 'http',\n },\n hint,\n );\n };\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFetch) => void {\n return function _fetchBreadcrumb(handlerData: HandlerDataFetch): void {\n if (getClient() !== client) {\n return;\n }\n\n const { startTimestamp, endTimestamp } = handlerData;\n\n // We only capture complete fetch requests\n if (!endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n const data: FetchBreadcrumbData = handlerData.fetchData;\n const hint: FetchBreadcrumbHint = {\n data: handlerData.error,\n input: handlerData.args,\n startTimestamp,\n endTimestamp,\n };\n\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n level: 'error',\n type: 'http',\n },\n hint,\n );\n } else {\n const response = handlerData.response as Response | undefined;\n const data: FetchBreadcrumbData = {\n ...handlerData.fetchData,\n status_code: response && response.status,\n };\n const hint: FetchBreadcrumbHint = {\n input: handlerData.args,\n response,\n startTimestamp,\n endTimestamp,\n };\n addBreadcrumb(\n {\n category: 'fetch',\n data,\n type: 'http',\n },\n hint,\n );\n }\n };\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _getHistoryBreadcrumbHandler(client: Client): (handlerData: HandlerDataHistory) => void {\n return function _historyBreadcrumb(handlerData: HandlerDataHistory): void {\n if (getClient() !== client) {\n return;\n }\n\n let from: string | undefined = handlerData.from;\n let to: string | undefined = handlerData.to;\n const parsedLoc = parseUrl(WINDOW.location.href);\n let parsedFrom = from ? parseUrl(from) : undefined;\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom || !parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n };\n}\n\nfunction _isEvent(event: unknown): event is Event {\n return !!event && !!(event as Record).target;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Exception, Integration, IntegrationClass, IntegrationFn, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\nconst INTEGRATION_NAME = 'Dedupe';\n\nconst _dedupeIntegration = (() => {\n let previousEvent: Event | undefined;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n processEvent(currentEvent) {\n // We want to ignore any non-error type events, e.g. transactions or replays\n // These should never be deduped, and also not be compared against as _previousEvent.\n if (currentEvent.type) {\n return currentEvent;\n }\n\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, previousEvent)) {\n DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n return (previousEvent = currentEvent);\n },\n };\n}) satisfies IntegrationFn;\n\nexport const dedupeIntegration = defineIntegration(_dedupeIntegration);\n\n/**\n * Deduplication filter.\n * @deprecated Use `dedupeIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const Dedupe = convertIntegrationFnToClass(INTEGRATION_NAME, dedupeIntegration) as IntegrationClass<\n Integration & { processEvent: (event: Event) => Event }\n>;\n\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-expect-error Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { captureEvent, convertIntegrationFnToClass, defineIntegration, getClient } from '@sentry/core';\nimport type {\n Client,\n Event,\n Integration,\n IntegrationClass,\n IntegrationFn,\n Primitive,\n StackParser,\n} from '@sentry/types';\nimport {\n addGlobalErrorInstrumentationHandler,\n addGlobalUnhandledRejectionInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport type { BrowserClient } from '../client';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\ntype GlobalHandlersIntegrations = Record;\n\nconst INTEGRATION_NAME = 'GlobalHandlers';\n\nconst _globalHandlersIntegration = ((options: Partial = {}) => {\n const _options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n Error.stackTraceLimit = 50;\n },\n setup(client) {\n if (_options.onerror) {\n _installGlobalOnErrorHandler(client);\n globalHandlerLog('onerror');\n }\n if (_options.onunhandledrejection) {\n _installGlobalOnUnhandledRejectionHandler(client);\n globalHandlerLog('onunhandledrejection');\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const globalHandlersIntegration = defineIntegration(_globalHandlersIntegration);\n\n/**\n * Global handlers.\n * @deprecated Use `globalHandlersIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const GlobalHandlers = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n globalHandlersIntegration,\n) as IntegrationClass void }> & {\n new (options?: Partial): Integration;\n};\n\nfunction _installGlobalOnErrorHandler(client: Client): void {\n addGlobalErrorInstrumentationHandler(data => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const { msg, url, line, column, error } = data;\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onerror',\n },\n });\n });\n}\n\nfunction _installGlobalOnUnhandledRejectionHandler(client: Client): void {\n addGlobalUnhandledRejectionInstrumentationHandler(e => {\n const { stackParser, attachStacktrace } = getOptions();\n\n if (getClient() !== client || shouldIgnoreOnError()) {\n return;\n }\n\n const error = _getUnhandledRejectionError(e as unknown);\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n captureEvent(event, {\n originalException: error,\n mechanism: {\n handled: false,\n type: 'onunhandledrejection',\n },\n });\n });\n}\n\nfunction _getUnhandledRejectionError(error: unknown): unknown {\n if (isPrimitive(error)) {\n return error;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const e = error as any;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n return e.reason;\n }\n\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n return e.detail.reason;\n }\n } catch {} // eslint-disable-line no-empty\n\n return error;\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction getOptions(): { stackParser: StackParser; attachStacktrace?: boolean } {\n const client = getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return options;\n}\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Event, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\nimport { WINDOW } from '../helpers';\n\nconst INTEGRATION_NAME = 'HttpContext';\n\nconst _httpContextIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event) {\n // if none of the information we want exists, don't bother\n if (!WINDOW.navigator && !WINDOW.location && !WINDOW.document) {\n return;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (WINDOW.location && WINDOW.location.href);\n const { referrer } = WINDOW.document || {};\n const { userAgent } = WINDOW.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...event.request, ...(url && { url }), headers };\n\n event.request = request;\n },\n };\n}) satisfies IntegrationFn;\n\nexport const httpContextIntegration = defineIntegration(_httpContextIntegration);\n\n/**\n * HttpContext integration collects information about HTTP request headers.\n * @deprecated Use `httpContextIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const HttpContext = convertIntegrationFnToClass(INTEGRATION_NAME, httpContextIntegration) as IntegrationClass<\n Integration & { preprocessEvent: (event: Event) => void }\n>;\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Client, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\nimport { applyAggregateErrorsToEvent } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder';\n\ninterface LinkedErrorsOptions {\n key?: string;\n limit?: number;\n}\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options: LinkedErrorsOptions = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n // This differs from the LinkedErrors integration in core by using a different exceptionFromError function\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) satisfies IntegrationFn;\n\nexport const linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Aggregrate linked errors in an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration) as IntegrationClass<\n Integration & { preprocessEvent: (event: Event, hint: EventHint, client: Client) => void }\n> & { new (options?: { key?: string; limit?: number }): Integration };\n","import { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { Integration, IntegrationClass, IntegrationFn, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\n\nimport { WINDOW, wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'BroadcastChannel',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'SharedWorker',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\nconst INTEGRATION_NAME = 'TryCatch';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\nconst _browserApiErrorsIntegration = ((options: Partial = {}) => {\n const _options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n // TODO: This currently only works for the first client this is setup\n // We may want to adjust this to check for client etc.\n setupOnce() {\n if (_options.setTimeout) {\n fill(WINDOW, 'setTimeout', _wrapTimeFunction);\n }\n\n if (_options.setInterval) {\n fill(WINDOW, 'setInterval', _wrapTimeFunction);\n }\n\n if (_options.requestAnimationFrame) {\n fill(WINDOW, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (_options.XMLHttpRequest && 'XMLHttpRequest' in WINDOW) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = _options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n },\n };\n}) satisfies IntegrationFn;\n\nexport const browserApiErrorsIntegration = defineIntegration(_browserApiErrorsIntegration);\n\n/**\n * Wrap timer functions and event targets to catch errors and provide better meta data.\n * @deprecated Use `browserApiErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const TryCatch = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n browserApiErrorsIntegration,\n) as IntegrationClass & {\n new (options?: {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n }): Integration;\n};\n\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: false,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: false,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObject = WINDOW as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = globalObject[target] && globalObject[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: VoidFunction,): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: false,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","import type { Hub } from '@sentry/core';\nimport { functionToStringIntegration, inboundFiltersIntegration } from '@sentry/core';\nimport {\n captureSession,\n getClient,\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n initAndBind,\n startSession,\n} from '@sentry/core';\nimport type { Integration, Options, UserFeedback } from '@sentry/types';\nimport {\n addHistoryInstrumentationHandler,\n logger,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport type { BrowserClientOptions, BrowserOptions } from './client';\nimport { BrowserClient } from './client';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { ReportDialogOptions } from './helpers';\nimport { WINDOW, wrap as internalWrap } from './helpers';\nimport { breadcrumbsIntegration } from './integrations/breadcrumbs';\nimport { dedupeIntegration } from './integrations/dedupe';\nimport { globalHandlersIntegration } from './integrations/globalhandlers';\nimport { httpContextIntegration } from './integrations/httpcontext';\nimport { linkedErrorsIntegration } from './integrations/linkederrors';\nimport { browserApiErrorsIntegration } from './integrations/trycatch';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\n/** @deprecated Use `getDefaultIntegrations(options)` instead. */\nexport const defaultIntegrations = [\n inboundFiltersIntegration(),\n functionToStringIntegration(),\n browserApiErrorsIntegration(),\n breadcrumbsIntegration(),\n globalHandlersIntegration(),\n linkedErrorsIntegration(),\n dedupeIntegration(),\n httpContextIntegration(),\n];\n\n/** Get the default integrations for the browser SDK. */\nexport function getDefaultIntegrations(_options: Options): Integration[] {\n // We return a copy of the defaultIntegrations here to avoid mutating this\n return [\n // eslint-disable-next-line deprecation/deprecation\n ...defaultIntegrations,\n ];\n}\n\n/**\n * A magic string that build tooling can leverage in order to inject a release value into the SDK.\n */\ndeclare const __SENTRY_RELEASE__: string | undefined;\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = getDefaultIntegrations(options);\n }\n if (options.release === undefined) {\n // This allows build tooling to find-and-replace __SENTRY_RELEASE__ to inject a release value\n if (typeof __SENTRY_RELEASE__ === 'string') {\n options.release = __SENTRY_RELEASE__;\n }\n\n // This supports the variable that sentry-webpack-plugin injects\n if (WINDOW.SENTRY_RELEASE && WINDOW.SENTRY_RELEASE.id) {\n options.release = WINDOW.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\ntype NewReportDialogOptions = ReportDialogOptions & { eventId: string }; // eslint-disable-line\n\ninterface ShowReportDialogFunction {\n /**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\n (options: NewReportDialogOptions): void;\n\n /**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n *\n * @deprecated Please always pass an `options` argument with `eventId`. The `hub` argument will not be used in the next version of the SDK.\n */\n // eslint-disable-next-line deprecation/deprecation\n (options?: ReportDialogOptions, hub?: Hub): void;\n}\n\nexport const showReportDialog: ShowReportDialogFunction = (\n // eslint-disable-next-line deprecation/deprecation\n options: ReportDialogOptions = {},\n // eslint-disable-next-line deprecation/deprecation\n hub: Hub = getCurrentHub(),\n) => {\n // doesn't work without a document (React Native)\n if (!WINDOW.document) {\n DEBUG_BUILD && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n DEBUG_BUILD && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n // TODO(v8): Remove this entire if statement. `eventId` will be a required option.\n // eslint-disable-next-line deprecation/deprecation\n if (!options.eventId) {\n // eslint-disable-next-line deprecation/deprecation\n options.eventId = hub.lastEventId();\n }\n\n const script = WINDOW.document.createElement('script');\n script.async = true;\n script.crossOrigin = 'anonymous';\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n const { onClose } = options;\n if (onClose) {\n const reportDialogClosedMessageHandler = (event: MessageEvent): void => {\n if (event.data === '__sentry_reportdialog_closed__') {\n try {\n onClose();\n } finally {\n WINDOW.removeEventListener('message', reportDialogClosedMessageHandler);\n }\n }\n };\n WINDOW.addEventListener('message', reportDialogClosedMessageHandler);\n }\n\n const injectionPoint = WINDOW.document.head || WINDOW.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n DEBUG_BUILD && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n};\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @deprecated This function will be removed in v8.\n * It is not part of Sentry's official API and it's easily replaceable by using a try/catch block\n * and calling Sentry.captureException.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// TODO(v8): Remove this function\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n if (typeof WINDOW.document === 'undefined') {\n DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSession({ ignoreDuration: true });\n captureSession();\n\n // We want to create a session for every navigation as well\n addHistoryInstrumentationHandler(({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (from !== undefined && from !== to) {\n startSession({ ignoreDuration: true });\n captureSession();\n }\n });\n}\n\n/**\n * Captures user feedback and sends it to Sentry.\n */\nexport function captureUserFeedback(feedback: UserFeedback): void {\n const client = getClient();\n if (client) {\n client.captureUserFeedback(feedback);\n }\n}\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport type { GenericFunction } from './types';\n\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nexport function _optionalChain(ops: unknown[]): unknown {\n let lastAccessLHS: unknown = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] as string;\n const fn = ops[i + 1] as (intermediateValue: unknown) => unknown;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args: unknown[]) => (value as GenericFunction).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n","import { isNodeEnv } from './node';\nimport { GLOBAL_OBJ } from './worldwide';\n\n/**\n * Returns true if we are in the browser.\n */\nexport function isBrowser(): boolean {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\ntype ElectronProcess = { type?: string };\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer(): boolean {\n return (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (GLOBAL_OBJ as any).process !== undefined && ((GLOBAL_OBJ as any).process as ElectronProcess).type === 'renderer'\n );\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric, ReportCallback } from '../types';\n\nexport const bindReporter = (\n callback: ReportCallback,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n let delta: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ &\n // document is not available in all browser environments (webworkers). We make it optional so you have to explicitly check for it\n Omit &\n Partial>;\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { NavigationTimingPolyfillEntry } from '../types';\n\nconst getNavigationEntryFromPerformanceTiming = (): NavigationTimingPolyfillEntry => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry: { [key: string]: number | string } = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key as keyof PerformanceTiming] as number) - timing.navigationStart, 0);\n }\n }\n return navigationEntry as unknown as NavigationTimingPolyfillEntry;\n};\n\nexport const getNavigationEntry = (): PerformanceNavigationTiming | NavigationTimingPolyfillEntry | undefined => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const getActivationStart = (): number => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport type { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\nimport { getActivationStart } from './getActivationStart';\nimport { getNavigationEntry } from './getNavigationEntry';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n const navEntry = getNavigationEntry();\n let navigationType: Metric['navigationType'] = 'navigate';\n\n if (navEntry) {\n if ((WINDOW.document && WINDOW.document.prerendering) || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') as Metric['navigationType'];\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FirstInputPolyfillEntry, NavigationTimingPolyfillEntry, PerformancePaintTiming } from '../types';\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\ninterface PerformanceEntryMap {\n event: PerformanceEventTiming[];\n paint: PerformancePaintTiming[];\n 'layout-shift': LayoutShift[];\n 'largest-contentful-paint': LargestContentfulPaint[];\n 'first-input': PerformanceEventTiming[] | FirstInputPolyfillEntry[];\n navigation: PerformanceNavigationTiming[] | NavigationTimingPolyfillEntry[];\n resource: PerformanceResourceTiming[];\n longtask: PerformanceEntry[];\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (\n type: K,\n callback: (entries: PerformanceEntryMap[K]) => void,\n opts?: PerformanceObserverInit,\n): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() as PerformanceEntryMap[K]);\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) as PerformanceObserverInit,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || WINDOW.document!.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n\n if (WINDOW.document) {\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { CLSMetric, ReportCallback, StopListening } from './types';\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onCLS = (\n onReport: ReportCallback,\n options: { reportAllChanges?: boolean } = {},\n): StopListening | undefined => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries: LayoutShift[]): void => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric, options.reportAllChanges);\n\n const stopListening = (): void => {\n handleEntries(po.takeRecords() as CLSMetric['entries']);\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../../types';\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): void => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n if (WINDOW.document && WINDOW.document.visibilityState) {\n firstHiddenTime = WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n }\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { FIDMetric, PerformanceEventTiming, ReportCallback } from './types';\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nexport const onFID = (onReport: ReportCallback): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report: ReturnType;\n\n const handleEntry = (entry: PerformanceEventTiming): void => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries: FIDMetric['entries']): void => {\n (entries as PerformanceEventTiming[]).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() as FIDMetric['entries']);\n po.disconnect();\n }, true);\n }\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metric } from '../../types';\nimport { observe } from '../observe';\n\ndeclare global {\n interface Performance {\n interactionCount: number;\n }\n}\n\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nconst updateEstimate = (entries: Metric['entries']): void => {\n (entries as PerformanceEventTiming[]).forEach(e => {\n if (e.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);\n\n interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;\n }\n });\n};\n\nlet po: PerformanceObserver | undefined;\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport const getInteractionCount = (): number => {\n return po ? interactionCountEstimate : performance.interactionCount || 0;\n};\n\n/**\n * Feature detects native support or initializes the polyfill if needed.\n */\nexport const initInteractionCountPolyfill = (): void => {\n if ('interactionCount' in performance || po) return;\n\n po = observe('event', updateEstimate, {\n type: 'event',\n buffered: true,\n durationThreshold: 0,\n } as PerformanceObserverInit);\n};\n","/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { getInteractionCount, initInteractionCountPolyfill } from './lib/polyfills/interactionCountPolyfill';\nimport type { ReportCallback, ReportOpts } from './types';\nimport type { INPMetric } from './types/inp';\n\ninterface Interaction {\n id: number;\n latency: number;\n entries: PerformanceEventTiming[];\n}\n\n/**\n * Returns the interaction count since the last bfcache restore (or for the\n * full page lifecycle if there were no bfcache restores).\n */\nconst getInteractionCountForNavigation = (): number => {\n return getInteractionCount();\n};\n\n// To prevent unnecessary memory usage on pages with lots of interactions,\n// store at most 10 of the longest interactions to consider as INP candidates.\nconst MAX_INTERACTIONS_TO_CONSIDER = 10;\n\n// A list of longest interactions on the page (by latency) sorted so the\n// longest one is first. The list is as most MAX_INTERACTIONS_TO_CONSIDER long.\nconst longestInteractionList: Interaction[] = [];\n\n// A mapping of longest interactions by their interaction ID.\n// This is used for faster lookup.\nconst longestInteractionMap: { [interactionId: string]: Interaction } = {};\n\n/**\n * Takes a performance entry and adds it to the list of worst interactions\n * if its duration is long enough to make it among the worst. If the\n * entry is part of an existing interaction, it is merged and the latency\n * and entries list is updated as needed.\n */\nconst processEntry = (entry: PerformanceEventTiming): void => {\n // The least-long of the 10 longest interactions.\n const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const existingInteraction = longestInteractionMap[entry.interactionId!];\n\n // Only process the entry if it's possibly one of the ten longest,\n // or if it's part of an existing interaction.\n if (\n existingInteraction ||\n longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER ||\n entry.duration > minLongestInteraction.latency\n ) {\n // If the interaction already exists, update it. Otherwise create one.\n if (existingInteraction) {\n existingInteraction.entries.push(entry);\n existingInteraction.latency = Math.max(existingInteraction.latency, entry.duration);\n } else {\n const interaction = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: entry.interactionId!,\n latency: entry.duration,\n entries: [entry],\n };\n longestInteractionMap[interaction.id] = interaction;\n longestInteractionList.push(interaction);\n }\n\n // Sort the entries by latency (descending) and keep only the top ten.\n longestInteractionList.sort((a, b) => b.latency - a.latency);\n longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete longestInteractionMap[i.id];\n });\n }\n};\n\n/**\n * Returns the estimated p98 longest interaction based on the stored\n * interaction candidates and the interaction count for the current page.\n */\nconst estimateP98LongestInteraction = (): Interaction => {\n const candidateInteractionIndex = Math.min(\n longestInteractionList.length - 1,\n Math.floor(getInteractionCountForNavigation() / 50),\n );\n\n return longestInteractionList[candidateInteractionIndex];\n};\n\n/**\n * Calculates the [INP](https://web.dev/responsiveness/) value for the current\n * page and calls the `callback` function once the value is ready, along with\n * the `event` performance entries reported for that interaction. The reported\n * value is a `DOMHighResTimeStamp`.\n *\n * A custom `durationThreshold` configuration option can optionally be passed to\n * control what `event-timing` entries are considered for INP reporting. The\n * default threshold is `40`, which means INP scores of less than 40 are\n * reported as 0. Note that this will not affect your 75th percentile INP value\n * unless that value is also less than 40 (well below the recommended\n * [good](https://web.dev/inp/#what-is-a-good-inp-score) threshold).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** INP should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nexport const onINP = (onReport: ReportCallback, opts?: ReportOpts): void => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/inp/#what's-a-%22good%22-inp-value\n // const thresholds = [200, 500];\n\n // TODO(philipwalton): remove once the polyfill is no longer needed.\n initInteractionCountPolyfill();\n\n const metric = initMetric('INP');\n // eslint-disable-next-line prefer-const\n let report: ReturnType;\n\n const handleEntries = (entries: INPMetric['entries']): void => {\n entries.forEach(entry => {\n if (entry.interactionId) {\n processEntry(entry);\n }\n\n // Entries of type `first-input` don't currently have an `interactionId`,\n // so to consider them in INP we have to first check that an existing\n // entry doesn't match the `duration` and `startTime`.\n // Note that this logic assumes that `event` entries are dispatched\n // before `first-input` entries. This is true in Chrome but it is not\n // true in Firefox; however, Firefox doesn't support interactionId, so\n // it's not an issue at the moment.\n // TODO(philipwalton): remove once crbug.com/1325826 is fixed.\n if (entry.entryType === 'first-input') {\n const noMatchingEntry = !longestInteractionList.some(interaction => {\n return interaction.entries.some(prevEntry => {\n return entry.duration === prevEntry.duration && entry.startTime === prevEntry.startTime;\n });\n });\n if (noMatchingEntry) {\n processEntry(entry);\n }\n }\n });\n\n const inp = estimateP98LongestInteraction();\n\n if (inp && inp.latency !== metric.value) {\n metric.value = inp.latency;\n metric.entries = inp.entries;\n report();\n }\n };\n\n const po = observe('event', handleEntries, {\n // Event Timing entries have their durations rounded to the nearest 8ms,\n // so a duration of 40ms would be any event that spans 2.5 or more frames\n // at 60Hz. This threshold is chosen to strike a balance between usefulness\n // and performance. Running this callback for any interaction that spans\n // just one or two frames is likely not worth the insight that could be\n // gained.\n durationThreshold: opts.durationThreshold || 40,\n } as PerformanceObserverInit);\n\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n // Also observe entries of type `first-input`. This is useful in cases\n // where the first interaction is less than the `durationThreshold`.\n po.observe({ type: 'first-input', buffered: true });\n\n onHidden(() => {\n handleEntries(po.takeRecords() as INPMetric['entries']);\n\n // If the interaction count shows that there were interactions but\n // none were captured by the PerformanceObserver, report a latency of 0.\n if (metric.value < 0 && getInteractionCountForNavigation() > 0) {\n metric.value = 0;\n metric.entries = [];\n }\n\n report(true);\n });\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport type { LCPMetric, ReportCallback, StopListening } from './types';\n\nconst reportedMetricIDs: Record = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nexport const onLCP = (onReport: ReportCallback): StopListening | undefined => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const handleEntries = (entries: LCPMetric['entries']): void => {\n const lastEntry = entries[entries.length - 1] as LargestContentfulPaint;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() as LCPMetric['entries']);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n if (WINDOW.document) {\n addEventListener(type, stopListening, { once: true, capture: true });\n }\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WINDOW } from '../types';\nimport { bindReporter } from './lib/bindReporter';\nimport { getActivationStart } from './lib/getActivationStart';\nimport { getNavigationEntry } from './lib/getNavigationEntry';\nimport { initMetric } from './lib/initMetric';\nimport type { ReportCallback, ReportOpts } from './types';\nimport type { TTFBMetric } from './types/ttfb';\n\n/**\n * Runs in the next task after the page is done loading and/or prerendering.\n * @param callback\n */\nconst whenReady = (callback: () => void): void => {\n if (!WINDOW.document) {\n return;\n }\n\n if (WINDOW.document.prerendering) {\n addEventListener('prerenderingchange', () => whenReady(callback), true);\n } else if (WINDOW.document.readyState !== 'complete') {\n addEventListener('load', () => whenReady(callback), true);\n } else {\n // Queue a task so the callback runs after `loadEventEnd`.\n setTimeout(callback, 0);\n }\n};\n\n/**\n * Calculates the [TTFB](https://web.dev/time-to-first-byte/) value for the\n * current page and calls the `callback` function once the page has loaded,\n * along with the relevant `navigation` performance entry used to determine the\n * value. The reported value is a `DOMHighResTimeStamp`.\n *\n * Note, this function waits until after the page is loaded to call `callback`\n * in order to ensure all properties of the `navigation` entry are populated.\n * This is useful if you want to report on other metrics exposed by the\n * [Navigation Timing API](https://w3c.github.io/navigation-timing/). For\n * example, the TTFB metric starts from the page's [time\n * origin](https://www.w3.org/TR/hr-time-2/#sec-time-origin), which means it\n * includes time spent on DNS lookup, connection negotiation, network latency,\n * and server processing time.\n */\nexport const onTTFB = (onReport: ReportCallback, opts?: ReportOpts): void => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/ttfb/#what-is-a-good-ttfb-score\n // const thresholds = [800, 1800];\n\n const metric = initMetric('TTFB');\n const report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n whenReady(() => {\n const navEntry = getNavigationEntry() as TTFBMetric['entries'][number];\n\n if (navEntry) {\n // The activationStart reference is used because TTFB should be\n // relative to page activation rather than navigation start if the\n // page was prerendered. But in cases where `activationStart` occurs\n // after the first byte is received, this time should be clamped at 0.\n metric.value = Math.max(navEntry.responseStart - getActivationStart(), 0);\n\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n if (metric.value < 0 || metric.value > performance.now()) return;\n\n metric.entries = [navEntry];\n\n report(true);\n }\n });\n};\n","import { getFunctionName, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../common/debug-build';\nimport { onCLS } from './web-vitals/getCLS';\nimport { onFID } from './web-vitals/getFID';\nimport { onINP } from './web-vitals/getINP';\nimport { onLCP } from './web-vitals/getLCP';\nimport { observe } from './web-vitals/lib/observe';\nimport { onTTFB } from './web-vitals/onTTFB';\n\ntype InstrumentHandlerTypePerformanceObserver =\n | 'longtask'\n | 'event'\n | 'navigation'\n | 'paint'\n | 'resource'\n | 'first-input';\n\ntype InstrumentHandlerTypeMetric = 'cls' | 'lcp' | 'fid' | 'ttfb' | 'inp';\n\n// We provide this here manually instead of relying on a global, as this is not available in non-browser environements\n// And we do not want to expose such types\ninterface PerformanceEntry {\n readonly duration: number;\n readonly entryType: string;\n readonly name: string;\n readonly startTime: number;\n toJSON(): Record;\n}\ninterface PerformanceEventTiming extends PerformanceEntry {\n processingStart: number;\n processingEnd: number;\n duration: number;\n cancelable?: boolean;\n target?: unknown | null;\n interactionId?: number;\n}\n\ninterface Metric {\n /**\n * The name of the metric (in acronym form).\n */\n name: 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';\n\n /**\n * The current value of the metric.\n */\n value: number;\n\n /**\n * The rating as to whether the metric value is within the \"good\",\n * \"needs improvement\", or \"poor\" thresholds of the metric.\n */\n rating: 'good' | 'needs-improvement' | 'poor';\n\n /**\n * The delta between the current value and the last-reported value.\n * On the first report, `delta` and `value` will always be the same.\n */\n delta: number;\n\n /**\n * A unique ID representing this particular metric instance. This ID can\n * be used by an analytics tool to dedupe multiple values sent for the same\n * metric instance, or to group multiple deltas together and calculate a\n * total. It can also be used to differentiate multiple different metric\n * instances sent from the same page, which can happen if the page is\n * restored from the back/forward cache (in that case new metrics object\n * get created).\n */\n id: string;\n\n /**\n * Any performance entries relevant to the metric value calculation.\n * The array may also be empty if the metric value was not based on any\n * entries (e.g. a CLS value of 0 given no layout shifts).\n */\n entries: PerformanceEntry[];\n\n /**\n * The type of navigation\n *\n * Navigation Timing API (or `undefined` if the browser doesn't\n * support that API). For pages that are restored from the bfcache, this\n * value will be 'back-forward-cache'.\n */\n navigationType: 'navigate' | 'reload' | 'back-forward' | 'back-forward-cache' | 'prerender';\n}\n\ntype InstrumentHandlerType = InstrumentHandlerTypeMetric | InstrumentHandlerTypePerformanceObserver;\n\ntype StopListening = undefined | void | (() => void);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstrumentHandlerCallback = (data: any) => void;\n\ntype CleanupHandlerCallback = () => void;\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\nlet _previousCls: Metric | undefined;\nlet _previousFid: Metric | undefined;\nlet _previousLcp: Metric | undefined;\nlet _previousTtfb: Metric | undefined;\nlet _previousInp: Metric | undefined;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nexport function addClsInstrumentationHandler(\n callback: (data: { metric: Metric }) => void,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nexport function addLcpInstrumentationHandler(\n callback: (data: { metric: Metric }) => void,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nexport function addTtfbInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addFidInstrumentationHandler(callback: (data: { metric: Metric }) => void): CleanupHandlerCallback {\n return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addInpInstrumentationHandler(\n callback: (data: { metric: Omit & { entries: PerformanceEventTiming[] } }) => void,\n): CleanupHandlerCallback {\n return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\nexport function addPerformanceInstrumentationHandler(\n type: 'event' | 'first-input',\n callback: (data: { entries: ((PerformanceEntry & { target?: unknown | null }) | PerformanceEventTiming)[] }) => void,\n): CleanupHandlerCallback;\nexport function addPerformanceInstrumentationHandler(\n type: InstrumentHandlerTypePerformanceObserver,\n callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback;\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nexport function addPerformanceInstrumentationHandler(\n type: InstrumentHandlerTypePerformanceObserver,\n callback: (data: { entries: PerformanceEntry[] }) => void,\n): CleanupHandlerCallback {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentPerformanceObserver(type);\n instrumented[type] = true;\n }\n\n return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type: InstrumentHandlerType, data: unknown): void {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers || !typeHandlers.length) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nfunction instrumentCls(): StopListening {\n return onCLS(\n metric => {\n triggerHandlers('cls', {\n metric,\n });\n _previousCls = metric;\n },\n { reportAllChanges: true },\n );\n}\n\nfunction instrumentFid(): void {\n return onFID(metric => {\n triggerHandlers('fid', {\n metric,\n });\n _previousFid = metric;\n });\n}\n\nfunction instrumentLcp(): StopListening {\n return onLCP(metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n });\n}\n\nfunction instrumentTtfb(): StopListening {\n return onTTFB(metric => {\n triggerHandlers('ttfb', {\n metric,\n });\n _previousTtfb = metric;\n });\n}\n\nfunction instrumentInp(): void {\n return onINP(metric => {\n triggerHandlers('inp', {\n metric,\n });\n _previousInp = metric;\n });\n}\n\nfunction addMetricObserver(\n type: InstrumentHandlerTypeMetric,\n callback: InstrumentHandlerCallback,\n instrumentFn: () => StopListening,\n previousValue: Metric | undefined,\n stopOnCallback = false,\n): CleanupHandlerCallback {\n addHandler(type, callback);\n\n let stopListening: StopListening | undefined;\n\n if (!instrumented[type]) {\n stopListening = instrumentFn();\n instrumented[type] = true;\n }\n\n if (previousValue) {\n callback({ metric: previousValue });\n }\n\n return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type: InstrumentHandlerTypePerformanceObserver): void {\n const options: PerformanceObserverInit = {};\n\n // Special per-type options we want to use\n if (type === 'event') {\n options.durationThreshold = 0;\n }\n\n observe(\n type,\n entries => {\n triggerHandlers(type, { entries });\n },\n options,\n );\n}\n\nfunction addHandler(type: InstrumentHandlerType, handler: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n type: InstrumentHandlerType,\n callback: InstrumentHandlerCallback,\n stopListening: StopListening,\n): CleanupHandlerCallback {\n return () => {\n if (stopListening) {\n stopListening();\n }\n\n const typeHandlers = handlers[type];\n\n if (!typeHandlers) {\n return;\n }\n\n const index = typeHandlers.indexOf(callback);\n if (index !== -1) {\n typeHandlers.splice(index, 1);\n }\n };\n}\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and replay packages should `@sentry/browser` import\n// from `@sentry/replay` in the future\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nexport const REPLAY_SESSION_KEY = 'sentryReplaySession';\nexport const REPLAY_EVENT_NAME = 'replay_event';\nexport const RECORDING_EVENT_NAME = 'replay_recording';\nexport const UNABLE_TO_SEND_REPLAY = 'Unable to send Replay';\n\n// The idle limit for a session after which recording is paused.\nexport const SESSION_IDLE_PAUSE_DURATION = 300_000; // 5 minutes in ms\n\n// The idle limit for a session after which the session expires.\nexport const SESSION_IDLE_EXPIRE_DURATION = 900_000; // 15 minutes in ms\n\n/** Default flush delays */\nexport const DEFAULT_FLUSH_MIN_DELAY = 5_000;\n// XXX: Temp fix for our debounce logic where `maxWait` would never occur if it\n// was the same as `wait`\nexport const DEFAULT_FLUSH_MAX_DELAY = 5_500;\n\n/* How long to wait for error checkouts */\nexport const BUFFER_CHECKOUT_TIME = 60_000;\n\nexport const RETRY_BASE_INTERVAL = 5000;\nexport const RETRY_MAX_COUNT = 3;\n\n/* The max (uncompressed) size in bytes of a network body. Any body larger than this will be truncated. */\nexport const NETWORK_BODY_MAX_SIZE = 150_000;\n\n/* The max size of a single console arg that is captured. Any arg larger than this will be truncated. */\nexport const CONSOLE_ARG_MAX_SIZE = 5_000;\n\n/* Min. time to wait before we consider something a slow click. */\nexport const SLOW_CLICK_THRESHOLD = 3_000;\n/* For scroll actions after a click, we only look for a very short time period to detect programmatic scrolling. */\nexport const SLOW_CLICK_SCROLL_TIMEOUT = 300;\n\n/** When encountering a total segment size exceeding this size, stop the replay (as we cannot properly ingest it). */\nexport const REPLAY_MAX_EVENT_BUFFER_SIZE = 20_000_000; // ~20MB\n\n/** Replays must be min. 5s long before we send them. */\nexport const MIN_REPLAY_DURATION = 4_999;\n/* The max. allowed value that the minReplayDuration can be set to. */\nexport const MIN_REPLAY_DURATION_LIMIT = 15_000;\n\n/** The max. length of a replay. */\nexport const MAX_REPLAY_DURATION = 3_600_000; // 60 minutes in ms;\n\n/** Default attributes to be ignored when `maskAllText` is enabled */\nexport const DEFAULT_IGNORED_ATTRIBUTES = ['title', 'placeholder'];\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n?.host;\r\n return Boolean(host?.shadowRoot === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n if (!n)\r\n return -1;\r\n const id = this.getMeta(n)?.id;\r\n return id ?? -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\r\n if (tagName === 'OPTION') {\r\n tagName = 'SELECT';\r\n }\r\n return Boolean(maskInputOptions[tagName.toLowerCase()] ||\r\n (type && maskInputOptions[type]) ||\r\n type === 'password' ||\r\n (tagName === 'INPUT' && !type && maskInputOptions['text']));\r\n}\r\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\r\n let text = value || '';\r\n if (!isMasked) {\r\n return text;\r\n }\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n return '*'.repeat(text.length);\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nfunction toUpperCase(str) {\r\n return str.toUpperCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction getInputValue(el, tagName, type) {\r\n if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\r\n return el.getAttribute('value') || '';\r\n }\r\n return el.value;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n if (typeof maskAttributeFn === 'function') {\r\n return maskAttributeFn(name, value, element);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\r\n try {\r\n if (unblockSelector && element.matches(unblockSelector)) {\r\n return false;\r\n }\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction elementClassMatchesRegex(el, regex) {\r\n for (let eIndex = el.classList.length; eIndex--;) {\r\n const className = el.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\r\n if (!node)\r\n return -1;\r\n if (node.nodeType !== node.ELEMENT_NODE)\r\n return -1;\r\n if (distance > limit)\r\n return -1;\r\n if (matchPredicate(node))\r\n return distance;\r\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\r\n}\r\nfunction createMatchPredicate(className, selector) {\r\n return (node) => {\r\n const el = node;\r\n if (el === null)\r\n return false;\r\n try {\r\n if (className) {\r\n if (typeof className === 'string') {\r\n if (el.matches(`.${className}`))\r\n return true;\r\n }\r\n else if (elementClassMatchesRegex(el, className)) {\r\n return true;\r\n }\r\n }\r\n if (selector && el.matches(selector))\r\n return true;\r\n return false;\r\n }\r\n catch {\r\n return false;\r\n }\r\n };\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (el.tagName === 'INPUT') {\r\n const autocomplete = el.getAttribute('autocomplete');\r\n const disallowedAutocompleteValues = [\r\n 'current-password',\r\n 'new-password',\r\n 'cc-number',\r\n 'cc-exp',\r\n 'cc-exp-month',\r\n 'cc-exp-year',\r\n 'cc-csc',\r\n ];\r\n if (disallowedAutocompleteValues.includes(autocomplete)) {\r\n return true;\r\n }\r\n }\r\n let maskDistance = -1;\r\n let unmaskDistance = -1;\r\n if (maskAllText) {\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\r\n if (unmaskDistance < 0) {\r\n return true;\r\n }\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\r\n }\r\n else {\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\r\n if (maskDistance < 0) {\r\n return false;\r\n }\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\r\n }\r\n return maskDistance >= 0\r\n ? unmaskDistance >= 0\r\n ? maskDistance <= unmaskDistance\r\n : true\r\n : unmaskDistance >= 0\r\n ? false\r\n : !!maskAllText;\r\n }\r\n catch (e) {\r\n }\r\n return !!maskAllText;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n inlineStylesheet,\r\n maskAttributeFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n maskTextFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if (n.parentNode.sheet?.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\r\n if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\r\n textContent = maskInputFn\r\n ? maskInputFn(textContent, n.parentNode)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (parentTagName === 'OPTION' && textContent) {\r\n const isInputMasked = shouldMaskInput({\r\n type: null,\r\n tagName: parentTagName,\r\n maskInputOptions,\r\n });\r\n textContent = maskInputValue({\r\n isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\r\n element: n,\r\n value: textContent,\r\n maskInputFn,\r\n });\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === n.href;\r\n });\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' ||\r\n tagName === 'textarea' ||\r\n tagName === 'select' ||\r\n tagName === 'option') {\r\n const el = n;\r\n const type = getInputType(el);\r\n const value = getInputValue(el, toUpperCase(tagName), type);\r\n const checked = el.checked;\r\n if (type !== 'submit' && type !== 'button' && value) {\r\n const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\r\n type,\r\n tagName: toUpperCase(tagName),\r\n maskInputOptions,\r\n }));\r\n attributes.value = maskInputValue({\r\n isMasked: forceMask,\r\n element: el,\r\n value,\r\n maskInputFn,\r\n });\r\n }\r\n if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n }\r\n : maskAllInputs === false\r\n ? {}\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\r\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n let lineno = 1;\r\n let column = 1;\r\n function updatePosition(str) {\r\n const lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n const i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n const start = { line: lineno, column };\r\n return (node) => {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n class Position {\r\n constructor(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column };\r\n this.source = options.source;\r\n }\r\n }\r\n Position.prototype.content = css;\r\n const errorsList = [];\r\n function error(msg) {\r\n const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n const rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList,\r\n },\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n let node;\r\n const rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n const m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n const str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules = []) {\r\n let c;\r\n while ((c = comment())) {\r\n if (c) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n const pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n let i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n const str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str,\r\n });\r\n }\r\n function selector() {\r\n whitespace();\r\n while (css[0] == '}') {\r\n error('extra closing bracket');\r\n css = css.slice(1);\r\n whitespace();\r\n }\r\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const cleanedInput = m[0]\r\n .trim()\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n return m.replace(/,/g, '\\u200C');\r\n });\r\n return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n }\r\n function customSplit(input) {\r\n const result = [];\r\n let currentSegment = '';\r\n let depthParentheses = 0;\r\n let depthBrackets = 0;\r\n let currentStringChar = null;\r\n for (const char of input) {\r\n const hasStringEscape = currentSegment.endsWith('\\\\');\r\n if (currentStringChar) {\r\n if (currentStringChar === char && !hasStringEscape) {\r\n currentStringChar = null;\r\n }\r\n }\r\n else if (char === '(') {\r\n depthParentheses++;\r\n }\r\n else if (char === ')') {\r\n depthParentheses--;\r\n }\r\n else if (char === '[') {\r\n depthBrackets++;\r\n }\r\n else if (char === ']') {\r\n depthBrackets--;\r\n }\r\n else if ('\\'\"'.includes(char)) {\r\n currentStringChar = char;\r\n }\r\n if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n result.push(currentSegment);\r\n currentSegment = '';\r\n }\r\n else {\r\n currentSegment += char;\r\n }\r\n }\r\n if (currentSegment) {\r\n result.push(currentSegment);\r\n }\r\n return result;\r\n }\r\n function declaration() {\r\n const pos = position();\r\n const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n const prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(`property missing ':'`);\r\n }\r\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n const ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : '',\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n const decls = [];\r\n if (!open()) {\r\n return error(`missing '{'`);\r\n }\r\n comments(decls);\r\n let decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(`missing '}'`);\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n let m;\r\n const vals = [];\r\n const pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations(),\r\n });\r\n }\r\n function atkeyframes() {\r\n const pos = position();\r\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n const name = m[1];\r\n if (!open()) {\r\n return error(`@keyframes missing '{'`);\r\n }\r\n let frame;\r\n let frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@keyframes missing '}'`);\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name,\r\n vendor,\r\n keyframes: frames,\r\n });\r\n }\r\n function atsupports() {\r\n const pos = position();\r\n const m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const supports = trim(m[1]);\r\n if (!open()) {\r\n return error(`@supports missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@supports missing '}'`);\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports,\r\n rules: style,\r\n });\r\n }\r\n function athost() {\r\n const pos = position();\r\n const m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@host missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@host missing '}'`);\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style,\r\n });\r\n }\r\n function atmedia() {\r\n const pos = position();\r\n const m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const media = trim(m[1]);\r\n if (!open()) {\r\n return error(`@media missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@media missing '}'`);\r\n }\r\n return pos({\r\n type: 'media',\r\n media,\r\n rules: style,\r\n });\r\n }\r\n function atcustommedia() {\r\n const pos = position();\r\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2]),\r\n });\r\n }\r\n function atpage() {\r\n const pos = position();\r\n const m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n const sel = selector() || [];\r\n if (!open()) {\r\n return error(`@page missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@page missing '}'`);\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls,\r\n });\r\n }\r\n function atdocument() {\r\n const pos = position();\r\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = trim(m[1]);\r\n const doc = trim(m[2]);\r\n if (!open()) {\r\n return error(`@document missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@document missing '}'`);\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor,\r\n rules: style,\r\n });\r\n }\r\n function atfontface() {\r\n const pos = position();\r\n const m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@font-face missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@font-face missing '}'`);\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls,\r\n });\r\n }\r\n const atimport = _compileAtrule('import');\r\n const atcharset = _compileAtrule('charset');\r\n const atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return () => {\r\n const pos = position();\r\n const m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n const ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n const pos = position();\r\n const sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations(),\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n const isNode = obj && typeof obj.type === 'string';\r\n const childParent = isNode ? obj : parent;\r\n for (const k of Object.keys(obj)) {\r\n const value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null,\r\n });\r\n }\r\n return obj;\r\n}\n\nconst tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n if (cssText.length >= 1000000) {\r\n return cssText;\r\n }\r\n const ast = parse(cssText, {\r\n silent: true,\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n const selectors = [];\r\n ast.stylesheet.rules.forEach((rule) => {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach((selector) => {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n const selectorMatcher = new RegExp(selectors\r\n .filter((selector, index) => selectors.indexOf(selector) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((selector) => {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n const result = cssText.replace(selectorMatcher, (selector) => {\r\n const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return `${selector}, ${newSelector}`;\r\n });\r\n cache?.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n const stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass,\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n const { doc, hackCss, cache } = options;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n const tagName = getTagName(n);\r\n let node;\r\n if (n.isSVG) {\r\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n if (n.isCustom &&\r\n doc.defaultView?.customElements &&\r\n !doc.defaultView.customElements.get(n.tagName))\r\n doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n });\r\n node = doc.createElement(tagName);\r\n }\r\n const specialAttributes = {};\r\n for (const name in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n continue;\r\n }\r\n let value = n.attributes[name];\r\n if (tagName === 'option' &&\r\n name === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name.startsWith('rr_')) {\r\n specialAttributes[name] = value;\r\n continue;\r\n }\r\n const isTextarea = tagName === 'textarea' && name === 'value';\r\n const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n const child = doc.createTextNode(value);\r\n for (const c of Array.from(node.childNodes)) {\r\n if (c.nodeType === node.TEXT_NODE) {\r\n node.removeChild(c);\r\n }\r\n }\r\n node.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name === 'xlink:href') {\r\n node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n }\r\n else if (name === 'onload' ||\r\n name === 'onclick' ||\r\n name.substring(0, 7) === 'onmouse') {\r\n node.setAttribute('_' + name, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name === 'content') {\r\n node.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node.setAttribute(name, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n for (const name in specialAttributes) {\r\n const value = specialAttributes[name];\r\n if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = node.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = value.toString();\r\n if (node.RRNodeType)\r\n node.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name === 'rr_dataURL') {\r\n const image = node;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name === 'rr_width') {\r\n node.style.setProperty('width', value.toString());\r\n }\r\n else if (name === 'rr_height') {\r\n node.style.setProperty('height', value.toString());\r\n }\r\n else if (name === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node.currentTime = value;\r\n }\r\n else if (name === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node\r\n .play()\r\n .catch((e) => console.warn('media playback error', e));\r\n break;\r\n case 'paused':\r\n node.pause();\r\n break;\r\n }\r\n }\r\n }\r\n if (n.isShadowHost) {\r\n if (!node.shadowRoot) {\r\n node.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node.shadowRoot.firstChild) {\r\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n if (mirror.has(n.id)) {\r\n const nodeInMirror = mirror.getNode(n.id);\r\n const meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n let node = buildNode(n, { doc, hackCss, cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('');\r\n }\r\n else {\r\n doc.write('');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (const childN of n.childNodes) {\r\n const childNode = buildNodeWithSN(childN, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n const htmlElement = childNode;\r\n let body = null;\r\n htmlElement.childNodes.forEach((child) => {\r\n if (child.nodeName === 'BODY')\r\n body = child;\r\n });\r\n if (body) {\r\n htmlElement.removeChild(body);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (const id of mirror.getIds()) {\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n const n = mirror.getMeta(node);\r\n if (n?.type !== NodeType.Element) {\r\n return;\r\n }\r\n const el = node;\r\n for (const name in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n name.startsWith('rr_'))) {\r\n continue;\r\n }\r\n const value = n.attributes[name];\r\n if (name === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n const node = buildNodeWithSN(n, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n visit(mirror, (visitedNode) => {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, createCache, createMatchPredicate, createMirror, distanceToMatch, escapeImportStatement, fixSafariColons, genId, getInputType, getInputValue, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, shouldMaskInput, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, toUpperCase, transformAttribute };\n","import { distanceToMatch, IGNORED_NODE, isShadowRoot, createMatchPredicate } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch {\r\n return () => {\r\n };\r\n }\r\n}\r\nlet nowTimestamp = Date.now;\r\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\r\n nowTimestamp = () => new Date().getTime();\r\n}\r\nfunction getWindowScroll(win) {\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : doc?.documentElement.scrollLeft ||\r\n doc?.body?.parentElement?.scrollLeft ||\r\n doc?.body?.scrollLeft ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : doc?.documentElement.scrollTop ||\r\n doc?.body?.parentElement?.scrollTop ||\r\n doc?.body?.scrollTop ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction closestElementOfNode(node) {\r\n if (!node) {\r\n return null;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n return el;\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = closestElementOfNode(node);\r\n if (!el) {\r\n return false;\r\n }\r\n const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\r\n if (!checkAncestors) {\r\n const isUnblocked = unblockSelector && el.matches(unblockSelector);\r\n return blockedPredicate(el) && !isUnblocked;\r\n }\r\n const blockDistance = distanceToMatch(el, blockedPredicate);\r\n let unblockDistance = -1;\r\n if (blockDistance < 0) {\r\n return false;\r\n }\r\n if (unblockSelector) {\r\n unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\r\n }\r\n if (blockDistance > -1 && unblockDistance < 0) {\r\n return true;\r\n }\r\n return blockDistance < unblockDistance;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n const frameElement = node.ownerDocument?.defaultView?.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n?.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n return this.styleIDMap.get(stylesheet) ?? -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n let shadowHost = null;\r\n if (n.getRootNode?.()?.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\r\nconst cachedImplementations = {};\r\nfunction getImplementation(name) {\r\n const cached = cachedImplementations[name];\r\n if (cached) {\r\n return cached;\r\n }\r\n const document = window.document;\r\n let impl = window[name];\r\n if (document && typeof document.createElement === 'function') {\r\n try {\r\n const sandbox = document.createElement('iframe');\r\n sandbox.hidden = true;\r\n document.head.appendChild(sandbox);\r\n const contentWindow = sandbox.contentWindow;\r\n if (contentWindow && contentWindow[name]) {\r\n impl =\r\n contentWindow[name];\r\n }\r\n document.head.removeChild(sandbox);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return (cachedImplementations[name] = impl.bind(window));\r\n}\r\nfunction onRequestAnimationFrame(...rest) {\r\n return getImplementation('requestAnimationFrame')(...rest);\r\n}\r\nfunction setTimeout(...rest) {\r\n return getImplementation('setTimeout')(...rest);\r\n}\r\nfunction clearTimeout(...rest) {\r\n return getImplementation('clearTimeout')(...rest);\r\n}\n\nexport { StyleSheetMirror, _mirror, clearTimeout, closestElementOfNode, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, nowTimestamp, on, onRequestAnimationFrame, patch, polyfill, queueToResolveTrees, setTimeout, shadowHostInDom, throttle, uniqueTextMutations };\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, getInputValue, shouldMaskInput, needMaskingText, maskInputValue, ignoreAttribute, transformAttribute, toLowerCase, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, closestElementOfNode, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n this.tail = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = current?.next || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n if (node.next === null) {\r\n this.tail = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n else {\r\n this.tail = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n else {\r\n this.tail = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addedIds = new Set();\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode || !inDom(n)) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskAllText: this.maskAllText,\r\n unblockSelector: this.unblockSelector,\r\n maskTextClass: this.maskTextClass,\r\n unmaskTextClass: this.unmaskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n unmaskTextSelector: this.unmaskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskAttributeFn: this.maskAttributeFn,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n addedIds.add(sn.id);\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n let tailNode = addList.tail;\r\n while (tailNode) {\r\n const _node = tailNode;\r\n tailNode = tailNode.previous;\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => !addedIds.has(text.id))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => {\r\n const { attributes } = attribute;\r\n if (typeof attributes.style === 'string') {\r\n const diffAsStr = JSON.stringify(attribute.styleDiff);\r\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\r\n if (diffAsStr.length < attributes.style.length) {\r\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\r\n attributes.style.split('var(').length) {\r\n attributes.style = attribute.styleDiff;\r\n }\r\n }\r\n }\r\n return {\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attributes,\r\n };\r\n })\r\n .filter((attribute) => !addedIds.has(attribute.id))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, this.maskAllText) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value, closestElementOfNode(m.target))\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n const tagName = target.tagName;\r\n value = getInputValue(target, tagName, type);\r\n const isInputMasked = shouldMaskInput({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName,\r\n type,\r\n });\r\n const forceMask = needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, isInputMasked);\r\n value = maskInputValue({\r\n isMasked: forceMask,\r\n element: target,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributeMap.get(m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(m.target, item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value, target, this.maskAttributeFn);\r\n if (attributeName === 'style') {\r\n if (!this.unattachedDoc) {\r\n try {\r\n this.unattachedDoc =\r\n document.implementation.createHTMLDocument();\r\n }\r\n catch (e) {\r\n this.unattachedDoc = this.doc;\r\n }\r\n }\r\n const old = this.unattachedDoc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n item.styleDiff[pname] = newValue;\r\n }\r\n else {\r\n item.styleDiff[pname] = [newValue, newPriority];\r\n }\r\n }\r\n else {\r\n item._unchangedStyles[pname] = [newValue, newPriority];\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n item.styleDiff[pname] = false;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, true)) {\r\n return;\r\n }\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.addedSet.has(n) || this.movedSet.has(n))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'unblockSelector',\r\n 'maskAllText',\r\n 'maskTextClass',\r\n 'unmaskTextClass',\r\n 'maskTextSelector',\r\n 'unmaskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskAttributeFn',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return () => {\r\n };\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { toLowerCase, toUpperCase, getInputType, getInputValue, shouldMaskInput, needMaskingText, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, hookSetter, patch, setTimeout, legacy_isTouchEvent, nowTimestamp, getWindowHeight, getWindowWidth } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/rrweb-types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n }\r\n catch {\r\n }\r\n return event && event.target;\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = window?.Zone?.__symbol__?.('MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\r\n if (options.onMutation && options.onMutation(mutations) === false) {\r\n return;\r\n }\r\n mutationBuffer.processMutations.bind(mutationBuffer)(mutations);\r\n }));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = nowTimestamp();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: nowTimestamp() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)({\r\n type: MouseInteractions[thisEventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n ...(pointerType !== null && { pointerType }),\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = toLowerCase(eventKey);\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, win);\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && toUpperCase(target.tagName);\r\n if (tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n const el = target;\r\n if (el.classList.contains(ignoreClass) ||\r\n (ignoreSelector && el.matches(ignoreSelector))) {\r\n return;\r\n }\r\n const type = getInputType(target);\r\n let text = getInputValue(el, tagName, type);\r\n let isChecked = false;\r\n const isInputMasked = shouldMaskInput({\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n });\r\n const forceMask = needMaskingText(target, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked);\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n text = maskInputValue({\r\n isMasked: forceMask,\r\n element: target,\r\n value: text,\r\n maskInputFn,\r\n });\r\n cbWithDedup(target, userTriggeredOnInput\r\n ? { text, isChecked, userTriggered }\r\n : { text, isChecked });\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n const text = maskInputValue({\r\n isMasked: forceMask,\r\n element: el,\r\n value: getInputValue(el, tagName, type),\r\n maskInputFn,\r\n });\r\n cbWithDedup(el, userTriggeredOnInput\r\n ? { text, isChecked: !isChecked, userTriggered: false }\r\n : { text, isChecked: !isChecked });\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)({\r\n ...v,\r\n id,\r\n });\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? host.defaultView?.Document\r\n : host.ownerDocument?.defaultView?.ShadowRoot;\r\n const originalPropertyDescriptor = patchTarget?.prototype\r\n ? Object.getOwnPropertyDescriptor(patchTarget?.prototype, 'adoptedStyleSheets')\r\n : undefined;\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n return originalPropertyDescriptor.get?.call(this);\r\n },\r\n set(sheets) {\r\n const result = originalPropertyDescriptor.set?.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentRule?.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentRule?.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, doc, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0), doc),\r\n on('pause', handler(1), doc),\r\n on('seeked', handler(2), doc),\r\n on('volumechange', handler(3), doc),\r\n on('ratechange', handler(4), doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, selectionCb, } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && selection?.isCollapsed))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, unblockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, unblockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction initCustomElementObserver({ doc, customElementCb, }) {\r\n const win = doc.defaultView;\r\n if (!win || !win.customElements)\r\n return () => { };\r\n const restoreHandler = patch(win.customElements, 'define', function (original) {\r\n return function (name, constructor, options) {\r\n try {\r\n customElementCb({\r\n define: {\r\n name,\r\n },\r\n });\r\n }\r\n catch (e) {\r\n }\r\n return original.apply(this, [name, constructor, options]);\r\n };\r\n });\r\n return restoreHandler;\r\n}\r\nfunction initObservers(o, _hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o, {\r\n win: currentWindow,\r\n });\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const customElementObserver = initCustomElementObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n customElementObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/rrweb-types.js';\n\nclass IframeManagerNoop {\r\n constructor() {\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n }\r\n addIframe() {\r\n }\r\n addLoadListener() {\r\n }\r\n attachIframe() {\r\n }\r\n}\r\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n this.loadListener?.(iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n e.data.styles?.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager, IframeManagerNoop };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { setTimeout, patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManagerNoop {\r\n init() {\r\n }\r\n addShadowRoot() {\r\n }\r\n observeAttachShadow() {\r\n }\r\n reset() {\r\n }\r\n}\r\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver({\r\n ...this.bypassOptions,\r\n doc,\r\n mutationCb: this.mutationCb,\r\n mirror: this.mirror,\r\n shadowDomManager: this,\r\n }, shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver({\r\n ...this.bypassOptions,\r\n scrollCb: this.scrollCb,\r\n doc: shadowRoot,\r\n mirror: this.mirror,\r\n }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager, ShadowDomManagerNoop };\n","import { onRequestAnimationFrame, isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/rrweb-types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport { getImageBitmapDataUrlWorkerURL as t } from '../../../../../rrweb-worker/es/rrweb-worker/index.js';\nimport { callbackWrapper, registerErrorHandler } from '../../error-handler.js';\n\nclass CanvasManagerNoop {\r\n reset() {\r\n }\r\n freeze() {\r\n }\r\n unfreeze() {\r\n }\r\n lock() {\r\n }\r\n unlock() {\r\n }\r\n snapshot() {\r\n }\r\n}\r\nclass CanvasManager {\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, unblockSelector, maxCanvasSize, recordCanvas, dataURLOptions, errorHandler, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n this.options = options;\r\n if (errorHandler) {\r\n registerErrorHandler(errorHandler);\r\n }\r\n if (options.enableManualSnapshot) {\r\n return;\r\n }\r\n callbackWrapper(() => {\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, {\r\n dataURLOptions,\r\n });\r\n })();\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, true);\r\n const rafId = this.takeSnapshot(false, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options.dataURLOptions);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, false);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n snapshot(canvasElement) {\r\n const { options } = this;\r\n const rafId = this.takeSnapshot(true, options.sampling === 'all' ? 2 : options.sampling || 2, options.win, options.blockClass, options.blockSelector, options.unblockSelector, options.maxCanvasSize, options.dataURLOptions, canvasElement);\r\n this.resetObservers = () => {\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n takeSnapshot(isManualSnapshot, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, dataURLOptions, canvasElement) {\r\n const snapshotInProgressMap = new Map();\r\n const worker = new Worker(t());\r\n worker.onmessage = (e) => {\r\n const data = e.data;\r\n const { id } = data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in data))\r\n return;\r\n const { base64, type, width, height } = data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n width,\r\n height,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = (canvasElement) => {\r\n if (canvasElement) {\r\n return [canvasElement];\r\n }\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, unblockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas(canvasElement).forEach((canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n if (!canvas.width || !canvas.height)\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (!isManualSnapshot &&\r\n ['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (context?.getContextAttributes()?.preserveDrawingBuffer === false) {\r\n context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n createImageBitmap(canvas)\r\n .then((bitmap) => {\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions,\r\n maxCanvasSize,\r\n }, [bitmap]);\r\n })\r\n .catch((error) => {\r\n callbackWrapper(() => {\r\n throw error;\r\n })();\r\n });\r\n });\r\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\r\n return rafId;\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n onRequestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n onRequestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const { type, ...rest } = value;\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager, CanvasManagerNoop };\n","import { stringifyRule } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n styles.push({\r\n styleId,\r\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\r\n rule: stringifyRule(r),\r\n index,\r\n })),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { onRequestAnimationFrame } from '../utils.js';\n\nclass ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n onRequestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nexport { ProcessedNodeManager as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, nowTimestamp, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/rrweb-types.js';\nimport { IframeManagerNoop, IframeManager } from './iframe-manager.js';\nimport { ShadowDomManagerNoop, ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManagerNoop } from './observers/canvas/canvas-manager.js';\nexport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nlet wrappedEmit;\r\nlet _wrappedEmit;\r\nlet _takeFullSnapshot;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskAttributeFn, maskInputFn, maskTextFn, maxCanvasSize = null, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, onMutation, getCanvasManager, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n radio: true,\r\n checkbox: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : {};\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (r, isCheckout) => {\r\n const e = r;\r\n e.timestamp = nowTimestamp();\r\n if (mutationBuffers[0]?.isFrozen() &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit?.(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n lastFullSnapshotEvent &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n _wrappedEmit = wrappedEmit;\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n ...m,\r\n },\r\n });\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Scroll,\r\n ...p,\r\n },\r\n });\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.CanvasMutation,\r\n ...p,\r\n },\r\n });\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.AdoptedStyleSheet,\r\n ...a,\r\n },\r\n });\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = typeof __RRWEB_EXCLUDE_IFRAME__ === 'boolean' && __RRWEB_EXCLUDE_IFRAME__\r\n ? new IframeManagerNoop()\r\n : new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n const canvasManager = _getCanvasManager(getCanvasManager, {\r\n mirror,\r\n win: window,\r\n mutationCb: (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.CanvasMutation,\r\n ...p,\r\n },\r\n }),\r\n recordCanvas,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maxCanvasSize,\r\n sampling: sampling['canvas'],\r\n dataURLOptions,\r\n errorHandler,\r\n });\r\n const shadowDomManager = typeof __RRWEB_EXCLUDE_SHADOW_DOM__ === 'boolean' &&\r\n __RRWEB_EXCLUDE_SHADOW_DOM__\r\n ? new ShadowDomManagerNoop()\r\n : new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n onMutation,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n const takeFullSnapshot = (isCheckout = false) => {\r\n wrappedEmit({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }, isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskAttributeFn,\r\n maskInputFn,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n });\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n _takeFullSnapshot = takeFullSnapshot;\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n return callbackWrapper(initObservers)({\r\n onMutation,\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n }),\r\n mouseInteractionCb: (d) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.MouseInteraction,\r\n ...d,\r\n },\r\n }),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.ViewportResize,\r\n ...d,\r\n },\r\n }),\r\n inputCb: (v) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Input,\r\n ...v,\r\n },\r\n }),\r\n mediaInteractionCb: (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.MediaInteraction,\r\n ...p,\r\n },\r\n }),\r\n styleSheetRuleCb: (r) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.StyleSheetRule,\r\n ...r,\r\n },\r\n }),\r\n styleDeclarationCb: (r) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.StyleDeclaration,\r\n ...r,\r\n },\r\n }),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Font,\r\n ...p,\r\n },\r\n }),\r\n selectionCb: (p) => {\r\n wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Selection,\r\n ...p,\r\n },\r\n });\r\n },\r\n customElementCb: (c) => {\r\n wrappedEmit({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.CustomElement,\r\n ...c,\r\n },\r\n });\r\n },\r\n blockClass,\r\n ignoreClass,\r\n ignoreSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskAttributeFn,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n unblockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: plugins\r\n ?.filter((p) => p.observer)\r\n ?.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n }),\r\n })) || [],\r\n }, {});\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n });\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit({\r\n type: EventType.Load,\r\n data: {},\r\n });\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n _takeFullSnapshot = undefined;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nfunction addCustomEvent(tag, payload) {\r\n if (!_wrappedEmit) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n });\r\n}\r\nfunction freezePage() {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n}\r\nfunction takeFullSnapshot(isCheckout) {\r\n if (!_takeFullSnapshot) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n _takeFullSnapshot(isCheckout);\r\n}\r\nrecord.mirror = mirror;\r\nrecord.takeFullSnapshot = takeFullSnapshot;\r\nfunction _getCanvasManager(getCanvasManagerFn, options) {\r\n try {\r\n return getCanvasManagerFn\r\n ? getCanvasManagerFn(options)\r\n : new CanvasManagerNoop();\r\n }\r\n catch {\r\n console.warn('Unable to initialize CanvasManager');\r\n return new CanvasManagerNoop();\r\n }\r\n}\n\nexport { addCustomEvent, record as default, freezePage, mirror, takeFullSnapshot };\n","type ClassOption = string | RegExp;\n\n/** Duplicate this from @sentry-internal/rrweb so we can export this as well. */\nexport const ReplayEventTypeDomContentLoaded = 0;\nexport const ReplayEventTypeLoad = 1;\nexport const ReplayEventTypeFullSnapshot = 2;\nexport const ReplayEventTypeIncrementalSnapshot = 3;\nexport const ReplayEventTypeMeta = 4;\nexport const ReplayEventTypeCustom = 5;\nexport const ReplayEventTypePlugin = 6;\n\nexport type ReplayEventType =\n | typeof ReplayEventTypeDomContentLoaded\n | typeof ReplayEventTypeLoad\n | typeof ReplayEventTypeFullSnapshot\n | typeof ReplayEventTypeIncrementalSnapshot\n | typeof ReplayEventTypeMeta\n | typeof ReplayEventTypeCustom\n | typeof ReplayEventTypePlugin;\n\n/**\n * This is a partial copy of rrweb's eventWithTime type which only contains the properties\n * we specifcally need in the SDK.\n */\nexport type ReplayEventWithTime = {\n type: ReplayEventType;\n data: unknown;\n timestamp: number;\n delay?: number;\n};\n\n/**\n * This is a partial copy of rrweb's recording options which only contains the properties\n * we specifically us in the SDK. Users can specify additional properties, hence we add the\n * Record union type.\n */\nexport type RrwebRecordOptions = {\n maskAllText?: boolean;\n maskAllInputs?: boolean;\n blockClass?: ClassOption;\n ignoreClass?: string;\n maskTextClass?: ClassOption;\n maskTextSelector?: string;\n blockSelector?: string;\n maskInputOptions?: Record;\n} & Record;\n\nexport interface CanvasManagerInterface {\n reset(): void;\n freeze(): void;\n unfreeze(): void;\n lock(): void;\n unlock(): void;\n snapshot(): void;\n}\n\nexport interface CanvasManagerOptions {\n recordCanvas: boolean;\n enableManualSnapshot?: boolean;\n blockClass: string | RegExp;\n blockSelector: string | null;\n unblockSelector: string | null;\n sampling?: 'all' | number;\n dataURLOptions: Partial<{\n type: string;\n quality: number;\n }>;\n mutationCb: (p: any) => void;\n win: typeof globalThis & Window;\n mirror: any;\n}\n","/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nexport function timestampToMs(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp : timestamp * 1000;\n}\n\n/**\n * Converts a timestamp to s, if it was in ms, or keeps it as s.\n */\nexport function timestampToS(timestamp: number): number {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport type { Breadcrumb } from '@sentry/types';\nimport { normalize } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../../types';\n\n/**\n * Add a breadcrumb event to replay.\n */\nexport function addBreadcrumbEvent(replay: ReplayContainer, breadcrumb: Breadcrumb): void {\n if (breadcrumb.category === 'sentry.transaction') {\n return;\n }\n\n if (['ui.click', 'ui.input'].includes(breadcrumb.category as string)) {\n replay.triggerUserActivity();\n } else {\n replay.checkAndHandleExpiredSession();\n }\n\n replay.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n // but maybe we should just keep them as milliseconds\n timestamp: (breadcrumb.timestamp || 0) * 1000,\n data: {\n tag: 'breadcrumb',\n // normalize to max. 10 depth and 1_000 properties per object\n payload: normalize(breadcrumb, 10, 1_000),\n },\n });\n\n // Do not flush after console log messages\n return breadcrumb.category === 'console';\n });\n}\n","import type { INode } from '@sentry-internal/rrweb-snapshot';\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/** Get the closest interactive parent element, or else return the given element. */\nexport function getClosestInteractive(element: Element): Element {\n const closestInteractive = element.closest(INTERACTIVE_SELECTOR);\n return closestInteractive || element;\n}\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in ,\n * The target will be the image, not the button, which we don't want here\n */\nexport function getClickTargetNode(event: Event | MouseEvent | Node): Node | INode | null {\n const target = getTargetNode(event);\n\n if (!target || !(target instanceof Element)) {\n return target;\n }\n\n return getClosestInteractive(target);\n}\n\n/** Get the event target node. */\nexport function getTargetNode(event: Node | { target: EventTarget | null }): Node | INode | null {\n if (isEventWithTarget(event)) {\n return event.target as Node | null;\n }\n\n return event;\n}\n\nfunction isEventWithTarget(event: unknown): event is { target: EventTarget | null } {\n return typeof event === 'object' && !!event && 'target' in event;\n}\n","import { fill } from '@sentry/utils';\n\nimport { WINDOW } from '../../constants';\n\ntype WindowOpenHandler = () => void;\n\nlet handlers: undefined | WindowOpenHandler[];\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nexport function onWindowOpen(cb: WindowOpenHandler): () => void {\n // Ensure to only register this once\n if (!handlers) {\n handlers = [];\n monkeyPatchWindowOpen();\n }\n\n handlers.push(cb);\n\n return () => {\n const pos = handlers ? handlers.indexOf(cb) : -1;\n if (pos > -1) {\n (handlers as WindowOpenHandler[]).splice(pos, 1);\n }\n };\n}\n\nfunction monkeyPatchWindowOpen(): void {\n fill(WINDOW, 'open', function (originalWindowOpen: () => void): () => void {\n return function (...args: unknown[]): void {\n if (handlers) {\n try {\n handlers.forEach(handler => handler());\n } catch (e) {\n // ignore errors in here\n }\n }\n\n return originalWindowOpen.apply(WINDOW, args);\n };\n });\n}\n","import { IncrementalSource, MouseInteractions, record } from '@sentry-internal/rrweb';\nimport type { Breadcrumb } from '@sentry/types';\n\nimport { WINDOW } from '../constants';\nimport type {\n RecordingEvent,\n ReplayClickDetector,\n ReplayContainer,\n ReplayMultiClickFrame,\n ReplaySlowClickFrame,\n SlowClickConfig,\n} from '../types';\nimport { ReplayEventTypeIncrementalSnapshot } from '../types';\nimport { timestampToS } from '../util/timestamp';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\nimport { getClosestInteractive } from './util/domUtils';\nimport { onWindowOpen } from './util/onWindowOpen';\n\ntype ClickBreadcrumb = Breadcrumb & {\n timestamp: number;\n};\n\ninterface Click {\n timestamp: number;\n mutationAfter?: number;\n scrollAfter?: number;\n clickBreadcrumb: ClickBreadcrumb;\n clickCount: number;\n node: HTMLElement;\n}\n\ntype IncrementalRecordingEvent = RecordingEvent & {\n type: typeof ReplayEventTypeIncrementalSnapshot;\n data: { source: IncrementalSource };\n};\n\ntype IncrementalMouseInteractionRecordingEvent = IncrementalRecordingEvent & {\n type: typeof ReplayEventTypeIncrementalSnapshot;\n data: { type: MouseInteractions; id: number };\n};\n\n/** Handle a click. */\nexport function handleClick(clickDetector: ReplayClickDetector, clickBreadcrumb: Breadcrumb, node: HTMLElement): void {\n clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nexport class ClickDetector implements ReplayClickDetector {\n // protected for testing\n protected _lastMutation: number;\n protected _lastScroll: number;\n\n private _clicks: Click[];\n private _teardown: undefined | (() => void);\n\n private _threshold: number;\n private _scollTimeout: number;\n private _timeout: number;\n private _ignoreSelector: string;\n\n private _replay: ReplayContainer;\n private _checkClickTimeout?: ReturnType;\n private _addBreadcrumbEvent: typeof addBreadcrumbEvent;\n\n public constructor(\n replay: ReplayContainer,\n slowClickConfig: SlowClickConfig,\n // Just for easier testing\n _addBreadcrumbEvent = addBreadcrumbEvent,\n ) {\n this._lastMutation = 0;\n this._lastScroll = 0;\n this._clicks = [];\n\n // We want everything in s, but options are in ms\n this._timeout = slowClickConfig.timeout / 1000;\n this._threshold = slowClickConfig.threshold / 1000;\n this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n this._replay = replay;\n this._ignoreSelector = slowClickConfig.ignoreSelector;\n this._addBreadcrumbEvent = _addBreadcrumbEvent;\n }\n\n /** Register click detection handlers on mutation or scroll. */\n public addListeners(): void {\n const cleanupWindowOpen = onWindowOpen(() => {\n // Treat window.open as mutation\n this._lastMutation = nowInSeconds();\n });\n\n this._teardown = () => {\n cleanupWindowOpen();\n\n this._clicks = [];\n this._lastMutation = 0;\n this._lastScroll = 0;\n };\n }\n\n /** Clean up listeners. */\n public removeListeners(): void {\n if (this._teardown) {\n this._teardown();\n }\n\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n }\n\n /** @inheritDoc */\n public handleClick(breadcrumb: Breadcrumb, node: HTMLElement): void {\n if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n return;\n }\n\n const newClick: Click = {\n timestamp: timestampToS(breadcrumb.timestamp),\n clickBreadcrumb: breadcrumb,\n // Set this to 0 so we know it originates from the click breadcrumb\n clickCount: 0,\n node,\n };\n\n // If there was a click in the last 1s on the same element, ignore it - only keep a single reference per second\n if (\n this._clicks.some(click => click.node === newClick.node && Math.abs(click.timestamp - newClick.timestamp) < 1)\n ) {\n return;\n }\n\n this._clicks.push(newClick);\n\n // If this is the first new click, set a timeout to check for multi clicks\n if (this._clicks.length === 1) {\n this._scheduleCheckClicks();\n }\n }\n\n /** @inheritDoc */\n public registerMutation(timestamp = Date.now()): void {\n this._lastMutation = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n public registerScroll(timestamp = Date.now()): void {\n this._lastScroll = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n public registerClick(element: HTMLElement): void {\n const node = getClosestInteractive(element);\n this._handleMultiClick(node as HTMLElement);\n }\n\n /** Count multiple clicks on elements. */\n private _handleMultiClick(node: HTMLElement): void {\n this._getClicks(node).forEach(click => {\n click.clickCount++;\n });\n }\n\n /** Get all pending clicks for a given node. */\n private _getClicks(node: HTMLElement): Click[] {\n return this._clicks.filter(click => click.node === node);\n }\n\n /** Check the clicks that happened. */\n private _checkClicks(): void {\n const timedOutClicks: Click[] = [];\n\n const now = nowInSeconds();\n\n this._clicks.forEach(click => {\n if (!click.mutationAfter && this._lastMutation) {\n click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n }\n if (!click.scrollAfter && this._lastScroll) {\n click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n }\n\n // All of these are in seconds!\n if (click.timestamp + this._timeout <= now) {\n timedOutClicks.push(click);\n }\n });\n\n // Remove \"old\" clicks\n for (const click of timedOutClicks) {\n const pos = this._clicks.indexOf(click);\n\n if (pos > -1) {\n this._generateBreadcrumbs(click);\n this._clicks.splice(pos, 1);\n }\n }\n\n // Trigger new check, unless no clicks left\n if (this._clicks.length) {\n this._scheduleCheckClicks();\n }\n }\n\n /** Generate matching breadcrumb(s) for the click. */\n private _generateBreadcrumbs(click: Click): void {\n const replay = this._replay;\n const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n const isSlowClick = !hadScroll && !hadMutation;\n const { clickCount, clickBreadcrumb } = click;\n\n // Slow click\n if (isSlowClick) {\n // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n // If not, it means we just timed out without scroll & mutation\n const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n const breadcrumb: ReplaySlowClickFrame = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.slowClickDetected',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n timeAfterClickMs,\n endReason,\n // If clickCount === 0, it means multiClick was not correctly captured here\n // - we still want to send 1 in this case\n clickCount: clickCount || 1,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n return;\n }\n\n // Multi click\n if (clickCount > 1) {\n const breadcrumb: ReplayMultiClickFrame = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.multiClick',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n clickCount,\n metric: true,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n }\n }\n\n /** Schedule to check current clicks. */\n private _scheduleCheckClicks(): void {\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n\n this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nexport function ignoreElement(node: HTMLElement, ignoreSelector: string): boolean {\n if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n return true;\n }\n\n // If tag, we only want to consider input[type='submit'] & input[type='button']\n if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n return true;\n }\n\n // If tag, detect special variants that may not lead to an action\n // If target !== _self, we may open the link somewhere else, which would lead to no action\n // Also, when downloading a file, we may not leave the page, but still not trigger an action\n if (\n node.tagName === 'A' &&\n (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n ) {\n return true;\n }\n\n if (ignoreSelector && node.matches(ignoreSelector)) {\n return true;\n }\n\n return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is ClickBreadcrumb {\n return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds(): number {\n return Date.now() / 1000;\n}\n\n/** Update the click detector based on a recording event of rrweb. */\nexport function updateClickDetectorForRecordingEvent(clickDetector: ReplayClickDetector, event: RecordingEvent): void {\n try {\n // note: We only consider incremental snapshots here\n // This means that any full snapshot is ignored for mutation detection - the reason is that we simply cannot know if a mutation happened here.\n // E.g. think that we are buffering, an error happens and we take a full snapshot because we switched to session mode -\n // in this scenario, we would not know if a dead click happened because of the error, which is a key dead click scenario.\n // Instead, by ignoring full snapshots, we have the risk that we generate a false positive\n // (if a mutation _did_ happen but was \"swallowed\" by the full snapshot)\n // But this should be more unlikely as we'd generally capture the incremental snapshot right away\n\n if (!isIncrementalEvent(event)) {\n return;\n }\n\n const { source } = event.data;\n if (source === IncrementalSource.Mutation) {\n clickDetector.registerMutation(event.timestamp);\n }\n\n if (source === IncrementalSource.Scroll) {\n clickDetector.registerScroll(event.timestamp);\n }\n\n if (isIncrementalMouseInteraction(event)) {\n const { type, id } = event.data;\n const node = record.mirror.getNode(id);\n\n if (node instanceof HTMLElement && type === MouseInteractions.Click) {\n clickDetector.registerClick(node);\n }\n }\n } catch {\n // ignore errors here, e.g. if accessing something that does not exist\n }\n}\n\nfunction isIncrementalEvent(event: RecordingEvent): event is IncrementalRecordingEvent {\n return event.type === ReplayEventTypeIncrementalSnapshot;\n}\n\nfunction isIncrementalMouseInteraction(\n event: IncrementalRecordingEvent,\n): event is IncrementalMouseInteractionRecordingEvent {\n return event.data.source === IncrementalSource.MouseInteraction;\n}\n","import type { ReplayBreadcrumbFrame } from '../types/replayFrame';\n\n/**\n * Create a breadcrumb for a replay.\n */\nexport function createBreadcrumb(\n breadcrumb: Omit & Partial>,\n): ReplayBreadcrumbFrame {\n return {\n timestamp: Date.now() / 1000,\n type: 'default',\n ...breadcrumb,\n };\n}\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n?.host;\r\n return Boolean(host?.shadowRoot === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n if (!n)\r\n return -1;\r\n const id = this.getMeta(n)?.id;\r\n return id ?? -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\r\n if (tagName === 'OPTION') {\r\n tagName = 'SELECT';\r\n }\r\n return Boolean(maskInputOptions[tagName.toLowerCase()] ||\r\n (type && maskInputOptions[type]) ||\r\n type === 'password' ||\r\n (tagName === 'INPUT' && !type && maskInputOptions['text']));\r\n}\r\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\r\n let text = value || '';\r\n if (!isMasked) {\r\n return text;\r\n }\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n return '*'.repeat(text.length);\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nfunction toUpperCase(str) {\r\n return str.toUpperCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction getInputValue(el, tagName, type) {\r\n if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\r\n return el.getAttribute('value') || '';\r\n }\r\n return el.value;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n if (typeof maskAttributeFn === 'function') {\r\n return maskAttributeFn(name, value, element);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\r\n try {\r\n if (unblockSelector && element.matches(unblockSelector)) {\r\n return false;\r\n }\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction elementClassMatchesRegex(el, regex) {\r\n for (let eIndex = el.classList.length; eIndex--;) {\r\n const className = el.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (checkAncestors) {\r\n return (distanceToMatch(node, (node) => elementClassMatchesRegex(node, regex)) >= 0);\r\n }\r\n else if (node.nodeType === node.ELEMENT_NODE) {\r\n return elementClassMatchesRegex(node, regex);\r\n }\r\n return false;\r\n}\r\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\r\n if (!node)\r\n return -1;\r\n if (node.nodeType !== node.ELEMENT_NODE)\r\n return -1;\r\n if (distance > limit)\r\n return -1;\r\n if (matchPredicate(node))\r\n return distance;\r\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\r\n}\r\nfunction createMatchPredicate(className, selector) {\r\n return (node) => {\r\n const el = node;\r\n if (el === null)\r\n return false;\r\n try {\r\n if (className) {\r\n if (typeof className === 'string') {\r\n if (el.matches(`.${className}`))\r\n return true;\r\n }\r\n else if (elementClassMatchesRegex(el, className)) {\r\n return true;\r\n }\r\n }\r\n if (selector && el.matches(selector))\r\n return true;\r\n return false;\r\n }\r\n catch {\r\n return false;\r\n }\r\n };\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (el.tagName === 'INPUT') {\r\n const autocomplete = el.getAttribute('autocomplete');\r\n const disallowedAutocompleteValues = [\r\n 'current-password',\r\n 'new-password',\r\n 'cc-number',\r\n 'cc-exp',\r\n 'cc-exp-month',\r\n 'cc-exp-year',\r\n 'cc-csc',\r\n ];\r\n if (disallowedAutocompleteValues.includes(autocomplete)) {\r\n return true;\r\n }\r\n }\r\n let maskDistance = -1;\r\n let unmaskDistance = -1;\r\n if (maskAllText) {\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\r\n if (unmaskDistance < 0) {\r\n return true;\r\n }\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\r\n }\r\n else {\r\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\r\n if (maskDistance < 0) {\r\n return false;\r\n }\r\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\r\n }\r\n return maskDistance >= 0\r\n ? unmaskDistance >= 0\r\n ? maskDistance <= unmaskDistance\r\n : true\r\n : unmaskDistance >= 0\r\n ? false\r\n : !!maskAllText;\r\n }\r\n catch (e) {\r\n }\r\n return !!maskAllText;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n inlineStylesheet,\r\n maskAttributeFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n maskTextFn,\r\n maskInputOptions,\r\n maskInputFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if (n.parentNode.sheet?.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\r\n if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\r\n textContent = maskInputFn\r\n ? maskInputFn(textContent, n.parentNode)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n if (parentTagName === 'OPTION' && textContent) {\r\n const isInputMasked = shouldMaskInput({\r\n type: null,\r\n tagName: parentTagName,\r\n maskInputOptions,\r\n });\r\n textContent = maskInputValue({\r\n isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\r\n element: n,\r\n value: textContent,\r\n maskInputFn,\r\n });\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === n.href;\r\n });\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' ||\r\n tagName === 'textarea' ||\r\n tagName === 'select' ||\r\n tagName === 'option') {\r\n const el = n;\r\n const type = getInputType(el);\r\n const value = getInputValue(el, toUpperCase(tagName), type);\r\n const checked = el.checked;\r\n if (type !== 'submit' && type !== 'button' && value) {\r\n const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\r\n type,\r\n tagName: toUpperCase(tagName),\r\n maskInputOptions,\r\n }));\r\n attributes.value = maskInputValue({\r\n isMasked: forceMask,\r\n element: el,\r\n value,\r\n maskInputFn,\r\n });\r\n }\r\n if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskAllText,\r\n unblockSelector,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n }\r\n : maskAllInputs === false\r\n ? {}\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n unblockSelector,\r\n maskAllText,\r\n maskTextClass,\r\n unmaskTextClass,\r\n maskTextSelector,\r\n unmaskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskAttributeFn,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\r\nfunction visitSnapshot(node, onVisit) {\r\n function walk(current) {\r\n onVisit(current);\r\n if (current.type === NodeType.Document ||\r\n current.type === NodeType.Element) {\r\n current.childNodes.forEach(walk);\r\n }\r\n }\r\n walk(node);\r\n}\r\nfunction cleanupSnapshot() {\r\n _id = 1;\r\n}\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n let lineno = 1;\r\n let column = 1;\r\n function updatePosition(str) {\r\n const lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n const i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n const start = { line: lineno, column };\r\n return (node) => {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n class Position {\r\n constructor(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column };\r\n this.source = options.source;\r\n }\r\n }\r\n Position.prototype.content = css;\r\n const errorsList = [];\r\n function error(msg) {\r\n const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n const rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList,\r\n },\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n let node;\r\n const rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n const m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n const str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules = []) {\r\n let c;\r\n while ((c = comment())) {\r\n if (c) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n const pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n let i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n const str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str,\r\n });\r\n }\r\n function selector() {\r\n whitespace();\r\n while (css[0] == '}') {\r\n error('extra closing bracket');\r\n css = css.slice(1);\r\n whitespace();\r\n }\r\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const cleanedInput = m[0]\r\n .trim()\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n return m.replace(/,/g, '\\u200C');\r\n });\r\n return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n }\r\n function customSplit(input) {\r\n const result = [];\r\n let currentSegment = '';\r\n let depthParentheses = 0;\r\n let depthBrackets = 0;\r\n let currentStringChar = null;\r\n for (const char of input) {\r\n const hasStringEscape = currentSegment.endsWith('\\\\');\r\n if (currentStringChar) {\r\n if (currentStringChar === char && !hasStringEscape) {\r\n currentStringChar = null;\r\n }\r\n }\r\n else if (char === '(') {\r\n depthParentheses++;\r\n }\r\n else if (char === ')') {\r\n depthParentheses--;\r\n }\r\n else if (char === '[') {\r\n depthBrackets++;\r\n }\r\n else if (char === ']') {\r\n depthBrackets--;\r\n }\r\n else if ('\\'\"'.includes(char)) {\r\n currentStringChar = char;\r\n }\r\n if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n result.push(currentSegment);\r\n currentSegment = '';\r\n }\r\n else {\r\n currentSegment += char;\r\n }\r\n }\r\n if (currentSegment) {\r\n result.push(currentSegment);\r\n }\r\n return result;\r\n }\r\n function declaration() {\r\n const pos = position();\r\n const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n const prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(`property missing ':'`);\r\n }\r\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n const ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : '',\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n const decls = [];\r\n if (!open()) {\r\n return error(`missing '{'`);\r\n }\r\n comments(decls);\r\n let decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(`missing '}'`);\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n let m;\r\n const vals = [];\r\n const pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations(),\r\n });\r\n }\r\n function atkeyframes() {\r\n const pos = position();\r\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n const name = m[1];\r\n if (!open()) {\r\n return error(`@keyframes missing '{'`);\r\n }\r\n let frame;\r\n let frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@keyframes missing '}'`);\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name,\r\n vendor,\r\n keyframes: frames,\r\n });\r\n }\r\n function atsupports() {\r\n const pos = position();\r\n const m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const supports = trim(m[1]);\r\n if (!open()) {\r\n return error(`@supports missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@supports missing '}'`);\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports,\r\n rules: style,\r\n });\r\n }\r\n function athost() {\r\n const pos = position();\r\n const m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@host missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@host missing '}'`);\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style,\r\n });\r\n }\r\n function atmedia() {\r\n const pos = position();\r\n const m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const media = trim(m[1]);\r\n if (!open()) {\r\n return error(`@media missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@media missing '}'`);\r\n }\r\n return pos({\r\n type: 'media',\r\n media,\r\n rules: style,\r\n });\r\n }\r\n function atcustommedia() {\r\n const pos = position();\r\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2]),\r\n });\r\n }\r\n function atpage() {\r\n const pos = position();\r\n const m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n const sel = selector() || [];\r\n if (!open()) {\r\n return error(`@page missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@page missing '}'`);\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls,\r\n });\r\n }\r\n function atdocument() {\r\n const pos = position();\r\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = trim(m[1]);\r\n const doc = trim(m[2]);\r\n if (!open()) {\r\n return error(`@document missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@document missing '}'`);\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor,\r\n rules: style,\r\n });\r\n }\r\n function atfontface() {\r\n const pos = position();\r\n const m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@font-face missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@font-face missing '}'`);\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls,\r\n });\r\n }\r\n const atimport = _compileAtrule('import');\r\n const atcharset = _compileAtrule('charset');\r\n const atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return () => {\r\n const pos = position();\r\n const m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n const ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n const pos = position();\r\n const sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations(),\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n const isNode = obj && typeof obj.type === 'string';\r\n const childParent = isNode ? obj : parent;\r\n for (const k of Object.keys(obj)) {\r\n const value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null,\r\n });\r\n }\r\n return obj;\r\n}\n\nconst tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n if (cssText.length >= 1000000) {\r\n return cssText;\r\n }\r\n const ast = parse(cssText, {\r\n silent: true,\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n const selectors = [];\r\n ast.stylesheet.rules.forEach((rule) => {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach((selector) => {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n const selectorMatcher = new RegExp(selectors\r\n .filter((selector, index) => selectors.indexOf(selector) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((selector) => {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n const result = cssText.replace(selectorMatcher, (selector) => {\r\n const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return `${selector}, ${newSelector}`;\r\n });\r\n cache?.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n const stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass,\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n const { doc, hackCss, cache } = options;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n const tagName = getTagName(n);\r\n let node;\r\n if (n.isSVG) {\r\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n if (n.isCustom &&\r\n doc.defaultView?.customElements &&\r\n !doc.defaultView.customElements.get(n.tagName))\r\n doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n });\r\n node = doc.createElement(tagName);\r\n }\r\n const specialAttributes = {};\r\n for (const name in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n continue;\r\n }\r\n let value = n.attributes[name];\r\n if (tagName === 'option' &&\r\n name === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name.startsWith('rr_')) {\r\n specialAttributes[name] = value;\r\n continue;\r\n }\r\n const isTextarea = tagName === 'textarea' && name === 'value';\r\n const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n const child = doc.createTextNode(value);\r\n for (const c of Array.from(node.childNodes)) {\r\n if (c.nodeType === node.TEXT_NODE) {\r\n node.removeChild(c);\r\n }\r\n }\r\n node.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name === 'xlink:href') {\r\n node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n }\r\n else if (name === 'onload' ||\r\n name === 'onclick' ||\r\n name.substring(0, 7) === 'onmouse') {\r\n node.setAttribute('_' + name, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name === 'content') {\r\n node.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node.setAttribute(name, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n for (const name in specialAttributes) {\r\n const value = specialAttributes[name];\r\n if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = node.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = value.toString();\r\n if (node.RRNodeType)\r\n node.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name === 'rr_dataURL') {\r\n const image = node;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name === 'rr_width') {\r\n node.style.setProperty('width', value.toString());\r\n }\r\n else if (name === 'rr_height') {\r\n node.style.setProperty('height', value.toString());\r\n }\r\n else if (name === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node.currentTime = value;\r\n }\r\n else if (name === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node\r\n .play()\r\n .catch((e) => console.warn('media playback error', e));\r\n break;\r\n case 'paused':\r\n node.pause();\r\n break;\r\n }\r\n }\r\n }\r\n if (n.isShadowHost) {\r\n if (!node.shadowRoot) {\r\n node.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node.shadowRoot.firstChild) {\r\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n if (mirror.has(n.id)) {\r\n const nodeInMirror = mirror.getNode(n.id);\r\n const meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n let node = buildNode(n, { doc, hackCss, cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('');\r\n }\r\n else {\r\n doc.write('');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (const childN of n.childNodes) {\r\n const childNode = buildNodeWithSN(childN, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n const htmlElement = childNode;\r\n let body = null;\r\n htmlElement.childNodes.forEach((child) => {\r\n if (child.nodeName === 'BODY')\r\n body = child;\r\n });\r\n if (body) {\r\n htmlElement.removeChild(body);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (const id of mirror.getIds()) {\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n const n = mirror.getMeta(node);\r\n if (n?.type !== NodeType.Element) {\r\n return;\r\n }\r\n const el = node;\r\n for (const name in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n name.startsWith('rr_'))) {\r\n continue;\r\n }\r\n const value = n.attributes[name];\r\n if (name === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n const node = buildNodeWithSN(n, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n visit(mirror, (visitedNode) => {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, cleanupSnapshot, createCache, createMatchPredicate, createMirror, distanceToMatch, escapeImportStatement, fixSafariColons, genId, getInputType, getInputValue, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, shouldMaskInput, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, toUpperCase, transformAttribute, visitSnapshot };\n","// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n 'id',\n 'class',\n 'aria-label',\n 'role',\n 'name',\n 'alt',\n 'title',\n 'data-test-id',\n 'data-testid',\n 'disabled',\n 'aria-disabled',\n 'data-sentry-component',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nexport function getAttributesToRecord(attributes: Record): Record {\n const obj: Record = {};\n for (const key in attributes) {\n if (ATTRIBUTES_TO_RECORD.has(key)) {\n let normalizedKey = key;\n\n if (key === 'data-testid' || key === 'data-test-id') {\n normalizedKey = 'testId';\n }\n\n obj[normalizedKey] = attributes[key];\n }\n }\n\n return obj;\n}\n","import { record } from '@sentry-internal/rrweb';\nimport type { serializedElementNodeWithId, serializedNodeWithId } from '@sentry-internal/rrweb-snapshot';\nimport { NodeType } from '@sentry-internal/rrweb-snapshot';\nimport type { Breadcrumb, HandlerDataDom } from '@sentry/types';\nimport { htmlTreeAsString } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { handleClick } from './handleClick';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\nimport { getClickTargetNode, getTargetNode } from './util/domUtils';\nimport { getAttributesToRecord } from './util/getAttributesToRecord';\n\nexport const handleDomListener: (replay: ReplayContainer) => (handlerData: HandlerDataDom) => void = (\n replay: ReplayContainer,\n) => {\n return (handlerData: HandlerDataDom): void => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleDom(handlerData);\n\n if (!result) {\n return;\n }\n\n const isClick = handlerData.name === 'click';\n const event = isClick ? (handlerData.event as PointerEvent) : undefined;\n // Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)\n if (\n isClick &&\n replay.clickDetector &&\n event &&\n event.target &&\n !event.altKey &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey\n ) {\n handleClick(\n replay.clickDetector,\n result as Breadcrumb & { timestamp: number; data: { nodeId: number } },\n getClickTargetNode(handlerData.event as Event) as HTMLElement,\n );\n }\n\n addBreadcrumbEvent(replay, result);\n };\n};\n\n/** Get the base DOM breadcrumb. */\nexport function getBaseDomBreadcrumb(target: Node | null, message: string): Breadcrumb {\n const nodeId = record.mirror.getId(target);\n const node = nodeId && record.mirror.getNode(nodeId);\n const meta = node && record.mirror.getMeta(node);\n const element = meta && isElement(meta) ? meta : null;\n\n return {\n message,\n data: element\n ? {\n nodeId,\n node: {\n id: nodeId,\n tagName: element.tagName,\n textContent: Array.from(element.childNodes)\n .map((node: serializedNodeWithId) => node.type === NodeType.Text && node.textContent)\n .filter(Boolean) // filter out empty values\n .map(text => (text as string).trim())\n .join(''),\n attributes: getAttributesToRecord(element.attributes),\n },\n }\n : {},\n };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nexport function handleDom(handlerData: HandlerDataDom): Breadcrumb | null {\n const { target, message } = getDomTarget(handlerData);\n\n return createBreadcrumb({\n category: `ui.${handlerData.name}`,\n ...getBaseDomBreadcrumb(target, message),\n });\n}\n\nfunction getDomTarget(handlerData: HandlerDataDom): { target: Node | null; message: string } {\n const isClick = handlerData.name === 'click';\n\n let message: string | undefined;\n let target: Node | null = null;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = isClick ? getClickTargetNode(handlerData.event as Event) : getTargetNode(handlerData.event as Event);\n message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n } catch (e) {\n message = '';\n }\n\n return { target, message };\n}\n\nfunction isElement(node: serializedNodeWithId): node is serializedElementNodeWithId {\n return node.type === NodeType.Element;\n}\n","import type { Breadcrumb } from '@sentry/types';\nimport { htmlTreeAsString } from '@sentry/utils';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { getBaseDomBreadcrumb } from './handleDom';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\n/** Handle keyboard events & create breadcrumbs. */\nexport function handleKeyboardEvent(replay: ReplayContainer, event: KeyboardEvent): void {\n if (!replay.isEnabled()) {\n return;\n }\n\n // Update user activity, but do not restart recording as it can create\n // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n // session with a single \"keydown\" breadcrumb is created)\n replay.updateUserActivity();\n\n const breadcrumb = getKeyboardBreadcrumb(event);\n\n if (!breadcrumb) {\n return;\n }\n\n addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nexport function getKeyboardBreadcrumb(event: KeyboardEvent): Breadcrumb | null {\n const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n // never capture for input fields\n if (!target || isInputElement(target as HTMLElement) || !key) {\n return null;\n }\n\n // Note: We do not consider shift here, as that means \"uppercase\"\n const hasModifierKey = metaKey || ctrlKey || altKey;\n const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n // Do not capture breadcrumb if only a word key is pressed\n // This could leak e.g. user input\n if (!hasModifierKey && isCharacterKey) {\n return null;\n }\n\n const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n const baseBreadcrumb = getBaseDomBreadcrumb(target as Node, message);\n\n return createBreadcrumb({\n category: 'ui.keyDown',\n message,\n data: {\n ...baseBreadcrumb.data,\n metaKey,\n shiftKey,\n ctrlKey,\n altKey,\n key,\n },\n });\n}\n\nfunction isInputElement(target: HTMLElement): boolean {\n return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n","import { record } from '@sentry-internal/rrweb';\nimport { browserPerformanceTimeOrigin } from '@sentry/utils';\n\nimport { WINDOW } from '../constants';\nimport type {\n AllPerformanceEntry,\n AllPerformanceEntryData,\n ExperimentalPerformanceResourceTiming,\n LargestContentfulPaintData,\n NavigationData,\n PaintData,\n ReplayPerformanceEntry,\n ResourceData,\n} from '../types';\n\n// Map entryType -> function to normalize data for event\nconst ENTRY_TYPES: Record<\n string,\n (entry: AllPerformanceEntry) => null | ReplayPerformanceEntry\n> = {\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n resource: createResourceEntry,\n paint: createPaintEntry,\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n navigation: createNavigationEntry,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nexport function createPerformanceEntries(\n entries: AllPerformanceEntry[],\n): ReplayPerformanceEntry[] {\n return entries.map(createPerformanceEntry).filter(Boolean) as ReplayPerformanceEntry[];\n}\n\nfunction createPerformanceEntry(entry: AllPerformanceEntry): ReplayPerformanceEntry | null {\n if (!ENTRY_TYPES[entry.entryType]) {\n return null;\n }\n\n return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time: number): number {\n // browserPerformanceTimeOrigin can be undefined if `performance` or\n // `performance.now` doesn't exist, but this is already checked by this integration\n return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry: PerformancePaintTiming): ReplayPerformanceEntry {\n const { duration, entryType, name, startTime } = entry;\n\n const start = getAbsoluteTime(startTime);\n return {\n type: entryType,\n name,\n start,\n end: start + duration,\n data: undefined,\n };\n}\n\nfunction createNavigationEntry(entry: PerformanceNavigationTiming): ReplayPerformanceEntry | null {\n const {\n entryType,\n name,\n decodedBodySize,\n duration,\n domComplete,\n encodedBodySize,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n domInteractive,\n loadEventStart,\n loadEventEnd,\n redirectCount,\n startTime,\n transferSize,\n type,\n } = entry;\n\n // Ignore entries with no duration, they do not seem to be useful and cause dupes\n if (duration === 0) {\n return null;\n }\n\n return {\n type: `${entryType}.${type}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(domComplete),\n name,\n data: {\n size: transferSize,\n decodedBodySize,\n encodedBodySize,\n duration,\n domInteractive,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n loadEventStart,\n loadEventEnd,\n domComplete,\n redirectCount,\n },\n };\n}\n\nfunction createResourceEntry(\n entry: ExperimentalPerformanceResourceTiming,\n): ReplayPerformanceEntry | null {\n const {\n entryType,\n initiatorType,\n name,\n responseEnd,\n startTime,\n decodedBodySize,\n encodedBodySize,\n responseStatus,\n transferSize,\n } = entry;\n\n // Core SDK handles these\n if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n return null;\n }\n\n return {\n type: `${entryType}.${initiatorType}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(responseEnd),\n name,\n data: {\n size: transferSize,\n statusCode: responseStatus,\n decodedBodySize,\n encodedBodySize,\n },\n };\n}\n\n/**\n * Add a LCP event to the replay based on an LCP metric.\n */\nexport function getLargestContentfulPaint(metric: {\n value: number;\n entries: PerformanceEntry[];\n}): ReplayPerformanceEntry {\n const entries = metric.entries;\n const lastEntry = entries[entries.length - 1] as (PerformanceEntry & { element?: Element }) | undefined;\n const element = lastEntry ? lastEntry.element : undefined;\n\n const value = metric.value;\n\n const end = getAbsoluteTime(value);\n\n const data: ReplayPerformanceEntry = {\n type: 'largest-contentful-paint',\n name: 'largest-contentful-paint',\n start: end,\n end,\n data: {\n value,\n size: value,\n nodeId: element ? record.mirror.getId(element) : undefined,\n },\n };\n\n return data;\n}\n","import { addLcpInstrumentationHandler, addPerformanceInstrumentationHandler } from '@sentry-internal/tracing';\n\nimport type { ReplayContainer } from '../types';\nimport { getLargestContentfulPaint } from '../util/createPerformanceEntries';\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n * Returns a callback to stop observing.\n */\nexport function setupPerformanceObserver(replay: ReplayContainer): () => void {\n function addPerformanceEntry(entry: PerformanceEntry): void {\n // It is possible for entries to come up multiple times\n if (!replay.performanceEntries.includes(entry)) {\n replay.performanceEntries.push(entry);\n }\n }\n\n function onEntries({ entries }: { entries: PerformanceEntry[] }): void {\n entries.forEach(addPerformanceEntry);\n }\n\n const clearCallbacks: (() => void)[] = [];\n\n (['navigation', 'paint', 'resource'] as const).forEach(type => {\n clearCallbacks.push(addPerformanceInstrumentationHandler(type, onEntries));\n });\n\n clearCallbacks.push(\n addLcpInstrumentationHandler(({ metric }) => {\n replay.replayPerformanceEntries.push(getLargestContentfulPaint(metric));\n }),\n );\n\n // A callback to cleanup all handlers\n return () => {\n clearCallbacks.forEach(clearCallback => clearCallback());\n };\n}\n","export default `var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a>h]=l}else for(o=new n(i),a=0;a>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;ad&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<e))break;p+=m-(1<>=y;p>0;){var M=o[a].s;g[M]=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;Pnt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if(\"function\"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G=\"undefined\"!=typeof TextEncoder&&new TextEncoder,H=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i>1)),o=0,f=function(t){s[o++]=t};for(i=0;is.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const n=this._hasEvents?\",\":\"\";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push(\"]\",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push(\"[\")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener(\"message\",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&\"function\"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n","import { addBreadcrumb } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\n\n/**\n * Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.\n */\nexport function logInfo(message: string, shouldAddBreadcrumb?: boolean): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n addLogBreadcrumb(message);\n }\n}\n\n/**\n * Log a message, and add a breadcrumb in the next tick.\n * This is necessary when the breadcrumb may be added before the replay is initialized.\n */\nexport function logInfoNextTick(message: string, shouldAddBreadcrumb?: boolean): void {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n // Wait a tick here to avoid race conditions for some initial logs\n // which may be added before replay is initialized\n setTimeout(() => {\n addLogBreadcrumb(message);\n }, 0);\n }\n}\n\nfunction addLogBreadcrumb(message: string): void {\n addBreadcrumb(\n {\n category: 'console',\n data: {\n logger: 'replay',\n },\n level: 'info',\n message,\n },\n { level: 'info' },\n );\n}\n","import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nexport class EventBufferSizeExceededError extends Error {\n public constructor() {\n super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n }\n}\n","import { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { timestampToMs } from '../util/timestamp';\nimport { EventBufferSizeExceededError } from './error';\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nexport class EventBufferArray implements EventBuffer {\n /** All the events that are buffered to be sent. */\n public events: RecordingEvent[];\n\n /** @inheritdoc */\n public hasCheckout: boolean;\n\n private _totalSize: number;\n\n public constructor() {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n public get hasEvents(): boolean {\n return this.events.length > 0;\n }\n\n /** @inheritdoc */\n public get type(): EventBufferType {\n return 'sync';\n }\n\n /** @inheritdoc */\n public destroy(): void {\n this.events = [];\n }\n\n /** @inheritdoc */\n public async addEvent(event: RecordingEvent): Promise {\n const eventSize = JSON.stringify(event).length;\n this._totalSize += eventSize;\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n throw new EventBufferSizeExceededError();\n }\n\n this.events.push(event);\n }\n\n /** @inheritdoc */\n public finish(): Promise {\n return new Promise(resolve => {\n // Make a copy of the events array reference and immediately clear the\n // events member so that we do not lose new events while uploading\n // attachment.\n const eventsRet = this.events;\n this.clear();\n resolve(JSON.stringify(eventsRet));\n });\n }\n\n /** @inheritdoc */\n public clear(): void {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n public getEarliestTimestamp(): number | null {\n const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n if (!timestamp) {\n return null;\n }\n\n return timestampToMs(timestamp);\n }\n}\n","import { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { WorkerRequest, WorkerResponse } from '../types';\nimport { logInfo } from '../util/log';\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nexport class WorkerHandler {\n private _worker: Worker;\n private _id: number;\n private _ensureReadyPromise?: Promise;\n\n public constructor(worker: Worker) {\n this._worker = worker;\n this._id = 0;\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n public ensureReady(): Promise {\n // Ensure we only check once\n if (this._ensureReadyPromise) {\n return this._ensureReadyPromise;\n }\n\n this._ensureReadyPromise = new Promise((resolve, reject) => {\n this._worker.addEventListener(\n 'message',\n ({ data }: MessageEvent) => {\n if ((data as WorkerResponse).success) {\n resolve();\n } else {\n reject();\n }\n },\n { once: true },\n );\n\n this._worker.addEventListener(\n 'error',\n error => {\n reject(error);\n },\n { once: true },\n );\n });\n\n return this._ensureReadyPromise;\n }\n\n /**\n * Destroy the worker.\n */\n public destroy(): void {\n logInfo('[Replay] Destroying compression worker');\n this._worker.terminate();\n }\n\n /**\n * Post message to worker and wait for response before resolving promise.\n */\n public postMessage(method: WorkerRequest['method'], arg?: WorkerRequest['arg']): Promise {\n const id = this._getAndIncrementId();\n\n return new Promise((resolve, reject) => {\n const listener = ({ data }: MessageEvent): void => {\n const response = data as WorkerResponse;\n if (response.method !== method) {\n return;\n }\n\n // There can be multiple listeners for a single method, the id ensures\n // that the response matches the caller.\n if (response.id !== id) {\n return;\n }\n\n // At this point, we'll always want to remove listener regardless of result status\n this._worker.removeEventListener('message', listener);\n\n if (!response.success) {\n // TODO: Do some error handling, not sure what\n DEBUG_BUILD && logger.error('[Replay]', response.response);\n\n reject(new Error('Error in compression worker'));\n return;\n }\n\n resolve(response.response as T);\n };\n\n // Note: we can't use `once` option because it's possible it needs to\n // listen to multiple messages\n this._worker.addEventListener('message', listener);\n this._worker.postMessage({ id, method, arg });\n });\n }\n\n /** Get the current ID and increment it for the next call. */\n private _getAndIncrementId(): number {\n return this._id++;\n }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\n\nimport { logger } from '@sentry/utils';\nimport { REPLAY_MAX_EVENT_BUFFER_SIZE } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { timestampToMs } from '../util/timestamp';\nimport { WorkerHandler } from './WorkerHandler';\nimport { EventBufferSizeExceededError } from './error';\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nexport class EventBufferCompressionWorker implements EventBuffer {\n /** @inheritdoc */\n public hasCheckout: boolean;\n\n private _worker: WorkerHandler;\n private _earliestTimestamp: number | null;\n private _totalSize;\n\n public constructor(worker: Worker) {\n this._worker = new WorkerHandler(worker);\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n public get hasEvents(): boolean {\n return !!this._earliestTimestamp;\n }\n\n /** @inheritdoc */\n public get type(): EventBufferType {\n return 'worker';\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n public ensureReady(): Promise {\n return this._worker.ensureReady();\n }\n\n /**\n * Destroy the event buffer.\n */\n public destroy(): void {\n this._worker.destroy();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfuly received and processed by worker.\n */\n public addEvent(event: RecordingEvent): Promise {\n const timestamp = timestampToMs(event.timestamp);\n if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n this._earliestTimestamp = timestamp;\n }\n\n const data = JSON.stringify(event);\n this._totalSize += data.length;\n\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n return Promise.reject(new EventBufferSizeExceededError());\n }\n\n return this._sendEventToWorker(data);\n }\n\n /**\n * Finish the event buffer and return the compressed data.\n */\n public finish(): Promise {\n return this._finishRequest();\n }\n\n /** @inheritdoc */\n public clear(): void {\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n\n // We do not wait on this, as we assume the order of messages is consistent for the worker\n this._worker.postMessage('clear').then(null, e => {\n DEBUG_BUILD && logger.warn('[Replay] Sending \"clear\" message to worker failed', e);\n });\n }\n\n /** @inheritdoc */\n public getEarliestTimestamp(): number | null {\n return this._earliestTimestamp;\n }\n\n /**\n * Send the event to the worker.\n */\n private _sendEventToWorker(data: string): Promise {\n return this._worker.postMessage('addEvent', data);\n }\n\n /**\n * Finish the request and return the compressed data from the worker.\n */\n private async _finishRequest(): Promise {\n const response = await this._worker.postMessage('finish');\n\n this._earliestTimestamp = null;\n this._totalSize = 0;\n\n return response;\n }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { AddEventResult, EventBuffer, EventBufferType, RecordingEvent } from '../types';\nimport { logInfo } from '../util/log';\nimport { EventBufferArray } from './EventBufferArray';\nimport { EventBufferCompressionWorker } from './EventBufferCompressionWorker';\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nexport class EventBufferProxy implements EventBuffer {\n private _fallback: EventBufferArray;\n private _compression: EventBufferCompressionWorker;\n private _used: EventBuffer;\n private _ensureWorkerIsLoadedPromise: Promise;\n\n public constructor(worker: Worker) {\n this._fallback = new EventBufferArray();\n this._compression = new EventBufferCompressionWorker(worker);\n this._used = this._fallback;\n\n this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n }\n\n /** @inheritdoc */\n public get type(): EventBufferType {\n return this._used.type;\n }\n\n /** @inheritDoc */\n public get hasEvents(): boolean {\n return this._used.hasEvents;\n }\n\n /** @inheritdoc */\n public get hasCheckout(): boolean {\n return this._used.hasCheckout;\n }\n /** @inheritdoc */\n public set hasCheckout(value: boolean) {\n this._used.hasCheckout = value;\n }\n\n /** @inheritDoc */\n public destroy(): void {\n this._fallback.destroy();\n this._compression.destroy();\n }\n\n /** @inheritdoc */\n public clear(): void {\n return this._used.clear();\n }\n\n /** @inheritdoc */\n public getEarliestTimestamp(): number | null {\n return this._used.getEarliestTimestamp();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfully added.\n */\n public addEvent(event: RecordingEvent): Promise {\n return this._used.addEvent(event);\n }\n\n /** @inheritDoc */\n public async finish(): Promise {\n // Ensure the worker is loaded, so the sent event is compressed\n await this.ensureWorkerIsLoaded();\n\n return this._used.finish();\n }\n\n /** Ensure the worker has loaded. */\n public ensureWorkerIsLoaded(): Promise {\n return this._ensureWorkerIsLoadedPromise;\n }\n\n /** Actually check if the worker has been loaded. */\n private async _ensureWorkerIsLoaded(): Promise {\n try {\n await this._compression.ensureReady();\n } catch (error) {\n // If the worker fails to load, we fall back to the simple buffer.\n // Nothing more to do from our side here\n logInfo('[Replay] Failed to load the compression worker, falling back to simple buffer');\n return;\n }\n\n // Now we need to switch over the array buffer to the compression worker\n await this._switchToCompressionWorker();\n }\n\n /** Switch the used buffer to the compression worker. */\n private async _switchToCompressionWorker(): Promise {\n const { events, hasCheckout } = this._fallback;\n\n const addEventPromises: Promise[] = [];\n for (const event of events) {\n addEventPromises.push(this._compression.addEvent(event));\n }\n\n this._compression.hasCheckout = hasCheckout;\n\n // We switch over to the new buffer immediately - any further events will be added\n // after the previously buffered ones\n this._used = this._compression;\n\n // Wait for original events to be re-added before resolving\n try {\n await Promise.all(addEventPromises);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n }\n }\n}\n","import { getWorkerURL } from '@sentry-internal/replay-worker';\n\nimport type { EventBuffer } from '../types';\nimport { logInfo } from '../util/log';\nimport { EventBufferArray } from './EventBufferArray';\nimport { EventBufferProxy } from './EventBufferProxy';\n\ninterface CreateEventBufferParams {\n useCompression: boolean;\n workerUrl?: string;\n}\n\n// Treeshakable guard to remove the code of the included compression worker\ndeclare const __SENTRY_EXCLUDE_REPLAY_WORKER__: boolean;\n\n/**\n * Create an event buffer for replays.\n */\nexport function createEventBuffer({\n useCompression,\n workerUrl: customWorkerUrl,\n}: CreateEventBufferParams): EventBuffer {\n if (\n useCompression &&\n // eslint-disable-next-line no-restricted-globals\n window.Worker\n ) {\n const worker = _loadWorker(customWorkerUrl);\n\n if (worker) {\n return worker;\n }\n }\n\n logInfo('[Replay] Using simple buffer');\n return new EventBufferArray();\n}\n\nfunction _loadWorker(customWorkerUrl?: string): EventBufferProxy | void {\n try {\n const workerUrl = customWorkerUrl || _getWorkerUrl();\n\n if (!workerUrl) {\n return;\n }\n\n logInfo(`[Replay] Using compression worker${customWorkerUrl ? ` from ${customWorkerUrl}` : ''}`);\n const worker = new Worker(workerUrl);\n return new EventBufferProxy(worker);\n } catch (error) {\n logInfo('[Replay] Failed to create compression worker');\n // Fall back to use simple event buffer array\n }\n}\n\nfunction _getWorkerUrl(): string {\n if (typeof __SENTRY_EXCLUDE_REPLAY_WORKER__ === 'undefined' || !__SENTRY_EXCLUDE_REPLAY_WORKER__) {\n return getWorkerURL();\n }\n\n return '';\n}\n","import r from\"./worker\";function e(){const e=new Blob([r]);return URL.createObjectURL(e)}export{e as getWorkerURL};\n","import { WINDOW } from '../constants';\n\n/** If sessionStorage is available. */\nexport function hasSessionStorage(): boolean {\n try {\n // This can throw, e.g. when being accessed in a sandboxed iframe\n return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n } catch {\n return false;\n }\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../../src/constants';\nimport type { ReplayContainer } from '../../src/types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nexport function clearSession(replay: ReplayContainer): void {\n deleteSession();\n replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession(): void {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n } catch {\n // Ignore potential SecurityError exceptions\n }\n}\n","/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nexport function isSampled(sampleRate?: number): boolean {\n if (sampleRate === undefined) {\n return false;\n }\n\n // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n return Math.random() < sampleRate;\n}\n","import { uuid4 } from '@sentry/utils';\n\nimport type { Sampled, Session } from '../types';\n\n/**\n * Get a session with defaults & applied sampling.\n */\nexport function makeSession(session: Partial & { sampled: Sampled }): Session {\n const now = Date.now();\n const id = session.id || uuid4();\n // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n const started = session.started || now;\n const lastActivity = session.lastActivity || now;\n const segmentId = session.segmentId || 0;\n const sampled = session.sampled;\n const previousSessionId = session.previousSessionId;\n\n return {\n id,\n started,\n lastActivity,\n segmentId,\n sampled,\n previousSessionId,\n };\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../constants';\nimport type { Session } from '../types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\n\n/**\n * Save a session to session storage.\n */\nexport function saveSession(session: Session): void {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n } catch {\n // Ignore potential SecurityError exceptions\n }\n}\n","import type { Sampled, Session, SessionOptions } from '../types';\nimport { isSampled } from '../util/isSampled';\nimport { makeSession } from './Session';\nimport { saveSession } from './saveSession';\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nexport function getSessionSampleType(sessionSampleRate: number, allowBuffering: boolean): Sampled {\n return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nexport function createSession(\n { sessionSampleRate, allowBuffering, stickySession = false }: SessionOptions,\n { previousSessionId }: { previousSessionId?: string } = {},\n): Session {\n const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n const session = makeSession({\n sampled,\n previousSessionId,\n });\n\n if (stickySession) {\n saveSession(session);\n }\n\n return session;\n}\n","/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nexport function isExpired(\n initialTime: null | number,\n expiry: undefined | number,\n targetTime: number = +new Date(),\n): boolean {\n // Always expired if < 0\n if (initialTime === null || expiry === undefined || expiry < 0) {\n return true;\n }\n\n // Never expires if == 0\n if (expiry === 0) {\n return false;\n }\n\n return initialTime + expiry <= targetTime;\n}\n","import type { Session } from '../types';\nimport { isExpired } from './isExpired';\n\n/**\n * Checks to see if session is expired\n */\nexport function isSessionExpired(\n session: Session,\n {\n maxReplayDuration,\n sessionIdleExpire,\n targetTime = Date.now(),\n }: { maxReplayDuration: number; sessionIdleExpire: number; targetTime?: number },\n): boolean {\n return (\n // First, check that maximum session length has not been exceeded\n isExpired(session.started, maxReplayDuration, targetTime) ||\n // check that the idle timeout has not been exceeded (i.e. user has\n // performed an action within the last `sessionIdleExpire` ms)\n isExpired(session.lastActivity, sessionIdleExpire, targetTime)\n );\n}\n","import type { Session } from '../types';\nimport { isSessionExpired } from '../util/isSessionExpired';\n\n/** If the session should be refreshed or not. */\nexport function shouldRefreshSession(\n session: Session,\n { sessionIdleExpire, maxReplayDuration }: { sessionIdleExpire: number; maxReplayDuration: number },\n): boolean {\n // If not expired, all good, just keep the session\n if (!isSessionExpired(session, { sessionIdleExpire, maxReplayDuration })) {\n return false;\n }\n\n // If we are buffering & haven't ever flushed yet, always continue\n if (session.sampled === 'buffer' && session.segmentId === 0) {\n return false;\n }\n\n return true;\n}\n","import type { Session, SessionOptions } from '../types';\nimport { logInfoNextTick } from '../util/log';\nimport { createSession } from './createSession';\nimport { fetchSession } from './fetchSession';\nimport { shouldRefreshSession } from './shouldRefreshSession';\n\n/**\n * Get or create a session, when initializing the replay.\n * Returns a session that may be unsampled.\n */\nexport function loadOrCreateSession(\n {\n traceInternals,\n sessionIdleExpire,\n maxReplayDuration,\n previousSessionId,\n }: {\n sessionIdleExpire: number;\n maxReplayDuration: number;\n traceInternals?: boolean;\n previousSessionId?: string;\n },\n sessionOptions: SessionOptions,\n): Session {\n const existingSession = sessionOptions.stickySession && fetchSession(traceInternals);\n\n // No session exists yet, just create a new one\n if (!existingSession) {\n logInfoNextTick('[Replay] Creating new session', traceInternals);\n return createSession(sessionOptions, { previousSessionId });\n }\n\n if (!shouldRefreshSession(existingSession, { sessionIdleExpire, maxReplayDuration })) {\n return existingSession;\n }\n\n logInfoNextTick('[Replay] Session in sessionStorage is expired, creating new one...');\n return createSession(sessionOptions, { previousSessionId: existingSession.id });\n}\n","import { REPLAY_SESSION_KEY, WINDOW } from '../constants';\nimport type { Session } from '../types';\nimport { hasSessionStorage } from '../util/hasSessionStorage';\nimport { logInfoNextTick } from '../util/log';\nimport { makeSession } from './Session';\n\n/**\n * Fetches a session from storage\n */\nexport function fetchSession(traceInternals?: boolean): Session | null {\n if (!hasSessionStorage()) {\n return null;\n }\n\n try {\n // This can throw if cookies are disabled\n const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n if (!sessionStringFromStorage) {\n return null;\n }\n\n const sessionObj = JSON.parse(sessionStringFromStorage) as Session;\n\n logInfoNextTick('[Replay] Loading existing session', traceInternals);\n\n return makeSession(sessionObj);\n } catch {\n return null;\n }\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport { getClient } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport { EventBufferSizeExceededError } from '../eventBuffer/error';\nimport type { AddEventResult, RecordingEvent, ReplayContainer, ReplayFrameEvent, ReplayPluginOptions } from '../types';\nimport { logInfo } from './log';\nimport { timestampToMs } from './timestamp';\n\nfunction isCustomEvent(event: RecordingEvent): event is ReplayFrameEvent {\n return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * In contrast to `addEvent`, this does not return a promise & does not wait for the adding of the event to succeed/fail.\n * Instead this returns `true` if we tried to add the event, else false.\n * It returns `false` e.g. if we are paused, disabled, or out of the max replay duration.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nexport function addEventSync(replay: ReplayContainer, event: RecordingEvent, isCheckout?: boolean): boolean {\n if (!shouldAddEvent(replay, event)) {\n return false;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n _addEvent(replay, event, isCheckout);\n\n return true;\n}\n\n/**\n * Add an event to the event buffer.\n * Resolves to `null` if no event was added, else to `void`.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nexport function addEvent(\n replay: ReplayContainer,\n event: RecordingEvent,\n isCheckout?: boolean,\n): Promise {\n if (!shouldAddEvent(replay, event)) {\n return Promise.resolve(null);\n }\n\n return _addEvent(replay, event, isCheckout);\n}\n\nasync function _addEvent(\n replay: ReplayContainer,\n event: RecordingEvent,\n isCheckout?: boolean,\n): Promise {\n if (!replay.eventBuffer) {\n return null;\n }\n\n try {\n if (isCheckout && replay.recordingMode === 'buffer') {\n replay.eventBuffer.clear();\n }\n\n if (isCheckout) {\n replay.eventBuffer.hasCheckout = true;\n }\n\n const replayOptions = replay.getOptions();\n\n const eventAfterPossibleCallback = maybeApplyCallback(event, replayOptions.beforeAddRecordingEvent);\n\n if (!eventAfterPossibleCallback) {\n return;\n }\n\n return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n } catch (error) {\n const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n DEBUG_BUILD && logger.error(error);\n await replay.stop({ reason });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('internal_sdk_error', 'replay');\n }\n }\n}\n\n/** Exported only for tests. */\nexport function shouldAddEvent(replay: ReplayContainer, event: RecordingEvent): boolean {\n if (!replay.eventBuffer || replay.isPaused() || !replay.isEnabled()) {\n return false;\n }\n\n const timestampInMs = timestampToMs(event.timestamp);\n\n // Throw out events that happen more than 5 minutes ago. This can happen if\n // page has been left open and idle for a long period of time and user\n // comes back to trigger a new session. The performance entries rely on\n // `performance.timeOrigin`, which is when the page first opened.\n if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n return false;\n }\n\n // Throw out events that are +60min from the initial timestamp\n if (timestampInMs > replay.getContext().initialTimestamp + replay.getOptions().maxReplayDuration) {\n logInfo(\n `[Replay] Skipping event with timestamp ${timestampInMs} because it is after maxReplayDuration`,\n replay.getOptions()._experiments.traceInternals,\n );\n return false;\n }\n\n return true;\n}\n\nfunction maybeApplyCallback(\n event: RecordingEvent,\n callback: ReplayPluginOptions['beforeAddRecordingEvent'],\n): RecordingEvent | null | undefined {\n try {\n if (typeof callback === 'function' && isCustomEvent(event)) {\n return callback(event);\n }\n } catch (error) {\n DEBUG_BUILD &&\n logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);\n return null;\n }\n\n return event;\n}\n","import type { ErrorEvent, Event, FeedbackEvent, ReplayEvent, TransactionEvent } from '@sentry/types';\n\n/** If the event is an error event */\nexport function isErrorEvent(event: Event): event is ErrorEvent {\n return !event.type;\n}\n\n/** If the event is a transaction event */\nexport function isTransactionEvent(event: Event): event is TransactionEvent {\n return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nexport function isReplayEvent(event: Event): event is ReplayEvent {\n return event.type === 'replay_event';\n}\n\n/** If the event is a feedback event */\nexport function isFeedbackEvent(event: Event): event is FeedbackEvent {\n return event.type === 'feedback';\n}\n","import { getClient } from '@sentry/core';\nimport type { ErrorEvent, Event, TransactionEvent, Transport, TransportMakeRequestResponse } from '@sentry/types';\n\nimport type { ReplayContainer } from '../types';\nimport { isErrorEvent, isTransactionEvent } from '../util/eventUtils';\n\ntype AfterSendEventCallback = (event: Event, sendResponse: TransportMakeRequestResponse | void) => void;\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nexport function handleAfterSendEvent(replay: ReplayContainer): AfterSendEventCallback {\n // Custom transports may still be returning `Promise`, which means we cannot expect the status code to be available there\n // TODO (v8): remove this check as it will no longer be necessary\n const enforceStatusCode = isBaseTransportSend();\n\n return (event: Event, sendResponse: TransportMakeRequestResponse | void) => {\n if (!replay.isEnabled() || (!isErrorEvent(event) && !isTransactionEvent(event))) {\n return;\n }\n\n const statusCode = sendResponse && sendResponse.statusCode;\n\n // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n // If we do use the base transport, we skip if we encountered an non-OK status code\n if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n return;\n }\n\n if (isTransactionEvent(event)) {\n handleTransactionEvent(replay, event);\n return;\n }\n\n handleErrorEvent(replay, event);\n };\n}\n\nfunction handleTransactionEvent(replay: ReplayContainer, event: TransactionEvent): void {\n const replayContext = replay.getContext();\n\n // Collect traceIds in _context regardless of `recordingMode`\n // In error mode, _context gets cleared on every checkout\n // We limit to max. 100 transactions linked\n if (event.contexts && event.contexts.trace && event.contexts.trace.trace_id && replayContext.traceIds.size < 100) {\n replayContext.traceIds.add(event.contexts.trace.trace_id as string);\n }\n}\n\nfunction handleErrorEvent(replay: ReplayContainer, event: ErrorEvent): void {\n const replayContext = replay.getContext();\n\n // Add error to list of errorIds of replay. This is ok to do even if not\n // sampled because context will get reset at next checkout.\n // XXX: There is also a race condition where it's possible to capture an\n // error to Sentry before Replay SDK has loaded, but response returns after\n // it was loaded, and this gets called.\n // We limit to max. 100 errors linked\n if (event.event_id && replayContext.errorIds.size < 100) {\n replayContext.errorIds.add(event.event_id);\n }\n\n // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n // Need to be very careful that this does not cause an infinite loop\n if (replay.recordingMode !== 'buffer' || !event.tags || !event.tags.replayId) {\n return;\n }\n\n const { beforeErrorSampling } = replay.getOptions();\n if (typeof beforeErrorSampling === 'function' && !beforeErrorSampling(event)) {\n return;\n }\n\n setTimeout(() => {\n // Capture current event buffer as new replay\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.sendBufferedReplayOrFlush();\n });\n}\n\nfunction isBaseTransportSend(): boolean {\n const client = getClient();\n if (!client) {\n return false;\n }\n\n const transport = client.getTransport();\n if (!transport) {\n return false;\n }\n\n return (\n (transport.send as Transport['send'] & { __sentry__baseTransport__?: true }).__sentry__baseTransport__ || false\n );\n}\n","import type { ErrorEvent, Event } from '@sentry/types';\n\nimport type { ReplayContainer } from '../types';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { isErrorEvent } from '../util/eventUtils';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\ntype BeforeSendEventCallback = (event: Event) => void;\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nexport function handleBeforeSendEvent(replay: ReplayContainer): BeforeSendEventCallback {\n return (event: Event) => {\n if (!replay.isEnabled() || !isErrorEvent(event)) {\n return;\n }\n\n handleHydrationError(replay, event);\n };\n}\n\nfunction handleHydrationError(replay: ReplayContainer, event: ErrorEvent): void {\n const exceptionValue = event.exception && event.exception.values && event.exception.values[0].value;\n if (typeof exceptionValue !== 'string') {\n return;\n }\n\n if (\n // Only matches errors in production builds of react-dom\n // Example https://reactjs.org/docs/error-decoder.html?invariant=423\n exceptionValue.match(/reactjs\\.org\\/docs\\/error-decoder\\.html\\?invariant=(418|419|422|423|425)/) ||\n // Development builds of react-dom\n // Error 1: Hydration failed because the initial UI does not match what was rendered on the server.\n // Error 2: Text content does not match server-rendered HTML. Warning: Text content did not match.\n exceptionValue.match(/(does not match server-rendered HTML|Hydration failed because)/i)\n ) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.hydrate-error',\n });\n addBreadcrumbEvent(replay, breadcrumb);\n }\n}\n","import type { Event, EventHint } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ReplayContainer } from '../types';\nimport { isErrorEvent, isFeedbackEvent, isReplayEvent, isTransactionEvent } from '../util/eventUtils';\nimport { isRrwebError } from '../util/isRrwebError';\nimport { handleAfterSendEvent } from './handleAfterSendEvent';\nimport { addFeedbackBreadcrumb } from './util/addFeedbackBreadcrumb';\nimport { shouldSampleForBufferEvent } from './util/shouldSampleForBufferEvent';\n\n/**\n * Returns a listener to be added to `addEventProcessor(listener)`.\n */\nexport function handleGlobalEventListener(\n replay: ReplayContainer,\n includeAfterSendEventHandling = false,\n): (event: Event, hint: EventHint) => Event | null {\n const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n return Object.assign(\n (event: Event, hint: EventHint) => {\n // Do nothing if replay has been disabled\n if (!replay.isEnabled()) {\n return event;\n }\n\n if (isReplayEvent(event)) {\n // Replays have separate set of breadcrumbs, do not include breadcrumbs\n // from core SDK\n delete event.breadcrumbs;\n return event;\n }\n\n // We only want to handle errors, transactions, and feedbacks, nothing else\n if (!isErrorEvent(event) && !isTransactionEvent(event) && !isFeedbackEvent(event)) {\n return event;\n }\n\n // Ensure we do not add replay_id if the session is expired\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (!isSessionActive) {\n return event;\n }\n\n if (isFeedbackEvent(event)) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.flush();\n event.contexts.feedback.replay_id = replay.getSessionId();\n // Add a replay breadcrumb for this piece of feedback\n addFeedbackBreadcrumb(replay, event);\n return event;\n }\n\n // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n DEBUG_BUILD && logger.log('[Replay] Ignoring error from rrweb internals', event);\n return null;\n }\n\n // When in buffer mode, we decide to sample here.\n // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n // And convert the buffer session to a full session\n const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n // Tag errors if it has been sampled in buffer mode, or if it is session mode\n // Only tag transactions if in session mode\n const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n if (shouldTagReplayId) {\n event.tags = { ...event.tags, replayId: replay.getSessionId() };\n }\n\n // In cases where a custom client is used that does not support the new hooks (yet),\n // we manually call this hook method here\n if (afterSendHandler) {\n // Pretend the error had a 200 response so we always capture it\n afterSendHandler(event, { statusCode: 200 });\n }\n\n return event;\n },\n { id: 'Replay' },\n );\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport type { FeedbackEvent } from '@sentry/types';\n\nimport type { ReplayBreadcrumbFrameEvent, ReplayContainer } from '../../types';\n\n/**\n * Add a feedback breadcrumb event to replay.\n */\nexport function addFeedbackBreadcrumb(replay: ReplayContainer, event: FeedbackEvent): void {\n replay.triggerUserActivity();\n replay.addUpdate(() => {\n if (!event.timestamp) {\n // Ignore events that don't have timestamps (this shouldn't happen, more of a typing issue)\n // Return true here so that we don't flush\n return true;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: event.timestamp * 1000,\n data: {\n tag: 'breadcrumb',\n payload: {\n timestamp: event.timestamp,\n type: 'default',\n category: 'sentry.feedback',\n data: {\n feedbackId: event.event_id,\n },\n },\n },\n } as ReplayBreadcrumbFrameEvent);\n\n return false;\n });\n}\n","import type { Event, EventHint } from '@sentry/types';\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nexport function isRrwebError(event: Event, hint: EventHint): boolean {\n if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n return false;\n }\n\n // @ts-expect-error this may be set by rrweb when it finds errors\n if (hint.originalException && hint.originalException.__rrweb__) {\n return true;\n }\n\n return false;\n}\n","import type { Event } from '@sentry/types';\n\nimport { UNABLE_TO_SEND_REPLAY } from '../../constants';\nimport type { ReplayContainer } from '../../types';\nimport { isSampled } from '../../util/isSampled';\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nexport function shouldSampleForBufferEvent(replay: ReplayContainer, event: Event): boolean {\n if (replay.recordingMode !== 'buffer') {\n return false;\n }\n\n // ignore this error because otherwise we could loop indefinitely with\n // trying to capture replay and failing\n if (event.message === UNABLE_TO_SEND_REPLAY) {\n return false;\n }\n\n // Require the event to be an error event & to have an exception\n if (!event.exception || event.type) {\n return false;\n }\n\n return isSampled(replay.getOptions().errorSampleRate);\n}\n","import { EventType } from '@sentry-internal/rrweb';\n\nimport type { AddEventResult, AllEntryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\n\n/**\n * Create a \"span\" for each performance entry.\n */\nexport function createPerformanceSpans(\n replay: ReplayContainer,\n entries: ReplayPerformanceEntry[],\n): Promise[] {\n return entries.map(({ type, start, end, name, data }) => {\n const response = replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: start,\n data: {\n tag: 'performanceSpan',\n payload: {\n op: type,\n description: name,\n startTimestamp: start,\n endTimestamp: end,\n data,\n },\n },\n });\n\n // If response is a string, it means its either THROTTLED or SKIPPED\n return typeof response === 'string' ? Promise.resolve(null) : response;\n });\n}\n","import type { HandlerDataHistory } from '@sentry/types';\n\nimport type { HistoryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { createPerformanceSpans } from '../util/createPerformanceSpans';\n\nfunction handleHistory(handlerData: HandlerDataHistory): ReplayPerformanceEntry {\n const { from, to } = handlerData;\n\n const now = Date.now() / 1000;\n\n return {\n type: 'navigation.push',\n start: now,\n end: now,\n name: to,\n data: {\n previous: from,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addHistoryInstrumentationHandler(listener)`.\n */\nexport function handleHistorySpanListener(replay: ReplayContainer): (handlerData: HandlerDataHistory) => void {\n return (handlerData: HandlerDataHistory) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleHistory(handlerData);\n\n if (result === null) {\n return;\n }\n\n // Need to collect visited URLs\n replay.getContext().urls.push(result.name);\n replay.triggerUserActivity();\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning false to flush\n return false;\n });\n };\n}\n","import type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../../types';\nimport { createPerformanceSpans } from '../../util/createPerformanceSpans';\nimport { shouldFilterRequest } from '../../util/shouldFilterRequest';\n\n/** Add a performance entry breadcrumb */\nexport function addNetworkBreadcrumb(\n replay: ReplayContainer,\n result: ReplayPerformanceEntry | null,\n): void {\n if (!replay.isEnabled()) {\n return;\n }\n\n if (result === null) {\n return;\n }\n\n if (shouldFilterRequest(replay, result.name)) {\n return;\n }\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning true will cause `addUpdate` to not flush\n // We do not want network requests to cause a flush. This will prevent\n // recurring/polling requests from keeping the replay session alive.\n return true;\n });\n}\n","import { getClient, isSentryRequestUrl } from '@sentry/core';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ReplayContainer } from '../types';\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nexport function shouldFilterRequest(replay: ReplayContainer, url: string): boolean {\n // If we enabled the `traceInternals` experiment, we want to trace everything\n if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {\n return false;\n }\n\n return isSentryRequestUrl(url, getClient());\n}\n","import type { HandlerDataXhr } from '@sentry/types';\nimport { SENTRY_XHR_DATA_KEY } from '@sentry/utils';\n\nimport type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { addNetworkBreadcrumb } from './util/addNetworkBreadcrumb';\n\n/** only exported for tests */\nexport function handleXhr(handlerData: HandlerDataXhr): ReplayPerformanceEntry | null {\n const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url, status_code: statusCode } = sentryXhrData;\n\n if (url === undefined) {\n return null;\n }\n\n return {\n type: 'resource.xhr',\n name: url,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n data: {\n method,\n statusCode,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addXhrInstrumentationHandler(listener)`.\n */\nexport function handleXhrSpanListener(replay: ReplayContainer): (handlerData: HandlerDataXhr) => void {\n return (handlerData: HandlerDataXhr) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleXhr(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n","import type { TextEncoderInternal } from '@sentry/types';\nimport { dropUndefinedKeys, logger, stringMatchesSomePattern } from '@sentry/utils';\n\nimport { NETWORK_BODY_MAX_SIZE, WINDOW } from '../../constants';\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n NetworkBody,\n NetworkMetaWarning,\n NetworkRequestData,\n ReplayNetworkRequestData,\n ReplayNetworkRequestOrResponse,\n ReplayPerformanceEntry,\n} from '../../types';\n\n/** Get the size of a body. */\nexport function getBodySize(\n body: RequestInit['body'],\n textEncoder: TextEncoder | TextEncoderInternal,\n): number | undefined {\n if (!body) {\n return undefined;\n }\n\n try {\n if (typeof body === 'string') {\n return textEncoder.encode(body).length;\n }\n\n if (body instanceof URLSearchParams) {\n return textEncoder.encode(body.toString()).length;\n }\n\n if (body instanceof FormData) {\n const formDataStr = _serializeFormData(body);\n return textEncoder.encode(formDataStr).length;\n }\n\n if (body instanceof Blob) {\n return body.size;\n }\n\n if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n\n // Currently unhandled types: ArrayBufferView, ReadableStream\n } catch {\n // just return undefined\n }\n\n return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined. */\nexport function parseContentLengthHeader(header: string | null | undefined): number | undefined {\n if (!header) {\n return undefined;\n }\n\n const size = parseInt(header, 10);\n return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nexport function getBodyString(body: unknown): [string | undefined, NetworkMetaWarning?] {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof URLSearchParams) {\n return [body.toString()];\n }\n\n if (body instanceof FormData) {\n return [_serializeFormData(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\n/** Merge a warning into an existing network request/response. */\nexport function mergeWarning(\n info: ReplayNetworkRequestOrResponse | undefined,\n warning: NetworkMetaWarning,\n): ReplayNetworkRequestOrResponse {\n if (!info) {\n return {\n headers: {},\n size: undefined,\n _meta: {\n warnings: [warning],\n },\n };\n }\n\n const newMeta = { ...info._meta };\n const existingWarnings = newMeta.warnings || [];\n newMeta.warnings = [...existingWarnings, warning];\n\n info._meta = newMeta;\n return info;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nexport function makeNetworkReplayBreadcrumb(\n type: string,\n data: ReplayNetworkRequestData | null,\n): ReplayPerformanceEntry | null {\n if (!data) {\n return null;\n }\n\n const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n const result: ReplayPerformanceEntry = {\n type,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: dropUndefinedKeys({\n method,\n statusCode,\n request,\n response,\n }),\n };\n\n return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nexport function buildSkippedNetworkRequestOrResponse(bodySize: number | undefined): ReplayNetworkRequestOrResponse {\n return {\n headers: {},\n size: bodySize,\n _meta: {\n warnings: ['URL_SKIPPED'],\n },\n };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nexport function buildNetworkRequestOrResponse(\n headers: Record,\n bodySize: number | undefined,\n body: string | undefined,\n): ReplayNetworkRequestOrResponse | undefined {\n if (!bodySize && Object.keys(headers).length === 0) {\n return undefined;\n }\n\n if (!bodySize) {\n return {\n headers,\n };\n }\n\n if (!body) {\n return {\n headers,\n size: bodySize,\n };\n }\n\n const info: ReplayNetworkRequestOrResponse = {\n headers,\n size: bodySize,\n };\n\n const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n info.body = normalizedBody;\n if (warnings && warnings.length > 0) {\n info._meta = {\n warnings,\n };\n }\n\n return info;\n}\n\n/** Filter a set of headers */\nexport function getAllowedHeaders(headers: Record, allowedHeaders: string[]): Record {\n return Object.keys(headers).reduce((filteredHeaders: Record, key: string) => {\n const normalizedKey = key.toLowerCase();\n // Avoid putting empty strings into the headers\n if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n filteredHeaders[normalizedKey] = headers[key];\n }\n return filteredHeaders;\n }, {});\n}\n\nfunction _serializeFormData(formData: FormData): string {\n // This is a bit simplified, but gives us a decent estimate\n // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n // @ts-expect-error passing FormData to URLSearchParams actually works\n return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body: string | undefined): {\n body: NetworkBody | undefined;\n warnings?: NetworkMetaWarning[];\n} {\n if (!body || typeof body !== 'string') {\n return {\n body,\n };\n }\n\n const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n const isProbablyJson = _strIsProbablyJson(body);\n\n if (exceedsSizeLimit) {\n const truncatedBody = body.slice(0, NETWORK_BODY_MAX_SIZE);\n\n if (isProbablyJson) {\n return {\n body: truncatedBody,\n warnings: ['MAYBE_JSON_TRUNCATED'],\n };\n }\n\n return {\n body: `${truncatedBody}…`,\n warnings: ['TEXT_TRUNCATED'],\n };\n }\n\n if (isProbablyJson) {\n try {\n const jsonBody = JSON.parse(body);\n return {\n body: jsonBody,\n };\n } catch {\n // fall back to just send the body as string\n }\n }\n\n return {\n body,\n };\n}\n\nfunction _strIsProbablyJson(str: string): boolean {\n const first = str[0];\n const last = str[str.length - 1];\n\n // Simple check: If this does not start & end with {} or [], it's not JSON\n return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nexport function urlMatches(url: string, urls: (string | RegExp)[]): boolean {\n const fullUrl = getFullUrl(url);\n\n return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nexport function getFullUrl(url: string, baseURI = WINDOW.document.baseURI): string {\n // Short circuit for common cases:\n if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n return url;\n }\n const fixedUrl = new URL(url, baseURI);\n\n // If these do not match, we are not dealing with a relative URL, so just return it\n if (fixedUrl.origin !== new URL(baseURI).origin) {\n return url;\n }\n\n const fullUrl = fixedUrl.href;\n\n // Remove trailing slashes, if they don't match the original URL\n if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n return fullUrl.slice(0, -1);\n }\n\n return fullUrl;\n}\n","import type { Breadcrumb, FetchBreadcrumbData, TextEncoderInternal } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n FetchHint,\n NetworkMetaWarning,\n ReplayContainer,\n ReplayNetworkOptions,\n ReplayNetworkRequestData,\n ReplayNetworkRequestOrResponse,\n} from '../../types';\nimport { addNetworkBreadcrumb } from './addNetworkBreadcrumb';\nimport {\n buildNetworkRequestOrResponse,\n buildSkippedNetworkRequestOrResponse,\n getAllowedHeaders,\n getBodySize,\n getBodyString,\n makeNetworkReplayBreadcrumb,\n mergeWarning,\n parseContentLengthHeader,\n urlMatches,\n} from './networkUtils';\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nexport async function captureFetchBreadcrumbToReplay(\n breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n hint: Partial,\n options: ReplayNetworkOptions & {\n textEncoder: TextEncoderInternal;\n replay: ReplayContainer;\n },\n): Promise {\n try {\n const data = await _prepareFetchData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nexport function enrichFetchBreadcrumb(\n breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n hint: Partial,\n options: { textEncoder: TextEncoderInternal },\n): void {\n const { input, response } = hint;\n\n const body = input ? _getFetchRequestArgBody(input) : undefined;\n const reqSize = getBodySize(body, options.textEncoder);\n\n const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nasync function _prepareFetchData(\n breadcrumb: Breadcrumb & { data: FetchBreadcrumbData },\n hint: Partial,\n options: ReplayNetworkOptions & {\n textEncoder: TextEncoderInternal;\n },\n): Promise {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n const captureDetails =\n urlMatches(url, options.networkDetailAllowUrls) && !urlMatches(url, options.networkDetailDenyUrls);\n\n const request = captureDetails\n ? _getRequestInfo(options, hint.input, requestBodySize)\n : buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n}\n\nfunction _getRequestInfo(\n { networkCaptureBodies, networkRequestHeaders }: ReplayNetworkOptions,\n input: FetchHint['input'] | undefined,\n requestBodySize?: number,\n): ReplayNetworkRequestOrResponse | undefined {\n const headers = input ? getRequestHeaders(input, networkRequestHeaders) : {};\n\n if (!networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n }\n\n // We only want to transmit string or string-like bodies\n const requestBody = _getFetchRequestArgBody(input);\n const [bodyStr, warning] = getBodyString(requestBody);\n const data = buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n\n if (warning) {\n return mergeWarning(data, warning);\n }\n\n return data;\n}\n\n/** Exported only for tests. */\nexport async function _getResponseInfo(\n captureDetails: boolean,\n {\n networkCaptureBodies,\n textEncoder,\n networkResponseHeaders,\n }: Pick & {\n textEncoder: TextEncoderInternal;\n },\n response: Response | undefined,\n responseBodySize?: number,\n): Promise {\n if (!captureDetails && responseBodySize !== undefined) {\n return buildSkippedNetworkRequestOrResponse(responseBodySize);\n }\n\n const headers = response ? getAllHeaders(response.headers, networkResponseHeaders) : {};\n\n if (!response || (!networkCaptureBodies && responseBodySize !== undefined)) {\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n\n const [bodyText, warning] = await _parseFetchResponseBody(response);\n const result = getResponseData(bodyText, {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n });\n\n if (warning) {\n return mergeWarning(result, warning);\n }\n\n return result;\n}\n\nfunction getResponseData(\n bodyText: string | undefined,\n {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n }: {\n captureDetails: boolean;\n networkCaptureBodies: boolean;\n responseBodySize: number | undefined;\n headers: Record;\n textEncoder: TextEncoderInternal;\n },\n): ReplayNetworkRequestOrResponse | undefined {\n try {\n const size =\n bodyText && bodyText.length && responseBodySize === undefined\n ? getBodySize(bodyText, textEncoder)\n : responseBodySize;\n\n if (!captureDetails) {\n return buildSkippedNetworkRequestOrResponse(size);\n }\n\n if (networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, size, bodyText);\n }\n\n return buildNetworkRequestOrResponse(headers, size, undefined);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize response body', error);\n // fallback\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n}\n\nasync function _parseFetchResponseBody(response: Response): Promise<[string | undefined, NetworkMetaWarning?]> {\n const res = _tryCloneResponse(response);\n\n if (!res) {\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n try {\n const text = await _tryGetResponseText(res);\n return [text];\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to get text body from response', error);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs: unknown[] = []): RequestInit['body'] | undefined {\n // We only support getting the body from the fetch options\n if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n return undefined;\n }\n\n return (fetchArgs[1] as RequestInit).body;\n}\n\nfunction getAllHeaders(headers: Headers, allowedHeaders: string[]): Record {\n const allHeaders: Record = {};\n\n allowedHeaders.forEach(header => {\n if (headers.get(header)) {\n allHeaders[header] = headers.get(header) as string;\n }\n });\n\n return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs: unknown[], allowedHeaders: string[]): Record {\n if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n return getHeadersFromOptions(fetchArgs[0] as Request | RequestInit, allowedHeaders);\n }\n\n if (fetchArgs.length === 2) {\n return getHeadersFromOptions(fetchArgs[1] as Request | RequestInit, allowedHeaders);\n }\n\n return {};\n}\n\nfunction getHeadersFromOptions(\n input: Request | RequestInit | undefined,\n allowedHeaders: string[],\n): Record {\n if (!input) {\n return {};\n }\n\n const headers = input.headers;\n\n if (!headers) {\n return {};\n }\n\n if (headers instanceof Headers) {\n return getAllHeaders(headers, allowedHeaders);\n }\n\n // We do not support this, as it is not really documented (anymore?)\n if (Array.isArray(headers)) {\n return {};\n }\n\n return getAllowedHeaders(headers, allowedHeaders);\n}\n\nfunction _tryCloneResponse(response: Response): Response | void {\n try {\n // We have to clone this, as the body can only be read once\n return response.clone();\n } catch (error) {\n // this can throw if the response was already consumed before\n DEBUG_BUILD && logger.warn('[Replay] Failed to clone response body', error);\n }\n}\n\n/**\n * Get the response body of a fetch request, or timeout after 500ms.\n * Fetch can return a streaming body, that may not resolve (or not for a long time).\n * If that happens, we rather abort after a short time than keep waiting for this.\n */\nfunction _tryGetResponseText(response: Response): Promise {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Timeout while trying to read response body')), 500);\n\n _getResponseText(response)\n .then(\n txt => resolve(txt),\n reason => reject(reason),\n )\n .finally(() => clearTimeout(timeout));\n });\n\n return _getResponseText(response);\n}\n\nasync function _getResponseText(response: Response): Promise {\n // Force this to be a promise, just to be safe\n // eslint-disable-next-line no-return-await\n return await response.text();\n}\n","import type { Breadcrumb, TextEncoderInternal, XhrBreadcrumbData } from '@sentry/types';\nimport { SENTRY_XHR_DATA_KEY, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../../debug-build';\nimport type {\n NetworkMetaWarning,\n ReplayContainer,\n ReplayNetworkOptions,\n ReplayNetworkRequestData,\n XhrHint,\n} from '../../types';\nimport { addNetworkBreadcrumb } from './addNetworkBreadcrumb';\nimport {\n buildNetworkRequestOrResponse,\n buildSkippedNetworkRequestOrResponse,\n getAllowedHeaders,\n getBodySize,\n getBodyString,\n makeNetworkReplayBreadcrumb,\n mergeWarning,\n parseContentLengthHeader,\n urlMatches,\n} from './networkUtils';\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nexport async function captureXhrBreadcrumbToReplay(\n breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n hint: Partial,\n options: ReplayNetworkOptions & { replay: ReplayContainer },\n): Promise {\n try {\n const data = _prepareXhrData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture xhr breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nexport function enrichXhrBreadcrumb(\n breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n hint: Partial,\n options: { textEncoder: TextEncoderInternal },\n): void {\n const { xhr, input } = hint;\n\n if (!xhr) {\n return;\n }\n\n const reqSize = getBodySize(input, options.textEncoder);\n const resSize = xhr.getResponseHeader('content-length')\n ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n : _getBodySize(xhr.response, xhr.responseType, options.textEncoder);\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nfunction _prepareXhrData(\n breadcrumb: Breadcrumb & { data: XhrBreadcrumbData },\n hint: Partial,\n options: ReplayNetworkOptions,\n): ReplayNetworkRequestData | null {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now, input, xhr } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n if (!url) {\n return null;\n }\n\n if (!xhr || !urlMatches(url, options.networkDetailAllowUrls) || urlMatches(url, options.networkDetailDenyUrls)) {\n const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n }\n\n const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n const networkRequestHeaders = xhrInfo\n ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n : {};\n const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n const [requestBody, requestWarning] = options.networkCaptureBodies ? getBodyString(input) : [undefined];\n const [responseBody, responseWarning] = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : [undefined];\n\n const request = buildNetworkRequestOrResponse(networkRequestHeaders, requestBodySize, requestBody);\n const response = buildNetworkRequestOrResponse(networkResponseHeaders, responseBodySize, responseBody);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request: requestWarning ? mergeWarning(request, requestWarning) : request,\n response: responseWarning ? mergeWarning(response, responseWarning) : response,\n };\n}\n\nfunction getResponseHeaders(xhr: XMLHttpRequest): Record {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc: Record, line: string) => {\n const [key, value] = line.split(': ');\n acc[key.toLowerCase()] = value;\n return acc;\n }, {});\n}\n\nfunction _getXhrResponseBody(xhr: XMLHttpRequest): [string | undefined, NetworkMetaWarning?] {\n // We collect errors that happen, but only log them if we can't get any response body\n const errors: unknown[] = [];\n\n try {\n return [xhr.responseText];\n } catch (e) {\n errors.push(e);\n }\n\n // Try to manually parse the response body, if responseText fails\n try {\n return _parseXhrResponse(xhr.response, xhr.responseType);\n } catch (e) {\n errors.push(e);\n }\n\n DEBUG_BUILD && logger.warn('[Replay] Failed to get xhr response body', ...errors);\n\n return [undefined];\n}\n\n/**\n * Get the string representation of the XHR response.\n * Based on MDN, these are the possible types of the response:\n * string\n * ArrayBuffer\n * Blob\n * Document\n * POJO\n *\n * Exported only for tests.\n */\nexport function _parseXhrResponse(\n body: XMLHttpRequest['response'],\n responseType: XMLHttpRequest['responseType'],\n): [string | undefined, NetworkMetaWarning?] {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof Document) {\n return [body.body.outerHTML];\n }\n\n if (responseType === 'json' && body && typeof body === 'object') {\n return [JSON.stringify(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\nfunction _getBodySize(\n body: XMLHttpRequest['response'],\n responseType: XMLHttpRequest['responseType'],\n textEncoder: TextEncoder | TextEncoderInternal,\n): number | undefined {\n try {\n const bodyStr = responseType === 'json' && body && typeof body === 'object' ? JSON.stringify(body) : body;\n return getBodySize(bodyStr, textEncoder);\n } catch {\n return undefined;\n }\n}\n","import { getClient } from '@sentry/core';\nimport type {\n Breadcrumb,\n BreadcrumbHint,\n FetchBreadcrumbData,\n TextEncoderInternal,\n XhrBreadcrumbData,\n} from '@sentry/types';\nimport { addFetchInstrumentationHandler, addXhrInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { FetchHint, ReplayContainer, ReplayNetworkOptions, XhrHint } from '../types';\nimport { handleFetchSpanListener } from './handleFetch';\nimport { handleXhrSpanListener } from './handleXhr';\nimport { captureFetchBreadcrumbToReplay, enrichFetchBreadcrumb } from './util/fetchUtils';\nimport { captureXhrBreadcrumbToReplay, enrichXhrBreadcrumb } from './util/xhrUtils';\n\ninterface ExtendedNetworkBreadcrumbsOptions extends ReplayNetworkOptions {\n replay: ReplayContainer;\n textEncoder: TextEncoderInternal;\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n * (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nexport function handleNetworkBreadcrumbs(replay: ReplayContainer): void {\n const client = getClient();\n\n try {\n const textEncoder = new TextEncoder();\n\n const {\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n } = replay.getOptions();\n\n const options: ExtendedNetworkBreadcrumbsOptions = {\n replay,\n textEncoder,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n };\n\n if (client && client.on) {\n client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n } else {\n // Fallback behavior\n addFetchInstrumentationHandler(handleFetchSpanListener(replay));\n addXhrInstrumentationHandler(handleXhrSpanListener(replay));\n }\n } catch {\n // Do nothing\n }\n}\n\n/** just exported for tests */\nexport function beforeAddNetworkBreadcrumb(\n options: ExtendedNetworkBreadcrumbsOptions,\n breadcrumb: Breadcrumb,\n hint?: BreadcrumbHint,\n): void {\n if (!breadcrumb.data) {\n return;\n }\n\n try {\n if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n }\n\n if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n }\n } catch (e) {\n DEBUG_BUILD && logger.warn('Error when enriching network breadcrumb');\n }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is Breadcrumb & { data: XhrBreadcrumbData } {\n return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb: Breadcrumb): breadcrumb is Breadcrumb & { data: FetchBreadcrumbData } {\n return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint?: BreadcrumbHint): hint is XhrHint {\n return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint?: BreadcrumbHint): hint is FetchHint {\n return hint && hint.response;\n}\n","import type { HandlerDataFetch } from '@sentry/types';\n\nimport type { NetworkRequestData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { addNetworkBreadcrumb } from './util/addNetworkBreadcrumb';\n\n/** only exported for tests */\nexport function handleFetch(handlerData: HandlerDataFetch): null | ReplayPerformanceEntry {\n const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n if (!endTimestamp) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url } = fetchData;\n\n return {\n type: 'resource.fetch',\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: {\n method,\n statusCode: response ? (response as Response).status : undefined,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addFetchInstrumentationHandler(listener)`.\n */\nexport function handleFetchSpanListener(replay: ReplayContainer): (handlerData: HandlerDataFetch) => void {\n return (handlerData: HandlerDataFetch) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleFetch(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n","import type { Breadcrumb, Scope } from '@sentry/types';\nimport { normalize } from '@sentry/utils';\n\nimport { CONSOLE_ARG_MAX_SIZE } from '../constants';\nimport type { ReplayContainer } from '../types';\nimport type { ReplayFrame } from '../types/replayFrame';\nimport { createBreadcrumb } from '../util/createBreadcrumb';\nimport { addBreadcrumbEvent } from './util/addBreadcrumbEvent';\n\nlet _LAST_BREADCRUMB: null | Breadcrumb = null;\n\ntype BreadcrumbWithCategory = Required>;\n\nfunction isBreadcrumbWithCategory(breadcrumb: Breadcrumb): breadcrumb is BreadcrumbWithCategory {\n return !!breadcrumb.category;\n}\n\nexport const handleScopeListener: (replay: ReplayContainer) => (scope: Scope) => void =\n (replay: ReplayContainer) =>\n (scope: Scope): void => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleScope(scope);\n\n if (!result) {\n return;\n }\n\n addBreadcrumbEvent(replay, result);\n };\n\n/**\n * An event handler to handle scope changes.\n */\nexport function handleScope(scope: Scope): Breadcrumb | null {\n // TODO (v8): Remove this guard. This was put in place because we introduced\n // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n // For now, we'll just return null if the method doesn't exist but we should eventually\n // get rid of this guard.\n const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n // Listener can be called when breadcrumbs have not changed, so we store the\n // reference to the last crumb and only return a crumb if it has changed\n if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n return null;\n }\n\n _LAST_BREADCRUMB = newBreadcrumb;\n\n if (\n !isBreadcrumbWithCategory(newBreadcrumb) ||\n ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n newBreadcrumb.category.startsWith('ui.')\n ) {\n return null;\n }\n\n if (newBreadcrumb.category === 'console') {\n return normalizeConsoleBreadcrumb(newBreadcrumb);\n }\n\n return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nexport function normalizeConsoleBreadcrumb(\n breadcrumb: Omit & BreadcrumbWithCategory,\n): ReplayFrame {\n const args = breadcrumb.data && breadcrumb.data.arguments;\n\n if (!Array.isArray(args) || args.length === 0) {\n return createBreadcrumb(breadcrumb);\n }\n\n let isTruncated = false;\n\n // Avoid giant args captures\n const normalizedArgs = args.map(arg => {\n if (!arg) {\n return arg;\n }\n if (typeof arg === 'string') {\n if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n\n return arg;\n }\n if (typeof arg === 'object') {\n try {\n const normalizedArg = normalize(arg, 7);\n const stringified = JSON.stringify(normalizedArg);\n if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n // We use the pretty printed JSON string here as a base\n return `${JSON.stringify(normalizedArg, null, 2).slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n return normalizedArg;\n } catch {\n // fall back to default\n }\n }\n\n return arg;\n });\n\n return createBreadcrumb({\n ...breadcrumb,\n data: {\n ...breadcrumb.data,\n arguments: normalizedArgs,\n ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n },\n });\n}\n","import type { BaseClient } from '@sentry/core';\nimport { getCurrentScope } from '@sentry/core';\nimport { addEventProcessor, getClient } from '@sentry/core';\nimport type { Client, DynamicSamplingContext } from '@sentry/types';\nimport { addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler } from '@sentry/utils';\n\nimport { handleAfterSendEvent } from '../coreHandlers/handleAfterSendEvent';\nimport { handleBeforeSendEvent } from '../coreHandlers/handleBeforeSendEvent';\nimport { handleDomListener } from '../coreHandlers/handleDom';\nimport { handleGlobalEventListener } from '../coreHandlers/handleGlobalEvent';\nimport { handleHistorySpanListener } from '../coreHandlers/handleHistory';\nimport { handleNetworkBreadcrumbs } from '../coreHandlers/handleNetworkBreadcrumbs';\nimport { handleScopeListener } from '../coreHandlers/handleScope';\nimport type { ReplayContainer } from '../types';\n\n/**\n * Add global listeners that cannot be removed.\n */\nexport function addGlobalListeners(replay: ReplayContainer): void {\n // Listeners from core SDK //\n const scope = getCurrentScope();\n const client = getClient();\n\n scope.addScopeListener(handleScopeListener(replay));\n addClickKeypressInstrumentationHandler(handleDomListener(replay));\n addHistoryInstrumentationHandler(handleHistorySpanListener(replay));\n handleNetworkBreadcrumbs(replay);\n\n // Tag all (non replay) events that get sent to Sentry with the current\n // replay ID so that we can reference them later in the UI\n const eventProcessor = handleGlobalEventListener(replay, !hasHooks(client));\n if (client && client.addEventProcessor) {\n client.addEventProcessor(eventProcessor);\n } else {\n addEventProcessor(eventProcessor);\n }\n\n // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n if (hasHooks(client)) {\n client.on('beforeSendEvent', handleBeforeSendEvent(replay));\n client.on('afterSendEvent', handleAfterSendEvent(replay));\n client.on('createDsc', (dsc: DynamicSamplingContext) => {\n const replayId = replay.getSessionId();\n // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n // Ensure to check that the session is still active - it could have expired in the meanwhile\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (isSessionActive) {\n dsc.replay_id = replayId;\n }\n }\n });\n\n client.on('startTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We may be missing the initial startTransaction due to timing issues,\n // so we capture it on finish again.\n client.on('finishTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We want to flush replay\n client.on('beforeSendFeedback', (feedbackEvent, options) => {\n const replayId = replay.getSessionId();\n if (options && options.includeReplay && replay.isEnabled() && replayId) {\n // This should never reject\n if (feedbackEvent.contexts && feedbackEvent.contexts.feedback) {\n feedbackEvent.contexts.feedback.replay_id = replayId;\n }\n }\n });\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client: Client | undefined): client is BaseClient {\n return !!(client && client.on);\n}\n","import { WINDOW } from '../constants';\nimport type { AddEventResult, MemoryData, ReplayContainer, ReplayPerformanceEntry } from '../types';\nimport { createPerformanceSpans } from './createPerformanceSpans';\n\ntype ReplayMemoryEntry = ReplayPerformanceEntry & { data: { memory: MemoryInfo } };\n\ninterface MemoryInfo {\n jsHeapSizeLimit: number;\n totalJSHeapSize: number;\n usedJSHeapSize: number;\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nexport async function addMemoryEntry(replay: ReplayContainer): Promise> {\n // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n try {\n return Promise.all(\n createPerformanceSpans(replay, [\n // @ts-expect-error memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n createMemoryEntry(WINDOW.performance.memory),\n ]),\n );\n } catch (error) {\n // Do nothing\n return [];\n }\n}\n\nfunction createMemoryEntry(memoryEntry: MemoryInfo): ReplayMemoryEntry {\n const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n // we don't want to use `getAbsoluteTime` because it adds the event time to the\n // time origin, so we get the current timestamp instead\n const time = Date.now() / 1000;\n return {\n type: 'memory',\n name: 'memory',\n start: time,\n end: time,\n data: {\n memory: {\n jsHeapSizeLimit,\n totalJSHeapSize,\n usedJSHeapSize,\n },\n },\n };\n}\n","import { EventType } from '@sentry-internal/rrweb';\nimport { logger } from '@sentry/utils';\n\nimport { updateClickDetectorForRecordingEvent } from '../coreHandlers/handleClick';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { saveSession } from '../session/saveSession';\nimport type { RecordingEvent, ReplayContainer, ReplayOptionFrameEvent } from '../types';\nimport { addEventSync } from './addEvent';\nimport { logInfo } from './log';\n\ntype RecordingEmitCallback = (event: RecordingEvent, isCheckout?: boolean) => void;\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nexport function getHandleRecordingEmit(replay: ReplayContainer): RecordingEmitCallback {\n let hadFirstEvent = false;\n\n return (event: RecordingEvent, _isCheckout?: boolean) => {\n // If this is false, it means session is expired, create and a new session and wait for checkout\n if (!replay.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.warn('[Replay] Received replay event after session expired.');\n\n return;\n }\n\n // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n // We also want to treat the first event as a checkout, so we handle this specifically here\n const isCheckout = _isCheckout || !hadFirstEvent;\n hadFirstEvent = true;\n\n if (replay.clickDetector) {\n updateClickDetectorForRecordingEvent(replay.clickDetector, event);\n }\n\n // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n replay.addUpdate(() => {\n // The session is always started immediately on pageload/init, but for\n // error-only replays, it should reflect the most recent checkout\n // when an error occurs. Clear any state that happens before this current\n // checkout. This needs to happen before `addEvent()` which updates state\n // dependent on this reset.\n if (replay.recordingMode === 'buffer' && isCheckout) {\n replay.setInitialState();\n }\n\n // If the event is not added (e.g. due to being paused, disabled, or out of the max replay duration),\n // Skip all further steps\n if (!addEventSync(replay, event, isCheckout)) {\n // Return true to skip scheduling a debounced flush\n return true;\n }\n\n // Different behavior for full snapshots (type=2), ignore other event types\n // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n if (!isCheckout) {\n return false;\n }\n\n // Additionally, create a meta event that will capture certain SDK settings.\n // In order to handle buffer mode, this needs to either be done when we\n // receive checkout events or at flush time.\n //\n // `isCheckout` is always true, but want to be explicit that it should\n // only be added for checkouts\n addSettingsEvent(replay, isCheckout);\n\n // If there is a previousSessionId after a full snapshot occurs, then\n // the replay session was started due to session expiration. The new session\n // is started before triggering a new checkout and contains the id\n // of the previous session. Do not immediately flush in this case\n // to avoid capturing only the checkout and instead the replay will\n // be captured if they perform any follow-up actions.\n if (replay.session && replay.session.previousSessionId) {\n return true;\n }\n\n // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n // this should usually be the timestamp of the checkout event, but to be safe...\n if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n if (earliestEvent) {\n logInfo(\n `[Replay] Updating session start time to earliest event in buffer to ${new Date(earliestEvent)}`,\n replay.getOptions()._experiments.traceInternals,\n );\n\n replay.session.started = earliestEvent;\n\n if (replay.getOptions().stickySession) {\n saveSession(replay.session);\n }\n }\n }\n\n if (replay.recordingMode === 'session') {\n // If the full snapshot is due to an initial load, we will not have\n // a previous session ID. In this case, we want to buffer events\n // for a set amount of time before flushing. This can help avoid\n // capturing replays of users that immediately close the window.\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void replay.flush();\n }\n\n return true;\n });\n };\n}\n\n/**\n * Exported for tests\n */\nexport function createOptionsEvent(replay: ReplayContainer): ReplayOptionFrameEvent {\n const options = replay.getOptions();\n return {\n type: EventType.Custom,\n timestamp: Date.now(),\n data: {\n tag: 'options',\n payload: {\n shouldRecordCanvas: replay.isRecordingCanvas(),\n sessionSampleRate: options.sessionSampleRate,\n errorSampleRate: options.errorSampleRate,\n useCompressionOption: options.useCompression,\n blockAllMedia: options.blockAllMedia,\n maskAllText: options.maskAllText,\n maskAllInputs: options.maskAllInputs,\n useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n networkCaptureBodies: options.networkCaptureBodies,\n networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n },\n },\n };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay: ReplayContainer, isCheckout?: boolean): void {\n // Only need to add this event when sending the first segment\n if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n return;\n }\n\n addEventSync(replay, createOptionsEvent(replay), false);\n}\n","import { getClient, getCurrentScope } from '@sentry/core';\nimport type { ReplayEvent, TransportMakeRequestResponse } from '@sentry/types';\nimport type { RateLimits } from '@sentry/utils';\nimport { isRateLimited, updateRateLimits } from '@sentry/utils';\n\nimport { REPLAY_EVENT_NAME, UNABLE_TO_SEND_REPLAY } from '../constants';\nimport type { SendReplayData } from '../types';\nimport { createReplayEnvelope } from './createReplayEnvelope';\nimport { logInfo } from './log';\nimport { prepareRecordingData } from './prepareRecordingData';\nimport { prepareReplayEvent } from './prepareReplayEvent';\n\n/**\n * Send replay attachment using `fetch()`\n */\nexport async function sendReplayRequest({\n recordingData,\n replayId,\n segmentId: segment_id,\n eventContext,\n timestamp,\n session,\n}: SendReplayData): Promise {\n const preparedRecordingData = prepareRecordingData({\n recordingData,\n headers: {\n segment_id,\n },\n });\n\n const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n const client = getClient();\n const scope = getCurrentScope();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn || !session.sampled) {\n return;\n }\n\n const baseEvent: ReplayEvent = {\n type: REPLAY_EVENT_NAME,\n replay_start_timestamp: initialTimestamp / 1000,\n timestamp: timestamp / 1000,\n error_ids: errorIds,\n trace_ids: traceIds,\n urls,\n replay_id: replayId,\n segment_id,\n replay_type: session.sampled,\n };\n\n const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n if (!replayEvent) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n logInfo('An event processor returned `null`, will not send event.');\n return;\n }\n\n /*\n For reference, the fully built event looks something like this:\n {\n \"type\": \"replay_event\",\n \"timestamp\": 1670837008.634,\n \"error_ids\": [\n \"errorId\"\n ],\n \"trace_ids\": [\n \"traceId\"\n ],\n \"urls\": [\n \"https://example.com\"\n ],\n \"replay_id\": \"eventId\",\n \"segment_id\": 3,\n \"replay_type\": \"error\",\n \"platform\": \"javascript\",\n \"event_id\": \"eventId\",\n \"environment\": \"production\",\n \"sdk\": {\n \"integrations\": [\n \"BrowserTracing\",\n \"Replay\"\n ],\n \"name\": \"sentry.javascript.browser\",\n \"version\": \"7.25.0\"\n },\n \"sdkProcessingMetadata\": {},\n \"contexts\": {\n },\n }\n */\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete replayEvent.sdkProcessingMetadata;\n\n const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n let response: void | TransportMakeRequestResponse;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return response;\n }\n\n // If the status code is invalid, we want to immediately stop & not retry\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new TransportStatusCodeError(response.statusCode);\n }\n\n const rateLimits = updateRateLimits({}, response);\n if (isRateLimited(rateLimits, 'replay')) {\n throw new RateLimitError(rateLimits);\n }\n\n return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nexport class TransportStatusCodeError extends Error {\n public constructor(statusCode: number) {\n super(`Transport returned status code ${statusCode}`);\n }\n}\n\n/**\n * This error indicates that we hit a rate limit API error.\n */\nexport class RateLimitError extends Error {\n public rateLimits: RateLimits;\n\n public constructor(rateLimits: RateLimits) {\n super('Rate limit hit');\n this.rateLimits = rateLimits;\n }\n}\n","import type { ReplayRecordingData } from '@sentry/types';\n\n/**\n * Prepare the recording data ready to be sent.\n */\nexport function prepareRecordingData({\n recordingData,\n headers,\n}: {\n recordingData: ReplayRecordingData;\n headers: Record;\n}): ReplayRecordingData {\n let payloadWithSequence;\n\n // XXX: newline is needed to separate sequence id from events\n const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n if (typeof recordingData === 'string') {\n payloadWithSequence = `${replayHeaders}${recordingData}`;\n } else {\n const enc = new TextEncoder();\n // XXX: newline is needed to separate sequence id from events\n const sequence = enc.encode(replayHeaders);\n // Merge the two Uint8Arrays\n payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n payloadWithSequence.set(sequence);\n payloadWithSequence.set(recordingData, sequence.length);\n }\n\n return payloadWithSequence;\n}\n","import type { IntegrationIndex, Scope } from '@sentry/core';\nimport { getIsolationScope } from '@sentry/core';\nimport { prepareEvent } from '@sentry/core';\nimport type { Client, EventHint, ReplayEvent } from '@sentry/types';\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nexport async function prepareReplayEvent({\n client,\n scope,\n replayId: event_id,\n event,\n}: {\n client: Client & { _integrations?: IntegrationIndex };\n scope: Scope;\n replayId: string;\n event: ReplayEvent;\n}): Promise {\n const integrations =\n typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n ? Object.keys(client._integrations)\n : undefined;\n\n const eventHint: EventHint = { event_id, integrations };\n\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) as ReplayEvent | null;\n\n // If e.g. a global event processor returned null\n if (!preparedEvent) {\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n const metadata = client.getSdkMetadata && client.getSdkMetadata();\n const { name, version } = (metadata && metadata.sdk) || {};\n\n preparedEvent.sdk = {\n ...preparedEvent.sdk,\n name: name || 'sentry.javascript.unknown',\n version: version || '0.0.0',\n };\n\n return preparedEvent;\n}\n","import type { DsnComponents, ReplayEnvelope, ReplayEvent, ReplayRecordingData } from '@sentry/types';\nimport { createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader } from '@sentry/utils';\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nexport function createReplayEnvelope(\n replayEvent: ReplayEvent,\n recordingData: ReplayRecordingData,\n dsn: DsnComponents,\n tunnel?: string,\n): ReplayEnvelope {\n return createEnvelope(\n createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n [\n [{ type: 'replay_event' }, replayEvent],\n [\n {\n type: 'replay_recording',\n // If string then we need to encode to UTF8, otherwise will have\n // wrong size. TextEncoder has similar browser support to\n // MutationObserver, although it does not accept IE11.\n length:\n typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n },\n recordingData,\n ],\n ],\n );\n}\n","import { captureException, setContext } from '@sentry/core';\n\nimport { RETRY_BASE_INTERVAL, RETRY_MAX_COUNT, UNABLE_TO_SEND_REPLAY } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { SendReplayData } from '../types';\nimport { RateLimitError, TransportStatusCodeError, sendReplayRequest } from './sendReplayRequest';\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nexport async function sendReplay(\n replayData: SendReplayData,\n retryConfig = {\n count: 0,\n interval: RETRY_BASE_INTERVAL,\n },\n): Promise {\n const { recordingData, options } = replayData;\n\n // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n if (!recordingData.length) {\n return;\n }\n\n try {\n await sendReplayRequest(replayData);\n return true;\n } catch (err) {\n if (err instanceof TransportStatusCodeError || err instanceof RateLimitError) {\n throw err;\n }\n\n // Capture error for every failed replay\n setContext('Replays', {\n _retryCount: retryConfig.count,\n });\n\n if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {\n captureException(err);\n }\n\n // If an error happened here, it's likely that uploading the attachment\n // failed, we'll can retry with the same events payload\n if (retryConfig.count >= RETRY_MAX_COUNT) {\n const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch {\n // nothing to do\n }\n\n throw error;\n }\n\n // will retry in intervals of 5, 10, 30\n retryConfig.interval *= ++retryConfig.count;\n\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n await sendReplay(replayData, retryConfig);\n resolve(true);\n } catch (err) {\n reject(err);\n }\n }, retryConfig.interval);\n });\n }\n}\n","export const THROTTLED = '__THROTTLED';\nexport const SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function throttle any>(\n fn: T,\n maxCount: number,\n durationSeconds: number,\n): (...rest: Parameters) => ReturnType | typeof THROTTLED | typeof SKIPPED {\n const counter = new Map();\n\n const _cleanup = (now: number): void => {\n const threshold = now - durationSeconds;\n counter.forEach((_value, key) => {\n if (key < threshold) {\n counter.delete(key);\n }\n });\n };\n\n const _getTotalCount = (): number => {\n return [...counter.values()].reduce((a, b) => a + b, 0);\n };\n\n let isThrottled = false;\n\n return (...rest: Parameters): ReturnType | typeof THROTTLED | typeof SKIPPED => {\n // Date in second-precision, which we use as basis for the throttling\n const now = Math.floor(Date.now() / 1000);\n\n // First, make sure to delete any old entries\n _cleanup(now);\n\n // If already over limit, do nothing\n if (_getTotalCount() >= maxCount) {\n const wasThrottled = isThrottled;\n isThrottled = true;\n return wasThrottled ? SKIPPED : THROTTLED;\n }\n\n isThrottled = false;\n const count = counter.get(now) || 0;\n counter.set(now, count + 1);\n\n return fn(...rest);\n };\n}\n","/* eslint-disable max-lines */ // TODO: We might want to split this file up\nimport { EventType, record } from '@sentry-internal/rrweb';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n captureException,\n getClient,\n getCurrentScope,\n spanToJSON,\n} from '@sentry/core';\nimport type { ReplayRecordingMode, Transaction } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport {\n BUFFER_CHECKOUT_TIME,\n SESSION_IDLE_EXPIRE_DURATION,\n SESSION_IDLE_PAUSE_DURATION,\n SLOW_CLICK_SCROLL_TIMEOUT,\n SLOW_CLICK_THRESHOLD,\n WINDOW,\n} from './constants';\nimport { ClickDetector } from './coreHandlers/handleClick';\nimport { handleKeyboardEvent } from './coreHandlers/handleKeyboardEvent';\nimport { setupPerformanceObserver } from './coreHandlers/performanceObserver';\nimport { DEBUG_BUILD } from './debug-build';\nimport { createEventBuffer } from './eventBuffer';\nimport { clearSession } from './session/clearSession';\nimport { loadOrCreateSession } from './session/loadOrCreateSession';\nimport { saveSession } from './session/saveSession';\nimport { shouldRefreshSession } from './session/shouldRefreshSession';\nimport type {\n AddEventResult,\n AddUpdateCallback,\n AllPerformanceEntry,\n AllPerformanceEntryData,\n EventBuffer,\n InternalEventContext,\n PopEventContext,\n RecordingEvent,\n RecordingOptions,\n ReplayBreadcrumbFrame,\n ReplayCanvasIntegrationOptions,\n ReplayContainer as ReplayContainerInterface,\n ReplayPerformanceEntry,\n ReplayPluginOptions,\n SendBufferedReplayOptions,\n Session,\n SlowClickConfig,\n Timeouts,\n} from './types';\nimport { ReplayEventTypeCustom } from './types';\nimport { addEvent, addEventSync } from './util/addEvent';\nimport { addGlobalListeners } from './util/addGlobalListeners';\nimport { addMemoryEntry } from './util/addMemoryEntry';\nimport { createBreadcrumb } from './util/createBreadcrumb';\nimport { createPerformanceEntries } from './util/createPerformanceEntries';\nimport { createPerformanceSpans } from './util/createPerformanceSpans';\nimport { debounce } from './util/debounce';\nimport { getHandleRecordingEmit } from './util/handleRecordingEmit';\nimport { isExpired } from './util/isExpired';\nimport { isSessionExpired } from './util/isSessionExpired';\nimport { logInfo, logInfoNextTick } from './util/log';\nimport { sendReplay } from './util/sendReplay';\nimport type { SKIPPED } from './util/throttle';\nimport { THROTTLED, throttle } from './util/throttle';\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nexport class ReplayContainer implements ReplayContainerInterface {\n public eventBuffer: EventBuffer | null;\n\n public performanceEntries: AllPerformanceEntry[];\n\n public replayPerformanceEntries: ReplayPerformanceEntry[];\n\n public session: Session | undefined;\n\n public clickDetector: ClickDetector | undefined;\n\n /**\n * Recording can happen in one of three modes:\n * - session: Record the whole session, sending it continuously\n * - buffer: Always keep the last 60s of recording, requires:\n * - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n * - or calling `flush()` to send the replay\n */\n public recordingMode: ReplayRecordingMode;\n\n /**\n * The current or last active transcation.\n * This is only available when performance is enabled.\n */\n public lastTransaction?: Transaction;\n\n /**\n * These are here so we can overwrite them in tests etc.\n * @hidden\n */\n public readonly timeouts: Timeouts;\n\n private _throttledAddEvent: (\n event: RecordingEvent,\n isCheckout?: boolean,\n ) => typeof THROTTLED | typeof SKIPPED | Promise;\n\n /**\n * Options to pass to `rrweb.record()`\n */\n private readonly _recordingOptions: RecordingOptions;\n\n private readonly _options: ReplayPluginOptions;\n\n private _performanceCleanupCallback?: () => void;\n\n private _debouncedFlush: ReturnType;\n private _flushLock: Promise | undefined;\n\n /**\n * Timestamp of the last user activity. This lives across sessions.\n */\n private _lastActivity: number;\n\n /**\n * Is the integration currently active?\n */\n private _isEnabled: boolean;\n\n /**\n * Paused is a state where:\n * - DOM Recording is not listening at all\n * - Nothing will be added to event buffer (e.g. core SDK events)\n */\n private _isPaused: boolean;\n\n /**\n * Have we attached listeners to the core SDK?\n * Note we have to track this as there is no way to remove instrumentation handlers.\n */\n private _hasInitializedCoreListeners: boolean;\n\n /**\n * Function to stop recording\n */\n private _stopRecording: ReturnType | undefined;\n\n private _context: InternalEventContext;\n\n /**\n * Internal use for canvas recording options\n */\n private _canvas: ReplayCanvasIntegrationOptions | undefined;\n\n public constructor({\n options,\n recordingOptions,\n }: {\n options: ReplayPluginOptions;\n recordingOptions: RecordingOptions;\n }) {\n this.eventBuffer = null;\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n this.recordingMode = 'session';\n this.timeouts = {\n sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n } as const;\n this._lastActivity = Date.now();\n this._isEnabled = false;\n this._isPaused = false;\n this._hasInitializedCoreListeners = false;\n this._context = {\n errorIds: new Set(),\n traceIds: new Set(),\n urls: [],\n initialTimestamp: Date.now(),\n initialUrl: '',\n };\n\n this._recordingOptions = recordingOptions;\n this._options = options;\n\n this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n maxWait: this._options.flushMaxDelay,\n });\n\n this._throttledAddEvent = throttle(\n (event: RecordingEvent, isCheckout?: boolean) => addEvent(this, event, isCheckout),\n // Max 300 events...\n 300,\n // ... per 5s\n 5,\n );\n\n const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n const slowClickConfig: SlowClickConfig | undefined = slowClickTimeout\n ? {\n threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n timeout: slowClickTimeout,\n scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n }\n : undefined;\n\n if (slowClickConfig) {\n this.clickDetector = new ClickDetector(this, slowClickConfig);\n }\n }\n\n /** Get the event context. */\n public getContext(): InternalEventContext {\n return this._context;\n }\n\n /** If recording is currently enabled. */\n public isEnabled(): boolean {\n return this._isEnabled;\n }\n\n /** If recording is currently paused. */\n public isPaused(): boolean {\n return this._isPaused;\n }\n\n /**\n * Determine if canvas recording is enabled\n */\n public isRecordingCanvas(): boolean {\n return Boolean(this._canvas);\n }\n\n /** Get the replay integration options. */\n public getOptions(): ReplayPluginOptions {\n return this._options;\n }\n\n /**\n * Initializes the plugin based on sampling configuration. Should not be\n * called outside of constructor.\n */\n public initializeSampling(previousSessionId?: string): void {\n const { errorSampleRate, sessionSampleRate } = this._options;\n\n // If neither sample rate is > 0, then do nothing - user will need to call one of\n // `start()` or `startBuffering` themselves.\n if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n return;\n }\n\n // Otherwise if there is _any_ sample rate set, try to load an existing\n // session, or create a new one.\n this._initializeSessionForSampling(previousSessionId);\n\n if (!this.session) {\n // This should not happen, something wrong has occurred\n this._handleException(new Error('Unable to initialize and create session'));\n return;\n }\n\n if (this.session.sampled === false) {\n // This should only occur if `errorSampleRate` is 0 and was unsampled for\n // session-based replay. In this case there is nothing to do.\n return;\n }\n\n // If segmentId > 0, it means we've previously already captured this session\n // In this case, we still want to continue in `session` recording mode\n this.recordingMode = this.session.sampled === 'buffer' && this.session.segmentId === 0 ? 'buffer' : 'session';\n\n logInfoNextTick(\n `[Replay] Starting replay in ${this.recordingMode} mode`,\n this._options._experiments.traceInternals,\n );\n\n this._initializeRecording();\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * _performanceObserver, Recording, Sentry SDK, etc)\n */\n public start(): void {\n if (this._isEnabled && this.recordingMode === 'session') {\n throw new Error('Replay recording is already in progress');\n }\n\n if (this._isEnabled && this.recordingMode === 'buffer') {\n throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n }\n\n logInfoNextTick('[Replay] Starting replay in session mode', this._options._experiments.traceInternals);\n\n const session = loadOrCreateSession(\n {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n // This is intentional: create a new session-based replay when calling `start()`\n sessionSampleRate: 1,\n allowBuffering: false,\n },\n );\n\n this.session = session;\n\n this._initializeRecording();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, an error occurs.\n */\n public startBuffering(): void {\n if (this._isEnabled) {\n throw new Error('Replay recording is already in progress');\n }\n\n logInfoNextTick('[Replay] Starting replay in buffer mode', this._options._experiments.traceInternals);\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: 0,\n allowBuffering: true,\n },\n );\n\n this.session = session;\n\n this.recordingMode = 'buffer';\n this._initializeRecording();\n }\n\n /**\n * Start recording.\n *\n * Note that this will cause a new DOM checkout\n */\n public startRecording(): void {\n try {\n const canvasOptions = this._canvas;\n\n this._stopRecording = record({\n ...this._recordingOptions,\n // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n // Without this, it would record forever, until an error happens, which we don't want\n // instead, we'll always keep the last 60 seconds of replay before an error happened\n ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n emit: getHandleRecordingEmit(this),\n onMutation: this._onMutationHandler,\n ...(canvasOptions\n ? {\n recordCanvas: canvasOptions.recordCanvas,\n getCanvasManager: canvasOptions.getCanvasManager,\n sampling: canvasOptions.sampling,\n dataURLOptions: canvasOptions.dataURLOptions,\n }\n : {}),\n });\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Stops the recording, if it was running.\n *\n * Returns true if it was previously stopped, or is now stopped,\n * otherwise false.\n */\n public stopRecording(): boolean {\n try {\n if (this._stopRecording) {\n this._stopRecording();\n this._stopRecording = undefined;\n }\n\n return true;\n } catch (err) {\n this._handleException(err);\n return false;\n }\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n public async stop({ forceFlush = false, reason }: { forceFlush?: boolean; reason?: string } = {}): Promise {\n if (!this._isEnabled) {\n return;\n }\n\n // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n // enter into an infinite loop when `stop()` is called while flushing.\n this._isEnabled = false;\n\n try {\n logInfo(\n `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`,\n this._options._experiments.traceInternals,\n );\n\n this._removeListeners();\n this.stopRecording();\n\n this._debouncedFlush.cancel();\n // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n // `_isEnabled` state of the plugin since it was disabled above.\n if (forceFlush) {\n await this._flush({ force: true });\n }\n\n // After flush, destroy event buffer\n this.eventBuffer && this.eventBuffer.destroy();\n this.eventBuffer = null;\n\n // Clear session from session storage, note this means if a new session\n // is started after, it will not have `previousSessionId`\n clearSession(this);\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Pause some replay functionality. See comments for `_isPaused`.\n * This differs from stop as this only stops DOM recording, it is\n * not as thorough of a shutdown as `stop()`.\n */\n public pause(): void {\n if (this._isPaused) {\n return;\n }\n\n this._isPaused = true;\n this.stopRecording();\n\n logInfo('[Replay] Pausing replay', this._options._experiments.traceInternals);\n }\n\n /**\n * Resumes recording, see notes for `pause().\n *\n * Note that calling `startRecording()` here will cause a\n * new DOM checkout.`\n */\n public resume(): void {\n if (!this._isPaused || !this._checkSession()) {\n return;\n }\n\n this._isPaused = false;\n this.startRecording();\n\n logInfo('[Replay] Resuming replay', this._options._experiments.traceInternals);\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n public async sendBufferedReplayOrFlush({ continueRecording = true }: SendBufferedReplayOptions = {}): Promise {\n if (this.recordingMode === 'session') {\n return this.flushImmediate();\n }\n\n const activityTime = Date.now();\n\n logInfo('[Replay] Converting buffer to session', this._options._experiments.traceInternals);\n\n // Allow flush to complete before resuming as a session recording, otherwise\n // the checkout from `startRecording` may be included in the payload.\n // Prefer to keep the error replay as a separate (and smaller) segment\n // than the session replay.\n await this.flushImmediate();\n\n const hasStoppedRecording = this.stopRecording();\n\n if (!continueRecording || !hasStoppedRecording) {\n return;\n }\n\n // To avoid race conditions where this is called multiple times, we check here again that we are still buffering\n if ((this.recordingMode as ReplayRecordingMode) === 'session') {\n return;\n }\n\n // Re-start recording in session-mode\n this.recordingMode = 'session';\n\n // Once this session ends, we do not want to refresh it\n if (this.session) {\n this._updateUserActivity(activityTime);\n this._updateSessionActivity(activityTime);\n this._maybeSaveSession();\n }\n\n this.startRecording();\n }\n\n /**\n * We want to batch uploads of replay events. Save events only if\n * `` milliseconds have elapsed since the last event\n * *OR* if `` milliseconds have elapsed.\n *\n * Accepts a callback to perform side-effects and returns true to stop batch\n * processing and hand back control to caller.\n */\n public addUpdate(cb: AddUpdateCallback): void {\n // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n const cbResult = cb();\n\n // If this option is turned on then we will only want to call `flush`\n // explicitly\n if (this.recordingMode === 'buffer') {\n return;\n }\n\n // If callback is true, we do not want to continue with flushing -- the\n // caller will need to handle it.\n if (cbResult === true) {\n return;\n }\n\n // addUpdate is called quite frequently - use _debouncedFlush so that it\n // respects the flush delays and does not flush immediately\n this._debouncedFlush();\n }\n\n /**\n * Updates the user activity timestamp and resumes recording. This should be\n * called in an event handler for a user action that we consider as the user\n * being \"active\" (e.g. a mouse click).\n */\n public triggerUserActivity(): void {\n this._updateUserActivity();\n\n // This case means that recording was once stopped due to inactivity.\n // Ensure that recording is resumed.\n if (!this._stopRecording) {\n // Create a new session, otherwise when the user action is flushed, it\n // will get rejected due to an expired session.\n if (!this._checkSession()) {\n return;\n }\n\n // Note: This will cause a new DOM checkout\n this.resume();\n return;\n }\n\n // Otherwise... recording was never suspended, continue as normalish\n this.checkAndHandleExpiredSession();\n\n this._updateSessionActivity();\n }\n\n /**\n * Updates the user activity timestamp *without* resuming\n * recording. Some user events (e.g. keydown) can be create\n * low-value replays that only contain the keypress as a\n * breadcrumb. Instead this would require other events to\n * create a new replay after a session has expired.\n */\n public updateUserActivity(): void {\n this._updateUserActivity();\n this._updateSessionActivity();\n }\n\n /**\n * Only flush if `this.recordingMode === 'session'`\n */\n public conditionalFlush(): Promise {\n if (this.recordingMode === 'buffer') {\n return Promise.resolve();\n }\n\n return this.flushImmediate();\n }\n\n /**\n * Flush using debounce flush\n */\n public flush(): Promise {\n return this._debouncedFlush() as Promise;\n }\n\n /**\n * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n * cases of mulitple flushes happening closely together.\n */\n public flushImmediate(): Promise {\n this._debouncedFlush();\n // `.flush` is provided by the debounced function, analogously to lodash.debounce\n return this._debouncedFlush.flush() as Promise;\n }\n\n /**\n * Cancels queued up flushes.\n */\n public cancelFlush(): void {\n this._debouncedFlush.cancel();\n }\n\n /** Get the current sesion (=replay) ID */\n public getSessionId(): string | undefined {\n return this.session && this.session.id;\n }\n\n /**\n * Checks if recording should be stopped due to user inactivity. Otherwise\n * check if session is expired and create a new session if so. Triggers a new\n * full snapshot on new session.\n *\n * Returns true if session is not expired, false otherwise.\n * @hidden\n */\n public checkAndHandleExpiredSession(): boolean | void {\n // Prevent starting a new session if the last user activity is older than\n // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n // session+recording. This creates noisy replays that do not have much\n // content in them.\n if (\n this._lastActivity &&\n isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n this.session &&\n this.session.sampled === 'session'\n ) {\n // Pause recording only for session-based replays. Otherwise, resuming\n // will create a new replay and will conflict with users who only choose\n // to record error-based replays only. (e.g. the resumed replay will not\n // contain a reference to an error)\n this.pause();\n return;\n }\n\n // --- There is recent user activity --- //\n // This will create a new session if expired, based on expiry length\n if (!this._checkSession()) {\n // Check session handles the refreshing itself\n return false;\n }\n\n return true;\n }\n\n /**\n * Capture some initial state that can change throughout the lifespan of the\n * replay. This is required because otherwise they would be captured at the\n * first flush.\n */\n public setInitialState(): void {\n const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n const url = `${WINDOW.location.origin}${urlPath}`;\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n // Reset _context as well\n this._clearContext();\n\n this._context.initialUrl = url;\n this._context.initialTimestamp = Date.now();\n this._context.urls.push(url);\n }\n\n /**\n * Add a breadcrumb event, that may be throttled.\n * If it was throttled, we add a custom breadcrumb to indicate that.\n */\n public throttledAddEvent(\n event: RecordingEvent,\n isCheckout?: boolean,\n ): typeof THROTTLED | typeof SKIPPED | Promise {\n const res = this._throttledAddEvent(event, isCheckout);\n\n // If this is THROTTLED, it means we have throttled the event for the first time\n // In this case, we want to add a breadcrumb indicating that something was skipped\n if (res === THROTTLED) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.throttled',\n });\n\n this.addUpdate(() => {\n // Return `false` if the event _was_ added, as that means we schedule a flush\n return !addEventSync(this, {\n type: ReplayEventTypeCustom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n metric: true,\n },\n });\n });\n }\n\n return res;\n }\n\n /**\n * This will get the parametrized route name of the current page.\n * This is only available if performance is enabled, and if an instrumented router is used.\n */\n public getCurrentRoute(): string | undefined {\n // eslint-disable-next-line deprecation/deprecation\n const lastTransaction = this.lastTransaction || getCurrentScope().getTransaction();\n\n const attributes = (lastTransaction && spanToJSON(lastTransaction).data) || {};\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n if (!lastTransaction || !source || !['route', 'custom'].includes(source)) {\n return undefined;\n }\n\n return spanToJSON(lastTransaction).description;\n }\n\n /**\n * Initialize and start all listeners to varying events (DOM,\n * Performance Observer, Recording, Sentry SDK, etc)\n */\n private _initializeRecording(): void {\n this.setInitialState();\n\n // this method is generally called on page load or manually - in both cases\n // we should treat it as an activity\n this._updateSessionActivity();\n\n this.eventBuffer = createEventBuffer({\n useCompression: this._options.useCompression,\n workerUrl: this._options.workerUrl,\n });\n\n this._removeListeners();\n this._addListeners();\n\n // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n this._isEnabled = true;\n this._isPaused = false;\n\n this.startRecording();\n }\n\n /** A wrapper to conditionally capture exceptions. */\n private _handleException(error: unknown): void {\n DEBUG_BUILD && logger.error('[Replay]', error);\n\n if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {\n captureException(error);\n }\n }\n\n /**\n * Loads (or refreshes) the current session.\n */\n private _initializeSessionForSampling(previousSessionId?: string): void {\n // Whenever there is _any_ error sample rate, we always allow buffering\n // Because we decide on sampling when an error occurs, we need to buffer at all times if sampling for errors\n const allowBuffering = this._options.errorSampleRate > 0;\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n previousSessionId,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: this._options.sessionSampleRate,\n allowBuffering,\n },\n );\n\n this.session = session;\n }\n\n /**\n * Checks and potentially refreshes the current session.\n * Returns false if session is not recorded.\n */\n private _checkSession(): boolean {\n // If there is no session yet, we do not want to refresh anything\n // This should generally not happen, but to be safe....\n if (!this.session) {\n return false;\n }\n\n const currentSession = this.session;\n\n if (\n shouldRefreshSession(currentSession, {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n })\n ) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._refreshSession(currentSession);\n return false;\n }\n\n return true;\n }\n\n /**\n * Refresh a session with a new one.\n * This stops the current session (without forcing a flush, as that would never work since we are expired),\n * and then does a new sampling based on the refreshed session.\n */\n private async _refreshSession(session: Session): Promise {\n if (!this._isEnabled) {\n return;\n }\n await this.stop({ reason: 'refresh session' });\n this.initializeSampling(session.id);\n }\n\n /**\n * Adds listeners to record events for the replay\n */\n private _addListeners(): void {\n try {\n WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n WINDOW.addEventListener('blur', this._handleWindowBlur);\n WINDOW.addEventListener('focus', this._handleWindowFocus);\n WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.addListeners();\n }\n\n // There is no way to remove these listeners, so ensure they are only added once\n if (!this._hasInitializedCoreListeners) {\n addGlobalListeners(this);\n\n this._hasInitializedCoreListeners = true;\n }\n } catch (err) {\n this._handleException(err);\n }\n\n this._performanceCleanupCallback = setupPerformanceObserver(this);\n }\n\n /**\n * Cleans up listeners that were created in `_addListeners`\n */\n private _removeListeners(): void {\n try {\n WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n WINDOW.removeEventListener('blur', this._handleWindowBlur);\n WINDOW.removeEventListener('focus', this._handleWindowFocus);\n WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.removeListeners();\n }\n\n if (this._performanceCleanupCallback) {\n this._performanceCleanupCallback();\n }\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Handle when visibility of the page content changes. Opening a new tab will\n * cause the state to change to hidden because of content of current page will\n * be hidden. Likewise, moving a different window to cover the contents of the\n * page will also trigger a change to a hidden state.\n */\n private _handleVisibilityChange: () => void = () => {\n if (WINDOW.document.visibilityState === 'visible') {\n this._doChangeToForegroundTasks();\n } else {\n this._doChangeToBackgroundTasks();\n }\n };\n\n /**\n * Handle when page is blurred\n */\n private _handleWindowBlur: () => void = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.blur',\n });\n\n // Do not count blur as a user action -- it's part of the process of them\n // leaving the page\n this._doChangeToBackgroundTasks(breadcrumb);\n };\n\n /**\n * Handle when page is focused\n */\n private _handleWindowFocus: () => void = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.focus',\n });\n\n // Do not count focus as a user action -- instead wait until they focus and\n // interactive with page\n this._doChangeToForegroundTasks(breadcrumb);\n };\n\n /** Ensure page remains active when a key is pressed. */\n private _handleKeyboardEvent: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n handleKeyboardEvent(this, event);\n };\n\n /**\n * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n */\n private _doChangeToBackgroundTasks(breadcrumb?: ReplayBreadcrumbFrame): void {\n if (!this.session) {\n return;\n }\n\n const expired = isSessionExpired(this.session, {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n });\n\n if (expired) {\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Send replay when the page/tab becomes hidden. There is no reason to send\n // replay if it becomes visible, since no actions we care about were done\n // while it was hidden\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void this.conditionalFlush();\n }\n\n /**\n * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n */\n private _doChangeToForegroundTasks(breadcrumb?: ReplayBreadcrumbFrame): void {\n if (!this.session) {\n return;\n }\n\n const isSessionActive = this.checkAndHandleExpiredSession();\n\n if (!isSessionActive) {\n // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n // ms, we will re-use the existing session, otherwise create a new\n // session\n logInfo('[Replay] Document has become active, but session has expired');\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n }\n\n /**\n * Update user activity (across session lifespans)\n */\n private _updateUserActivity(_lastActivity: number = Date.now()): void {\n this._lastActivity = _lastActivity;\n }\n\n /**\n * Updates the session's last activity timestamp\n */\n private _updateSessionActivity(_lastActivity: number = Date.now()): void {\n if (this.session) {\n this.session.lastActivity = _lastActivity;\n this._maybeSaveSession();\n }\n }\n\n /**\n * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n */\n private _createCustomBreadcrumb(breadcrumb: ReplayBreadcrumbFrame): void {\n this.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.throttledAddEvent({\n type: EventType.Custom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n },\n });\n });\n }\n\n /**\n * Observed performance events are added to `this.performanceEntries`. These\n * are included in the replay event before it is finished and sent to Sentry.\n */\n private _addPerformanceEntries(): Promise> {\n const performanceEntries = createPerformanceEntries(this.performanceEntries).concat(this.replayPerformanceEntries);\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n return Promise.all(createPerformanceSpans(this, performanceEntries));\n }\n\n /**\n * Clear _context\n */\n private _clearContext(): void {\n // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n this._context.errorIds.clear();\n this._context.traceIds.clear();\n this._context.urls = [];\n }\n\n /** Update the initial timestamp based on the buffer content. */\n private _updateInitialTimestampFromEventBuffer(): void {\n const { session, eventBuffer } = this;\n if (!session || !eventBuffer) {\n return;\n }\n\n // we only ever update this on the initial segment\n if (session.segmentId) {\n return;\n }\n\n const earliestEvent = eventBuffer.getEarliestTimestamp();\n if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n this._context.initialTimestamp = earliestEvent;\n }\n }\n\n /**\n * Return and clear _context\n */\n private _popEventContext(): PopEventContext {\n const _context = {\n initialTimestamp: this._context.initialTimestamp,\n initialUrl: this._context.initialUrl,\n errorIds: Array.from(this._context.errorIds),\n traceIds: Array.from(this._context.traceIds),\n urls: this._context.urls,\n };\n\n this._clearContext();\n\n return _context;\n }\n\n /**\n * Flushes replay event buffer to Sentry.\n *\n * Performance events are only added right before flushing - this is\n * due to the buffered performance observer events.\n *\n * Should never be called directly, only by `flush`\n */\n private async _runFlush(): Promise {\n const replayId = this.getSessionId();\n\n if (!this.session || !this.eventBuffer || !replayId) {\n DEBUG_BUILD && logger.error('[Replay] No session or eventBuffer found to flush.');\n return;\n }\n\n await this._addPerformanceEntries();\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n return;\n }\n\n // Only attach memory event if eventBuffer is not empty\n await addMemoryEntry(this);\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer) {\n return;\n }\n\n // if this changed in the meanwhile, e.g. because the session was refreshed or similar, we abort here\n if (replayId !== this.getSessionId()) {\n return;\n }\n\n try {\n // This uses the data from the eventBuffer, so we need to call this before `finish()\n this._updateInitialTimestampFromEventBuffer();\n\n const timestamp = Date.now();\n\n // Check total duration again, to avoid sending outdated stuff\n // We leave 30s wiggle room to accomodate late flushing etc.\n // This _could_ happen when the browser is suspended during flushing, in which case we just want to stop\n if (timestamp - this._context.initialTimestamp > this._options.maxReplayDuration + 30_000) {\n throw new Error('Session is too long, not sending replay');\n }\n\n const eventContext = this._popEventContext();\n // Always increment segmentId regardless of outcome of sending replay\n const segmentId = this.session.segmentId++;\n this._maybeSaveSession();\n\n // Note this empties the event buffer regardless of outcome of sending replay\n const recordingData = await this.eventBuffer.finish();\n\n await sendReplay({\n replayId,\n recordingData,\n segmentId,\n eventContext,\n session: this.session,\n options: this.getOptions(),\n timestamp,\n });\n } catch (err) {\n this._handleException(err);\n\n // This means we retried 3 times and all of them failed,\n // or we ran into a problem we don't want to retry, like rate limiting.\n // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'sendReplay' });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('send_error', 'replay');\n }\n }\n }\n\n /**\n * Flush recording data to Sentry. Creates a lock so that only a single flush\n * can be active at a time. Do not call this directly.\n */\n private _flush = async ({\n force = false,\n }: {\n /**\n * If true, flush while ignoring the `_isEnabled` state of\n * Replay integration. (By default, flush is noop if integration\n * is stopped).\n */\n force?: boolean;\n } = {}): Promise => {\n if (!this._isEnabled && !force) {\n // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n return;\n }\n\n if (!this.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.error('[Replay] Attempting to finish replay event after session expired.');\n return;\n }\n\n if (!this.session) {\n // should never happen, as we would have bailed out before\n return;\n }\n\n const start = this.session.started;\n const now = Date.now();\n const duration = now - start;\n\n // A flush is about to happen, cancel any queued flushes\n this._debouncedFlush.cancel();\n\n // If session is too short, or too long (allow some wiggle room over maxReplayDuration), do not send it\n // This _should_ not happen, but it may happen if flush is triggered due to a page activity change or similar\n const tooShort = duration < this._options.minReplayDuration;\n const tooLong = duration > this._options.maxReplayDuration + 5_000;\n if (tooShort || tooLong) {\n logInfo(\n `[Replay] Session duration (${Math.floor(duration / 1000)}s) is too ${\n tooShort ? 'short' : 'long'\n }, not sending replay.`,\n this._options._experiments.traceInternals,\n );\n\n if (tooShort) {\n this._debouncedFlush();\n }\n return;\n }\n\n const eventBuffer = this.eventBuffer;\n if (eventBuffer && this.session.segmentId === 0 && !eventBuffer.hasCheckout) {\n logInfo('[Replay] Flushing initial segment without checkout.', this._options._experiments.traceInternals);\n // TODO FN: Evaluate if we want to stop here, or remove this again?\n }\n\n // this._flushLock acts as a lock so that future calls to `_flush()`\n // will be blocked until this promise resolves\n if (!this._flushLock) {\n this._flushLock = this._runFlush();\n await this._flushLock;\n this._flushLock = undefined;\n return;\n }\n\n // Wait for previous flush to finish, then call the debounced `_flush()`.\n // It's possible there are other flush requests queued and waiting for it\n // to resolve. We want to reduce all outstanding requests (as well as any\n // new flush requests that occur within a second of the locked flush\n // completing) into a single flush.\n\n try {\n await this._flushLock;\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n } finally {\n this._debouncedFlush();\n }\n };\n\n /** Save the session, if it is sticky */\n private _maybeSaveSession(): void {\n if (this.session && this._options.stickySession) {\n saveSession(this.session);\n }\n }\n\n /** Handler for rrweb.record.onMutation */\n private _onMutationHandler = (mutations: unknown[]): boolean => {\n const count = mutations.length;\n\n const mutationLimit = this._options.mutationLimit;\n const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n const overMutationLimit = mutationLimit && count > mutationLimit;\n\n // Create a breadcrumb if a lot of mutations happen at the same time\n // We can show this in the UI as an information with potential performance improvements\n if (count > mutationBreadcrumbLimit || overMutationLimit) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.mutations',\n data: {\n count,\n limit: overMutationLimit,\n },\n });\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Stop replay if over the mutation limit\n if (overMutationLimit) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'mutationLimit', forceFlush: this.recordingMode === 'session' });\n return false;\n }\n\n // `true` means we use the regular mutation handling by rrweb\n return true;\n };\n}\n","type DebouncedCallback = {\n (): void | unknown;\n flush: () => void | unknown;\n cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = { maxWait?: number };\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n let callbackReturnValue: unknown;\n\n let timerId: ReturnType | undefined;\n let maxTimerId: ReturnType | undefined;\n\n const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n function invokeFunc(): unknown {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers(): void {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush(): unknown {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced(): unknown {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeout(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n","import { consoleSandbox } from '@sentry/utils';\n\nimport type { DeprecatedPrivacyOptions, ReplayIntegrationPrivacyOptions } from '../types';\n\ntype GetPrivacyOptions = Required> &\n Omit;\ninterface GetPrivacyReturn {\n maskTextSelector: string;\n unmaskTextSelector: string;\n blockSelector: string;\n unblockSelector: string;\n ignoreSelector: string;\n\n blockClass?: RegExp;\n maskTextClass?: RegExp;\n}\n\nfunction getOption(\n selectors: string[],\n defaultSelectors: string[],\n deprecatedClassOption?: string | RegExp,\n deprecatedSelectorOption?: string,\n): string {\n const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n const allSelectors = [\n ...selectors,\n // @deprecated\n ...deprecatedSelectors,\n\n // sentry defaults\n ...defaultSelectors,\n ];\n\n // @deprecated\n if (typeof deprecatedClassOption !== 'undefined') {\n // NOTE: No support for RegExp\n if (typeof deprecatedClassOption === 'string') {\n allSelectors.push(`.${deprecatedClassOption}`);\n }\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n );\n });\n }\n\n return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nexport function getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n}: GetPrivacyOptions): GetPrivacyReturn {\n const defaultBlockedElements = ['base[href=\"/\"]'];\n\n const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n const options: GetPrivacyReturn = {\n // We are making the decision to make text and input selectors the same\n maskTextSelector: maskSelector,\n unmaskTextSelector: unmaskSelector,\n\n blockSelector: getOption(\n block,\n ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n blockClass,\n blockSelector,\n ),\n unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n };\n\n if (blockClass instanceof RegExp) {\n options.blockClass = blockClass;\n }\n\n if (maskTextClass instanceof RegExp) {\n options.maskTextClass = maskTextClass;\n }\n\n return options;\n}\n","import { getClient } from '@sentry/core';\nimport type { BrowserClientReplayOptions, Integration, IntegrationFn } from '@sentry/types';\nimport { consoleSandbox, dropUndefinedKeys, isBrowser } from '@sentry/utils';\n\nimport {\n DEFAULT_FLUSH_MAX_DELAY,\n DEFAULT_FLUSH_MIN_DELAY,\n MAX_REPLAY_DURATION,\n MIN_REPLAY_DURATION,\n MIN_REPLAY_DURATION_LIMIT,\n} from './constants';\nimport { ReplayContainer } from './replay';\nimport type {\n RecordingOptions,\n ReplayCanvasIntegrationOptions,\n ReplayConfiguration,\n ReplayPluginOptions,\n SendBufferedReplayOptions,\n} from './types';\nimport { getPrivacyOptions } from './util/getPrivacyOptions';\nimport { maskAttribute } from './util/maskAttribute';\n\nconst MEDIA_SELECTORS =\n 'img,image,svg,video,object,picture,embed,map,audio,link[rel=\"icon\"],link[rel=\"apple-touch-icon\"]';\n\nconst DEFAULT_NETWORK_HEADERS = ['content-length', 'content-type', 'accept'];\n\nlet _initialized = false;\n\ntype InitialReplayPluginOptions = Omit &\n Partial>;\n\nexport const replayIntegration = ((options?: ReplayConfiguration) => {\n // eslint-disable-next-line deprecation/deprecation\n return new Replay(options);\n}) satisfies IntegrationFn;\n\n/**\n * The main replay integration class, to be passed to `init({ integrations: [] })`.\n * @deprecated Use `replayIntegration()` instead.\n */\nexport class Replay implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Replay';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n /**\n * Options to pass to `rrweb.record()`\n */\n private readonly _recordingOptions: RecordingOptions;\n\n /**\n * Initial options passed to the replay integration, merged with default values.\n * Note: `sessionSampleRate` and `errorSampleRate` are not required here, as they\n * can only be finally set when setupOnce() is called.\n *\n * @private\n */\n private readonly _initialOptions: InitialReplayPluginOptions;\n\n private _replay?: ReplayContainer;\n\n public constructor({\n flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,\n flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,\n minReplayDuration = MIN_REPLAY_DURATION,\n maxReplayDuration = MAX_REPLAY_DURATION,\n stickySession = true,\n useCompression = true,\n workerUrl,\n _experiments = {},\n sessionSampleRate,\n errorSampleRate,\n maskAllText = true,\n maskAllInputs = true,\n blockAllMedia = true,\n\n mutationBreadcrumbLimit = 750,\n mutationLimit = 10_000,\n\n slowClickTimeout = 7_000,\n slowClickIgnoreSelectors = [],\n\n networkDetailAllowUrls = [],\n networkDetailDenyUrls = [],\n networkCaptureBodies = true,\n networkRequestHeaders = [],\n networkResponseHeaders = [],\n\n mask = [],\n maskAttributes = ['title', 'placeholder'],\n unmask = [],\n block = [],\n unblock = [],\n ignore = [],\n maskFn,\n\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskInputOptions,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n }: ReplayConfiguration = {}) {\n // eslint-disable-next-line deprecation/deprecation\n this.name = Replay.id;\n\n const privacyOptions = getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n ignoreClass,\n });\n\n this._recordingOptions = {\n maskAllInputs,\n maskAllText,\n maskInputOptions: { ...(maskInputOptions || {}), password: true },\n maskTextFn: maskFn,\n maskInputFn: maskFn,\n maskAttributeFn: (key: string, value: string, el: HTMLElement): string =>\n maskAttribute({\n maskAttributes,\n maskAllText,\n privacyOptions,\n key,\n value,\n el,\n }),\n\n ...privacyOptions,\n\n // Our defaults\n slimDOMOptions: 'all',\n inlineStylesheet: true,\n // Disable inline images as it will increase segment/replay size\n inlineImages: false,\n // collect fonts, but be aware that `sentry.io` needs to be an allowed\n // origin for playback\n collectFonts: true,\n errorHandler: (err: Error & { __rrweb__?: boolean }) => {\n try {\n err.__rrweb__ = true;\n } catch (error) {\n // ignore errors here\n // this can happen if the error is frozen or does not allow mutation for other reasons\n }\n },\n };\n\n this._initialOptions = {\n flushMinDelay,\n flushMaxDelay,\n minReplayDuration: Math.min(minReplayDuration, MIN_REPLAY_DURATION_LIMIT),\n maxReplayDuration: Math.min(maxReplayDuration, MAX_REPLAY_DURATION),\n stickySession,\n sessionSampleRate,\n errorSampleRate,\n useCompression,\n workerUrl,\n blockAllMedia,\n maskAllInputs,\n maskAllText,\n mutationBreadcrumbLimit,\n mutationLimit,\n slowClickTimeout,\n slowClickIgnoreSelectors,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders: _getMergedNetworkHeaders(networkRequestHeaders),\n networkResponseHeaders: _getMergedNetworkHeaders(networkResponseHeaders),\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n _experiments,\n };\n\n if (typeof sessionSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`sessionSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysSessionSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,\n );\n\n this._initialOptions.sessionSampleRate = sessionSampleRate;\n }\n\n if (typeof errorSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`errorSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysOnErrorSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,\n );\n\n this._initialOptions.errorSampleRate = errorSampleRate;\n }\n\n if (this._initialOptions.blockAllMedia) {\n // `blockAllMedia` is a more user friendly option to configure blocking\n // embedded media elements\n this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector\n ? MEDIA_SELECTORS\n : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;\n }\n\n if (this._isInitialized && isBrowser()) {\n throw new Error('Multiple Sentry Session Replay instances are not supported');\n }\n\n this._isInitialized = true;\n }\n\n /** If replay has already been initialized */\n protected get _isInitialized(): boolean {\n return _initialized;\n }\n\n /** Update _isInitialized */\n protected set _isInitialized(value: boolean) {\n _initialized = value;\n }\n\n /**\n * Setup and initialize replay container\n */\n public setupOnce(): void {\n if (!isBrowser()) {\n return;\n }\n\n this._setup();\n\n // Once upon a time, we tried to create a transaction in `setupOnce` and it would\n // potentially create a transaction before some native SDK integrations have run\n // and applied their own global event processor. An example is:\n // https://github.com/getsentry/sentry-javascript/blob/b47ceafbdac7f8b99093ce6023726ad4687edc48/packages/browser/src/integrations/useragent.ts\n //\n // So we call `this._initialize()` in next event loop as a workaround to wait for other\n // global event processors to finish. This is no longer needed, but keeping it\n // here to avoid any future issues.\n setTimeout(() => this._initialize());\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * PerformanceObserver, Recording, Sentry SDK, etc)\n */\n public start(): void {\n if (!this._replay) {\n return;\n }\n\n this._replay.start();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, until an error occurs.\n */\n public startBuffering(): void {\n if (!this._replay) {\n return;\n }\n\n this._replay.startBuffering();\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n public stop(): Promise {\n if (!this._replay) {\n return Promise.resolve();\n }\n\n return this._replay.stop({ forceFlush: this._replay.recordingMode === 'session' });\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n public flush(options?: SendBufferedReplayOptions): Promise {\n if (!this._replay || !this._replay.isEnabled()) {\n return Promise.resolve();\n }\n\n return this._replay.sendBufferedReplayOrFlush(options);\n }\n\n /**\n * Get the current session ID.\n */\n public getReplayId(): string | undefined {\n if (!this._replay || !this._replay.isEnabled()) {\n return;\n }\n\n return this._replay.getSessionId();\n }\n\n /**\n * Initializes replay.\n */\n protected _initialize(): void {\n if (!this._replay) {\n return;\n }\n\n // We have to run this in _initialize, because this runs in setTimeout\n // So when this runs all integrations have been added\n // Before this, we cannot access integrations on the client,\n // so we need to mutate the options here\n this._maybeLoadFromReplayCanvasIntegration();\n\n this._replay.initializeSampling();\n }\n\n /** Setup the integration. */\n private _setup(): void {\n // Client is not available in constructor, so we need to wait until setupOnce\n const finalOptions = loadReplayOptionsFromClient(this._initialOptions);\n\n this._replay = new ReplayContainer({\n options: finalOptions,\n recordingOptions: this._recordingOptions,\n });\n }\n\n /** Get canvas options from ReplayCanvas integration, if it is also added. */\n private _maybeLoadFromReplayCanvasIntegration(): void {\n // To save bundle size, we skip checking for stuff here\n // and instead just try-catch everything - as generally this should all be defined\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n try {\n const client = getClient()!;\n const canvasIntegration = client.getIntegrationByName!('ReplayCanvas') as Integration & {\n getOptions(): ReplayCanvasIntegrationOptions;\n };\n if (!canvasIntegration) {\n return;\n }\n\n this._replay!['_canvas'] = canvasIntegration.getOptions();\n } catch {\n // ignore errors here\n }\n /* eslint-enable @typescript-eslint/no-non-null-assertion */\n }\n}\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions: InitialReplayPluginOptions): ReplayPluginOptions {\n const client = getClient();\n const opt = client && (client.getOptions() as BrowserClientReplayOptions);\n\n const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };\n\n if (!opt) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('SDK client is not available.');\n });\n return finalOptions;\n }\n\n if (\n initialOptions.sessionSampleRate == null && // TODO remove once deprecated rates are removed\n initialOptions.errorSampleRate == null && // TODO remove once deprecated rates are removed\n opt.replaysSessionSampleRate == null &&\n opt.replaysOnErrorSampleRate == null\n ) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n 'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',\n );\n });\n }\n\n if (typeof opt.replaysSessionSampleRate === 'number') {\n finalOptions.sessionSampleRate = opt.replaysSessionSampleRate;\n }\n\n if (typeof opt.replaysOnErrorSampleRate === 'number') {\n finalOptions.errorSampleRate = opt.replaysOnErrorSampleRate;\n }\n\n return finalOptions;\n}\n\nfunction _getMergedNetworkHeaders(headers: string[]): string[] {\n return [...DEFAULT_NETWORK_HEADERS, ...headers.map(header => header.toLowerCase())];\n}\n","import type { getPrivacyOptions } from './getPrivacyOptions';\n\ninterface MaskAttributeParams {\n maskAttributes: string[];\n maskAllText: boolean;\n privacyOptions: ReturnType;\n key: string;\n value: string;\n el: HTMLElement;\n}\n\n/**\n * Masks an attribute if necessary, otherwise return attribute value as-is.\n */\nexport function maskAttribute({\n el,\n key,\n maskAttributes,\n maskAllText,\n privacyOptions,\n value,\n}: MaskAttributeParams): string {\n // We only mask attributes if `maskAllText` is true\n if (!maskAllText) {\n return value;\n }\n\n // unmaskTextSelector takes precendence\n if (privacyOptions.unmaskTextSelector && el.matches(privacyOptions.unmaskTextSelector)) {\n return value;\n }\n\n if (\n maskAttributes.includes(key) ||\n // Need to mask `value` attribute for `` if it's a button-like\n // type\n (key === 'value' && el.tagName === 'INPUT' && ['submit', 'button'].includes(el.getAttribute('type') || ''))\n ) {\n return value.replace(/[\\S]/g, '*');\n }\n\n return value;\n}\n","import { getClient } from '@sentry/core';\nimport type { replayIntegration } from '../integration';\n\n/**\n * This is a small utility to get a type-safe instance of the Replay integration.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getReplay(): ReturnType | undefined {\n const client = getClient();\n return (\n client && client.getIntegrationByName && client.getIntegrationByName>('Replay')\n );\n}\n","/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return args.map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction getNormalizedContextName(contextType) {\r\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\r\n}\r\nfunction initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, setPreserveDrawingBufferToTrue) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, unblockSelector, true)) {\r\n const ctxName = getNormalizedContextName(contextType);\r\n if (!('__context' in this))\r\n this.__context = ctxName;\r\n if (setPreserveDrawingBufferToTrue &&\r\n ['webgl', 'webgl2'].includes(ctxName)) {\r\n if (args[0] && typeof args[0] === 'object') {\r\n const contextAttributes = args[0];\r\n if (!contextAttributes.preserveDrawingBuffer) {\r\n contextAttributes.preserveDrawingBuffer = true;\r\n }\r\n }\r\n else {\r\n args.splice(0, 1, {\r\n preserveDrawingBuffer: true,\r\n });\r\n }\r\n }\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/rrweb-types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, unblockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if ('tagName' in this.canvas &&\r\n !isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\r\n const recordArgs = serializeArgs(args, win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, unblockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, unblockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, unblockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/rrweb-types.js';\nimport { patch, isBlocked, setTimeout, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector, unblockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs(args, win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import r from './image-bitmap-data-url-worker.js';\n\nfunction t(){const t=new Blob([r]);return URL.createObjectURL(t)}\n\nexport { t as getImageBitmapDataUrlWorkerURL };\n","var r = `for(var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",t=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s=\"\";for(a=0;a>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+\"=\":r%3==1&&(s=s.substring(0,s.length-2)+\"==\"),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!(\"OffscreenCanvas\"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+\"-\"+t;if(\"OffscreenCanvas\"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext(\"2d\");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return\"\"}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext(\"bitmaprenderer\"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:\"low\"});w.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};`;\n\nexport { r as default };\n","import { CanvasManager } from '@sentry-internal/rrweb';\nimport { convertIntegrationFnToClass, defineIntegration } from '@sentry/core';\nimport type { InternalCanvasManagerInterface, InternalCanvasManagerOptions } from '@sentry/replay';\nimport type { Integration, IntegrationClass, IntegrationFn } from '@sentry/types';\n\ninterface ReplayCanvasOptions {\n enableManualSnapshot?: boolean;\n maxCanvasSize?: [width: number, height: number];\n quality: 'low' | 'medium' | 'high';\n}\n\ntype GetCanvasManager = (options: InternalCanvasManagerOptions) => InternalCanvasManagerInterface;\nexport interface ReplayCanvasIntegrationOptions {\n enableManualSnapshot?: boolean;\n maxCanvasSize?: number;\n recordCanvas: true;\n getCanvasManager: GetCanvasManager;\n sampling: {\n canvas: number;\n };\n dataURLOptions: {\n type: string;\n quality: number;\n };\n}\n\nconst CANVAS_QUALITY = {\n low: {\n sampling: {\n canvas: 1,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.25,\n },\n },\n medium: {\n sampling: {\n canvas: 2,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.4,\n },\n },\n high: {\n sampling: {\n canvas: 4,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.5,\n },\n },\n};\n\nconst INTEGRATION_NAME = 'ReplayCanvas';\nconst DEFAULT_MAX_CANVAS_SIZE = 1280;\n\n/** Exported only for type safe tests. */\nexport const _replayCanvasIntegration = ((options: Partial = {}) => {\n const [maxCanvasWidth, maxCanvasHeight] = options.maxCanvasSize || [];\n const _canvasOptions = {\n quality: options.quality || 'medium',\n enableManualSnapshot: options.enableManualSnapshot,\n maxCanvasSize: [\n maxCanvasWidth ? Math.min(maxCanvasWidth, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n maxCanvasHeight ? Math.min(maxCanvasHeight, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n ] as [number, number],\n };\n\n let canvasManagerResolve: (value: CanvasManager) => void;\n const _canvasManager: Promise = new Promise(resolve => (canvasManagerResolve = resolve));\n\n return {\n name: INTEGRATION_NAME,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setupOnce() {},\n getOptions(): ReplayCanvasIntegrationOptions {\n const { quality, enableManualSnapshot, maxCanvasSize } = _canvasOptions;\n\n return {\n enableManualSnapshot,\n recordCanvas: true,\n getCanvasManager: (getCanvasManagerOptions: InternalCanvasManagerOptions) => {\n const manager = new CanvasManager({\n ...getCanvasManagerOptions,\n enableManualSnapshot,\n maxCanvasSize,\n errorHandler: (err: unknown) => {\n try {\n if (typeof err === 'object') {\n (err as Error & { __rrweb__?: boolean }).__rrweb__ = true;\n }\n } catch (error) {\n // ignore errors here\n // this can happen if the error is frozen or does not allow mutation for other reasons\n }\n },\n });\n canvasManagerResolve(manager);\n return manager;\n },\n ...(CANVAS_QUALITY[quality || 'medium'] || CANVAS_QUALITY.medium),\n };\n },\n async snapshot(canvasElement?: HTMLCanvasElement) {\n const canvasManager = await _canvasManager;\n canvasManager.snapshot(canvasElement);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Add this in addition to `replayIntegration()` to enable canvas recording.\n */\nexport const replayCanvasIntegration = defineIntegration(_replayCanvasIntegration);\n\n/**\n * @deprecated Use `replayCanvasIntegration()` instead\n */\n// eslint-disable-next-line deprecation/deprecation\nexport const ReplayCanvas = convertIntegrationFnToClass(INTEGRATION_NAME, replayCanvasIntegration) as IntegrationClass<\n Integration & {\n getOptions: () => ReplayCanvasIntegrationOptions;\n }\n>;\n","import { createEventEnvelope, getClient, withScope } from '@sentry/core';\nimport type { FeedbackEvent, TransportMakeRequestResponse } from '@sentry/types';\n\nimport { FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE } from '../constants';\nimport type { SendFeedbackData, SendFeedbackOptions } from '../types';\nimport { prepareFeedbackEvent } from './prepareFeedbackEvent';\n\n/**\n * Send feedback using transport\n */\nexport async function sendFeedbackRequest(\n { feedback: { message, email, name, source, url } }: SendFeedbackData,\n { includeReplay = true }: SendFeedbackOptions = {},\n): Promise {\n const client = getClient();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn) {\n return;\n }\n\n const baseEvent: FeedbackEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n },\n },\n type: 'feedback',\n };\n\n return withScope(async scope => {\n // No use for breadcrumbs in feedback\n scope.clearBreadcrumbs();\n\n if ([FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE].includes(String(source))) {\n scope.setLevel('info');\n }\n\n const feedbackEvent = await prepareFeedbackEvent({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n scope: scope as any,\n client,\n event: baseEvent,\n });\n\n if (!feedbackEvent) {\n return;\n }\n\n if (client.emit) {\n client.emit('beforeSendFeedback', feedbackEvent, { includeReplay: Boolean(includeReplay) });\n }\n\n const envelope = createEventEnvelope(feedbackEvent, dsn, client.getOptions()._metadata, client.getOptions().tunnel);\n\n let response: void | TransportMakeRequestResponse;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error('Unable to send Feedback');\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return;\n }\n\n // Require valid status codes, otherwise can assume feedback was not sent successfully\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new Error('Unable to send Feedback');\n }\n\n return response;\n });\n}\n\n/*\n * For reference, the fully built event looks something like this:\n * {\n * \"type\": \"feedback\",\n * \"event_id\": \"d2132d31b39445f1938d7e21b6bf0ec4\",\n * \"timestamp\": 1597977777.6189718,\n * \"dist\": \"1.12\",\n * \"platform\": \"javascript\",\n * \"environment\": \"production\",\n * \"release\": 42,\n * \"tags\": {\"transaction\": \"/organizations/:orgId/performance/:eventSlug/\"},\n * \"sdk\": {\"name\": \"name\", \"version\": \"version\"},\n * \"user\": {\n * \"id\": \"123\",\n * \"username\": \"user\",\n * \"email\": \"user@site.com\",\n * \"ip_address\": \"192.168.11.12\",\n * },\n * \"request\": {\n * \"url\": None,\n * \"headers\": {\n * \"user-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15\"\n * },\n * },\n * \"contexts\": {\n * \"feedback\": {\n * \"message\": \"test message\",\n * \"contact_email\": \"test@example.com\",\n * \"type\": \"feedback\",\n * },\n * \"trace\": {\n * \"trace_id\": \"4C79F60C11214EB38604F4AE0781BFB2\",\n * \"span_id\": \"FA90FDEAD5F74052\",\n * \"type\": \"trace\",\n * },\n * \"replay\": {\n * \"replay_id\": \"e2d42047b1c5431c8cba85ee2a8ab25d\",\n * },\n * },\n * }\n */\n","import type { Scope } from '@sentry/core';\nimport { getIsolationScope } from '@sentry/core';\nimport { prepareEvent } from '@sentry/core';\nimport type { Client, FeedbackEvent } from '@sentry/types';\n\ninterface PrepareFeedbackEventParams {\n client: Client;\n event: FeedbackEvent;\n scope: Scope;\n}\n/**\n * Prepare a feedback event & enrich it with the SDK metadata.\n */\nexport async function prepareFeedbackEvent({\n client,\n scope,\n event,\n}: PrepareFeedbackEventParams): Promise {\n const eventHint = {};\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) as FeedbackEvent | null;\n\n if (preparedEvent === null) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'feedback', event);\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n return preparedEvent;\n}\n","import { getLocationHref } from '@sentry/utils';\n\nimport { FEEDBACK_API_SOURCE } from './constants';\nimport type { SendFeedbackOptions } from './types';\nimport { sendFeedbackRequest } from './util/sendFeedbackRequest';\n\ninterface SendFeedbackParams {\n message: string;\n name?: string;\n email?: string;\n url?: string;\n source?: string;\n}\n\n/**\n * Public API to send a Feedback item to Sentry\n */\nexport function sendFeedback(\n { name, email, message, source = FEEDBACK_API_SOURCE, url = getLocationHref() }: SendFeedbackParams,\n options: SendFeedbackOptions = {},\n): ReturnType {\n if (!message) {\n throw new Error('Unable to submit feedback with empty message');\n }\n\n return sendFeedbackRequest(\n {\n feedback: {\n name,\n email,\n message,\n url,\n source,\n },\n },\n options,\n );\n}\n","import type { FeedbackInternalOptions, OptionalFeedbackConfiguration } from '../types';\n\n/**\n * Quick and dirty deep merge for the Feedback integration options\n */\nexport function mergeOptions(\n defaultOptions: FeedbackInternalOptions,\n optionOverrides: OptionalFeedbackConfiguration,\n): FeedbackInternalOptions {\n return {\n ...defaultOptions,\n ...optionOverrides,\n themeDark: {\n ...defaultOptions.themeDark,\n ...optionOverrides.themeDark,\n },\n themeLight: {\n ...defaultOptions.themeLight,\n ...optionOverrides.themeLight,\n },\n };\n}\n","import type { FeedbackTheme, FeedbackThemes } from '../types';\n\nfunction getThemedCssVariables(theme: FeedbackTheme): string {\n return `\n --background: ${theme.background};\n --background-hover: ${theme.backgroundHover};\n --foreground: ${theme.foreground};\n --error: ${theme.error};\n --success: ${theme.success};\n --border: ${theme.border};\n --border-radius: ${theme.borderRadius};\n --box-shadow: ${theme.boxShadow};\n\n --submit-background: ${theme.submitBackground};\n --submit-background-hover: ${theme.submitBackgroundHover};\n --submit-border: ${theme.submitBorder};\n --submit-outline-focus: ${theme.submitOutlineFocus};\n --submit-foreground: ${theme.submitForeground};\n --submit-foreground-hover: ${theme.submitForegroundHover};\n\n --cancel-background: ${theme.cancelBackground};\n --cancel-background-hover: ${theme.cancelBackgroundHover};\n --cancel-border: ${theme.cancelBorder};\n --cancel-outline-focus: ${theme.cancelOutlineFocus};\n --cancel-foreground: ${theme.cancelForeground};\n --cancel-foreground-hover: ${theme.cancelForegroundHover};\n\n --input-background: ${theme.inputBackground};\n --input-foreground: ${theme.inputForeground};\n --input-border: ${theme.inputBorder};\n --input-outline-focus: ${theme.inputOutlineFocus};\n\n --form-border-radius: ${theme.formBorderRadius};\n --form-content-border-radius: ${theme.formContentBorderRadius};\n `;\n}\n\n/**\n * Creates ")},this.getStyleTags=function(){if(e.sealed)throw Dn(2);return e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)throw Dn(2);var n=((t={})[qt]="",t[zt]=$t,t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=Wn();return r&&(n.nonce=r),[o().createElement("style",(0,x.Cl)({},n,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new Qn({isServer:!0}),this.sealed=!1}e.prototype.collectStyles=function(e){if(this.sealed)throw Dn(2);return o().createElement(ur,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw Dn(3)}})(),"__sc-".concat(qt,"__");var Rr,Ir=n(23479);function Ar(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Pr(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}var Ur,Hr,Wr,Vr=function(e){for(var t=[],n=1;nr.right&&(r.right=s.right),s.bottom>r.bottom&&(r.bottom=s.bottom),s.leftt},io=function(e,t){return e>t},ao=function(e){return e<0?0:e};var so,uo,co,lo,fo,ho=Cr.div(ro||(ro=Br(["\n --reactour-accent: ",";\n ","\n position: fixed;\n transition: transform 0.3s;\n top: 0;\n left: 0;\n z-index: 1000000;\n\n transform: ",";\n"])),(function(e){return e.accentColor}),(function(e){return e.defaultStyles?"\n max-width: 331px;\n min-width: 150px;\n padding-right: 40px;\n border-radius: ".concat(e.rounded,"px;\n background-color: #fff;\n padding: 24px 30px;\n box-shadow: 0 0.5em 3em rgba(0, 0, 0, 0.3);\n color: inherit;\n "):""}),(function(e){var t=e.targetTop,n=e.targetRight,r=e.targetBottom,o=e.targetLeft,i=e.windowWidth,a=e.windowHeight,s=e.helperWidth,u=e.helperHeight,c=e.helperPosition,l=e.padding,d={left:o,right:i-n,top:t,bottom:a-r},f=function(e){return d[e]>(function(e){return/(left|right)/.test(e)}(e)?s+2*l:u+2*l)},h=function(e){for(var t,n=(t=d,Object.keys(t).map((function(e){return{position:e,value:t[e]}})).sort((function(e,t){return t.value-e.value})).map((function(e){return e.position}))),r=0;rl?v:l,m=io(t+u,a)?io(r+l,a)?r-u:r-u+l:t-l,b=m>l?m:l,y={top:[g,t-u-2*l],right:[n+2*l,b],bottom:[g,r+2*l],left:[o-s-2*l,b],center:[i/2-s/2,a/2-u/2]};return"center"===e||f(e)?y[e]:h(y)}(c);return"translate(".concat(Math.round(p[0]),"px, ").concat(Math.round(p[1]),"px)")})),po=Cr.span(so||(so=Br(["\n position: absolute;\n font-family: monospace;\n background: var(--reactour-accent);\n background: ",";\n height: 1.875em;\n line-height: 2;\n padding-left: 0.8125em;\n padding-right: 0.8125em;\n font-size: 1em;\n border-radius: 1.625em;\n color: white;\n text-align: center;\n box-shadow: 0 0.25em 0.5em rgba(0, 0, 0, 0.3);\n top: -0.8125em;\n left: -0.8125em;\n"])),(function(e){return e.accentColor})),vo=Cr.div(uo||(uo=Br(["\n display: flex;\n margin-top: 24px;\n align-items: center;\n justify-content: center;\n"]))),go=Cr.nav(co||(co=Br(["\n counter-reset: dot;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n"]))),mo=Cr.button(lo||(lo=Br(["\n counter-increment: dot;\n width: 8px;\n height: 8px;\n border: ",";\n\n border-radius: 100%;\n padding: 0;\n display: block;\n margin: 4px;\n transition: opacity 0.3s, transform 0.3s;\n cursor: ",";\n transform: scale(",");\n\n color: ",";\n background: ",";\n\n color: ",";\n background: ",";\n\n &:before {\n content: counter(dot);\n position: absolute;\n bottom: calc(100% + 0.25em);\n left: 50%;\n opacity: 0;\n transform: translate(-50%, 1em);\n transition: 0.3s;\n display: ",";\n }\n\n &:hover {\n background-color: currentColor;\n\n &:before {\n opacity: 0.5;\n transform: translate(-50%, -2px);\n }\n }\n"])),(function(e){return e.current===e.index?"0":"1px solid #caccce"}),(function(e){return e.disabled?"not-allowed":"pointer"}),(function(e){return e.current===e.index?1.25:1}),(function(e){return e.current===e.index?"var(--reactour-accent)":"#caccce"}),(function(e){return e.current===e.index?"var(--reactour-accent)":"none"}),(function(e){return e.current===e.index?e.accentColor:"#caccce"}),(function(e){return e.current===e.index?e.accentColor:"none"}),(function(e){return e.showNumber?"block":"none"})),bo=Cr.div(fo||(fo=Br(["\n opacity: ",";\n color: ",";\n width: 100%;\n left: 0;\n top: 0;\n height: 100%;\n position: fixed;\n z-index: 99999;\n pointer-events: none;\n"])),(function(e){return!e.maskClassName&&.7}),(function(e){return!e.maskClassName&&"#000"}));function yo(e){var t=e.windowWidth,n=e.windowHeight,r=e.targetWidth,i=e.targetHeight,a=e.targetTop,s=e.targetLeft,u=e.padding,c=e.rounded,l=e.roundedStep,d=e.disableInteraction,f=e.disableInteractionClassName,h=e.className,p=e.onClick,v=e.highlightedBorder,g=ao(r+2*u),m=ao(i+2*u),b=ao(a-u),y=ao(s-u),w=l?Math.min(g/2,m/2):c;return o().createElement(bo,{onClick:p,maskClassName:h},o().createElement("svg",{width:t,height:n,xmlns:"http://www.w3.org/2000/svg",className:h},o().createElement("defs",null,o().createElement("mask",{id:"mask-main"},o().createElement("rect",{x:0,y:0,width:t,height:n,fill:"white"}),o().createElement("rect",{x:y,y:b,width:g,height:m,fill:"black"}),o().createElement("rect",{x:y-1,y:b-1,width:w,height:w,fill:"white"}),o().createElement("circle",{cx:y+w,cy:b+w,r:w,fill:"black"}),o().createElement("rect",{x:y+g-w+1,y:b-1,width:w,height:w,fill:"white"}),o().createElement("circle",{cx:y+g-w,cy:b+w,r:w,fill:"black"}),o().createElement("rect",{x:y-1,y:b+m-w+1,width:w,height:w,fill:"white"}),o().createElement("circle",{cx:y+w,cy:b+m-w,r:w,fill:"black"}),o().createElement("rect",{x:y+g-w+1,y:b+m-w+1,width:w,height:w,fill:"white"}),o().createElement("circle",{cx:y+g-w,cy:b+m-w,r:w,fill:"black "})),o().createElement("clipPath",{id:"clip-path"},o().createElement("rect",{x:0,y:0,width:t,height:b}),o().createElement("rect",{x:0,y:b,width:y,height:m}),o().createElement("rect",{x:s+r+u,y:b,width:ao(t-r-y),height:m}),o().createElement("rect",{x:0,y:a+i+u,width:t,height:ao(n-i-b)}))),o().createElement("rect",{x:0,y:0,width:t,height:n,fill:"currentColor",mask:"url(#mask-main)"}),o().createElement("rect",{x:0,y:0,width:t,height:n,fill:"currentColor",clipPath:"url(#clip-path)",pointerEvents:"auto"}),o().createElement("rect",{x:y,y:b,width:g,height:m,pointerEvents:"auto",fill:"transparent",display:d?"block":"none",className:f}),v&&o().createElement("rect",{x:ao(y+v.width/2),y:ao(b+v.width/2),width:ao(g-v.width),height:ao(m-v.width),pointerEvents:"auto",fill:"none",strokeWidth:v.width,stroke:v.color,rx:w-2})))}yo.propTypes={windowWidth:g().number.isRequired,windowHeight:g().number.isRequired,targetWidth:g().number.isRequired,targetHeight:g().number.isRequired,targetTop:g().number.isRequired,targetLeft:g().number.isRequired,padding:g().number.isRequired,rounded:g().number.isRequired,roundedStep:g().bool,disableInteraction:g().bool.isRequired,disableInteractionClassName:g().string.isRequired,highlightedBorder:g().shape({color:g().string.isRequired,width:g().number.isRequired})};var wo=function(e){var t=e.step,n=e.refresh,o=qr((0,r.useState)(0),2),i=o[0],a=o[1];return(0,r.useEffect)((function(){if(t.resizeObservables){var e=function(e){var n,r=$r(e);try{var o=function(){var e=n.value;if(!e.attributes)return"continue";var r=t.resizeObservables.find((function(t){return e.matches(t)||null!=e.querySelector(t)}));r&&a(i+1)};for(r.s();!(n=r.n()).done;)o()}catch(s){r.e(s)}finally{r.f()}},n=new MutationObserver((function(t){var n,r=$r(t);try{for(r.s();!(n=r.n()).done;){var o=n.value;0!==o.addedNodes.length&&e(o.addedNodes),0!==o.removedNodes.length&&e(o.removedNodes)}}catch(i){r.e(i)}finally{r.f()}})),r=document.documentElement||document.body;return n.observe(r,{childList:!0,subtree:!0}),function(){n.disconnect()}}}),[t,i]),(0,r.useEffect)((function(){if(t.resizeObservables){var e,r=new ResizeObserver((function(e){n()})),o=$r(t.resizeObservables);try{for(o.s();!(e=o.n()).done;){var i=e.value,a=document.querySelector(i);a&&r.observe(a)}}catch(s){o.e(s)}finally{o.f()}return function(){r.disconnect()}}}),[t,i]),null},_o=function(e){var t=e.step,n=e.refresh;return(0,r.useEffect)((function(){if(t.mutationObservables){var e=function(e){var r,o=$r(e);try{var i=function(){var e=r.value;if(!e.attributes)return"continue";var o=t.mutationObservables.find((function(t){return e.matches(t)||null!=e.querySelector(t)}));o&&n()};for(o.s();!(r=o.n()).done;)i()}catch(a){o.e(a)}finally{o.f()}},r=new MutationObserver((function(t){var n,r=$r(t);try{for(r.s();!(n=r.n()).done;){var o=n.value;0!==o.addedNodes.length&&e(o.addedNodes),0!==o.removedNodes.length&&e(o.removedNodes)}}catch(i){r.e(i)}finally{r.f()}})),o=document.documentElement||document.body;return r.observe(o,{childList:!0,subtree:!0}),function(){r.disconnect()}}}),[t]),null};function So(e){var t=e.children,n=(0,r.useRef)(null);return null===n.current&&(n.current=document.createElement("div"),n.current.setAttribute("id","___reactour")),(0,r.useEffect)((function(){return document.body.appendChild(n.current),function(){document.body.removeChild(n.current)}}),[n]),(0,Ir.createPortal)(t,n.current)}var Eo={disableFocusLock:g().bool,badgeContent:g().func,highlightedMaskClassName:g().string,children:g().oneOfType([g().node,g().element]),className:g().string,closeButtonAriaLabel:g().string,closeWithMask:g().bool,inViewThreshold:g().number,isOpen:g().bool.isRequired,lastStepNextButton:g().node,maskClassName:g().string,maskSpace:g().number,nextButton:g().node,onAfterOpen:g().func,onBeforeClose:g().func,onRequestClose:g().func,prevButton:g().node,scrollDuration:g().number,scrollOffset:g().number,showButtons:g().bool,showCloseButton:g().bool,showNavigation:g().bool,showNavigationNumber:g().bool,showNumber:g().bool,startAt:g().number,goToStep:g().number,getCurrentStep:g().func,nextStep:g().func,prevStep:g().func,steps:g().arrayOf(g().shape({selector:g().string,content:g().oneOfType([g().node,g().element,g().func]).isRequired,position:g().oneOfType([g().arrayOf(g().number),g().oneOf(["top","right","bottom","left","center"])]),action:g().func,style:g().object,stepInteraction:g().bool,navDotAriaLabel:g().string,roundedStep:g().bool})),update:g().string,updateDelay:g().number,disableInteraction:g().bool,disableDotsNavigation:g().bool,disableKeyboardNavigation:g().oneOfType([g().arrayOf(g().oneOf(["esc","right","left"])),g().bool]),rounded:g().number,accentColor:g().string,highlightedBorder:g().shape({color:g().string.isRequired,width:g().number.isRequired})},Oo={base:"reactour__mask",isOpen:"reactour__mask--is-open",disableInteraction:"reactour__mask--disable-interaction"},xo={base:"reactour__helper",isOpen:"reactour__helper--is-open"},Co={base:"reactour__dot",active:"reactour__dot--is-active"},To=function(e){!function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Mr(e,t)}(c,e);var t,n,i,s=Lr(c);function c(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c),Nr(jr(e=s.call(this)),"unlockFocus",(function(t){e.setState({focusUnlocked:!0},t())})),Nr(jr(e),"showStep",(function(){if(e.helper&&e.helper.current){var t=e.props.steps,n=e.state,r=n.current;n.focusUnlocked&&e.setState({focusUnlocked:!1});var o=t[r],i=o.selector?document.querySelector(o.selector):null,a=function(t){o.action&&"function"===typeof o.action&&e.unlockFocus((function(){return o.action(t)}))};if(o.observe){var s=document.querySelector(o.observe),u={attributes:!0,childList:!0,characterData:!0};e.setState((function(t){return t.observer&&setTimeout((function(){t.observer.disconnect()}),0),{observer:new MutationObserver((function(t){t.forEach((function(t){if("childList"===t.type&&t.addedNodes.length>0){var n=function(){return a(t.addedNodes[0])};setTimeout((function(){return e.calculateNode(t.addedNodes[0],o,n)}),100)}else if("childList"===t.type&&t.removedNodes.length>0){e.calculateNode(i,o,(function(){return a(i)}))}}))}))}}),(function(){return e.state.observer.observe(s,u)}))}else e.state.observer&&(e.state.observer.disconnect(),e.setState({observer:null}));if(i){e.calculateNode(i,o,(function(){return a(i)}))}else e.setState(Ro(null,o,e.helper.current),a),o.selector&&console.warn("Doesn't find a DOM node '".concat(o.selector,"'. Please check the 'steps' Tour prop Array at position ").concat(r,"."))}})),Nr(jr(e),"calculateNode",(function(t,n,r){var o=e.props,i=o.scrollDuration,a=o.inViewThreshold,s=o.scrollOffset,c=to(t,n),d=Math.max(document.documentElement.clientWidth,window.innerWidth||0),f=Math.max(document.documentElement.clientHeight,window.innerHeight||0);if(function(e){var t=e.top,n=e.right,r=e.bottom,o=e.left,i=e.w,a=e.h,s=e.threshold,u=void 0===s?0:s;return t>=0+u&&o>=0+u&&r<=a-u&&n<=i-u}(Pr(Pr({},c),{},{w:d,h:f,threshold:a})))e.setState(Ro(t,n,e.helper.current),r);else{var h=l()(t),p=s||(c.height>f?-25:-f/2+c.height/2);u().to(t,{context:no(h)?window:h,duration:i,offset:p,callback:function(t){e.setState(Ro(t,n,e.helper.current),r)}})}})),Nr(jr(e),"recalculateNode",(function(t){var n=document.querySelector(t.selector);e.calculateNode(n,t,(function(){return function(n){t.action&&"function"===typeof t.action&&e.unlockFocus((function(){return t.action(n)}))}(n)}))})),Nr(jr(e),"maskClickHandler",(function(t){var n=e.props,r=n.closeWithMask,o=n.onRequestClose;r&&!t.target.classList.contains(Oo.disableInteraction)&&o(t)})),Nr(jr(e),"nextStep",(function(){var t=e.props,n=t.steps,r=t.getCurrentStep;e.setState((function(e){var t=e.current0?e.current-1:e.current;return"function"===typeof t&&t(n),{current:n}}),e.showStep)})),Nr(jr(e),"gotoStep",(function(t){var n=e.props,r=n.steps,o=n.getCurrentStep;e.setState((function(e){var n=r[t]?t:e.current;return"function"===typeof o&&o(n),{current:n}}),e.showStep)})),Nr(jr(e),"keyDownHandler",(function(t){var n,r,o,i=e.props,a=i.onRequestClose,s=i.nextStep,u=i.prevStep,c=i.disableKeyboardNavigation;(t.stopPropagation(),!0!==c)&&(c&&(n=c.includes("esc"),r=c.includes("right"),o=c.includes("left")),27!==t.keyCode||n||(t.preventDefault(),a()),39!==t.keyCode||r||(t.preventDefault(),"function"===typeof s?s():e.nextStep()),37!==t.keyCode||o||(t.preventDefault(),"function"===typeof u?u():e.prevStep()))})),e.state={isOpen:!1,current:0,top:0,right:0,bottom:0,left:0,width:0,height:0,w:0,h:0,inDOM:!1,observer:null,focusUnlocked:!1},e.helper=(0,r.createRef)(),e.helperElement=null,e.debouncedShowStep=f()(e.showStep,70),e}return t=c,(n=[{key:"componentDidMount",value:function(){var e=this.props,t=e.isOpen,n=e.startAt;t&&this.open(n)}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=this.props,n=t.isOpen,r=t.update,o=t.updateDelay;!n&&e.isOpen?this.open(e.startAt):n&&!e.isOpen&&this.close(),n&&r!==e.update&&(e.steps[this.state.current]?setTimeout(this.showStep,o):this.props.onRequestClose()),n&&e.isOpen&&this.state.current!==e.goToStep&&this.gotoStep(e.goToStep)}},{key:"componentWillUnmount",value:function(){this.props.isOpen&&this.close(),this.state.observer&&this.state.observer.disconnect()}},{key:"open",value:function(e){var t=this,n=this.props.onAfterOpen;this.setState((function(t){return{isOpen:!0,current:void 0!==e?e:t.current}}),(function(){setTimeout(t.showStep,1),t.helperElement=t.helper.current,t.props.disableFocusLock||t.helper.current.focus(),n&&n(t.helperElement)})),window.addEventListener("resize",this.debouncedShowStep,!1),window.addEventListener("keydown",this.keyDownHandler,!1)}},{key:"close",value:function(){this.setState((function(e){return e.observer&&e.observer.disconnect(),{isOpen:!1,observer:null}}),this.onBeforeClose),window.removeEventListener("resize",this.debouncedShowStep),window.removeEventListener("keydown",this.keyDownHandler)}},{key:"onBeforeClose",value:function(){var e=this.props.onBeforeClose;e&&e(this.helperElement)}},{key:"render",value:function(){var e=this,t=this.props,n=t.className,r=t.steps,i=t.maskClassName,s=t.showButtons,u=t.showCloseButton,c=t.closeButtonAriaLabel,l=t.showNavigation,d=t.showNavigationNumber,f=t.showNumber,h=t.onRequestClose,p=t.maskSpace,v=t.lastStepNextButton,g=t.nextButton,m=t.prevButton,b=t.badgeContent,y=t.highlightedMaskClassName,w=t.disableInteraction,_=t.disableDotsNavigation,S=t.nextStep,E=t.prevStep,O=t.rounded,x=t.accentColor,C=t.CustomHelper,T=t.disableFocusLock,R=t.highlightedBorder,I=this.state,A=I.isOpen,P=I.current,k=I.inDOM,N=I.top,D=I.right,M=I.bottom,j=I.left,L=I.width,B=I.height,q=I.w,F=I.h,z=I.helperWidth,$=I.helperHeight,U=I.helperPosition;return A?o().createElement(So,null,o().createElement(Vr,null),o().createElement(wo,{step:r[P],refresh:function(){return e.recalculateNode(r[P])}}),o().createElement(_o,{step:r[P],refresh:function(){return e.recalculateNode(r[P])}}),o().createElement(yo,{onClick:this.maskClickHandler,forwardRef:function(t){return e.mask=t},windowWidth:q,windowHeight:F,targetWidth:L,targetHeight:B,targetTop:N,targetLeft:j,padding:p,rounded:O,roundedStep:r[P].roundedStep,className:i,disableInteraction:!1===r[P].stepInteraction||w?!r[P].stepInteraction:w,disableInteractionClassName:"".concat(Oo.disableInteraction," ").concat(y),highlightedBorder:R}),o().createElement(Me,{disabled:T,autoFocus:!1},o().createElement(ho,{ref:this.helper,targetHeight:B,targetWidth:L,targetTop:N,targetRight:D,targetBottom:M,targetLeft:j,windowWidth:q,windowHeight:F,helperWidth:z,helperHeight:$,helperPosition:U,padding:p,tabIndex:-1,current:P,style:r[P].style?r[P].style:{},rounded:O,className:a()(xo.base,n,Nr({},xo.isOpen,A)),accentColor:x,defaultStyles:!C,role:"dialog"},C?o().createElement(C,{current:P,totalSteps:r.length,gotoStep:this.gotoStep,close:h,content:r[P]&&("function"===typeof r[P].content?r[P].content({close:h,goTo:this.gotoStep,inDOM:k,step:P+1}):r[P].content)},this.props.children):o().createElement(o().Fragment,null,this.props.children,r[P]&&("function"===typeof r[P].content?r[P].content({close:h,goTo:this.gotoStep,inDOM:k,step:P+1}):r[P].content),f&&o().createElement(po,{"data-tour-elem":"badge",accentColor:x},"function"===typeof b?b(P+1,r.length):P+1),(s||l)&&o().createElement(vo,{"data-tour-elem":"controls"},s&&o().createElement(Jr,{onClick:"function"===typeof E?E:this.prevStep,disabled:0===P,label:m||null}),l&&o().createElement(go,{"data-tour-elem":"navigation"},r.map((function(t,n){return o().createElement(mo,{key:"".concat(t.selector?t.selector:"undef","_").concat(n),onClick:function(){return e.gotoStep(n)},current:P,index:n,accentColor:x,disabled:P===n||_,showNumber:d,"data-tour-elem":"dot",className:a()(Co.base,Nr({},Co.active,P===n)),"aria-label":t.navDotAriaLabel})}))),s&&o().createElement(Jr,{onClick:P===r.length-1?v?h:function(){}:"function"===typeof S?S:this.nextStep,disabled:!v&&P===r.length-1,inverted:!0,label:v&&P===r.length-1?v:g||null})),u&&o().createElement(Zr,{onClick:h,className:"reactour__close",ariaLabel:c}))))):null}}])&&kr(t.prototype,n),i&&kr(t,i),c}(r.Component),Ro=function(e,t,n){if(n){var r=Math.max(document.documentElement.clientWidth,window.innerWidth||0),o=Math.max(document.documentElement.clientHeight,window.innerHeight||0),i=eo(n),a=i.width,s=i.height,u={top:o+10,right:r/2+9,bottom:o/2+9,left:r/2-a/2,width:0,height:0,w:r,h:o,helperPosition:"center"};return e&&(u=to(e,t)),function(){return Pr(Pr({w:r,h:o,helperWidth:a,helperHeight:s,helperPosition:t.position},u),{},{inDOM:!!e})}}};To.propTypes=Eo,To.defaultProps={disableFocusLock:!1,showNavigation:!0,showNavigationNumber:!0,showButtons:!0,showCloseButton:!0,closeButtonAriaLabel:"Close",showNumber:!0,scrollDuration:1,maskSpace:10,updateDelay:1,disableInteraction:!1,rounded:0,accentColor:"#007aff",closeWithMask:!0};const Io=To},83967:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.query,n=void 0===t?'[href^="#"]:not([href="#"]':t,r=e.match,i=void 0===r?function(e){return document.getElementById(e.hash.substring(1))}:r,s=e.hashChange,u=void 0===s||s,c=e.scrollSmoothConfig,l=document.querySelectorAll(n),d=function(e){e.preventDefault();var t=i(e.target);t&&(u&&history.replaceState(null,null,"#"+t.id),(0,a.default)(t,o({},c)))};Array.from(l).map((function(e){e.addEventListener("click",d,!1)}))},e.exports=t.default},26299:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(56576)),o=n(13696),i=s(n(83967)),a=s(n(61155));function s(e){return e&&e.__esModule?e:{default:e}}t.default={to:r.default,calcEndPoint:o.calcEndPoint,anchorScroll:i.default,observe:a.default},e.exports=t.default},61155:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.activeClass,n=void 0===t?"active":t,r=e.query,o=void 0===r?'[href^="#"]:not([href="#"]):not([href="#0"])':r,i=e.threshold,a=void 0===i?[.25,.5,.75]:i,s=e.detectType,u=void 0===s?"max":s,c={threshold:a},l=function(e){return e.classList.remove(n)},d=function(e){document.querySelectorAll("."+n).forEach(l),document.querySelector('a[href="#'+e.id+'"]').classList.add(n)},f=document.querySelectorAll(o),h=new IntersectionObserver((function(e){e.forEach((function(e){e.intersectionRatio>=Math[u].apply(Math,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(13696);t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.duration,i=void 0===n?500:n,a=t.context,s=void 0===a?window:a,u=t.offset,c=void 0===u?0:u,l=t.ease,d=void 0===l?"easeInOutCubic":l,f=t.callback;if("object"===("undefined"===typeof window?"undefined":r(window))){var h=null!==s.scrollTop&&void 0!==s.scrollTop?s.scrollTop:window.pageYOffset,p=(0,o.calcEndPoint)(e,s,c),v=performance.now(),g=window.requestAnimationFrame;!function t(){var n=performance.now()-v,r=(0,o.setPosition)(h,p,n,i,d);s!==window?s.scrollTop=r:window.scroll(0,r),n>i?"function"===typeof f&&f(e):g(t)}()}},e.exports=t.default},13696:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=t.easeFunctions={linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return--e*e*e+1},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1- --e*e*e*e},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1+--e*e*e*e*e},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e}},r=t.isNumeric=function(e){return!isNaN(parseFloat(e))&&isFinite(e)};t.setPosition=function(e,t,r,o){return r>o?t:e+(t-e)*n[arguments.length>4&&void 0!==arguments[4]?arguments[4]:"easeInOutCubic"](r/o)},t.calcEndPoint=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(r(e))return parseInt(e)+n;var o=t===window||t===document.documentElement?window.pageYOffset:t.scrollTop-t.getBoundingClientRect().top;return("html"===e.nodeName.toLowerCase()?-o:e.getBoundingClientRect().top+o)+n}},89496:function(e,t){var n,r,o;r=[],void 0===(o="function"===typeof(n=function(){var e=/(auto|scroll)/,t=function(e,n){return null===e.parentNode?n:t(e.parentNode,n.concat([e]))},n=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},r=function(e){return n(e,"overflow")+n(e,"overflow-y")+n(e,"overflow-x")},o=function(t){return e.test(r(t))};return function(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var n=t(e.parentNode,[]),r=0;r{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!==typeof e||!e||"object"!==typeof t||!t)return!1;var i=Object.keys(e),a=Object.keys(t);if(i.length!==a.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),u=0;u{!function(){"use strict";var t=Math.PI,n=Math.sin,r=Math.cos,o=Math.tan,i=Math.asin,a=Math.atan2,s=Math.acos,u=t/180,c=864e5,l=2440588,d=2451545;function f(e){return new Date((e+.5-l)*c)}function h(e){return function(e){return e.valueOf()/c-.5+l}(e)-d}var p=23.4397*u;function v(e,t){return a(n(e)*r(p)-o(t)*n(p),r(e))}function g(e,t){return i(n(t)*r(p)+r(t)*n(p)*n(e))}function m(e,t,i){return a(n(e),r(e)*n(t)-o(i)*r(t))}function b(e,t,o){return i(n(t)*n(o)+r(t)*r(o)*r(e))}function y(e,t){return u*(280.16+360.9856235*e)-t}function w(e){return u*(357.5291+.98560028*e)}function _(e){return e+u*(1.9148*n(e)+.02*n(2*e)+3e-4*n(3*e))+102.9372*u+t}function S(e){var t=_(w(e));return{dec:g(t,0),ra:v(t,0)}}var E={getPosition:function(e,t,n){var r=u*-n,o=u*t,i=h(e),a=S(i),s=y(i,r)-a.ra;return{azimuth:m(s,o,a.dec),altitude:b(s,o,a.dec)}}},O=E.times=[[-.833,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];E.addTime=function(e,t,n){O.push([e,t,n])};var x=9e-4;function C(e,n,r){return x+(e+n)/(2*t)+r}function T(e,t,r){return d+e+.0053*n(t)-.0069*n(2*r)}function R(e,t,o,i,a,u,c){var l=function(e,t,o){return s((n(e)-n(t)*n(o))/(r(t)*r(o)))}(e,o,i);return T(C(l,t,a),u,c)}function I(e){var t=u*(134.963+13.064993*e),o=u*(93.272+13.22935*e),i=u*(218.316+13.176396*e)+6.289*u*n(t),a=5.128*u*n(o),s=385001-20905*r(t);return{ra:v(i,a),dec:g(i,a),dist:s}}function A(e,t){return new Date(e.valueOf()+t*c/24)}E.getTimes=function(e,n,r){var o,i,a,s,c,l=u*-r,d=u*n,p=function(e,n){return Math.round(e-x-n/(2*t))}(h(e),l),v=C(0,l,p),m=w(v),b=_(m),y=g(b,0),S=T(v,m,b),E={solarNoon:f(S),nadir:f(S+.5)};for(o=0,i=O.length;o=0&&(g=f-(b=Math.sqrt(p)/(2*Math.abs(l))),m=f+b,Math.abs(g)<=1&&v++,Math.abs(m)<=1&&v++,g<-1&&(g=m)),1===v?w<0?s=_+g:c=_+g:2===v&&(s=_+(h<0?m:g),c=_+(h<0?g:m)),!s||!c);_+=2)w=a;var S={};return s&&(S.rise=A(o,s)),c&&(S.set=A(o,c)),s||c||(S[h>0?"alwaysUp":"alwaysDown"]=!0),S},e.exports=E}()},73798:()=>{},92027:(e,t,n)=>{"use strict";function r(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;or})},74271:(e,t,n)=>{"use strict";function r(e,t,n,r){let o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!==typeof e||!e||"object"!==typeof t||!t)return!1;const i=Object.keys(e),a=Object.keys(t);if(i.length!==a.length)return!1;const s=Object.prototype.hasOwnProperty.bind(t);for(let u=0;ur})},39161:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>er});var r={};n.r(r),n.d(r,{APIConnectionError:()=>E,APIConnectionTimeoutError:()=>O,APIError:()=>_,APIUserAbortError:()=>S,AuthenticationError:()=>C,BadRequestError:()=>x,ConflictError:()=>I,InternalServerError:()=>k,NotFoundError:()=>R,OpenAIError:()=>w,PermissionDeniedError:()=>T,RateLimitError:()=>P,UnprocessableEntityError:()=>A});const o="4.43.0";let i,a,s,u,c,l,d,f,h,p=!1,v=null,g=null,m=null,b=null;class y{constructor(e){this.body=e}get[Symbol.toStringTag](){return"MultipartBody"}}i||function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{auto:!1};if(p)throw new Error("you must `import 'openai/shims/".concat(e.kind,"'` before importing anything else from openai"));if(i)throw new Error("can't `import 'openai/shims/".concat(e.kind,"'` after `import 'openai/shims/").concat(i,"'`"));p=t.auto,i=e.kind,a=e.fetch,v=e.Request,g=e.Response,m=e.Headers,s=e.FormData,b=e.Blob,u=e.File,c=e.ReadableStream,l=e.getMultipartRequestOptions,d=e.getDefaultAgent,f=e.fileFromPath,h=e.isFsReadStream}(function(){let{manuallyImported:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e?"You may need to use polyfills":"Add one of these imports before your first `import \u2026 from 'openai'`:\n- `import 'openai/shims/node'` (if you're running on Node)\n- `import 'openai/shims/web'` (otherwise)\n";let n,r,o,i;try{n=fetch,r=Request,o=Response,i=Headers}catch(a){throw new Error("this environment is missing the following Web Fetch API type: ".concat(a.message,". ").concat(t))}return{kind:"web",fetch:n,Request:r,Response:o,Headers:i,FormData:"undefined"!==typeof FormData?FormData:class{constructor(){throw new Error("file uploads aren't supported in this environment yet as 'FormData' is undefined. ".concat(t))}},Blob:"undefined"!==typeof Blob?Blob:class{constructor(){throw new Error("file uploads aren't supported in this environment yet as 'Blob' is undefined. ".concat(t))}},File:"undefined"!==typeof File?File:class{constructor(){throw new Error("file uploads aren't supported in this environment yet as 'File' is undefined. ".concat(t))}},ReadableStream:"undefined"!==typeof ReadableStream?ReadableStream:class{constructor(){throw new Error("streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ".concat(t))}},getMultipartRequestOptions:async(e,t)=>({...t,body:new y(e)}),getDefaultAgent:e=>{},fileFromPath:()=>{throw new Error("The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/openai/openai-node#file-uploads")},isFsReadStream:e=>!1}}(),{auto:!0});class w extends Error{}class _ extends w{constructor(e,t,n,r){super("".concat(_.makeMessage(e,t,n))),this.status=e,this.headers=r,this.request_id=null===r||void 0===r?void 0:r["x-request-id"];const o=t;this.error=o,this.code=null===o||void 0===o?void 0:o.code,this.param=null===o||void 0===o?void 0:o.param,this.type=null===o||void 0===o?void 0:o.type}static makeMessage(e,t,n){const r=null!==t&&void 0!==t&&t.message?"string"===typeof t.message?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?"".concat(e," ").concat(r):e?"".concat(e," status code (no body)"):r||"(no status code or body)"}static generate(e,t,n,r){if(!e)return new E({cause:ge(t)});const o=null===t||void 0===t?void 0:t.error;return 400===e?new x(e,o,n,r):401===e?new C(e,o,n,r):403===e?new T(e,o,n,r):404===e?new R(e,o,n,r):409===e?new I(e,o,n,r):422===e?new A(e,o,n,r):429===e?new P(e,o,n,r):e>=500?new k(e,o,n,r):new _(e,o,n,r)}}class S extends _{constructor(){let{message:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(void 0,void 0,e||"Request was aborted.",void 0),this.status=void 0}}class E extends _{constructor(e){let{message:t,cause:n}=e;super(void 0,void 0,t||"Connection error.",void 0),this.status=void 0,n&&(this.cause=n)}}class O extends E{constructor(){let{message:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super({message:null!==e&&void 0!==e?e:"Request timed out."})}}class x extends _{constructor(){super(...arguments),this.status=400}}class C extends _{constructor(){super(...arguments),this.status=401}}class T extends _{constructor(){super(...arguments),this.status=403}}class R extends _{constructor(){super(...arguments),this.status=404}}class I extends _{constructor(){super(...arguments),this.status=409}}class A extends _{constructor(){super(...arguments),this.status=422}}class P extends _{constructor(){super(...arguments),this.status=429}}class k extends _{}class N{constructor(e,t){this.iterator=e,this.controller=t}static fromSSEResponse(e,t){let n=!1;return new N((async function*(){if(n)throw new Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");n=!0;let r=!1;try{for await(const n of async function*(e,t){if(!e.body)throw t.abort(),new w("Attempted to iterate over a response with no body");const n=new M,r=new j,o=L(e.body);for await(const i of async function*(e){let t=new Uint8Array;for await(const n of e){if(null==n)continue;const e=n instanceof ArrayBuffer?new Uint8Array(n):"string"===typeof n?(new TextEncoder).encode(n):n;let r,o=new Uint8Array(t.length+e.length);for(o.set(t),o.set(e,t.length),t=o;-1!==(r=D(t));)yield t.slice(0,r),t=t.slice(r)}t.length>0&&(yield t)}(o))for(const e of r.decode(i)){const t=n.decode(e);t&&(yield t)}for(const i of r.flush()){const e=n.decode(i);e&&(yield e)}}(e,t))if(!r)if(n.data.startsWith("[DONE]"))r=!0;else if(null===n.event){let e;try{e=JSON.parse(n.data)}catch(o){throw console.error("Could not parse message into JSON:",n.data),console.error("From chunk:",n.raw),o}if(e&&e.error)throw new _(void 0,e.error,void 0,void 0);yield e}else{let e;try{e=JSON.parse(n.data)}catch(o){throw console.error("Could not parse message into JSON:",n.data),console.error("From chunk:",n.raw),o}if("error"==n.event)throw new _(void 0,e.error,e.message,void 0);yield{event:n.event,data:e}}r=!0}catch(o){if(o instanceof Error&&"AbortError"===o.name)return;throw o}finally{r||t.abort()}}),t)}static fromReadableStream(e,t){let n=!1;return new N((async function*(){if(n)throw new Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");n=!0;let r=!1;try{for await(const t of async function*(){const t=new j,n=L(e);for await(const e of n)for(const n of t.decode(e))yield n;for(const e of t.flush())yield e}())r||t&&(yield JSON.parse(t));r=!0}catch(o){if(o instanceof Error&&"AbortError"===o.name)return;throw o}finally{r||t.abort()}}),t)}[Symbol.asyncIterator](){return this.iterator()}tee(){const e=[],t=[],n=this.iterator(),r=r=>({next:()=>{if(0===r.length){const r=n.next();e.push(r),t.push(r)}return r.shift()}});return[new N((()=>r(e)),this.controller),new N((()=>r(t)),this.controller)]}toReadableStream(){const e=this;let t;const n=new TextEncoder;return new c({async start(){t=e[Symbol.asyncIterator]()},async pull(e){try{const{value:r,done:o}=await t.next();if(o)return e.close();const i=n.encode(JSON.stringify(r)+"\n");e.enqueue(i)}catch(r){e.error(r)}},async cancel(){var e,n;await(null===(e=(n=t).return)||void 0===e?void 0:e.call(n))}})}}function D(e){for(let t=0;t0&&(r=[this.buffer.join("")+r[0],...r.slice(1)],this.buffer=[]),n||(this.buffer=[r.pop()||""]),r):(this.buffer.push(r[0]),[])}decodeText(e){if(null==e)return"";if("string"===typeof e)return e;if("undefined"!==typeof Buffer){if(e instanceof Buffer)return e.toString();if(e instanceof Uint8Array)return Buffer.from(e).toString();throw new w("Unexpected: received non-Uint8Array (".concat(e.constructor.name,') stream chunk in an environment with a global "Buffer" defined, which this library assumes to be Node. Please report this error.'))}if("undefined"!==typeof TextDecoder){var t;if(e instanceof Uint8Array||e instanceof ArrayBuffer)return null!==(t=this.textDecoder)&&void 0!==t||(this.textDecoder=new TextDecoder("utf8")),this.textDecoder.decode(e);throw new w("Unexpected: received non-Uint8Array/ArrayBuffer (".concat(e.constructor.name,") in a web platform. Please report this error."))}throw new w("Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.")}flush(){if(!this.buffer.length&&!this.trailingCR)return[];const e=[this.buffer.join("")];return this.buffer=[],this.trailingCR=!1,e}}function L(e){if(e[Symbol.asyncIterator])return e;const t=e.getReader();return{async next(){try{const e=await t.read();return null!==e&&void 0!==e&&e.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){const e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}j.NEWLINE_CHARS=new Set(["\n","\r"]),j.NEWLINE_REGEXP=/\r\n|[\n\r]/g;const B=e=>null!=e&&"object"===typeof e&&"string"===typeof e.url&&"function"===typeof e.blob,q=e=>null!=e&&"object"===typeof e&&"string"===typeof e.name&&"number"===typeof e.lastModified&&F(e),F=e=>null!=e&&"object"===typeof e&&"number"===typeof e.size&&"string"===typeof e.type&&"function"===typeof e.text&&"function"===typeof e.slice&&"function"===typeof e.arrayBuffer,z=e=>q(e)||B(e)||h(e);async function $(e,t,n){var r,o;if(e=await e,null!==(r=n)&&void 0!==r||(n=q(e)?{lastModified:e.lastModified,type:e.type}:{}),B(e)){var i;const r=await e.blob();return t||(t=null!==(i=new URL(e.url).pathname.split(/[\\/]/).pop())&&void 0!==i?i:"unknown_file"),new u([r],t,n)}const a=await async function(e){let t=[];if("string"===typeof e||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)t.push(e);else if(F(e))t.push(await e.arrayBuffer());else{var n;if(!H(e))throw new Error("Unexpected data type: ".concat(typeof e,"; constructor: ").concat(null===e||void 0===e||null===(n=e.constructor)||void 0===n?void 0:n.name,"; props: ").concat(function(e){const t=Object.getOwnPropertyNames(e);return"[".concat(t.map((e=>'"'.concat(e,'"'))).join(", "),"]")}(e)));for await(const n of e)t.push(n)}return t}(e);if(t||(t=null!==(o=function(e){var t;return U(e.name)||U(e.filename)||(null===(t=U(e.path))||void 0===t?void 0:t.split(/[\\/]/).pop())}(e))&&void 0!==o?o:"unknown_file"),!n.type){var s;const e=null===(s=a[0])||void 0===s?void 0:s.type;"string"===typeof e&&(n={...n,type:e})}return new u(a,t,n)}const U=e=>"string"===typeof e?e:"undefined"!==typeof Buffer&&e instanceof Buffer?String(e):void 0,H=e=>null!=e&&"object"===typeof e&&"function"===typeof e[Symbol.asyncIterator],W=e=>e&&"object"===typeof e&&e.body&&"MultipartBody"===e[Symbol.toStringTag],V=async e=>{const t=await K(e.body);return l(t,e)},K=async e=>{const t=new s;return await Promise.all(Object.entries(e||{}).map((e=>{let[n,r]=e;return G(t,n,r)}))),t},G=async(e,t,n)=>{if(void 0!==n){if(null==n)throw new TypeError('Received null for "'.concat(t,"\"; to pass null in FormData, you must use the string 'null'"));if("string"===typeof n||"number"===typeof n||"boolean"===typeof n)e.append(t,String(n));else if(z(n)){const r=await $(n);e.append(t,r)}else if(Array.isArray(n))await Promise.all(n.map((n=>G(e,t+"[]",n))));else{if("object"!==typeof n)throw new TypeError("Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ".concat(n," instead"));await Promise.all(Object.entries(n).map((n=>{let[r,o]=n;return G(e,"".concat(t,"[").concat(r,"]"),o)})))}}};var X,Y=function(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n},J=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};async function Q(e){const{response:t}=e;if(e.options.stream)return _e("response",t.status,t.url,t.headers,t.body),e.options.__streamClass?e.options.__streamClass.fromSSEResponse(t,e.controller):N.fromSSEResponse(t,e.controller);if(204===t.status)return null;if(e.options.__binaryResponse)return t;const n=t.headers.get("content-type");if((null===n||void 0===n?void 0:n.includes("application/json"))||(null===n||void 0===n?void 0:n.includes("application/vnd.api+json"))){const e=await t.json();return _e("response",t.status,t.url,t.headers,e),e}const r=await t.text();return _e("response",t.status,t.url,t.headers,r),r}class Z extends Promise{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Q;super((e=>{e(null)})),this.responsePromise=e,this.parseResponse=t}_thenUnwrap(e){return new Z(this.responsePromise,(async t=>e(await this.parseResponse(t))))}asResponse(){return this.responsePromise.then((e=>e.response))}async withResponse(){const[e,t]=await Promise.all([this.parse(),this.asResponse()]);return{data:e,response:t}}parse(){return this.parsedPromise||(this.parsedPromise=this.responsePromise.then(this.parseResponse)),this.parsedPromise}then(e,t){return this.parse().then(e,t)}catch(e){return this.parse().catch(e)}finally(e){return this.parse().finally(e)}}class ee{constructor(e){let{baseURL:t,maxRetries:n=2,timeout:r=6e5,httpAgent:o,fetch:i}=e;this.baseURL=t,this.maxRetries=ve("maxRetries",n),this.timeout=ve("timeout",r),this.httpAgent=o,this.fetch=null!==i&&void 0!==i?i:a}authHeaders(e){return{}}defaultHeaders(e){return{Accept:"application/json","Content-Type":"application/json","User-Agent":this.getUserAgent(),...le(),...this.authHeaders(e)}}validateHeaders(e,t){}defaultIdempotencyKey(){return"stainless-node-retry-".concat(Se())}get(e,t){return this.methodRequest("get",e,t)}post(e,t){return this.methodRequest("post",e,t)}patch(e,t){return this.methodRequest("patch",e,t)}put(e,t){return this.methodRequest("put",e,t)}delete(e,t){return this.methodRequest("delete",e,t)}methodRequest(e,t,n){return this.request(Promise.resolve(n).then((n=>({method:e,path:t,...n}))))}getAPIList(e,t,n){return this.requestAPIList(t,{method:"get",path:e,...n})}calculateContentLength(e){if("string"===typeof e){if("undefined"!==typeof Buffer)return Buffer.byteLength(e,"utf8").toString();if("undefined"!==typeof TextEncoder){return(new TextEncoder).encode(e).length.toString()}}return null}buildRequest(e){var t,n,r,o,i,a;const{method:s,path:u,query:c,headers:l={}}=e,f=W(e.body)?e.body.body:e.body?JSON.stringify(e.body,null,2):null,h=this.calculateContentLength(f),p=this.buildURL(u,c);"timeout"in e&&ve("timeout",e.timeout);const v=null!==(t=e.timeout)&&void 0!==t?t:this.timeout,g=null!==(n=null!==(r=e.httpAgent)&&void 0!==r?r:this.httpAgent)&&void 0!==n?n:d(p),m=v+1e3;"number"===typeof(null===g||void 0===g||null===(o=g.options)||void 0===o?void 0:o.timeout)&&m>(null!==(i=g.options.timeout)&&void 0!==i?i:0)&&(g.options.timeout=m),this.idempotencyHeader&&"get"!==s&&(e.idempotencyKey||(e.idempotencyKey=this.defaultIdempotencyKey()),l[this.idempotencyHeader]=e.idempotencyKey);return{req:{method:s,...f&&{body:f},headers:this.buildHeaders({options:e,headers:l,contentLength:h}),...g&&{agent:g},signal:null!==(a=e.signal)&&void 0!==a?a:null},url:p,timeout:v}}buildHeaders(e){let{options:t,headers:n,contentLength:r}=e;const o={};r&&(o["content-length"]=r);return we(o,this.defaultHeaders(t)),we(o,n),W(t.body)&&"node"!==i&&delete o["content-type"],this.validateHeaders(o,n),o}async prepareOptions(e){}async prepareRequest(e,t){let{url:n,options:r}=t}parseHeaders(e){return e?Symbol.iterator in e?Object.fromEntries(Array.from(e).map((e=>[...e]))):{...e}:{}}makeStatusError(e,t,n,r){return _.generate(e,t,n,r)}request(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return new Z(this.makeRequest(e,t))}async makeRequest(e,t){var n;const r=await e;var o;null==t&&(t=null!==(o=r.maxRetries)&&void 0!==o?o:this.maxRetries);await this.prepareOptions(r);const{req:i,url:a,timeout:s}=this.buildRequest(r);if(await this.prepareRequest(i,{url:a,options:r}),_e("request",a,r,i.headers),null!==(n=r.signal)&&void 0!==n&&n.aborted)throw new S;const u=new AbortController,c=await this.fetchWithTimeout(a,i,s,u).catch(ge);if(c instanceof Error){var l;if(null!==(l=r.signal)&&void 0!==l&&l.aborted)throw new S;if(t)return this.retryRequest(r,t);if("AbortError"===c.name)throw new O;throw new E({cause:c})}const d=re(c.headers);if(!c.ok){if(t&&this.shouldRetry(c)){const e="retrying, ".concat(t," attempts remaining");return _e("response (error; ".concat(e,")"),c.status,a,d),this.retryRequest(r,t,d)}const e=await c.text().catch((e=>ge(e).message)),n=de(e),o=n?void 0:e;_e("response (error; ".concat(t?"(error; no more retries left)":"(error; not retryable)",")"),c.status,a,d,o);throw this.makeStatusError(c.status,n,o,d)}return{response:c,options:r,controller:u}}requestAPIList(e,t){const n=this.makeRequest(t,null);return new ne(this,n,e)}buildURL(e,t){const n=he(e)?new URL(e):new URL(this.baseURL+(this.baseURL.endsWith("/")&&e.startsWith("/")?e.slice(1):e)),r=this.defaultQuery();return be(r)||(t={...r,...t}),"object"===typeof t&&t&&!Array.isArray(t)&&(n.search=this.stringifyQuery(t)),n.toString()}stringifyQuery(e){return Object.entries(e).filter((e=>{let[t,n]=e;return"undefined"!==typeof n})).map((e=>{let[t,n]=e;if("string"===typeof n||"number"===typeof n||"boolean"===typeof n)return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(n));if(null===n)return"".concat(encodeURIComponent(t),"=");throw new w("Cannot stringify type ".concat(typeof n,"; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case."))})).join("&")}async fetchWithTimeout(e,t,n,r){const{signal:o,...i}=t||{};o&&o.addEventListener("abort",(()=>r.abort()));const a=setTimeout((()=>r.abort()),n);return this.getRequestClient().fetch.call(void 0,e,{signal:r.signal,...i}).finally((()=>{clearTimeout(a)}))}getRequestClient(){return{fetch:this.fetch}}shouldRetry(e){const t=e.headers.get("x-should-retry");return"true"===t||"false"!==t&&(408===e.status||(409===e.status||(429===e.status||e.status>=500)))}async retryRequest(e,t,n){let r;const o=null===n||void 0===n?void 0:n["retry-after-ms"];if(o){const e=parseFloat(o);Number.isNaN(e)||(r=e)}const i=null===n||void 0===n?void 0:n["retry-after"];if(i&&!r){const e=parseFloat(i);r=Number.isNaN(e)?Date.parse(i)-Date.now():1e3*e}if(!(r&&0<=r&&r<6e4)){var a;const n=null!==(a=e.maxRetries)&&void 0!==a?a:this.maxRetries;r=this.calculateDefaultRetryTimeoutMillis(t,n)}return await pe(r),this.makeRequest(e,t-1)}calculateDefaultRetryTimeoutMillis(e,t){const n=t-e;return Math.min(.5*Math.pow(2,n),8)*(1-.25*Math.random())*1e3}getUserAgent(){return"".concat(this.constructor.name,"/JS ").concat(o)}}class te{constructor(e,t,n,r){X.set(this,void 0),Y(this,X,e,"f"),this.options=r,this.response=t,this.body=n}hasNextPage(){return!!this.getPaginatedItems().length&&null!=this.nextPageInfo()}async getNextPage(){const e=this.nextPageInfo();if(!e)throw new w("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");const t={...this.options};if("params"in e&&"object"===typeof t.query)t.query={...t.query,...e.params};else if("url"in e){const n=[...Object.entries(t.query||{}),...e.url.searchParams.entries()];for(const[t,r]of n)e.url.searchParams.set(t,r);t.query=void 0,t.path=e.url.toString()}return await J(this,X,"f").requestAPIList(this.constructor,t)}async*iterPages(){let e=this;for(yield e;e.hasNextPage();)e=await e.getNextPage(),yield e}async*[(X=new WeakMap,Symbol.asyncIterator)](){for await(const e of this.iterPages())for(const t of e.getPaginatedItems())yield t}}class ne extends Z{constructor(e,t,n){super(t,(async t=>new n(e,t.response,await Q(t),t.options)))}async*[Symbol.asyncIterator](){const e=await(this);for await(const t of e)yield t}}const re=e=>new Proxy(Object.fromEntries(e.entries()),{get(e,t){const n=t.toString();return e[n.toLowerCase()]||e[n]}}),oe={method:!0,path:!0,query:!0,body:!0,headers:!0,maxRetries:!0,stream:!0,timeout:!0,httpAgent:!0,signal:!0,idempotencyKey:!0,__binaryResponse:!0,__streamClass:!0},ie=e=>"object"===typeof e&&null!==e&&!be(e)&&Object.keys(e).every((e=>ye(oe,e))),ae=()=>{var e,t;if("undefined"!==typeof Deno&&null!=Deno.build)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":o,"X-Stainless-OS":ue(Deno.build.os),"X-Stainless-Arch":se(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":"string"===typeof Deno.version?Deno.version:null!==(e=null===(t=Deno.version)||void 0===t?void 0:t.deno)&&void 0!==e?e:"unknown"};if("undefined"!==typeof EdgeRuntime)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":o,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"other:".concat(EdgeRuntime),"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":process.version};if("[object process]"===Object.prototype.toString.call("undefined"!==typeof process?process:0))return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":o,"X-Stainless-OS":ue(process.platform),"X-Stainless-Arch":se(process.arch),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":process.version};const n=function(){if("undefined"===typeof navigator||!navigator)return null;const e=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(const{key:t,pattern:n}of e){const e=n.exec(navigator.userAgent);if(e){const n=e[1]||0,r=e[2]||0,o=e[3]||0;return{browser:t,version:"".concat(n,".").concat(r,".").concat(o)}}}return null}();return n?{"X-Stainless-Lang":"js","X-Stainless-Package-Version":o,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"browser:".concat(n.browser),"X-Stainless-Runtime-Version":n.version}:{"X-Stainless-Lang":"js","X-Stainless-Package-Version":o,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};const se=e=>"x32"===e?"x32":"x86_64"===e||"x64"===e?"x64":"arm"===e?"arm":"aarch64"===e||"arm64"===e?"arm64":e?"other:".concat(e):"unknown",ue=e=>(e=e.toLowerCase()).includes("ios")?"iOS":"android"===e?"Android":"darwin"===e?"MacOS":"win32"===e?"Windows":"freebsd"===e?"FreeBSD":"openbsd"===e?"OpenBSD":"linux"===e?"Linux":e?"Other:".concat(e):"Unknown";let ce;const le=()=>{var e;return null!==(e=ce)&&void 0!==e?e:ce=ae()},de=e=>{try{return JSON.parse(e)}catch(t){return}},fe=new RegExp("^(?:[a-z]+:)?//","i"),he=e=>fe.test(e),pe=e=>new Promise((t=>setTimeout(t,e))),ve=(e,t)=>{if("number"!==typeof t||!Number.isInteger(t))throw new w("".concat(e," must be an integer"));if(t<0)throw new w("".concat(e," must be a positive integer"));return t},ge=e=>e instanceof Error?e:new Error(e),me=e=>{var t,n,r,o;return"undefined"!==typeof process?null!==(t=null===(n={NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0})||void 0===n||null===(n=n[e])||void 0===n?void 0:n.trim())&&void 0!==t?t:void 0:"undefined"!==typeof Deno?null===(r=Deno.env)||void 0===r||null===(o=r.get)||void 0===o||null===(o=o.call(r,e))||void 0===o?void 0:o.trim():void 0};function be(e){if(!e)return!0;for(const t in e)return!1;return!0}function ye(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function we(e,t){for(const n in t){if(!ye(t,n))continue;const r=n.toLowerCase();if(!r)continue;const o=t[n];null===o?delete e[r]:void 0!==o&&(e[r]=o)}}function _e(e){var t;if("undefined"!==typeof process&&"true"===(null===(t=process)||void 0===t||null===(t={NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0})||void 0===t?void 0:t.DEBUG)){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));function Ee(e){return null!=e&&"object"===typeof e&&!Array.isArray(e)}class Oe extends te{constructor(e,t,n,r){super(e,t,n,r),this.data=n.data||[],this.object=n.object}getPaginatedItems(){var e;return null!==(e=this.data)&&void 0!==e?e:[]}nextPageParams(){return null}nextPageInfo(){return null}}class xe extends te{constructor(e,t,n,r){super(e,t,n,r),this.data=n.data||[]}getPaginatedItems(){var e;return null!==(e=this.data)&&void 0!==e?e:[]}nextPageParams(){const e=this.nextPageInfo();if(!e)return null;if("params"in e)return e.params;const t=Object.fromEntries(e.url.searchParams);return Object.keys(t).length?t:null}nextPageInfo(){var e;const t=this.getPaginatedItems();if(!t.length)return null;const n=null===(e=t[t.length-1])||void 0===e?void 0:e.id;return n?{params:{after:n}}:null}}class Ce{constructor(e){this._client=e}}class Te extends Ce{create(e,t){var n;return this._client.post("/completions",{body:e,...t,stream:null!==(n=e.stream)&&void 0!==n&&n})}}Te||(Te={});class Re extends Ce{create(e,t){var n;return this._client.post("/chat/completions",{body:e,...t,stream:null!==(n=e.stream)&&void 0!==n&&n})}}Re||(Re={});class Ie extends Ce{constructor(){super(...arguments),this.completions=new Re(this._client)}}!function(e){e.Completions=Re}(Ie||(Ie={}));class Ae extends Ce{create(e,t){return this._client.post("/embeddings",{body:e,...t})}}Ae||(Ae={});class Pe extends Ce{create(e,t){return this._client.post("/files",V({body:e,...t}))}retrieve(e,t){return this._client.get("/files/".concat(e),t)}list(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return ie(e)?this.list({},e):this._client.getAPIList("/files",ke,{query:e,...t})}del(e,t){return this._client.delete("/files/".concat(e),t)}content(e,t){return this._client.get("/files/".concat(e,"/content"),{...t,__binaryResponse:!0})}retrieveContent(e,t){return this._client.get("/files/".concat(e,"/content"),{...t,headers:{Accept:"application/json",...null===t||void 0===t?void 0:t.headers}})}async waitForProcessing(e){let{pollInterval:t=5e3,maxWait:n=18e5}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=new Set(["processed","error","deleted"]),o=Date.now();let i=await this.retrieve(e);for(;!i.status||!r.has(i.status);)if(await pe(t),i=await this.retrieve(e),Date.now()-o>n)throw new O({message:"Giving up on waiting for file ".concat(e," to finish processing after ").concat(n," milliseconds.")});return i}}class ke extends Oe{}!function(e){e.FileObjectsPage=ke}(Pe||(Pe={}));class Ne extends Ce{createVariation(e,t){return this._client.post("/images/variations",V({body:e,...t}))}edit(e,t){return this._client.post("/images/edits",V({body:e,...t}))}generate(e,t){return this._client.post("/images/generations",{body:e,...t})}}Ne||(Ne={});class De extends Ce{create(e,t){return this._client.post("/audio/speech",{body:e,...t,__binaryResponse:!0})}}De||(De={});class Me extends Ce{create(e,t){return this._client.post("/audio/transcriptions",V({body:e,...t}))}}Me||(Me={});class je extends Ce{create(e,t){return this._client.post("/audio/translations",V({body:e,...t}))}}je||(je={});class Le extends Ce{constructor(){super(...arguments),this.transcriptions=new Me(this._client),this.translations=new je(this._client),this.speech=new De(this._client)}}!function(e){e.Transcriptions=Me,e.Translations=je,e.Speech=De}(Le||(Le={}));class Be extends Ce{create(e,t){return this._client.post("/moderations",{body:e,...t})}}Be||(Be={});class qe extends Ce{retrieve(e,t){return this._client.get("/models/".concat(e),t)}list(e){return this._client.getAPIList("/models",Fe,e)}del(e,t){return this._client.delete("/models/".concat(e),t)}}class Fe extends Oe{}!function(e){e.ModelsPage=Fe}(qe||(qe={}));class ze extends Ce{list(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return ie(t)?this.list(e,{},t):this._client.getAPIList("/fine_tuning/jobs/".concat(e,"/checkpoints"),$e,{query:t,...n})}}class $e extends xe{}!function(e){e.FineTuningJobCheckpointsPage=$e}(ze||(ze={}));class Ue extends Ce{constructor(){super(...arguments),this.checkpoints=new ze(this._client)}create(e,t){return this._client.post("/fine_tuning/jobs",{body:e,...t})}retrieve(e,t){return this._client.get("/fine_tuning/jobs/".concat(e),t)}list(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return ie(e)?this.list({},e):this._client.getAPIList("/fine_tuning/jobs",He,{query:e,...t})}cancel(e,t){return this._client.post("/fine_tuning/jobs/".concat(e,"/cancel"),t)}listEvents(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return ie(t)?this.listEvents(e,{},t):this._client.getAPIList("/fine_tuning/jobs/".concat(e,"/events"),We,{query:t,...n})}}class He extends xe{}class We extends xe{}!function(e){e.FineTuningJobsPage=He,e.FineTuningJobEventsPage=We,e.Checkpoints=ze,e.FineTuningJobCheckpointsPage=$e}(Ue||(Ue={}));class Ve extends Ce{constructor(){super(...arguments),this.jobs=new Ue(this._client)}}!function(e){e.Jobs=Ue,e.FineTuningJobsPage=He,e.FineTuningJobEventsPage=We}(Ve||(Ve={}));class Ke extends Ce{create(e,t){return this._client.post("/assistants",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}retrieve(e,t){return this._client.get("/assistants/".concat(e),{...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}update(e,t,n){return this._client.post("/assistants/".concat(e),{body:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}list(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return ie(e)?this.list({},e):this._client.getAPIList("/assistants",Ge,{query:e,...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}del(e,t){return this._client.delete("/assistants/".concat(e),{...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}}class Ge extends xe{}function Xe(e){return"function"===typeof e.parse}!function(e){e.AssistantsPage=Ge}(Ke||(Ke={}));const Ye=e=>"assistant"===(null===e||void 0===e?void 0:e.role),Je=e=>"function"===(null===e||void 0===e?void 0:e.role),Qe=e=>"tool"===(null===e||void 0===e?void 0:e.role);var Ze,et,tt,nt,rt,ot,it,at,st,ut,ct,lt,dt,ft,ht,pt,vt,gt,mt,bt,yt=function(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n},wt=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};const _t=10;class St{constructor(){Ze.add(this),this.controller=new AbortController,et.set(this,void 0),tt.set(this,(()=>{})),nt.set(this,(()=>{})),rt.set(this,void 0),ot.set(this,(()=>{})),it.set(this,(()=>{})),at.set(this,{}),this._chatCompletions=[],this.messages=[],st.set(this,!1),ut.set(this,!1),ct.set(this,!1),lt.set(this,!1),gt.set(this,(e=>{if(yt(this,ut,!0,"f"),e instanceof Error&&"AbortError"===e.name&&(e=new S),e instanceof S)return yt(this,ct,!0,"f"),this._emit("abort",e);if(e instanceof w)return this._emit("error",e);if(e instanceof Error){const t=new w(e.message);return t.cause=e,this._emit("error",t)}return this._emit("error",new w(String(e)))})),yt(this,et,new Promise(((e,t)=>{yt(this,tt,e,"f"),yt(this,nt,t,"f")})),"f"),yt(this,rt,new Promise(((e,t)=>{yt(this,ot,e,"f"),yt(this,it,t,"f")})),"f"),wt(this,et,"f").catch((()=>{})),wt(this,rt,"f").catch((()=>{}))}_run(e){setTimeout((()=>{e().then((()=>{this._emitFinal(),this._emit("end")}),wt(this,gt,"f"))}),0)}_addChatCompletion(e){var t;this._chatCompletions.push(e),this._emit("chatCompletion",e);const n=null===(t=e.choices[0])||void 0===t?void 0:t.message;return n&&this._addMessage(n),e}_addMessage(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("content"in e||(e.content=null),this.messages.push(e),t)if(this._emit("message",e),(Je(e)||Qe(e))&&e.content)this._emit("functionCallResult",e.content);else if(Ye(e)&&e.function_call)this._emit("functionCall",e.function_call);else if(Ye(e)&&e.tool_calls)for(const n of e.tool_calls)"function"===n.type&&this._emit("functionCall",n.function)}_connected(){this.ended||(wt(this,tt,"f").call(this),this._emit("connect"))}get ended(){return wt(this,st,"f")}get errored(){return wt(this,ut,"f")}get aborted(){return wt(this,ct,"f")}abort(){this.controller.abort()}on(e,t){return(wt(this,at,"f")[e]||(wt(this,at,"f")[e]=[])).push({listener:t}),this}off(e,t){const n=wt(this,at,"f")[e];if(!n)return this;const r=n.findIndex((e=>e.listener===t));return r>=0&&n.splice(r,1),this}once(e,t){return(wt(this,at,"f")[e]||(wt(this,at,"f")[e]=[])).push({listener:t,once:!0}),this}emitted(e){return new Promise(((t,n)=>{yt(this,lt,!0,"f"),"error"!==e&&this.once("error",n),this.once(e,t)}))}async done(){yt(this,lt,!0,"f"),await wt(this,rt,"f")}async finalChatCompletion(){await this.done();const e=this._chatCompletions[this._chatCompletions.length-1];if(!e)throw new w("stream ended without producing a ChatCompletion");return e}async finalContent(){return await this.done(),wt(this,Ze,"m",dt).call(this)}async finalMessage(){return await this.done(),wt(this,Ze,"m",ft).call(this)}async finalFunctionCall(){return await this.done(),wt(this,Ze,"m",ht).call(this)}async finalFunctionCallResult(){return await this.done(),wt(this,Ze,"m",pt).call(this)}async totalUsage(){return await this.done(),wt(this,Ze,"m",vt).call(this)}allChatCompletions(){return[...this._chatCompletions]}_emit(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r!e.once)),o.forEach((e=>{let{listener:t}=e;return t(...n)}))),"abort"===e){const e=n[0];return wt(this,lt,"f")||null!==o&&void 0!==o&&o.length||Promise.reject(e),wt(this,nt,"f").call(this,e),wt(this,it,"f").call(this,e),void this._emit("end")}if("error"===e){const e=n[0];wt(this,lt,"f")||null!==o&&void 0!==o&&o.length||Promise.reject(e),wt(this,nt,"f").call(this,e),wt(this,it,"f").call(this,e),this._emit("end")}}_emitFinal(){const e=this._chatCompletions[this._chatCompletions.length-1];e&&this._emit("finalChatCompletion",e);const t=wt(this,Ze,"m",ft).call(this);t&&this._emit("finalMessage",t);const n=wt(this,Ze,"m",dt).call(this);n&&this._emit("finalContent",n);const r=wt(this,Ze,"m",ht).call(this);r&&this._emit("finalFunctionCall",r);const o=wt(this,Ze,"m",pt).call(this);null!=o&&this._emit("finalFunctionCallResult",o),this._chatCompletions.some((e=>e.usage))&&this._emit("totalUsage",wt(this,Ze,"m",vt).call(this))}async _createChatCompletion(e,t,n){const r=null===n||void 0===n?void 0:n.signal;r&&(r.aborted&&this.controller.abort(),r.addEventListener("abort",(()=>this.controller.abort()))),wt(this,Ze,"m",mt).call(this,t);const o=await e.create({...t,stream:!1},{...n,signal:this.controller.signal});return this._connected(),this._addChatCompletion(o)}async _runChatCompletion(e,t,n){for(const r of t.messages)this._addMessage(r,!1);return await this._createChatCompletion(e,t,n)}async _runFunctions(e,t,n){const r="function",{function_call:o="auto",stream:i,...a}=t,s="string"!==typeof o&&(null===o||void 0===o?void 0:o.name),{maxChatCompletions:u=_t}=n||{},c={};for(const h of t.functions)c[h.name||h.function.name]=h;const l=t.functions.map((e=>({name:e.name||e.function.name,parameters:e.parameters,description:e.description})));for(const h of t.messages)this._addMessage(h,!1);for(let h=0;hJSON.stringify(e.name))).join(", "),". Please try again");this._addMessage({role:r,name:i,content:e});continue}if(s&&s!==i){const e="Invalid function_call: ".concat(JSON.stringify(i),". ").concat(JSON.stringify(s)," requested. Please try again");this._addMessage({role:r,name:i,content:e});continue}let p;try{p=Xe(h)?await h.parse(u):u}catch(f){this._addMessage({role:r,name:i,content:f instanceof Error?f.message:String(f)});continue}const v=await h.function(p,this),g=wt(this,Ze,"m",bt).call(this,v);if(this._addMessage({role:r,name:i,content:g}),s)return}}async _runTools(e,t,n){var r;const o="tool",{tool_choice:i="auto",stream:a,...s}=t,u="string"!==typeof i&&(null===i||void 0===i||null===(r=i.function)||void 0===r?void 0:r.name),{maxChatCompletions:c=_t}=n||{},l={};for(const p of t.tools)"function"===p.type&&(l[p.function.name||p.function.function.name]=p.function);const d="tools"in t?t.tools.map((e=>"function"===e.type?{type:"function",function:{name:e.function.name||e.function.function.name,parameters:e.function.parameters,description:e.function.description}}:e)):void 0;for(const p of t.messages)this._addMessage(p,!1);for(let p=0;pJSON.stringify(e.function.name))).join(", "),". Please try again");this._addMessage({role:o,tool_call_id:t,content:e});continue}if(u&&u!==n){const e="Invalid tool_call: ".concat(JSON.stringify(n),". ").concat(JSON.stringify(u)," requested. Please try again");this._addMessage({role:o,tool_call_id:t,content:e});continue}let a;try{a=Xe(i)?await i.parse(r):r}catch(h){const e=h instanceof Error?h.message:String(h);this._addMessage({role:o,tool_call_id:t,content:e});continue}const s=await i.function(a,this),c=wt(this,Ze,"m",bt).call(this,s);if(this._addMessage({role:o,tool_call_id:t,content:c}),u)return}}}}et=new WeakMap,tt=new WeakMap,nt=new WeakMap,rt=new WeakMap,ot=new WeakMap,it=new WeakMap,at=new WeakMap,st=new WeakMap,ut=new WeakMap,ct=new WeakMap,lt=new WeakMap,gt=new WeakMap,Ze=new WeakSet,dt=function(){var e;return null!==(e=wt(this,Ze,"m",ft).call(this).content)&&void 0!==e?e:null},ft=function(){let e=this.messages.length;for(;e-- >0;){const n=this.messages[e];var t;if(Ye(n))return{...n,content:null!==(t=n.content)&&void 0!==t?t:null}}throw new w("stream ended without producing a ChatCompletionMessage with role=assistant")},ht=function(){for(let n=this.messages.length-1;n>=0;n--){var e;const r=this.messages[n];if(Ye(r)&&null!==r&&void 0!==r&&r.function_call)return r.function_call;var t;if(Ye(r)&&null!==r&&void 0!==r&&null!==(e=r.tool_calls)&&void 0!==e&&e.length)return null===(t=r.tool_calls.at(-1))||void 0===t?void 0:t.function}},pt=function(){for(let e=this.messages.length-1;e>=0;e--){const t=this.messages[e];if(Je(t)&&null!=t.content)return t.content;if(Qe(t)&&null!=t.content&&this.messages.some((e=>{var n;return"assistant"===e.role&&(null===(n=e.tool_calls)||void 0===n?void 0:n.some((e=>"function"===e.type&&e.id===t.tool_call_id)))})))return t.content}},vt=function(){const e={completion_tokens:0,prompt_tokens:0,total_tokens:0};for(const{usage:t}of this._chatCompletions)t&&(e.completion_tokens+=t.completion_tokens,e.prompt_tokens+=t.prompt_tokens,e.total_tokens+=t.total_tokens);return e},mt=function(e){if(null!=e.n&&e.n>1)throw new w("ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.")},bt=function(e){return"string"===typeof e?e:void 0===e?"undefined":JSON.stringify(e)};class Et extends St{static runFunctions(e,t,n){const r=new Et,o={...n,headers:{...null===n||void 0===n?void 0:n.headers,"X-Stainless-Helper-Method":"runFunctions"}};return r._run((()=>r._runFunctions(e,t,o))),r}static runTools(e,t,n){const r=new Et,o={...n,headers:{...null===n||void 0===n?void 0:n.headers,"X-Stainless-Helper-Method":"runTools"}};return r._run((()=>r._runTools(e,t,o))),r}_addMessage(e){super._addMessage(e),Ye(e)&&e.content&&this._emit("content",e.content)}}var Ot,xt,Ct,Tt,Rt,It,At=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)},Pt=function(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n};class kt extends St{constructor(){super(...arguments),Ot.add(this),xt.set(this,void 0)}get currentChatCompletionSnapshot(){return At(this,xt,"f")}static fromReadableStream(e){const t=new kt;return t._run((()=>t._fromReadableStream(e))),t}static createChatCompletion(e,t,n){const r=new kt;return r._run((()=>r._runChatCompletion(e,{...t,stream:!0},{...n,headers:{...null===n||void 0===n?void 0:n.headers,"X-Stainless-Helper-Method":"stream"}}))),r}async _createChatCompletion(e,t,n){var r;const o=null===n||void 0===n?void 0:n.signal;o&&(o.aborted&&this.controller.abort(),o.addEventListener("abort",(()=>this.controller.abort()))),At(this,Ot,"m",Ct).call(this);const i=await e.create({...t,stream:!0},{...n,signal:this.controller.signal});this._connected();for await(const a of i)At(this,Ot,"m",Tt).call(this,a);if(null!==(r=i.controller.signal)&&void 0!==r&&r.aborted)throw new S;return this._addChatCompletion(At(this,Ot,"m",Rt).call(this))}async _fromReadableStream(e,t){var n;const r=null===t||void 0===t?void 0:t.signal;r&&(r.aborted&&this.controller.abort(),r.addEventListener("abort",(()=>this.controller.abort()))),At(this,Ot,"m",Ct).call(this),this._connected();const o=N.fromReadableStream(e,this.controller);let i;for await(const a of o)i&&i!==a.id&&this._addChatCompletion(At(this,Ot,"m",Rt).call(this)),At(this,Ot,"m",Tt).call(this,a),i=a.id;if(null!==(n=o.controller.signal)&&void 0!==n&&n.aborted)throw new S;return this._addChatCompletion(At(this,Ot,"m",Rt).call(this))}[(xt=new WeakMap,Ot=new WeakSet,Ct=function(){this.ended||Pt(this,xt,void 0,"f")},Tt=function(e){var t,n;if(this.ended)return;const r=At(this,Ot,"m",It).call(this,e);this._emit("chunk",e,r);const o=null===(t=e.choices[0])||void 0===t||null===(t=t.delta)||void 0===t?void 0:t.content,i=null===(n=r.choices[0])||void 0===n?void 0:n.message;null!=o&&"assistant"===(null===i||void 0===i?void 0:i.role)&&null!==i&&void 0!==i&&i.content&&this._emit("content",o,i.content)},Rt=function(){if(this.ended)throw new w("stream has ended, this shouldn't happen");const e=At(this,xt,"f");if(!e)throw new w("request ended without sending any chunks");return Pt(this,xt,void 0,"f"),function(e){const{id:t,choices:n,created:r,model:o,system_fingerprint:i,...a}=e;return{...a,id:t,choices:n.map((t=>{let{message:n,finish_reason:r,index:o,logprobs:i,...a}=t;if(!r)throw new w("missing finish_reason for choice ".concat(o));const{content:s=null,function_call:u,tool_calls:c,...l}=n,d=n.role;if(!d)throw new w("missing role for choice ".concat(o));if(u){const{arguments:e,name:t}=u;if(null==e)throw new w("missing function_call.arguments for choice ".concat(o));if(!t)throw new w("missing function_call.name for choice ".concat(o));return{...a,message:{content:s,function_call:{arguments:e,name:t},role:d},finish_reason:r,index:o,logprobs:i}}return c?{...a,index:o,finish_reason:r,logprobs:i,message:{...l,role:d,content:s,tool_calls:c.map(((t,n)=>{const{function:r,type:i,id:a,...s}=t,{arguments:u,name:c,...l}=r||{};if(null==a)throw new w("missing choices[".concat(o,"].tool_calls[").concat(n,"].id\n").concat(Nt(e)));if(null==i)throw new w("missing choices[".concat(o,"].tool_calls[").concat(n,"].type\n").concat(Nt(e)));if(null==c)throw new w("missing choices[".concat(o,"].tool_calls[").concat(n,"].function.name\n").concat(Nt(e)));if(null==u)throw new w("missing choices[".concat(o,"].tool_calls[").concat(n,"].function.arguments\n").concat(Nt(e)));return{...s,id:a,type:i,function:{...l,name:c,arguments:u}}}))}}:{...a,message:{...l,content:s,role:d},finish_reason:r,index:o,logprobs:i}})),created:r,model:o,object:"chat.completion",...i?{system_fingerprint:i}:{}}}(e)},It=function(e){var t,n,r;let o=At(this,xt,"f");const{choices:i,...a}=e;o?Object.assign(o,a):o=Pt(this,xt,{...a,choices:[]},"f");for(const{delta:d,finish_reason:f,index:h,logprobs:p=null,...v}of e.choices){let e=o.choices[h];if(e||(e=o.choices[h]={finish_reason:f,index:h,message:{},logprobs:p,...v}),p)if(e.logprobs){const{content:n,...r}=p;var s;if(Object.assign(e.logprobs,r),n)null!==(s=(t=e.logprobs).content)&&void 0!==s||(t.content=[]),e.logprobs.content.push(...n)}else e.logprobs=Object.assign({},p);if(f&&(e.finish_reason=f),Object.assign(e,v),!d)continue;const{content:i,function_call:a,role:g,tool_calls:m,...b}=d;var u;if(Object.assign(e.message,b),i&&(e.message.content=(e.message.content||"")+i),g&&(e.message.role=g),a)if(e.message.function_call){if(a.name&&(e.message.function_call.name=a.name),a.arguments)null!==(u=(n=e.message.function_call).arguments)&&void 0!==u||(n.arguments=""),e.message.function_call.arguments+=a.arguments}else e.message.function_call=a;if(m){e.message.tool_calls||(e.message.tool_calls=[]);for(const{index:t,id:n,type:o,function:i,...a}of m){var c,l;const s=null!==(c=(r=e.message.tool_calls)[t])&&void 0!==c?c:r[t]={};Object.assign(s,a),n&&(s.id=n),o&&(s.type=o),i&&(null!==(l=s.function)&&void 0!==l||(s.function={arguments:""})),null!==i&&void 0!==i&&i.name&&(s.function.name=i.name),null!==i&&void 0!==i&&i.arguments&&(s.function.arguments+=i.arguments)}}}return o},Symbol.asyncIterator)](){const e=[],t=[];let n=!1;return this.on("chunk",(n=>{const r=t.shift();r?r.resolve(n):e.push(n)})),this.on("end",(()=>{n=!0;for(const e of t)e.resolve(void 0);t.length=0})),this.on("abort",(e=>{n=!0;for(const n of t)n.reject(e);t.length=0})),this.on("error",(e=>{n=!0;for(const n of t)n.reject(e);t.length=0})),{next:async()=>{if(!e.length)return n?{value:void 0,done:!0}:new Promise(((e,n)=>t.push({resolve:e,reject:n}))).then((e=>e?{value:e,done:!1}:{value:void 0,done:!0}));return{value:e.shift(),done:!1}},return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new N(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function Nt(e){return JSON.stringify(e)}class Dt extends kt{static fromReadableStream(e){const t=new Dt;return t._run((()=>t._fromReadableStream(e))),t}static runFunctions(e,t,n){const r=new Dt,o={...n,headers:{...null===n||void 0===n?void 0:n.headers,"X-Stainless-Helper-Method":"runFunctions"}};return r._run((()=>r._runFunctions(e,t,o))),r}static runTools(e,t,n){const r=new Dt,o={...n,headers:{...null===n||void 0===n?void 0:n.headers,"X-Stainless-Helper-Method":"runTools"}};return r._run((()=>r._runTools(e,t,o))),r}}class Mt extends Ce{runFunctions(e,t){return e.stream?Dt.runFunctions(this._client.chat.completions,e,t):Et.runFunctions(this._client.chat.completions,e,t)}runTools(e,t){return e.stream?Dt.runTools(this._client.chat.completions,e,t):Et.runTools(this._client.chat.completions,e,t)}stream(e,t){return kt.createChatCompletion(this._client.chat.completions,e,t)}}class jt extends Ce{constructor(){super(...arguments),this.completions=new Mt(this._client)}}!function(e){e.Completions=Mt}(jt||(jt={}));var Lt,Bt,qt,Ft,zt,$t,Ut,Ht,Wt,Vt,Kt,Gt,Xt=function(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n},Yt=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};class Jt{constructor(){this.controller=new AbortController,Lt.set(this,void 0),Bt.set(this,(()=>{})),qt.set(this,(()=>{})),Ft.set(this,void 0),zt.set(this,(()=>{})),$t.set(this,(()=>{})),Ut.set(this,{}),Ht.set(this,!1),Wt.set(this,!1),Vt.set(this,!1),Kt.set(this,!1),Gt.set(this,(e=>{if(Xt(this,Wt,!0,"f"),e instanceof Error&&"AbortError"===e.name&&(e=new S),e instanceof S)return Xt(this,Vt,!0,"f"),this._emit("abort",e);if(e instanceof w)return this._emit("error",e);if(e instanceof Error){const t=new w(e.message);return t.cause=e,this._emit("error",t)}return this._emit("error",new w(String(e)))})),Xt(this,Lt,new Promise(((e,t)=>{Xt(this,Bt,e,"f"),Xt(this,qt,t,"f")})),"f"),Xt(this,Ft,new Promise(((e,t)=>{Xt(this,zt,e,"f"),Xt(this,$t,t,"f")})),"f"),Yt(this,Lt,"f").catch((()=>{})),Yt(this,Ft,"f").catch((()=>{}))}_run(e){setTimeout((()=>{e().then((()=>{this._emit("end")}),Yt(this,Gt,"f"))}),0)}_addRun(e){return e}_connected(){this.ended||(Yt(this,Bt,"f").call(this),this._emit("connect"))}get ended(){return Yt(this,Ht,"f")}get errored(){return Yt(this,Wt,"f")}get aborted(){return Yt(this,Vt,"f")}abort(){this.controller.abort()}on(e,t){return(Yt(this,Ut,"f")[e]||(Yt(this,Ut,"f")[e]=[])).push({listener:t}),this}off(e,t){const n=Yt(this,Ut,"f")[e];if(!n)return this;const r=n.findIndex((e=>e.listener===t));return r>=0&&n.splice(r,1),this}once(e,t){return(Yt(this,Ut,"f")[e]||(Yt(this,Ut,"f")[e]=[])).push({listener:t,once:!0}),this}emitted(e){return new Promise(((t,n)=>{Xt(this,Kt,!0,"f"),"error"!==e&&this.once("error",n),this.once(e,t)}))}async done(){Xt(this,Kt,!0,"f"),await Yt(this,Ft,"f")}_emit(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r!e.once)),o.forEach((e=>{let{listener:t}=e;return t(...n)}))),"abort"===e){const e=n[0];return Yt(this,Kt,"f")||null!==o&&void 0!==o&&o.length||Promise.reject(e),Yt(this,qt,"f").call(this,e),Yt(this,$t,"f").call(this,e),void this._emit("end")}if("error"===e){const e=n[0];Yt(this,Kt,"f")||null!==o&&void 0!==o&&o.length||Promise.reject(e),Yt(this,qt,"f").call(this,e),Yt(this,$t,"f").call(this,e),this._emit("end")}}async _threadAssistantStream(e,t,n){return await this._createThreadAssistantStream(t,e,n)}async _runAssistantStream(e,t,n,r){return await this._createAssistantStream(t,e,n,r)}async _runToolAssistantStream(e,t,n,r,o){return await this._createToolAssistantStream(n,e,t,r,o)}async _createThreadAssistantStream(e,t,n){const r=null===n||void 0===n?void 0:n.signal;r&&(r.aborted&&this.controller.abort(),r.addEventListener("abort",(()=>this.controller.abort())));const o=await e.createAndRun({...t,stream:!1},{...n,signal:this.controller.signal});return this._connected(),this._addRun(o)}async _createToolAssistantStream(e,t,n,r,o){const i=null===o||void 0===o?void 0:o.signal;i&&(i.aborted&&this.controller.abort(),i.addEventListener("abort",(()=>this.controller.abort())));const a=await e.submitToolOutputs(t,n,{...r,stream:!1},{...o,signal:this.controller.signal});return this._connected(),this._addRun(a)}async _createAssistantStream(e,t,n,r){const o=null===r||void 0===r?void 0:r.signal;o&&(o.aborted&&this.controller.abort(),o.addEventListener("abort",(()=>this.controller.abort())));const i=await e.create(t,{...n,stream:!1},{...r,signal:this.controller.signal});return this._connected(),this._addRun(i)}}Lt=new WeakMap,Bt=new WeakMap,qt=new WeakMap,Ft=new WeakMap,zt=new WeakMap,$t=new WeakMap,Ut=new WeakMap,Ht=new WeakMap,Wt=new WeakMap,Vt=new WeakMap,Kt=new WeakMap,Gt=new WeakMap;var Qt,Zt,en,tn,nn,rn,on,an,sn,un,cn,ln,dn,fn,hn,pn,vn,gn,mn,bn,yn,wn,_n=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"===typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)},Sn=function(e,t,n,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"===typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,n):o?o.value=n:t.set(e,n),n};class En extends Jt{constructor(){super(...arguments),Qt.add(this),Zt.set(this,[]),en.set(this,{}),tn.set(this,{}),nn.set(this,void 0),rn.set(this,void 0),on.set(this,void 0),an.set(this,void 0),sn.set(this,void 0),un.set(this,void 0),cn.set(this,void 0),ln.set(this,void 0),dn.set(this,void 0)}[(Zt=new WeakMap,en=new WeakMap,tn=new WeakMap,nn=new WeakMap,rn=new WeakMap,on=new WeakMap,an=new WeakMap,sn=new WeakMap,un=new WeakMap,cn=new WeakMap,ln=new WeakMap,dn=new WeakMap,Qt=new WeakSet,Symbol.asyncIterator)](){const e=[],t=[];let n=!1;return this.on("event",(n=>{const r=t.shift();r?r.resolve(n):e.push(n)})),this.on("end",(()=>{n=!0;for(const e of t)e.resolve(void 0);t.length=0})),this.on("abort",(e=>{n=!0;for(const n of t)n.reject(e);t.length=0})),this.on("error",(e=>{n=!0;for(const n of t)n.reject(e);t.length=0})),{next:async()=>{if(!e.length)return n?{value:void 0,done:!0}:new Promise(((e,n)=>t.push({resolve:e,reject:n}))).then((e=>e?{value:e,done:!1}:{value:void 0,done:!0}));return{value:e.shift(),done:!1}},return:async()=>(this.abort(),{value:void 0,done:!0})}}static fromReadableStream(e){const t=new En;return t._run((()=>t._fromReadableStream(e))),t}async _fromReadableStream(e,t){var n;const r=null===t||void 0===t?void 0:t.signal;r&&(r.aborted&&this.controller.abort(),r.addEventListener("abort",(()=>this.controller.abort()))),this._connected();const o=N.fromReadableStream(e,this.controller);for await(const i of o)_n(this,Qt,"m",fn).call(this,i);if(null!==(n=o.controller.signal)&&void 0!==n&&n.aborted)throw new S;return this._addRun(_n(this,Qt,"m",hn).call(this))}toReadableStream(){return new N(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}static createToolAssistantStream(e,t,n,r,o){const i=new En;return i._run((()=>i._runToolAssistantStream(e,t,n,r,{...o,headers:{...null===o||void 0===o?void 0:o.headers,"X-Stainless-Helper-Method":"stream"}}))),i}async _createToolAssistantStream(e,t,n,r,o){var i;const a=null===o||void 0===o?void 0:o.signal;a&&(a.aborted&&this.controller.abort(),a.addEventListener("abort",(()=>this.controller.abort())));const s={...r,stream:!0},u=await e.submitToolOutputs(t,n,s,{...o,signal:this.controller.signal});this._connected();for await(const c of u)_n(this,Qt,"m",fn).call(this,c);if(null!==(i=u.controller.signal)&&void 0!==i&&i.aborted)throw new S;return this._addRun(_n(this,Qt,"m",hn).call(this))}static createThreadAssistantStream(e,t,n){const r=new En;return r._run((()=>r._threadAssistantStream(e,t,{...n,headers:{...null===n||void 0===n?void 0:n.headers,"X-Stainless-Helper-Method":"stream"}}))),r}static createAssistantStream(e,t,n,r){const o=new En;return o._run((()=>o._runAssistantStream(e,t,n,{...r,headers:{...null===r||void 0===r?void 0:r.headers,"X-Stainless-Helper-Method":"stream"}}))),o}currentEvent(){return _n(this,cn,"f")}currentRun(){return _n(this,ln,"f")}currentMessageSnapshot(){return _n(this,nn,"f")}currentRunStepSnapshot(){return _n(this,dn,"f")}async finalRunSteps(){return await this.done(),Object.values(_n(this,en,"f"))}async finalMessages(){return await this.done(),Object.values(_n(this,tn,"f"))}async finalRun(){if(await this.done(),!_n(this,rn,"f"))throw Error("Final run was not received.");return _n(this,rn,"f")}async _createThreadAssistantStream(e,t,n){var r;const o=null===n||void 0===n?void 0:n.signal;o&&(o.aborted&&this.controller.abort(),o.addEventListener("abort",(()=>this.controller.abort())));const i={...t,stream:!0},a=await e.createAndRun(i,{...n,signal:this.controller.signal});this._connected();for await(const s of a)_n(this,Qt,"m",fn).call(this,s);if(null!==(r=a.controller.signal)&&void 0!==r&&r.aborted)throw new S;return this._addRun(_n(this,Qt,"m",hn).call(this))}async _createAssistantStream(e,t,n,r){var o;const i=null===r||void 0===r?void 0:r.signal;i&&(i.aborted&&this.controller.abort(),i.addEventListener("abort",(()=>this.controller.abort())));const a={...n,stream:!0},s=await e.create(t,a,{...r,signal:this.controller.signal});this._connected();for await(const u of s)_n(this,Qt,"m",fn).call(this,u);if(null!==(o=s.controller.signal)&&void 0!==o&&o.aborted)throw new S;return this._addRun(_n(this,Qt,"m",hn).call(this))}static accumulateDelta(e,t){for(const[n,r]of Object.entries(t)){if(!e.hasOwnProperty(n)){e[n]=r;continue}let t=e[n];if(null!==t&&void 0!==t)if("index"!==n&&"type"!==n){if("string"===typeof t&&"string"===typeof r)t+=r;else if("number"===typeof t&&"number"===typeof r)t+=r;else if(Ee(t)&&Ee(r))t=this.accumulateDelta(t,r);else{if(!Array.isArray(t)||!Array.isArray(r))throw Error("Unhandled record type: ".concat(n,", deltaValue: ").concat(r,", accValue: ").concat(t));if(t.every((e=>"string"===typeof e||"number"===typeof e))){t.push(...r);continue}}e[n]=t}else e[n]=r;else e[n]=r}return e}}fn=function(e){if(!this.ended)switch(Sn(this,cn,e,"f"),_n(this,Qt,"m",gn).call(this,e),e.event){case"thread.created":break;case"thread.run.created":case"thread.run.queued":case"thread.run.in_progress":case"thread.run.requires_action":case"thread.run.completed":case"thread.run.failed":case"thread.run.cancelling":case"thread.run.cancelled":case"thread.run.expired":_n(this,Qt,"m",wn).call(this,e);break;case"thread.run.step.created":case"thread.run.step.in_progress":case"thread.run.step.delta":case"thread.run.step.completed":case"thread.run.step.failed":case"thread.run.step.cancelled":case"thread.run.step.expired":_n(this,Qt,"m",vn).call(this,e);break;case"thread.message.created":case"thread.message.in_progress":case"thread.message.delta":case"thread.message.completed":case"thread.message.incomplete":_n(this,Qt,"m",pn).call(this,e);break;case"error":throw new Error("Encountered an error event in event processing - errors should be processed earlier")}},hn=function(){if(this.ended)throw new w("stream has ended, this shouldn't happen");if(!_n(this,rn,"f"))throw Error("Final run has not been received");return _n(this,rn,"f")},pn=function(e){const[t,n]=_n(this,Qt,"m",bn).call(this,e,_n(this,nn,"f"));Sn(this,nn,t,"f"),_n(this,tn,"f")[t.id]=t;for(const r of n){const e=t.content[r.index];"text"==(null===e||void 0===e?void 0:e.type)&&this._emit("textCreated",e.text)}switch(e.event){case"thread.message.created":this._emit("messageCreated",e.data);break;case"thread.message.in_progress":break;case"thread.message.delta":if(this._emit("messageDelta",e.data.delta,t),e.data.delta.content)for(const n of e.data.delta.content){if("text"==n.type&&n.text){let e=n.text,r=t.content[n.index];if(!r||"text"!=r.type)throw Error("The snapshot associated with this text delta is not text or missing");this._emit("textDelta",e,r.text)}if(n.index!=_n(this,on,"f")){if(_n(this,an,"f"))switch(_n(this,an,"f").type){case"text":this._emit("textDone",_n(this,an,"f").text,_n(this,nn,"f"));break;case"image_file":this._emit("imageFileDone",_n(this,an,"f").image_file,_n(this,nn,"f"))}Sn(this,on,n.index,"f")}Sn(this,an,t.content[n.index],"f")}break;case"thread.message.completed":case"thread.message.incomplete":if(void 0!==_n(this,on,"f")){const t=e.data.content[_n(this,on,"f")];if(t)switch(t.type){case"image_file":this._emit("imageFileDone",t.image_file,_n(this,nn,"f"));break;case"text":this._emit("textDone",t.text,_n(this,nn,"f"))}}_n(this,nn,"f")&&this._emit("messageDone",e.data),Sn(this,nn,void 0,"f")}},vn=function(e){const t=_n(this,Qt,"m",mn).call(this,e);switch(Sn(this,dn,t,"f"),e.event){case"thread.run.step.created":this._emit("runStepCreated",e.data);break;case"thread.run.step.delta":const n=e.data.delta;if(n.step_details&&"tool_calls"==n.step_details.type&&n.step_details.tool_calls&&"tool_calls"==t.step_details.type)for(const e of n.step_details.tool_calls)e.index==_n(this,sn,"f")?this._emit("toolCallDelta",e,t.step_details.tool_calls[e.index]):(_n(this,un,"f")&&this._emit("toolCallDone",_n(this,un,"f")),Sn(this,sn,e.index,"f"),Sn(this,un,t.step_details.tool_calls[e.index],"f"),_n(this,un,"f")&&this._emit("toolCallCreated",_n(this,un,"f")));this._emit("runStepDelta",e.data.delta,t);break;case"thread.run.step.completed":case"thread.run.step.failed":case"thread.run.step.cancelled":case"thread.run.step.expired":Sn(this,dn,void 0,"f");"tool_calls"==e.data.step_details.type&&_n(this,un,"f")&&(this._emit("toolCallDone",_n(this,un,"f")),Sn(this,un,void 0,"f")),this._emit("runStepDone",e.data,t)}},gn=function(e){_n(this,Zt,"f").push(e),this._emit("event",e)},mn=function(e){switch(e.event){case"thread.run.step.created":return _n(this,en,"f")[e.data.id]=e.data,e.data;case"thread.run.step.delta":let t=_n(this,en,"f")[e.data.id];if(!t)throw Error("Received a RunStepDelta before creation of a snapshot");let n=e.data;if(n.delta){const r=En.accumulateDelta(t,n.delta);_n(this,en,"f")[e.data.id]=r}return _n(this,en,"f")[e.data.id];case"thread.run.step.completed":case"thread.run.step.failed":case"thread.run.step.cancelled":case"thread.run.step.expired":case"thread.run.step.in_progress":_n(this,en,"f")[e.data.id]=e.data}if(_n(this,en,"f")[e.data.id])return _n(this,en,"f")[e.data.id];throw new Error("No snapshot available")},bn=function(e,t){let n=[];switch(e.event){case"thread.message.created":return[e.data,n];case"thread.message.delta":if(!t)throw Error("Received a delta with no existing snapshot (there should be one from message creation)");let r=e.data;if(r.delta.content)for(const e of r.delta.content)if(e.index in t.content){let n=t.content[e.index];t.content[e.index]=_n(this,Qt,"m",yn).call(this,e,n)}else t.content[e.index]=e,n.push(e);return[t,n];case"thread.message.in_progress":case"thread.message.completed":case"thread.message.incomplete":if(t)return[t,n];throw Error("Received thread message event with no existing snapshot")}throw Error("Tried to accumulate a non-message event")},yn=function(e,t){return En.accumulateDelta(t,e)},wn=function(e){switch(Sn(this,ln,e.data,"f"),e.event){case"thread.run.created":case"thread.run.queued":case"thread.run.in_progress":case"thread.run.cancelling":break;case"thread.run.requires_action":case"thread.run.cancelled":case"thread.run.failed":case"thread.run.completed":case"thread.run.expired":Sn(this,rn,e.data,"f"),_n(this,un,"f")&&(this._emit("toolCallDone",_n(this,un,"f")),Sn(this,un,void 0,"f"))}};class On extends Ce{create(e,t,n){return this._client.post("/threads/".concat(e,"/messages"),{body:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}retrieve(e,t,n){return this._client.get("/threads/".concat(e,"/messages/").concat(t),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}update(e,t,n,r){return this._client.post("/threads/".concat(e,"/messages/").concat(t),{body:n,...r,headers:{"OpenAI-Beta":"assistants=v2",...null===r||void 0===r?void 0:r.headers}})}list(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return ie(t)?this.list(e,{},t):this._client.getAPIList("/threads/".concat(e,"/messages"),xn,{query:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}del(e,t,n){return this._client.delete("/threads/".concat(e,"/messages/").concat(t),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}}class xn extends xe{}!function(e){e.MessagesPage=xn}(On||(On={}));class Cn extends Ce{retrieve(e,t,n,r){return this._client.get("/threads/".concat(e,"/runs/").concat(t,"/steps/").concat(n),{...r,headers:{"OpenAI-Beta":"assistants=v2",...null===r||void 0===r?void 0:r.headers}})}list(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;return ie(n)?this.list(e,t,{},n):this._client.getAPIList("/threads/".concat(e,"/runs/").concat(t,"/steps"),Tn,{query:n,...r,headers:{"OpenAI-Beta":"assistants=v2",...null===r||void 0===r?void 0:r.headers}})}}class Tn extends xe{}!function(e){e.RunStepsPage=Tn}(Cn||(Cn={}));class Rn extends Ce{constructor(){super(...arguments),this.steps=new Cn(this._client)}create(e,t,n){var r;return this._client.post("/threads/".concat(e,"/runs"),{body:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers},stream:null!==(r=t.stream)&&void 0!==r&&r})}retrieve(e,t,n){return this._client.get("/threads/".concat(e,"/runs/").concat(t),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}update(e,t,n,r){return this._client.post("/threads/".concat(e,"/runs/").concat(t),{body:n,...r,headers:{"OpenAI-Beta":"assistants=v2",...null===r||void 0===r?void 0:r.headers}})}list(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return ie(t)?this.list(e,{},t):this._client.getAPIList("/threads/".concat(e,"/runs"),In,{query:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}cancel(e,t,n){return this._client.post("/threads/".concat(e,"/runs/").concat(t,"/cancel"),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}async createAndPoll(e,t,n){const r=await this.create(e,t,n);return await this.poll(e,r.id,n)}createAndStream(e,t,n){return En.createAssistantStream(e,this._client.beta.threads.runs,t,n)}async poll(e,t,n){const r={...null===n||void 0===n?void 0:n.headers,"X-Stainless-Poll-Helper":"true"};for(null!==n&&void 0!==n&&n.pollIntervalMs&&(r["X-Stainless-Custom-Poll-Interval"]=n.pollIntervalMs.toString());;){const{data:o,response:i}=await this.retrieve(e,t,{...n,headers:{...null===n||void 0===n?void 0:n.headers,...r}}).withResponse();switch(o.status){case"queued":case"in_progress":case"cancelling":let e=5e3;if(null!==n&&void 0!==n&&n.pollIntervalMs)e=n.pollIntervalMs;else{const t=i.headers.get("openai-poll-after-ms");if(t){const n=parseInt(t);isNaN(n)||(e=n)}}await pe(e);break;case"requires_action":case"cancelled":case"completed":case"failed":case"expired":return o}}}stream(e,t,n){return En.createAssistantStream(e,this._client.beta.threads.runs,t,n)}submitToolOutputs(e,t,n,r){var o;return this._client.post("/threads/".concat(e,"/runs/").concat(t,"/submit_tool_outputs"),{body:n,...r,headers:{"OpenAI-Beta":"assistants=v2",...null===r||void 0===r?void 0:r.headers},stream:null!==(o=n.stream)&&void 0!==o&&o})}async submitToolOutputsAndPoll(e,t,n,r){const o=await this.submitToolOutputs(e,t,n,r);return await this.poll(e,o.id,r)}submitToolOutputsStream(e,t,n,r){return En.createToolAssistantStream(e,t,this._client.beta.threads.runs,n,r)}}class In extends xe{}!function(e){e.RunsPage=In,e.Steps=Cn,e.RunStepsPage=Tn}(Rn||(Rn={}));class An extends Ce{constructor(){super(...arguments),this.runs=new Rn(this._client),this.messages=new On(this._client)}create(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return ie(e)?this.create({},e):this._client.post("/threads",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}retrieve(e,t){return this._client.get("/threads/".concat(e),{...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}update(e,t,n){return this._client.post("/threads/".concat(e),{body:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}del(e,t){return this._client.delete("/threads/".concat(e),{...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}createAndRun(e,t){var n;return this._client.post("/threads/runs",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers},stream:null!==(n=e.stream)&&void 0!==n&&n})}async createAndRunPoll(e,t){const n=await this.createAndRun(e,t);return await this.runs.poll(n.thread_id,n.id,t)}createAndRunStream(e,t){return En.createThreadAssistantStream(e,this._client.beta.threads,t)}}!function(e){e.Runs=Rn,e.RunsPage=In,e.Messages=On,e.MessagesPage=xn}(An||(An={}));class Pn extends Ce{create(e,t,n){return this._client.post("/vector_stores/".concat(e,"/files"),{body:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}retrieve(e,t,n){return this._client.get("/vector_stores/".concat(e,"/files/").concat(t),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}list(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return ie(t)?this.list(e,{},t):this._client.getAPIList("/vector_stores/".concat(e,"/files"),kn,{query:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}del(e,t,n){return this._client.delete("/vector_stores/".concat(e,"/files/").concat(t),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}async createAndPoll(e,t,n){const r=await this.create(e,t,n);return await this.poll(e,r.id,n)}async poll(e,t,n){const r={...null===n||void 0===n?void 0:n.headers,"X-Stainless-Poll-Helper":"true"};for(null!==n&&void 0!==n&&n.pollIntervalMs&&(r["X-Stainless-Custom-Poll-Interval"]=n.pollIntervalMs.toString());;){const o=await this.retrieve(e,t,{...n,headers:r}).withResponse(),i=o.data;switch(i.status){case"in_progress":let e=5e3;if(null!==n&&void 0!==n&&n.pollIntervalMs)e=n.pollIntervalMs;else{const t=o.response.headers.get("openai-poll-after-ms");if(t){const n=parseInt(t);isNaN(n)||(e=n)}}await pe(e);break;case"failed":case"completed":return i}}}async upload(e,t,n){const r=await this._client.files.create({file:t,purpose:"assistants"},n);return this.create(e,{file_id:r.id},n)}async uploadAndPoll(e,t,n){const r=await this.upload(e,t,n);return await this.poll(e,r.id,n)}}class kn extends xe{}!function(e){e.VectorStoreFilesPage=kn}(Pn||(Pn={}));class Nn extends Ce{create(e,t,n){return this._client.post("/vector_stores/".concat(e,"/file_batches"),{body:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}retrieve(e,t,n){return this._client.get("/vector_stores/".concat(e,"/file_batches/").concat(t),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}cancel(e,t,n){return this._client.post("/vector_stores/".concat(e,"/file_batches/").concat(t,"/cancel"),{...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}async createAndPoll(e,t,n){const r=await this.create(e,t);return await this.poll(e,r.id,n)}listFiles(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;return ie(n)?this.listFiles(e,t,{},n):this._client.getAPIList("/vector_stores/".concat(e,"/file_batches/").concat(t,"/files"),kn,{query:n,...r,headers:{"OpenAI-Beta":"assistants=v2",...null===r||void 0===r?void 0:r.headers}})}async poll(e,t,n){const r={...null===n||void 0===n?void 0:n.headers,"X-Stainless-Poll-Helper":"true"};for(null!==n&&void 0!==n&&n.pollIntervalMs&&(r["X-Stainless-Custom-Poll-Interval"]=n.pollIntervalMs.toString());;){const{data:o,response:i}=await this.retrieve(e,t,{...n,headers:r}).withResponse();switch(o.status){case"in_progress":let e=5e3;if(null!==n&&void 0!==n&&n.pollIntervalMs)e=n.pollIntervalMs;else{const t=i.headers.get("openai-poll-after-ms");if(t){const n=parseInt(t);isNaN(n)||(e=n)}}await pe(e);break;case"failed":case"completed":return o}}}async uploadAndPoll(e,t,n){var r;let{files:o,fileIds:i=[]}=t;if(null===o||0==o.length)throw new Error("No files provided to process.");const a=null!==(r=null===n||void 0===n?void 0:n.maxConcurrency)&&void 0!==r?r:5,s=Math.min(a,o.length),u=this._client,c=o.values(),l=[...i];const d=Array(s).fill(c).map((async function(e){for(let t of e){const e=await u.files.create({file:t,purpose:"assistants"},n);l.push(e.id)}}));return await(async e=>{const t=await Promise.allSettled(e),n=t.filter((e=>"rejected"===e.status));if(n.length){for(const e of n)console.error(e.reason);throw new Error("".concat(n.length," promise(s) failed - see the above errors"))}const r=[];for(const o of t)"fulfilled"===o.status&&r.push(o.value);return r})(d),await this.createAndPoll(e,{file_ids:l})}}Nn||(Nn={});class Dn extends Ce{constructor(){super(...arguments),this.files=new Pn(this._client),this.fileBatches=new Nn(this._client)}create(e,t){return this._client.post("/vector_stores",{body:e,...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}retrieve(e,t){return this._client.get("/vector_stores/".concat(e),{...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}update(e,t,n){return this._client.post("/vector_stores/".concat(e),{body:t,...n,headers:{"OpenAI-Beta":"assistants=v2",...null===n||void 0===n?void 0:n.headers}})}list(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return ie(e)?this.list({},e):this._client.getAPIList("/vector_stores",Mn,{query:e,...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}del(e,t){return this._client.delete("/vector_stores/".concat(e),{...t,headers:{"OpenAI-Beta":"assistants=v2",...null===t||void 0===t?void 0:t.headers}})}}class Mn extends xe{}!function(e){e.VectorStoresPage=Mn,e.Files=Pn,e.VectorStoreFilesPage=kn,e.FileBatches=Nn}(Dn||(Dn={}));class jn extends Ce{constructor(){super(...arguments),this.vectorStores=new Dn(this._client),this.chat=new jt(this._client),this.assistants=new Ke(this._client),this.threads=new An(this._client)}}!function(e){e.VectorStores=Dn,e.VectorStoresPage=Mn,e.Chat=jt,e.Assistants=Ke,e.AssistantsPage=Ge,e.Threads=An}(jn||(jn={}));class Ln extends Ce{create(e,t){return this._client.post("/batches",{body:e,...t})}retrieve(e,t){return this._client.get("/batches/".concat(e),t)}list(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return ie(e)?this.list({},e):this._client.getAPIList("/batches",Bn,{query:e,...t})}cancel(e,t){return this._client.post("/batches/".concat(e,"/cancel"),t)}}class Bn extends xe{}var qn;!function(e){e.BatchesPage=Bn}(Ln||(Ln={}));class Fn extends ee{constructor(){var e,t,n;let{baseURL:r=me("OPENAI_BASE_URL"),apiKey:o=me("OPENAI_API_KEY"),organization:i=(null!==(e=me("OPENAI_ORG_ID"))&&void 0!==e?e:null),project:a=(null!==(t=me("OPENAI_PROJECT_ID"))&&void 0!==t?t:null),...s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(void 0===o)throw new w("The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).");const u={apiKey:o,organization:i,project:a,...s,baseURL:r||"https://api.openai.com/v1"};if(!u.dangerouslyAllowBrowser&&"undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof navigator)throw new w("It looks like you're running in a browser-like environment.\n\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\nIf you understand the risks and have appropriate mitigations in place,\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\n\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\n\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\n");super({baseURL:u.baseURL,timeout:null!==(n=u.timeout)&&void 0!==n?n:6e5,httpAgent:u.httpAgent,maxRetries:u.maxRetries,fetch:u.fetch}),this.completions=new Te(this),this.chat=new Ie(this),this.embeddings=new Ae(this),this.files=new Pe(this),this.images=new Ne(this),this.audio=new Le(this),this.moderations=new Be(this),this.models=new qe(this),this.fineTuning=new Ve(this),this.beta=new jn(this),this.batches=new Ln(this),this._options=u,this.apiKey=o,this.organization=i,this.project=a}defaultQuery(){return this._options.defaultQuery}defaultHeaders(e){return{...super.defaultHeaders(e),"OpenAI-Organization":this.organization,"OpenAI-Project":this.project,...this._options.defaultHeaders}}authHeaders(e){return{Authorization:"Bearer ".concat(this.apiKey)}}}qn=Fn,Fn.OpenAI=qn,Fn.OpenAIError=w,Fn.APIError=_,Fn.APIConnectionError=E,Fn.APIConnectionTimeoutError=O,Fn.APIUserAbortError=S,Fn.NotFoundError=R,Fn.ConflictError=I,Fn.RateLimitError=P,Fn.BadRequestError=x,Fn.AuthenticationError=C,Fn.InternalServerError=k,Fn.PermissionDeniedError=T,Fn.UnprocessableEntityError=A,Fn.toFile=$,Fn.fileFromPath=f;const{OpenAIError:zn,APIError:$n,APIConnectionError:Un,APIConnectionTimeoutError:Hn,APIUserAbortError:Wn,NotFoundError:Vn,ConflictError:Kn,RateLimitError:Gn,BadRequestError:Xn,AuthenticationError:Yn,InternalServerError:Jn,PermissionDeniedError:Qn,UnprocessableEntityError:Zn}=r;!function(e){e.Page=Oe,e.CursorPage=xe,e.Completions=Te,e.Chat=Ie,e.Embeddings=Ae,e.Files=Pe,e.FileObjectsPage=ke,e.Images=Ne,e.Audio=Le,e.Moderations=Be,e.Models=qe,e.ModelsPage=Fe,e.FineTuning=Ve,e.Beta=jn,e.Batches=Ln,e.BatchesPage=Bn}(Fn||(Fn={}));new Set(["/completions","/chat/completions","/embeddings","/audio/transcriptions","/audio/translations","/audio/speech","/images/generations"]);const er=Fn},27686:(e,t,n)=>{"use strict";let r;function o(){return r||(r=new Image,r.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),r}n.d(t,{n:()=>o})},67537:(e,t,n)=>{"use strict";n.d(t,{t2:()=>x});var r={};function o(e){let t=null;return()=>(null==t&&(t=e()),t)}n.r(r),n.d(r,{FILE:()=>s,HTML:()=>l,TEXT:()=>c,URL:()=>u});class i{enter(e){const t=this.entered.length;return this.entered=function(e,t){const n=new Set,r=e=>n.add(e);e.forEach(r),t.forEach(r);const o=[];return n.forEach((e=>o.push(e))),o}(this.entered.filter((t=>this.isNodeInDocument(t)&&(!t.contains||t.contains(e)))),[e]),0===t&&this.entered.length>0}leave(e){const t=this.entered.length;var n,r;return this.entered=(n=this.entered.filter(this.isNodeInDocument),r=e,n.filter((e=>e!==r))),t>0&&0===this.entered.length}reset(){this.entered=[]}constructor(e){this.entered=[],this.isNodeInDocument=e}}class a{initializeExposedProperties(){Object.keys(this.config.exposeProperties).forEach((e=>{Object.defineProperty(this.item,e,{configurable:!0,enumerable:!0,get:()=>(console.warn("Browser doesn't allow reading \"".concat(e,'" until the drop event.')),null)})}))}loadDataTransfer(e){if(e){const t={};Object.keys(this.config.exposeProperties).forEach((n=>{const r=this.config.exposeProperties[n];null!=r&&(t[n]={value:r(e,this.config.matchesTypes),configurable:!0,enumerable:!0})})),Object.defineProperties(this.item,t)}}canDrag(){return!0}beginDrag(){return this.item}isDragging(e,t){return t===e.getSourceId()}endDrag(){}constructor(e){this.config=e,this.item={},this.initializeExposedProperties()}}const s="__NATIVE_FILE__",u="__NATIVE_URL__",c="__NATIVE_TEXT__",l="__NATIVE_HTML__";function d(e,t,n){const r=t.reduce(((t,n)=>t||e.getData(n)),"");return null!=r?r:n}const f={[s]:{exposeProperties:{files:e=>Array.prototype.slice.call(e.files),items:e=>e.items,dataTransfer:e=>e},matchesTypes:["Files"]},[l]:{exposeProperties:{html:(e,t)=>d(e,t,""),dataTransfer:e=>e},matchesTypes:["Html","text/html"]},[u]:{exposeProperties:{urls:(e,t)=>d(e,t,"").split("\n"),dataTransfer:e=>e},matchesTypes:["Url","text/uri-list"]},[c]:{exposeProperties:{text:(e,t)=>d(e,t,""),dataTransfer:e=>e},matchesTypes:["Text","text/plain"]}};function h(e){if(!e)return null;const t=Array.prototype.slice.call(e.types||[]);return Object.keys(f).filter((e=>{const n=f[e];return!!(null===n||void 0===n?void 0:n.matchesTypes)&&n.matchesTypes.some((e=>t.indexOf(e)>-1))}))[0]||null}const p=o((()=>/firefox/i.test(navigator.userAgent))),v=o((()=>Boolean(window.safari)));class g{interpolate(e){const{xs:t,ys:n,c1s:r,c2s:o,c3s:i}=this;let a=t.length-1;if(e===t[a])return n[a];let s,u=0,c=i.length-1;for(;u<=c;){s=Math.floor(.5*(u+c));const r=t[s];if(re))return n[s];c=s-1}}a=Math.max(0,c);const l=e-t[a],d=l*l;return n[a]+r[a]*l+o[a]*d+i[a]*l*d}constructor(e,t){const{length:n}=e,r=[];for(let h=0;he[t]{let e=new g([0,.5,1],[s.y,s.y/c*h,s.y+h-c]).interpolate(d);return v()&&i&&(e+=(window.devicePixelRatio-1)*h),e})()}}class _{get window(){return this.globalContext?this.globalContext:"undefined"!==typeof window?window:void 0}get document(){var e;return(null===(e=this.globalContext)||void 0===e?void 0:e.document)?this.globalContext.document:this.window?this.window.document:void 0}get rootElement(){var e;return(null===(e=this.optionsArgs)||void 0===e?void 0:e.rootElement)||this.window}constructor(e,t){this.ownerDocument=null,this.globalContext=e,this.optionsArgs=t}}function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e){for(var t=1;t{this.sourcePreviewNodes.delete(e),this.sourcePreviewNodeOptions.delete(e)}}connectDragSource(e,t,n){this.sourceNodes.set(e,t),this.sourceNodeOptions.set(e,n);const r=t=>this.handleDragStart(t,e),o=e=>this.handleSelectStart(e);return t.setAttribute("draggable","true"),t.addEventListener("dragstart",r),t.addEventListener("selectstart",o),()=>{this.sourceNodes.delete(e),this.sourceNodeOptions.delete(e),t.removeEventListener("dragstart",r),t.removeEventListener("selectstart",o),t.setAttribute("draggable","false")}}connectDropTarget(e,t){const n=t=>this.handleDragEnter(t,e),r=t=>this.handleDragOver(t,e),o=t=>this.handleDrop(t,e);return t.addEventListener("dragenter",n),t.addEventListener("dragover",r),t.addEventListener("drop",o),()=>{t.removeEventListener("dragenter",n),t.removeEventListener("dragover",r),t.removeEventListener("drop",o)}}addEventListeners(e){e.addEventListener&&(e.addEventListener("dragstart",this.handleTopDragStart),e.addEventListener("dragstart",this.handleTopDragStartCapture,!0),e.addEventListener("dragend",this.handleTopDragEndCapture,!0),e.addEventListener("dragenter",this.handleTopDragEnter),e.addEventListener("dragenter",this.handleTopDragEnterCapture,!0),e.addEventListener("dragleave",this.handleTopDragLeaveCapture,!0),e.addEventListener("dragover",this.handleTopDragOver),e.addEventListener("dragover",this.handleTopDragOverCapture,!0),e.addEventListener("drop",this.handleTopDrop),e.addEventListener("drop",this.handleTopDropCapture,!0))}removeEventListeners(e){e.removeEventListener&&(e.removeEventListener("dragstart",this.handleTopDragStart),e.removeEventListener("dragstart",this.handleTopDragStartCapture,!0),e.removeEventListener("dragend",this.handleTopDragEndCapture,!0),e.removeEventListener("dragenter",this.handleTopDragEnter),e.removeEventListener("dragenter",this.handleTopDragEnterCapture,!0),e.removeEventListener("dragleave",this.handleTopDragLeaveCapture,!0),e.removeEventListener("dragover",this.handleTopDragOver),e.removeEventListener("dragover",this.handleTopDragOverCapture,!0),e.removeEventListener("drop",this.handleTopDrop),e.removeEventListener("drop",this.handleTopDropCapture,!0))}getCurrentSourceNodeOptions(){const e=this.monitor.getSourceId(),t=this.sourceNodeOptions.get(e);return E({dropEffect:this.altKeyPressed?"copy":"move"},t||{})}getCurrentDropEffect(){return this.isDraggingNativeItem()?"copy":this.getCurrentSourceNodeOptions().dropEffect}getCurrentSourcePreviewNodeOptions(){const e=this.monitor.getSourceId();return E({anchorX:.5,anchorY:.5,captureDraggingState:!1},this.sourcePreviewNodeOptions.get(e)||{})}isDraggingNativeItem(){const e=this.monitor.getItemType();return Object.keys(r).some((t=>r[t]===e))}beginDragNativeItem(e,t){this.clearCurrentDragSourceNode(),this.currentNativeSource=function(e,t){const n=f[e];if(!n)throw new Error("native type ".concat(e," has no configuration"));const r=new a(n);return r.loadDataTransfer(t),r}(e,t),this.currentNativeHandle=this.registry.addSource(e,this.currentNativeSource),this.actions.beginDrag([this.currentNativeHandle])}setCurrentDragSourceNode(e){this.clearCurrentDragSourceNode(),this.currentDragSourceNode=e;this.mouseMoveTimeoutTimer=setTimeout((()=>{var e;return null===(e=this.rootElement)||void 0===e?void 0:e.addEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0)}),1e3)}clearCurrentDragSourceNode(){if(this.currentDragSourceNode){var e;if(this.currentDragSourceNode=null,this.rootElement)null===(e=this.window)||void 0===e||e.clearTimeout(this.mouseMoveTimeoutTimer||void 0),this.rootElement.removeEventListener("mousemove",this.endDragIfSourceWasRemovedFromDOM,!0);return this.mouseMoveTimeoutTimer=null,!0}return!1}handleDragStart(e,t){e.defaultPrevented||(this.dragStartSourceIds||(this.dragStartSourceIds=[]),this.dragStartSourceIds.unshift(t))}handleDragEnter(e,t){this.dragEnterTargetIds.unshift(t)}handleDragOver(e,t){null===this.dragOverTargetIds&&(this.dragOverTargetIds=[]),this.dragOverTargetIds.unshift(t)}handleDrop(e,t){this.dropTargetIds.unshift(t)}constructor(e,t,n){this.sourcePreviewNodes=new Map,this.sourcePreviewNodeOptions=new Map,this.sourceNodes=new Map,this.sourceNodeOptions=new Map,this.dragStartSourceIds=null,this.dropTargetIds=[],this.dragEnterTargetIds=[],this.currentNativeSource=null,this.currentNativeHandle=null,this.currentDragSourceNode=null,this.altKeyPressed=!1,this.mouseMoveTimeoutTimer=null,this.asyncEndDragFrameId=null,this.dragOverTargetIds=null,this.lastClientOffset=null,this.hoverRafId=null,this.getSourceClientOffset=e=>{const t=this.sourceNodes.get(e);return t&&b(t)||null},this.endDragNativeItem=()=>{this.isDraggingNativeItem()&&(this.actions.endDrag(),this.currentNativeHandle&&this.registry.removeSource(this.currentNativeHandle),this.currentNativeHandle=null,this.currentNativeSource=null)},this.isNodeInDocument=e=>Boolean(e&&this.document&&this.document.body&&this.document.body.contains(e)),this.endDragIfSourceWasRemovedFromDOM=()=>{const e=this.currentDragSourceNode;null==e||this.isNodeInDocument(e)||(this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover())},this.scheduleHover=e=>{null===this.hoverRafId&&"undefined"!==typeof requestAnimationFrame&&(this.hoverRafId=requestAnimationFrame((()=>{this.monitor.isDragging()&&this.actions.hover(e||[],{clientOffset:this.lastClientOffset}),this.hoverRafId=null})))},this.cancelHover=()=>{null!==this.hoverRafId&&"undefined"!==typeof cancelAnimationFrame&&(cancelAnimationFrame(this.hoverRafId),this.hoverRafId=null)},this.handleTopDragStartCapture=()=>{this.clearCurrentDragSourceNode(),this.dragStartSourceIds=[]},this.handleTopDragStart=e=>{if(e.defaultPrevented)return;const{dragStartSourceIds:t}=this;this.dragStartSourceIds=null;const n=y(e);this.monitor.isDragging()&&(this.actions.endDrag(),this.cancelHover()),this.actions.beginDrag(t||[],{publishSource:!1,getSourceClientOffset:this.getSourceClientOffset,clientOffset:n});const{dataTransfer:r}=e,o=h(r);if(this.monitor.isDragging()){if(r&&"function"===typeof r.setDragImage){const e=this.monitor.getSourceId(),t=this.sourceNodes.get(e),o=this.sourcePreviewNodes.get(e)||t;if(o){const{anchorX:e,anchorY:i,offsetX:a,offsetY:s}=this.getCurrentSourcePreviewNodeOptions(),u=w(t,o,n,{anchorX:e,anchorY:i},{offsetX:a,offsetY:s});r.setDragImage(o,u.x,u.y)}}try{null===r||void 0===r||r.setData("application/json",{})}catch(i){}this.setCurrentDragSourceNode(e.target);const{captureDraggingState:t}=this.getCurrentSourcePreviewNodeOptions();t?this.actions.publishDragSource():setTimeout((()=>this.actions.publishDragSource()),0)}else if(o)this.beginDragNativeItem(o);else{if(r&&!r.types&&(e.target&&!e.target.hasAttribute||!e.target.hasAttribute("draggable")))return;e.preventDefault()}},this.handleTopDragEndCapture=()=>{this.clearCurrentDragSourceNode()&&this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleTopDragEnterCapture=e=>{var t;(this.dragEnterTargetIds=[],this.isDraggingNativeItem())&&(null===(t=this.currentNativeSource)||void 0===t||t.loadDataTransfer(e.dataTransfer));if(!this.enterLeaveCounter.enter(e.target)||this.monitor.isDragging())return;const{dataTransfer:n}=e,r=h(n);r&&this.beginDragNativeItem(r,n)},this.handleTopDragEnter=e=>{const{dragEnterTargetIds:t}=this;if(this.dragEnterTargetIds=[],!this.monitor.isDragging())return;this.altKeyPressed=e.altKey,t.length>0&&this.actions.hover(t,{clientOffset:y(e)});t.some((e=>this.monitor.canDropOnTarget(e)))&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=this.getCurrentDropEffect()))},this.handleTopDragOverCapture=e=>{var t;(this.dragOverTargetIds=[],this.isDraggingNativeItem())&&(null===(t=this.currentNativeSource)||void 0===t||t.loadDataTransfer(e.dataTransfer))},this.handleTopDragOver=e=>{const{dragOverTargetIds:t}=this;if(this.dragOverTargetIds=[],!this.monitor.isDragging())return e.preventDefault(),void(e.dataTransfer&&(e.dataTransfer.dropEffect="none"));this.altKeyPressed=e.altKey,this.lastClientOffset=y(e),this.scheduleHover(t);(t||[]).some((e=>this.monitor.canDropOnTarget(e)))?(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=this.getCurrentDropEffect())):this.isDraggingNativeItem()?e.preventDefault():(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="none"))},this.handleTopDragLeaveCapture=e=>{this.isDraggingNativeItem()&&e.preventDefault();this.enterLeaveCounter.leave(e.target)&&(this.isDraggingNativeItem()&&setTimeout((()=>this.endDragNativeItem()),0),this.cancelHover())},this.handleTopDropCapture=e=>{var t;(this.dropTargetIds=[],this.isDraggingNativeItem())?(e.preventDefault(),null===(t=this.currentNativeSource)||void 0===t||t.loadDataTransfer(e.dataTransfer)):h(e.dataTransfer)&&e.preventDefault();this.enterLeaveCounter.reset()},this.handleTopDrop=e=>{const{dropTargetIds:t}=this;this.dropTargetIds=[],this.actions.hover(t,{clientOffset:y(e)}),this.actions.drop({dropEffect:this.getCurrentDropEffect()}),this.isDraggingNativeItem()?this.endDragNativeItem():this.monitor.isDragging()&&this.actions.endDrag(),this.cancelHover()},this.handleSelectStart=e=>{const t=e.target;"function"===typeof t.dragDrop&&("INPUT"===t.tagName||"SELECT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable||(e.preventDefault(),t.dragDrop()))},this.options=new _(t,n),this.actions=e.getActions(),this.monitor=e.getMonitor(),this.registry=e.getRegistry(),this.enterLeaveCounter=new i(this.isNodeInDocument)}}const x=function(e,t,n){return new O(e,t,n)}},28791:(e,t,n)=>{"use strict";n.d(t,{qi:()=>p});var r,o=n(92027);!function(e){e.mouse="mouse",e.touch="touch",e.keyboard="keyboard"}(r||(r={}));class i{get delay(){var e;return null!==(e=this.args.delay)&&void 0!==e?e:0}get scrollAngleRanges(){return this.args.scrollAngleRanges}get getDropTargetElementsAtPoint(){return this.args.getDropTargetElementsAtPoint}get ignoreContextMenu(){var e;return null!==(e=this.args.ignoreContextMenu)&&void 0!==e&&e}get enableHoverOutsideTarget(){var e;return null!==(e=this.args.enableHoverOutsideTarget)&&void 0!==e&&e}get enableKeyboardEvents(){var e;return null!==(e=this.args.enableKeyboardEvents)&&void 0!==e&&e}get enableMouseEvents(){var e;return null!==(e=this.args.enableMouseEvents)&&void 0!==e&&e}get enableTouchEvents(){var e;return null===(e=this.args.enableTouchEvents)||void 0===e||e}get touchSlop(){return this.args.touchSlop||0}get delayTouchStart(){var e,t,n,r;return null!==(r=null!==(n=null===(e=this.args)||void 0===e?void 0:e.delayTouchStart)&&void 0!==n?n:null===(t=this.args)||void 0===t?void 0:t.delay)&&void 0!==r?r:0}get delayMouseStart(){var e,t,n,r;return null!==(r=null!==(n=null===(e=this.args)||void 0===e?void 0:e.delayMouseStart)&&void 0!==n?n:null===(t=this.args)||void 0===t?void 0:t.delay)&&void 0!==r?r:0}get window(){return this.context&&this.context.window?this.context.window:"undefined"!==typeof window?window:void 0}get document(){var e;return(null===(e=this.context)||void 0===e?void 0:e.document)?this.context.document:this.window?this.window.document:void 0}get rootElement(){var e;return(null===(e=this.args)||void 0===e?void 0:e.rootElement)||this.document}constructor(e,t){this.args=e,this.context=t}}const a=1,s=0;function u(e){return void 0===e.button||e.button===s}function c(e){return!!e.targetTouches}function l(e,t){return c(e)?function(e,t){return 1===e.targetTouches.length?l(e.targetTouches[0]):t&&1===e.touches.length&&e.touches[0].target===t.target?l(e.touches[0]):void 0}(e,t):{x:e.clientX,y:e.clientY}}const d=(()=>{let e=!1;try{addEventListener("test",(()=>{}),Object.defineProperty({},"passive",{get:()=>(e=!0,!0)}))}catch(t){}return e})(),f={[r.mouse]:{start:"mousedown",move:"mousemove",end:"mouseup",contextmenu:"contextmenu"},[r.touch]:{start:"touchstart",move:"touchmove",end:"touchend"},[r.keyboard]:{keydown:"keydown"}};class h{profile(){var e;return{sourceNodes:this.sourceNodes.size,sourcePreviewNodes:this.sourcePreviewNodes.size,sourcePreviewNodeOptions:this.sourcePreviewNodeOptions.size,targetNodes:this.targetNodes.size,dragOverTargetIds:(null===(e=this.dragOverTargetIds)||void 0===e?void 0:e.length)||0}}get document(){return this.options.document}setup(){const e=this.options.rootElement;e&&((0,o.V)(!h.isSetUp,"Cannot have two Touch backends at the same time."),h.isSetUp=!0,this.addEventListener(e,"start",this.getTopMoveStartHandler()),this.addEventListener(e,"start",this.handleTopMoveStartCapture,!0),this.addEventListener(e,"move",this.handleTopMove),this.addEventListener(e,"move",this.handleTopMoveCapture,!0),this.addEventListener(e,"end",this.handleTopMoveEndCapture,!0),this.options.enableMouseEvents&&!this.options.ignoreContextMenu&&this.addEventListener(e,"contextmenu",this.handleTopMoveEndCapture),this.options.enableKeyboardEvents&&this.addEventListener(e,"keydown",this.handleCancelOnEscape,!0))}teardown(){const e=this.options.rootElement;e&&(h.isSetUp=!1,this._mouseClientOffset={},this.removeEventListener(e,"start",this.handleTopMoveStartCapture,!0),this.removeEventListener(e,"start",this.handleTopMoveStart),this.removeEventListener(e,"move",this.handleTopMoveCapture,!0),this.removeEventListener(e,"move",this.handleTopMove),this.removeEventListener(e,"end",this.handleTopMoveEndCapture,!0),this.options.enableMouseEvents&&!this.options.ignoreContextMenu&&this.removeEventListener(e,"contextmenu",this.handleTopMoveEndCapture),this.options.enableKeyboardEvents&&this.removeEventListener(e,"keydown",this.handleCancelOnEscape,!0),this.uninstallSourceNodeRemovalObserver())}addEventListener(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const o=d?{capture:r,passive:!1}:r;this.listenerTypes.forEach((function(r){const i=f[r][t];i&&e.addEventListener(i,n,o)}))}removeEventListener(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const o=d?{capture:r,passive:!1}:r;this.listenerTypes.forEach((function(r){const i=f[r][t];i&&e.removeEventListener(i,n,o)}))}connectDragSource(e,t){const n=this.handleMoveStart.bind(this,e);return this.sourceNodes.set(e,t),this.addEventListener(t,"start",n),()=>{this.sourceNodes.delete(e),this.removeEventListener(t,"start",n)}}connectDragPreview(e,t,n){return this.sourcePreviewNodeOptions.set(e,n),this.sourcePreviewNodes.set(e,t),()=>{this.sourcePreviewNodes.delete(e),this.sourcePreviewNodeOptions.delete(e)}}connectDropTarget(e,t){const n=this.options.rootElement;if(!this.document||!n)return()=>{};const r=r=>{if(!this.document||!n||!this.monitor.isDragging())return;let o;switch(r.type){case f.mouse.move:o={x:r.clientX,y:r.clientY};break;case f.touch.move:var i,a;o={x:(null===(i=r.touches[0])||void 0===i?void 0:i.clientX)||0,y:(null===(a=r.touches[0])||void 0===a?void 0:a.clientY)||0}}const s=null!=o?this.document.elementFromPoint(o.x,o.y):void 0,u=s&&t.contains(s);return s===t||u?this.handleMove(r,e):void 0};return this.addEventListener(this.document.body,"move",r),this.targetNodes.set(e,t),()=>{this.document&&(this.targetNodes.delete(e),this.removeEventListener(this.document.body,"move",r))}}getTopMoveStartHandler(){return this.options.delayTouchStart||this.options.delayMouseStart?this.handleTopMoveStartDelay:this.handleTopMoveStart}installSourceNodeRemovalObserver(e){this.uninstallSourceNodeRemovalObserver(),this.draggedSourceNode=e,this.draggedSourceNodeRemovalObserver=new MutationObserver((()=>{e&&!e.parentElement&&(this.resurrectSourceNode(),this.uninstallSourceNodeRemovalObserver())})),e&&e.parentElement&&this.draggedSourceNodeRemovalObserver.observe(e.parentElement,{childList:!0})}resurrectSourceNode(){this.document&&this.draggedSourceNode&&(this.draggedSourceNode.style.display="none",this.draggedSourceNode.removeAttribute("data-reactid"),this.document.body.appendChild(this.draggedSourceNode))}uninstallSourceNodeRemovalObserver(){this.draggedSourceNodeRemovalObserver&&this.draggedSourceNodeRemovalObserver.disconnect(),this.draggedSourceNodeRemovalObserver=void 0,this.draggedSourceNode=void 0}constructor(e,t,n){this.getSourceClientOffset=e=>{const t=this.sourceNodes.get(e);return t&&function(e){const t=1===e.nodeType?e:e.parentElement;if(!t)return;const{top:n,left:r}=t.getBoundingClientRect();return{x:r,y:n}}(t)},this.handleTopMoveStartCapture=e=>{u(e)&&(this.moveStartSourceIds=[])},this.handleMoveStart=e=>{Array.isArray(this.moveStartSourceIds)&&this.moveStartSourceIds.unshift(e)},this.handleTopMoveStart=e=>{if(!u(e))return;const t=l(e);t&&(c(e)&&(this.lastTargetTouchFallback=e.targetTouches[0]),this._mouseClientOffset=t),this.waitingForDelay=!1},this.handleTopMoveStartDelay=e=>{if(!u(e))return;const t=e.type===f.touch.start?this.options.delayTouchStart:this.options.delayMouseStart;this.timeout=setTimeout(this.handleTopMoveStart.bind(this,e),t),this.waitingForDelay=!0},this.handleTopMoveCapture=()=>{this.dragOverTargetIds=[]},this.handleMove=(e,t)=>{this.dragOverTargetIds&&this.dragOverTargetIds.unshift(t)},this.handleTopMove=e=>{if(this.timeout&&clearTimeout(this.timeout),!this.document||this.waitingForDelay)return;const{moveStartSourceIds:t,dragOverTargetIds:n}=this,r=this.options.enableHoverOutsideTarget,o=l(e,this.lastTargetTouchFallback);if(!o)return;if(this._isScrolling||!this.monitor.isDragging()&&function(e,t,n,r,o){if(!o)return!1;const i=180*Math.atan2(r-t,n-e)/Math.PI+180;for(let a=0;a=e.start)&&(null==e.end||i<=e.end))return!0}return!1}(this._mouseClientOffset.x||0,this._mouseClientOffset.y||0,o.x,o.y,this.options.scrollAngleRanges))return void(this._isScrolling=!0);var i,a,s,u;if(!this.monitor.isDragging()&&this._mouseClientOffset.hasOwnProperty("x")&&t&&(i=this._mouseClientOffset.x||0,a=this._mouseClientOffset.y||0,s=o.x,u=o.y,Math.sqrt(Math.pow(Math.abs(s-i),2)+Math.pow(Math.abs(u-a),2))>(this.options.touchSlop?this.options.touchSlop:0))&&(this.moveStartSourceIds=void 0,this.actions.beginDrag(t,{clientOffset:this._mouseClientOffset,getSourceClientOffset:this.getSourceClientOffset,publishSource:!1})),!this.monitor.isDragging())return;const c=this.sourceNodes.get(this.monitor.getSourceId());this.installSourceNodeRemovalObserver(c),this.actions.publishDragSource(),e.cancelable&&e.preventDefault();const d=(n||[]).map((e=>this.targetNodes.get(e))).filter((e=>!!e)),f=this.options.getDropTargetElementsAtPoint?this.options.getDropTargetElementsAtPoint(o.x,o.y,d):this.document.elementsFromPoint(o.x,o.y),h=[];for(const l in f){if(!f.hasOwnProperty(l))continue;let e=f[l];for(null!=e&&h.push(e);e;)e=e.parentElement,e&&-1===h.indexOf(e)&&h.push(e)}const p=h.filter((e=>d.indexOf(e)>-1)).map((e=>this._getDropTargetId(e))).filter((e=>!!e)).filter(((e,t,n)=>n.indexOf(e)===t));if(r)for(const l in this.targetNodes){const e=this.targetNodes.get(l);if(c&&e&&e.contains(c)&&-1===p.indexOf(l)){p.unshift(l);break}}p.reverse(),this.actions.hover(p,{clientOffset:o})},this._getDropTargetId=e=>{const t=this.targetNodes.keys();let n=t.next();for(;!1===n.done;){const r=n.value;if(e===this.targetNodes.get(r))return r;n=t.next()}},this.handleTopMoveEndCapture=e=>{this._isScrolling=!1,this.lastTargetTouchFallback=void 0,function(e){return void 0===e.buttons||0===(e.buttons&a)}(e)&&(this.monitor.isDragging()&&!this.monitor.didDrop()?(e.cancelable&&e.preventDefault(),this._mouseClientOffset={},this.uninstallSourceNodeRemovalObserver(),this.actions.drop(),this.actions.endDrag()):this.moveStartSourceIds=void 0)},this.handleCancelOnEscape=e=>{"Escape"===e.key&&this.monitor.isDragging()&&(this._mouseClientOffset={},this.uninstallSourceNodeRemovalObserver(),this.actions.endDrag())},this.options=new i(n,t),this.actions=e.getActions(),this.monitor=e.getMonitor(),this.sourceNodes=new Map,this.sourcePreviewNodes=new Map,this.sourcePreviewNodeOptions=new Map,this.targetNodes=new Map,this.listenerTypes=[],this._mouseClientOffset={},this._isScrolling=!1,this.options.enableMouseEvents&&this.listenerTypes.push(r.mouse),this.options.enableTouchEvents&&this.listenerTypes.push(r.touch),this.options.enableKeyboardEvents&&this.listenerTypes.push(r.keyboard)}}const p=function(e){return new h(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})}},45389:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});const r=(0,n(28437).createContext)({dragDropManager:void 0})},30335:(e,t,n)=>{"use strict";n.d(t,{Q:()=>me});var r=n(70579);function o(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var i="function"===typeof Symbol&&Symbol.observable||"@@observable",a=function(){return Math.random().toString(36).substring(7).split("").join(".")},s={INIT:"@@redux/INIT"+a(),REPLACE:"@@redux/REPLACE"+a(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+a()}};function u(e){if("object"!==typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function c(e,t,n){var r;if("function"===typeof t&&"function"===typeof n||"function"===typeof n&&"function"===typeof arguments[3])throw new Error(o(0));if("function"===typeof t&&"undefined"===typeof n&&(n=t,t=void 0),"undefined"!==typeof n){if("function"!==typeof n)throw new Error(o(1));return n(c)(e,t)}if("function"!==typeof e)throw new Error(o(2));var a=e,l=t,d=[],f=d,h=!1;function p(){f===d&&(f=d.slice())}function v(){if(h)throw new Error(o(3));return l}function g(e){if("function"!==typeof e)throw new Error(o(4));if(h)throw new Error(o(5));var t=!0;return p(),f.push(e),function(){if(t){if(h)throw new Error(o(6));t=!1,p();var n=f.indexOf(e);f.splice(n,1),d=null}}}function m(e){if(!u(e))throw new Error(o(7));if("undefined"===typeof e.type)throw new Error(o(8));if(h)throw new Error(o(9));try{h=!0,l=a(l,e)}finally{h=!1}for(var t=d=f,n=0;n0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{publishSource:!0};const{publishSource:r=!0,clientOffset:o,getSourceClientOffset:i}=n,a=e.getMonitor(),s=e.getRegistry();e.dispatch(b(o)),function(e,t,n){(0,l.V)(!t.isDragging(),"Cannot call beginDrag while dragging."),e.forEach((function(e){(0,l.V)(n.getSource(e),"Expected sourceIds to be registered.")}))}(t,a,s);const u=function(e,t){let n=null;for(let r=e.length-1;r>=0;r--)if(t.canDragSource(e[r])){n=e[r];break}return n}(t,a);if(null==u)return void e.dispatch(y);let c=null;if(o){if(!i)throw new Error("getSourceClientOffset must be defined");!function(e){(0,l.V)("function"===typeof e,"When clientOffset is provided, getSourceClientOffset must be a function.")}(i),c=i(u)}e.dispatch(b(o,c));const f=s.getSource(u).beginDrag(a,u);if(null==f)return;!function(e){(0,l.V)(d(e),"Item must be an object.")}(f),s.pinSource(u);const p=s.getSourceType(u);return{type:h,payload:{itemType:p,item:f,sourceId:u,clientOffset:o||null,sourceClientOffset:c||null,isSourcePublic:!!r}}}}function _(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};const n=e.getMonitor(),r=e.getRegistry();!function(e){(0,l.V)(e.isDragging(),"Cannot call drop while not dragging."),(0,l.V)(!e.didDrop(),"Cannot call drop twice during one drag operation.")}(n);const o=function(e){const t=e.getTargetIds().filter(e.canDropOnTarget,e);return t.reverse(),t}(n);o.forEach(((o,i)=>{const a=function(e,t,n,r){const o=n.getTarget(e);let i=o?o.drop(r,e):void 0;(function(e){(0,l.V)("undefined"===typeof e||d(e),"Drop result must either be an object or undefined.")})(i),"undefined"===typeof i&&(i=0===t?{}:r.getDropResult());return i}(o,i,r,n),s={type:g,payload:{dropResult:S({},t,a)}};e.dispatch(s)}))}}function O(e){return function(){const t=e.getMonitor(),n=e.getRegistry();!function(e){(0,l.V)(e.isDragging(),"Cannot call endDrag while not dragging.")}(t);const r=t.getSourceId();if(null!=r){n.getSource(r,!0).endDrag(t,r),n.unpinSource()}return{type:m}}}function x(e,t){return null===t?null===e:Array.isArray(e)?e.some((e=>e===t)):e===t}function C(e){return function(t){let{clientOffset:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!function(e){(0,l.V)(Array.isArray(e),"Expected targetIds to be an array.")}(t);const r=t.slice(0),o=e.getMonitor(),i=e.getRegistry();return function(e,t,n){for(let r=e.length-1;r>=0;r--){const o=e[r];x(t.getTargetType(o),n)||e.splice(r,1)}}(r,i,o.getItemType()),function(e,t,n){(0,l.V)(t.isDragging(),"Cannot call hover while not dragging."),(0,l.V)(!t.didDrop(),"Cannot call hover after drop.");for(let r=0;r{const i=n[o];var a;return r[o]=(a=i,function(){for(var n=arguments.length,r=new Array(n),o=0;o{const e=this.store.getState().refCount>0;this.backend&&(e&&!this.isSetUp?(this.backend.setup(),this.isSetUp=!0):!e&&this.isSetUp&&(this.backend.teardown(),this.isSetUp=!1))},this.store=e,this.monitor=t,e.subscribe(this.handleRefCountChange)}}function I(e,t){return{x:e.x-t.x,y:e.y-t.y}}const A=[],P=[];A.__IS_NONE__=!0,P.__IS_ALL__=!0;class k{subscribeToStateChange(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{handlerIds:n}=t;(0,l.V)("function"===typeof e,"listener must be a function."),(0,l.V)("undefined"===typeof n||Array.isArray(n),"handlerIds, when specified, must be an array of strings.");let r=this.store.getState().stateId;return this.store.subscribe((()=>{const t=this.store.getState(),o=t.stateId;try{const i=o===r||o===r+1&&!function(e,t){return e!==A&&(e===P||"undefined"===typeof t||(n=e,t.filter((e=>n.indexOf(e)>-1))).length>0);var n}(t.dirtyHandlerIds,n);i||e()}finally{r=o}}))}subscribeToOffsetChange(e){(0,l.V)("function"===typeof e,"listener must be a function.");let t=this.store.getState().dragOffset;return this.store.subscribe((()=>{const n=this.store.getState().dragOffset;n!==t&&(t=n,e())}))}canDragSource(e){if(!e)return!1;const t=this.registry.getSource(e);return(0,l.V)(t,"Expected to find a valid source. sourceId=".concat(e)),!this.isDragging()&&t.canDrag(this,e)}canDropOnTarget(e){if(!e)return!1;const t=this.registry.getTarget(e);if((0,l.V)(t,"Expected to find a valid target. targetId=".concat(e)),!this.isDragging()||this.didDrop())return!1;return x(this.registry.getTargetType(e),this.getItemType())&&t.canDrop(this,e)}isDragging(){return Boolean(this.getItemType())}isDraggingSource(e){if(!e)return!1;const t=this.registry.getSource(e,!0);if((0,l.V)(t,"Expected to find a valid source. sourceId=".concat(e)),!this.isDragging()||!this.isSourcePublic())return!1;return this.registry.getSourceType(e)===this.getItemType()&&t.isDragging(this,e)}isOverTarget(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{shallow:!1};if(!e)return!1;const{shallow:n}=t;if(!this.isDragging())return!1;const r=this.registry.getTargetType(e),o=this.getItemType();if(o&&!x(r,o))return!1;const i=this.getTargetIds();if(!i.length)return!1;const a=i.indexOf(e);return n?a===i.length-1:a>-1}getItemType(){return this.store.getState().dragOperation.itemType}getItem(){return this.store.getState().dragOperation.item}getSourceId(){return this.store.getState().dragOperation.sourceId}getTargetIds(){return this.store.getState().dragOperation.targetIds}getDropResult(){return this.store.getState().dragOperation.dropResult}didDrop(){return this.store.getState().dragOperation.didDrop}isSourcePublic(){return Boolean(this.store.getState().dragOperation.isSourcePublic)}getInitialClientOffset(){return this.store.getState().dragOffset.initialClientOffset}getInitialSourceClientOffset(){return this.store.getState().dragOffset.initialSourceClientOffset}getClientOffset(){return this.store.getState().dragOffset.clientOffset}getSourceClientOffset(){return function(e){const{clientOffset:t,initialClientOffset:n,initialSourceClientOffset:r}=e;return t&&n&&r?I((i=r,{x:(o=t).x+i.x,y:o.y+i.y}),n):null;var o,i}(this.store.getState().dragOffset)}getDifferenceFromInitialOffset(){return function(e){const{clientOffset:t,initialClientOffset:n}=e;return t&&n?I(t,n):null}(this.store.getState().dragOffset)}constructor(e,t){this.store=e,this.registry=t}}const N="undefined"!==typeof global?global:self,D=N.MutationObserver||N.WebKitMutationObserver;function M(e){return function(){const t=setTimeout(r,0),n=setInterval(r,50);function r(){clearTimeout(t),clearInterval(n),e()}}}const j="function"===typeof D?function(e){let t=1;const n=new D(e),r=document.createTextNode("");return n.observe(r,{characterData:!0}),function(){t=-t,r.data=t}}:M;class L{call(){try{this.task&&this.task()}catch(e){this.onError(e)}finally{this.task=null,this.release(this)}}constructor(e,t){this.onError=e,this.release=t,this.task=null}}const B=new class{enqueueTask(e){const{queue:t,requestFlush:n}=this;t.length||(n(),this.flushing=!0),t[t.length]=e}constructor(){this.queue=[],this.pendingErrors=[],this.flushing=!1,this.index=0,this.capacity=1024,this.flush=()=>{const{queue:e}=this;for(;this.indexthis.capacity){for(let t=0,n=e.length-this.index;t{this.pendingErrors.push(e),this.requestErrorThrow()},this.requestFlush=j(this.flush),this.requestErrorThrow=M((()=>{if(this.pendingErrors.length)throw this.pendingErrors.shift()}))}},q=new class{create(e){const t=this.freeTasks,n=t.length?t.pop():new L(this.onError,(e=>t[t.length]=e));return n.task=e,n}constructor(e){this.onError=e,this.freeTasks=[]}}(B.registerPendingError);const F="dnd-core/ADD_SOURCE",z="dnd-core/ADD_TARGET",$="dnd-core/REMOVE_SOURCE",U="dnd-core/REMOVE_TARGET";function H(e,t){t&&Array.isArray(e)?e.forEach((e=>H(e,!1))):(0,l.V)("string"===typeof e||"symbol"===typeof e,t?"Type can only be a string, a symbol, or an array of either.":"Type can only be a string or a symbol.")}var W;!function(e){e.SOURCE="SOURCE",e.TARGET="TARGET"}(W||(W={}));let V=0;function K(e){const t=(V++).toString();switch(e){case W.SOURCE:return"S".concat(t);case W.TARGET:return"T".concat(t);default:throw new Error("Unknown Handler Role: ".concat(e))}}function G(e){switch(e[0]){case"S":return W.SOURCE;case"T":return W.TARGET;default:throw new Error("Cannot parse handler ID: ".concat(e))}}function X(e,t){const n=e.entries();let r=!1;do{const{done:e,value:[,o]}=n.next();if(o===t)return!0;r=!!e}while(!r);return!1}class Y{addSource(e,t){H(e),function(e){(0,l.V)("function"===typeof e.canDrag,"Expected canDrag to be a function."),(0,l.V)("function"===typeof e.beginDrag,"Expected beginDrag to be a function."),(0,l.V)("function"===typeof e.endDrag,"Expected endDrag to be a function.")}(t);const n=this.addHandler(W.SOURCE,e,t);return this.store.dispatch(function(e){return{type:F,payload:{sourceId:e}}}(n)),n}addTarget(e,t){H(e,!0),function(e){(0,l.V)("function"===typeof e.canDrop,"Expected canDrop to be a function."),(0,l.V)("function"===typeof e.hover,"Expected hover to be a function."),(0,l.V)("function"===typeof e.drop,"Expected beginDrag to be a function.")}(t);const n=this.addHandler(W.TARGET,e,t);return this.store.dispatch(function(e){return{type:z,payload:{targetId:e}}}(n)),n}containsHandler(e){return X(this.dragSources,e)||X(this.dropTargets,e)}getSource(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,l.V)(this.isSourceId(e),"Expected a valid source ID.");return t&&e===this.pinnedSourceId?this.pinnedSource:this.dragSources.get(e)}getTarget(e){return(0,l.V)(this.isTargetId(e),"Expected a valid target ID."),this.dropTargets.get(e)}getSourceType(e){return(0,l.V)(this.isSourceId(e),"Expected a valid source ID."),this.types.get(e)}getTargetType(e){return(0,l.V)(this.isTargetId(e),"Expected a valid target ID."),this.types.get(e)}isSourceId(e){return G(e)===W.SOURCE}isTargetId(e){return G(e)===W.TARGET}removeSource(e){var t;(0,l.V)(this.getSource(e),"Expected an existing source."),this.store.dispatch(function(e){return{type:$,payload:{sourceId:e}}}(e)),t=()=>{this.dragSources.delete(e),this.types.delete(e)},B.enqueueTask(q.create(t))}removeTarget(e){(0,l.V)(this.getTarget(e),"Expected an existing target."),this.store.dispatch(function(e){return{type:U,payload:{targetId:e}}}(e)),this.dropTargets.delete(e),this.types.delete(e)}pinSource(e){const t=this.getSource(e);(0,l.V)(t,"Expected an existing source."),this.pinnedSourceId=e,this.pinnedSource=t}unpinSource(){(0,l.V)(this.pinnedSource,"No source is pinned at the time."),this.pinnedSourceId=null,this.pinnedSource=null}addHandler(e,t,n){const r=K(e);return this.types.set(r,t),e===W.SOURCE?this.dragSources.set(r,n):e===W.TARGET&&this.dropTargets.set(r,n),r}constructor(e){this.types=new Map,this.dragSources=new Map,this.dropTargets=new Map,this.pinnedSourceId=null,this.pinnedSource=null,this.store=e}}const J=(e,t)=>e===t;function Q(){let e=arguments.length>1?arguments[1]:void 0;switch(e.type){case v:break;case F:case z:case U:case $:return A;default:return P}const{targetIds:t=[],prevTargetIds:n=[]}=e.payload,r=function(e,t){const n=new Map,r=e=>{n.set(e,n.has(e)?n.get(e)+1:1)};e.forEach(r),t.forEach(r);const o=[];return n.forEach(((e,t)=>{1===e&&o.push(t)})),o}(t,n),o=r.length>0||!function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:J;if(e.length!==t.length)return!1;for(let r=0;r0&&void 0!==arguments[0]?arguments[0]:ee,t=arguments.length>1?arguments[1]:void 0;const{payload:n}=t;switch(t.type){case f:case h:return{initialSourceClientOffset:n.sourceClientOffset,initialClientOffset:n.clientOffset,clientOffset:n.clientOffset};case v:return r=e.clientOffset,o=n.clientOffset,!r&&!o||r&&o&&r.x===o.x&&r.y===o.y?e:function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:oe,t=arguments.length>1?arguments[1]:void 0;const{payload:n}=t;switch(t.type){case h:return re({},e,{itemType:n.itemType,item:n.item,sourceId:n.sourceId,isSourcePublic:n.isSourcePublic,dropResult:null,didDrop:!1});case p:return re({},e,{isSourcePublic:!0});case v:return re({},e,{targetIds:n.targetIds});case U:return-1===e.targetIds.indexOf(n.targetId)?e:re({},e,{targetIds:(r=e.targetIds,o=n.targetId,r.filter((e=>e!==o)))});case g:return re({},e,{dropResult:n.dropResult,didDrop:!0,targetIds:[]});case m:return re({},e,{itemType:null,item:null,sourceId:null,dropResult:null,didDrop:!1,isSourcePublic:null,targetIds:[]});default:return e}var r,o}function ae(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;switch((arguments.length>1?arguments[1]:void 0).type){case F:case z:return e+1;case $:case U:return e-1;default:return e}}function se(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0)+1}function ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ce(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return{dirtyHandlerIds:Q(e.dirtyHandlerIds,{type:t.type,payload:ce({},t.payload,{prevTargetIds:(n=e,r="dragOperation.targetIds",o=[],r.split(".").reduce(((e,t)=>e&&e[t]?e[t]:o||null),n))})}),dragOffset:te(e.dragOffset,t),refCount:ae(e.refCount,t),dragOperation:ie(e.dragOperation,t),stateId:se(e.stateId)};var n,r,o}function de(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){const t="undefined"!==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION__;return c(le,e&&t&&t({name:"dnd-core",instanceId:"dnd-core"}))}(arguments.length>3&&void 0!==arguments[3]&&arguments[3]),o=new k(r,new Y(r)),i=new R(r,o),a=e(i,t,n);return i.receiveBackend(a),i}var fe=n(28437),he=n(45389);function pe(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}let ve=0;const ge=Symbol.for("__REACT_DND_CONTEXT_INSTANCE__");var me=(0,fe.memo)((function(e){var{children:t}=e,n=pe(e,["children"]);const[o,i]=function(e){if("manager"in e){return[{dragDropManager:e.manager},!1]}const t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:be(),n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;const o=t;o[ge]||(o[ge]={dragDropManager:de(e,t,n,r)});return o[ge]}(e.backend,e.context,e.options,e.debugMode),n=!e.context;return[t,n]}(n);return(0,fe.useEffect)((()=>{if(i){const e=be();return++ve,()=>{0===--ve&&(e[ge]=null)}}}),[]),(0,r.jsx)(he.M.Provider,{value:o,children:t})}));function be(){return"undefined"!==typeof global?global:window}},78902:(e,t,n)=>{"use strict";n.d(t,{j:()=>i});var r=n(53105),o=n(27918);function i(e,t,n){return function(e,t,n){const[i,a]=(0,r.F)(e,t,n);return(0,o.E)((function(){const t=e.getHandlerId();if(null!=t)return e.subscribeToStateChange(a,{handlerIds:[t]})}),[e,a]),i}(t,e||(()=>({})),(()=>n.reconnect()))}},53105:(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var r=n(122),o=n(28437),i=n(27918);function a(e,t,n){const[a,s]=(0,o.useState)((()=>t(e))),u=(0,o.useCallback)((()=>{const o=t(e);r(a,o)||(s(o),n&&n())}),[a,e,n]);return(0,i.E)(u),[a,u]}},42734:(e,t,n)=>{"use strict";n.d(t,{i:()=>_});var r=n(92027),o=n(78902),i=n(85052),a=n(28437);function s(e){return(0,a.useMemo)((()=>e.hooks.dragSource()),[e])}function u(e){return(0,a.useMemo)((()=>e.hooks.dragPreview()),[e])}var c=n(74271),l=n(89216),d=n(69840);class f{receiveHandlerId(e){this.handlerId!==e&&(this.handlerId=e,this.reconnect())}get connectTarget(){return this.dragSource}get dragSourceOptions(){return this.dragSourceOptionsInternal}set dragSourceOptions(e){this.dragSourceOptionsInternal=e}get dragPreviewOptions(){return this.dragPreviewOptionsInternal}set dragPreviewOptions(e){this.dragPreviewOptionsInternal=e}reconnect(){const e=this.reconnectDragSource();this.reconnectDragPreview(e)}reconnectDragSource(){const e=this.dragSource,t=this.didHandlerIdChange()||this.didConnectedDragSourceChange()||this.didDragSourceOptionsChange();return t&&this.disconnectDragSource(),this.handlerId?e?(t&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragSource=e,this.lastConnectedDragSourceOptions=this.dragSourceOptions,this.dragSourceUnsubscribe=this.backend.connectDragSource(this.handlerId,e,this.dragSourceOptions)),t):(this.lastConnectedDragSource=e,t):t}reconnectDragPreview(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=this.dragPreview,n=e||this.didHandlerIdChange()||this.didConnectedDragPreviewChange()||this.didDragPreviewOptionsChange();n&&this.disconnectDragPreview(),this.handlerId&&(t?n&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDragPreview=t,this.lastConnectedDragPreviewOptions=this.dragPreviewOptions,this.dragPreviewUnsubscribe=this.backend.connectDragPreview(this.handlerId,t,this.dragPreviewOptions)):this.lastConnectedDragPreview=t)}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didConnectedDragSourceChange(){return this.lastConnectedDragSource!==this.dragSource}didConnectedDragPreviewChange(){return this.lastConnectedDragPreview!==this.dragPreview}didDragSourceOptionsChange(){return!(0,c.b)(this.lastConnectedDragSourceOptions,this.dragSourceOptions)}didDragPreviewOptionsChange(){return!(0,c.b)(this.lastConnectedDragPreviewOptions,this.dragPreviewOptions)}disconnectDragSource(){this.dragSourceUnsubscribe&&(this.dragSourceUnsubscribe(),this.dragSourceUnsubscribe=void 0)}disconnectDragPreview(){this.dragPreviewUnsubscribe&&(this.dragPreviewUnsubscribe(),this.dragPreviewUnsubscribe=void 0,this.dragPreviewNode=null,this.dragPreviewRef=null)}get dragSource(){return this.dragSourceNode||this.dragSourceRef&&this.dragSourceRef.current}get dragPreview(){return this.dragPreviewNode||this.dragPreviewRef&&this.dragPreviewRef.current}clearDragSource(){this.dragSourceNode=null,this.dragSourceRef=null}clearDragPreview(){this.dragPreviewNode=null,this.dragPreviewRef=null}constructor(e){this.hooks=(0,d.i)({dragSource:(e,t)=>{this.clearDragSource(),this.dragSourceOptions=t||null,(0,l.i)(e)?this.dragSourceRef=e:this.dragSourceNode=e,this.reconnectDragSource()},dragPreview:(e,t)=>{this.clearDragPreview(),this.dragPreviewOptions=t||null,(0,l.i)(e)?this.dragPreviewRef=e:this.dragPreviewNode=e,this.reconnectDragPreview()}}),this.handlerId=null,this.dragSourceRef=null,this.dragSourceOptionsInternal=null,this.dragPreviewRef=null,this.dragPreviewOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDragSource=null,this.lastConnectedDragSourceOptions=null,this.lastConnectedDragPreview=null,this.lastConnectedDragPreviewOptions=null,this.backend=e}}var h=n(78292),p=n(27918);let v=!1,g=!1;class m{receiveHandlerId(e){this.sourceId=e}getHandlerId(){return this.sourceId}canDrag(){(0,r.V)(!v,"You may not call monitor.canDrag() inside your canDrag() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return v=!0,this.internalMonitor.canDragSource(this.sourceId)}finally{v=!1}}isDragging(){if(!this.sourceId)return!1;(0,r.V)(!g,"You may not call monitor.isDragging() inside your isDragging() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor");try{return g=!0,this.internalMonitor.isDraggingSource(this.sourceId)}finally{g=!1}}subscribeToStateChange(e,t){return this.internalMonitor.subscribeToStateChange(e,t)}isDraggingSource(e){return this.internalMonitor.isDraggingSource(e)}isOverTarget(e,t){return this.internalMonitor.isOverTarget(e,t)}getTargetIds(){return this.internalMonitor.getTargetIds()}isSourcePublic(){return this.internalMonitor.isSourcePublic()}getSourceId(){return this.internalMonitor.getSourceId()}subscribeToOffsetChange(e){return this.internalMonitor.subscribeToOffsetChange(e)}canDragSource(e){return this.internalMonitor.canDragSource(e)}canDropOnTarget(e){return this.internalMonitor.canDropOnTarget(e)}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(e){this.sourceId=null,this.internalMonitor=e.getMonitor()}}var b=n(45020);class y{beginDrag(){const e=this.spec,t=this.monitor;let n=null;return n="object"===typeof e.item?e.item:"function"===typeof e.item?e.item(t):{},null!==n&&void 0!==n?n:null}canDrag(){const e=this.spec,t=this.monitor;return"boolean"===typeof e.canDrag?e.canDrag:"function"!==typeof e.canDrag||e.canDrag(t)}isDragging(e,t){const n=this.spec,r=this.monitor,{isDragging:o}=n;return o?o(r):t===e.getSourceId()}endDrag(){const e=this.spec,t=this.monitor,n=this.connector,{end:r}=e;r&&r(t.getItem(),t),n.reconnect()}constructor(e,t,n){this.spec=e,this.monitor=t,this.connector=n}}function w(e,t,n){const o=(0,h.u)(),i=function(e,t,n){const r=(0,a.useMemo)((()=>new y(e,t,n)),[t,n]);return(0,a.useEffect)((()=>{r.spec=e}),[e]),r}(e,t,n),s=function(e){return(0,a.useMemo)((()=>{const t=e.type;return(0,r.V)(null!=t,"spec.type must be defined"),t}),[e])}(e);(0,p.E)((function(){if(null!=s){const[e,r]=(0,b.V)(s,i,o);return t.receiveHandlerId(e),n.receiveHandlerId(e),r}}),[o,t,n,i,s])}function _(e,t){const n=(0,i.I)(e,t);(0,r.V)(!n.begin,"useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)");const c=function(){const e=(0,h.u)();return(0,a.useMemo)((()=>new m(e)),[e])}(),l=function(e,t){const n=(0,h.u)(),r=(0,a.useMemo)((()=>new f(n.getBackend())),[n]);return(0,p.E)((()=>(r.dragSourceOptions=e||null,r.reconnect(),()=>r.disconnectDragSource())),[r,e]),(0,p.E)((()=>(r.dragPreviewOptions=t||null,r.reconnect(),()=>r.disconnectDragPreview())),[r,t]),r}(n.options,n.previewOptions);return w(n,c,l),[(0,o.j)(n.collect,c,l),s(l),u(l)]}},78292:(e,t,n)=>{"use strict";n.d(t,{u:()=>a});var r=n(92027),o=n(28437),i=n(45389);function a(){const{dragDropManager:e}=(0,o.useContext)(i.M);return(0,r.V)(null!=e,"Expected drag drop context"),e}},35661:(e,t,n)=>{"use strict";n.d(t,{V:()=>a});var r=n(28437),o=n(53105),i=n(78292);function a(e){const t=(0,i.u)().getMonitor(),[n,a]=(0,o.F)(t,e);return(0,r.useEffect)((()=>t.subscribeToOffsetChange(a))),(0,r.useEffect)((()=>t.subscribeToStateChange(a))),n}},35964:(e,t,n)=>{"use strict";n.d(t,{H:()=>y});var r=n(78902),o=n(85052),i=n(28437);function a(e){return(0,i.useMemo)((()=>e.hooks.dropTarget()),[e])}var s=n(74271),u=n(89216),c=n(69840);class l{get connectTarget(){return this.dropTarget}reconnect(){const e=this.didHandlerIdChange()||this.didDropTargetChange()||this.didOptionsChange();e&&this.disconnectDropTarget();const t=this.dropTarget;this.handlerId&&(t?e&&(this.lastConnectedHandlerId=this.handlerId,this.lastConnectedDropTarget=t,this.lastConnectedDropTargetOptions=this.dropTargetOptions,this.unsubscribeDropTarget=this.backend.connectDropTarget(this.handlerId,t,this.dropTargetOptions)):this.lastConnectedDropTarget=t)}receiveHandlerId(e){e!==this.handlerId&&(this.handlerId=e,this.reconnect())}get dropTargetOptions(){return this.dropTargetOptionsInternal}set dropTargetOptions(e){this.dropTargetOptionsInternal=e}didHandlerIdChange(){return this.lastConnectedHandlerId!==this.handlerId}didDropTargetChange(){return this.lastConnectedDropTarget!==this.dropTarget}didOptionsChange(){return!(0,s.b)(this.lastConnectedDropTargetOptions,this.dropTargetOptions)}disconnectDropTarget(){this.unsubscribeDropTarget&&(this.unsubscribeDropTarget(),this.unsubscribeDropTarget=void 0)}get dropTarget(){return this.dropTargetNode||this.dropTargetRef&&this.dropTargetRef.current}clearDropTarget(){this.dropTargetRef=null,this.dropTargetNode=null}constructor(e){this.hooks=(0,c.i)({dropTarget:(e,t)=>{this.clearDropTarget(),this.dropTargetOptions=t,(0,u.i)(e)?this.dropTargetRef=e:this.dropTargetNode=e,this.reconnect()}}),this.handlerId=null,this.dropTargetRef=null,this.dropTargetOptionsInternal=null,this.lastConnectedHandlerId=null,this.lastConnectedDropTarget=null,this.lastConnectedDropTargetOptions=null,this.backend=e}}var d=n(78292),f=n(27918);var h=n(92027);let p=!1;class v{receiveHandlerId(e){this.targetId=e}getHandlerId(){return this.targetId}subscribeToStateChange(e,t){return this.internalMonitor.subscribeToStateChange(e,t)}canDrop(){if(!this.targetId)return!1;(0,h.V)(!p,"You may not call monitor.canDrop() inside your canDrop() implementation. Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor");try{return p=!0,this.internalMonitor.canDropOnTarget(this.targetId)}finally{p=!1}}isOver(e){return!!this.targetId&&this.internalMonitor.isOverTarget(this.targetId,e)}getItemType(){return this.internalMonitor.getItemType()}getItem(){return this.internalMonitor.getItem()}getDropResult(){return this.internalMonitor.getDropResult()}didDrop(){return this.internalMonitor.didDrop()}getInitialClientOffset(){return this.internalMonitor.getInitialClientOffset()}getInitialSourceClientOffset(){return this.internalMonitor.getInitialSourceClientOffset()}getSourceClientOffset(){return this.internalMonitor.getSourceClientOffset()}getClientOffset(){return this.internalMonitor.getClientOffset()}getDifferenceFromInitialOffset(){return this.internalMonitor.getDifferenceFromInitialOffset()}constructor(e){this.targetId=null,this.internalMonitor=e.getMonitor()}}var g=n(45020);class m{canDrop(){const e=this.spec,t=this.monitor;return!e.canDrop||e.canDrop(t.getItem(),t)}hover(){const e=this.spec,t=this.monitor;e.hover&&e.hover(t.getItem(),t)}drop(){const e=this.spec,t=this.monitor;if(e.drop)return e.drop(t.getItem(),t)}constructor(e,t){this.spec=e,this.monitor=t}}function b(e,t,n){const r=(0,d.u)(),o=function(e,t){const n=(0,i.useMemo)((()=>new m(e,t)),[t]);return(0,i.useEffect)((()=>{n.spec=e}),[e]),n}(e,t),a=function(e){const{accept:t}=e;return(0,i.useMemo)((()=>((0,h.V)(null!=e.accept,"accept must be defined"),Array.isArray(t)?t:[t])),[t])}(e);(0,f.E)((function(){const[e,i]=(0,g.l)(a,o,r);return t.receiveHandlerId(e),n.receiveHandlerId(e),i}),[r,t,o,n,a.map((e=>e.toString())).join("|")])}function y(e,t){const n=(0,o.I)(e,t),s=function(){const e=(0,d.u)();return(0,i.useMemo)((()=>new v(e)),[e])}(),u=function(e){const t=(0,d.u)(),n=(0,i.useMemo)((()=>new l(t.getBackend())),[t]);return(0,f.E)((()=>(n.dropTargetOptions=e||null,n.reconnect(),()=>n.disconnectDropTarget())),[e]),n}(n.options);return b(n,s,u),[(0,r.j)(n.collect,s,u),a(u)]}},27918:(e,t,n)=>{"use strict";n.d(t,{E:()=>o});var r=n(28437);const o="undefined"!==typeof window?r.useLayoutEffect:r.useEffect},85052:(e,t,n)=>{"use strict";n.d(t,{I:()=>o});var r=n(28437);function o(e,t){const n=[...t||[]];return null==t&&"function"!==typeof e&&n.push(e),(0,r.useMemo)((()=>"function"===typeof e?e():e),n)}},89216:(e,t,n)=>{"use strict";function r(e){return null!==e&&"object"===typeof e&&Object.prototype.hasOwnProperty.call(e,"current")}n.d(t,{i:()=>r})},45020:(e,t,n)=>{"use strict";function r(e,t,n){const r=n.getRegistry(),o=r.addTarget(e,t);return[o,()=>r.removeTarget(o)]}function o(e,t,n){const r=n.getRegistry(),o=r.addSource(e,t);return[o,()=>r.removeSource(o)]}n.d(t,{V:()=>o,l:()=>r})},69840:(e,t,n)=>{"use strict";n.d(t,{i:()=>a});var r=n(92027),o=n(28437);function i(e){return function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!(0,o.isValidElement)(t)){const r=t;return e(r,n),r}const i=t;!function(e){if("string"===typeof e.type)return;const t=e.type.displayName||e.type.name||"the component";throw new Error("Only native element nodes can now be passed to React DnD connectors."+"You can either wrap ".concat(t," into a
, or turn it into a ")+"drag source or a drop target itself.")}(i);return function(e,t){const n=e.ref;return(0,r.V)("string"!==typeof n,"Cannot connect React DnD to an element with an existing string ref. Please convert it to use a callback ref instead, or wrap it into a or
. Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs"),n?(0,o.cloneElement)(e,{ref:e=>{s(n,e),s(t,e)}}):(0,o.cloneElement)(e,{ref:t})}(i,n?t=>e(t,n):e)}}function a(e){const t={};return Object.keys(e).forEach((n=>{const r=e[n];if(n.endsWith("Ref"))t[n]=e[n];else{const e=i(r);t[n]=()=>e}})),t}function s(e,t){"function"===typeof e?e(t):e.current=t}},6720:(e,t,n)=>{"use strict";n.d(t,{A_:()=>T,Awo:()=>D,Azs:()=>A,BI9:()=>f,Fxb:()=>m,K6h:()=>b,KrV:()=>x,MGo:()=>P,O24:()=>d,QG6:()=>v,QHh:()=>O,TYx:()=>k,U12:()=>i,U3x:()=>h,Wux:()=>p,XKH:()=>g,XbS:()=>$,Yvo:()=>R,ZuP:()=>u,a1M:()=>N,a95:()=>q,b6i:()=>s,fMd:()=>I,g9_:()=>j,gZ7:()=>l,jgn:()=>y,joZ:()=>F,kgr:()=>a,kn0:()=>w,m6K:()=>L,mGp:()=>o,nVg:()=>z,o8z:()=>S,oFq:()=>E,rZB:()=>_,t76:()=>C,uDv:()=>M,u_S:()=>U,uw3:()=>c,vIB:()=>B});var r=n(13441);function o(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M20 8h-2.81a5.985 5.985 0 0 0-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.41.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"},child:[]}]})(e)}function i(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z",clipRule:"evenodd"},child:[]},{tag:"path",attr:{d:"m22.7 19-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4z"},child:[]}]})(e)}function a(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12 1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z"},child:[]}]})(e)}function s(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"},child:[]}]})(e)}function u(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M21 4H11l-1-3H3c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h8l1 3h9c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM7 16c-2.76 0-5-2.24-5-5s2.24-5 5-5c1.35 0 2.48.5 3.35 1.3L9.03 8.57c-.38-.36-1.04-.78-2.03-.78-1.74 0-3.15 1.44-3.15 3.21S5.26 14.21 7 14.21c2.01 0 2.84-1.44 2.92-2.41H7v-1.71h4.68c.07.31.12.61.12 1.02C11.8 13.97 9.89 16 7 16zm6.17-5.42h3.7c-.43 1.25-1.11 2.43-2.05 3.47-.31-.35-.6-.72-.86-1.1l-.79-2.37zm8.33 9.92c0 .55-.45 1-1 1H14l2-2.5-1.04-3.1 3.1 3.1.92-.92-3.3-3.25.02-.02c1.13-1.25 1.93-2.69 2.4-4.22H20v-1.3h-4.53V8h-1.29v1.29h-1.44L11.46 5.5h9.04c.55 0 1 .45 1 1v14z"},child:[]},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0zm0 0h24v24H0z"},child:[]}]})(e)}function c(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4.01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14a2 2 0 0 0-2-2zM11 16l4-4-4-4v3H1v2h10v3z"},child:[]}]})(e)}function l(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"},child:[]}]})(e)}function d(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3 5 6.99h3V14h2V6.99h3L9 3z"},child:[]}]})(e)}function f(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0zm0 0h24v24H0zm0 0h24v24H0zm0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46A11.804 11.804 0 0 0 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"},child:[]}]})(e)}function h(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"},child:[]}]})(e)}function p(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"},child:[]}]})(e)}function v(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"},child:[]}]})(e)}function g(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M8 5v14l11-7z"},child:[]}]})(e)}function m(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M3 10h11v2H3zM3 6h11v2H3zM3 14h7v2H3zM20.59 11.93l-4.25 4.24-2.12-2.12-1.41 1.41L16.34 19 22 13.34z"},child:[]}]})(e)}function b(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M5 13h14v-2H5v2zm-2 4h14v-2H3v2zM7 7v2h14V7H7z"},child:[]}]})(e)}function y(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"},child:[]}]})(e)}function w(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"},child:[]}]})(e)}function _(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M17 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"},child:[]}]})(e)}function S(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"},child:[]}]})(e)}function E(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M3.27 5 2 6.27l6.97 6.97L6.5 19h3l1.57-3.66L16.73 21 18 19.73 3.55 5.27 3.27 5zM6 5v.18L8.82 8h2.4l-.72 1.68 2.1 2.1L14.21 8H20V5H6z"},child:[]}]})(e)}function O(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M16 13h-3V3h-2v10H8l4 4 4-4zM4 19v2h16v-2H4z"},child:[]}]})(e)}function x(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-1 8h-3v3h-2v-3h-3v-2h3V9h2v3h3v2z"},child:[]}]})(e)}function C(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z"},child:[]}]})(e)}function T(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"m19 9 1.25-2.75L23 5l-2.75-1.25L19 1l-1.25 2.75L15 5l2.75 1.25L19 9zm-7.5.5L9 4 6.5 9.5 1 12l5.5 2.5L9 20l2.5-5.5L17 12l-5.5-2.5zM19 15l-1.25 2.75L15 19l2.75 1.25L19 23l1.25-2.75L23 19l-2.75-1.25L19 15z"},child:[]}]})(e)}function R(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a.996.996 0 0 0 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"},child:[]}]})(e)}function I(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10a2.5 2.5 0 0 0 2.5-2.5c0-.61-.23-1.2-.64-1.67a.528.528 0 0 1-.13-.33c0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9zm5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9zM5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5zm6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5z"},child:[]}]})(e)}function A(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 2a9 9 0 0 0-9 9c0 4.17 2.84 7.67 6.69 8.69L12 22l2.31-2.31C18.16 18.67 21 15.17 21 11a9 9 0 0 0-9-9zm0 2c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.3a7.2 7.2 0 0 1-6-3.22c.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08a7.2 7.2 0 0 1-6 3.22z"},child:[]}]})(e)}function P(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"},child:[]}]})(e)}function k(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z"},child:[]}]})(e)}function N(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"},child:[]}]})(e)}function D(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"},child:[]}]})(e)}function M(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"},child:[]}]})(e)}function j(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"},child:[]}]})(e)}function L(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"},child:[]}]})(e)}function B(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"},child:[]}]})(e)}function q(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"},child:[]}]})(e)}function F(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M17.65 6.35A7.958 7.958 0 0 0 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"},child:[]}]})(e)}function z(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M7.41 18.59 8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z"},child:[]}]})(e)}function $(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M12 5.83 15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z"},child:[]}]})(e)}function U(e){return(0,r.k5)({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"},child:[]},{tag:"path",attr:{d:"M10 8H8v4H4v2h4v4h2v-4h4v-2h-4zm4.5-1.92V7.9l2.5-.5V18h2V5z"},child:[]}]})(e)}}}]); +//# sourceMappingURL=456.e92b95ee.chunk.js.map \ No newline at end of file diff --git a/admin/static/js/456.e92b95ee.chunk.js.LICENSE.txt b/admin/static/js/456.e92b95ee.chunk.js.LICENSE.txt new file mode 100644 index 000000000..3d07fb6cd --- /dev/null +++ b/admin/static/js/456.e92b95ee.chunk.js.LICENSE.txt @@ -0,0 +1,14 @@ +/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ + +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ diff --git a/admin/static/js/456.e92b95ee.chunk.js.map b/admin/static/js/456.e92b95ee.chunk.js.map new file mode 100644 index 000000000..dcb92d7d3 --- /dev/null +++ b/admin/static/js/456.e92b95ee.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/456.e92b95ee.chunk.js","mappings":"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A,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,IACA,KACA,MACA,MACA,QACA,MACA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,UCrII+xB,GAAc,wCAEd2D,GAAe,WAMG,SAAAnE,GAAOlxC,GAC7B,OAAOA,EACJjC,QAAQ2zC,GAAa,KACrB3zC,QAAQs3C,GAAc,GAC3B,CCdA,IAAMK,GAAgB,WAIhB9D,GAAc,GAGdxwC,GAAoB,SAACpB,GAAiB,OAAArF,OAAOupE,aAAalkE,GAAQA,EAAO,GAAK,GAAK,IAA7C,EAGpB,SAAA2xC,GAAuB3xC,GAC7C,IACIH,EADAga,EAAO,GAIX,IAAKha,EAAI2M,KAAKgxD,IAAIx9D,GAAOH,EAAI+xC,GAAa/xC,EAAKA,EAAI+xC,GAAe,EAChE/3B,EAAOzY,GAAkBvB,EAAI+xC,IAAe/3B,EAG9C,OAAQzY,GAAkBvB,EAAI+xC,IAAe/3B,GAAM9b,QAAQ23C,GAAe,QAC5E,CCpBO,IAAAE,GAAMtF,GAAO,KAKP8E,GAAQ,SAACp1C,EAAWH,GAG/B,IAFA,IAAIga,EAAIha,EAAEtB,OAEHsb,GACL7Z,EAAS,GAAJA,EAAUH,EAAEo7B,aAAa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","sources":["webpack://js/./index.ts?a959","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/Check.js","../node_modules/@mui/icons-material/Close.js","../node_modules/@mui/icons-material/FileCopy.js","../node_modules/@mui/icons-material/HelpOutline.js","../node_modules/@mui/icons-material/Save.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/utils/deprecatedPropType/deprecatedPropType.js","../node_modules/@mui/utils/requirePropFactory/requirePropFactory.js","../node_modules/@mui/utils/scrollLeft/scrollLeft.js","../node_modules/@mui/utils/unsupportedProp/unsupportedProp.js","../node_modules/@mui/utils/usePreviousProps/usePreviousProps.js","../node_modules/classnames/index.js","../node_modules/fast-deep-equal/index.js","../node_modules/focus-outline-manager/focus-outline-manager.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash/lodash.js","../node_modules/react-dom/client.js","../node_modules/react-json-view/dist/main.js","../node_modules/react-splitter-layout/lib/index.js","../node_modules/focus-lock/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/reactour/node_modules/react-focus-lock/dist/es2015/FocusGuard.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/reactour/node_modules/react-focus-lock/dist/es2015/medium.js","../node_modules/reactour/node_modules/react-focus-lock/dist/es2015/Lock.js","../node_modules/react-clientside-effect/lib/index.es.js","../node_modules/focus-lock/dist/es2015/utils/array.js","../node_modules/focus-lock/dist/es2015/utils/all-affected.js","../node_modules/focus-lock/dist/es2015/focusInside.js","../node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../node_modules/focus-lock/dist/es2015/utils/is.js","../node_modules/focus-lock/dist/es2015/solver.js","../node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../node_modules/focus-lock/dist/es2015/utils/tabbables.js","../node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../node_modules/focus-lock/dist/es2015/utils/parenting.js","../node_modules/focus-lock/dist/es2015/focusMerge.js","../node_modules/focus-lock/dist/es2015/setFocus.js","../node_modules/focus-lock/dist/es2015/index.js","../node_modules/reactour/node_modules/react-focus-lock/dist/es2015/util.js","../node_modules/reactour/node_modules/react-focus-lock/dist/es2015/Trap.js","../node_modules/focus-lock/dist/es2015/focusIsHidden.js","../node_modules/focus-lock/dist/es2015/focusables.js","../node_modules/reactour/node_modules/react-focus-lock/dist/es2015/Combination.js","../node_modules/reactour/node_modules/react-focus-lock/dist/es2015/index.js","../node_modules/styled-components/node_modules/stylis/src/Enum.js","../node_modules/styled-components/node_modules/stylis/src/Utility.js","../node_modules/styled-components/node_modules/stylis/src/Tokenizer.js","../node_modules/styled-components/node_modules/stylis/src/Serializer.js","../node_modules/styled-components/node_modules/stylis/src/Prefixer.js","../node_modules/styled-components/node_modules/stylis/src/Middleware.js","../node_modules/styled-components/node_modules/stylis/src/Parser.js","../node_modules/styled-components/src/constants.ts","../node_modules/styled-components/src/utils/empties.ts","../node_modules/styled-components/src/utils/checkDynamicCreation.ts","../node_modules/styled-components/src/utils/determineTheme.ts","../node_modules/styled-components/src/utils/domElements.ts","../node_modules/styled-components/src/utils/escape.ts","../node_modules/styled-components/src/utils/generateAlphabeticName.ts","../node_modules/styled-components/src/utils/hash.ts","../node_modules/styled-components/src/utils/generateComponentId.ts","../node_modules/styled-components/src/utils/getComponentName.ts","../node_modules/styled-components/src/utils/isTag.ts","../node_modules/styled-components/src/utils/hoist.ts","../node_modules/styled-components/src/utils/isFunction.ts","../node_modules/styled-components/src/utils/isStyledComponent.ts","../node_modules/styled-components/src/utils/joinStrings.ts","../node_modules/styled-components/src/utils/isPlainObject.ts","../node_modules/styled-components/src/utils/mixinDeep.ts","../node_modules/styled-components/src/utils/setToString.ts","../node_modules/styled-components/src/utils/error.ts","../node_modules/styled-components/src/sheet/GroupedTag.ts","../node_modules/styled-components/src/sheet/GroupIDAllocator.ts","../node_modules/styled-components/src/sheet/Rehydration.ts","../node_modules/styled-components/src/utils/nonce.ts","../node_modules/styled-components/src/sheet/dom.ts","../node_modules/styled-components/src/sheet/Tag.ts","../node_modules/styled-components/src/sheet/Sheet.ts","../node_modules/styled-components/src/utils/stylis.ts","../node_modules/styled-components/src/models/StyleSheetManager.tsx","../node_modules/styled-components/src/models/Keyframes.ts","../node_modules/styled-components/src/utils/hyphenateStyleName.ts","../node_modules/styled-components/src/utils/flatten.ts","../node_modules/styled-components/src/utils/addUnitIfNeeded.ts","../node_modules/styled-components/src/utils/isStatelessFunction.ts","../node_modules/styled-components/src/utils/isStaticRules.ts","../node_modules/styled-components/src/models/ComponentStyle.ts","../node_modules/styled-components/src/models/ThemeProvider.tsx","../node_modules/styled-components/src/models/StyledComponent.ts","../node_modules/styled-components/src/utils/generateDisplayName.ts","../node_modules/styled-components/src/utils/interleave.ts","../node_modules/styled-components/src/constructors/css.ts","../node_modules/styled-components/src/constructors/constructWithOptions.ts","../node_modules/styled-components/src/constructors/styled.tsx","../node_modules/styled-components/src/models/GlobalStyle.ts","../node_modules/styled-components/src/models/ServerStyleSheet.tsx","../node_modules/styled-components/src/base.ts","../node_modules/reactour/dist/reactour.esm.js","../node_modules/styled-components/src/constructors/createGlobalStyle.ts","../node_modules/scroll-smooth/dist/anchorScroll.js","../node_modules/scroll-smooth/dist/index.js","../node_modules/scroll-smooth/dist/observe.js","../node_modules/scroll-smooth/dist/scrollSmooth.js","../node_modules/scroll-smooth/dist/tools.js","../node_modules/scrollparent/scrollparent.js","../node_modules/shallowequal/index.js","../node_modules/suncalc2/suncalc2.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/openai/src/version.ts","../node_modules/openai/src/_shims/registry.ts","../node_modules/openai/src/_shims/MultipartBody.ts","../node_modules/openai/_shims/index.mjs","../node_modules/openai/src/_shims/web-runtime.ts","../node_modules/openai/src/error.ts","../node_modules/openai/src/streaming.ts","../node_modules/openai/src/uploads.ts","../node_modules/openai/src/core.ts","../node_modules/openai/src/pagination.ts","../node_modules/openai/src/resource.ts","../node_modules/openai/src/resources/completions.ts","../node_modules/openai/src/resources/chat/completions.ts","../node_modules/openai/src/resources/chat/chat.ts","../node_modules/openai/src/resources/embeddings.ts","../node_modules/openai/src/resources/files.ts","../node_modules/openai/src/resources/images.ts","../node_modules/openai/src/resources/audio/speech.ts","../node_modules/openai/src/resources/audio/transcriptions.ts","../node_modules/openai/src/resources/audio/translations.ts","../node_modules/openai/src/resources/audio/audio.ts","../node_modules/openai/src/resources/moderations.ts","../node_modules/openai/src/resources/models.ts","../node_modules/openai/src/resources/fine-tuning/jobs/checkpoints.ts","../node_modules/openai/src/resources/fine-tuning/jobs/jobs.ts","../node_modules/openai/src/resources/fine-tuning/fine-tuning.ts","../node_modules/openai/src/resources/beta/assistants.ts","../node_modules/openai/src/lib/RunnableFunction.ts","../node_modules/openai/src/lib/chatCompletionUtils.ts","../node_modules/openai/src/lib/AbstractChatCompletionRunner.ts","../node_modules/openai/src/lib/ChatCompletionRunner.ts","../node_modules/openai/src/lib/ChatCompletionStream.ts","../node_modules/openai/src/lib/ChatCompletionStreamingRunner.ts","../node_modules/openai/src/resources/beta/chat/completions.ts","../node_modules/openai/src/resources/beta/chat/chat.ts","../node_modules/openai/src/lib/AbstractAssistantStreamRunner.ts","../node_modules/openai/src/lib/AssistantStream.ts","../node_modules/openai/src/resources/beta/threads/messages.ts","../node_modules/openai/src/resources/beta/threads/runs/steps.ts","../node_modules/openai/src/resources/beta/threads/runs/runs.ts","../node_modules/openai/src/resources/beta/threads/threads.ts","../node_modules/openai/src/resources/beta/vector-stores/files.ts","../node_modules/openai/src/resources/beta/vector-stores/file-batches.ts","../node_modules/openai/src/lib/Util.ts","../node_modules/openai/src/resources/beta/vector-stores/vector-stores.ts","../node_modules/openai/src/resources/beta/beta.ts","../node_modules/openai/src/resources/batches.ts","../node_modules/openai/src/index.ts","../node_modules/react-dnd-html5-backend/src/getEmptyImage.ts","../node_modules/react-dnd-html5-backend/src/utils/js_utils.ts","../node_modules/react-dnd-html5-backend/src/EnterLeaveCounter.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/NativeDragSource.ts","../node_modules/react-dnd-html5-backend/src/NativeTypes.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/getDataFromDataTransfer.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/nativeTypesConfig.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts","../node_modules/react-dnd-html5-backend/src/BrowserDetector.ts","../node_modules/react-dnd-html5-backend/src/MonotonicInterpolant.ts","../node_modules/react-dnd-html5-backend/src/OffsetUtils.ts","../node_modules/react-dnd-html5-backend/src/OptionsReader.ts","../node_modules/react-dnd-html5-backend/src/HTML5BackendImpl.ts","../node_modules/react-dnd-html5-backend/src/index.ts","../node_modules/react-dnd-touch-backend/src/interfaces.ts","../node_modules/react-dnd-touch-backend/src/OptionsReader.ts","../node_modules/react-dnd-touch-backend/src/utils/predicates.ts","../node_modules/react-dnd-touch-backend/src/utils/offsets.ts","../node_modules/react-dnd-touch-backend/src/utils/supportsPassive.ts","../node_modules/react-dnd-touch-backend/src/TouchBackendImpl.ts","../node_modules/react-dnd-touch-backend/src/utils/math.ts","../node_modules/react-dnd-touch-backend/src/index.ts","../node_modules/react-dnd/src/core/DndContext.ts","../node_modules/redux/es/redux.js","../node_modules/dnd-core/src/utils/js_utils.ts","../node_modules/dnd-core/src/actions/dragDrop/types.ts","../node_modules/dnd-core/src/actions/dragDrop/local/setClientOffset.ts","../node_modules/dnd-core/src/actions/dragDrop/beginDrag.ts","../node_modules/dnd-core/src/actions/dragDrop/drop.ts","../node_modules/dnd-core/src/actions/dragDrop/endDrag.ts","../node_modules/dnd-core/src/utils/matchesType.ts","../node_modules/dnd-core/src/actions/dragDrop/hover.ts","../node_modules/dnd-core/src/actions/dragDrop/publishDragSource.ts","../node_modules/dnd-core/src/classes/DragDropManagerImpl.ts","../node_modules/dnd-core/src/actions/dragDrop/index.ts","../node_modules/dnd-core/src/utils/coords.ts","../node_modules/dnd-core/src/utils/dirtiness.ts","../node_modules/dnd-core/src/classes/DragDropMonitorImpl.ts","../node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/@react-dnd/asap/src/asap.ts","../node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/dnd-core/src/actions/registry.ts","../node_modules/dnd-core/src/contracts.ts","../node_modules/dnd-core/src/interfaces.ts","../node_modules/dnd-core/src/utils/getNextUniqueId.ts","../node_modules/dnd-core/src/classes/HandlerRegistryImpl.ts","../node_modules/dnd-core/src/utils/equality.ts","../node_modules/dnd-core/src/reducers/dirtyHandlerIds.ts","../node_modules/dnd-core/src/reducers/dragOffset.ts","../node_modules/dnd-core/src/reducers/dragOperation.ts","../node_modules/dnd-core/src/reducers/refCount.ts","../node_modules/dnd-core/src/reducers/stateId.ts","../node_modules/dnd-core/src/reducers/index.ts","../node_modules/dnd-core/src/createDragDropManager.ts","../node_modules/react-dnd/src/core/DndProvider.tsx","../node_modules/react-dnd/src/hooks/useCollectedProps.ts","../node_modules/react-dnd/src/hooks/useMonitorOutput.ts","../node_modules/react-dnd/src/hooks/useCollector.ts","../node_modules/react-dnd/src/hooks/useDrag/connectors.ts","../node_modules/react-dnd/src/internals/SourceConnector.ts","../node_modules/react-dnd/src/internals/DragSourceMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/DragSourceImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/useRegisteredDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragType.ts","../node_modules/react-dnd/src/hooks/useDrag/useDrag.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceMonitor.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceConnector.ts","../node_modules/react-dnd/src/hooks/useDragDropManager.ts","../node_modules/react-dnd/src/hooks/useDragLayer.ts","../node_modules/react-dnd/src/hooks/useDrop/connectors.ts","../node_modules/react-dnd/src/internals/TargetConnector.ts","../node_modules/react-dnd/src/internals/DropTargetMonitorImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/useRegisteredDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useAccept.ts","../node_modules/react-dnd/src/hooks/useDrop/useDrop.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetMonitor.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetConnector.ts","../node_modules/react-dnd/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-dnd/src/hooks/useOptionalFactory.ts","../node_modules/react-dnd/src/internals/isRef.ts","../node_modules/react-dnd/src/internals/registration.ts","../node_modules/react-dnd/src/internals/wrapConnectorHooks.ts","../node_modules/react-icons/md/index.mjs"],"sourcesContent":[null,"\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12z\"\n}), 'Cancel');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm-1 4 6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2zm-1 7h5.5L14 6.5z\"\n}), 'FileCopy');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 18h2v-2h-2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4\"\n}), 'HelpOutline');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z\"\n}), 'Save');","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","// Source from https://github.com/alitaheri/normalize-scroll-left\nlet cachedType;\n\n/**\n * Based on the jquery plugin https://github.com/othree/jquery.rtl-scroll-type\n *\n * Types of scrollLeft, assuming scrollWidth=100 and direction is rtl.\n *\n * Type | <- Most Left | Most Right -> | Initial\n * ---------------- | ------------ | ------------- | -------\n * default | 0 | 100 | 100\n * negative (spec*) | -100 | 0 | 0\n * reverse | 100 | 0 | 0\n *\n * Edge 85: default\n * Safari 14: negative\n * Chrome 85: negative\n * Firefox 81: negative\n * IE11: reverse\n *\n * spec* https://drafts.csswg.org/cssom-view/#dom-window-scroll\n */\nexport function detectScrollType() {\n if (cachedType) {\n return cachedType;\n }\n const dummy = document.createElement('div');\n const container = document.createElement('div');\n container.style.width = '10px';\n container.style.height = '1px';\n dummy.appendChild(container);\n dummy.dir = 'rtl';\n dummy.style.fontSize = '14px';\n dummy.style.width = '4px';\n dummy.style.height = '1px';\n dummy.style.position = 'absolute';\n dummy.style.top = '-1000px';\n dummy.style.overflow = 'scroll';\n document.body.appendChild(dummy);\n cachedType = 'reverse';\n if (dummy.scrollLeft > 0) {\n cachedType = 'default';\n } else {\n dummy.scrollLeft = 1;\n if (dummy.scrollLeft === 0) {\n cachedType = 'negative';\n }\n }\n document.body.removeChild(dummy);\n return cachedType;\n}\n\n// Based on https://stackoverflow.com/a/24394376\nexport function getNormalizedScrollLeft(element, direction) {\n const scrollLeft = element.scrollLeft;\n\n // Perform the calculations only when direction is rtl to avoid messing up the ltr behavior\n if (direction !== 'rtl') {\n return scrollLeft;\n }\n const type = detectScrollType();\n switch (type) {\n case 'negative':\n return element.scrollWidth - element.clientWidth + scrollLeft;\n case 'reverse':\n return element.scrollWidth - element.clientWidth - scrollLeft;\n default:\n return scrollLeft;\n }\n}","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport * as React from 'react';\nconst usePreviousProps = value => {\n const ref = React.useRef({});\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\nexport default usePreviousProps;","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","// Copyright (c) 2012 The Chromium Authors, Vladimirs. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/**\n * focus-outline-manager\n *\n * Watch users keyboard input and manage the focus outline visibility\n */\n\n/**\n * The class name to set on the document element.\n * @const\n */\nvar CLASS_NAME = 'focus-outline-hidden';\n\n/**\n * This class sets a CSS class name on the HTML element when a user presses the\n * tab key. It removes the class name when the user clicks anywhere.\n *\n * This allows you to write CSS like this:\n *\n * html.focus-outline-hidden *:focus {\n * outline: none;\n * }\n *\n * And the outline will only be shown if the user uses the keyboard to get to it.\n *\n * @constructor\n */\nfunction FocusOutlineManager () {\n var that = this;\n\n document.addEventListener('keydown', function (e) {\n that.focusByKeyboard = true;\n }, true);\n\n document.addEventListener('mousedown', function (e) {\n that.focusByKeyboard = false;\n }, true);\n\n document.addEventListener('focus', function (event) {\n // Update visibility only when focus is actually changed.\n that.updateVisibility();\n }, true);\n\n document.addEventListener('focusout', function (event) {\n window.setTimeout(function () {\n if (!document.hasFocus()) {\n that.focusByKeyboard = true;\n that.updateVisibility();\n }\n }, 0);\n });\n\n this.updateVisibility();\n}\n\nFocusOutlineManager.prototype = {\n /**\n * Whether focus change is triggered by TAB key.\n * @type {boolean}\n * @private\n */\n focusByKeyboard: true,\n\n updateVisibility: function () {\n this.hidden = !this.focusByKeyboard;\n },\n\n /**\n * Whether the focus outline should be hidden.\n * @type {boolean}\n */\n set hidden(hidden) {\n document.documentElement.classList.toggle(CLASS_NAME, hidden);\n },\n\n get hidden() {\n return document.documentElement.classList.contains(CLASS_NAME);\n }\n};\n\nnew FocusOutlineManager();\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': 'Scripts
\ No newline at end of file +Scripts
\ No newline at end of file diff --git a/io-package.json b/io-package.json index 4aa44191a..6843a8987 100644 --- a/io-package.json +++ b/io-package.json @@ -1,7 +1,7 @@ { "common": { "name": "javascript", - "version": "8.2.0", + "version": "8.3.0", "blockedVersions": [ "8.0.0", "8.0.1" @@ -40,6 +40,19 @@ "Matthias Kleine " ], "news": { + "8.3.0": { + "en": "Added createTempFile to sandbox\nFixed log message on script start\nAdded instance/from to log window (like in admin)", + "de": "Hinzufügen Hinzugefügt TempFile to sandbox\nFeste Protokollnachricht beim Skriptstart\nHinzufügen von Instanz/von zum Log-Fenster (wie bei admin)", + "ru": "Добавлено создание TempFile к песочнице\nИсправленное сообщение журнала на старте скрипта\nДобавление экземпляра/от окна журнала (как в admin)", + "pt": "Adicionado criar TempFile para caixa de areia\nMensagem de log fixa no início do script\nAdicionado instância/de para log janela (como em admin)", + "nl": "Aanmaken toegevoegd TempFile naar zandbak\nVast logbericht bij scriptstart\nInstance/van naar logvenster toegevoegd (zoals in admin)", + "fr": "Ajouté créer TempFile dans la boîte à sable\nCorrection du message de journal au démarrage du script\nAjout de l'instance/from to log window (comme dans admin)", + "it": "Aggiunto creare TempFile a sandbox\nMessaggio di registro fisso sull'inizio dello script\nAggiunta istanza/da finestra di log (come in admin)", + "es": "Añadido crear TempFile a sandbox\nMensaje de registro fijo en script start\nInstancia/desde la ventana de registro (como en admin)", + "pl": "Dodano tworzenie TempFile do piaskownicy\nNaprawiono wiadomość dziennika przy uruchamianiu skryptu\nDodano instancja / od do okna logowania (jak w admin)", + "uk": "Створити TempFile в пісочниці\nВиправлено лог повідомлення на скрипт старту\nДодано екземпляр / з вікна входу (наприклад, в адмінці)", + "zh-cn": "添加创建 纸箱到沙盒\n脚本启动的固定日志消息\n添加实例/ 从日志窗口( 如管理员)" + }, "8.2.0": { "en": "Added toArray to result object of $-selector\nAdded Blockly block for onLog", "de": "Hinzugefügt toArray zu Ergebnis Objekt von $-selector\nBlockly Block für onLog hinzugefügt", @@ -117,19 +130,6 @@ "pl": "Naprawiono kilka brakujących tłumaczeń (uk)\nPodwyższone wsparcie ecmaVersion od es2021 do es2022 (node18)", "uk": "Виправлено деякі відсутні переклади (uk)\nПідтримувана екскавація з ES2021 до es2022 (node18)", "zh-cn": "修复一些缺失的翻译( uk)\n从 es2021 升至 es2022 (node18)" - }, - "8.0.0": { - "en": "NodeJS >= 18.x and js-controller >= 5 is required\n\n* Breaking change: Removed support for binary states (deprecated since v6.2.0)\n* Breaking change: Protected filesystem (iobroker-data/files) to prevent direct file writes\n* Breaking change: request property has been removed of the sandbox (require the module if still needed)\n* Added blockly block for global variables (e.g. script name)\n* Added missing functions to protectFS\n* Fixed httpPost (missing data)\n* Fixed hasAttribute blockly block\n* Fixed parenthesis insertion in blockly for multi and/or\n* Added setStateChanged / setStateChangedAsync", - "de": "NodeJS >= 18.x und js-Controller >= 5 ist erforderlich\n\n* Bruchänderung: Entfernte Unterstützung für binäre Zustände (abgeschrieben seit v6.2.0)\n* Bruchänderung: Geschütztes Dateisystem (iobroker-data/files) um direkte Dateien zu verhindern\n* Bruchänderung: Anforderungseigenschaft wurde von der Sandbox entfernt (erfordere das Modul, falls noch benötigt)\n* Blockiert für globale Variablen hinzugefügt (z.B. Skriptname)\n* Hinzugefügt fehlende Funktionen zu schützenFS\n* Fixed httpPost (missing data)\n* Fixed hasAttribute blockly block\n* Fixed parenthesis Insertion in blockweise für Multi und/oder\n* Hinzugefügt setStateChanged / setStateChangedAsync", - "ru": "NodeJS >= 18.x и js-контроллер >= 5 требуется\n\n* Перерыв: Удаленная поддержка бинарных состояний (умеренная с v6.2.0)\n* Перерыв: Защита файловой системы (iobroker-data/files) для предотвращения прямых файловых записей\n* Перерыв: свойства запроса были удалены из песочницы (требуйте модуль, если все еще необходимо)\n* Добавлено блокирование для глобальных переменных (например, имя скрипта)\n* Добавлены недостающие функции для защиты FS\n* Исправленный httpПочта (данные о пропущении)\n* Исправленный hasAttribute блокирован\n* Исправленная вставка скобки в блокированном для мульти и/или\n* Добавлено setStateChanged / setStateChangedAsync", - "pt": "NodeJS >= 18.x e js-controller >= 5 é necessário\n\n* Mudança de ruptura: Suporte removido para estados binários (prefeito desde v6.2.0)\n* Mudança de ruptura: Sistema de arquivos protegido (iobroker-data/files) para evitar registros de arquivos diretos\n* Alteração de ruptura: a propriedade de solicitação foi removida da caixa de areia (consulte o módulo se ainda necessário)\n* Adicionado bloco bloqueado para variáveis globais (por exemplo, nome do script)\n* Adicionado funções ausentes para proteger FFS\n* Corrigido httpPost (dados perdidos)\n* Fixo hasAttribute bloco\n* inserção de parênteses fixa em bloco para multi e/ou\n* Adicionado setStateChanged / setStateChangedAsync", - "nl": "Voor de toepassing van de onderverdelingen 870190 tot en met 870290 wordt onder post 8702 verstaan: 5 is vereist\n\n* Verandering: Ondersteuning voor binaire toestanden verwijderd (achterhaald sinds v6.2.0)\n* Verandering: Beschermd bestandssysteem (iobroker-data/files) om direct bestandsschrijven te voorkomen\n* Breaking change: verzoek eigenschap is verwijderd van de zandbak (vereist de module indien nog nodig)\n* Toegevoegd blok voor globale variabelen (bijv. scriptnaam)\n* Toegevoegd ontbrekende functies om FS te beschermen\n* Vaste httpPost (ontbrekende gegevens)\n* Fixed hasAttribuut blok\n* Vaste tussenvoegsel in bloksgewijs voor multi en/of\n* Toegevoegd setStateChanged / setStateChangedAsync", - "fr": "NodeJS >= 18.x et js-controller >= 5 est nécessaire\n\n* Briser le changement : Supprimé le support pour les états binaires (déprécié depuis v6.2.0)\n* Briser le changement : Système de fichiers protégé (iobroker-data/files) pour empêcher l'écriture de fichiers directs\n* Breaking change: la propriété request a été retirée du bac à sable (demander le module si nécessaire)\n* Ajout d'un bloc bloc pour les variables globales (par exemple nom de script)\n* Ajout de fonctions manquantes pour protégerFS\n* Correction httppost (données manquantes)\n* Fixed hasAttribute bloc bloc\n* Insertion fixe entre parenthèses en bloc pour multi et/ou\n* Ajouté setStateChanged / setStateChangedAsync", - "it": "NodeJS >= 18.x e js-controller 5 è richiesto\n\n# Cambiamento di rottura: Supporto rimosso per gli stati binari (deprecato dal v6.2.0)\n# Cambiamento di rottura: Filesystem protetto (iobroker-data/files) per evitare scritture di file diretti\n* Cambiamento di rottura: richiesta proprietà è stata rimossa della sandbox (richiedere il modulo se necessario)\n* Aggiunto blocco blocco per le variabili globali (ad esempio nome dello script)\n* Aggiunte funzioni mancanti per proteggereFS\n* Corretto httpPost (dati di licenziamento)\n* Blocco fisso hasAttribute blockly\n* Inserto tra parentesi fisso in blocco per multi e/o\n* Aggiunto setStateChanged / setStateChangedAsync", - "es": "NodeJS >= 18.x y js-controller Se requiere 5\n\n* Cambio de ruptura: Apoyo eliminado para estados binarios (deprecido desde v6.2.0)\n* Cambio de ruptura: Sistema de archivos protegidos (iobroker-data/files) para prevenir los escritos de archivos directos\n* Cambio de ruptura: la propiedad de solicitud ha sido eliminada de la caja de arena (requiere el módulo si sigue siendo necesario)\n* Añadido bloque bloque bloque para variables globales (por ejemplo, nombre de script)\n* Funciones perdidas adicionales para protegerFS\n* httpPost fijo (datos de pérdida)\n* Ha sido corregidoAtributo bloque bloque\n* Inserción de paréntesis fija en bloque para multi y/o\n* Añadido setStateChanged / setStateChangedAsync", - "pl": "NodeJS > = 18.x i kontroler js- > = 5 jest wymagane\n\n* Łamanie zmian: Usunięte wsparcie dla stanów binarnych (zdeprecjonowane od v6.2.0)\n* Łamanie zmian: Chroniony system plików (iobroker- data / files), aby zapobiec bezpośredniemu zapisywaniu plików\n* Zmiana łamania: właściwość żądania została usunięta z piaskownicy (w razie potrzeby wymagać modułu)\n* Dodano blokowy blok dla globalnych zmiennych (np. nazwa skryptu)\n* Dodano brakujące funkcje do protectFS\n* Naprawiono httpPost (brak danych)\n* Naprawiono blokadę hasAtrybuty\n* Stałe wstawianie nawiasu w blokowane dla multi i / lub\n* Dodano setStateChanged / setStateChanged Async", - "uk": "NodeJS >= 18.x та js-controller >= 5 обов'язково\n\nІм'я * Зміна розривів: Вилучена підтримка бінарних штатів (згідно з v6.2.0)\nІм'я * Зміна розривів: Захищені файлові системи (iobroker-data/files) для запобігання прямого запису файлів\n* Зміна несправностей: майно запиту було вилучено з пісочниці (потрібно модуль, якщо все ще потрібно)\n* Додано блокнот для глобальних змін (наприклад, ім'я скрипта)\n* Додано відсутні функції для захистуFS\n* Виправлено httpPost (подача даних)\n* Виправлено hasAttribute блокнот\n* Фіксована вставка парехи в блоклі для багато і / або\n* Додано setStateChanged / setStateChangedAsync", - "zh-cn": "节点JS18x和js控制器QQ 需要5个\n\n* 《大会正式记录,第五十八届会议,补编第5号》(A/C.6/61/Rev.1)。 中断更改 : 删除对二进制状态的支持( 自 v6. 2.0 已贬值)\n* 《大会正式记录,第五十八届会议,补编第5号》(A/C.6/61/Rev.1)。 中断更改 : 保护文件系统( iobrocco- data/ files) 以防止直接文件写入\n* 破解更改:已删除沙盒的请求属性(如果仍然需要模块)\n* 为全局变量添加块块( 如脚本名称)\n* 添加缺失的函数以保护FS\n* 固定httppost(丢失数据)\n* 固定的块状属性\n* 固定括号以块状插入,用于多种和/或\n* 添加的设置状态变化 / 设置状态变化 " } }, "platform": "Javascript/Node.js", diff --git a/package.json b/package.json index 2b1dee0a7..8ea0f2aba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iobroker.javascript", - "version": "8.2.0", + "version": "8.3.0", "description": "Rules Engine for ioBroker", "author": "bluefox ", "contributors": [ diff --git a/src-admin/package.json b/src-admin/package.json index 283493d94..f962b738b 100644 --- a/src-admin/package.json +++ b/src-admin/package.json @@ -1,7 +1,7 @@ { "name": "iobroker-admin-component-backitup", "private": true, - "version": "8.2.0", + "version": "8.3.0", "scripts": { "start": "set PORT=4173 && craco start", "build": "craco build" diff --git a/src/package.json b/src/package.json index 2699b05fd..14126c6f6 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "js", - "version": "8.2.0", + "version": "8.3.0", "private": true, "dependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11",