From 7c2c2a1e8b0da28f9de5ab54292a4b444e2873f4 Mon Sep 17 00:00:00 2001 From: Toil <62353659+ilyhalight@users.noreply.github.com> Date: Sun, 18 Aug 2024 14:30:17 +0300 Subject: [PATCH] added 9animetv & epicgames support --- .webpack/webpack.config.js | 2 +- bun.lockb | Bin 295103 -> 289898 bytes changelog.md | 2 + dist/vot-min.user.js | 42 +- dist/vot.user.js | 208 +- package-lock.json | 3810 ++++++++++++++--- package.json | 2 +- ...1.0.4+018+removed-mailru-extra-fetch.patch | 14 - ...s+1.0.5+005+improve-videodata-logic.patch} | 16 +- ...vot.js+1.0.5+007+added-udemy-helper.patch} | 28 +- ...1.0.5+008+added-coursehunter-helper.patch} | 30 +- ....js+1.0.5+009+added-coursera-helper.patch} | 38 +- ...=> vot.js+1.0.5+017+fix-dailymotion.patch} | 2 +- ...0.5+018+added-9animetv-and-epicgames.patch | 76 + src/headers.json | 4 + src/index.js | 23 + wiki/SITES-EN.md | 32 + wiki/SITES-RU.md | 32 + wiki/gen-sites.js | 9 + yarn.lock | 1597 +++---- 20 files changed, 4146 insertions(+), 1821 deletions(-) delete mode 100644 patches/vot.js+1.0.4+018+removed-mailru-extra-fetch.patch rename patches/{vot.js+1.0.2+005+improve-videodata-logic.patch => vot.js+1.0.5+005+improve-videodata-logic.patch} (90%) rename patches/{vot.js+1.0.4+007+added-udemy-helper.patch => vot.js+1.0.5+007+added-udemy-helper.patch} (91%) rename patches/{vot.js+1.0.4+008+added-coursehunter-helper.patch => vot.js+1.0.5+008+added-coursehunter-helper.patch} (83%) rename patches/{vot.js+1.0.4+009+added-coursera-helper.patch => vot.js+1.0.5+009+added-coursera-helper.patch} (89%) rename patches/{vot.js+1.0.4+017+fix-dailymotion.patch => vot.js+1.0.5+017+fix-dailymotion.patch} (93%) create mode 100644 patches/vot.js+1.0.5+018+added-9animetv-and-epicgames.patch diff --git a/.webpack/webpack.config.js b/.webpack/webpack.config.js index adc5dd1f..cbe780cf 100644 --- a/.webpack/webpack.config.js +++ b/.webpack/webpack.config.js @@ -125,7 +125,7 @@ export default (env) => { maxChunks: 1, }), new webpack.DefinePlugin({ - DEBUG_MODE: dev, + DEBUG_MODE: true, IS_BETA_VERSION: isBeta, ...(() => { if (!dev) { diff --git a/bun.lockb b/bun.lockb index 4bde463a3a689c8a28d14800144cd0757c5db01b..c13f1e7f8d3d79e9107e89c7ae29bc7d839e56c5 100644 GIT binary patch delta 57651 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 vWMV?*d%oYKGBc!JeT{var t={"./src/styles/main.scss":()=>{GM_addStyle('.vot-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));--vot-helper-ontheme:var(--vot-ontheme-rgb,var(--vot-onprimary-rgb,255,255,255));box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-ontheme));background-color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;border:none;border-radius:4px;outline:none;min-width:64px;height:36px;padding:0 16px;font-size:14px;font-weight:500;line-height:36px;transition:box-shadow .2s;display:inline-block;position:relative;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.vot-button[hidden]{display:none!important}.vot-button::-moz-focus-inner{border:none}.vot-button:before,.vot-button:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-button:before{background-color:rgb(var(--vot-helper-ontheme));transition:opacity .2s}.vot-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-button:hover{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.vot-button:hover:before{opacity:.08}.vot-button:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.vot-button:active:after{opacity:.32;background-size:100% 100%;transition:background-size}.vot-button[disabled=true]{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.12);color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);box-shadow:none;cursor:initial}.vot-button[disabled=true]:before,.vot-button[disabled=true]:after{opacity:0}.vot-outlined-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));box-sizing:border-box;border:1px solid;border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.24);vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;background-color:#0000;border-radius:4px;outline:none;min-width:64px;height:36px;margin:0;padding:0 16px;font-size:14px;font-weight:500;line-height:34px;display:inline-block;position:relative}.vot-outlined-button[hidden]{display:none!important}.vot-outlined-button::-moz-focus-inner{border:none}.vot-outlined-button:before,.vot-outlined-button:after{content:"";opacity:0;border-radius:3px;position:absolute;inset:0}.vot-outlined-button:before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-outlined-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-outlined-button:hover:before{opacity:.04}.vot-outlined-button:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-outlined-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-outlined-button[disabled=true]:before,.vot-outlined-button[disabled=true]:after{opacity:0}.vot-text-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;background-color:#0000;border:none;border-radius:4px;outline:none;min-width:64px;height:36px;margin:0;padding:0 8px;font-size:14px;font-weight:500;line-height:36px;display:inline-block;position:relative}.vot-text-button[hidden]{display:none!important}.vot-text-button::-moz-focus-inner{border:none}.vot-text-button:before,.vot-text-button:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-text-button:before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-text-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-text-button:hover:before{opacity:.04}.vot-text-button:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-text-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-text-button[disabled=true]:before,.vot-text-button[disabled=true]:after{opacity:0}.vot-icon-button{--vot-helper-onsurface:rgba(var(--vot-onsurface-rgb,0,0,0),.87);box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;fill:var(--vot-helper-onsurface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;background-color:#0000;border:none;border-radius:50%;outline:none;width:36px;height:36px;margin:0;padding:0;font-size:14px;font-weight:500;line-height:36px;display:inline-block;position:relative}.vot-icon-button[hidden]{display:none!important}.vot-icon-button::-moz-focus-inner{border:none}.vot-icon-button:before,.vot-icon-button:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-icon-button:before{background-color:var(--vot-helper-onsurface);transition:opacity .2s}.vot-icon-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity .3s,background-size .4s}.vot-icon-button:hover:before{opacity:.04}.vot-icon-button:active:after{opacity:.32;background-size:100% 100%;transition:background-size,opacity}.vot-icon-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);fill:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-icon-button[disabled=true]:before,.vot-icon-button[disabled=true]:after{opacity:0}.vot-textfield{display:inline-block;--vot-helper-theme:rgb(var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243)))!important;--vot-helper-safari1:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;--vot-helper-safari2:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;--vot-helper-safari3:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system)!important;text-align:start!important;padding-top:6px!important;font-size:16px!important;line-height:1.5!important;position:relative!important}.vot-textfield[hidden]{display:none!important}.vot-textfield>input,.vot-textfield>textarea{box-sizing:border-box!important;border-style:solid!important;border-width:1px!important;border-color:transparent var(--vot-helper-safari2)var(--vot-helper-safari2)!important;height:inherit!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;-webkit-text-fill-color:currentColor!important;font-family:inherit!important;font-size:inherit!important;line-height:inherit!important;caret-color:var(--vot-helper-theme)!important;background-color:#0000!important;border-radius:4px!important;width:100%!important;margin:0!important;padding:15px 13px!important;transition:border .2s,box-shadow .2s!important;box-shadow:inset 1px 0 #0000,inset -1px 0 #0000,inset 0 -1px #0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-webkit-input-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-webkit-input-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):placeholder-shown,.vot-textfield>textarea:not(:focus):placeholder-shown{border-top-color:var(--vot-helper-safari2)!important}.vot-textfield>input+span,.vot-textfield>textarea+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;cursor:text!important;pointer-events:none!important;width:100%!important;max-height:100%!important;font-size:75%!important;line-height:15px!important;transition:color .2s,font-size .2s,line-height .2s!important;display:flex!important;position:absolute!important;top:0!important;left:0!important}.vot-textfield>input:not(:focus):placeholder-shown+span,.vot-textfield>textarea:not(:focus):placeholder-shown+span{font-size:inherit!important;line-height:68px!important}.vot-textfield>input+span:before,.vot-textfield>input+span:after,.vot-textfield>textarea+span:before,.vot-textfield>textarea+span:after{content:""!important;box-sizing:border-box!important;border-top:solid 1px var(--vot-helper-safari2)!important;pointer-events:none!important;min-width:10px!important;height:8px!important;margin-top:6px!important;transition:border .2s,box-shadow .2s!important;display:block!important;box-shadow:inset 0 1px #0000!important}.vot-textfield>input+span:before,.vot-textfield>textarea+span:before{border-left:1px solid #0000!important;border-radius:4px 0!important;margin-right:4px!important}.vot-textfield>input+span:after,.vot-textfield>textarea+span:after{border-right:1px solid #0000!important;border-radius:0 4px!important;flex-grow:1!important;margin-left:4px!important}.vot-textfield>input.vot-show-placeholer+span:before,.vot-textfield>textarea.vot-show-placeholer+span:before{margin-right:0!important}.vot-textfield>input.vot-show-placeholer+span:after,.vot-textfield>textarea.vot-show-placeholer+span:after{margin-left:0!important}.vot-textfield>input:not(:focus):placeholder-shown+span:before,.vot-textfield>input:not(:focus):placeholder-shown+span:after,.vot-textfield>textarea:not(:focus):placeholder-shown+span:before,.vot-textfield>textarea:not(:focus):placeholder-shown+span:after{border-top-color:#0000!important}.vot-textfield:hover>input:not(:disabled),.vot-textfield:hover>textarea:not(:disabled){border-color:transparent var(--vot-helper-safari3)var(--vot-helper-safari3)!important}.vot-textfield:hover>input:not(:disabled)+span:before,.vot-textfield:hover>input:not(:disabled)+span:after,.vot-textfield:hover>textarea:not(:disabled)+span:before,.vot-textfield:hover>textarea:not(:disabled)+span:after{border-top-color:var(--vot-helper-safari3)!important}.vot-textfield:hover>input:not(:disabled):not(:focus):placeholder-shown,.vot-textfield:hover>textarea:not(:disabled):not(:focus):placeholder-shown{border-color:var(--vot-helper-safari3)!important}.vot-textfield>input:focus,.vot-textfield>textarea:focus{border-color:transparent var(--vot-helper-theme)var(--vot-helper-theme)!important;box-shadow:inset 1px 0 var(--vot-helper-theme),inset -1px 0 var(--vot-helper-theme),inset 0 -1px var(--vot-helper-theme)!important;outline:none!important}.vot-textfield>input:focus+span,.vot-textfield>textarea:focus+span{color:var(--vot-helper-theme)!important}.vot-textfield>input:focus+span:before,.vot-textfield>input:focus+span:after,.vot-textfield>textarea:focus+span:before,.vot-textfield>textarea:focus+span:after{border-top-color:var(--vot-helper-theme)!important;box-shadow:inset 0 1px var(--vot-helper-theme)!important}.vot-textfield>input:disabled,.vot-textfield>input:disabled+span,.vot-textfield>textarea:disabled,.vot-textfield>textarea:disabled+span{border-color:transparent var(--vot-helper-safari1)var(--vot-helper-safari1)!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;pointer-events:none!important}.vot-textfield>input:disabled+span:before,.vot-textfield>input:disabled+span:after,.vot-textfield>textarea:disabled+span:before,.vot-textfield>textarea:disabled+span:after,.vot-textfield>input:disabled:placeholder-shown,.vot-textfield>input:disabled:placeholder-shown+span,.vot-textfield>textarea:disabled:placeholder-shown,.vot-textfield>textarea:disabled:placeholder-shown+span{border-top-color:var(--vot-helper-safari1)!important}.vot-textfield>input:disabled:placeholder-shown+span:before,.vot-textfield>input:disabled:placeholder-shown+span:after,.vot-textfield>textarea:disabled:placeholder-shown+span:before,.vot-textfield>textarea:disabled:placeholder-shown+span:after{border-top-color:#0000!important}@media not all and (-webkit-min-device-pixel-ratio:.0000264583),not all and (min-resolution:.001dpcm){@supports ((-webkit-appearance:none)){.vot-textfield>input,.vot-textfield>input+span,.vot-textfield>textarea,.vot-textfield>textarea+span,.vot-textfield>input+span:before,.vot-textfield>input+span:after,.vot-textfield>textarea+span:before,.vot-textfield>textarea+span:after{transition-duration:.1s!important}}}.vot-checkbox{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));--vot-helper-ontheme:var(--vot-ontheme-rgb,var(--vot-onprimary-rgb,255,255,255));z-index:0;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;font-size:16px;line-height:1.5;display:inline-block;position:relative}.vot-checkbox[hidden]{display:none!important}.vot-checkbox>input{appearance:none;z-index:10000;box-sizing:border-box;border:2px solid;border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.6);cursor:pointer;background:0 0;border-radius:2px;outline:none;width:18px;height:18px;margin:3px 1px;transition:border-color .2s,background-color .2s;display:block;position:absolute}.vot-checkbox>input+span{box-sizing:border-box;width:inherit;cursor:pointer;padding-left:30px;font-weight:400;display:inline-block}.vot-checkbox>input+span:before{content:"";background-color:rgb(var(--vot-onsurface-rgb,0,0,0));opacity:0;pointer-events:none;border-radius:50%;width:40px;height:40px;transition:opacity .3s,transform .2s;display:block;position:absolute;top:-8px;left:-10px;transform:scale(1)}.vot-checkbox>input+span:after{content:"";z-index:10000;pointer-events:none;border:0 solid #0000;border-width:0 0 2px 2px;width:10px;height:5px;transition:border-color .2s;display:block;position:absolute;top:3px;left:1px;transform:translate(3px,4px)rotate(-45deg);box-sizing:content-box!important}.vot-checkbox>input:checked,.vot-checkbox>input:indeterminate{border-color:rgb(var(--vot-helper-theme));background-color:rgb(var(--vot-helper-theme))}.vot-checkbox>input:checked+span:before,.vot-checkbox>input:indeterminate+span:before{background-color:rgb(var(--vot-helper-theme))}.vot-checkbox>input:checked+span:after,.vot-checkbox>input:indeterminate+span:after{border-color:rgb(var(--vot-helper-ontheme,255,255,255))}.vot-checkbox>input:indeterminate+span:after{border-left-width:0;transform:translate(4px,3px)}.vot-checkbox:hover>input+span:before{opacity:.04}.vot-checkbox:active>input,.vot-checkbox:active:hover>input{border-color:rgb(var(--vot-helper-theme))}.vot-checkbox:active>input:checked{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.6);border-color:#0000}.vot-checkbox:active>input+span:before{opacity:1;transition:transform,opacity;transform:scale(0)}.vot-checkbox>input:disabled{border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial}.vot-checkbox>input:disabled:checked,.vot-checkbox>input:disabled:indeterminate{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);border-color:#0000}.vot-checkbox>input:disabled+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial}.vot-checkbox>input:disabled+span:before{opacity:0;transform:scale(0)}.vot-slider{display:inline-block;--vot-safari-helper1:rgba(var(--vot-primary-rgb,33,150,243),.04)!important;--vot-safari-helper2:rgba(var(--vot-primary-rgb,33,150,243),.12)!important;--vot-safari-helper3:rgba(var(--vot-primary-rgb,33,150,243),.16)!important;--vot-safari-helper4:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;font-family:var(--vot-font,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system)!important;text-align:start!important;width:100%!important;font-size:16px!important;line-height:1.5!important}.vot-slider[hidden]{display:none!important}.vot-slider>input{appearance:none!important;cursor:pointer!important;background-color:#0000!important;width:100%!important;height:36px!important;margin:0 0 -36px!important;display:block!important;position:relative!important;top:24px!important}.vot-slider>input:last-child{margin:0!important;position:static!important}.vot-slider>span{margin-bottom:36px!important;display:inline-block!important}.vot-slider>input:disabled{cursor:default!important;opacity:.38!important}.vot-slider>input:disabled+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input::-webkit-slider-runnable-track{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important}.vot-slider>input::-webkit-slider-thumb{appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;margin:0!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider:hover>input::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper1)!important}.vot-slider>input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper4)!important}.vot-slider>input:disabled::-webkit-slider-runnable-track{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-webkit-slider-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;color:rgb(var(--vot-surface-rgb,255,255,255))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input::-moz-range-track{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important}.vot-slider>input::-moz-range-thumb{appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider>input::-moz-range-progress{background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border-radius:1px!important;height:2px!important}.vot-slider:hover>input:hover::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.04)!important}.vot-slider>input:active::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.24)!important}.vot-slider>input:disabled::-moz-range-track{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-moz-range-progress{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important}.vot-slider>input:disabled::-moz-range-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input::-moz-focus-outer{border:none!important}.vot-slider>input:focus{outline:none!important}.vot-slider>input::-ms-track{box-sizing:border-box!important;background-color:#0000!important;border:none!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important;padding:0 17px!important}.vot-slider>input::-ms-fill-lower{background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border-radius:1px!important;height:2px!important}.vot-slider>input::-ms-fill-upper{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;height:2px!important}.vot-slider>input::-ms-thumb{appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;margin:0 17px!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider:hover>input::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.04)!important}.vot-slider>input:active::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.24)!important}.vot-slider>input:disabled::-ms-fill-lower{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-ms-fill-upper{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;opacity:.38!important}.vot-slider>input:disabled::-ms-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input:before{content:""!important;width:calc(100%*var(--vot-progress,0))!important;background:rgb(var(--vot-primary-rgb,33,150,243))!important;height:2px!important;display:block!important;position:absolute!important;top:calc(50% - 1px)!important}.vot-select{font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;color:var(--vot-helper-theme);fill:var(--vot-helper-theme);justify-content:space-between;align-items:center;font-size:14px;font-weight:400;line-height:1.5;display:flex;--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0)!important;--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87)!important;--vot-helper-safari1:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;--vot-helper-safari2:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important}.vot-select[hidden]{display:none!important}.vot-select-label{font-size:16px}.vot-select-outer{cursor:pointer;justify-content:space-between;align-items:center;width:120px;max-width:120px;padding:0 5px;display:flex;border-style:solid!important;border-width:1px!important;border-color:var(--vot-helper-safari1)!important;border-radius:4px!important;transition:border .2s!important}.vot-select-outer:hover{border-color:var(--vot-helper-safari2)!important}.vot-select-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vot-select-arrow-icon{justify-content:center;align-items:center;width:20px;height:32px;display:flex}.vot-select-content-list{flex-direction:column;display:flex}.vot-select-content-list .vot-select-content-item{cursor:pointer;border-radius:8px;padding:5px 10px}.vot-select-content-list .vot-select-content-item:not([inert]):hover{background-color:#2a2c31}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]{color:rgb(var(--vot-primary-rgb,33,150,243));background-color:rgba(var(--vot-primary-rgb,33,150,243),.2)}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]:hover{background-color:rgba(var(--vot-primary-rgb,33,150,243),.1)!important}.vot-select-content-list .vot-select-content-item[data-vot-disabled=true]{cursor:default}.vot-select-content-list .vot-select-content-item[hidden]{display:none!important}.vot-header{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;font-weight:700;line-height:1.5}.vot-header[hidden]{display:none!important}.vot-header:not(:first-child){padding-top:8px}.vot-header-level-1{font-size:2em}.vot-header-level-2{font-size:1.5em}.vot-header-level-3{font-size:1.17em}.vot-header-level-4{font-size:1em}.vot-header-level-5{font-size:.83em}.vot-header-level-6{font-size:.67em}.vot-info{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;font-size:16px;line-height:1.5;display:flex}.vot-info[hidden]{display:none!important}.vot-info>:not(:first-child){color:rgba(var(--vot-helper-onsurface-rgb),.5);flex:1;margin-left:8px}.vot-details{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;cursor:pointer;border-radius:.5em;justify-content:space-between;align-items:center;margin:0 -.5em;padding:.5em;font-size:16px;line-height:1.5;transition:background .5s;display:flex}.vot-details[hidden]{display:none!important}.vot-details-arrow-icon{fill:rgba(var(--vot-helper-onsurface-rgb),.87);justify-content:center;align-items:center;width:20px;height:32px;display:flex;transform:scale(1.25)rotate(-90deg)}.vot-details:hover{background:rgba(var(--vot-onsurface-rgb,0,0,0),.04)}.vot-lang-select{--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87);color:var(--vot-helper-theme);fill:var(--vot-helper-theme);justify-content:space-between;align-items:center;display:flex}.vot-lang-select[hidden]{display:none!important}.vot-lang-select-icon{justify-content:center;align-items:center;width:32px;height:32px;display:flex}.vot-segmented-button{--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87);-webkit-user-select:none;user-select:none;background:rgb(var(--vot-surface-rgb,255,255,255));color:var(--vot-helper-theme);fill:var(--vot-helper-theme);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:default;z-index:2147483647;border-radius:4px;align-items:center;max-width:100vw;height:32px;font-size:16px;line-height:1.5;transition:opacity .5s;display:flex;position:absolute;top:5rem;left:50%;overflow:hidden;transform:translate(-50%)}.vot-segmented-button[hidden]{display:none!important}.vot-segmented-button *{box-sizing:border-box!important}.vot-segmented-button .vot-separator{background:rgba(var(--vot-helper-theme-rgb),.1);width:1px;height:50%}.vot-segmented-button .vot-separator[hidden]{display:none!important}.vot-segmented-button .vot-segment,.vot-segmented-button .vot-segment-only-icon{color:inherit;background-color:#0000;border:none;justify-content:center;align-items:center;height:100%;padding:0 8px;transition:background-color .1s ease-in-out;display:flex;position:relative;overflow:hidden}.vot-segmented-button .vot-segment[hidden],.vot-segmented-button [hidden].vot-segment-only-icon{display:none!important}.vot-segmented-button .vot-segment:before,.vot-segmented-button .vot-segment-only-icon:before,.vot-segmented-button .vot-segment:after,.vot-segmented-button .vot-segment-only-icon:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-segmented-button .vot-segment:before,.vot-segmented-button .vot-segment-only-icon:before{background-color:rgb(var(--vot-helper-theme-rgb));transition:opacity .2s}.vot-segmented-button .vot-segment:after,.vot-segmented-button .vot-segment-only-icon:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-segmented-button .vot-segment:hover:before,.vot-segmented-button .vot-segment-only-icon:hover:before{opacity:.04}.vot-segmented-button .vot-segment:active:after,.vot-segmented-button .vot-segment-only-icon:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-segmented-button .vot-segment-only-icon{min-width:32px;padding:0}.vot-segmented-button .vot-segment-label{white-space:nowrap;color:inherit;margin-left:8px}.vot-segmented-button[data-status=success] .vot-translate-button{color:rgb(var(--vot-primary-rgb,33,150,243));fill:rgb(var(--vot-primary-rgb,33,150,243))}.vot-segmented-button[data-status=error] .vot-translate-button{color:#f28b82;fill:#f28b82}.vot-segmented-button[data-loading=true] #vot-loading-icon{display:block!important}.vot-segmented-button[data-loading=true] #vot-translate-icon{display:none!important}.vot-segmented-button[data-direction=column]{flex-direction:column;height:fit-content}.vot-segmented-button[data-direction=column] .vot-segment-label{display:none}.vot-segmented-button[data-direction=column]>.vot-segment-only-icon,.vot-segmented-button[data-direction=column]>.vot-segment{padding:8px}.vot-segmented-button[data-direction=column] .vot-separator{width:50%;height:1px}.vot-segmented-button[data-position=left]{top:12.5vh;left:50px}.vot-segmented-button[data-position=right]{top:12.5vh;left:auto;right:0}.vot-segmented-button svg{width:fit-content}.vot-menu{--vot-helper-surface-rgb:var(--vot-surface-rgb,255,255,255);--vot-helper-surface:rgb(var(--vot-helper-surface-rgb));--vot-helper-onsurface-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-onsurface:rgba(var(--vot-helper-onsurface-rgb),.87);-webkit-user-select:none;user-select:none;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:default;z-index:2147483647;visibility:visible;opacity:1;transform-origin:top;border-radius:8px;min-width:300px;font-size:16px;line-height:1.5;transition:opacity .3s,transform .1s;position:absolute;top:calc(5rem + 48px);left:50%;overflow:hidden;transform:translate(-50%)scale(1)}.vot-menu *{box-sizing:border-box!important}.vot-menu[hidden]{pointer-events:none;visibility:hidden;opacity:0;transform:translate(-50%)scale(0);display:block!important}.vot-menu-content-wrapper{max-height:calc(var(--vot-container-height,75vh) - (5rem + 32px + 16px)*2);flex-direction:column;min-height:100px;display:flex;overflow:auto}.vot-menu-header-container{flex-shrink:0;align-items:flex-start;min-height:31px;display:flex}.vot-menu-header-container:empty{padding:0 0 16px}.vot-menu-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-menu-title-container{font-size:inherit;font-weight:inherit;text-align:start;outline:0;flex:1;margin:0;display:flex}.vot-menu-title{padding-bottom:16px;padding-inline:16px;flex:1;padding-top:16px;font-size:16px;line-height:1}.vot-menu-body-container{box-sizing:border-box;overscroll-behavior:contain;flex-direction:column;gap:8px;min-height:1.375rem;padding:0 16px;display:flex;overflow:auto;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb),.1)var(--vot-helper-surface)!important}.vot-menu-body-container::-webkit-scrollbar{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-menu-body-container::-webkit-scrollbar-track{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-menu-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb),.1)!important;border:5px solid var(--vot-helper-surface)!important;-webkit-border-radius:1ex!important}.vot-menu-body-container::-webkit-scrollbar-thumb:hover{border:3px solid var(--vot-helper-surface)!important}.vot-menu-body-container::-webkit-scrollbar-corner{background:var(--vot-helper-surface)!important}.vot-menu-footer-container{padding-bottom:16px;padding-inline:16px;flex-shrink:0;justify-content:flex-end;padding-top:16px;display:flex}.vot-menu-footer-container:empty{padding:16px 0 0}.vot-menu[data-position=left]{top:12.5vh;left:240px}.vot-menu[data-position=right]{top:12.5vh;left:auto;right:-80px}.vot-dialog{--vot-helper-surface-rgb:var(--vot-surface-rgb,255,255,255);--vot-helper-surface:rgb(var(--vot-helper-surface-rgb));--vot-helper-onsurface-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-onsurface:rgba(var(--vot-helper-onsurface-rgb),.87);max-width:initial;max-height:initial;width:min(var(--vot-dialog-width,512px),100%);top:50%;bottom:50%;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);-webkit-user-select:none;user-select:none;visibility:visible;opacity:1;transform-origin:50%;border-radius:8px;height:fit-content;margin:auto;padding:0;font-size:16px;line-height:1.5;transition:opacity .3s,transform .1s;display:block;position:fixed;inset-block:0;inset-inline:0;overflow:auto hidden;transform:scale(1);box-shadow:0 0 16px #0000001f,0 16px 16px #0000003d}[hidden]>.vot-dialog{pointer-events:none;opacity:0;transition:opacity .1s,transform .2s;transform:scale(.5)}.vot-dialog-container{visibility:visible;z-index:2147483647;position:absolute}.vot-dialog-container[hidden]{pointer-events:none;visibility:hidden;display:block!important}.vot-dialog-container *{box-sizing:border-box!important}.vot-dialog-backdrop{opacity:1;background-color:#0009;transition:opacity .3s;position:fixed;inset:0}[hidden]>.vot-dialog-backdrop{pointer-events:none;opacity:0}.vot-dialog-content-wrapper{flex-direction:column;max-height:75vh;display:flex;overflow:auto}.vot-dialog-header-container{flex-shrink:0;align-items:flex-start;min-height:31px;display:flex}.vot-dialog-header-container:empty{padding:0 0 20px}.vot-dialog-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-dialog-title-container{font-size:inherit;font-weight:inherit;outline:0;flex:1;margin:0;display:flex}.vot-dialog-title{padding-bottom:16px;padding-inline:20px;flex:1;padding-top:20px;font-size:115.385%;font-weight:700;line-height:1}.vot-dialog-body-container{box-sizing:border-box;overscroll-behavior:contain;flex-direction:column;gap:16px;min-height:1.375rem;padding:0 20px;display:flex;overflow:auto;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb),.1)var(--vot-helper-surface)!important}.vot-dialog-body-container::-webkit-scrollbar{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-dialog-body-container::-webkit-scrollbar-track{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-dialog-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb),.1)!important;border:5px solid var(--vot-helper-surface)!important;-webkit-border-radius:1ex!important}.vot-dialog-body-container::-webkit-scrollbar-thumb:hover{border:3px solid var(--vot-helper-surface)!important}.vot-dialog-body-container::-webkit-scrollbar-corner{background:var(--vot-helper-surface)!important}.vot-dialog-footer-container{padding-bottom:16px;padding-inline:16px;flex-shrink:0;justify-content:flex-end;padding-top:16px;display:flex}.vot-dialog-footer-container:empty{padding:20px 0 0}.vot-subtitles-widget{z-index:2147483647;pointer-events:none;justify-content:center;align-items:center;width:50%;min-height:20%;max-height:100%;display:flex;position:absolute;top:75%;left:25%}.vot-subtitles{--vot-subtitles-background:rgba(var(--vot-surface-rgb,46,47,52),var(--vot-subtitles-opacity,.8));background:var(--vot-subtitles-background,#2e2f34cc);color:var(--vot-subtitles-color,#e3e3e3);pointer-events:all;box-sizing:border-box;-webkit-user-select:none;user-select:none;border-radius:.5em;width:max-content;max-width:100%;max-height:100%;padding:.5em;font-size:20px;line-height:normal;position:relative}.vot-subtitles span{-webkit-user-select:text;user-select:text}.vot-subtitles .passed{color:var(--vot-subtitles-passed-color,#2196f3)}:root{--vot-font-family:"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;--vot-primary-rgb:139,180,245;--vot-onprimary-rgb:32,33,36;--vot-surface-rgb:32,33,36;--vot-onsurface-rgb:227,227,227;--vot-subtitles-color:rgb(var(--vot-onsurface-rgb,227,227,227));--vot-subtitles-passed-color:rgb(var(--vot-primary-rgb,33,150,243))}vot-block{display:block;visibility:visible!important}')},"./node_modules/bowser/es5.js":function(t){t.exports=function(t){var e={};function o(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)o.d(n,i,function(e){return t[e]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=90)}({17:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n=o(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var o=e.match(t);return o&&o.length>0&&o[1]||""},t.getSecondMatch=function(t,e){var o=e.match(t);return o&&o.length>1&&o[2]||""},t.matchAndReturnConst=function(t,e,o){if(t.test(e))return o},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),10===e[0])switch(e[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,o,n){void 0===n&&(n=!1);var i=t.getVersionPrecision(e),a=t.getVersionPrecision(o),r=Math.max(i,a),s=0,l=t.map([e,o],(function(e){var o=r-t.getVersionPrecision(e),n=e+new Array(o+1).join(".0");return t.map(n.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(n&&(s=r-Math.min(i,a)),r-=1;r>=s;){if(l[0][r]>l[1][r])return 1;if(l[0][r]===l[1][r]){if(r===s)return 0;r-=1}else if(l[0][r]1?i-1:0),r=1;r0){var r=Object.keys(o),l=s.default.find(r,(function(t){return e.isOS(t)}));if(l){var d=this.satisfies(o[l]);if(void 0!==d)return d}var u=s.default.find(r,(function(t){return e.isPlatform(t)}));if(u){var c=this.satisfies(o[u]);if(void 0!==c)return c}}if(a>0){var h=Object.keys(i),p=s.default.find(h,(function(t){return e.isBrowser(t,!0)}));if(void 0!==p)return this.compareVersion(i[p])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var o=this.getBrowserName().toLowerCase(),n=t.toLowerCase(),i=s.default.getBrowserTypeByAlias(n);return e&&i&&(n=i.toLowerCase()),n===o},e.compareVersion=function(t){var e=[0],o=t,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(o=t.substr(1),"="===t[1]?(n=!0,o=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?o=t.substr(1):"~"===t[0]&&(n=!0,o=t.substr(1)),e.indexOf(s.default.compareVersions(i,o,n))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=d,t.exports=e.default},92:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},o=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},o=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},o=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},o=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},o=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},o=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},o=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},o=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},o=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},o=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},o=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},o=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return o&&(e.version=o),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},o=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},o=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},o=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},o=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},o=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},o=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},o=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},o=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},o=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},o=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},o=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},o=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e={name:"Android Browser"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=r,t.exports=e.default},93:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:a.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),o=i.default.getWindowsVersionName(e);return{name:a.OS_MAP.Windows,version:e,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:a.OS_MAP.iOS},o=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return o&&(e.version=o),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),o=i.default.getMacOSVersionName(e),n={name:a.OS_MAP.MacOS,version:e};return o&&(n.versionName=o),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),o=i.default.getAndroidVersionName(e),n={name:a.OS_MAP.Android,version:e};return o&&(n.versionName=o),n}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),o={name:a.OS_MAP.WebOS};return e&&e.length&&(o.version=e),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:a.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Tizen,version:e}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.PlayStation4,version:e}}}];e.default=r,t.exports=e.default},94:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",o={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(o.model=e),o}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){var e=t.test(/ipod|iphone/i),o=t.test(/like (ipod|iphone)/i);return e&&!o},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];e.default=r,t.exports=e.default},95:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:a.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:a.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:a.ENGINE_MAP.Trident},o=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:a.ENGINE_MAP.Presto},o=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=t.test(/gecko/i),o=t.test(/like gecko/i);return e&&!o},describe:function(t){var e={name:a.ENGINE_MAP.Gecko},o=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:a.ENGINE_MAP.WebKit},o=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}}];e.default=r,t.exports=e.default}})},"./node_modules/requestidlecallback-polyfill/index.js":()=>{window.requestIdleCallback=window.requestIdleCallback||function(t){var e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)},window.cancelIdleCallback=window.cancelIdleCallback||function(t){clearTimeout(t)}}},e={};function o(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={exports:{}};return t[n].call(a.exports,a,a.exports,o),a.exports}(()=>{"use strict";var t=o("./node_modules/bowser/es5.js");const e=protobuf;var n;function i(t){switch(t){case 0:case"NO_CONNECTION":return n.NO_CONNECTION;case 10:case"TRANSLATING":return n.TRANSLATING;case 20:case"STREAMING":return n.STREAMING;default:return n.UNRECOGNIZED}}!function(t){t[t.NO_CONNECTION=0]="NO_CONNECTION",t[t.TRANSLATING=10]="TRANSLATING",t[t.STREAMING=20]="STREAMING",t[t.UNRECOGNIZED=-1]="UNRECOGNIZED"}(n||(n={}));const a={encode:(t,o=e.Writer.create())=>(""!==t.target&&o.uint32(10).string(t.target),""!==t.targetUrl&&o.uint32(18).string(t.targetUrl),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={target:"",targetUrl:""};for(;n.pos>>3){case 1:if(10!==t)break;a.target=n.string();continue;case 2:if(18!==t)break;a.targetUrl=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({target:b(t.target)?globalThis.String(t.target):"",targetUrl:b(t.targetUrl)?globalThis.String(t.targetUrl):""}),toJSON(t){const e={};return""!==t.target&&(e.target=t.target),""!==t.targetUrl&&(e.targetUrl=t.targetUrl),e},create:t=>a.fromPartial(t??{}),fromPartial(t){const e={target:"",targetUrl:""};return e.target=t.target??"",e.targetUrl=t.targetUrl??"",e}};const r={encode(t,o=e.Writer.create()){""!==t.url&&o.uint32(26).string(t.url),void 0!==t.deviceId&&o.uint32(34).string(t.deviceId),!1!==t.firstRequest&&o.uint32(40).bool(t.firstRequest),0!==t.duration&&o.uint32(49).double(t.duration),0!==t.unknown0&&o.uint32(56).int32(t.unknown0),""!==t.language&&o.uint32(66).string(t.language),!1!==t.forceSourceLang&&o.uint32(72).bool(t.forceSourceLang),0!==t.unknown1&&o.uint32(80).int32(t.unknown1);for(const e of t.translationHelp)a.encode(e,o.uint32(90).fork()).ldelim();return""!==t.responseLanguage&&o.uint32(114).string(t.responseLanguage),0!==t.unknown2&&o.uint32(120).int32(t.unknown2),0!==t.unknown3&&o.uint32(128).int32(t.unknown3),!1!==t.bypassCache&&o.uint32(136).bool(t.bypassCache),o},decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const r={url:"",deviceId:void 0,firstRequest:!1,duration:0,unknown0:0,language:"",forceSourceLang:!1,unknown1:0,translationHelp:[],responseLanguage:"",unknown2:0,unknown3:0,bypassCache:!1};for(;n.pos>>3){case 3:if(26!==t)break;r.url=n.string();continue;case 4:if(34!==t)break;r.deviceId=n.string();continue;case 5:if(40!==t)break;r.firstRequest=n.bool();continue;case 6:if(49!==t)break;r.duration=n.double();continue;case 7:if(56!==t)break;r.unknown0=n.int32();continue;case 8:if(66!==t)break;r.language=n.string();continue;case 9:if(72!==t)break;r.forceSourceLang=n.bool();continue;case 10:if(80!==t)break;r.unknown1=n.int32();continue;case 11:if(90!==t)break;r.translationHelp.push(a.decode(n,n.uint32()));continue;case 14:if(114!==t)break;r.responseLanguage=n.string();continue;case 15:if(120!==t)break;r.unknown2=n.int32();continue;case 16:if(128!==t)break;r.unknown3=n.int32();continue;case 17:if(136!==t)break;r.bypassCache=n.bool();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return r},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",deviceId:b(t.deviceId)?globalThis.String(t.deviceId):void 0,firstRequest:!!b(t.firstRequest)&&globalThis.Boolean(t.firstRequest),duration:b(t.duration)?globalThis.Number(t.duration):0,unknown0:b(t.unknown0)?globalThis.Number(t.unknown0):0,language:b(t.language)?globalThis.String(t.language):"",forceSourceLang:!!b(t.forceSourceLang)&&globalThis.Boolean(t.forceSourceLang),unknown1:b(t.unknown1)?globalThis.Number(t.unknown1):0,translationHelp:globalThis.Array.isArray(t?.translationHelp)?t.translationHelp.map((t=>a.fromJSON(t))):[],responseLanguage:b(t.responseLanguage)?globalThis.String(t.responseLanguage):"",unknown2:b(t.unknown2)?globalThis.Number(t.unknown2):0,unknown3:b(t.unknown3)?globalThis.Number(t.unknown3):0,bypassCache:!!b(t.bypassCache)&&globalThis.Boolean(t.bypassCache)}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),void 0!==t.deviceId&&(e.deviceId=t.deviceId),!1!==t.firstRequest&&(e.firstRequest=t.firstRequest),0!==t.duration&&(e.duration=t.duration),0!==t.unknown0&&(e.unknown0=Math.round(t.unknown0)),""!==t.language&&(e.language=t.language),!1!==t.forceSourceLang&&(e.forceSourceLang=t.forceSourceLang),0!==t.unknown1&&(e.unknown1=Math.round(t.unknown1)),t.translationHelp?.length&&(e.translationHelp=t.translationHelp.map((t=>a.toJSON(t)))),""!==t.responseLanguage&&(e.responseLanguage=t.responseLanguage),0!==t.unknown2&&(e.unknown2=Math.round(t.unknown2)),0!==t.unknown3&&(e.unknown3=Math.round(t.unknown3)),!1!==t.bypassCache&&(e.bypassCache=t.bypassCache),e},create:t=>r.fromPartial(t??{}),fromPartial(t){const e={url:"",deviceId:void 0,firstRequest:!1,duration:0,unknown0:0,language:"",forceSourceLang:!1,unknown1:0,translationHelp:[],responseLanguage:"",unknown2:0,unknown3:0,bypassCache:!1};return e.url=t.url??"",e.deviceId=t.deviceId??void 0,e.firstRequest=t.firstRequest??!1,e.duration=t.duration??0,e.unknown0=t.unknown0??0,e.language=t.language??"",e.forceSourceLang=t.forceSourceLang??!1,e.unknown1=t.unknown1??0,e.translationHelp=t.translationHelp?.map((t=>a.fromPartial(t)))||[],e.responseLanguage=t.responseLanguage??"",e.unknown2=t.unknown2??0,e.unknown3=t.unknown3??0,e.bypassCache=t.bypassCache??!1,e}};const s={encode:(t,o=e.Writer.create())=>(void 0!==t.url&&o.uint32(10).string(t.url),void 0!==t.duration&&o.uint32(17).double(t.duration),0!==t.status&&o.uint32(32).int32(t.status),void 0!==t.remainingTime&&o.uint32(40).int32(t.remainingTime),void 0!==t.unknown0&&o.uint32(48).int32(t.unknown0),""!==t.translationId&&o.uint32(58).string(t.translationId),void 0!==t.language&&o.uint32(66).string(t.language),void 0!==t.message&&o.uint32(74).string(t.message),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:void 0,duration:void 0,status:0,remainingTime:void 0,unknown0:void 0,translationId:"",language:void 0,message:void 0};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(17!==t)break;a.duration=n.double();continue;case 4:if(32!==t)break;a.status=n.int32();continue;case 5:if(40!==t)break;a.remainingTime=n.int32();continue;case 6:if(48!==t)break;a.unknown0=n.int32();continue;case 7:if(58!==t)break;a.translationId=n.string();continue;case 8:if(66!==t)break;a.language=n.string();continue;case 9:if(74!==t)break;a.message=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):void 0,duration:b(t.duration)?globalThis.Number(t.duration):void 0,status:b(t.status)?globalThis.Number(t.status):0,remainingTime:b(t.remainingTime)?globalThis.Number(t.remainingTime):void 0,unknown0:b(t.unknown0)?globalThis.Number(t.unknown0):void 0,translationId:b(t.translationId)?globalThis.String(t.translationId):"",language:b(t.language)?globalThis.String(t.language):void 0,message:b(t.message)?globalThis.String(t.message):void 0}),toJSON(t){const e={};return void 0!==t.url&&(e.url=t.url),void 0!==t.duration&&(e.duration=t.duration),0!==t.status&&(e.status=Math.round(t.status)),void 0!==t.remainingTime&&(e.remainingTime=Math.round(t.remainingTime)),void 0!==t.unknown0&&(e.unknown0=Math.round(t.unknown0)),""!==t.translationId&&(e.translationId=t.translationId),void 0!==t.language&&(e.language=t.language),void 0!==t.message&&(e.message=t.message),e},create:t=>s.fromPartial(t??{}),fromPartial(t){const e={url:void 0,duration:void 0,status:0,remainingTime:void 0,unknown0:void 0,translationId:"",language:void 0,message:void 0};return e.url=t.url??void 0,e.duration=t.duration??void 0,e.status=t.status??0,e.remainingTime=t.remainingTime??void 0,e.unknown0=t.unknown0??void 0,e.translationId=t.translationId??"",e.language=t.language??void 0,e.message=t.message??void 0,e}};const l={encode:(t,o=e.Writer.create())=>(""!==t.language&&o.uint32(10).string(t.language),""!==t.url&&o.uint32(18).string(t.url),0!==t.unknown0&&o.uint32(24).int32(t.unknown0),""!==t.translatedLanguage&&o.uint32(34).string(t.translatedLanguage),""!==t.translatedUrl&&o.uint32(42).string(t.translatedUrl),0!==t.unknown1&&o.uint32(48).int32(t.unknown1),0!==t.unknown2&&o.uint32(56).int32(t.unknown2),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={language:"",url:"",unknown0:0,translatedLanguage:"",translatedUrl:"",unknown1:0,unknown2:0};for(;n.pos>>3){case 1:if(10!==t)break;a.language=n.string();continue;case 2:if(18!==t)break;a.url=n.string();continue;case 3:if(24!==t)break;a.unknown0=n.int32();continue;case 4:if(34!==t)break;a.translatedLanguage=n.string();continue;case 5:if(42!==t)break;a.translatedUrl=n.string();continue;case 6:if(48!==t)break;a.unknown1=n.int32();continue;case 7:if(56!==t)break;a.unknown2=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({language:b(t.language)?globalThis.String(t.language):"",url:b(t.url)?globalThis.String(t.url):"",unknown0:b(t.unknown0)?globalThis.Number(t.unknown0):0,translatedLanguage:b(t.translatedLanguage)?globalThis.String(t.translatedLanguage):"",translatedUrl:b(t.translatedUrl)?globalThis.String(t.translatedUrl):"",unknown1:b(t.unknown1)?globalThis.Number(t.unknown1):0,unknown2:b(t.unknown2)?globalThis.Number(t.unknown2):0}),toJSON(t){const e={};return""!==t.language&&(e.language=t.language),""!==t.url&&(e.url=t.url),0!==t.unknown0&&(e.unknown0=Math.round(t.unknown0)),""!==t.translatedLanguage&&(e.translatedLanguage=t.translatedLanguage),""!==t.translatedUrl&&(e.translatedUrl=t.translatedUrl),0!==t.unknown1&&(e.unknown1=Math.round(t.unknown1)),0!==t.unknown2&&(e.unknown2=Math.round(t.unknown2)),e},create:t=>l.fromPartial(t??{}),fromPartial(t){const e={language:"",url:"",unknown0:0,translatedLanguage:"",translatedUrl:"",unknown1:0,unknown2:0};return e.language=t.language??"",e.url=t.url??"",e.unknown0=t.unknown0??0,e.translatedLanguage=t.translatedLanguage??"",e.translatedUrl=t.translatedUrl??"",e.unknown1=t.unknown1??0,e.unknown2=t.unknown2??0,e}};const d={encode:(t,o=e.Writer.create())=>(""!==t.url&&o.uint32(10).string(t.url),""!==t.language&&o.uint32(18).string(t.language),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:"",language:""};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(18!==t)break;a.language=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",language:b(t.language)?globalThis.String(t.language):""}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),""!==t.language&&(e.language=t.language),e},create:t=>d.fromPartial(t??{}),fromPartial(t){const e={url:"",language:""};return e.url=t.url??"",e.language=t.language??"",e}};const u={encode(t,o=e.Writer.create()){!1!==t.waiting&&o.uint32(8).bool(t.waiting);for(const e of t.subtitles)l.encode(e,o.uint32(18).fork()).ldelim();return o},decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={waiting:!1,subtitles:[]};for(;n.pos>>3){case 1:if(8!==t)break;a.waiting=n.bool();continue;case 2:if(18!==t)break;a.subtitles.push(l.decode(n,n.uint32()));continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({waiting:!!b(t.waiting)&&globalThis.Boolean(t.waiting),subtitles:globalThis.Array.isArray(t?.subtitles)?t.subtitles.map((t=>l.fromJSON(t))):[]}),toJSON(t){const e={};return!1!==t.waiting&&(e.waiting=t.waiting),t.subtitles?.length&&(e.subtitles=t.subtitles.map((t=>l.toJSON(t)))),e},create:t=>u.fromPartial(t??{}),fromPartial(t){const e={waiting:!1,subtitles:[]};return e.waiting=t.waiting??!1,e.subtitles=t.subtitles?.map((t=>l.fromPartial(t)))||[],e}};const c={encode:(t,o=e.Writer.create())=>(""!==t.url&&o.uint32(10).string(t.url),""!==t.timestamp&&o.uint32(18).string(t.timestamp),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:"",timestamp:""};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(18!==t)break;a.timestamp=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",timestamp:b(t.timestamp)?globalThis.String(t.timestamp):""}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),""!==t.timestamp&&(e.timestamp=t.timestamp),e},create:t=>c.fromPartial(t??{}),fromPartial(t){const e={url:"",timestamp:""};return e.url=t.url??"",e.timestamp=t.timestamp??"",e}};const h={encode:(t,o=e.Writer.create())=>(""!==t.url&&o.uint32(10).string(t.url),""!==t.language&&o.uint32(18).string(t.language),""!==t.responseLanguage&&o.uint32(26).string(t.responseLanguage),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:"",language:"",responseLanguage:""};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(18!==t)break;a.language=n.string();continue;case 3:if(26!==t)break;a.responseLanguage=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",language:b(t.language)?globalThis.String(t.language):"",responseLanguage:b(t.responseLanguage)?globalThis.String(t.responseLanguage):""}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),""!==t.language&&(e.language=t.language),""!==t.responseLanguage&&(e.responseLanguage=t.responseLanguage),e},create:t=>h.fromPartial(t??{}),fromPartial(t){const e={url:"",language:"",responseLanguage:""};return e.url=t.url??"",e.language=t.language??"",e.responseLanguage=t.responseLanguage??"",e}};const p={encode:(t,o=e.Writer.create())=>(0!==t.interval&&o.uint32(8).int32(t.interval),void 0!==t.translatedInfo&&c.encode(t.translatedInfo,o.uint32(18).fork()).ldelim(),void 0!==t.pingId&&o.uint32(24).int32(t.pingId),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={interval:0,translatedInfo:void 0,pingId:void 0};for(;n.pos>>3){case 1:if(8!==t)break;a.interval=n.int32();continue;case 2:if(18!==t)break;a.translatedInfo=c.decode(n,n.uint32());continue;case 3:if(24!==t)break;a.pingId=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({interval:b(t.interval)?i(t.interval):0,translatedInfo:b(t.translatedInfo)?c.fromJSON(t.translatedInfo):void 0,pingId:b(t.pingId)?globalThis.Number(t.pingId):void 0}),toJSON(t){const e={};return 0!==t.interval&&(e.interval=function(t){switch(t){case n.NO_CONNECTION:return"NO_CONNECTION";case n.TRANSLATING:return"TRANSLATING";case n.STREAMING:return"STREAMING";case n.UNRECOGNIZED:default:return"UNRECOGNIZED"}}(t.interval)),void 0!==t.translatedInfo&&(e.translatedInfo=c.toJSON(t.translatedInfo)),void 0!==t.pingId&&(e.pingId=Math.round(t.pingId)),e},create:t=>p.fromPartial(t??{}),fromPartial(t){const e={interval:0,translatedInfo:void 0,pingId:void 0};return e.interval=t.interval??0,e.translatedInfo=void 0!==t.translatedInfo&&null!==t.translatedInfo?c.fromPartial(t.translatedInfo):void 0,e.pingId=t.pingId??void 0,e}};const g={encode:(t,o=e.Writer.create())=>(0!==t.pingId&&o.uint32(8).int32(t.pingId),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={pingId:0};for(;n.pos>>3){case 1:if(8!==t)break;a.pingId=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({pingId:b(t.pingId)?globalThis.Number(t.pingId):0}),toJSON(t){const e={};return 0!==t.pingId&&(e.pingId=Math.round(t.pingId)),e},create:t=>g.fromPartial(t??{}),fromPartial(t){const e={pingId:0};return e.pingId=t.pingId??0,e}};const v={encode:(t,o=e.Writer.create())=>(""!==t.uuid&&o.uint32(10).string(t.uuid),""!==t.module&&o.uint32(18).string(t.module),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={uuid:"",module:""};for(;n.pos>>3){case 1:if(10!==t)break;a.uuid=n.string();continue;case 2:if(18!==t)break;a.module=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({uuid:b(t.uuid)?globalThis.String(t.uuid):"",module:b(t.module)?globalThis.String(t.module):""}),toJSON(t){const e={};return""!==t.uuid&&(e.uuid=t.uuid),""!==t.module&&(e.module=t.module),e},create:t=>v.fromPartial(t??{}),fromPartial(t){const e={uuid:"",module:""};return e.uuid=t.uuid??"",e.module=t.module??"",e}};const m={encode:(t,o=e.Writer.create())=>(""!==t.secretKey&&o.uint32(10).string(t.secretKey),0!==t.expires&&o.uint32(16).int32(t.expires),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={secretKey:"",expires:0};for(;n.pos>>3){case 1:if(10!==t)break;a.secretKey=n.string();continue;case 2:if(16!==t)break;a.expires=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({secretKey:b(t.secretKey)?globalThis.String(t.secretKey):"",expires:b(t.expires)?globalThis.Number(t.expires):0}),toJSON(t){const e={};return""!==t.secretKey&&(e.secretKey=t.secretKey),0!==t.expires&&(e.expires=Math.round(t.expires)),e},create:t=>m.fromPartial(t??{}),fromPartial(t){const e={secretKey:"",expires:0};return e.secretKey=t.secretKey??"",e.expires=t.expires??0,e}};function b(t){return null!=t}const f={encodeTranslationRequest:(t,e,o,n,i)=>r.encode({url:t,firstRequest:!0,duration:e,unknown0:1,language:o,forceSourceLang:!1,unknown1:0,translationHelp:i||[],responseLanguage:n,unknown2:0,unknown3:1,bypassCache:!1}).finish(),decodeTranslationResponse:t=>s.decode(new Uint8Array(t)),encodeSubtitlesRequest:(t,e)=>d.encode({url:t,language:e}).finish(),decodeSubtitlesResponse:t=>u.decode(new Uint8Array(t)),encodeStreamPingRequest:t=>g.encode({pingId:t}).finish(),encodeStreamRequest:(t,e,o)=>h.encode({url:t,language:e,responseLanguage:o}).finish(),decodeStreamResponse:t=>p.decode(new Uint8Array(t)),encodeYandexSessionRequest:(t,e)=>v.encode({uuid:t,module:e}).finish(),decodeYandexSessionResponse:t=>m.decode(new Uint8Array(t))},y={host:"api.browser.yandex.ru",hostVOT:"vot-api.toil.cc/v1",userAgent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 YaBrowser/24.6.0.0 Safari/537.36",componentVersion:"24.7.0.2377",hmac:"bt8xH3VOlb4mqf0nqAibnDOoiPlXsisf",defaultDuration:343},w=new TextEncoder;async function x(t,e,o){const n=await crypto.subtle.importKey("raw",w.encode(e),{name:"HMAC",hash:{name:t}},!1,["sign","verify"]);return await crypto.subtle.sign("HMAC",n,o)}async function S(t){const e=await x("SHA-256",y.hmac,t);return new Uint8Array(e).reduce(((t,e)=>t+e.toString(16).padStart(2,"0")),"")}var k,T;async function L(t,e={headers:{"User-Agent":y.userAgent}}){const{timeout:o=3e3,...n}=e,i=new AbortController,a=setTimeout((()=>i.abort()),o),r=await fetch(t,{signal:i.signal,...n});return clearTimeout(a),r}!function(t){t.custom="custom",t.directlink="custom",t.youtube="youtube",t.piped="piped",t.invidious="invidious",t.vk="vk",t.nine_gag="nine_gag",t.gag="nine_gag",t.twitch="twitch",t.proxitok="proxitok",t.tiktok="tiktok",t.vimeo="vimeo",t.xvideos="xvideos",t.pornhub="pornhub",t.twitter="twitter",t.rumble="rumble",t.facebook="facebook",t.rutube="rutube",t.coub="coub",t.bilibili="bilibili",t.mail_ru="mailru",t.mailru="mailru",t.bitchute="bitchute",t.coursera="coursera",t.udemy="udemy",t.eporner="eporner",t.peertube="peertube",t.dailymotion="dailymotion",t.trovo="trovo",t.yandexdisk="yandexdisk",t.coursehunter="coursehunter",t.ok_ru="okru",t.okru="okru",t.googledrive="googledrive",t.bannedvideo="bannedvideo",t.weverse="weverse",t.newgrounds="newgrounds",t.egghead="egghead",t.youku="youku",t.archive="archive",t.kodik="kodik",t.patreon="patreon",t.reddit="reddit",t.kick="kick",t.apple_developer="apple_developer",t.appledeveloper="apple_developer",t.poketube="poketube"}(k||(k={})),function(t){t[t.FAILED=0]="FAILED",t[t.FINISHED=1]="FINISHED",t[t.WAITING=2]="WAITING",t[t.LONG_WAITING=3]="LONG_WAITING",t[t.PART_CONTENT=5]="PART_CONTENT",t[t.LONG_WAITING_2=6]="LONG_WAITING_2"}(T||(T={}));const V=["yewtu.be","yt.artemislena.eu","invidious.flokinet.to","iv.melmac.space","inv.nadeko.net","inv.tux.pizza","invidious.private.coffee","yt.drgnz.club","vid.puffyan.us","invidious.dhusch.de"],M=["piped.video","piped.tokhmi.xyz","piped.moomoo.me","piped.syncpundit.io","piped.mha.fi","watch.whatever.social","piped.garudalinux.org","efy.piped.pages.dev","watch.leptons.xyz","piped.lunar.icu","yt.dc09.ru","piped.mint.lgbt","il.ax","piped.privacy.com.de","piped.esmailelbob.xyz","piped.projectsegfau.lt","piped.in.projectsegfau.lt","piped.us.projectsegfau.lt","piped.privacydev.net","piped.palveluntarjoaja.eu","piped.smnz.de","piped.adminforge.de","piped.qdi.fi","piped.hostux.net","piped.chauvet.pro","piped.jotoma.de","piped.pfcd.me","piped.frontendfriendly.xyz"],A=[{additionalData:"mobile",host:k.youtube,url:"https://youtu.be/",match:/^m.youtube.com$/,selector:"shorts-video #player"},{additionalData:"mobile",host:k.youtube,url:"https://youtu.be/",match:/^m.youtube.com$/,selector:".player-container"},{host:k.youtube,url:"https://youtu.be/",match:/^(www.)?youtube(-nocookie|kids)?.com$/,selector:".html5-video-container:not(#inline-player *)"},{host:k.invidious,url:"https://youtu.be/",match:V,selector:"#player"},{host:k.piped,url:"https://youtu.be/",match:M,selector:".shaka-video-container"},{host:k.poketube,url:"https://youtu.be/",match:["poketube.fun","pt.sudovanilla.org","poke.ggtyler.dev","poke.uk2.littlekai.co.uk","poke.blahai.gay"],selector:".video-player-container"},{additionalData:"mobile",host:k.vk,url:"https://vk.com/video?z=",match:/^m.vk.(com|ru)$/,selector:"vk-video-player",shadowRoot:!0},{additionalData:"clips",host:k.vk,url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:'div[data-testid="clipcontainer-video"]'},{host:k.vk,url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:".videoplayer_media"},{host:k.nine_gag,url:"https://9gag.com/gag/",match:/^9gag.com$/,selector:".video-post"},{host:k.twitch,url:"https://twitch.tv/",match:[/^m.twitch.tv$/,/^(www.)?twitch.tv$/,/^clips.twitch.tv$/,/^player.twitch.tv$/],selector:".video-ref, main > div > section > div > div > div"},{host:k.proxitok,url:"https://www.tiktok.com/",match:["proxitok.pabloferreiro.es","proxitok.pussthecat.org","tok.habedieeh.re","proxitok.esmailelbob.xyz","proxitok.privacydev.net","tok.artemislena.eu","tok.adminforge.de","tt.vern.cc","cringe.whatever.social","proxitok.lunar.icu","proxitok.privacy.com.de"],selector:".column.has-text-centered"},{host:k.tiktok,url:"https://www.tiktok.com/",match:/^(www.)?tiktok.com$/,selector:null},{host:k.vimeo,url:"https://vimeo.com/",match:/^vimeo.com$/,selector:".player"},{host:k.vimeo,url:"https://player.vimeo.com/",match:/^player.vimeo.com$/,selector:".player"},{host:k.xvideos,url:"https://www.xvideos.com/",match:/^(www.)?(xvideos|xv-ru).com$/,selector:".video-bg-pic"},{host:k.pornhub,url:"https://rt.pornhub.com/view_video.php?viewkey=",match:/^[a-z]+.pornhub.com$/,selector:".mainPlayerDiv > .video-element-wrapper-js > div"},{additionalData:"embed",host:k.pornhub,url:"https://rt.pornhub.com/view_video.php?viewkey=",match:t=>t.host.includes("pornhub.com")&&t.pathname.startsWith("/embed/"),selector:"#player"},{host:k.twitter,url:"https://twitter.com/i/status/",match:/^(twitter|x).com$/,selector:'div[data-testid="videoComponent"] > div:nth-child(1) > div'},{host:k.rumble,url:"https://rumble.com/",match:/^rumble.com$/,selector:"#videoPlayer > .videoPlayer-Rumble-cls > div"},{host:k.facebook,url:"https://facebook.com/",match:t=>t.host.includes("facebook.com")&&t.pathname.includes("/videos/"),selector:'div[role="main"] div[data-pagelet$="video" i]'},{additionalData:"reels",host:k.facebook,url:"https://facebook.com/",match:t=>t.host.includes("facebook.com")&&t.pathname.includes("/reel/"),selector:'div[role="main"]'},{host:k.rutube,url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:".video-player > div > div > div:nth-child(2)"},{additionalData:"embed",host:k.rutube,url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:"#app > div > div"},{host:k.bilibili,url:"https://www.bilibili.com/video/",match:/^(www|m|player).bilibili.com$/,selector:".bpx-player-video-wrap",selector:".bpx-player-video-wrap"},{additionalData:"old",host:k.bilibili,url:"https://www.bilibili.com/video/",match:/^(www|m).bilibili.com$/,selector:null},{host:k.mailru,url:"https://my.mail.ru/",match:/^my.mail.ru$/,selector:"#b-video-wrapper"},{host:k.bitchute,url:"https://www.bitchute.com/video/",match:/^(www.)?bitchute.com$/,selector:".video-js"},{host:k.coursera,url:"https://www.coursera.org/",match:/coursera.org$/,selector:".vjs-v6",needExtraData:!0},{host:k.udemy,url:"https://www.udemy.com/",match:/udemy.com$/,selector:'div[data-purpose="curriculum-item-viewer-content"] > section > div > div > div > div:nth-of-type(2)',needExtraData:!0},{host:k.eporner,url:"https://www.eporner.com/",match:/^(www.)?eporner.com$/,selector:".vjs-v7"},{host:k.peertube,url:"stub",match:["peertube.1312.media","tube.shanti.cafe","bee-tube.fr","video.sadmin.io","dalek.zone","review.peertube.biz","peervideo.club","tube.la-dina.net","peertube.tmp.rcp.tf","peertube.su","video.blender.org","videos.viorsan.com","tube-sciences-technologies.apps.education.fr","tube-numerique-educatif.apps.education.fr","tube-arts-lettres-sciences-humaines.apps.education.fr","beetoons.tv","comics.peertube.biz","makertube.net"],selector:".vjs-v7"},{host:k.dailymotion,url:"https://dai.ly/",match:/^geo([\d]+)?.dailymotion.com$/,selector:".player"},{host:k.trovo,url:"https://trovo.live/s/",match:/^trovo.live$/,selector:".player-video"},{host:k.yandexdisk,url:"https://yadi.sk/i/",match:/^disk.yandex.ru$/,selector:".video-player__player > div:nth-child(1)"},{host:k.coursehunter,url:"https://coursehunter.net/course/",match:/^coursehunter.net$/,selector:"#oframeplayer > pjsdiv:nth-of-type(1)",needExtraData:!0},{host:k.okru,url:"https://ok.ru/video/",match:/^ok.ru$/,selector:".html5-vpl_vid"},{host:k.googledrive,url:"https://drive.google.com/file/d/",match:/^youtube.googleapis.com$/,selector:".html5-video-container"},{host:k.bannedvideo,url:"https://madmaxworld.tv/watch?id=",match:/^(www.)?banned.video|madmaxworld.tv$/,selector:".vjs-v7",needExtraData:!0},{host:k.weverse,url:"https://weverse.io/",match:/^weverse.io$/,selector:".webplayer-internal-source-wrapper",needExtraData:!0},{host:k.newgrounds,url:"https://www.newgrounds.com/",match:/^(www.)?newgrounds.com$/,selector:".ng-video-player"},{host:k.egghead,url:"https://egghead.io/",match:/^egghead.io$/,selector:".cueplayer-react-video-holder"},{host:k.youku,url:"https://v.youku.com/",match:/^v.youku.com$/,selector:"#ykPlayer"},{host:k.archive,url:"https://archive.org/details/",match:/^archive.org$/,selector:".jw-media"},{host:k.kodik,url:"stub",match:/^kodik.(info|biz|cc)$/,selector:".fp-player",needExtraData:!0},{host:k.patreon,url:"stub",match:/^(www.)?patreon.com$/,selector:'div[data-tag="post-card"] div[elevation="subtle"] > div > div > div > div',needExtraData:!0},{host:k.reddit,url:"stub",match:/^old.reddit.com$/,selector:".reddit-video-player-root",needExtraData:!0},{host:k.kick,url:"https://kick.com/",match:/^kick.com$/,selector:".vjs-v8",needExtraData:!0},{host:k.appledeveloper,url:"https://developer.apple.com/",match:/^developer.apple.com$/,selector:".developer-video-player",needExtraData:!0},{host:k.custom,url:"stub",match:t=>/([^.]+).mp4/.test(t.pathname),rawResult:!0}],O=["auto","ru","en","zh","ko","lt","lv","ar","fr","it","es","de","ja"],C=["ru","en","kk"],P=JSON.parse('{"__version__":5,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","resetSettings":"Reset settings","videoBeingTranslated":"The video is being translated","videoLanguage":"Video language","translationLanguage":"Translation language","translationTake":"The translation will take","translationTakeMoreThanHour":"The translation will take more than an hour","translationTakeAboutMinute":"The translation will take about a minute","translationTakeFewMinutes":"The translation will take a few minutes","translationTakeApproximatelyMinutes":"The translation will take approximately {0} minutes","translationTakeApproximatelyMinute":"The translation will take approximately {0} minutes","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not translate from my language","VOTVolume":"Video volume","VOTVolumeTranslation":"Translation Volume","VOTAutoSetVolume":"Reduce video volume to ","VOTShowVideoSlider":"Video volume slider","VOTSyncVolume":"Link translation and video volume","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","VOTVideoIsTooLong":"Video is too long","VOTNoVideoIDFound":"No video ID found","VOTSubtitles":"Subtitles","VOTSubtitlesDisabled":"Disabled","VOTSubtitlesMaxLength":"Subtitles max length","VOTHighlightWords":"Highlight words","VOTTranslatedFrom":"translated from","VOTAutogenerated":"autogenerated","VOTSettings":"VOT Settings","VOTMenuLanguage":"Menu language","VOTAuthors":"Authors","VOTVersion":"Version","VOTLoader":"Loader","VOTBrowser":"Browser","VOTShowPiPButton":"Show PiP button","langs":{"auto":"Auto","af":"Afrikaans","ak":"Akan","sq":"Albanian","am":"Amharic","ar":"Arabic","hy":"Armenian","as":"Assamese","ay":"Aymara","az":"Azerbaijani","bn":"Bangla","eu":"Basque","be":"Belarusian","bho":"Bhojpuri","bs":"Bosnian","bg":"Bulgarian","my":"Burmese","ca":"Catalan","ceb":"Cebuano","zh":"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)","co":"Corsican","hr":"Croatian","cs":"Czech","da":"Danish","dv":"Divehi","nl":"Dutch","en":"English","eo":"Esperanto","et":"Estonian","ee":"Ewe","fil":"Filipino","fi":"Finnish","fr":"French","gl":"Galician","lg":"Ganda","ka":"Georgian","de":"German","el":"Greek","gn":"Guarani","gu":"Gujarati","ht":"Haitian Creole","ha":"Hausa","haw":"Hawaiian","iw":"Hebrew","hi":"Hindi","hmn":"Hmong","hu":"Hungarian","is":"Icelandic","ig":"Igbo","id":"Indonesian","ga":"Irish","it":"Italian","ja":"Japanese","jv":"Javanese","kn":"Kannada","kk":"Kazakh","km":"Khmer","rw":"Kinyarwanda","ko":"Korean","kri":"Krio","ku":"Kurdish","ky":"Kyrgyz","lo":"Lao","la":"Latin","lv":"Latvian","ln":"Lingala","lt":"Lithuanian","lb":"Luxembourgish","mk":"Macedonian","mg":"Malagasy","ms":"Malay","ml":"Malayalam","mt":"Maltese","mi":"Māori","mr":"Marathi","mn":"Mongolian","ne":"Nepali","nso":"Northern Sotho","no":"Norwegian","ny":"Nyanja","or":"Odia","om":"Oromo","ps":"Pashto","fa":"Persian","pl":"Polish","pt":"Portuguese","pa":"Punjabi","qu":"Quechua","ro":"Romanian","ru":"Russian","sm":"Samoan","sa":"Sanskrit","gd":"Scottish Gaelic","sr":"Serbian","sn":"Shona","sd":"Sindhi","si":"Sinhala","sk":"Slovak","sl":"Slovenian","so":"Somali","st":"Southern Sotho","es":"Spanish","su":"Sundanese","sw":"Swahili","sv":"Swedish","tg":"Tajik","ta":"Tamil","tt":"Tatar","te":"Telugu","th":"Thai","ti":"Tigrinya","ts":"Tsonga","tr":"Turkish","tk":"Turkmen","uk":"Ukrainian","ur":"Urdu","ug":"Uyghur","uz":"Uzbek","vi":"Vietnamese","cy":"Welsh","fy":"Western Frisian","xh":"Xhosa","yi":"Yiddish","yo":"Yoruba","zu":"Zulu"},"udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","streamNoConnectionToServer":"There is no connection to the server","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings","translationTakeApproximatelyMinute2":"The translation will take approximately {0} minutes","VOTAudioBooster":"Extended translation volume increase","VOTMediaCSPError":"Failed to load audio (media csp error)","VOTSubtitlesDesign":"Subtitles design","VOTSubtitlesFontSize":"Font size of subtitles","VOTSubtitlesOpacity":"Transparency of the subtitle background","VOTPressNewHotkey":"Press the new hotkey...","VOTCreateTranslationHotkey":"Create Hotkey for Translation","VOTChangeHotkeyWithCurrent":"Change Hotkey (Current: {0})"}'),E={log:(...t)=>{}},I=E,_=new class{constructor(){this.gmSupport="function"==typeof GM_getValue,I.log(`GM Storage Status: ${this.gmSupport}`)}syncGet(t,e=void 0,o=!1){if(this.gmSupport)return GM_getValue(t,e);const n=window.localStorage.getItem(t)??e;return o?Number(n):n}async get(t,e=void 0,o=!1){return this.gmSupport?await GM_getValue(t,e):Promise.resolve(this.syncGet(t,e,o))}syncSet(t,e){return this.gmSupport?GM_setValue(t,e):window.localStorage.setItem(t,e)}async set(t,e){return this.gmSupport?await GM_setValue(t,e):Promise.resolve(this.syncSet(t,e))}syncDelete(t){return this.gmSupport?GM_deleteValue(t):window.localStorage.removeItem(t)}async delete(t){return this.gmSupport?await GM_deleteValue(t):Promise.resolve(this.syncDelete(t))}syncList(){return this.gmSupport?GM_listValues():["autoTranslate","dontTranslateLanguage","dontTranslateYourLang","autoSetVolumeYandexStyle","autoVolume","buttonPos","showVideoSlider","syncVolume","subtitlesMaxLength","highlightWords","responseLanguage","defaultVolume","audioProxy","showPiPButton","translateAPIErrors","translationService","detectService","m3u8ProxyHost","translateProxyEnabled","hotkeyButton","proxyWorkerHost","audioBooster","locale-version","locale-lang","locale-phrases"]}async list(){return this.gmSupport?await GM_listValues():Promise.resolve(this.syncList())}},N=navigator.language||navigator.userLanguage,R=N?.substr(0,2)?.toLowerCase()??"en";function $(t){return t.toLowerCase().split(/[_;-]/)[0].trim()}function B(){return"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled}function D(){return"undefined"!=typeof Hls&&Hls?.isSupported()?new Hls({debug:!1,lowLatencyMode:!0,backBufferLength:90}):void 0}const F=new RegExp([/(?:https?|ftp):\/\/\S+/g,/https?:\/\/\S+|www\.\S+/gm,/\b\S+\.\S+/gm,/#[^\s#]+/g,/Auto-generated by YouTube/g,/Provided to YouTube by/g,/Released on/g,/0x[a-fA-F0-9]{40}/g,/[13][a-km-zA-HJ-NP-Z1-9]{25,34}/g,/4[0-9AB][1-9A-HJ-NP-Za-km-z]{93}/g,/Paypal/g].map((t=>t.source)).join("|"));async function q(t,e={}){const{timeout:o=15e3,...n}=e,i=new AbortController,a=setTimeout((()=>i.abort()),o);try{if(t.includes("api.browser.yandex.ru"))throw new Error("Preventing yandex cors");const e=await fetch(t,{signal:i.signal,...n});return clearTimeout(a),e}catch(e){return I.log("GM_fetch preventing cors by GM_xmlhttpRequest",e.message),new Promise(((e,i)=>{clearTimeout(a),GM_xmlhttpRequest({method:n.method||"GET",url:t,responseType:"blob",...n,data:n.body,timeout:o,onload:t=>{const o=Object.fromEntries(t.responseHeaders.trim().split(/\r?\n/).map((t=>t.split(/: (.+)/))).filter((([t])=>t&&/^[\w-]+$/.test(t))));e(new Response(t.response,{status:t.status,headers:o}))},ontimeout:()=>i(new Error("Timeout")),onerror:t=>i(t),onabort:()=>i(new Error("AbortError"))})}))}}const H=["auto","en","ru","af","am","ar","az","bg","bn","bs","ca","cs","cy","da","de","el","es","et","eu","fa","fi","fr","gl","hi","hr","hu","hy","id","it","ja","jv","kk","km","kn","ko","lo","mk","ml","mn","ms","mt","my","ne","nl","pa","pl","pt","ro","si","sk","sl","sq","sr","su","sv","sw","tr","uk","ur","uz","vi","zh","zu"],z=new class{lang="en";locale={};gmValues=["locale-phrases","locale-lang","locale-version","locale-lang-override"];constructor(){const t=_.syncGet("locale-lang-override","auto");this.lang=t&&"auto"!==t?t:(navigator.language||navigator.userLanguage)?.substr(0,2)?.toLowerCase()??"en",this.setLocaleFromJsonString(_.syncGet("locale-phrases",""))}reset(){for(let t=0;t{if("object"==typeof t&&t)return t[e]}),t);return void 0===o&&console.warn("[VOT] [localizationProvider] locale",t,"doesn't contain key",e),o}getDefault(t){return this.getFromLocale(P,t)??t}get(t){return this.getFromLocale(this.locale,t)??this.getFromLocale(P,t)??t}};class U extends Error{constructor(t){super(t),this.name="VideoHelper",this.message=t}}class W{API_ORIGIN="https://my.mail.ru/";async getExtraVideoId(t){try{const t=document.querySelector(".sp-video__page-config")?.innerText;return/"itemId":\s?"([^"]+)"/.exec(t)?.[1]}catch(t){return void console.error("Failed to get mail.ru extra video id",t.message)}}async getVideoData(t){try{const e=await L(`${this.API_ORIGIN}+/video/meta/${t}?xemail=&ajax_call=1&func_name=&mna=&mnb=&ext=1&_=${(new Date).getTime()}`);return await e.json()}catch(t){return void console.error("Failed to get mail.ru video info",t.message)}}}class G{API_ORIGIN="https://global.apis.naver.com/weverse/wevweb";API_APP_ID="be4d79eb8fc7bd008ee82c8ec4ff6fd4";API_HMAC_KEY="1b9cb6378d959b45714bec49971ade22e6e24e42";HEADERS={Accept:"application/json, text/plain, */*",Origin:"https://weverse.io",Referer:"https://weverse.io/"};getURLData(){return{appId:this.API_APP_ID,language:"en",os:"WEB",platform:"WEB",wpf:"pc"}}async createHash(t){const e=Date.now(),o=t.substring(0,Math.min(255,t.length))+e,n=await async function(t,e){try{const o=w.encode(e),n=await x("SHA-1",t,o);return btoa(String.fromCharCode(...new Uint8Array(n)))}catch(t){return console.error(t),!1}}(this.API_HMAC_KEY,o);if(!n)throw new U("Failed to get weverse HMAC signature");return{wmsgpad:e.toString(),wmd:n}}async getHashURLParams(t){const e=await this.createHash(t);return new URLSearchParams(e).toString()}async getPostPreview(t){const e=`/post/v1.0/post-${t}/preview?`+new URLSearchParams({fieldSet:"postForPreview",...this.getURLData()}).toString();try{const t=await this.getHashURLParams(e),o=await L(this.API_ORIGIN+e+"&"+t,{headers:this.HEADERS});return await o.json()}catch(e){return console.error(`Failed to get weverse post preview by postId: ${t}`,e.message),!1}}async getVideoInKey(t){const e=`/video/v1.1/vod/${t}/inKey?`+new URLSearchParams({gcc:"RU",...this.getURLData()}).toString();try{const t=await this.getHashURLParams(e),o=await L(this.API_ORIGIN+e+"&"+t,{method:"POST",headers:this.HEADERS});return await o.json()}catch(e){return console.error(`Failed to get weverse InKey by videoId: ${t}`,e.message),!1}}async getVideoInfo(t,e,o){const n=Date.now();try{const i=new URLSearchParams({key:e,sid:o,nonce:n.toString(),devt:"html5_pc",prv:"N",aup:"N",stpb:"N",cpl:"en",env:"prod",lc:"en",adi:JSON.stringify([{adSystem:null}]),adu:"/"}).toString(),a=await L(`https://global.apis.naver.com/rmcnmv/rmcnmv/vod/play/v2.0/${t}?`+i,{headers:this.HEADERS});return await a.json()}catch(n){return console.error(`Failed to get weverse video info (infraVideoId: ${t}, inkey: ${e}, serviceId: ${o}`,n.message),!1}}extractVideoInfo(t){return t.find((t=>!1===t.useP2P&&t.source.includes(".mp4")))}async getVideoData(t){const e=await this.getPostPreview(t);if(!e)return;const{videoId:o,serviceId:n,infraVideoId:i}=e.extension.video;if(!(o&&n&&i))return;const a=await this.getVideoInKey(o);if(!a)return;const r=await this.getVideoInfo(i,a.inKey,n);if(!r)return;const s=this.extractVideoInfo(r.videos.list);return s?{url:s.source,duration:s.duration}:void 0}}class j{API_ORIGIN=window.location.origin;async getSecureData(t){try{const e=this.API_ORIGIN+t,o=await L(e,{headers:{"User-Agent":y.userAgent,Origin:this.API_ORIGIN,Referer:this.API_ORIGIN}}),n=await o.text(),[i,a,r]=t.split("/").filter((t=>t)),s=(new DOMParser).parseFromString(n,"text/html"),l=Array.from(s.getElementsByTagName("script")).filter((t=>t.innerHTML.includes(`videoId = "${a}"`)));if(!l.length)throw new U("Failed to find secure script");const d=/'{[^']+}'/.exec(l[0].textContent.trim())?.[0];if(!d)throw new U("Secure json wasn't found in secure script");const u=JSON.parse(d.replaceAll("'",""));return{videoType:i,videoId:a,hash:r,...u}}catch(e){return console.error(`Failed to get kodik secure data by videoPath: ${t}.`,e.message),!1}}async getFtor(t){const{videoType:e,videoId:o,hash:n,d:i,d_sign:a,pd:r,pd_sign:s,ref:l,ref_sign:d}=t;try{const t=await L(this.API_ORIGIN+"/ftor",{method:"POST",headers:{"User-Agent":y.userAgent,Origin:this.API_ORIGIN,Referer:`${this.API_ORIGIN}/${e}/${o}/${n}/360p`},body:new URLSearchParams({d:i,d_sign:a,pd:r,pd_sign:s,ref:decodeURIComponent(l),ref_sign:d,bad_user:"false",cdn_is_working:"true",info:"{}",type:e,hash:n,id:o})});return await t.json()}catch(t){return console.error(`Failed to get kodik video data (type: ${e}, id: ${o}, hash: ${n})`,t.message),!1}}decryptUrl(t){return"https:"+atob(t.replace(/[a-zA-Z]/g,(function(t){const e=t.charCodeAt(0)+13;return String.fromCharCode((t<="Z"?90:122)>=e?e:e-26)})))}async getVideoData(t){const e=await this.getSecureData(t);if(!e)return;const o=await this.getFtor(e);if(!o)return;const n=Object.entries(o.links[o.default.toString()]),i=n.find((([t,e])=>"application/x-mpegURL"===e.type))?.[1];return i?{url:this.decryptUrl(i.src)}:void 0}}class Y{async getPosts(t){try{const e=await L(`https://www.patreon.com/api/posts/${t}?json-api-use-default-includes=false`);return await e.json()}catch(e){return console.error(`Failed to get patreon posts by postId: ${t}.`,e.message),!1}}async getVideoData(t){const e=await this.getPosts(t);if(!e)return;const o=e.data.attributes.post_file.url;return o?{url:o}:void 0}}class J{async getVideoData(){const t=document.querySelector("[data-hls-url]")?.dataset.hlsUrl.replaceAll("&","&");if(t)return{url:decodeURIComponent(t)}}}class K{async getVideoInfo(t){try{const e=await L("https://api.banned.video/graphql",{method:"POST",body:JSON.stringify({operationName:"GetVideo",query:"query GetVideo($id: String!) {\n getVideo(id: $id) {\n title\n description: summary\n duration: videoDuration\n videoUrl: directUrl\n isStream: live\n }\n }",variables:{id:t}}),headers:{"User-Agent":"bannedVideoFrontEnd","apollographql-client-name":"banned-web","apollographql-client-version":"1.3","content-type":"application/json"}});return await e.json()}catch(e){return console.error(`Failed to get bannedvideo video info by videoId: ${t}.`,e.message),!1}}async getVideoData(t){const e=await this.getVideoInfo(t);if(!e)return!1;const{videoUrl:o,duration:n,isStream:i,description:a,title:r}=e.data.getVideo;return{url:o,duration:n,isStream:i,title:r,description:a}}}class Z{async getClipInfo(t){try{const e=await L(`https://kick.com/api/v2/clips/${t}`);return await e.json()}catch(e){return console.error(`Failed to get kick clip info by clipId: ${t}.`,e.message),!1}}async getVideoData(t){if(!t.startsWith("clip_"))return{url:A.find((t=>t.host===k.kick)).url+t};const e=await this.getClipInfo(t);if(!e)return!1;const{clip_url:o,duration:n,title:i}=e.clip;return{url:o,duration:n,title:i}}}class Q{API_ORIGIN="https://www.udemy.com/api-2.0";getModuleData(){const t=document.querySelector(".ud-app-loader[data-module-id='course-taking']")?.dataset?.moduleArgs;return t?JSON.parse(t):(console.error(z.get("udemyModuleArgsNotFound")),{})}getLectureId(){return/learn\/lecture\/([^/]+)/.exec(window.location.pathname)?.[1]}async getLectureData(t,e){const o=await q(`${this.API_ORIGIN}/users/me/subscribed-courses/${t}/lectures/${e}/?`+new URLSearchParams({"fields[lecture]":"title,description,asset","fields[asset]":"length,media_sources,captions"}));return await o.json()}async getCourseLang(t){const e=await q(`${this.API_ORIGIN}/users/me/subscribed-courses/${t}?`+new URLSearchParams({"fields[course]":"locale"}));return await e.json()}findVideoUrl(t){return t?.find((t=>"video/mp4"===t.type))?.src}findSubtitleUrl(t,e){let o=t?.find((t=>$(t.locale_id)===e));return o||(o=t?.find((t=>"en"===$(t.locale_id)))??t?.[0]),o?.url}async getVideoData(t){const{courseId:e}=this.getModuleData();if(!e)return!1;const o=this.getLectureId();if(I.log(`[Udemy] courseId: ${e}, lectureId: ${o}`),!o)return!1;const{title:n,description:i,asset:a}=await this.getLectureData(e,o),{length:r,media_sources:s,captions:l}=a,d=this.findVideoUrl(s);if(!d)return console.log("Failed to find .mp4 video file in media_sources",s),!1;const u=await this.getCourseLang(e);let{locale:{locale:c}}=u;c=c?$(c):"en",O.includes(c)||(c="en");const h=this.findSubtitleUrl(l,c);return h||console.log("Failed to find subtitle file in captions",l),{...h?{url:A.find((t=>t.host===k.udemy)).url+t,translationHelp:[{target:"subtitles_file_url",targetUrl:h},{target:"video_file_url",targetUrl:d}],detectedLanguage:c}:{url:d,translationHelp:null},duration:r,title:n,description:i}}}class X{API_ORIGIN="https://coursehunter.net/api/v1";async getLessonsData(t){const e=await q(`${this.API_ORIGIN}/course/${t}/lessons`);return await e.json()}async getVideoData(){const t=window.course_id??+document.querySelector('input[name="course_id"]')?.value,e=window.lessons??await this.getLessonsData(t),o=+document.querySelector(".lessons-item_active")?.dataset?.index||1,n=e?.[o-1],{file:i,duration:a,title:r}=n;return!!i&&{url:i,duration:a,title:r}}}class tt{async getVideoData(t){const e=document.querySelector("meta[property='og:video']")?.content;if(e)return{url:e}}}class et{API_ORIGIN="https://www.coursera.org/api";async getCourseData(t){const e=await q(`${this.API_ORIGIN}/onDemandCourses.v1/${t}`),o=await e.json();return o?.elements?.[0]}getPlayer(){return document.querySelector(".vjs-v6")}getPlayerData(){return this.getPlayer()?.player}findVideoUrl(t){return t?.find((t=>"video/mp4"===t.type))?.src}findSubtitleUrl(t,e){let o=t?.find((t=>$(t.srclang)===e));return o||(o=t?.find((t=>"en"===$(t.srclang)))||t?.[0]),o?.src}async getVideoData(t){const e=this.getPlayerData(),{duration:o}=e?.cache_||{},{courseId:n,tracks:i,sources:a}=e?.options_||{},r=this.findVideoUrl(a);if(!r)return console.log("Failed to find .mp4 video file in sources",a),!1;const{primaryLanguageCodes:s}=await this.getCourseData(n);let l=s?.[0];l=l?$(l):"en",O.includes(l)||(l="en");const d=this.findSubtitleUrl(i,l);return d||console.log("Failed to find subtitle file in tracks",i),{...d?{url:A.find((t=>t.host===k.coursera)).url+t,translationHelp:[{target:"subtitles_file_url",targetUrl:d},{target:"video_file_url",targetUrl:r}],detectedLanguage:l}:{url:r,translationHelp:null},duration:o}}}class ot{static[k.mailru]=new W;static[k.weverse]=new G;static[k.kodik]=new j;static[k.patreon]=new Y;static[k.reddit]=new J;static[k.bannedvideo]=new K;static[k.kick]=new Z;static[k.udemy]=new Q;static[k.coursehunter]=new X;static[k.coursera]=new et;static[k.appledeveloper]=new tt}class nt extends Error{constructor(t){super(t),this.name="VideoDataError",this.message=t}}async function it(t,e){const o=new URL(window.location.href);switch(t.host){case k.custom:return o.href;case k.piped:case k.poketube:case k.invidious:case k.youtube:return"youtu.be"===o.hostname&&(o.search=`?v=${o.pathname.replace("/","")}`,o.pathname="/watch"),/(?:watch|embed|shorts|live)\/([^/]+)/.exec(o.pathname)?.[1]??o.searchParams.get("v");case k.vk:{const t=/^\/(video|clip)-?\d{8,9}_\d{9}$/.exec(o.pathname),n=o.searchParams.get("z"),i=o.searchParams.get("oid"),a=o.searchParams.get("id");if(t)return t[0].slice(1);if(n)return n.split("/")[0];if(i&&a)return`video-${Math.abs(parseInt(i))}_${a}`;const r=e.parentElement?.closest(".video_box_wrap");return r?r.id.replace("video_box_wrap","video"):null}case k.nine_gag:case k.gag:return/gag\/([^/]+)/.exec(o.pathname)?.[1];case k.twitch:{const t=/([^/]+)\/(?:clip)\/([^/]+)/.exec(o.pathname),e=/^clips\.twitch\.tv$/.test(o.hostname);if(/^m\.twitch\.tv$/.test(o.hostname))return/videos\/([^/]+)/.exec(o.href)?.[0]??o.pathname.slice(1);if(/^player\.twitch\.tv$/.test(o.hostname))return`videos/${o.searchParams.get("video")}`;if(e){const t=document.querySelector("script[type='application/ld+json']"),e=o.pathname.slice(1);if(t){const o=JSON.parse(t.innerText),n=o["@graph"].find((t=>"VideoObject"===t["@type"]))?.creator.url;return`${n.replace("https://www.twitch.tv/","")}/clip/${e}`}const n="embed"===e,i=document.querySelector(n?".tw-link[data-test-selector='stream-info-card-component__stream-avatar-link']":".clips-player a:not([class])");if(!i)return;return`${i.href.replace("https://www.twitch.tv/","")}/clip/${n?o.searchParams.get("clip"):e}`}return t?t[0]:/(?:videos)\/([^/]+)/.exec(o.pathname)?.[0]}case k.proxitok:case k.tiktok:return/([^/]+)\/video\/([^/]+)/.exec(o.pathname)?.[0];case k.vimeo:{const t=o.searchParams.get("app_id"),e=/[^/]+\/[^/]+$/.exec(o.pathname)?.[0]??/[^/]+$/.exec(o.pathname)?.[0];return t?`${e}?app_id=${t}`:e}case k.xvideos:return/[^/]+\/[^/]+$/.exec(o.pathname)?.[0];case k.pornhub:return o.searchParams.get("viewkey")??/embed\/([^/]+)/.exec(o.pathname)?.[1];case k.twitter:return/status\/([^/]+)/.exec(o.pathname)?.[1];case k.rumble:case k.facebook:return o.pathname.slice(1);case k.rutube:return/(?:video|embed)\/([^/]+)/.exec(o.pathname)?.[1];case k.bilibili:{const t=o.searchParams.get("bvid");if(t)return t;let e=/video\/([^/]+)/.exec(o.pathname)?.[1];return e&&null!==o.searchParams.get("p")&&(e+=`/?p=${o.searchParams.get("p")}`),e}case k.mailru:{const t=o.pathname;if(/\/(v|mail)\//.exec(t))return t.slice(1);const e=/video\/embed\/([^/]+)/.exec(t)?.[1]??/\/(bk|inbox)\/([^/]+)\/video\//.exec(t)?await ot.mailru.getExtraVideoId(t):void 0;if(!e)return null;const n=await ot.mailru.getVideoData(e);return n?n.meta.url.replace("//my.mail.ru/",""):null}case k.bitchute:return/(video|embed)\/([^/]+)/.exec(o.pathname)?.[2];case k.coursera:return/learn\/([^/]+)\/lecture\/([^/]+)/.exec(o.pathname)?.[0];case k.udemy:return o.pathname.slice(1);case k.eporner:return/video-([^/]+)\/([^/]+)/.exec(o.pathname)?.[0];case k.peertube:return/\/w\/([^/]+)/.exec(o.pathname)?.[0];case k.dailymotion:{const t=Array.from(document.querySelectorAll("*")).filter((t=>t.innerHTML.trim().includes(".m3u8")));try{let e=t[1].lastChild.src;return/\/video\/(\w+)\.m3u8/.exec(e)?.[1]}catch(t){return console.error("[VOT]",t),!1}}case k.trovo:{const t=o.searchParams.get("vid");if(!t)return null;const e=/([^/]+)\/([\d]+)/.exec(o.pathname)?.[0];return e?`${e}?vid=${t}`:null}case k.yandexdisk:return/\/i\/([^/]+)/.exec(o.pathname)?.[1];case k.coursehunter:{const t=/\/course\/([^/]+)/.exec(o.pathname)?.[1];return!!t&&t+o.search}case k.okru:return/\/video\/(\d+)/.exec(o.pathname)?.[1];case k.googledrive:return o.searchParams.get("docid");case k.bannedvideo:return o.searchParams.get("id");case k.weverse:return/([^/]+)\/(live|media)\/([^/]+)/.exec(o.pathname)?.[3];case k.newgrounds:return/([^/]+)\/(view)\/([^/]+)/.exec(o.pathname)?.[0];case k.egghead:return o.pathname.slice(1);case k.youku:return/v_show\/id_[\w=]+/.exec(o.pathname)?.[0];case k.archive:return/(details|embed)\/([^/]+)/.exec(o.pathname)?.[2];case k.kodik:return/\/(seria|video)\/([^/]+)\/([^/]+)\/([\d]+)p/.exec(o.pathname)?.[0];case k.patreon:{const t=/posts\/([^/]+)/.exec(o.pathname)?.[1];if(!t)return;return t.replace(/[^\d.]/g,"")}case k.reddit:return/\/r\/(([^/]+)\/([^/]+)\/([^/]+)\/([^/]+))/.exec(o.pathname)?.[1];case k.kick:{const t=/video\/([^/]+)/.exec(o.pathname)?.[0];if(t)return t;const e=o.searchParams.get("clip");if(e)return e;const n=document.getElementById("clip-video-player");return/clip_([^/]+)/.exec(n?.getAttribute("poster"))?.[0]}case k.appledeveloper:return/videos\/play\/([^/]+)\/([\d]+)/.exec(o.pathname)?.[0];default:return}}async function at(t,e){const o=await it(t,e);if(!o)throw new nt(`Entered unsupported link: "${t.host}"`);if(t.host===k.peertube&&(t.url=window.location.origin),t.rawResult)return{url:o,videoId:o,host:t.host,duration:void 0};if(!t.needExtraData)return{url:t.url+o,videoId:o,host:t.host,duration:void 0};const n=await ot[t.host].getVideoData(o);if(!n)throw new nt(`Failed to get video raw url for ${t.host}`);return{...n,videoId:o,host:t.host}}class rt extends Error{constructor(t){super(z.getDefault(t)),this.name="VOTLocalizedError",this.unlocalizedMessage=t,this.localizedMessage=z.get(t)}}const{rE:st}={rE:"1.0.4"};class lt extends Error{data;constructor(t,e=void 0){super(t),this.data=e,this.name="VOTJSError",this.message=t}}class dt{host;hostVOT;schema;schemaVOT;fetch;fetchOpts;getVideoDataFn;sessions={};requestLang;responseLang;userAgent=y.userAgent;componentVersion=y.componentVersion;paths={videoTranslation:"/video-translation/translate",videoSubtitles:"/video-subtitles/get-subtitles",streamPing:"/stream-translation/ping-stream",streamTranslation:"/stream-translation/translate-stream",createSession:"/session/create"};isCustomFormat(t){return/\.(m3u8|m4(a|v)|mpd)/.exec(t)}headers={"User-Agent":this.userAgent,Accept:"application/x-protobuf","Accept-Language":"en","Content-Type":"application/x-protobuf",Pragma:"no-cache","Cache-Control":"no-cache","Sec-Fetch-Mode":"no-cors"};headersVOT={"User-Agent":`vot.js/${st}`,"Content-Type":"application/json",Pragma:"no-cache","Cache-Control":"no-cache"};constructor({host:t=y.host,hostVOT:e=y.hostVOT,fetchFn:o=L,fetchOpts:n={},getVideoDataFn:i=at,requestLang:a="en",responseLang:r="ru",headers:s={}}={}){const l=/(http(s)?):\/\//,d=l.exec(t)?.[1];this.host=d?t.replace(`${d}://`,""):t,this.schema=d??"https";const u=l.exec(e)?.[1];this.hostVOT=u?e.replace(`${u}://`,""):e,this.schemaVOT=u??"https",this.fetch=o,this.fetchOpts=n,this.getVideoDataFn=i,this.requestLang=a,this.responseLang=r,this.headers={...this.headers,...s}}getOpts(t,e={}){return{method:"POST",headers:{...this.headers,...e},body:t,...this.fetchOpts}}async request(t,e,o={}){const n=this.getOpts(new Blob([e]),o);try{const e=await this.fetch(`${this.schema}://${this.host}${t}`,n),o=await e.arrayBuffer();return{success:200===e.status,data:o}}catch(t){return{success:!1,data:t?.message}}}async requestVOT(t,e,o={}){const n=this.getOpts(JSON.stringify(e),{...this.headersVOT,...o});try{const e=await this.fetch(`${this.schemaVOT}://${this.hostVOT}${t}`,n),o=await e.json();return{success:200===e.status,data:o}}catch(t){return{success:!1,data:t?.message}}}async getSession(t){const e=Math.floor(Date.now()/1e3),o=this.sessions[t];if(o&&o.timestamp+o.expires>e)return o;const{secretKey:n,expires:i,uuid:a}=await this.createSession(t);return this.sessions[t]={secretKey:n,expires:i,timestamp:e,uuid:a},this.sessions[t]}async translateVideoYAImpl({videoData:t,requestLang:e=this.requestLang,responseLang:o=this.responseLang,translationHelp:n=null,headers:i={}}){const{url:a,duration:r=y.defaultDuration}=t,{secretKey:s,uuid:l}=await this.getSession("video-translation"),d=f.encodeTranslationRequest(a,r,e,o,n),u=await S(d),c=await this.request(this.paths.videoTranslation,d,{"Vtrans-Signature":u,"Sec-Vtrans-Sk":s,"Sec-Vtrans-Token":`${u}:${l}:${this.paths.videoTranslation}:${this.componentVersion}`,...i});if(!c.success)throw new rt("requestTranslationFailed");const h=f.decodeTranslationResponse(c.data);switch(h.status){case T.FAILED:throw h?.message?new lt("Yandex couldn't translate video",h):new rt("requestTranslationFailed");case T.FINISHED:case T.PART_CONTENT:if(!h.url)throw new rt("audioNotReceived");return{translated:!0,url:h.url,remainingTime:h.remainingTime??-1};case T.WAITING:return{translated:!1,remainingTime:h.remainingTime};case T.LONG_WAITING:case T.LONG_WAITING_2:return{translated:!1,remainingTime:h.remainingTime??-1};default:throw console.error("[vot.js] Unknown response",h),new lt("Unknown response from Yandex",h)}}async translateVideoVOTImpl({url:t,videoId:e,service:o,requestLang:n=this.requestLang,responseLang:i=this.responseLang,headers:a={}}){const r=function(t,e,o){return t===k.patreon?{service:"mux",videoId:new URL(o).pathname.slice(1)}:{service:t,videoId:e}}(o,e,t),s=await this.requestVOT(this.paths.videoTranslation,{provider:"yandex",service:r.service,videoId:r.videoId,fromLang:n,toLang:i,rawVideo:t},a);if(!s.success)throw new rt("requestTranslationFailed",s);const l=s.data;switch(I.log("requestTranslation",l),l.status){case"failed":throw new lt("Yandex couldn't translate video",l);case"success":if(!l.translatedUrl)throw new rt("audioNotReceived");return{translated:!0,url:l.translatedUrl,remainingTime:-1};case"waiting":return{translated:!1,remainingTime:l.remainingTime,message:l.message}}}async translateVideo({videoData:t,requestLang:e=this.requestLang,responseLang:o=this.responseLang,translationHelp:n=null,headers:i={}}){const{url:a,videoId:r,host:s}=t;return this.isCustomFormat(a)?await this.translateVideoVOTImpl({url:a,videoId:r,service:s,requestLang:e,responseLang:o,headers:i}):await this.translateVideoYAImpl({videoData:t,requestLang:e,responseLang:o,translationHelp:n,headers:i})}async getSubtitles({videoData:t,requestLang:e=this.requestLang,headers:o={}}){const{url:n}=t;if(this.isCustomFormat(n))throw new rt("Unsupported video URL for getting subtitles");const{secretKey:i,uuid:a}=await this.getSession("video-translation"),r=f.encodeSubtitlesRequest(n,e),s=await S(r),l=await this.request(this.paths.videoSubtitles,r,{"Vsubs-Signature":await S(r),"Sec-Vsubs-Sk":i,"Sec-Vsubs-Token":`${s}:${a}:${this.paths.videoSubtitles}:${this.componentVersion}`,...o});if(!l.success)throw new lt("Failed to request video subtitles",l);return f.decodeSubtitlesResponse(l.data)}async pingStream({pingId:t,headers:e={}}){const{secretKey:o,uuid:n}=await this.getSession("video-translation"),i=f.encodeStreamPingRequest(t),a=await S(i),r=await this.request(this.paths.streamPing,i,{"Vtrans-Signature":await S(i),"Sec-Vtrans-Sk":o,"Sec-Vtrans-Token":`${a}:${n}:${this.paths.streamPing}:${this.componentVersion}`,...e});if(!r.success)throw new lt("Failed to request stream ping",r);return!0}async translateStream({videoData:t,requestLang:e=this.requestLang,responseLang:o=this.responseLang,headers:i={}}){const{url:a}=t;if(this.isCustomFormat(a))throw new rt("Unsupported video URL for getting stream translation");const{secretKey:r,uuid:s}=await this.getSession("video-translation"),l=f.encodeStreamRequest(a,e,o),d=await S(l),u=await this.request(this.paths.streamTranslation,l,{"Vtrans-Signature":await S(l),"Sec-Vtrans-Sk":r,"Sec-Vtrans-Token":`${d}:${s}:${this.paths.streamTranslation}:${this.componentVersion}`,...i});if(!u.success)throw new lt("Failed to request stream translation",u);const c=f.decodeStreamResponse(u.data),h=c.interval;switch(h){case n.NO_CONNECTION:case n.TRANSLATING:return{translated:!1,interval:h,message:h===n.NO_CONNECTION?"streamNoConnectionToServer":"translationTakeFewMinutes"};case n.STREAMING:return{translated:!0,interval:h,pingId:c.pingId,result:c.translatedInfo};default:throw console.error("[vot.js] Unknown response",c),new lt("Unknown response from Yandex",c)}}async createSession(t){const e=function(){let t="";for(let e=0;e<32;e++)t+="0123456789ABCDEF"[Math.floor(16*Math.random())];return t}(),o=f.encodeYandexSessionRequest(e,t),n=await this.request(this.paths.createSession,o,{"Vtrans-Signature":await S(o)});if(!n.success)throw new lt("Failed to request create session",n);return{...f.decodeYandexSessionResponse(n.data),uuid:e}}}class ut extends dt{async request(t,e,o={}){const n=this.getOpts(JSON.stringify({headers:{...this.headers,...o},body:Array.from(e)}),{"Content-Type":"application/json"});try{const e=await this.fetch(`${this.schema}://${this.host}${t}`,n),o=await e.arrayBuffer();return{success:200===e.status,data:o}}catch(t){return{success:!1,data:t?.message}}}}function ct(t){const e=Math.floor(t/3600),o=Math.floor(t%3600/60),n=Math.floor(t%60),i=Math.floor(t%1*1e3);return`${e.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")},${i.toString().padStart(3,"0")}`}const ht=globalThis,pt=ht.trustedTypes,gt=pt?pt.createPolicy("lit-html",{createHTML:t=>t}):void 0,vt="$lit$",mt=`lit$${Math.random().toFixed(9).slice(2)}$`,bt="?"+mt,ft=`<${bt}>`,yt=document,wt=()=>yt.createComment(""),xt=t=>null===t||"object"!=typeof t&&"function"!=typeof t,St=Array.isArray,kt=t=>St(t)||"function"==typeof t?.[Symbol.iterator],Tt="[ \t\n\f\r]",Lt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Vt=/-->/g,Mt=/>/g,At=RegExp(`>|${Tt}(?:([^\\s"'>=/]+)(${Tt}*=${Tt}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),Ot=/'/g,Ct=/"/g,Pt=/^(?:script|style|textarea|title)$/i,Et=t=>(e,...o)=>({_$litType$:t,strings:e,values:o}),It=Et(1),_t=Et(2),Nt=(Et(3),Symbol.for("lit-noChange")),Rt=Symbol.for("lit-nothing"),$t=new WeakMap,Bt=yt.createTreeWalker(yt,129);function Dt(t,e){if(!St(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==gt?gt.createHTML(e):e}const Ft=(t,e)=>{const o=t.length-1,n=[];let i,a=2===e?"":3===e?"":"",r=Lt;for(let e=0;e"===l[0]?(r=i??Lt,d=-1):void 0===l[1]?d=-2:(d=r.lastIndex-l[2].length,s=l[1],r=void 0===l[3]?At:'"'===l[3]?Ct:Ot):r===Ct||r===Ot?r=At:r===Vt||r===Mt?r=Lt:(r=At,i=void 0);const c=r===At&&t[e+1].startsWith("/>")?" ":"";a+=r===Lt?o+ft:d>=0?(n.push(s),o.slice(0,d)+vt+o.slice(d)+mt+c):o+mt+(-2===d?e:c)}return[Dt(t,a+(t[o]||"")+(2===e?"":3===e?"":"")),n]};class qt{constructor({strings:t,_$litType$:e},o){let n;this.parts=[];let i=0,a=0;const r=t.length-1,s=this.parts,[l,d]=Ft(t,e);if(this.el=qt.createElement(l,o),Bt.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(n=Bt.nextNode())&&s.length0){n.textContent=pt?pt.emptyScript:"";for(let o=0;o2||""!==o[0]||""!==o[1]?(this._$AH=Array(o.length-1).fill(new String),this.strings=o):this._$AH=Rt}_$AI(t,e=this,o,n){const i=this.strings;let a=!1;if(void 0===i)t=Ht(this,t,e,0),a=!xt(t)||t!==this._$AH&&t!==Nt,a&&(this._$AH=t);else{const n=t;let r,s;for(t=i[0],r=0;r{const n=o?.renderBefore??e;let i=n._$litPart$;if(void 0===i){const t=o?.renderBefore??null;n._$litPart$=i=new Ut(e.insertBefore(wt(),t),t,void 0,o??{})}return i._$AI(t),i},Qt="m3u8-proxy.toil.cc",Xt="vot-worker.toil.cc",te="https://vot-api.toil.cc/v1",ee=.15,oe="yandex",ne="yandex",ie={yandex:"https://translate.toil.cc/detect",rustServer:"https://rust-server-531j.onrender.com/detect"},ae={yandex:"https://translate.toil.cc/translate",deepl:"https://translate-deepl.toil.cc/translate"};o("./src/styles/main.scss");const re="#UNDEFINED",se=_t`{var t={"./src/styles/main.scss":()=>{GM_addStyle('.vot-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));--vot-helper-ontheme:var(--vot-ontheme-rgb,var(--vot-onprimary-rgb,255,255,255));box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-ontheme));background-color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;border:none;border-radius:4px;outline:none;min-width:64px;height:36px;padding:0 16px;font-size:14px;font-weight:500;line-height:36px;transition:box-shadow .2s;display:inline-block;position:relative;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.vot-button[hidden]{display:none!important}.vot-button::-moz-focus-inner{border:none}.vot-button:before,.vot-button:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-button:before{background-color:rgb(var(--vot-helper-ontheme));transition:opacity .2s}.vot-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-button:hover{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.vot-button:hover:before{opacity:.08}.vot-button:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.vot-button:active:after{opacity:.32;background-size:100% 100%;transition:background-size}.vot-button[disabled=true]{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.12);color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);box-shadow:none;cursor:initial}.vot-button[disabled=true]:before,.vot-button[disabled=true]:after{opacity:0}.vot-outlined-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));box-sizing:border-box;border:1px solid;border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.24);vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;background-color:#0000;border-radius:4px;outline:none;min-width:64px;height:36px;margin:0;padding:0 16px;font-size:14px;font-weight:500;line-height:34px;display:inline-block;position:relative}.vot-outlined-button[hidden]{display:none!important}.vot-outlined-button::-moz-focus-inner{border:none}.vot-outlined-button:before,.vot-outlined-button:after{content:"";opacity:0;border-radius:3px;position:absolute;inset:0}.vot-outlined-button:before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-outlined-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-outlined-button:hover:before{opacity:.04}.vot-outlined-button:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-outlined-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-outlined-button[disabled=true]:before,.vot-outlined-button[disabled=true]:after{opacity:0}.vot-text-button{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;color:rgb(var(--vot-helper-theme));font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;background-color:#0000;border:none;border-radius:4px;outline:none;min-width:64px;height:36px;margin:0;padding:0 8px;font-size:14px;font-weight:500;line-height:36px;display:inline-block;position:relative}.vot-text-button[hidden]{display:none!important}.vot-text-button::-moz-focus-inner{border:none}.vot-text-button:before,.vot-text-button:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-text-button:before{background-color:rgb(var(--vot-helper-theme));transition:opacity .2s}.vot-text-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-text-button:hover:before{opacity:.04}.vot-text-button:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-text-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-text-button[disabled=true]:before,.vot-text-button[disabled=true]:after{opacity:0}.vot-icon-button{--vot-helper-onsurface:rgba(var(--vot-onsurface-rgb,0,0,0),.87);box-sizing:border-box;vertical-align:middle;text-align:center;text-overflow:ellipsis;fill:var(--vot-helper-onsurface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:pointer;background-color:#0000;border:none;border-radius:50%;outline:none;width:36px;height:36px;margin:0;padding:0;font-size:14px;font-weight:500;line-height:36px;display:inline-block;position:relative}.vot-icon-button[hidden]{display:none!important}.vot-icon-button::-moz-focus-inner{border:none}.vot-icon-button:before,.vot-icon-button:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-icon-button:before{background-color:var(--vot-helper-onsurface);transition:opacity .2s}.vot-icon-button:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity .3s,background-size .4s}.vot-icon-button:hover:before{opacity:.04}.vot-icon-button:active:after{opacity:.32;background-size:100% 100%;transition:background-size,opacity}.vot-icon-button[disabled=true]{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);fill:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial;background-color:#0000}.vot-icon-button[disabled=true]:before,.vot-icon-button[disabled=true]:after{opacity:0}.vot-textfield{display:inline-block;--vot-helper-theme:rgb(var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243)))!important;--vot-helper-safari1:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;--vot-helper-safari2:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;--vot-helper-safari3:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system)!important;text-align:start!important;padding-top:6px!important;font-size:16px!important;line-height:1.5!important;position:relative!important}.vot-textfield[hidden]{display:none!important}.vot-textfield>input,.vot-textfield>textarea{box-sizing:border-box!important;border-style:solid!important;border-width:1px!important;border-color:transparent var(--vot-helper-safari2)var(--vot-helper-safari2)!important;height:inherit!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;-webkit-text-fill-color:currentColor!important;font-family:inherit!important;font-size:inherit!important;line-height:inherit!important;caret-color:var(--vot-helper-theme)!important;background-color:#0000!important;border-radius:4px!important;width:100%!important;margin:0!important;padding:15px 13px!important;transition:border .2s,box-shadow .2s!important;box-shadow:inset 1px 0 #0000,inset -1px 0 #0000,inset 0 -1px #0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-moz-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):not(.vot-show-placeholer)::-webkit-input-placeholder{color:#0000!important}.vot-textfield>textarea:not(:focus):not(.vot-show-placeholer)::-webkit-input-placeholder{color:#0000!important}.vot-textfield>input:not(:focus):placeholder-shown,.vot-textfield>textarea:not(:focus):placeholder-shown{border-top-color:var(--vot-helper-safari2)!important}.vot-textfield>input+span,.vot-textfield>textarea+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;cursor:text!important;pointer-events:none!important;width:100%!important;max-height:100%!important;font-size:75%!important;line-height:15px!important;transition:color .2s,font-size .2s,line-height .2s!important;display:flex!important;position:absolute!important;top:0!important;left:0!important}.vot-textfield>input:not(:focus):placeholder-shown+span,.vot-textfield>textarea:not(:focus):placeholder-shown+span{font-size:inherit!important;line-height:68px!important}.vot-textfield>input+span:before,.vot-textfield>input+span:after,.vot-textfield>textarea+span:before,.vot-textfield>textarea+span:after{content:""!important;box-sizing:border-box!important;border-top:solid 1px var(--vot-helper-safari2)!important;pointer-events:none!important;min-width:10px!important;height:8px!important;margin-top:6px!important;transition:border .2s,box-shadow .2s!important;display:block!important;box-shadow:inset 0 1px #0000!important}.vot-textfield>input+span:before,.vot-textfield>textarea+span:before{border-left:1px solid #0000!important;border-radius:4px 0!important;margin-right:4px!important}.vot-textfield>input+span:after,.vot-textfield>textarea+span:after{border-right:1px solid #0000!important;border-radius:0 4px!important;flex-grow:1!important;margin-left:4px!important}.vot-textfield>input.vot-show-placeholer+span:before,.vot-textfield>textarea.vot-show-placeholer+span:before{margin-right:0!important}.vot-textfield>input.vot-show-placeholer+span:after,.vot-textfield>textarea.vot-show-placeholer+span:after{margin-left:0!important}.vot-textfield>input:not(:focus):placeholder-shown+span:before,.vot-textfield>input:not(:focus):placeholder-shown+span:after,.vot-textfield>textarea:not(:focus):placeholder-shown+span:before,.vot-textfield>textarea:not(:focus):placeholder-shown+span:after{border-top-color:#0000!important}.vot-textfield:hover>input:not(:disabled),.vot-textfield:hover>textarea:not(:disabled){border-color:transparent var(--vot-helper-safari3)var(--vot-helper-safari3)!important}.vot-textfield:hover>input:not(:disabled)+span:before,.vot-textfield:hover>input:not(:disabled)+span:after,.vot-textfield:hover>textarea:not(:disabled)+span:before,.vot-textfield:hover>textarea:not(:disabled)+span:after{border-top-color:var(--vot-helper-safari3)!important}.vot-textfield:hover>input:not(:disabled):not(:focus):placeholder-shown,.vot-textfield:hover>textarea:not(:disabled):not(:focus):placeholder-shown{border-color:var(--vot-helper-safari3)!important}.vot-textfield>input:focus,.vot-textfield>textarea:focus{border-color:transparent var(--vot-helper-theme)var(--vot-helper-theme)!important;box-shadow:inset 1px 0 var(--vot-helper-theme),inset -1px 0 var(--vot-helper-theme),inset 0 -1px var(--vot-helper-theme)!important;outline:none!important}.vot-textfield>input:focus+span,.vot-textfield>textarea:focus+span{color:var(--vot-helper-theme)!important}.vot-textfield>input:focus+span:before,.vot-textfield>input:focus+span:after,.vot-textfield>textarea:focus+span:before,.vot-textfield>textarea:focus+span:after{border-top-color:var(--vot-helper-theme)!important;box-shadow:inset 0 1px var(--vot-helper-theme)!important}.vot-textfield>input:disabled,.vot-textfield>input:disabled+span,.vot-textfield>textarea:disabled,.vot-textfield>textarea:disabled+span{border-color:transparent var(--vot-helper-safari1)var(--vot-helper-safari1)!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;pointer-events:none!important}.vot-textfield>input:disabled+span:before,.vot-textfield>input:disabled+span:after,.vot-textfield>textarea:disabled+span:before,.vot-textfield>textarea:disabled+span:after,.vot-textfield>input:disabled:placeholder-shown,.vot-textfield>input:disabled:placeholder-shown+span,.vot-textfield>textarea:disabled:placeholder-shown,.vot-textfield>textarea:disabled:placeholder-shown+span{border-top-color:var(--vot-helper-safari1)!important}.vot-textfield>input:disabled:placeholder-shown+span:before,.vot-textfield>input:disabled:placeholder-shown+span:after,.vot-textfield>textarea:disabled:placeholder-shown+span:before,.vot-textfield>textarea:disabled:placeholder-shown+span:after{border-top-color:#0000!important}@media not all and (-webkit-min-device-pixel-ratio:.0000264583),not all and (min-resolution:.001dpcm){@supports ((-webkit-appearance:none)){.vot-textfield>input,.vot-textfield>input+span,.vot-textfield>textarea,.vot-textfield>textarea+span,.vot-textfield>input+span:before,.vot-textfield>input+span:after,.vot-textfield>textarea+span:before,.vot-textfield>textarea+span:after{transition-duration:.1s!important}}}.vot-checkbox{--vot-helper-theme:var(--vot-theme-rgb,var(--vot-primary-rgb,33,150,243));--vot-helper-ontheme:var(--vot-ontheme-rgb,var(--vot-onprimary-rgb,255,255,255));z-index:0;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;font-size:16px;line-height:1.5;display:inline-block;position:relative}.vot-checkbox[hidden]{display:none!important}.vot-checkbox>input{appearance:none;z-index:10000;box-sizing:border-box;border:2px solid;border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.6);cursor:pointer;background:0 0;border-radius:2px;outline:none;width:18px;height:18px;margin:3px 1px;transition:border-color .2s,background-color .2s;display:block;position:absolute}.vot-checkbox>input+span{box-sizing:border-box;width:inherit;cursor:pointer;padding-left:30px;font-weight:400;display:inline-block}.vot-checkbox>input+span:before{content:"";background-color:rgb(var(--vot-onsurface-rgb,0,0,0));opacity:0;pointer-events:none;border-radius:50%;width:40px;height:40px;transition:opacity .3s,transform .2s;display:block;position:absolute;top:-8px;left:-10px;transform:scale(1)}.vot-checkbox>input+span:after{content:"";z-index:10000;pointer-events:none;border:0 solid #0000;border-width:0 0 2px 2px;width:10px;height:5px;transition:border-color .2s;display:block;position:absolute;top:3px;left:1px;transform:translate(3px,4px)rotate(-45deg);box-sizing:content-box!important}.vot-checkbox>input:checked,.vot-checkbox>input:indeterminate{border-color:rgb(var(--vot-helper-theme));background-color:rgb(var(--vot-helper-theme))}.vot-checkbox>input:checked+span:before,.vot-checkbox>input:indeterminate+span:before{background-color:rgb(var(--vot-helper-theme))}.vot-checkbox>input:checked+span:after,.vot-checkbox>input:indeterminate+span:after{border-color:rgb(var(--vot-helper-ontheme,255,255,255))}.vot-checkbox>input:indeterminate+span:after{border-left-width:0;transform:translate(4px,3px)}.vot-checkbox:hover>input+span:before{opacity:.04}.vot-checkbox:active>input,.vot-checkbox:active:hover>input{border-color:rgb(var(--vot-helper-theme))}.vot-checkbox:active>input:checked{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.6);border-color:#0000}.vot-checkbox:active>input+span:before{opacity:1;transition:transform,opacity;transform:scale(0)}.vot-checkbox>input:disabled{border-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial}.vot-checkbox>input:disabled:checked,.vot-checkbox>input:disabled:indeterminate{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);border-color:#0000}.vot-checkbox>input:disabled+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38);cursor:initial}.vot-checkbox>input:disabled+span:before{opacity:0;transform:scale(0)}.vot-slider{display:inline-block;--vot-safari-helper1:rgba(var(--vot-primary-rgb,33,150,243),.04)!important;--vot-safari-helper2:rgba(var(--vot-primary-rgb,33,150,243),.12)!important;--vot-safari-helper3:rgba(var(--vot-primary-rgb,33,150,243),.16)!important;--vot-safari-helper4:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important;font-family:var(--vot-font,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system)!important;text-align:start!important;width:100%!important;font-size:16px!important;line-height:1.5!important}.vot-slider[hidden]{display:none!important}.vot-slider>input{appearance:none!important;cursor:pointer!important;background-color:#0000!important;width:100%!important;height:36px!important;margin:0 0 -36px!important;display:block!important;position:relative!important;top:24px!important}.vot-slider>input:last-child{margin:0!important;position:static!important}.vot-slider>span{margin-bottom:36px!important;display:inline-block!important}.vot-slider>input:disabled{cursor:default!important;opacity:.38!important}.vot-slider>input:disabled+span{color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input::-webkit-slider-runnable-track{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important}.vot-slider>input::-webkit-slider-thumb{appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;margin:0!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider:hover>input::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper1)!important}.vot-slider>input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--vot-safari-helper4)!important}.vot-slider>input:disabled::-webkit-slider-runnable-track{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-webkit-slider-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;color:rgb(var(--vot-surface-rgb,255,255,255))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input::-moz-range-track{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important}.vot-slider>input::-moz-range-thumb{appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider>input::-moz-range-progress{background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border-radius:1px!important;height:2px!important}.vot-slider:hover>input:hover::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.04)!important}.vot-slider>input:active::-moz-range-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.24)!important}.vot-slider>input:disabled::-moz-range-track{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-moz-range-progress{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important}.vot-slider>input:disabled::-moz-range-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input::-moz-focus-outer{border:none!important}.vot-slider>input:focus{outline:none!important}.vot-slider>input::-ms-track{box-sizing:border-box!important;background-color:#0000!important;border:none!important;border-radius:1px!important;width:100%!important;height:2px!important;margin:17px 0!important;padding:0 17px!important}.vot-slider>input::-ms-fill-lower{background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border-radius:1px!important;height:2px!important}.vot-slider>input::-ms-fill-upper{background-color:rgba(var(--vot-primary-rgb,33,150,243),.24)!important;border-radius:1px!important;height:2px!important}.vot-slider>input::-ms-thumb{appearance:none!important;background-color:rgb(var(--vot-primary-rgb,33,150,243))!important;border:none!important;border-radius:50%!important;width:2px!important;height:2px!important;margin:0 17px!important;transition:box-shadow .2s!important;transform:scale(6)!important}.vot-slider:hover>input::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.04)!important}.vot-slider>input:active::-ms-thumb{box-shadow:0 0 0 2px rgba(var(--vot-primary-rgb,33,150,243),.24)!important}.vot-slider>input:disabled::-ms-fill-lower{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important}.vot-slider>input:disabled::-ms-fill-upper{background-color:rgba(var(--vot-onsurface-rgb,0,0,0),.38)!important;opacity:.38!important}.vot-slider>input:disabled::-ms-thumb{background-color:rgb(var(--vot-onsurface-rgb,0,0,0))!important;box-shadow:0 0 0 1px rgb(var(--vot-surface-rgb,255,255,255))!important;transform:scale(4)!important}.vot-slider>input:before{content:""!important;width:calc(100%*var(--vot-progress,0))!important;background:rgb(var(--vot-primary-rgb,33,150,243))!important;height:2px!important;display:block!important;position:absolute!important;top:calc(50% - 1px)!important}.vot-select{font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;color:var(--vot-helper-theme);fill:var(--vot-helper-theme);justify-content:space-between;align-items:center;font-size:14px;font-weight:400;line-height:1.5;display:flex;--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0)!important;--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87)!important;--vot-helper-safari1:rgba(var(--vot-onsurface-rgb,0,0,0),.6)!important;--vot-helper-safari2:rgba(var(--vot-onsurface-rgb,0,0,0),.87)!important}.vot-select[hidden]{display:none!important}.vot-select-label{font-size:16px}.vot-select-outer{cursor:pointer;justify-content:space-between;align-items:center;width:120px;max-width:120px;padding:0 5px;display:flex;border-style:solid!important;border-width:1px!important;border-color:var(--vot-helper-safari1)!important;border-radius:4px!important;transition:border .2s!important}.vot-select-outer:hover{border-color:var(--vot-helper-safari2)!important}.vot-select-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vot-select-arrow-icon{justify-content:center;align-items:center;width:20px;height:32px;display:flex}.vot-select-content-list{flex-direction:column;display:flex}.vot-select-content-list .vot-select-content-item{cursor:pointer;border-radius:8px;padding:5px 10px}.vot-select-content-list .vot-select-content-item:not([inert]):hover{background-color:#2a2c31}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]{color:rgb(var(--vot-primary-rgb,33,150,243));background-color:rgba(var(--vot-primary-rgb,33,150,243),.2)}.vot-select-content-list .vot-select-content-item[data-vot-selected=true]:hover{background-color:rgba(var(--vot-primary-rgb,33,150,243),.1)!important}.vot-select-content-list .vot-select-content-item[data-vot-disabled=true]{cursor:default}.vot-select-content-list .vot-select-content-item[hidden]{display:none!important}.vot-header{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;font-weight:700;line-height:1.5}.vot-header[hidden]{display:none!important}.vot-header:not(:first-child){padding-top:8px}.vot-header-level-1{font-size:2em}.vot-header-level-2{font-size:1.5em}.vot-header-level-3{font-size:1.17em}.vot-header-level-4{font-size:1em}.vot-header-level-5{font-size:.83em}.vot-header-level-6{font-size:.67em}.vot-info{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;font-size:16px;line-height:1.5;display:flex}.vot-info[hidden]{display:none!important}.vot-info>:not(:first-child){color:rgba(var(--vot-helper-onsurface-rgb),.5);flex:1;margin-left:8px}.vot-details{color:rgba(var(--vot-helper-onsurface-rgb),.87);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);text-align:start;cursor:pointer;border-radius:.5em;justify-content:space-between;align-items:center;margin:0 -.5em;padding:.5em;font-size:16px;line-height:1.5;transition:background .5s;display:flex}.vot-details[hidden]{display:none!important}.vot-details-arrow-icon{fill:rgba(var(--vot-helper-onsurface-rgb),.87);justify-content:center;align-items:center;width:20px;height:32px;display:flex;transform:scale(1.25)rotate(-90deg)}.vot-details:hover{background:rgba(var(--vot-onsurface-rgb,0,0,0),.04)}.vot-lang-select{--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87);color:var(--vot-helper-theme);fill:var(--vot-helper-theme);justify-content:space-between;align-items:center;display:flex}.vot-lang-select[hidden]{display:none!important}.vot-lang-select-icon{justify-content:center;align-items:center;width:32px;height:32px;display:flex}.vot-segmented-button{--vot-helper-theme-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-theme:rgba(var(--vot-helper-theme-rgb),.87);-webkit-user-select:none;user-select:none;background:rgb(var(--vot-surface-rgb,255,255,255));color:var(--vot-helper-theme);fill:var(--vot-helper-theme);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:default;z-index:2147483647;border-radius:4px;align-items:center;max-width:100vw;height:32px;font-size:16px;line-height:1.5;transition:opacity .5s;display:flex;position:absolute;top:5rem;left:50%;overflow:hidden;transform:translate(-50%)}.vot-segmented-button[hidden]{display:none!important}.vot-segmented-button *{box-sizing:border-box!important}.vot-segmented-button .vot-separator{background:rgba(var(--vot-helper-theme-rgb),.1);width:1px;height:50%}.vot-segmented-button .vot-separator[hidden]{display:none!important}.vot-segmented-button .vot-segment,.vot-segmented-button .vot-segment-only-icon{color:inherit;background-color:#0000;border:none;justify-content:center;align-items:center;height:100%;padding:0 8px;transition:background-color .1s ease-in-out;display:flex;position:relative;overflow:hidden}.vot-segmented-button .vot-segment[hidden],.vot-segmented-button [hidden].vot-segment-only-icon{display:none!important}.vot-segmented-button .vot-segment:before,.vot-segmented-button .vot-segment-only-icon:before,.vot-segmented-button .vot-segment:after,.vot-segmented-button .vot-segment-only-icon:after{content:"";border-radius:inherit;opacity:0;position:absolute;inset:0}.vot-segmented-button .vot-segment:before,.vot-segmented-button .vot-segment-only-icon:before{background-color:rgb(var(--vot-helper-theme-rgb));transition:opacity .2s}.vot-segmented-button .vot-segment:after,.vot-segmented-button .vot-segment-only-icon:after{background:radial-gradient(circle,currentColor 1%,#0000 1%) 50%/10000% 10000% no-repeat;transition:opacity 1s,background-size .5s}.vot-segmented-button .vot-segment:hover:before,.vot-segmented-button .vot-segment-only-icon:hover:before{opacity:.04}.vot-segmented-button .vot-segment:active:after,.vot-segmented-button .vot-segment-only-icon:active:after{opacity:.16;background-size:100% 100%;transition:background-size}.vot-segmented-button .vot-segment-only-icon{min-width:32px;padding:0}.vot-segmented-button .vot-segment-label{white-space:nowrap;color:inherit;margin-left:8px}.vot-segmented-button[data-status=success] .vot-translate-button{color:rgb(var(--vot-primary-rgb,33,150,243));fill:rgb(var(--vot-primary-rgb,33,150,243))}.vot-segmented-button[data-status=error] .vot-translate-button{color:#f28b82;fill:#f28b82}.vot-segmented-button[data-loading=true] #vot-loading-icon{display:block!important}.vot-segmented-button[data-loading=true] #vot-translate-icon{display:none!important}.vot-segmented-button[data-direction=column]{flex-direction:column;height:fit-content}.vot-segmented-button[data-direction=column] .vot-segment-label{display:none}.vot-segmented-button[data-direction=column]>.vot-segment-only-icon,.vot-segmented-button[data-direction=column]>.vot-segment{padding:8px}.vot-segmented-button[data-direction=column] .vot-separator{width:50%;height:1px}.vot-segmented-button[data-position=left]{top:12.5vh;left:50px}.vot-segmented-button[data-position=right]{top:12.5vh;left:auto;right:0}.vot-segmented-button svg{width:fit-content}.vot-menu{--vot-helper-surface-rgb:var(--vot-surface-rgb,255,255,255);--vot-helper-surface:rgb(var(--vot-helper-surface-rgb));--vot-helper-onsurface-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-onsurface:rgba(var(--vot-helper-onsurface-rgb),.87);-webkit-user-select:none;user-select:none;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);cursor:default;z-index:2147483647;visibility:visible;opacity:1;transform-origin:top;border-radius:8px;min-width:300px;font-size:16px;line-height:1.5;transition:opacity .3s,transform .1s;position:absolute;top:calc(5rem + 48px);left:50%;overflow:hidden;transform:translate(-50%)scale(1)}.vot-menu *{box-sizing:border-box!important}.vot-menu[hidden]{pointer-events:none;visibility:hidden;opacity:0;transform:translate(-50%)scale(0);display:block!important}.vot-menu-content-wrapper{max-height:calc(var(--vot-container-height,75vh) - (5rem + 32px + 16px)*2);flex-direction:column;min-height:100px;display:flex;overflow:auto}.vot-menu-header-container{flex-shrink:0;align-items:flex-start;min-height:31px;display:flex}.vot-menu-header-container:empty{padding:0 0 16px}.vot-menu-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-menu-title-container{font-size:inherit;font-weight:inherit;text-align:start;outline:0;flex:1;margin:0;display:flex}.vot-menu-title{padding-bottom:16px;padding-inline:16px;flex:1;padding-top:16px;font-size:16px;line-height:1}.vot-menu-body-container{box-sizing:border-box;overscroll-behavior:contain;flex-direction:column;gap:8px;min-height:1.375rem;padding:0 16px;display:flex;overflow:auto;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb),.1)var(--vot-helper-surface)!important}.vot-menu-body-container::-webkit-scrollbar{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-menu-body-container::-webkit-scrollbar-track{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-menu-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb),.1)!important;border:5px solid var(--vot-helper-surface)!important;-webkit-border-radius:1ex!important}.vot-menu-body-container::-webkit-scrollbar-thumb:hover{border:3px solid var(--vot-helper-surface)!important}.vot-menu-body-container::-webkit-scrollbar-corner{background:var(--vot-helper-surface)!important}.vot-menu-footer-container{padding-bottom:16px;padding-inline:16px;flex-shrink:0;justify-content:flex-end;padding-top:16px;display:flex}.vot-menu-footer-container:empty{padding:16px 0 0}.vot-menu[data-position=left]{top:12.5vh;left:240px}.vot-menu[data-position=right]{top:12.5vh;left:auto;right:-80px}.vot-dialog{--vot-helper-surface-rgb:var(--vot-surface-rgb,255,255,255);--vot-helper-surface:rgb(var(--vot-helper-surface-rgb));--vot-helper-onsurface-rgb:var(--vot-onsurface-rgb,0,0,0);--vot-helper-onsurface:rgba(var(--vot-helper-onsurface-rgb),.87);max-width:initial;max-height:initial;width:min(var(--vot-dialog-width,512px),100%);top:50%;bottom:50%;background-color:var(--vot-helper-surface);color:var(--vot-helper-onsurface);font-family:var(--vot-font-family,"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system);-webkit-user-select:none;user-select:none;visibility:visible;opacity:1;transform-origin:50%;border-radius:8px;height:fit-content;margin:auto;padding:0;font-size:16px;line-height:1.5;transition:opacity .3s,transform .1s;display:block;position:fixed;inset-block:0;inset-inline:0;overflow:auto hidden;transform:scale(1);box-shadow:0 0 16px #0000001f,0 16px 16px #0000003d}[hidden]>.vot-dialog{pointer-events:none;opacity:0;transition:opacity .1s,transform .2s;transform:scale(.5)}.vot-dialog-container{visibility:visible;z-index:2147483647;position:absolute}.vot-dialog-container[hidden]{pointer-events:none;visibility:hidden;display:block!important}.vot-dialog-container *{box-sizing:border-box!important}.vot-dialog-backdrop{opacity:1;background-color:#0009;transition:opacity .3s;position:fixed;inset:0}[hidden]>.vot-dialog-backdrop{pointer-events:none;opacity:0}.vot-dialog-content-wrapper{flex-direction:column;max-height:75vh;display:flex;overflow:auto}.vot-dialog-header-container{flex-shrink:0;align-items:flex-start;min-height:31px;display:flex}.vot-dialog-header-container:empty{padding:0 0 20px}.vot-dialog-header-container>.vot-icon-button{margin-inline-end:4px;margin-top:4px}.vot-dialog-title-container{font-size:inherit;font-weight:inherit;outline:0;flex:1;margin:0;display:flex}.vot-dialog-title{padding-bottom:16px;padding-inline:20px;flex:1;padding-top:20px;font-size:115.385%;font-weight:700;line-height:1}.vot-dialog-body-container{box-sizing:border-box;overscroll-behavior:contain;flex-direction:column;gap:16px;min-height:1.375rem;padding:0 20px;display:flex;overflow:auto;scrollbar-color:rgba(var(--vot-helper-onsurface-rgb),.1)var(--vot-helper-surface)!important}.vot-dialog-body-container::-webkit-scrollbar{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-dialog-body-container::-webkit-scrollbar-track{background:var(--vot-helper-surface)!important;width:12px!important;height:12px!important}.vot-dialog-body-container::-webkit-scrollbar-thumb{background:rgba(var(--vot-helper-onsurface-rgb),.1)!important;border:5px solid var(--vot-helper-surface)!important;-webkit-border-radius:1ex!important}.vot-dialog-body-container::-webkit-scrollbar-thumb:hover{border:3px solid var(--vot-helper-surface)!important}.vot-dialog-body-container::-webkit-scrollbar-corner{background:var(--vot-helper-surface)!important}.vot-dialog-footer-container{padding-bottom:16px;padding-inline:16px;flex-shrink:0;justify-content:flex-end;padding-top:16px;display:flex}.vot-dialog-footer-container:empty{padding:20px 0 0}.vot-subtitles-widget{z-index:2147483647;pointer-events:none;justify-content:center;align-items:center;width:50%;min-height:20%;max-height:100%;display:flex;position:absolute;top:75%;left:25%}.vot-subtitles{--vot-subtitles-background:rgba(var(--vot-surface-rgb,46,47,52),var(--vot-subtitles-opacity,.8));background:var(--vot-subtitles-background,#2e2f34cc);color:var(--vot-subtitles-color,#e3e3e3);pointer-events:all;box-sizing:border-box;-webkit-user-select:none;user-select:none;border-radius:.5em;width:max-content;max-width:100%;max-height:100%;padding:.5em;font-size:20px;line-height:normal;position:relative}.vot-subtitles span{-webkit-user-select:text;user-select:text}.vot-subtitles .passed{color:var(--vot-subtitles-passed-color,#2196f3)}:root{--vot-font-family:"Roboto","Segoe UI",BlinkMacSystemFont,system-ui,-apple-system;--vot-primary-rgb:139,180,245;--vot-onprimary-rgb:32,33,36;--vot-surface-rgb:32,33,36;--vot-onsurface-rgb:227,227,227;--vot-subtitles-color:rgb(var(--vot-onsurface-rgb,227,227,227));--vot-subtitles-passed-color:rgb(var(--vot-primary-rgb,33,150,243))}vot-block{display:block;visibility:visible!important}')},"./node_modules/bowser/es5.js":function(t){t.exports=function(t){var e={};function o(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,o),i.l=!0,i.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)o.d(n,i,function(e){return t[e]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=90)}({17:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n=o(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var o=e.match(t);return o&&o.length>0&&o[1]||""},t.getSecondMatch=function(t,e){var o=e.match(t);return o&&o.length>1&&o[2]||""},t.matchAndReturnConst=function(t,e,o){if(t.test(e))return o},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),10===e[0])switch(e[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,o,n){void 0===n&&(n=!1);var i=t.getVersionPrecision(e),a=t.getVersionPrecision(o),r=Math.max(i,a),s=0,l=t.map([e,o],(function(e){var o=r-t.getVersionPrecision(e),n=e+new Array(o+1).join(".0");return t.map(n.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(n&&(s=r-Math.min(i,a)),r-=1;r>=s;){if(l[0][r]>l[1][r])return 1;if(l[0][r]===l[1][r]){if(r===s)return 0;r-=1}else if(l[0][r]1?i-1:0),r=1;r0){var r=Object.keys(o),l=s.default.find(r,(function(t){return e.isOS(t)}));if(l){var d=this.satisfies(o[l]);if(void 0!==d)return d}var u=s.default.find(r,(function(t){return e.isPlatform(t)}));if(u){var c=this.satisfies(o[u]);if(void 0!==c)return c}}if(a>0){var h=Object.keys(i),p=s.default.find(h,(function(t){return e.isBrowser(t,!0)}));if(void 0!==p)return this.compareVersion(i[p])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var o=this.getBrowserName().toLowerCase(),n=t.toLowerCase(),i=s.default.getBrowserTypeByAlias(n);return e&&i&&(n=i.toLowerCase()),n===o},e.compareVersion=function(t){var e=[0],o=t,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(o=t.substr(1),"="===t[1]?(n=!0,o=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?o=t.substr(1):"~"===t[0]&&(n=!0,o=t.substr(1)),e.indexOf(s.default.compareVersions(i,o,n))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=d,t.exports=e.default},92:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=/version\/(\d+(\.?_?\d+)+)/i,r=[{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},o=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},o=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},o=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},o=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},o=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},o=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},o=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},o=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},o=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},o=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},o=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},o=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},o=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},o=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return o&&(e.version=o),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},o=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},o=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},o=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},o=i.default.getFirstMatch(a,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},o=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},o=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},o=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},o=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},o=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},o=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},o=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},o=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},o=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e={name:"Android Browser"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},o=i.default.getFirstMatch(a,t);return o&&(e.version=o),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=r,t.exports=e.default},93:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:a.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),o=i.default.getWindowsVersionName(e);return{name:a.OS_MAP.Windows,version:e,versionName:o}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:a.OS_MAP.iOS},o=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return o&&(e.version=o),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),o=i.default.getMacOSVersionName(e),n={name:a.OS_MAP.MacOS,version:e};return o&&(n.versionName=o),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),o=t.test(/android/i);return e&&o},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),o=i.default.getAndroidVersionName(e),n={name:a.OS_MAP.Android,version:e};return o&&(n.versionName=o),n}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),o={name:a.OS_MAP.WebOS};return e&&e.length&&(o.version=e),o}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:a.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.Tizen,version:e}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:a.OS_MAP.PlayStation4,version:e}}}];e.default=r,t.exports=e.default},94:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",o={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(o.model=e),o}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){var e=t.test(/ipod|iphone/i),o=t.test(/like (ipod|iphone)/i);return e&&!o},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];e.default=r,t.exports=e.default},95:function(t,e,o){"use strict";e.__esModule=!0,e.default=void 0;var n,i=(n=o(17))&&n.__esModule?n:{default:n},a=o(18),r=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:a.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:a.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:a.ENGINE_MAP.Trident},o=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:a.ENGINE_MAP.Presto},o=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:function(t){var e=t.test(/gecko/i),o=t.test(/like gecko/i);return e&&!o},describe:function(t){var e={name:a.ENGINE_MAP.Gecko},o=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:a.ENGINE_MAP.WebKit},o=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return o&&(e.version=o),e}}];e.default=r,t.exports=e.default}})},"./node_modules/requestidlecallback-polyfill/index.js":()=>{window.requestIdleCallback=window.requestIdleCallback||function(t){var e=Date.now();return setTimeout((function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})}),1)},window.cancelIdleCallback=window.cancelIdleCallback||function(t){clearTimeout(t)}}},e={};function o(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={exports:{}};return t[n].call(a.exports,a,a.exports,o),a.exports}(()=>{"use strict";var t=o("./node_modules/bowser/es5.js");const e=protobuf;var n;function i(t){switch(t){case 0:case"NO_CONNECTION":return n.NO_CONNECTION;case 10:case"TRANSLATING":return n.TRANSLATING;case 20:case"STREAMING":return n.STREAMING;default:return n.UNRECOGNIZED}}!function(t){t[t.NO_CONNECTION=0]="NO_CONNECTION",t[t.TRANSLATING=10]="TRANSLATING",t[t.STREAMING=20]="STREAMING",t[t.UNRECOGNIZED=-1]="UNRECOGNIZED"}(n||(n={}));const a={encode:(t,o=e.Writer.create())=>(""!==t.target&&o.uint32(10).string(t.target),""!==t.targetUrl&&o.uint32(18).string(t.targetUrl),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={target:"",targetUrl:""};for(;n.pos>>3){case 1:if(10!==t)break;a.target=n.string();continue;case 2:if(18!==t)break;a.targetUrl=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({target:b(t.target)?globalThis.String(t.target):"",targetUrl:b(t.targetUrl)?globalThis.String(t.targetUrl):""}),toJSON(t){const e={};return""!==t.target&&(e.target=t.target),""!==t.targetUrl&&(e.targetUrl=t.targetUrl),e},create:t=>a.fromPartial(t??{}),fromPartial(t){const e={target:"",targetUrl:""};return e.target=t.target??"",e.targetUrl=t.targetUrl??"",e}};const r={encode(t,o=e.Writer.create()){""!==t.url&&o.uint32(26).string(t.url),void 0!==t.deviceId&&o.uint32(34).string(t.deviceId),!1!==t.firstRequest&&o.uint32(40).bool(t.firstRequest),0!==t.duration&&o.uint32(49).double(t.duration),0!==t.unknown0&&o.uint32(56).int32(t.unknown0),""!==t.language&&o.uint32(66).string(t.language),!1!==t.forceSourceLang&&o.uint32(72).bool(t.forceSourceLang),0!==t.unknown1&&o.uint32(80).int32(t.unknown1);for(const e of t.translationHelp)a.encode(e,o.uint32(90).fork()).ldelim();return""!==t.responseLanguage&&o.uint32(114).string(t.responseLanguage),0!==t.unknown2&&o.uint32(120).int32(t.unknown2),0!==t.unknown3&&o.uint32(128).int32(t.unknown3),!1!==t.bypassCache&&o.uint32(136).bool(t.bypassCache),o},decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const r={url:"",deviceId:void 0,firstRequest:!1,duration:0,unknown0:0,language:"",forceSourceLang:!1,unknown1:0,translationHelp:[],responseLanguage:"",unknown2:0,unknown3:0,bypassCache:!1};for(;n.pos>>3){case 3:if(26!==t)break;r.url=n.string();continue;case 4:if(34!==t)break;r.deviceId=n.string();continue;case 5:if(40!==t)break;r.firstRequest=n.bool();continue;case 6:if(49!==t)break;r.duration=n.double();continue;case 7:if(56!==t)break;r.unknown0=n.int32();continue;case 8:if(66!==t)break;r.language=n.string();continue;case 9:if(72!==t)break;r.forceSourceLang=n.bool();continue;case 10:if(80!==t)break;r.unknown1=n.int32();continue;case 11:if(90!==t)break;r.translationHelp.push(a.decode(n,n.uint32()));continue;case 14:if(114!==t)break;r.responseLanguage=n.string();continue;case 15:if(120!==t)break;r.unknown2=n.int32();continue;case 16:if(128!==t)break;r.unknown3=n.int32();continue;case 17:if(136!==t)break;r.bypassCache=n.bool();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return r},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",deviceId:b(t.deviceId)?globalThis.String(t.deviceId):void 0,firstRequest:!!b(t.firstRequest)&&globalThis.Boolean(t.firstRequest),duration:b(t.duration)?globalThis.Number(t.duration):0,unknown0:b(t.unknown0)?globalThis.Number(t.unknown0):0,language:b(t.language)?globalThis.String(t.language):"",forceSourceLang:!!b(t.forceSourceLang)&&globalThis.Boolean(t.forceSourceLang),unknown1:b(t.unknown1)?globalThis.Number(t.unknown1):0,translationHelp:globalThis.Array.isArray(t?.translationHelp)?t.translationHelp.map((t=>a.fromJSON(t))):[],responseLanguage:b(t.responseLanguage)?globalThis.String(t.responseLanguage):"",unknown2:b(t.unknown2)?globalThis.Number(t.unknown2):0,unknown3:b(t.unknown3)?globalThis.Number(t.unknown3):0,bypassCache:!!b(t.bypassCache)&&globalThis.Boolean(t.bypassCache)}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),void 0!==t.deviceId&&(e.deviceId=t.deviceId),!1!==t.firstRequest&&(e.firstRequest=t.firstRequest),0!==t.duration&&(e.duration=t.duration),0!==t.unknown0&&(e.unknown0=Math.round(t.unknown0)),""!==t.language&&(e.language=t.language),!1!==t.forceSourceLang&&(e.forceSourceLang=t.forceSourceLang),0!==t.unknown1&&(e.unknown1=Math.round(t.unknown1)),t.translationHelp?.length&&(e.translationHelp=t.translationHelp.map((t=>a.toJSON(t)))),""!==t.responseLanguage&&(e.responseLanguage=t.responseLanguage),0!==t.unknown2&&(e.unknown2=Math.round(t.unknown2)),0!==t.unknown3&&(e.unknown3=Math.round(t.unknown3)),!1!==t.bypassCache&&(e.bypassCache=t.bypassCache),e},create:t=>r.fromPartial(t??{}),fromPartial(t){const e={url:"",deviceId:void 0,firstRequest:!1,duration:0,unknown0:0,language:"",forceSourceLang:!1,unknown1:0,translationHelp:[],responseLanguage:"",unknown2:0,unknown3:0,bypassCache:!1};return e.url=t.url??"",e.deviceId=t.deviceId??void 0,e.firstRequest=t.firstRequest??!1,e.duration=t.duration??0,e.unknown0=t.unknown0??0,e.language=t.language??"",e.forceSourceLang=t.forceSourceLang??!1,e.unknown1=t.unknown1??0,e.translationHelp=t.translationHelp?.map((t=>a.fromPartial(t)))||[],e.responseLanguage=t.responseLanguage??"",e.unknown2=t.unknown2??0,e.unknown3=t.unknown3??0,e.bypassCache=t.bypassCache??!1,e}};const s={encode:(t,o=e.Writer.create())=>(void 0!==t.url&&o.uint32(10).string(t.url),void 0!==t.duration&&o.uint32(17).double(t.duration),0!==t.status&&o.uint32(32).int32(t.status),void 0!==t.remainingTime&&o.uint32(40).int32(t.remainingTime),void 0!==t.unknown0&&o.uint32(48).int32(t.unknown0),""!==t.translationId&&o.uint32(58).string(t.translationId),void 0!==t.language&&o.uint32(66).string(t.language),void 0!==t.message&&o.uint32(74).string(t.message),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:void 0,duration:void 0,status:0,remainingTime:void 0,unknown0:void 0,translationId:"",language:void 0,message:void 0};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(17!==t)break;a.duration=n.double();continue;case 4:if(32!==t)break;a.status=n.int32();continue;case 5:if(40!==t)break;a.remainingTime=n.int32();continue;case 6:if(48!==t)break;a.unknown0=n.int32();continue;case 7:if(58!==t)break;a.translationId=n.string();continue;case 8:if(66!==t)break;a.language=n.string();continue;case 9:if(74!==t)break;a.message=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):void 0,duration:b(t.duration)?globalThis.Number(t.duration):void 0,status:b(t.status)?globalThis.Number(t.status):0,remainingTime:b(t.remainingTime)?globalThis.Number(t.remainingTime):void 0,unknown0:b(t.unknown0)?globalThis.Number(t.unknown0):void 0,translationId:b(t.translationId)?globalThis.String(t.translationId):"",language:b(t.language)?globalThis.String(t.language):void 0,message:b(t.message)?globalThis.String(t.message):void 0}),toJSON(t){const e={};return void 0!==t.url&&(e.url=t.url),void 0!==t.duration&&(e.duration=t.duration),0!==t.status&&(e.status=Math.round(t.status)),void 0!==t.remainingTime&&(e.remainingTime=Math.round(t.remainingTime)),void 0!==t.unknown0&&(e.unknown0=Math.round(t.unknown0)),""!==t.translationId&&(e.translationId=t.translationId),void 0!==t.language&&(e.language=t.language),void 0!==t.message&&(e.message=t.message),e},create:t=>s.fromPartial(t??{}),fromPartial(t){const e={url:void 0,duration:void 0,status:0,remainingTime:void 0,unknown0:void 0,translationId:"",language:void 0,message:void 0};return e.url=t.url??void 0,e.duration=t.duration??void 0,e.status=t.status??0,e.remainingTime=t.remainingTime??void 0,e.unknown0=t.unknown0??void 0,e.translationId=t.translationId??"",e.language=t.language??void 0,e.message=t.message??void 0,e}};const l={encode:(t,o=e.Writer.create())=>(""!==t.language&&o.uint32(10).string(t.language),""!==t.url&&o.uint32(18).string(t.url),0!==t.unknown0&&o.uint32(24).int32(t.unknown0),""!==t.translatedLanguage&&o.uint32(34).string(t.translatedLanguage),""!==t.translatedUrl&&o.uint32(42).string(t.translatedUrl),0!==t.unknown1&&o.uint32(48).int32(t.unknown1),0!==t.unknown2&&o.uint32(56).int32(t.unknown2),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={language:"",url:"",unknown0:0,translatedLanguage:"",translatedUrl:"",unknown1:0,unknown2:0};for(;n.pos>>3){case 1:if(10!==t)break;a.language=n.string();continue;case 2:if(18!==t)break;a.url=n.string();continue;case 3:if(24!==t)break;a.unknown0=n.int32();continue;case 4:if(34!==t)break;a.translatedLanguage=n.string();continue;case 5:if(42!==t)break;a.translatedUrl=n.string();continue;case 6:if(48!==t)break;a.unknown1=n.int32();continue;case 7:if(56!==t)break;a.unknown2=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({language:b(t.language)?globalThis.String(t.language):"",url:b(t.url)?globalThis.String(t.url):"",unknown0:b(t.unknown0)?globalThis.Number(t.unknown0):0,translatedLanguage:b(t.translatedLanguage)?globalThis.String(t.translatedLanguage):"",translatedUrl:b(t.translatedUrl)?globalThis.String(t.translatedUrl):"",unknown1:b(t.unknown1)?globalThis.Number(t.unknown1):0,unknown2:b(t.unknown2)?globalThis.Number(t.unknown2):0}),toJSON(t){const e={};return""!==t.language&&(e.language=t.language),""!==t.url&&(e.url=t.url),0!==t.unknown0&&(e.unknown0=Math.round(t.unknown0)),""!==t.translatedLanguage&&(e.translatedLanguage=t.translatedLanguage),""!==t.translatedUrl&&(e.translatedUrl=t.translatedUrl),0!==t.unknown1&&(e.unknown1=Math.round(t.unknown1)),0!==t.unknown2&&(e.unknown2=Math.round(t.unknown2)),e},create:t=>l.fromPartial(t??{}),fromPartial(t){const e={language:"",url:"",unknown0:0,translatedLanguage:"",translatedUrl:"",unknown1:0,unknown2:0};return e.language=t.language??"",e.url=t.url??"",e.unknown0=t.unknown0??0,e.translatedLanguage=t.translatedLanguage??"",e.translatedUrl=t.translatedUrl??"",e.unknown1=t.unknown1??0,e.unknown2=t.unknown2??0,e}};const d={encode:(t,o=e.Writer.create())=>(""!==t.url&&o.uint32(10).string(t.url),""!==t.language&&o.uint32(18).string(t.language),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:"",language:""};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(18!==t)break;a.language=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",language:b(t.language)?globalThis.String(t.language):""}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),""!==t.language&&(e.language=t.language),e},create:t=>d.fromPartial(t??{}),fromPartial(t){const e={url:"",language:""};return e.url=t.url??"",e.language=t.language??"",e}};const u={encode(t,o=e.Writer.create()){!1!==t.waiting&&o.uint32(8).bool(t.waiting);for(const e of t.subtitles)l.encode(e,o.uint32(18).fork()).ldelim();return o},decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={waiting:!1,subtitles:[]};for(;n.pos>>3){case 1:if(8!==t)break;a.waiting=n.bool();continue;case 2:if(18!==t)break;a.subtitles.push(l.decode(n,n.uint32()));continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({waiting:!!b(t.waiting)&&globalThis.Boolean(t.waiting),subtitles:globalThis.Array.isArray(t?.subtitles)?t.subtitles.map((t=>l.fromJSON(t))):[]}),toJSON(t){const e={};return!1!==t.waiting&&(e.waiting=t.waiting),t.subtitles?.length&&(e.subtitles=t.subtitles.map((t=>l.toJSON(t)))),e},create:t=>u.fromPartial(t??{}),fromPartial(t){const e={waiting:!1,subtitles:[]};return e.waiting=t.waiting??!1,e.subtitles=t.subtitles?.map((t=>l.fromPartial(t)))||[],e}};const c={encode:(t,o=e.Writer.create())=>(""!==t.url&&o.uint32(10).string(t.url),""!==t.timestamp&&o.uint32(18).string(t.timestamp),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:"",timestamp:""};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(18!==t)break;a.timestamp=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",timestamp:b(t.timestamp)?globalThis.String(t.timestamp):""}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),""!==t.timestamp&&(e.timestamp=t.timestamp),e},create:t=>c.fromPartial(t??{}),fromPartial(t){const e={url:"",timestamp:""};return e.url=t.url??"",e.timestamp=t.timestamp??"",e}};const h={encode:(t,o=e.Writer.create())=>(""!==t.url&&o.uint32(10).string(t.url),""!==t.language&&o.uint32(18).string(t.language),""!==t.responseLanguage&&o.uint32(26).string(t.responseLanguage),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={url:"",language:"",responseLanguage:""};for(;n.pos>>3){case 1:if(10!==t)break;a.url=n.string();continue;case 2:if(18!==t)break;a.language=n.string();continue;case 3:if(26!==t)break;a.responseLanguage=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({url:b(t.url)?globalThis.String(t.url):"",language:b(t.language)?globalThis.String(t.language):"",responseLanguage:b(t.responseLanguage)?globalThis.String(t.responseLanguage):""}),toJSON(t){const e={};return""!==t.url&&(e.url=t.url),""!==t.language&&(e.language=t.language),""!==t.responseLanguage&&(e.responseLanguage=t.responseLanguage),e},create:t=>h.fromPartial(t??{}),fromPartial(t){const e={url:"",language:"",responseLanguage:""};return e.url=t.url??"",e.language=t.language??"",e.responseLanguage=t.responseLanguage??"",e}};const p={encode:(t,o=e.Writer.create())=>(0!==t.interval&&o.uint32(8).int32(t.interval),void 0!==t.translatedInfo&&c.encode(t.translatedInfo,o.uint32(18).fork()).ldelim(),void 0!==t.pingId&&o.uint32(24).int32(t.pingId),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={interval:0,translatedInfo:void 0,pingId:void 0};for(;n.pos>>3){case 1:if(8!==t)break;a.interval=n.int32();continue;case 2:if(18!==t)break;a.translatedInfo=c.decode(n,n.uint32());continue;case 3:if(24!==t)break;a.pingId=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({interval:b(t.interval)?i(t.interval):0,translatedInfo:b(t.translatedInfo)?c.fromJSON(t.translatedInfo):void 0,pingId:b(t.pingId)?globalThis.Number(t.pingId):void 0}),toJSON(t){const e={};return 0!==t.interval&&(e.interval=function(t){switch(t){case n.NO_CONNECTION:return"NO_CONNECTION";case n.TRANSLATING:return"TRANSLATING";case n.STREAMING:return"STREAMING";case n.UNRECOGNIZED:default:return"UNRECOGNIZED"}}(t.interval)),void 0!==t.translatedInfo&&(e.translatedInfo=c.toJSON(t.translatedInfo)),void 0!==t.pingId&&(e.pingId=Math.round(t.pingId)),e},create:t=>p.fromPartial(t??{}),fromPartial(t){const e={interval:0,translatedInfo:void 0,pingId:void 0};return e.interval=t.interval??0,e.translatedInfo=void 0!==t.translatedInfo&&null!==t.translatedInfo?c.fromPartial(t.translatedInfo):void 0,e.pingId=t.pingId??void 0,e}};const g={encode:(t,o=e.Writer.create())=>(0!==t.pingId&&o.uint32(8).int32(t.pingId),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={pingId:0};for(;n.pos>>3){case 1:if(8!==t)break;a.pingId=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({pingId:b(t.pingId)?globalThis.Number(t.pingId):0}),toJSON(t){const e={};return 0!==t.pingId&&(e.pingId=Math.round(t.pingId)),e},create:t=>g.fromPartial(t??{}),fromPartial(t){const e={pingId:0};return e.pingId=t.pingId??0,e}};const v={encode:(t,o=e.Writer.create())=>(""!==t.uuid&&o.uint32(10).string(t.uuid),""!==t.module&&o.uint32(18).string(t.module),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={uuid:"",module:""};for(;n.pos>>3){case 1:if(10!==t)break;a.uuid=n.string();continue;case 2:if(18!==t)break;a.module=n.string();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({uuid:b(t.uuid)?globalThis.String(t.uuid):"",module:b(t.module)?globalThis.String(t.module):""}),toJSON(t){const e={};return""!==t.uuid&&(e.uuid=t.uuid),""!==t.module&&(e.module=t.module),e},create:t=>v.fromPartial(t??{}),fromPartial(t){const e={uuid:"",module:""};return e.uuid=t.uuid??"",e.module=t.module??"",e}};const m={encode:(t,o=e.Writer.create())=>(""!==t.secretKey&&o.uint32(10).string(t.secretKey),0!==t.expires&&o.uint32(16).int32(t.expires),o),decode(t,o){const n=t instanceof e.Reader?t:e.Reader.create(t);let i=void 0===o?n.len:n.pos+o;const a={secretKey:"",expires:0};for(;n.pos>>3){case 1:if(10!==t)break;a.secretKey=n.string();continue;case 2:if(16!==t)break;a.expires=n.int32();continue}if(4==(7&t)||0===t)break;n.skipType(7&t)}return a},fromJSON:t=>({secretKey:b(t.secretKey)?globalThis.String(t.secretKey):"",expires:b(t.expires)?globalThis.Number(t.expires):0}),toJSON(t){const e={};return""!==t.secretKey&&(e.secretKey=t.secretKey),0!==t.expires&&(e.expires=Math.round(t.expires)),e},create:t=>m.fromPartial(t??{}),fromPartial(t){const e={secretKey:"",expires:0};return e.secretKey=t.secretKey??"",e.expires=t.expires??0,e}};function b(t){return null!=t}const f={encodeTranslationRequest:(t,e,o,n,i)=>r.encode({url:t,firstRequest:!0,duration:e,unknown0:1,language:o,forceSourceLang:!1,unknown1:0,translationHelp:i||[],responseLanguage:n,unknown2:0,unknown3:1,bypassCache:!1}).finish(),decodeTranslationResponse:t=>s.decode(new Uint8Array(t)),encodeSubtitlesRequest:(t,e)=>d.encode({url:t,language:e}).finish(),decodeSubtitlesResponse:t=>u.decode(new Uint8Array(t)),encodeStreamPingRequest:t=>g.encode({pingId:t}).finish(),encodeStreamRequest:(t,e,o)=>h.encode({url:t,language:e,responseLanguage:o}).finish(),decodeStreamResponse:t=>p.decode(new Uint8Array(t)),encodeYandexSessionRequest:(t,e)=>v.encode({uuid:t,module:e}).finish(),decodeYandexSessionResponse:t=>m.decode(new Uint8Array(t))},y={host:"api.browser.yandex.ru",hostVOT:"vot-api.toil.cc/v1",userAgent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 YaBrowser/24.7.0.0 Safari/537.36",componentVersion:"24.7.0.2377",hmac:"bt8xH3VOlb4mqf0nqAibnDOoiPlXsisf",defaultDuration:343},w=new TextEncoder;async function x(t,e,o){const n=await crypto.subtle.importKey("raw",w.encode(e),{name:"HMAC",hash:{name:t}},!1,["sign","verify"]);return await crypto.subtle.sign("HMAC",n,o)}async function S(t){const e=await x("SHA-256",y.hmac,t);return new Uint8Array(e).reduce(((t,e)=>t+e.toString(16).padStart(2,"0")),"")}var k,T;async function L(t,e={headers:{"User-Agent":y.userAgent}}){const{timeout:o=3e3,...n}=e,i=new AbortController,a=setTimeout((()=>i.abort()),o),r=await fetch(t,{signal:i.signal,...n});return clearTimeout(a),r}!function(t){t.custom="custom",t.directlink="custom",t.youtube="youtube",t.piped="piped",t.invidious="invidious",t.vk="vk",t.nine_gag="nine_gag",t.gag="nine_gag",t.twitch="twitch",t.proxitok="proxitok",t.tiktok="tiktok",t.vimeo="vimeo",t.xvideos="xvideos",t.pornhub="pornhub",t.twitter="twitter",t.rumble="rumble",t.facebook="facebook",t.rutube="rutube",t.coub="coub",t.bilibili="bilibili",t.mail_ru="mailru",t.mailru="mailru",t.bitchute="bitchute",t.coursera="coursera",t.udemy="udemy",t.eporner="eporner",t.peertube="peertube",t.dailymotion="dailymotion",t.trovo="trovo",t.yandexdisk="yandexdisk",t.coursehunter="coursehunter",t.ok_ru="okru",t.okru="okru",t.googledrive="googledrive",t.bannedvideo="bannedvideo",t.weverse="weverse",t.newgrounds="newgrounds",t.egghead="egghead",t.youku="youku",t.archive="archive",t.kodik="kodik",t.patreon="patreon",t.reddit="reddit",t.kick="kick",t.apple_developer="apple_developer",t.appledeveloper="apple_developer",t.poketube="poketube",t.epicgames="epicgames",t.nineanimetv="nineanimetv"}(k||(k={})),function(t){t[t.FAILED=0]="FAILED",t[t.FINISHED=1]="FINISHED",t[t.WAITING=2]="WAITING",t[t.LONG_WAITING=3]="LONG_WAITING",t[t.PART_CONTENT=5]="PART_CONTENT",t[t.LONG_WAITING_2=6]="LONG_WAITING_2"}(T||(T={}));const V=["yewtu.be","yt.artemislena.eu","invidious.flokinet.to","iv.melmac.space","inv.nadeko.net","inv.tux.pizza","invidious.private.coffee","yt.drgnz.club","vid.puffyan.us","invidious.dhusch.de"],M=["piped.video","piped.tokhmi.xyz","piped.moomoo.me","piped.syncpundit.io","piped.mha.fi","watch.whatever.social","piped.garudalinux.org","efy.piped.pages.dev","watch.leptons.xyz","piped.lunar.icu","yt.dc09.ru","piped.mint.lgbt","il.ax","piped.privacy.com.de","piped.esmailelbob.xyz","piped.projectsegfau.lt","piped.in.projectsegfau.lt","piped.us.projectsegfau.lt","piped.privacydev.net","piped.palveluntarjoaja.eu","piped.smnz.de","piped.adminforge.de","piped.qdi.fi","piped.hostux.net","piped.chauvet.pro","piped.jotoma.de","piped.pfcd.me","piped.frontendfriendly.xyz"],A=[{additionalData:"mobile",host:k.youtube,url:"https://youtu.be/",match:/^m.youtube.com$/,selector:"shorts-video #player"},{additionalData:"mobile",host:k.youtube,url:"https://youtu.be/",match:/^m.youtube.com$/,selector:".player-container"},{host:k.youtube,url:"https://youtu.be/",match:/^(www.)?youtube(-nocookie|kids)?.com$/,selector:".html5-video-container:not(#inline-player *)"},{host:k.invidious,url:"https://youtu.be/",match:V,selector:"#player"},{host:k.piped,url:"https://youtu.be/",match:M,selector:".shaka-video-container"},{host:k.poketube,url:"https://youtu.be/",match:["poketube.fun","pt.sudovanilla.org","poke.ggtyler.dev","poke.uk2.littlekai.co.uk","poke.blahai.gay"],selector:".video-player-container"},{additionalData:"mobile",host:k.vk,url:"https://vk.com/video?z=",match:/^m.vk.(com|ru)$/,selector:"vk-video-player",shadowRoot:!0},{additionalData:"clips",host:k.vk,url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:'div[data-testid="clipcontainer-video"]'},{host:k.vk,url:"https://vk.com/video?z=",match:/^(www.|m.)?vk.(com|ru)$/,selector:".videoplayer_media"},{host:k.nine_gag,url:"https://9gag.com/gag/",match:/^9gag.com$/,selector:".video-post"},{host:k.twitch,url:"https://twitch.tv/",match:[/^m.twitch.tv$/,/^(www.)?twitch.tv$/,/^clips.twitch.tv$/,/^player.twitch.tv$/],selector:".video-ref, main > div > section > div > div > div"},{host:k.proxitok,url:"https://www.tiktok.com/",match:["proxitok.pabloferreiro.es","proxitok.pussthecat.org","tok.habedieeh.re","proxitok.esmailelbob.xyz","proxitok.privacydev.net","tok.artemislena.eu","tok.adminforge.de","tt.vern.cc","cringe.whatever.social","proxitok.lunar.icu","proxitok.privacy.com.de"],selector:".column.has-text-centered"},{host:k.tiktok,url:"https://www.tiktok.com/",match:/^(www.)?tiktok.com$/,selector:null},{host:k.vimeo,url:"https://vimeo.com/",match:/^vimeo.com$/,selector:".player"},{host:k.vimeo,url:"https://player.vimeo.com/",match:/^player.vimeo.com$/,selector:".player"},{host:k.xvideos,url:"https://www.xvideos.com/",match:/^(www.)?(xvideos|xv-ru).com$/,selector:".video-bg-pic"},{host:k.pornhub,url:"https://rt.pornhub.com/view_video.php?viewkey=",match:/^[a-z]+.pornhub.com$/,selector:".mainPlayerDiv > .video-element-wrapper-js > div"},{additionalData:"embed",host:k.pornhub,url:"https://rt.pornhub.com/view_video.php?viewkey=",match:t=>t.host.includes("pornhub.com")&&t.pathname.startsWith("/embed/"),selector:"#player"},{host:k.twitter,url:"https://twitter.com/i/status/",match:/^(twitter|x).com$/,selector:'div[data-testid="videoComponent"] > div:nth-child(1) > div'},{host:k.rumble,url:"https://rumble.com/",match:/^rumble.com$/,selector:"#videoPlayer > .videoPlayer-Rumble-cls > div"},{host:k.facebook,url:"https://facebook.com/",match:t=>t.host.includes("facebook.com")&&t.pathname.includes("/videos/"),selector:'div[role="main"] div[data-pagelet$="video" i]'},{additionalData:"reels",host:k.facebook,url:"https://facebook.com/",match:t=>t.host.includes("facebook.com")&&t.pathname.includes("/reel/"),selector:'div[role="main"]'},{host:k.rutube,url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:".video-player > div > div > div:nth-child(2)"},{additionalData:"embed",host:k.rutube,url:"https://rutube.ru/video/",match:/^rutube.ru$/,selector:"#app > div > div"},{host:k.bilibili,url:"https://www.bilibili.com/video/",match:/^(www|m|player).bilibili.com$/,selector:".bpx-player-video-wrap",selector:".bpx-player-video-wrap"},{additionalData:"old",host:k.bilibili,url:"https://www.bilibili.com/video/",match:/^(www|m).bilibili.com$/,selector:null},{host:k.mailru,url:"https://my.mail.ru/",match:/^my.mail.ru$/,selector:"#b-video-wrapper"},{host:k.bitchute,url:"https://www.bitchute.com/video/",match:/^(www.)?bitchute.com$/,selector:".video-js"},{host:k.coursera,url:"https://www.coursera.org/",match:/coursera.org$/,selector:".vjs-v6",needExtraData:!0},{host:k.udemy,url:"https://www.udemy.com/",match:/udemy.com$/,selector:'div[data-purpose="curriculum-item-viewer-content"] > section > div > div > div > div:nth-of-type(2)',needExtraData:!0},{host:k.eporner,url:"https://www.eporner.com/",match:/^(www.)?eporner.com$/,selector:".vjs-v7"},{host:k.peertube,url:"stub",match:["peertube.1312.media","tube.shanti.cafe","bee-tube.fr","video.sadmin.io","dalek.zone","review.peertube.biz","peervideo.club","tube.la-dina.net","peertube.tmp.rcp.tf","peertube.su","video.blender.org","videos.viorsan.com","tube-sciences-technologies.apps.education.fr","tube-numerique-educatif.apps.education.fr","tube-arts-lettres-sciences-humaines.apps.education.fr","beetoons.tv","comics.peertube.biz","makertube.net"],selector:".vjs-v7"},{host:k.dailymotion,url:"https://dai.ly/",match:/^geo([\d]+)?.dailymotion.com$/,selector:".player"},{host:k.trovo,url:"https://trovo.live/s/",match:/^trovo.live$/,selector:".player-video"},{host:k.yandexdisk,url:"https://yadi.sk/i/",match:/^disk.yandex.ru$/,selector:".video-player__player > div:nth-child(1)"},{host:k.coursehunter,url:"https://coursehunter.net/course/",match:/^coursehunter.net$/,selector:"#oframeplayer > pjsdiv:nth-of-type(1)",needExtraData:!0},{host:k.okru,url:"https://ok.ru/video/",match:/^ok.ru$/,selector:".html5-vpl_vid"},{host:k.googledrive,url:"https://drive.google.com/file/d/",match:/^youtube.googleapis.com$/,selector:".html5-video-container"},{host:k.bannedvideo,url:"https://madmaxworld.tv/watch?id=",match:/^(www.)?banned.video|madmaxworld.tv$/,selector:".vjs-v7",needExtraData:!0},{host:k.weverse,url:"https://weverse.io/",match:/^weverse.io$/,selector:".webplayer-internal-source-wrapper",needExtraData:!0},{host:k.newgrounds,url:"https://www.newgrounds.com/",match:/^(www.)?newgrounds.com$/,selector:".ng-video-player"},{host:k.egghead,url:"https://egghead.io/",match:/^egghead.io$/,selector:".cueplayer-react-video-holder"},{host:k.youku,url:"https://v.youku.com/",match:/^v.youku.com$/,selector:"#ykPlayer"},{host:k.archive,url:"https://archive.org/details/",match:/^archive.org$/,selector:".jw-media"},{host:k.kodik,url:"stub",match:/^kodik.(info|biz|cc)$/,selector:".fp-player",needExtraData:!0},{host:k.patreon,url:"stub",match:/^(www.)?patreon.com$/,selector:'div[data-tag="post-card"] div[elevation="subtle"] > div > div > div > div',needExtraData:!0},{host:k.reddit,url:"stub",match:/^old.reddit.com$/,selector:".reddit-video-player-root",needExtraData:!0},{host:k.kick,url:"https://kick.com/",match:/^kick.com$/,selector:".vjs-v8",needExtraData:!0},{host:k.appledeveloper,url:"https://developer.apple.com/",match:/^developer.apple.com$/,selector:".developer-video-player",needExtraData:!0},{host:k.epicgames,url:"https://dev.epicgames.com/community/learning/",match:/^dev.epicgames.com$/,selector:".vjs-v7",needExtraData:!0},{host:k.nineanimetv,url:"https://9animetv.to/watch/",match:/^rapid-cloud.co$/,selector:".jw-media",needExtraData:!0},{host:k.custom,url:"stub",match:t=>/([^.]+).mp4/.test(t.pathname),rawResult:!0}],O=["auto","ru","en","zh","ko","lt","lv","ar","fr","it","es","de","ja"],C=["ru","en","kk"],P=JSON.parse('{"__version__":5,"recommended":"recommended","translateVideo":"Translate video","disableTranslate":"Turn off","translationSettings":"Translation settings","subtitlesSettings":"Subtitles settings","about":"About extension","resetSettings":"Reset settings","videoBeingTranslated":"The video is being translated","videoLanguage":"Video language","translationLanguage":"Translation language","translationTake":"The translation will take","translationTakeMoreThanHour":"The translation will take more than an hour","translationTakeAboutMinute":"The translation will take about a minute","translationTakeFewMinutes":"The translation will take a few minutes","translationTakeApproximatelyMinutes":"The translation will take approximately {0} minutes","translationTakeApproximatelyMinute":"The translation will take approximately {0} minutes","unSupportedExtensionError":"Error! {0} is not supported by this version of the extension!\\n\\nPlease use the cloudflare version of the VOT extension.","requestTranslationFailed":"Failed to request video translation","audioNotReceived":"Audio link not received","grantPermissionToAutoPlay":"Grant permission to autoplay","audioFormatNotSupported":"The audio format is not supported","VOTAutoTranslate":"Translate on open","VOTDontTranslateYourLang":"Do not translate from my language","VOTVolume":"Video volume","VOTVolumeTranslation":"Translation Volume","VOTAutoSetVolume":"Reduce video volume to ","VOTShowVideoSlider":"Video volume slider","VOTSyncVolume":"Link translation and video volume","VOTAudioProxy":"Proxy received audio","VOTDisableFromYourLang":"You have disabled the translation of the video in your language","VOTLiveNotSupported":"Translation of live streams is not supported","VOTPremiere":"Wait for the premiere to end before translating","VOTVideoIsTooLong":"Video is too long","VOTNoVideoIDFound":"No video ID found","VOTSubtitles":"Subtitles","VOTSubtitlesDisabled":"Disabled","VOTSubtitlesMaxLength":"Subtitles max length","VOTHighlightWords":"Highlight words","VOTTranslatedFrom":"translated from","VOTAutogenerated":"autogenerated","VOTSettings":"VOT Settings","VOTMenuLanguage":"Menu language","VOTAuthors":"Authors","VOTVersion":"Version","VOTLoader":"Loader","VOTBrowser":"Browser","VOTShowPiPButton":"Show PiP button","langs":{"auto":"Auto","af":"Afrikaans","ak":"Akan","sq":"Albanian","am":"Amharic","ar":"Arabic","hy":"Armenian","as":"Assamese","ay":"Aymara","az":"Azerbaijani","bn":"Bangla","eu":"Basque","be":"Belarusian","bho":"Bhojpuri","bs":"Bosnian","bg":"Bulgarian","my":"Burmese","ca":"Catalan","ceb":"Cebuano","zh":"Chinese","zh-Hans":"Chinese (Simplified)","zh-Hant":"Chinese (Traditional)","co":"Corsican","hr":"Croatian","cs":"Czech","da":"Danish","dv":"Divehi","nl":"Dutch","en":"English","eo":"Esperanto","et":"Estonian","ee":"Ewe","fil":"Filipino","fi":"Finnish","fr":"French","gl":"Galician","lg":"Ganda","ka":"Georgian","de":"German","el":"Greek","gn":"Guarani","gu":"Gujarati","ht":"Haitian Creole","ha":"Hausa","haw":"Hawaiian","iw":"Hebrew","hi":"Hindi","hmn":"Hmong","hu":"Hungarian","is":"Icelandic","ig":"Igbo","id":"Indonesian","ga":"Irish","it":"Italian","ja":"Japanese","jv":"Javanese","kn":"Kannada","kk":"Kazakh","km":"Khmer","rw":"Kinyarwanda","ko":"Korean","kri":"Krio","ku":"Kurdish","ky":"Kyrgyz","lo":"Lao","la":"Latin","lv":"Latvian","ln":"Lingala","lt":"Lithuanian","lb":"Luxembourgish","mk":"Macedonian","mg":"Malagasy","ms":"Malay","ml":"Malayalam","mt":"Maltese","mi":"Māori","mr":"Marathi","mn":"Mongolian","ne":"Nepali","nso":"Northern Sotho","no":"Norwegian","ny":"Nyanja","or":"Odia","om":"Oromo","ps":"Pashto","fa":"Persian","pl":"Polish","pt":"Portuguese","pa":"Punjabi","qu":"Quechua","ro":"Romanian","ru":"Russian","sm":"Samoan","sa":"Sanskrit","gd":"Scottish Gaelic","sr":"Serbian","sn":"Shona","sd":"Sindhi","si":"Sinhala","sk":"Slovak","sl":"Slovenian","so":"Somali","st":"Southern Sotho","es":"Spanish","su":"Sundanese","sw":"Swahili","sv":"Swedish","tg":"Tajik","ta":"Tamil","tt":"Tatar","te":"Telugu","th":"Thai","ti":"Tigrinya","ts":"Tsonga","tr":"Turkish","tk":"Turkmen","uk":"Ukrainian","ur":"Urdu","ug":"Uyghur","uz":"Uzbek","vi":"Vietnamese","cy":"Welsh","fy":"Western Frisian","xh":"Xhosa","yi":"Yiddish","yo":"Yoruba","zu":"Zulu"},"udemyModuleArgsNotFound":"Could not get udemy module data due to the fact that ModuleArgs was not found","VOTTranslationHelpNull":"Could not get the data required for the translate","streamNoConnectionToServer":"There is no connection to the server","searchField":"Search...","VOTTranslateAPIErrors":"Translate errors from the API","VOTTranslationService":"Translation Service","VOTDetectService":"Detect Service","VOTTranslatingError":"Translating the error","VOTProxyWorkerHost":"Enter the proxy worker address","VOTM3u8ProxyHost":"Enter the address of the m3u8 proxy worker","proxySettings":"Proxy Settings","translationTakeApproximatelyMinute2":"The translation will take approximately {0} minutes","VOTAudioBooster":"Extended translation volume increase","VOTMediaCSPError":"Failed to load audio (media csp error)","VOTSubtitlesDesign":"Subtitles design","VOTSubtitlesFontSize":"Font size of subtitles","VOTSubtitlesOpacity":"Transparency of the subtitle background","VOTPressNewHotkey":"Press the new hotkey...","VOTCreateTranslationHotkey":"Create Hotkey for Translation","VOTChangeHotkeyWithCurrent":"Change Hotkey (Current: {0})"}'),I={log:(...t)=>console.log("%c[VOT DEBUG]","background: #F2452D; color: #fff; padding: 5px;",...t)},E=I,_=new class{constructor(){this.gmSupport="function"==typeof GM_getValue,E.log(`GM Storage Status: ${this.gmSupport}`)}syncGet(t,e=void 0,o=!1){if(this.gmSupport)return GM_getValue(t,e);const n=window.localStorage.getItem(t)??e;return o?Number(n):n}async get(t,e=void 0,o=!1){return this.gmSupport?await GM_getValue(t,e):Promise.resolve(this.syncGet(t,e,o))}syncSet(t,e){return this.gmSupport?GM_setValue(t,e):window.localStorage.setItem(t,e)}async set(t,e){return this.gmSupport?await GM_setValue(t,e):Promise.resolve(this.syncSet(t,e))}syncDelete(t){return this.gmSupport?GM_deleteValue(t):window.localStorage.removeItem(t)}async delete(t){return this.gmSupport?await GM_deleteValue(t):Promise.resolve(this.syncDelete(t))}syncList(){return this.gmSupport?GM_listValues():["autoTranslate","dontTranslateLanguage","dontTranslateYourLang","autoSetVolumeYandexStyle","autoVolume","buttonPos","showVideoSlider","syncVolume","subtitlesMaxLength","highlightWords","responseLanguage","defaultVolume","audioProxy","showPiPButton","translateAPIErrors","translationService","detectService","m3u8ProxyHost","translateProxyEnabled","hotkeyButton","proxyWorkerHost","audioBooster","locale-version","locale-lang","locale-phrases"]}async list(){return this.gmSupport?await GM_listValues():Promise.resolve(this.syncList())}},$=navigator.language||navigator.userLanguage,R=$?.substr(0,2)?.toLowerCase()??"en";function N(t){return t.toLowerCase().split(/[_;-]/)[0].trim()}function B(){return"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled}function D(){return"undefined"!=typeof Hls&&Hls?.isSupported()?new Hls({debug:!0,lowLatencyMode:!0,backBufferLength:90}):void 0}const F=new RegExp([/(?:https?|ftp):\/\/\S+/g,/https?:\/\/\S+|www\.\S+/gm,/\b\S+\.\S+/gm,/#[^\s#]+/g,/Auto-generated by YouTube/g,/Provided to YouTube by/g,/Released on/g,/0x[a-fA-F0-9]{40}/g,/[13][a-km-zA-HJ-NP-Z1-9]{25,34}/g,/4[0-9AB][1-9A-HJ-NP-Za-km-z]{93}/g,/Paypal/g].map((t=>t.source)).join("|"));async function q(t,e={}){const{timeout:o=15e3,...n}=e,i=new AbortController,a=setTimeout((()=>i.abort()),o);try{if(t.includes("api.browser.yandex.ru"))throw new Error("Preventing yandex cors");const e=await fetch(t,{signal:i.signal,...n});return clearTimeout(a),e}catch(e){return E.log("GM_fetch preventing cors by GM_xmlhttpRequest",e.message),new Promise(((e,i)=>{clearTimeout(a),GM_xmlhttpRequest({method:n.method||"GET",url:t,responseType:"blob",...n,data:n.body,timeout:o,onload:t=>{const o=Object.fromEntries(t.responseHeaders.trim().split(/\r?\n/).map((t=>t.split(/: (.+)/))).filter((([t])=>t&&/^[\w-]+$/.test(t))));e(new Response(t.response,{status:t.status,headers:o}))},ontimeout:()=>i(new Error("Timeout")),onerror:t=>i(t),onabort:()=>i(new Error("AbortError"))})}))}}const H=["auto","en","ru","af","am","ar","az","bg","bn","bs","ca","cs","cy","da","de","el","es","et","eu","fa","fi","fr","gl","hi","hr","hu","hy","id","it","ja","jv","kk","km","kn","ko","lo","mk","ml","mn","ms","mt","my","ne","nl","pa","pl","pt","ro","si","sk","sl","sq","sr","su","sv","sw","tr","uk","ur","uz","vi","zh","zu"],z=new class{lang="en";locale={};gmValues=["locale-phrases","locale-lang","locale-version","locale-lang-override"];constructor(){const t=_.syncGet("locale-lang-override","auto");this.lang=t&&"auto"!==t?t:(navigator.language||navigator.userLanguage)?.substr(0,2)?.toLowerCase()??"en",this.setLocaleFromJsonString(_.syncGet("locale-phrases",""))}reset(){for(let t=0;t{if("object"==typeof t&&t)return t[e]}),t);return void 0===o&&console.warn("[VOT] [localizationProvider] locale",t,"doesn't contain key",e),o}getDefault(t){return this.getFromLocale(P,t)??t}get(t){return this.getFromLocale(this.locale,t)??this.getFromLocale(P,t)??t}};class U extends Error{constructor(t){super(t),this.name="VideoHelper",this.message=t}}class W{API_ORIGIN="https://my.mail.ru/";async getVideoData(t){try{const e=await L(`${this.API_ORIGIN}+/video/meta/${t}?xemail=&ajax_call=1&func_name=&mna=&mnb=&ext=1&_=${(new Date).getTime()}`);return await e.json()}catch(t){return void console.error("Failed to get mail.ru video info",t.message)}}}class G{API_ORIGIN="https://global.apis.naver.com/weverse/wevweb";API_APP_ID="be4d79eb8fc7bd008ee82c8ec4ff6fd4";API_HMAC_KEY="1b9cb6378d959b45714bec49971ade22e6e24e42";HEADERS={Accept:"application/json, text/plain, */*",Origin:"https://weverse.io",Referer:"https://weverse.io/"};getURLData(){return{appId:this.API_APP_ID,language:"en",os:"WEB",platform:"WEB",wpf:"pc"}}async createHash(t){const e=Date.now(),o=t.substring(0,Math.min(255,t.length))+e,n=await async function(t,e){try{const o=w.encode(e),n=await x("SHA-1",t,o);return btoa(String.fromCharCode(...new Uint8Array(n)))}catch(t){return console.error(t),!1}}(this.API_HMAC_KEY,o);if(!n)throw new U("Failed to get weverse HMAC signature");return{wmsgpad:e.toString(),wmd:n}}async getHashURLParams(t){const e=await this.createHash(t);return new URLSearchParams(e).toString()}async getPostPreview(t){const e=`/post/v1.0/post-${t}/preview?`+new URLSearchParams({fieldSet:"postForPreview",...this.getURLData()}).toString();try{const t=await this.getHashURLParams(e),o=await L(this.API_ORIGIN+e+"&"+t,{headers:this.HEADERS});return await o.json()}catch(e){return console.error(`Failed to get weverse post preview by postId: ${t}`,e.message),!1}}async getVideoInKey(t){const e=`/video/v1.1/vod/${t}/inKey?`+new URLSearchParams({gcc:"RU",...this.getURLData()}).toString();try{const t=await this.getHashURLParams(e),o=await L(this.API_ORIGIN+e+"&"+t,{method:"POST",headers:this.HEADERS});return await o.json()}catch(e){return console.error(`Failed to get weverse InKey by videoId: ${t}`,e.message),!1}}async getVideoInfo(t,e,o){const n=Date.now();try{const i=new URLSearchParams({key:e,sid:o,nonce:n.toString(),devt:"html5_pc",prv:"N",aup:"N",stpb:"N",cpl:"en",env:"prod",lc:"en",adi:JSON.stringify([{adSystem:null}]),adu:"/"}).toString(),a=await L(`https://global.apis.naver.com/rmcnmv/rmcnmv/vod/play/v2.0/${t}?`+i,{headers:this.HEADERS});return await a.json()}catch(n){return console.error(`Failed to get weverse video info (infraVideoId: ${t}, inkey: ${e}, serviceId: ${o}`,n.message),!1}}extractVideoInfo(t){return t.find((t=>!1===t.useP2P&&t.source.includes(".mp4")))}async getVideoData(t){const e=await this.getPostPreview(t);if(!e)return;const{videoId:o,serviceId:n,infraVideoId:i}=e.extension.video;if(!(o&&n&&i))return;const a=await this.getVideoInKey(o);if(!a)return;const r=await this.getVideoInfo(i,a.inKey,n);if(!r)return;const s=this.extractVideoInfo(r.videos.list);return s?{url:s.source,duration:s.duration}:void 0}}class j{API_ORIGIN=window.location.origin;async getSecureData(t){try{const e=this.API_ORIGIN+t,o=await L(e,{headers:{"User-Agent":y.userAgent,Origin:this.API_ORIGIN,Referer:this.API_ORIGIN}}),n=await o.text(),[i,a,r]=t.split("/").filter((t=>t)),s=(new DOMParser).parseFromString(n,"text/html"),l=Array.from(s.getElementsByTagName("script")).filter((t=>t.innerHTML.includes(`videoId = "${a}"`)));if(!l.length)throw new U("Failed to find secure script");const d=/'{[^']+}'/.exec(l[0].textContent.trim())?.[0];if(!d)throw new U("Secure json wasn't found in secure script");const u=JSON.parse(d.replaceAll("'",""));return{videoType:i,videoId:a,hash:r,...u}}catch(e){return console.error(`Failed to get kodik secure data by videoPath: ${t}.`,e.message),!1}}async getFtor(t){const{videoType:e,videoId:o,hash:n,d:i,d_sign:a,pd:r,pd_sign:s,ref:l,ref_sign:d}=t;try{const t=await L(this.API_ORIGIN+"/ftor",{method:"POST",headers:{"User-Agent":y.userAgent,Origin:this.API_ORIGIN,Referer:`${this.API_ORIGIN}/${e}/${o}/${n}/360p`},body:new URLSearchParams({d:i,d_sign:a,pd:r,pd_sign:s,ref:decodeURIComponent(l),ref_sign:d,bad_user:"false",cdn_is_working:"true",info:"{}",type:e,hash:n,id:o})});return await t.json()}catch(t){return console.error(`Failed to get kodik video data (type: ${e}, id: ${o}, hash: ${n})`,t.message),!1}}decryptUrl(t){return"https:"+atob(t.replace(/[a-zA-Z]/g,(function(t){const e=t.charCodeAt(0)+13;return String.fromCharCode((t<="Z"?90:122)>=e?e:e-26)})))}async getVideoData(t){const e=await this.getSecureData(t);if(!e)return;const o=await this.getFtor(e);if(!o)return;const n=Object.entries(o.links[o.default.toString()]),i=n.find((([t,e])=>"application/x-mpegURL"===e.type))?.[1];return i?{url:this.decryptUrl(i.src)}:void 0}}class Y{async getPosts(t){try{const e=await L(`https://www.patreon.com/api/posts/${t}?json-api-use-default-includes=false`);return await e.json()}catch(e){return console.error(`Failed to get patreon posts by postId: ${t}.`,e.message),!1}}async getVideoData(t){const e=await this.getPosts(t);if(!e)return;const o=e.data.attributes.post_file.url;return o?{url:o}:void 0}}class J{async getVideoData(){const t=document.querySelector("[data-hls-url]")?.dataset.hlsUrl.replaceAll("&","&");if(t)return{url:decodeURIComponent(t)}}}class K{async getVideoInfo(t){try{const e=await L("https://api.banned.video/graphql",{method:"POST",body:JSON.stringify({operationName:"GetVideo",query:"query GetVideo($id: String!) {\n getVideo(id: $id) {\n title\n description: summary\n duration: videoDuration\n videoUrl: directUrl\n isStream: live\n }\n }",variables:{id:t}}),headers:{"User-Agent":"bannedVideoFrontEnd","apollographql-client-name":"banned-web","apollographql-client-version":"1.3","content-type":"application/json"}});return await e.json()}catch(e){return console.error(`Failed to get bannedvideo video info by videoId: ${t}.`,e.message),!1}}async getVideoData(t){const e=await this.getVideoInfo(t);if(!e)return!1;const{videoUrl:o,duration:n,isStream:i,description:a,title:r}=e.data.getVideo;return{url:o,duration:n,isStream:i,title:r,description:a}}}class Z{async getClipInfo(t){try{const e=await L(`https://kick.com/api/v2/clips/${t}`);return await e.json()}catch(e){return console.error(`Failed to get kick clip info by clipId: ${t}.`,e.message),!1}}async getVideoData(t){if(!t.startsWith("clip_"))return{url:A.find((t=>t.host===k.kick)).url+t};const e=await this.getClipInfo(t);if(!e)return!1;const{clip_url:o,duration:n,title:i}=e.clip;return{url:o,duration:n,title:i}}}class Q{API_ORIGIN="https://www.udemy.com/api-2.0";getModuleData(){const t=document.querySelector(".ud-app-loader[data-module-id='course-taking']")?.dataset?.moduleArgs;return t?JSON.parse(t):(console.error(z.get("udemyModuleArgsNotFound")),{})}getLectureId(){return/learn\/lecture\/([^/]+)/.exec(window.location.pathname)?.[1]}async getLectureData(t,e){const o=await q(`${this.API_ORIGIN}/users/me/subscribed-courses/${t}/lectures/${e}/?`+new URLSearchParams({"fields[lecture]":"title,description,asset","fields[asset]":"length,media_sources,captions"}));return await o.json()}async getCourseLang(t){const e=await q(`${this.API_ORIGIN}/users/me/subscribed-courses/${t}?`+new URLSearchParams({"fields[course]":"locale"}));return await e.json()}findVideoUrl(t){return t?.find((t=>"video/mp4"===t.type))?.src}findSubtitleUrl(t,e){let o=t?.find((t=>N(t.locale_id)===e));return o||(o=t?.find((t=>"en"===N(t.locale_id)))??t?.[0]),o?.url}async getVideoData(t){const{courseId:e}=this.getModuleData();if(!e)return!1;const o=this.getLectureId();if(E.log(`[Udemy] courseId: ${e}, lectureId: ${o}`),!o)return!1;const{title:n,description:i,asset:a}=await this.getLectureData(e,o),{length:r,media_sources:s,captions:l}=a,d=this.findVideoUrl(s);if(!d)return console.log("Failed to find .mp4 video file in media_sources",s),!1;const u=await this.getCourseLang(e);let{locale:{locale:c}}=u;c=c?N(c):"en",O.includes(c)||(c="en");const h=this.findSubtitleUrl(l,c);return h||console.log("Failed to find subtitle file in captions",l),{...h?{url:A.find((t=>t.host===k.udemy)).url+t,translationHelp:[{target:"subtitles_file_url",targetUrl:h},{target:"video_file_url",targetUrl:d}],detectedLanguage:c}:{url:d,translationHelp:null},duration:r,title:n,description:i}}}class X{API_ORIGIN="https://coursehunter.net/api/v1";async getLessonsData(t){const e=await q(`${this.API_ORIGIN}/course/${t}/lessons`);return await e.json()}async getVideoData(){const t=window.course_id??+document.querySelector('input[name="course_id"]')?.value,e=window.lessons??await this.getLessonsData(t),o=+document.querySelector(".lessons-item_active")?.dataset?.index||1,n=e?.[o-1],{file:i,duration:a,title:r}=n;return!!i&&{url:i,duration:a,title:r}}}class tt{async getVideoData(t){const e=document.querySelector("meta[property='og:video']")?.content;if(e)return{url:e}}}class et{API_ORIGIN="https://www.coursera.org/api";async getCourseData(t){const e=await q(`${this.API_ORIGIN}/onDemandCourses.v1/${t}`),o=await e.json();return o?.elements?.[0]}getPlayer(){return document.querySelector(".vjs-v6")}getPlayerData(){return this.getPlayer()?.player}findVideoUrl(t){return t?.find((t=>"video/mp4"===t.type))?.src}findSubtitleUrl(t,e){let o=t?.find((t=>N(t.srclang)===e));return o||(o=t?.find((t=>"en"===N(t.srclang)))||t?.[0]),o?.src}async getVideoData(t){const e=this.getPlayerData(),{duration:o}=e?.cache_||{},{courseId:n,tracks:i,sources:a}=e?.options_||{},r=this.findVideoUrl(a);if(!r)return console.log("Failed to find .mp4 video file in sources",a),!1;const{primaryLanguageCodes:s}=await this.getCourseData(n);let l=s?.[0];l=l?N(l):"en",O.includes(l)||(l="en");const d=this.findSubtitleUrl(i,l);return d||console.log("Failed to find subtitle file in tracks",i),{...d?{url:A.find((t=>t.host===k.coursera)).url+t,translationHelp:[{target:"subtitles_file_url",targetUrl:d},{target:"video_file_url",targetUrl:r}],detectedLanguage:l}:{url:r,translationHelp:null},duration:o}}}class ot{API_ORIGIN="https://dev.epicgames.com/community/api/learning";async getPostInfo(t){try{const e=await L(`${this.API_ORIGIN}/post.json?hash_id=${t}`);return await e.json()}catch(e){return console.error(`Failed to get post info by videoId: ${t}.`,e.message),!1}}async getVideoData(t){const e=await this.getPostInfo(t);if(!e)return;const o=e.blocks.find((t=>"video"===t.type))?.video_url?.replace("qsep://","https://");return o?{url:o}:void 0}}class nt{API_ORIGIN="https://9animetv.to/ajax/episode";RAPID_CLOUD_ORIGIN="https://rapid-cloud.co/ajax/embed-6-v2";async getSourceId(t){try{const e=await q(`${this.API_ORIGIN}/servers?episodeId=${t}`),o=await e.json();return!!o.html&&/data-id="(\d+)"/.exec(o.html)?.[1]}catch(e){return console.error(`Failed to get 9animetv servers info by episodeId: ${t}.`,e.message),!1}}async getPlayerLink(t){try{const e=await q(`${this.API_ORIGIN}/sources?id=${t}`),o=await e.json();return!!o.link.includes("rapid-cloud.co")&&o.link}catch(e){return console.error(`Failed to get player link by sourceId: ${t}.`,e.message),!1}}async getRapidCloudData(t){try{const e=await q(`${this.RAPID_CLOUD_ORIGIN}/getSources?id=${t}`),o=await e.json();return o.encrypted?(console.warn("Encrypted RapidCloud data found. Let us know about it",o),!1):o}catch(e){return console.error(`Failed to get rapid cloud data by rapidId: ${t}.`,e.message),!1}}async getVideoData(t){const e=t.split("?ep=")[1],o=await this.getSourceId(e);if(!o)return;const n=await this.getPlayerLink(o);if(!n)return;const i=/\/([^/?]+)\?/.exec(n)?.[1];if(!i)return;const a=await this.getRapidCloudData(i);if(!a)return;const r=a.sources.find((t=>"hls"===t.type))?.file;return r?{url:r}:void 0}}class it{static[k.mailru]=new W;static[k.weverse]=new G;static[k.kodik]=new j;static[k.patreon]=new Y;static[k.reddit]=new J;static[k.bannedvideo]=new K;static[k.kick]=new Z;static[k.udemy]=new Q;static[k.coursehunter]=new X;static[k.coursera]=new et;static[k.appledeveloper]=new tt;static[k.epicgames]=new ot;static[k.nineanimetv]=new nt}class at extends Error{constructor(t){super(t),this.name="VideoDataError",this.message=t}}async function rt(t,e){const o=new URL(window.location.href);switch(t.host){case k.custom:return o.href;case k.piped:case k.poketube:case k.invidious:case k.youtube:return"youtu.be"===o.hostname&&(o.search=`?v=${o.pathname.replace("/","")}`,o.pathname="/watch"),/(?:watch|embed|shorts|live)\/([^/]+)/.exec(o.pathname)?.[1]??o.searchParams.get("v");case k.vk:{const t=/^\/(video|clip)-?\d{8,9}_\d{9}$/.exec(o.pathname),n=o.searchParams.get("z"),i=o.searchParams.get("oid"),a=o.searchParams.get("id");if(t)return t[0].slice(1);if(n)return n.split("/")[0];if(i&&a)return`video-${Math.abs(parseInt(i))}_${a}`;const r=e.parentElement?.closest(".video_box_wrap");return r?r.id.replace("video_box_wrap","video"):null}case k.nine_gag:case k.gag:return/gag\/([^/]+)/.exec(o.pathname)?.[1];case k.twitch:{const t=/([^/]+)\/(?:clip)\/([^/]+)/.exec(o.pathname),e=/^clips\.twitch\.tv$/.test(o.hostname);if(/^m\.twitch\.tv$/.test(o.hostname))return/videos\/([^/]+)/.exec(o.href)?.[0]??o.pathname.slice(1);if(/^player\.twitch\.tv$/.test(o.hostname))return`videos/${o.searchParams.get("video")}`;if(e){const t=document.querySelector("script[type='application/ld+json']"),e=o.pathname.slice(1);if(t){const o=JSON.parse(t.innerText),n=o["@graph"].find((t=>"VideoObject"===t["@type"]))?.creator.url;return`${n.replace("https://www.twitch.tv/","")}/clip/${e}`}const n="embed"===e,i=document.querySelector(n?".tw-link[data-test-selector='stream-info-card-component__stream-avatar-link']":".clips-player a:not([class])");if(!i)return;return`${i.href.replace("https://www.twitch.tv/","")}/clip/${n?o.searchParams.get("clip"):e}`}return t?t[0]:/(?:videos)\/([^/]+)/.exec(o.pathname)?.[0]}case k.proxitok:case k.tiktok:return/([^/]+)\/video\/([^/]+)/.exec(o.pathname)?.[0];case k.vimeo:{const t=o.searchParams.get("app_id"),e=/[^/]+\/[^/]+$/.exec(o.pathname)?.[0]??/[^/]+$/.exec(o.pathname)?.[0];return t?`${e}?app_id=${t}`:e}case k.xvideos:return/[^/]+\/[^/]+$/.exec(o.pathname)?.[0];case k.pornhub:return o.searchParams.get("viewkey")??/embed\/([^/]+)/.exec(o.pathname)?.[1];case k.twitter:return/status\/([^/]+)/.exec(o.pathname)?.[1];case k.rumble:case k.facebook:return o.pathname.slice(1);case k.rutube:return/(?:video|embed)\/([^/]+)/.exec(o.pathname)?.[1];case k.bilibili:{const t=o.searchParams.get("bvid");if(t)return t;let e=/video\/([^/]+)/.exec(o.pathname)?.[1];return e&&null!==o.searchParams.get("p")&&(e+=`/?p=${o.searchParams.get("p")}`),e}case k.mailru:{const t=o.pathname;if(/\/(v|mail|bk|inbox)\//.exec(t))return t.slice(1);const e=/video\/embed\/([^/]+)/.exec(t)?.[1];if(!e)return null;const n=await it.mailru.getVideoData(e);return n?n.meta.url.replace("//my.mail.ru/",""):null}case k.bitchute:return/(video|embed)\/([^/]+)/.exec(o.pathname)?.[2];case k.coursera:return/learn\/([^/]+)\/lecture\/([^/]+)/.exec(o.pathname)?.[0];case k.udemy:return o.pathname.slice(1);case k.eporner:return/video-([^/]+)\/([^/]+)/.exec(o.pathname)?.[0];case k.peertube:return/\/w\/([^/]+)/.exec(o.pathname)?.[0];case k.dailymotion:{const t=Array.from(document.querySelectorAll("*")).filter((t=>t.innerHTML.trim().includes(".m3u8")));try{let e=t[1].lastChild.src;return/\/video\/(\w+)\.m3u8/.exec(e)?.[1]}catch(t){return console.error("[VOT]",t),!1}}case k.trovo:{const t=o.searchParams.get("vid");if(!t)return null;const e=/([^/]+)\/([\d]+)/.exec(o.pathname)?.[0];return e?`${e}?vid=${t}`:null}case k.yandexdisk:return/\/i\/([^/]+)/.exec(o.pathname)?.[1];case k.coursehunter:{const t=/\/course\/([^/]+)/.exec(o.pathname)?.[1];return!!t&&t+o.search}case k.okru:return/\/video\/(\d+)/.exec(o.pathname)?.[1];case k.googledrive:return o.searchParams.get("docid");case k.bannedvideo:return o.searchParams.get("id");case k.weverse:return/([^/]+)\/(live|media)\/([^/]+)/.exec(o.pathname)?.[3];case k.newgrounds:return/([^/]+)\/(view)\/([^/]+)/.exec(o.pathname)?.[0];case k.egghead:return o.pathname.slice(1);case k.youku:return/v_show\/id_[\w=]+/.exec(o.pathname)?.[0];case k.archive:return/(details|embed)\/([^/]+)/.exec(o.pathname)?.[2];case k.kodik:return/\/(seria|video)\/([^/]+)\/([^/]+)\/([\d]+)p/.exec(o.pathname)?.[0];case k.patreon:{const t=/posts\/([^/]+)/.exec(o.pathname)?.[1];if(!t)return;return t.replace(/[^\d.]/g,"")}case k.reddit:return/\/r\/(([^/]+)\/([^/]+)\/([^/]+)\/([^/]+))/.exec(o.pathname)?.[1];case k.kick:{const t=/video\/([^/]+)/.exec(o.pathname)?.[0];if(t)return t;const e=o.searchParams.get("clip");if(e)return e;const n=document.getElementById("clip-video-player");return/clip_([^/]+)/.exec(n?.getAttribute("poster"))?.[0]}case k.appledeveloper:return/videos\/play\/([^/]+)\/([\d]+)/.exec(o.pathname)?.[0];case k.epicgames:return/\/(\w{4})\/[^/]+$/.exec(o.pathname)?.[1];case k.nineanimetv:return new Promise((t=>{const e="https://9animetv.to";window.addEventListener("message",(o=>{o.origin===e&&o.data?.startsWith("getVideoId:")&&t(o.data.replace("getVideoId:"))})),window.top.postMessage("getVideoId",e)}));default:return}}async function st(t,e){const o=await rt(t,e);if(!o)throw new at(`Entered unsupported link: "${t.host}"`);if(t.host===k.peertube&&(t.url=window.location.origin),t.rawResult)return{url:o,videoId:o,host:t.host,duration:void 0};if(!t.needExtraData)return{url:t.url+o,videoId:o,host:t.host,duration:void 0};const n=await it[t.host].getVideoData(o);if(!n)throw new at(`Failed to get video raw url for ${t.host}`);return{...n,videoId:o,host:t.host}}class lt extends Error{constructor(t){super(z.getDefault(t)),this.name="VOTLocalizedError",this.unlocalizedMessage=t,this.localizedMessage=z.get(t)}}const{rE:dt}={rE:"1.0.5"};class ut extends Error{data;constructor(t,e=void 0){super(t),this.data=e,this.name="VOTJSError",this.message=t}}class ct{host;hostVOT;schema;schemaVOT;fetch;fetchOpts;getVideoDataFn;sessions={};requestLang;responseLang;userAgent=y.userAgent;componentVersion=y.componentVersion;paths={videoTranslation:"/video-translation/translate",videoSubtitles:"/video-subtitles/get-subtitles",streamPing:"/stream-translation/ping-stream",streamTranslation:"/stream-translation/translate-stream",createSession:"/session/create"};isCustomLink(t){return!!(/\.(m3u8|m4(a|v)|mpd)/.exec(t)??/^https:\/\/cdn\.qstv\.on\.epicgames\.com/.exec(t))}headers={"User-Agent":this.userAgent,Accept:"application/x-protobuf","Accept-Language":"en","Content-Type":"application/x-protobuf",Pragma:"no-cache","Cache-Control":"no-cache","Sec-Fetch-Mode":"no-cors"};headersVOT={"User-Agent":`vot.js/${dt}`,"Content-Type":"application/json",Pragma:"no-cache","Cache-Control":"no-cache"};constructor({host:t=y.host,hostVOT:e=y.hostVOT,fetchFn:o=L,fetchOpts:n={},getVideoDataFn:i=st,requestLang:a="en",responseLang:r="ru",headers:s={}}={}){const l=/(http(s)?):\/\//,d=l.exec(t)?.[1];this.host=d?t.replace(`${d}://`,""):t,this.schema=d??"https";const u=l.exec(e)?.[1];this.hostVOT=u?e.replace(`${u}://`,""):e,this.schemaVOT=u??"https",this.fetch=o,this.fetchOpts=n,this.getVideoDataFn=i,this.requestLang=a,this.responseLang=r,this.headers={...this.headers,...s}}getOpts(t,e={}){return{method:"POST",headers:{...this.headers,...e},body:t,...this.fetchOpts}}async request(t,e,o={}){const n=this.getOpts(new Blob([e]),o);try{const e=await this.fetch(`${this.schema}://${this.host}${t}`,n),o=await e.arrayBuffer();return{success:200===e.status,data:o}}catch(t){return{success:!1,data:t?.message}}}async requestVOT(t,e,o={}){const n=this.getOpts(JSON.stringify(e),{...this.headersVOT,...o});try{const e=await this.fetch(`${this.schemaVOT}://${this.hostVOT}${t}`,n),o=await e.json();return{success:200===e.status,data:o}}catch(t){return{success:!1,data:t?.message}}}async getSession(t){const e=Math.floor(Date.now()/1e3),o=this.sessions[t];if(o&&o.timestamp+o.expires>e)return o;const{secretKey:n,expires:i,uuid:a}=await this.createSession(t);return this.sessions[t]={secretKey:n,expires:i,timestamp:e,uuid:a},this.sessions[t]}async translateVideoYAImpl({videoData:t,requestLang:e=this.requestLang,responseLang:o=this.responseLang,translationHelp:n=null,headers:i={}}){const{url:a,duration:r=y.defaultDuration}=t,{secretKey:s,uuid:l}=await this.getSession("video-translation"),d=f.encodeTranslationRequest(a,r,e,o,n),u=await S(d),c=await this.request(this.paths.videoTranslation,d,{"Vtrans-Signature":u,"Sec-Vtrans-Sk":s,"Sec-Vtrans-Token":`${u}:${l}:${this.paths.videoTranslation}:${this.componentVersion}`,...i});if(!c.success)throw new lt("requestTranslationFailed");const h=f.decodeTranslationResponse(c.data);switch(h.status){case T.FAILED:throw h?.message?new ut("Yandex couldn't translate video",h):new lt("requestTranslationFailed");case T.FINISHED:case T.PART_CONTENT:if(!h.url)throw new lt("audioNotReceived");return{translated:!0,url:h.url,remainingTime:h.remainingTime??-1};case T.WAITING:return{translated:!1,remainingTime:h.remainingTime};case T.LONG_WAITING:case T.LONG_WAITING_2:return{translated:!1,remainingTime:h.remainingTime??-1};default:throw console.error("[vot.js] Unknown response",h),new ut("Unknown response from Yandex",h)}}async translateVideoVOTImpl({url:t,videoId:e,service:o,requestLang:n=this.requestLang,responseLang:i=this.responseLang,headers:a={}}){const r=function(t,e,o){return t===k.patreon?{service:"mux",videoId:new URL(o).pathname.slice(1)}:{service:t,videoId:e}}(o,e,t),s=await this.requestVOT(this.paths.videoTranslation,{provider:"yandex",service:r.service,videoId:r.videoId,fromLang:n,toLang:i,rawVideo:t},a);if(!s.success)throw new lt("requestTranslationFailed",s);const l=s.data;switch(E.log("requestTranslation",l),l.status){case"failed":throw new ut("Yandex couldn't translate video",l);case"success":if(!l.translatedUrl)throw new lt("audioNotReceived");return{translated:!0,url:l.translatedUrl,remainingTime:-1};case"waiting":return{translated:!1,remainingTime:l.remainingTime,message:l.message}}}async translateVideo({videoData:t,requestLang:e=this.requestLang,responseLang:o=this.responseLang,translationHelp:n=null,headers:i={}}){const{url:a,videoId:r,host:s}=t;return this.isCustomLink(a)?await this.translateVideoVOTImpl({url:a,videoId:r,service:s,requestLang:e,responseLang:o,headers:i}):await this.translateVideoYAImpl({videoData:t,requestLang:e,responseLang:o,translationHelp:n,headers:i})}async getSubtitles({videoData:t,requestLang:e=this.requestLang,headers:o={}}){const{url:n}=t;if(this.isCustomLink(n))throw new lt("Unsupported video URL for getting subtitles");const{secretKey:i,uuid:a}=await this.getSession("video-translation"),r=f.encodeSubtitlesRequest(n,e),s=await S(r),l=await this.request(this.paths.videoSubtitles,r,{"Vsubs-Signature":await S(r),"Sec-Vsubs-Sk":i,"Sec-Vsubs-Token":`${s}:${a}:${this.paths.videoSubtitles}:${this.componentVersion}`,...o});if(!l.success)throw new ut("Failed to request video subtitles",l);return f.decodeSubtitlesResponse(l.data)}async pingStream({pingId:t,headers:e={}}){const{secretKey:o,uuid:n}=await this.getSession("video-translation"),i=f.encodeStreamPingRequest(t),a=await S(i),r=await this.request(this.paths.streamPing,i,{"Vtrans-Signature":await S(i),"Sec-Vtrans-Sk":o,"Sec-Vtrans-Token":`${a}:${n}:${this.paths.streamPing}:${this.componentVersion}`,...e});if(!r.success)throw new ut("Failed to request stream ping",r);return!0}async translateStream({videoData:t,requestLang:e=this.requestLang,responseLang:o=this.responseLang,headers:i={}}){const{url:a}=t;if(this.isCustomLink(a))throw new lt("Unsupported video URL for getting stream translation");const{secretKey:r,uuid:s}=await this.getSession("video-translation"),l=f.encodeStreamRequest(a,e,o),d=await S(l),u=await this.request(this.paths.streamTranslation,l,{"Vtrans-Signature":await S(l),"Sec-Vtrans-Sk":r,"Sec-Vtrans-Token":`${d}:${s}:${this.paths.streamTranslation}:${this.componentVersion}`,...i});if(!u.success)throw new ut("Failed to request stream translation",u);const c=f.decodeStreamResponse(u.data),h=c.interval;switch(h){case n.NO_CONNECTION:case n.TRANSLATING:return{translated:!1,interval:h,message:h===n.NO_CONNECTION?"streamNoConnectionToServer":"translationTakeFewMinutes"};case n.STREAMING:return{translated:!0,interval:h,pingId:c.pingId,result:c.translatedInfo};default:throw console.error("[vot.js] Unknown response",c),new ut("Unknown response from Yandex",c)}}async createSession(t){const e=function(){let t="";for(let e=0;e<32;e++)t+="0123456789ABCDEF"[Math.floor(16*Math.random())];return t}(),o=f.encodeYandexSessionRequest(e,t),n=await this.request(this.paths.createSession,o,{"Vtrans-Signature":await S(o)});if(!n.success)throw new ut("Failed to request create session",n);return{...f.decodeYandexSessionResponse(n.data),uuid:e}}}class ht extends ct{async request(t,e,o={}){const n=this.getOpts(JSON.stringify({headers:{...this.headers,...o},body:Array.from(e)}),{"Content-Type":"application/json"});try{const e=await this.fetch(`${this.schema}://${this.host}${t}`,n),o=await e.arrayBuffer();return{success:200===e.status,data:o}}catch(t){return{success:!1,data:t?.message}}}}function pt(t){const e=Math.floor(t/3600),o=Math.floor(t%3600/60),n=Math.floor(t%60),i=Math.floor(t%1*1e3);return`${e.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")},${i.toString().padStart(3,"0")}`}const gt=globalThis,vt=gt.trustedTypes,mt=vt?vt.createPolicy("lit-html",{createHTML:t=>t}):void 0,bt="$lit$",ft=`lit$${Math.random().toFixed(9).slice(2)}$`,yt="?"+ft,wt=`<${yt}>`,xt=document,St=()=>xt.createComment(""),kt=t=>null===t||"object"!=typeof t&&"function"!=typeof t,Tt=Array.isArray,Lt=t=>Tt(t)||"function"==typeof t?.[Symbol.iterator],Vt="[ \t\n\f\r]",Mt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,At=/-->/g,Ot=/>/g,Ct=RegExp(`>|${Vt}(?:([^\\s"'>=/]+)(${Vt}*=${Vt}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),Pt=/'/g,It=/"/g,Et=/^(?:script|style|textarea|title)$/i,_t=t=>(e,...o)=>({_$litType$:t,strings:e,values:o}),$t=_t(1),Rt=_t(2),Nt=(_t(3),Symbol.for("lit-noChange")),Bt=Symbol.for("lit-nothing"),Dt=new WeakMap,Ft=xt.createTreeWalker(xt,129);function qt(t,e){if(!Tt(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==mt?mt.createHTML(e):e}const Ht=(t,e)=>{const o=t.length-1,n=[];let i,a=2===e?"":3===e?"":"",r=Mt;for(let e=0;e"===l[0]?(r=i??Mt,d=-1):void 0===l[1]?d=-2:(d=r.lastIndex-l[2].length,s=l[1],r=void 0===l[3]?Ct:'"'===l[3]?It:Pt):r===It||r===Pt?r=Ct:r===At||r===Ot?r=Mt:(r=Ct,i=void 0);const c=r===Ct&&t[e+1].startsWith("/>")?" ":"";a+=r===Mt?o+wt:d>=0?(n.push(s),o.slice(0,d)+bt+o.slice(d)+ft+c):o+ft+(-2===d?e:c)}return[qt(t,a+(t[o]||"")+(2===e?"":3===e?"":"")),n]};class zt{constructor({strings:t,_$litType$:e},o){let n;this.parts=[];let i=0,a=0;const r=t.length-1,s=this.parts,[l,d]=Ht(t,e);if(this.el=zt.createElement(l,o),Ft.currentNode=this.el.content,2===e||3===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(n=Ft.nextNode())&&s.length0){n.textContent=vt?vt.emptyScript:"";for(let o=0;o2||""!==o[0]||""!==o[1]?(this._$AH=Array(o.length-1).fill(new String),this.strings=o):this._$AH=Bt}_$AI(t,e=this,o,n){const i=this.strings;let a=!1;if(void 0===i)t=Ut(this,t,e,0),a=!kt(t)||t!==this._$AH&&t!==Nt,a&&(this._$AH=t);else{const n=t;let r,s;for(t=i[0],r=0;r{const n=o?.renderBefore??e;let i=n._$litPart$;if(void 0===i){const t=o?.renderBefore??null;n._$litPart$=i=new Gt(e.insertBefore(St(),t),t,void 0,o??{})}return i._$AI(t),i},te="m3u8-proxy.toil.cc",ee="vot-worker.toil.cc",oe="https://vot-api.toil.cc/v1",ne=.15,ie="yandex",ae="yandex",re={yandex:"https://translate.toil.cc/detect",rustServer:"https://rust-server-531j.onrender.com/detect"},se={yandex:"https://translate.toil.cc/translate",deepl:"https://translate-deepl.toil.cc/translate"};o("./src/styles/main.scss");const le="#UNDEFINED",de=Rt` -`;function le(t){const e=document.createElement("vot-block");return e.classList.add("vot-icon-button"),Zt(t,e),e}function de(t){const e=+t.value,o=+t.min,n=(e-o)/(+t.max-o);t.parentElement.setAttribute("style",`--vot-progress: ${n}`)}function ue(t,e="",o=" ",n=!1){const i=document.createElement("vot-block");i.classList.add("vot-textfield");const a=document.createElement(n?"textarea":"input");a.placeholder=o,a.value=e,t||a.classList.add("vot-show-placeholer");const r=document.createElement("span");return r.append(t),i.append(a,r),{container:i,input:a,label:r}}function ce(t){const e=document.createElement("vot-block");e.classList.add("vot-dialog-container"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-dialog-backdrop");const n=document.createElement("vot-block");n.classList.add("vot-dialog");const i=document.createElement("vot-block");i.classList.add("vot-dialog-content-wrapper");const a=document.createElement("vot-block");a.classList.add("vot-dialog-header-container");const r=document.createElement("vot-block");r.classList.add("vot-dialog-body-container");const s=document.createElement("vot-block");s.classList.add("vot-dialog-footer-container");const l=document.createElement("vot-block");l.classList.add("vot-dialog-title-container");const d=le(_t``;function ue(t){const e=document.createElement("vot-block");return e.classList.add("vot-icon-button"),Xt(t,e),e}function ce(t){const e=+t.value,o=+t.min,n=(e-o)/(+t.max-o);t.parentElement.setAttribute("style",`--vot-progress: ${n}`)}function he(t,e="",o=" ",n=!1){const i=document.createElement("vot-block");i.classList.add("vot-textfield");const a=document.createElement(n?"textarea":"input");a.placeholder=o,a.value=e,t||a.classList.add("vot-show-placeholer");const r=document.createElement("span");return r.append(t),i.append(a,r),{container:i,input:a,label:r}}function pe(t){const e=document.createElement("vot-block");e.classList.add("vot-dialog-container"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-dialog-backdrop");const n=document.createElement("vot-block");n.classList.add("vot-dialog");const i=document.createElement("vot-block");i.classList.add("vot-dialog-content-wrapper");const a=document.createElement("vot-block");a.classList.add("vot-dialog-header-container");const r=document.createElement("vot-block");r.classList.add("vot-dialog-body-container");const s=document.createElement("vot-block");s.classList.add("vot-dialog-footer-container");const l=document.createElement("vot-block");l.classList.add("vot-dialog-title-container");const d=ue(Rt` - `);d.classList.add("vot-dialog-close-button"),o.onclick=d.onclick=()=>{e.hidden=!0};const u=document.createElement("vot-block");return u.classList.add("vot-dialog-title"),u.append(t),e.append(o,n),n.append(i),i.append(a,r,s),a.append(l,d),l.append(u),{container:e,backdrop:o,dialog:n,contentWrapper:i,headerContainer:a,bodyContainer:r,footerContainer:s,titleContainer:l,closeButton:d,title:u}}function he(t,e,o,n={}){const{onSelectCb:i=function(){},labelElement:a=""}=n;let r=[];const s=document.createElement("vot-block");s.classList.add("vot-select"),a&&s.append(a);const l=document.createElement("vot-block");l.classList.add("vot-select-outer");const d=document.createElement("span");d.classList.add("vot-select-title"),d.textContent=t,void 0===t&&(d.textContent=o.find((t=>!0===t.selected))?.label);const u=document.createElement("vot-block");u.classList.add("vot-select-arrow-icon"),Zt(se,u),l.append(d,u),l.onclick=()=>{const t=ce(e);t.container.classList.add("vot-dialog-temp"),t.container.hidden=!1,document.documentElement.appendChild(t.container);const n=document.createElement("vot-block");n.classList.add("vot-select-content-list");for(const t of o){const e=document.createElement("vot-block");e.classList.add("vot-select-content-item"),e.textContent=t.label,e.dataset.votSelected=t.selected,e.dataset.votValue=t.value,t.disabled&&(e.inert=!0),e.onclick=async a=>{if(a.target.inert)return;const r=n.childNodes;for(let t of r)t.dataset.votSelected=!1;for(let e of o)e.selected=e.value===t.value;e.dataset.votSelected=!0,d.textContent=t.label,await i(a)},n.appendChild(e)}const a=ue(z.get("searchField"));a.input.oninput=t=>{const e=t.target.value.toLowerCase();for(let t=0;t{t.container.remove(),r=[]}},s.append(l);return{container:s,title:d,arrowIcon:u,labelElement:a,setTitle:t=>{d.textContent=t},setSelected:t=>{const e=Array.from(r).filter((t=>!t.inert));for(let o=0;o{o=t}}}const pe={createHeader:function(t,e=4){const o=document.createElement("vot-block");return o.classList.add("vot-header"),o.classList.add(`vot-header-level-${e}`),o.append(t),o},createInformation:function(t,e){const o=document.createElement("vot-block");o.classList.add("vot-info");const n=document.createElement("vot-block");n.append(t);const i=document.createElement("vot-block");return i.append(e),o.append(n,i),{container:o,header:n,value:i}},createButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-button"),e.append(t),e},createTextButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-text-button"),e.append(t),e},createOutlinedButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-outlined-button"),e.append(t),e},createIconButton:le,createCheckbox:function(t,e=!1){const o=document.createElement("label");o.classList.add("vot-checkbox");const n=document.createElement("input");n.type="checkbox",n.checked=Boolean(e);const i=document.createElement("span");return i.append(t),o.append(n,i),{container:o,input:n,label:i}},createSlider:function(t,e=50,o=0,n=100){const i=document.createElement("vot-block");i.classList.add("vot-slider");const a=document.createElement("input");a.type="range",a.min=o,a.max=n,a.value=e;const r=document.createElement("span");return Zt(t,r),i.append(a,r),a.addEventListener("input",(t=>de(t.target))),de(a),{container:i,input:a,label:r}},createTextfield:ue,createDialog:ce,createVOTButton:function(t){const e=document.createElement("vot-block");e.classList.add("vot-segmented-button");const o=document.createElement("vot-block");o.classList.add("vot-segment"),o.classList.add("vot-translate-button"),Zt(_t``);d.classList.add("vot-dialog-close-button"),o.onclick=d.onclick=()=>{e.hidden=!0};const u=document.createElement("vot-block");return u.classList.add("vot-dialog-title"),u.append(t),e.append(o,n),n.append(i),i.append(a,r,s),a.append(l,d),l.append(u),{container:e,backdrop:o,dialog:n,contentWrapper:i,headerContainer:a,bodyContainer:r,footerContainer:s,titleContainer:l,closeButton:d,title:u}}function ge(t,e,o,n={}){const{onSelectCb:i=function(){},labelElement:a=""}=n;let r=[];const s=document.createElement("vot-block");s.classList.add("vot-select"),a&&s.append(a);const l=document.createElement("vot-block");l.classList.add("vot-select-outer");const d=document.createElement("span");d.classList.add("vot-select-title"),d.textContent=t,void 0===t&&(d.textContent=o.find((t=>!0===t.selected))?.label);const u=document.createElement("vot-block");u.classList.add("vot-select-arrow-icon"),Xt(de,u),l.append(d,u),l.onclick=()=>{const t=pe(e);t.container.classList.add("vot-dialog-temp"),t.container.hidden=!1,document.documentElement.appendChild(t.container);const n=document.createElement("vot-block");n.classList.add("vot-select-content-list");for(const t of o){const e=document.createElement("vot-block");e.classList.add("vot-select-content-item"),e.textContent=t.label,e.dataset.votSelected=t.selected,e.dataset.votValue=t.value,t.disabled&&(e.inert=!0),e.onclick=async a=>{if(a.target.inert)return;const r=n.childNodes;for(let t of r)t.dataset.votSelected=!1;for(let e of o)e.selected=e.value===t.value;e.dataset.votSelected=!0,d.textContent=t.label,await i(a)},n.appendChild(e)}const a=he(z.get("searchField"));a.input.oninput=t=>{const e=t.target.value.toLowerCase();for(let t=0;t{t.container.remove(),r=[]}},s.append(l);return{container:s,title:d,arrowIcon:u,labelElement:a,setTitle:t=>{d.textContent=t},setSelected:t=>{const e=Array.from(r).filter((t=>!t.inert));for(let o=0;o{o=t}}}const ve={createHeader:function(t,e=4){const o=document.createElement("vot-block");return o.classList.add("vot-header"),o.classList.add(`vot-header-level-${e}`),o.append(t),o},createInformation:function(t,e){const o=document.createElement("vot-block");o.classList.add("vot-info");const n=document.createElement("vot-block");n.append(t);const i=document.createElement("vot-block");return i.append(e),o.append(n,i),{container:o,header:n,value:i}},createButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-button"),e.append(t),e},createTextButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-text-button"),e.append(t),e},createOutlinedButton:function(t){const e=document.createElement("vot-block");return e.classList.add("vot-outlined-button"),e.append(t),e},createIconButton:ue,createCheckbox:function(t,e=!1){const o=document.createElement("label");o.classList.add("vot-checkbox");const n=document.createElement("input");n.type="checkbox",n.checked=Boolean(e);const i=document.createElement("span");return i.append(t),o.append(n,i),{container:o,input:n,label:i}},createSlider:function(t,e=50,o=0,n=100){const i=document.createElement("vot-block");i.classList.add("vot-slider");const a=document.createElement("input");a.type="range",a.min=o,a.max=n,a.value=e;const r=document.createElement("span");return Xt(t,r),i.append(a,r),a.addEventListener("input",(t=>ce(t.target))),ce(a),{container:i,input:a,label:r}},createTextfield:he,createDialog:pe,createVOTButton:function(t){const e=document.createElement("vot-block");e.classList.add("vot-segmented-button");const o=document.createElement("vot-block");o.classList.add("vot-segment"),o.classList.add("vot-translate-button"),Xt(Rt` - `,o);const n=document.createElement("vot-block");n.classList.add("vot-separator");const i=document.createElement("vot-block");i.classList.add("vot-segment-only-icon"),Zt(_t``,o);const n=document.createElement("vot-block");n.classList.add("vot-separator");const i=document.createElement("vot-block");i.classList.add("vot-segment-only-icon"),Xt(Rt` - `,i);const a=document.createElement("vot-block");a.classList.add("vot-separator");const r=document.createElement("vot-block");r.classList.add("vot-segment-only-icon"),Zt(_t``,i);const a=document.createElement("vot-block");a.classList.add("vot-separator");const r=document.createElement("vot-block");r.classList.add("vot-segment-only-icon"),Xt(Rt` - `,r);const s=document.createElement("span");return s.classList.add("vot-segment-label"),s.append(t),e.append(o,n,i,a,r),o.append(s),{container:e,translateButton:o,separator:n,pipButton:i,separator2:a,menuButton:r,label:s}},createVOTMenu:function(t){const e=document.createElement("vot-block");e.classList.add("vot-menu"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-menu-content-wrapper");const n=document.createElement("vot-block");n.classList.add("vot-menu-header-container");const i=document.createElement("vot-block");i.classList.add("vot-menu-body-container");const a=document.createElement("vot-block");a.classList.add("vot-menu-footer-container");const r=document.createElement("vot-block");r.classList.add("vot-menu-title-container");const s=document.createElement("vot-block");return s.classList.add("vot-menu-title"),s.append(t),e.append(o),o.append(n,i,a),n.append(r),r.append(s),{container:e,contentWrapper:o,headerContainer:n,bodyContainer:i,footerContainer:a,titleContainer:r,title:s}},createVOTSelectLabel:function(t){const e=document.createElement("span");return e.classList.add("vot-select-label"),e.textContent=t,e},createVOTSelect:he,createVOTLanguageSelect:function(t){const{fromTitle:e=re,fromDialogTitle:o=re,fromItems:n=[],fromOnSelectCB:i=null,toTitle:a=re,toDialogTitle:r=re,toItems:s=[],toOnSelectCB:l=null}=t,d=document.createElement("vot-block");d.classList.add("vot-lang-select");const u=he(e,o,n,{onSelectCb:i}),c=document.createElement("vot-block");c.classList.add("vot-lang-select-icon"),Zt(_t``,r);const s=document.createElement("span");return s.classList.add("vot-segment-label"),s.append(t),e.append(o,n,i,a,r),o.append(s),{container:e,translateButton:o,separator:n,pipButton:i,separator2:a,menuButton:r,label:s}},createVOTMenu:function(t){const e=document.createElement("vot-block");e.classList.add("vot-menu"),e.hidden=!0;const o=document.createElement("vot-block");o.classList.add("vot-menu-content-wrapper");const n=document.createElement("vot-block");n.classList.add("vot-menu-header-container");const i=document.createElement("vot-block");i.classList.add("vot-menu-body-container");const a=document.createElement("vot-block");a.classList.add("vot-menu-footer-container");const r=document.createElement("vot-block");r.classList.add("vot-menu-title-container");const s=document.createElement("vot-block");return s.classList.add("vot-menu-title"),s.append(t),e.append(o),o.append(n,i,a),n.append(r),r.append(s),{container:e,contentWrapper:o,headerContainer:n,bodyContainer:i,footerContainer:a,titleContainer:r,title:s}},createVOTSelectLabel:function(t){const e=document.createElement("span");return e.classList.add("vot-select-label"),e.textContent=t,e},createVOTSelect:ge,createVOTLanguageSelect:function(t){const{fromTitle:e=le,fromDialogTitle:o=le,fromItems:n=[],fromOnSelectCB:i=null,toTitle:a=le,toDialogTitle:r=le,toItems:s=[],toOnSelectCB:l=null}=t,d=document.createElement("vot-block");d.classList.add("vot-lang-select");const u=ge(e,o,n,{onSelectCb:i}),c=document.createElement("vot-block");c.classList.add("vot-lang-select-icon"),Xt(Rt` - `,c);const h=he(a,r,s,{onSelectCb:l});return d.append(u.container,c,h.container),{container:d,fromSelect:u,icon:c,toSelect:h}},updateSlider:de,createDetails:function(t){const e=document.createElement("vot-block");e.classList.add("vot-details");const o=document.createElement("vot-block");o.append(t);const n=document.createElement("vot-block");return n.classList.add("vot-details-arrow-icon"),Zt(se,n),e.append(o,n),{container:e,header:o,arrowIcon:n}}};const ge={async translate(t,e){try{const o=await q(`${ae.yandex}?${new URLSearchParams({text:t,lang:e})}`,{timeout:3e3});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.text[0]}catch(e){return console.error("Error translating text:",e),t}},async detect(t){try{const e=await q(`${ie.yandex}?${new URLSearchParams({text:t})}`,{timeout:3e3});if(e instanceof Error)throw e;const o=await e.json();if(200!==o.code)throw o.message;return o.lang??"en"}catch(t){return console.error("Error getting lang from text:",t),"en"}}},ve={async detect(t){try{const e=await q(ie.rustServer,{method:"POST",body:t});if(e instanceof Error)throw e;return await e.text()}catch(t){return console.error("Error getting lang from text:",t),"en"}}},me={async translate(t,e="auto",o="ru"){try{const n=await q(ae.deepl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({text:t,source_lang:e,target_lang:o})});if(n instanceof Error)throw n;const i=await n.json();if(200!==i.code)throw i.message;return i.data}catch(e){return console.error("Error translating text:",e),t}}};const be=Object.keys(ae),fe=Object.keys(ie).map((t=>"rustServer"===t?"rust-server":t));async function ye(t,e,o,n){if(!window.location.hostname.includes("m.youtube.com")&&t?.getAudioTrack){const e=t.getAudioTrack(),o=e?.getLanguageInfo();if("und"!==o?.id)return $(o.id.split(".")[0])}const i=e?.captions?.playerCaptionsTracklistRenderer?.captionTracks;if(i?.length){const t=i.find((t=>"asr"===t.kind));if(t&&t.languageCode)return $(t.languageCode)}const a=function(t,e){return`${t} ${e?e.split("\n").filter((t=>!F.test(t))).join(" "):""}`.slice(0,450).replace(/[^\p{L}\s]+|\s+/gu," ").trim()}(o,n);return I.log(`Detecting language text: ${a}`),async function(t){switch(await _.get("detectService",ne)){case"yandex":return await ge.detect(t);case"rust-server":return await ve.detect(t);default:return"en"}}(a)}function we(){return/^m\.youtube\.com$/.test(window.location.hostname)}function xe(){return window.location.pathname.startsWith("/shorts/")?we()?document.querySelector("#movie_player"):document.querySelector("#shorts-player"):document.querySelector("#movie_player")}function Se(){const t=xe();return t?.getPlayerResponse?t?.getPlayerResponse?.call()??null:t?.data?.playerResponse??null}function ke(){const t=xe();return t?.getVideoData?t?.getVideoData?.call()??null:t?.data?.playerResponse?.videoDetails??null}const Te={isMobile:we,getPlayer:xe,getPlayerResponse:Se,getPlayerData:ke,getVideoVolume:function(){const t=xe();return t?.getVolume?t.getVolume.call()/100:1},getSubtitles:function(){const t=Se();let e=t?.captions?.playerCaptionsTracklistRenderer?.captionTracks??[];return e=e.reduce(((t,e)=>{if("languageCode"in e){const o=e?.languageCode?$(e?.languageCode):void 0,n=e?.url||e?.baseUrl;o&&n&&t.push({source:"youtube",language:o,isAutoGenerated:"asr"===e?.kind,url:`${n.startsWith("http")?n:`${window.location.origin}/${n}`}&fmt=json3`})}return t}),[]),I.log("youtube subtitles:",e),e},getVideoData:async function(){const t=xe(),e=Se(),o=ke(),{title:n}=o??{},{shortDescription:i,isLive:a}=e?.videoDetails??{};let r=n?await ye(t,e,n,i):"en";r=O.includes(r)?r:"en";const s={isLive:!!a,title:n,description:i,detectedLanguage:r};return I.log("youtube video data:",s),console.log("[VOT] Detected language: ",s.detectedLanguage),s},setVideoVolume:function(t){const e=xe();if(e?.setVolume)return e.setVolume(Math.round(100*t)),!0},videoSeek:function(t,e){I.log("videoSeek",e);const o=(xe()?.getProgressState()?.seekableEnd||t.currentTime)-e;t.currentTime=o},isMuted:function(){const t=xe();return!!t?.isMuted&&t.isMuted.call()},isMusic:function(){const t=ke().author,e=ke().title.toUpperCase(),o=e.match(/\w+/g),n=document.body.querySelector("ytd-watch-flexy")?.playerData;return[e,document.URL,t,n?.microformat?.playerMicroformatRenderer.category,n?.title].some((t=>t?.toUpperCase().includes("MUSIC")))||document.body.querySelector("#upload-info #channel-name .badge-style-type-verified-artist")||t&&/(VEVO|Topic|Records|RECORDS|Recordings|AMV)$/.test(t)||t&&/(MUSIC|ROCK|SOUNDS|SONGS)/.test(t.toUpperCase())||o?.length&&["🎵","♫","SONG","SONGS","SOUNDTRACK","LYRIC","LYRICS","AMBIENT","MIX","VEVO","CLIP","KARAOKE","OPENING","COVER","COVERED","VOCAL","INSTRUMENTAL","ORCHESTRAL","DUBSTEP","DJ","DNB","BASS","BEAT","ALBUM","PLAYLIST","DUBSTEP","CHILL","RELAX","CLASSIC","CINEMATIC"].some((t=>o.includes(t)))||["OFFICIAL VIDEO","OFFICIAL AUDIO","FEAT.","FT.","LIVE RADIO","DANCE VER","HIP HOP","ROCK N ROLL","HOUR VER","HOURS VER","INTRO THEME"].some((t=>e.includes(t)))||o?.length&&["OP","ED","MV","OST","NCS","BGM","EDM","GMV","AMV","MMD","MAD"].some((t=>o.includes(t)))}};function Le(t){const e=t.startMs+t.durationMs;return t.tokens.reduce(((o,n,i)=>{const a=t.tokens[i+1];let r;o.length>0&&(r=o[o.length-1]);const s=r?.alignRange?.end??0,l=s+n.text.length;if(n.alignRange={start:s,end:l},o.push(n),a){const t=n.startMs+n.durationMs,i=a.startMs?a.startMs-t:e-t;o.push({text:" ",startMs:t,durationMs:i,alignRange:{start:l,end:l+1}})}return o}),[])}function Ve(t,e){const o=t.text.split(/([\n \t])/).reduce(((t,o)=>{if(o.length){const n=t[t.length-1]??e,i=n?.alignRange?.end??0,a=i+o.length;t.push({text:o,alignRange:{start:i,end:a}})}return t}),[]),n=Math.floor(t.durationMs/o.length),i=t.startMs+t.durationMs;return o.map(((e,a)=>{const r=a===o.length-1,s=t.startMs+n*a;return{...e,startMs:s,durationMs:r?i-s:n}}))}async function Me(t){const e=(async()=>{try{const e=await q(t.url,{timeout:5e3});return await e.json()}catch(t){return console.error("[VOT] Failed to fetch subtitles.",t),{containsTokens:!1,subtitles:[]}}})();let o=await e;return"youtube"===t.source&&(o=function(t){const e={containsTokens:!1,subtitles:[]};if("object"!=typeof t||!("events"in t)||!Array.isArray(t.events))return console.error("[VOT] Failed to format youtube subtitles",t),e;for(let o=0;ot.utf8.replace(/^( +| +)$/g,""))).join("");let i=t.events[o].dDurationMs;t.events[o+1]&&t.events[o].tStartMs+t.events[o].dDurationMs>t.events[o+1].tStartMs&&(i=t.events[o+1].tStartMs-t.events[o].tStartMs),"\n"!==n&&e.subtitles.push({text:n,startMs:t.events[o].tStartMs,durationMs:i})}return e}(o)),o.subtitles=function(t,e){const o=[];let n;for(let i=0;isetTimeout((()=>e(new Error("Timeout"))),5e3)));try{const e=await Promise.race([t.getSubtitles({videoData:{host:o,url:n,videoId:a,duration:r},requestLang:i}),l]);console.log("[VOT] Subtitles response: ",e),e.waiting&&console.error("[VOT] Failed to get yandex subtitles");let d=e.subtitles??[];return d=d.reduce(((t,e)=>(e.language&&!t.find((t=>"yandex"===t.source&&t.language===e.language&&!t.translatedFromLanguage))&&t.push({source:"yandex",language:e.language,url:e.url}),e.translatedLanguage&&t.push({source:"yandex",language:e.translatedLanguage,translatedFromLanguage:e.language,url:e.translatedUrl}),t)),[]),[...d,...s].sort(((t,e)=>{if(t.source!==e.source)return"yandex"===t.source?-1:1;if(t.language!==e.language&&(t.language===R||e.language===R))return t.language===R?-1:1;if("yandex"===t.source){if(t.translatedFromLanguage!==e.translatedFromLanguage)return t.translatedFromLanguage&&e.translatedFromLanguage?t.translatedFromLanguage===i?-1:1:t.language===e.language?t.translatedFromLanguage?1:-1:t.translatedFromLanguage?-1:1;if(!t.translatedFromLanguage)return t.language===i?-1:1}return"youtube"===t.source&&t.isAutoGenerated!==e.isAutoGenerated?t.isAutoGenerated?1:-1:0}))}catch(t){throw"Timeout"===t.message?console.error("[VOT] Failed to get yandex subtitles. Reason: timeout"):console.error("[VOT] Error in getSubtitles function",t),t}}class Oe{constructor(t,e,o){this.video=t,this.container="youtube"===o.host&&"mobile"!==o.additionalData?e.parentElement:e,this.site=o,this.subtitlesContainer=this.createSubtitlesContainer(),this.position={left:25,top:75},this.dragging={active:!1,offset:{x:0,y:0}},this.subtitles=null,this.lastContent=null,this.highlightWords=!1,this.fontSize=20,this.opacity=.2,this.maxLength=300,this.maxLengthRegexp=/.{1,300}(?:\s|$)/g,this.bindEvents(),this.updateContainerRect()}createSubtitlesContainer(){const t=document.createElement("vot-block");return t.classList.add("vot-subtitles-widget"),this.container.appendChild(t),t}bindEvents(){this.onMouseDownBound=t=>this.onMouseDown(t),this.onMouseUpBound=()=>this.onMouseUp(),this.onMouseMoveBound=t=>this.onMouseMove(t),this.onTimeUpdateBound=this.debounce((()=>this.update()),100),document.addEventListener("mousedown",this.onMouseDownBound),document.addEventListener("mouseup",this.onMouseUpBound),document.addEventListener("mousemove",this.onMouseMoveBound),this.video?.addEventListener("timeupdate",this.onTimeUpdateBound),this.resizeObserver=new ResizeObserver((()=>this.onResize())),this.resizeObserver.observe(this.container)}onMouseDown(t){if(this.subtitlesContainer.contains(t.target)){const e=this.subtitlesContainer.getBoundingClientRect(),o=this.container.getBoundingClientRect();this.dragging={active:!0,offset:{x:t.clientX-e.left,y:t.clientY-e.top},containerOffset:{x:o.left,y:o.top}}}}onMouseUp(){this.dragging.active=!1}onMouseMove(t){if(this.dragging.active){t.preventDefault();const{width:e,height:o}=this.container.getBoundingClientRect(),n=this.dragging.containerOffset;this.position={left:(t.clientX-this.dragging.offset.x-n.x)/e*100,top:(t.clientY-this.dragging.offset.y-n.y)/o*100},this.applySubtitlePosition()}}onResize(){this.updateContainerRect()}updateContainerRect(){this.containerRect=this.container.getBoundingClientRect(),this.applySubtitlePosition()}applySubtitlePosition(){const{width:t,height:e}=this.containerRect,{offsetWidth:o,offsetHeight:n}=this.subtitlesContainer,i=(t-o)/t*100,a=(e-n)/e*100;this.position.left=Math.max(0,Math.min(this.position.left,i)),this.position.top=Math.max(0,Math.min(this.position.top,a)),this.subtitlesContainer.style.left=`${this.position.left}%`,this.subtitlesContainer.style.top=`${this.position.top}%`}setContent(t){t&&this.video?(this.subtitles=t,this.update()):(this.subtitles=null,Zt(null,this.subtitlesContainer))}setMaxLength(t){"number"==typeof t&&t&&(this.maxLength=t,this.maxLengthRegexp=new RegExp(`.{1,${t}}(?:\\s|$)`,"g"),this.update())}setHighlightWords(t){this.highlightWords=Boolean(t),this.update()}setFontSize(t){this.fontSize=t;const e=this.subtitlesContainer?.querySelector(".vot-subtitles");e&&(e.style.fontSize=`${this.fontSize}px`)}setOpacity(t){this.opacity=((100-+t)/100).toFixed(2);const e=this.subtitlesContainer?.querySelector(".vot-subtitles");e&&e.style.setProperty("--vot-subtitles-opacity",this.opacity)}update(){if(!this.video||!this.subtitles)return;const t=1e3*this.video.currentTime,e=this.subtitles.subtitles?.findLast((e=>e.startMs`,c);const h=ge(a,r,s,{onSelectCb:l});return d.append(u.container,c,h.container),{container:d,fromSelect:u,icon:c,toSelect:h}},updateSlider:ce,createDetails:function(t){const e=document.createElement("vot-block");e.classList.add("vot-details");const o=document.createElement("vot-block");o.append(t);const n=document.createElement("vot-block");return n.classList.add("vot-details-arrow-icon"),Xt(de,n),e.append(o,n),{container:e,header:o,arrowIcon:n}}};const me={async translate(t,e){try{const o=await q(`${se.yandex}?${new URLSearchParams({text:t,lang:e})}`,{timeout:3e3});if(o instanceof Error)throw o;const n=await o.json();if(200!==n.code)throw n.message;return n.text[0]}catch(e){return console.error("Error translating text:",e),t}},async detect(t){try{const e=await q(`${re.yandex}?${new URLSearchParams({text:t})}`,{timeout:3e3});if(e instanceof Error)throw e;const o=await e.json();if(200!==o.code)throw o.message;return o.lang??"en"}catch(t){return console.error("Error getting lang from text:",t),"en"}}},be={async detect(t){try{const e=await q(re.rustServer,{method:"POST",body:t});if(e instanceof Error)throw e;return await e.text()}catch(t){return console.error("Error getting lang from text:",t),"en"}}},fe={async translate(t,e="auto",o="ru"){try{const n=await q(se.deepl,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({text:t,source_lang:e,target_lang:o})});if(n instanceof Error)throw n;const i=await n.json();if(200!==i.code)throw i.message;return i.data}catch(e){return console.error("Error translating text:",e),t}}};const ye=Object.keys(se),we=Object.keys(re).map((t=>"rustServer"===t?"rust-server":t));async function xe(t,e,o,n){if(!window.location.hostname.includes("m.youtube.com")&&t?.getAudioTrack){const e=t.getAudioTrack(),o=e?.getLanguageInfo();if("und"!==o?.id)return N(o.id.split(".")[0])}const i=e?.captions?.playerCaptionsTracklistRenderer?.captionTracks;if(i?.length){const t=i.find((t=>"asr"===t.kind));if(t&&t.languageCode)return N(t.languageCode)}const a=function(t,e){return`${t} ${e?e.split("\n").filter((t=>!F.test(t))).join(" "):""}`.slice(0,450).replace(/[^\p{L}\s]+|\s+/gu," ").trim()}(o,n);return E.log(`Detecting language text: ${a}`),async function(t){switch(await _.get("detectService",ae)){case"yandex":return await me.detect(t);case"rust-server":return await be.detect(t);default:return"en"}}(a)}function Se(){return/^m\.youtube\.com$/.test(window.location.hostname)}function ke(){return window.location.pathname.startsWith("/shorts/")?Se()?document.querySelector("#movie_player"):document.querySelector("#shorts-player"):document.querySelector("#movie_player")}function Te(){const t=ke();return t?.getPlayerResponse?t?.getPlayerResponse?.call()??null:t?.data?.playerResponse??null}function Le(){const t=ke();return t?.getVideoData?t?.getVideoData?.call()??null:t?.data?.playerResponse?.videoDetails??null}const Ve={isMobile:Se,getPlayer:ke,getPlayerResponse:Te,getPlayerData:Le,getVideoVolume:function(){const t=ke();return t?.getVolume?t.getVolume.call()/100:1},getSubtitles:function(){const t=Te();let e=t?.captions?.playerCaptionsTracklistRenderer?.captionTracks??[];return e=e.reduce(((t,e)=>{if("languageCode"in e){const o=e?.languageCode?N(e?.languageCode):void 0,n=e?.url||e?.baseUrl;o&&n&&t.push({source:"youtube",language:o,isAutoGenerated:"asr"===e?.kind,url:`${n.startsWith("http")?n:`${window.location.origin}/${n}`}&fmt=json3`})}return t}),[]),E.log("youtube subtitles:",e),e},getVideoData:async function(){const t=ke(),e=Te(),o=Le(),{title:n}=o??{},{shortDescription:i,isLive:a}=e?.videoDetails??{};let r=n?await xe(t,e,n,i):"en";r=O.includes(r)?r:"en";const s={isLive:!!a,title:n,description:i,detectedLanguage:r};return E.log("youtube video data:",s),console.log("[VOT] Detected language: ",s.detectedLanguage),s},setVideoVolume:function(t){const e=ke();if(e?.setVolume)return e.setVolume(Math.round(100*t)),!0},videoSeek:function(t,e){E.log("videoSeek",e);const o=(ke()?.getProgressState()?.seekableEnd||t.currentTime)-e;t.currentTime=o},isMuted:function(){const t=ke();return!!t?.isMuted&&t.isMuted.call()},isMusic:function(){const t=Le().author,e=Le().title.toUpperCase(),o=e.match(/\w+/g),n=document.body.querySelector("ytd-watch-flexy")?.playerData;return[e,document.URL,t,n?.microformat?.playerMicroformatRenderer.category,n?.title].some((t=>t?.toUpperCase().includes("MUSIC")))||document.body.querySelector("#upload-info #channel-name .badge-style-type-verified-artist")||t&&/(VEVO|Topic|Records|RECORDS|Recordings|AMV)$/.test(t)||t&&/(MUSIC|ROCK|SOUNDS|SONGS)/.test(t.toUpperCase())||o?.length&&["🎵","♫","SONG","SONGS","SOUNDTRACK","LYRIC","LYRICS","AMBIENT","MIX","VEVO","CLIP","KARAOKE","OPENING","COVER","COVERED","VOCAL","INSTRUMENTAL","ORCHESTRAL","DUBSTEP","DJ","DNB","BASS","BEAT","ALBUM","PLAYLIST","DUBSTEP","CHILL","RELAX","CLASSIC","CINEMATIC"].some((t=>o.includes(t)))||["OFFICIAL VIDEO","OFFICIAL AUDIO","FEAT.","FT.","LIVE RADIO","DANCE VER","HIP HOP","ROCK N ROLL","HOUR VER","HOURS VER","INTRO THEME"].some((t=>e.includes(t)))||o?.length&&["OP","ED","MV","OST","NCS","BGM","EDM","GMV","AMV","MMD","MAD"].some((t=>o.includes(t)))}};function Me(t){const e=t.startMs+t.durationMs;return t.tokens.reduce(((o,n,i)=>{const a=t.tokens[i+1];let r;o.length>0&&(r=o[o.length-1]);const s=r?.alignRange?.end??0,l=s+n.text.length;if(n.alignRange={start:s,end:l},o.push(n),a){const t=n.startMs+n.durationMs,i=a.startMs?a.startMs-t:e-t;o.push({text:" ",startMs:t,durationMs:i,alignRange:{start:l,end:l+1}})}return o}),[])}function Ae(t,e){const o=t.text.split(/([\n \t])/).reduce(((t,o)=>{if(o.length){const n=t[t.length-1]??e,i=n?.alignRange?.end??0,a=i+o.length;t.push({text:o,alignRange:{start:i,end:a}})}return t}),[]),n=Math.floor(t.durationMs/o.length),i=t.startMs+t.durationMs;return o.map(((e,a)=>{const r=a===o.length-1,s=t.startMs+n*a;return{...e,startMs:s,durationMs:r?i-s:n}}))}async function Oe(t){const e=(async()=>{try{const e=await q(t.url,{timeout:5e3});return await e.json()}catch(t){return console.error("[VOT] Failed to fetch subtitles.",t),{containsTokens:!1,subtitles:[]}}})();let o=await e;return"youtube"===t.source&&(o=function(t){const e={containsTokens:!1,subtitles:[]};if("object"!=typeof t||!("events"in t)||!Array.isArray(t.events))return console.error("[VOT] Failed to format youtube subtitles",t),e;for(let o=0;ot.utf8.replace(/^( +| +)$/g,""))).join("");let i=t.events[o].dDurationMs;t.events[o+1]&&t.events[o].tStartMs+t.events[o].dDurationMs>t.events[o+1].tStartMs&&(i=t.events[o+1].tStartMs-t.events[o].tStartMs),"\n"!==n&&e.subtitles.push({text:n,startMs:t.events[o].tStartMs,durationMs:i})}return e}(o)),o.subtitles=function(t,e){const o=[];let n;for(let i=0;isetTimeout((()=>e(new Error("Timeout"))),5e3)));try{const e=await Promise.race([t.getSubtitles({videoData:{host:o,url:n,videoId:a,duration:r},requestLang:i}),l]);console.log("[VOT] Subtitles response: ",e),e.waiting&&console.error("[VOT] Failed to get yandex subtitles");let d=e.subtitles??[];return d=d.reduce(((t,e)=>(e.language&&!t.find((t=>"yandex"===t.source&&t.language===e.language&&!t.translatedFromLanguage))&&t.push({source:"yandex",language:e.language,url:e.url}),e.translatedLanguage&&t.push({source:"yandex",language:e.translatedLanguage,translatedFromLanguage:e.language,url:e.translatedUrl}),t)),[]),[...d,...s].sort(((t,e)=>{if(t.source!==e.source)return"yandex"===t.source?-1:1;if(t.language!==e.language&&(t.language===R||e.language===R))return t.language===R?-1:1;if("yandex"===t.source){if(t.translatedFromLanguage!==e.translatedFromLanguage)return t.translatedFromLanguage&&e.translatedFromLanguage?t.translatedFromLanguage===i?-1:1:t.language===e.language?t.translatedFromLanguage?1:-1:t.translatedFromLanguage?-1:1;if(!t.translatedFromLanguage)return t.language===i?-1:1}return"youtube"===t.source&&t.isAutoGenerated!==e.isAutoGenerated?t.isAutoGenerated?1:-1:0}))}catch(t){throw"Timeout"===t.message?console.error("[VOT] Failed to get yandex subtitles. Reason: timeout"):console.error("[VOT] Error in getSubtitles function",t),t}}class Pe{constructor(t,e,o){this.video=t,this.container="youtube"===o.host&&"mobile"!==o.additionalData?e.parentElement:e,this.site=o,this.subtitlesContainer=this.createSubtitlesContainer(),this.position={left:25,top:75},this.dragging={active:!1,offset:{x:0,y:0}},this.subtitles=null,this.lastContent=null,this.highlightWords=!1,this.fontSize=20,this.opacity=.2,this.maxLength=300,this.maxLengthRegexp=/.{1,300}(?:\s|$)/g,this.bindEvents(),this.updateContainerRect()}createSubtitlesContainer(){const t=document.createElement("vot-block");return t.classList.add("vot-subtitles-widget"),this.container.appendChild(t),t}bindEvents(){this.onMouseDownBound=t=>this.onMouseDown(t),this.onMouseUpBound=()=>this.onMouseUp(),this.onMouseMoveBound=t=>this.onMouseMove(t),this.onTimeUpdateBound=this.debounce((()=>this.update()),100),document.addEventListener("mousedown",this.onMouseDownBound),document.addEventListener("mouseup",this.onMouseUpBound),document.addEventListener("mousemove",this.onMouseMoveBound),this.video?.addEventListener("timeupdate",this.onTimeUpdateBound),this.resizeObserver=new ResizeObserver((()=>this.onResize())),this.resizeObserver.observe(this.container)}onMouseDown(t){if(this.subtitlesContainer.contains(t.target)){const e=this.subtitlesContainer.getBoundingClientRect(),o=this.container.getBoundingClientRect();this.dragging={active:!0,offset:{x:t.clientX-e.left,y:t.clientY-e.top},containerOffset:{x:o.left,y:o.top}}}}onMouseUp(){this.dragging.active=!1}onMouseMove(t){if(this.dragging.active){t.preventDefault();const{width:e,height:o}=this.container.getBoundingClientRect(),n=this.dragging.containerOffset;this.position={left:(t.clientX-this.dragging.offset.x-n.x)/e*100,top:(t.clientY-this.dragging.offset.y-n.y)/o*100},this.applySubtitlePosition()}}onResize(){this.updateContainerRect()}updateContainerRect(){this.containerRect=this.container.getBoundingClientRect(),this.applySubtitlePosition()}applySubtitlePosition(){const{width:t,height:e}=this.containerRect,{offsetWidth:o,offsetHeight:n}=this.subtitlesContainer,i=(t-o)/t*100,a=(e-n)/e*100;this.position.left=Math.max(0,Math.min(this.position.left,i)),this.position.top=Math.max(0,Math.min(this.position.top,a)),this.subtitlesContainer.style.left=`${this.position.left}%`,this.subtitlesContainer.style.top=`${this.position.top}%`}setContent(t){t&&this.video?(this.subtitles=t,this.update()):(this.subtitles=null,Xt(null,this.subtitlesContainer))}setMaxLength(t){"number"==typeof t&&t&&(this.maxLength=t,this.maxLengthRegexp=new RegExp(`.{1,${t}}(?:\\s|$)`,"g"),this.update())}setHighlightWords(t){this.highlightWords=Boolean(t),this.update()}setFontSize(t){this.fontSize=t;const e=this.subtitlesContainer?.querySelector(".vot-subtitles");e&&(e.style.fontSize=`${this.fontSize}px`)}setOpacity(t){this.opacity=((100-+t)/100).toFixed(2);const e=this.subtitlesContainer?.querySelector(".vot-subtitles");e&&e.style.setProperty("--vot-subtitles-opacity",this.opacity)}update(){if(!this.video||!this.subtitles)return;const t=1e3*this.video.currentTime,e=this.subtitles.subtitles?.findLast((e=>e.startMs${n}`,this.subtitlesContainer))}processTokens(t){if(t.at(-1).alignRange.end<=this.maxLength)return t;let e=[],o=[],n=0;for(const i of t)n+=i.text.length,o.push(i),n>this.maxLength&&(e.push(this.trimChunk(o)),o=[],n=0);o.length&&e.push(this.trimChunk(o));const i=1e3*this.video.currentTime;return e.find((t=>t[0].startMs{const o=this.highlightWords&&(e>t.startMs+t.durationMs/2||e>t.startMs-100&&t.startMs+t.durationMs/2-e<275);return It``,this.subtitlesContainer))}processTokens(t){if(t.at(-1).alignRange.end<=this.maxLength)return t;let e=[],o=[],n=0;for(const i of t)n+=i.text.length,o.push(i),n>this.maxLength&&(e.push(this.trimChunk(o)),o=[],n=0);o.length&&e.push(this.trimChunk(o));const i=1e3*this.video.currentTime;return e.find((t=>t[0].startMs{const o=this.highlightWords&&(e>t.startMs+t.durationMs/2||e>t.startMs-100&&t.startMs+t.durationMs/2-e<275);return $t`${t.text.replace("\\n","
")}
`}))}debounce(t,e){let o;return(...n)=>{clearTimeout(o),o=setTimeout((()=>t.apply(this,n)),e)}}release(){document.removeEventListener("mousedown",this.onMouseDownBound),document.removeEventListener("mouseup",this.onMouseUpBound),document.removeEventListener("mousemove",this.onMouseMoveBound),this.video?.removeEventListener("timeupdate",this.onTimeUpdateBound),this.resizeObserver.disconnect(),this.subtitlesContainer.remove()}}o("./node_modules/requestidlecallback-polyfill/index.js");class Ce{constructor(){this.listeners=new Set}hasListener(t){return this.listeners.has(t)}dispatchToListener(t,...e){try{t(...e)}catch(t){console.error("[VOT]",t)}}addListener(t){if(this.hasListener(t))throw new Error("[VOT] The listener has already been added.");this.listeners.add(t)}removeListener(t){if(!this.hasListener(t))throw new Error("[VOT] The listener has not been added yet.");this.listeners.delete(t)}dispatch(...t){for(const e of Array.from(this.listeners))this.dispatchToListener(e,...t)}}const Pe=new Set(["advertise","promo","sponsor","banner","commercial","preroll","midroll","postroll","ad-container","sponsored"]),Ee=(()=>{const t=Array.from(Pe).join("|");return new RegExp(t,"i")})(),Ie=t=>{const e=[];for(let o=0;o({label:z.get("langs")[t]??t.toUpperCase(),value:t,selected:e===t})))}const Be=t=>t?z.get("VOTChangeHotkeyWithCurrent").replace("{0}",t.replace("Key","")):z.get("VOTCreateTranslationHotkey");class De{translateFromLang="en";translateToLang=R;timer;videoData="";firstPlay=!0;audio=new Audio;audioContext=function(){const t=window.AudioContext||window.webkitAudioContext;return t?new t:void 0}();hls=D();votClient;videoTranslations=[];videoTranslationTTL=7200;cachedTranslation;downloadTranslationUrl=null;autoRetry;streamPing;votOpts;volumeOnStart;tempOriginalVolume;tempVolume;firstSyncVolume=!0;subtitlesList=[];subtitlesListVideoId=null;dragging;constructor(t,e,o){I.log("[VideoHandler] add video:",t,"container:",e,this),this.video=t,this.container=e,this.site=o,this.init()}async translateVideoImpl(t,e,o,n=null){if(clearTimeout(this.autoRetry),I.log(t,`Translate video (requestLang: ${e}, responseLang: ${o})`),await it(this.site,this.video)!==t.videoId)return null;try{const i=await this.votClient.translateVideo({videoData:t,requestLang:e,responseLang:o,translationHelp:n});if(I.log("Translate video result",i),i.translated&&i.remainingTime<1)return I.log("Video translation finished with this data: ",i),i;await this.updateTranslationErrorMsg(i.remainingTime>0?function(t){const e=Math.floor(t/60),o=Math.floor(t%60);return e>=60?z.get("translationTakeMoreThanHour"):1===e||0===e&&o>0?z.get("translationTakeAboutMinute"):11!==e&&e%10==1?z.get("translationTakeApproximatelyMinute2").replace("{0}",e):![12,13,14].includes(e)&&[2,3,4].includes(e%10)?z.get("translationTakeApproximatelyMinute").replace("{0}",e):z.get("translationTakeApproximatelyMinutes").replace("{0}",e)}(i.remainingTime):i.message??z.get("translationTakeFewMinutes"))}catch(t){return console.error("[VOT] Failed to translate video",t),await this.updateTranslationErrorMsg(t.data?.message??t),null}return new Promise((i=>{const a=this.subtitlesList.some((t=>"yandex"===t.source))?2e4:3e4;this.autoRetry=setTimeout((async()=>{const a=await this.translateVideoImpl(t,e,o,n);(!a||a.translated&&a.remainingTime<1)&&i(a)}),a)}))}async translateStreamImpl(t,e,o){if(clearTimeout(this.autoRetry),I.log(t,`Translate stream (requestLang: ${e}, responseLang: ${o})`),await it(this.site,this.video)!==t.videoId)return null;try{const n=await this.votClient.translateStream({videoData:t,requestLang:e,responseLang:o});if(I.log("Translate stream result",n),!n.translated&&10===n.interval)return await this.updateTranslationErrorMsg(z.get("translationTakeFewMinutes")),new Promise((i=>{this.autoRetry=setTimeout((async()=>{const n=await this.translateStreamImpl(t,e,o);n&&!n.translated&&10===n.interval||i(n)}),1e3*n.interval)}));if(n.message)throw I.log(`Stream translation aborted! Message: ${n.message}`),new rt("streamNoConnectionToServer");if(!n.result)throw I.log("Failed to find translation result! Data:",n),new rt("audioNotReceived");return I.log("Stream translated successfully. Running...",n),this.streamPing=setInterval((async()=>{I.log("Ping stream translation",n.pingId),this.votClient.pingStream({pingId:n.pingId})}),1e3*n.interval),n}catch(t){return console.error("[VOT] Failed to translate stream",t),await this.updateTranslationErrorMsg(t.data?.message??t),null}}async autoTranslate(){if(this.firstPlay&&1===this.data.autoTranslate&&this.videoData.videoId){this.firstPlay=!1;try{await this.translateExecutor(this.videoData.videoId)}catch(t){console.error("[VOT]",t),this.transformBtn("error","VOTLocalizedError"===t?.name?t.localizedMessage:t)}}}async init(){if(this.initialized)return;const t={autoTranslate:_.get("autoTranslate",0,!0),dontTranslateLanguage:_.get("dontTranslateLanguage",R),dontTranslateYourLang:_.get("dontTranslateYourLang",1,!0),autoSetVolumeYandexStyle:_.get("autoSetVolumeYandexStyle",1,!0),autoVolume:_.get("autoVolume",ee,!0),buttonPos:_.get("buttonPos","default"),showVideoSlider:_.get("showVideoSlider",1,!0),syncVolume:_.get("syncVolume",0,!0),subtitlesMaxLength:_.get("subtitlesMaxLength",300,!0),highlightWords:_.get("highlightWords",0,!0),subtitlesFontSize:_.get("subtitlesFontSize",20,!0),subtitlesOpacity:_.get("subtitlesOpacity",20,!0),responseLanguage:_.get("responseLanguage",R),defaultVolume:_.get("defaultVolume",100,!0),audioProxy:_.get("audioProxy",0,!0),showPiPButton:_.get("showPiPButton",0,!0),translateAPIErrors:_.get("translateAPIErrors",1,!0),translationService:_.get("translationService",oe),detectService:_.get("detectService",ne),hotkeyButton:_.get("hotkeyButton",null,!0),m3u8ProxyHost:_.get("m3u8ProxyHost",Qt),translateProxyEnabled:_.get("translateProxyEnabled",0,!0),proxyWorkerHost:_.get("proxyWorkerHost",Xt),audioBooster:_.get("audioBooster",0,!0)};this.data=Object.fromEntries(await Promise.all(Object.entries(t).map((async([t,e])=>[t,await e])))),console.log("[db] data from db: ",this.data),0===this.data.translateProxyEnabled&&GM_info?.scriptHandler&&Ne.includes(GM_info.scriptHandler)&&(this.data.translateProxyEnabled=1,await _.set("translateProxyEnabled",1),I.log("translateProxyEnabled",this.data.translateProxyEnabled)),I.log("Extension compatibility passed..."),this.votOpts={headers:1===this.data.translateProxyEnabled?{}:{"sec-ch-ua":null,"sec-ch-ua-mobile":null,"sec-ch-ua-platform":null},fetchFn:q,hostVOT:te,host:1===this.data.translateProxyEnabled?this.data.proxyWorkerHost:"api.browser.yandex.ru"},this.votClient=new(1===this.data.translateProxyEnabled?ut:dt)(this.votOpts),this.subtitlesWidget=new Oe(this.video,this.container,this.site),this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength),this.subtitlesWidget.setHighlightWords(this.data.highlightWords),this.subtitlesWidget.setFontSize(this.data.subtitlesFontSize),this.subtitlesWidget.setOpacity(this.data.subtitlesOpacity),this.initUI(),this.initUIEvents(),this.initAudioBooster(),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru",this.initExtraEvents(),await Promise.all([this.updateSubtitles(),this.autoTranslate()]),this.initialized=!0}transformBtn(t="none",e){this.votButton.container.dataset.status=t;const o="error"===t&&e.includes(z.get("translationTake"));this.setLoadingBtn(o),this.votButton.label.textContent=e,this.votButton.container.title="error"===t?e:""}setLoadingBtn(t=!1){this.votButton.container.dataset.loading=t}initAudioBooster(){this.audio.crossOrigin="anonymous",this.audioContext&&(this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination),this.audioSource=this.audioContext.createMediaElementSource(this.audio),this.audioSource.connect(this.gainNode))}initUI(){this.votButton=pe.createVOTButton(z.get("translateVideo")),this.votButton.container.style.opacity=0,this.data?.buttonPos&&"default"!==this.data?.buttonPos&&this.container.clientWidth&&this.container.clientWidth>550?(this.votButton.container.dataset.direction="column",this.votButton.container.dataset.position=this.data?.buttonPos):(this.votButton.container.dataset.direction="row",this.votButton.container.dataset.position="default"),this.container.appendChild(this.votButton.container),this.votButton.pipButton.hidden=!B()||!this.data?.showPiPButton,this.votButton.separator2.hidden=!B()||!this.data?.showPiPButton,this.votButton.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votMenu=pe.createVOTMenu(z.get("VOTSettings")),this.votMenu.container.dataset.position=this.container.clientWidth&&this.container.clientWidth>550?this.data?.buttonPos:"default",this.container.appendChild(this.votMenu.container),this.votDownloadButton=pe.createIconButton(_t``}))}debounce(t,e){let o;return(...n)=>{clearTimeout(o),o=setTimeout((()=>t.apply(this,n)),e)}}release(){document.removeEventListener("mousedown",this.onMouseDownBound),document.removeEventListener("mouseup",this.onMouseUpBound),document.removeEventListener("mousemove",this.onMouseMoveBound),this.video?.removeEventListener("timeupdate",this.onTimeUpdateBound),this.resizeObserver.disconnect(),this.subtitlesContainer.remove()}}o("./node_modules/requestidlecallback-polyfill/index.js");class Ie{constructor(){this.listeners=new Set}hasListener(t){return this.listeners.has(t)}dispatchToListener(t,...e){try{t(...e)}catch(t){console.error("[VOT]",t)}}addListener(t){if(this.hasListener(t))throw new Error("[VOT] The listener has already been added.");this.listeners.add(t)}removeListener(t){if(!this.hasListener(t))throw new Error("[VOT] The listener has not been added yet.");this.listeners.delete(t)}dispatch(...t){for(const e of Array.from(this.listeners))this.dispatchToListener(e,...t)}}const Ee=new Set(["advertise","promo","sponsor","banner","commercial","preroll","midroll","postroll","ad-container","sponsored"]),_e=(()=>{const t=Array.from(Ee).join("|");return new RegExp(t,"i")})(),$e=t=>{const e=[];for(let o=0;o({label:z.get("langs")[t]??t.toUpperCase(),value:t,selected:e===t})))}const Fe=t=>t?z.get("VOTChangeHotkeyWithCurrent").replace("{0}",t.replace("Key","")):z.get("VOTCreateTranslationHotkey");class qe{translateFromLang="en";translateToLang=R;timer;videoData="";firstPlay=!0;audio=new Audio;audioContext=function(){const t=window.AudioContext||window.webkitAudioContext;return t?new t:void 0}();hls=D();votClient;videoTranslations=[];videoTranslationTTL=7200;cachedTranslation;downloadTranslationUrl=null;autoRetry;streamPing;votOpts;volumeOnStart;tempOriginalVolume;tempVolume;firstSyncVolume=!0;subtitlesList=[];subtitlesListVideoId=null;dragging;constructor(t,e,o){E.log("[VideoHandler] add video:",t,"container:",e,this),this.video=t,this.container=e,this.site=o,this.init()}async translateVideoImpl(t,e,o,n=null){if(clearTimeout(this.autoRetry),E.log(t,`Translate video (requestLang: ${e}, responseLang: ${o})`),await rt(this.site,this.video)!==t.videoId)return null;try{const i=await this.votClient.translateVideo({videoData:t,requestLang:e,responseLang:o,translationHelp:n});if(E.log("Translate video result",i),i.translated&&i.remainingTime<1)return E.log("Video translation finished with this data: ",i),i;await this.updateTranslationErrorMsg(i.remainingTime>0?function(t){const e=Math.floor(t/60),o=Math.floor(t%60);return e>=60?z.get("translationTakeMoreThanHour"):1===e||0===e&&o>0?z.get("translationTakeAboutMinute"):11!==e&&e%10==1?z.get("translationTakeApproximatelyMinute2").replace("{0}",e):![12,13,14].includes(e)&&[2,3,4].includes(e%10)?z.get("translationTakeApproximatelyMinute").replace("{0}",e):z.get("translationTakeApproximatelyMinutes").replace("{0}",e)}(i.remainingTime):i.message??z.get("translationTakeFewMinutes"))}catch(t){return console.error("[VOT] Failed to translate video",t),await this.updateTranslationErrorMsg(t.data?.message??t),null}return new Promise((i=>{const a=this.subtitlesList.some((t=>"yandex"===t.source))?2e4:3e4;this.autoRetry=setTimeout((async()=>{const a=await this.translateVideoImpl(t,e,o,n);(!a||a.translated&&a.remainingTime<1)&&i(a)}),a)}))}async translateStreamImpl(t,e,o){if(clearTimeout(this.autoRetry),E.log(t,`Translate stream (requestLang: ${e}, responseLang: ${o})`),await rt(this.site,this.video)!==t.videoId)return null;try{const n=await this.votClient.translateStream({videoData:t,requestLang:e,responseLang:o});if(E.log("Translate stream result",n),!n.translated&&10===n.interval)return await this.updateTranslationErrorMsg(z.get("translationTakeFewMinutes")),new Promise((i=>{this.autoRetry=setTimeout((async()=>{const n=await this.translateStreamImpl(t,e,o);n&&!n.translated&&10===n.interval||i(n)}),1e3*n.interval)}));if(n.message)throw E.log(`Stream translation aborted! Message: ${n.message}`),new lt("streamNoConnectionToServer");if(!n.result)throw E.log("Failed to find translation result! Data:",n),new lt("audioNotReceived");return E.log("Stream translated successfully. Running...",n),this.streamPing=setInterval((async()=>{E.log("Ping stream translation",n.pingId),this.votClient.pingStream({pingId:n.pingId})}),1e3*n.interval),n}catch(t){return console.error("[VOT] Failed to translate stream",t),await this.updateTranslationErrorMsg(t.data?.message??t),null}}async autoTranslate(){if(this.firstPlay&&1===this.data.autoTranslate&&this.videoData.videoId){this.firstPlay=!1;try{await this.translateExecutor(this.videoData.videoId)}catch(t){console.error("[VOT]",t),this.transformBtn("error","VOTLocalizedError"===t?.name?t.localizedMessage:t)}}}async init(){if(this.initialized)return;const t={autoTranslate:_.get("autoTranslate",0,!0),dontTranslateLanguage:_.get("dontTranslateLanguage",R),dontTranslateYourLang:_.get("dontTranslateYourLang",1,!0),autoSetVolumeYandexStyle:_.get("autoSetVolumeYandexStyle",1,!0),autoVolume:_.get("autoVolume",ne,!0),buttonPos:_.get("buttonPos","default"),showVideoSlider:_.get("showVideoSlider",1,!0),syncVolume:_.get("syncVolume",0,!0),subtitlesMaxLength:_.get("subtitlesMaxLength",300,!0),highlightWords:_.get("highlightWords",0,!0),subtitlesFontSize:_.get("subtitlesFontSize",20,!0),subtitlesOpacity:_.get("subtitlesOpacity",20,!0),responseLanguage:_.get("responseLanguage",R),defaultVolume:_.get("defaultVolume",100,!0),audioProxy:_.get("audioProxy",0,!0),showPiPButton:_.get("showPiPButton",0,!0),translateAPIErrors:_.get("translateAPIErrors",1,!0),translationService:_.get("translationService",ie),detectService:_.get("detectService",ae),hotkeyButton:_.get("hotkeyButton",null,!0),m3u8ProxyHost:_.get("m3u8ProxyHost",te),translateProxyEnabled:_.get("translateProxyEnabled",0,!0),proxyWorkerHost:_.get("proxyWorkerHost",ee),audioBooster:_.get("audioBooster",0,!0)};this.data=Object.fromEntries(await Promise.all(Object.entries(t).map((async([t,e])=>[t,await e])))),console.log("[db] data from db: ",this.data),0===this.data.translateProxyEnabled&&GM_info?.scriptHandler&&Ne.includes(GM_info.scriptHandler)&&(this.data.translateProxyEnabled=1,await _.set("translateProxyEnabled",1),E.log("translateProxyEnabled",this.data.translateProxyEnabled)),E.log("Extension compatibility passed..."),this.votOpts={headers:1===this.data.translateProxyEnabled?{}:{"sec-ch-ua":null,"sec-ch-ua-mobile":null,"sec-ch-ua-platform":null},fetchFn:q,hostVOT:oe,host:1===this.data.translateProxyEnabled?this.data.proxyWorkerHost:"api.browser.yandex.ru"},this.votClient=new(1===this.data.translateProxyEnabled?ht:ct)(this.votOpts),this.subtitlesWidget=new Pe(this.video,this.container,this.site),this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength),this.subtitlesWidget.setHighlightWords(this.data.highlightWords),this.subtitlesWidget.setFontSize(this.data.subtitlesFontSize),this.subtitlesWidget.setOpacity(this.data.subtitlesOpacity),this.initUI(),this.initUIEvents(),this.initAudioBooster(),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage??"ru"),this.translateToLang=this.data.responseLanguage??"ru",this.initExtraEvents(),await Promise.all([this.updateSubtitles(),this.autoTranslate()]),this.initialized=!0}transformBtn(t="none",e){this.votButton.container.dataset.status=t;const o="error"===t&&e.includes(z.get("translationTake"));this.setLoadingBtn(o),this.votButton.label.textContent=e,this.votButton.container.title="error"===t?e:""}setLoadingBtn(t=!1){this.votButton.container.dataset.loading=t}initAudioBooster(){this.audio.crossOrigin="anonymous",this.audioContext&&(this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination),this.audioSource=this.audioContext.createMediaElementSource(this.audio),this.audioSource.connect(this.gainNode))}initUI(){this.votButton=ve.createVOTButton(z.get("translateVideo")),this.votButton.container.style.opacity=0,this.data?.buttonPos&&"default"!==this.data?.buttonPos&&this.container.clientWidth&&this.container.clientWidth>550?(this.votButton.container.dataset.direction="column",this.votButton.container.dataset.position=this.data?.buttonPos):(this.votButton.container.dataset.direction="row",this.votButton.container.dataset.position="default"),this.container.appendChild(this.votButton.container),this.votButton.pipButton.hidden=!B()||!this.data?.showPiPButton,this.votButton.separator2.hidden=!B()||!this.data?.showPiPButton,this.votButton.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votMenu=ve.createVOTMenu(z.get("VOTSettings")),this.votMenu.container.dataset.position=this.container.clientWidth&&this.container.clientWidth>550?this.data?.buttonPos:"default",this.container.appendChild(this.votMenu.container),this.votDownloadButton=ve.createIconButton(Rt` - `),this.votDownloadButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadButton),this.votDownloadSubtitlesButton=pe.createIconButton(_t``),this.votDownloadButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadButton),this.votDownloadSubtitlesButton=ve.createIconButton(Rt` - `),this.votDownloadSubtitlesButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadSubtitlesButton),this.votSettingsButton=pe.createIconButton(_t``),this.votDownloadSubtitlesButton.hidden=!0,this.votMenu.headerContainer.appendChild(this.votDownloadSubtitlesButton),this.votSettingsButton=ve.createIconButton(Rt` - `),this.votMenu.headerContainer.appendChild(this.votSettingsButton),this.votTranslationLanguageSelect=pe.createVOTLanguageSelect({fromTitle:z.get("langs")[this.video.detectedLanguage],fromDialogTitle:z.get("videoLanguage"),fromItems:$e(O,this.videoData.detectedLanguage),fromOnSelectCB:async t=>{I.log("[fromOnSelectCB] select from language",t.target.dataset.votValue),this.videoData=await this.getVideoData(),this.setSelectMenuValues(t.target.dataset.votValue,this.videoData.responseLanguage)},toTitle:z.get("langs")[this.video.responseLanguage],toDialogTitle:z.get("translationLanguage"),toItems:$e(C,this.videoData.responseLanguage),toOnSelectCB:async t=>{const e=t.target.dataset.votValue;I.log("[toOnSelectCB] select to language",e),this.data.responseLanguage=this.translateToLang=e,await _.set("responseLanguage",this.data.responseLanguage),I.log("Response Language value changed. New value: ",this.data.responseLanguage),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage)}}),this.votMenu.bodyContainer.appendChild(this.votTranslationLanguageSelect.container),this.votSubtitlesSelect=pe.createVOTSelect(z.get("VOTSubtitlesDisabled"),z.get("VOTSubtitles"),[{label:z.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1}],{onSelectCb:async t=>{await this.changeSubtitlesLang(t.target.dataset.votValue)},labelElement:pe.createVOTSelectLabel(z.get("VOTSubtitles"))}),this.votMenu.bodyContainer.appendChild(this.votSubtitlesSelect.container),this.votVideoVolumeSlider=pe.createSlider(It`${z.get("VOTVolume")}: - ${100*this.getVideoVolume()}%`,100*this.getVideoVolume()),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoVolumeSlider.container),this.votVideoTranslationVolumeSlider=pe.createSlider(It`${z.get("VOTVolumeTranslation")}: - ${this.data?.defaultVolume??100}%`,this.data?.defaultVolume??100,0,this.data.audioBooster?900:100),this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoTranslationVolumeSlider.container),this.votMenu.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votSettingsDialog=pe.createDialog(z.get("VOTSettings")),document.documentElement.appendChild(this.votSettingsDialog.container),this.votTranslationHeader=pe.createHeader(z.get("translationSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationHeader),this.votAutoTranslateCheckbox=pe.createCheckbox(z.get("VOTAutoTranslate"),this.data?.autoTranslate??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoTranslateCheckbox.container),this.votDontTranslateYourLangSelect=pe.createVOTSelect(z.get("langs")[_.syncGet("dontTranslateLanguage",R)],z.get("VOTDontTranslateYourLang"),$e(O,_.syncGet("dontTranslateLanguage",R)),{onSelectCb:async t=>{this.data.dontTranslateLanguage=t.target.dataset.votValue,await _.set("dontTranslateLanguage",this.data.dontTranslateLanguage)},labelElement:pe.createCheckbox(z.get("VOTDontTranslateYourLang"),this.data?.dontTranslateYourLang??!0).container}),this.votSettingsDialog.bodyContainer.appendChild(this.votDontTranslateYourLangSelect.container),this.changehotkeyButton=pe.createOutlinedButton(Be(this.data.hotkeyButton)),this.votSettingsDialog.bodyContainer.appendChild(this.changehotkeyButton),this.votAutoSetVolumeCheckbox=pe.createCheckbox(`${z.get("VOTAutoSetVolume")}`,this.data?.autoSetVolumeYandexStyle??!0),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeCheckbox.container),this.votAutoSetVolumeSlider=pe.createSlider(It`${100*(this.data?.autoVolume??ee)}%`,100*(this.data?.autoVolume??ee),0,100),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeSlider.container),this.votShowVideoSliderCheckbox=pe.createCheckbox(z.get("VOTShowVideoSlider"),this.data?.showVideoSlider??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votShowVideoSliderCheckbox.container),this.votAudioBoosterCheckbox=pe.createCheckbox(z.get("VOTAudioBooster"),this.data?.audioBooster??!1),this.votAudioBoosterCheckbox.container.hidden=!this.audioContext,this.votSettingsDialog.bodyContainer.appendChild(this.votAudioBoosterCheckbox.container),this.votSyncVolumeCheckbox=pe.createCheckbox(z.get("VOTSyncVolume"),this.data?.syncVolume??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votSyncVolumeCheckbox.container),this.votTranslationServiceSelect=pe.createVOTSelect(_.syncGet("translationService",oe).toUpperCase(),z.get("VOTTranslationService"),$e(be,_.syncGet("translationService",oe)),{onSelectCb:async t=>{this.data.translationService=t.target.dataset.votValue,await _.set("translationService",this.data.translationService)},labelElement:pe.createCheckbox(z.get("VOTTranslateAPIErrors"),this.data.translateAPIErrors??!0).container}),this.votTranslationServiceSelect.container.hidden="ru"===z.lang,this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationServiceSelect.container),this.votDetectServiceSelect=pe.createVOTSelect(_.syncGet("detectService",ne).toUpperCase(),z.get("VOTDetectService"),$e(fe,_.syncGet("detectService",ne)),{onSelectCb:async t=>{this.data.detectService=t.target.dataset.votValue,await _.set("detectService",this.data.detectService)},labelElement:pe.createVOTSelectLabel(z.get("VOTDetectService"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votDetectServiceSelect.container),this.votSubtitlesHeader=pe.createHeader(z.get("subtitlesSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHeader),this.votSubtitlesDetails=pe.createDetails(z.get("VOTSubtitlesDesign")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesDetails.container),this.votProxyHeader=pe.createHeader(z.get("proxySettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyHeader),this.votM3u8ProxyHostTextfield=pe.createTextfield(z.get("VOTM3u8ProxyHost"),this.data?.m3u8ProxyHost,Qt),this.votSettingsDialog.bodyContainer.appendChild(this.votM3u8ProxyHostTextfield.container),this.votProxyWorkerHostTextfield=pe.createTextfield(z.get("VOTProxyWorkerHost"),this.data?.proxyWorkerHost,Xt),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyWorkerHostTextfield.container),this.votAudioProxyCheckbox=pe.createCheckbox(z.get("VOTAudioProxy"),this.data?.audioProxy??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAudioProxyCheckbox.container),this.votAboutHeader=pe.createHeader(z.get("about")),this.votSettingsDialog.bodyContainer.appendChild(this.votAboutHeader),this.votLanguageSelect=pe.createVOTSelect(z.get("langs")[_.syncGet("locale-lang-override","auto")],z.get("VOTMenuLanguage"),$e(H,_.syncGet("locale-lang-override","auto")),{onSelectCb:async t=>{await _.set("locale-lang-override",t.target.dataset.votValue)},labelElement:pe.createVOTSelectLabel(z.get("VOTMenuLanguage"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votLanguageSelect.container),this.votShowPiPButtonCheckbox=pe.createCheckbox(z.get("VOTShowPiPButton"),this.data?.showPiPButton??!1),this.votShowPiPButtonCheckbox.container.hidden=!B(),this.votSettingsDialog.bodyContainer.appendChild(this.votShowPiPButtonCheckbox.container),this.votVersionInfo=pe.createInformation(`${z.get("VOTVersion")}:`,GM_info.script.version),this.votSettingsDialog.bodyContainer.appendChild(this.votVersionInfo.container),this.votAuthorsInfo=pe.createInformation(`${z.get("VOTAuthors")}:`,GM_info.script.author),this.votSettingsDialog.bodyContainer.appendChild(this.votAuthorsInfo.container),this.votLoaderInfo=pe.createInformation(`${z.get("VOTLoader")}:`,`${GM_info.scriptHandler} v${GM_info.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votLoaderInfo.container),this.votBrowserInfo=pe.createInformation(`${z.get("VOTBrowser")}:`,`${_e.browser.name} ${_e.browser.version} (${_e.os.name} ${_e.os.version})`),this.votSettingsDialog.bodyContainer.appendChild(this.votBrowserInfo.container),this.votResetSettingsButton=pe.createButton(z.get("resetSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votResetSettingsButton)}async handleTranslationBtnClick(){if(this.audio.src)return I.log("[click translationBtn] audio.src is not empty"),void this.stopTranslate();if(this.hls.url)return I.log("[click translationBtn] hls is not empty"),void this.stopTranslate();try{if(I.log("[click translationBtn] trying execute translation"),!this.videoData.videoId)throw new rt("VOTNoVideoIDFound");"vk"===this.site.host&&"clips"===this.site.additionalData&&(this.videoData=await this.getVideoData()),await this.translateExecutor(this.videoData.videoId)}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t)}}initUIEvents(){this.votButton.translateButton.addEventListener("click",(async()=>{await this.handleTranslationBtnClick()})),this.votButton.pipButton.addEventListener("click",(()=>{(async()=>{this.video!==document.pictureInPictureElement?await this.video.requestPictureInPicture():await document.exitPictureInPicture()})()})),this.votButton.menuButton.addEventListener("click",(()=>{this.votMenu.container.hidden=!this.votMenu.container.hidden})),this.votButton.container.addEventListener("mousedown",(()=>{this.dragging=!0})),this.container.addEventListener("mouseup",(()=>{this.dragging=!1})),this.container.addEventListener("mousemove",(async t=>{if(this.dragging){t.preventDefault();const e=t.clientX/this.container.clientWidth*100;this.data.buttonPos=this.container.clientWidth&&this.container.clientWidth>550?e<=44?"left":e>=66?"right":"default":"default",this.votButton.container.dataset.direction="default"===this.data.buttonPos?"row":"column",this.votButton.container.dataset.position=this.data.buttonPos,this.votMenu.container.dataset.position=this.data.buttonPos,this.container.clientWidth&&this.container.clientWidth>550&&await _.set("buttonPos",this.data.buttonPos)}})),this.votDownloadButton.addEventListener("click",(()=>{this.downloadTranslationUrl&&window.open(this.downloadTranslationUrl,"_blank").focus()})),this.votDownloadSubtitlesButton.addEventListener("click",(async()=>{const t=function(t,e="srt"){const o=t.subtitles.map(((t,o)=>{const n=t.startMs/1e3,i=(t.startMs+t.durationMs)/1e3;return("srt"===e?`${o+1}\n`:"")+`${ct(n)} --\x3e ${ct(i)}\n${t.text}\n\n`})).join("").trim();return"vtt"===e?`WEBVTT\n\n${o}`:o}(this.yandexSubtitles,"srt"),e=new Blob([t],{type:"text/plain"}),o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=`subtitles_${this.videoData.videoId}.srt`,n.click(),URL.revokeObjectURL(o)})),this.votSettingsButton.addEventListener("click",(()=>{this.votSettingsDialog.container.hidden=!this.votSettingsDialog.container.hidden,(document.fullscreenElement||document.webkitFullscreenElement)&&(document.webkitExitFullscreen&&document.webkitExitFullscreen(),document.exitFullscreen&&document.exitFullscreen())})),this.votVideoVolumeSlider.input.addEventListener("input",(t=>{const e=Number(t.target.value);this.votVideoVolumeSlider.label.querySelector("strong").textContent=`${e}%`,this.setVideoVolume(e/100),this.data.syncVolume&&this.syncVolumeWrapper("video",e)})),this.votVideoTranslationVolumeSlider.input.addEventListener("input",(t=>{(async()=>{this.data.defaultVolume=Number(t.target.value),await _.set("defaultVolume",this.data.defaultVolume),this.votVideoTranslationVolumeSlider.label.querySelector("strong").textContent=`${this.data.defaultVolume}%`,this.setAudioVolume(this.data.defaultVolume/100),this.data.syncVolume&&(this.syncVolumeWrapper("translation",this.data.defaultVolume),["youtube","googledrive"].includes(this.site.host)&&"mobile"!==this.site.additionalData&&this.setVideoVolume(this.tempOriginalVolume/100))})()}));{this.votAutoTranslateCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.autoTranslate=Number(t.target.checked),await Promise.all([_.set("autoTranslate",this.data.autoTranslate),this.autoTranslate()]),I.log("autoTranslate value changed. New value: ",this.data.autoTranslate)})()})),this.votDontTranslateYourLangSelect.labelElement.addEventListener("change",(t=>{(async()=>{this.data.dontTranslateYourLang=Number(t.target.checked),await _.set("dontTranslateYourLang",this.data.dontTranslateYourLang),I.log("dontTranslateYourLang value changed. New value: ",this.data.dontTranslateYourLang)})()}));const t=async t=>{await _.set("hotkeyButton",t),this.data.hotkeyButton=t,this.changehotkeyButton.textContent=Be(t)},e=o=>{const n="Escape"===o.code?null:o.code;t(n),document.removeEventListener("keydown",e)};this.changehotkeyButton.addEventListener("click",(()=>{this.changehotkeyButton.textContent=z.get("VOTPressNewHotkey"),document.addEventListener("keydown",e)})),this.votAutoSetVolumeCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.autoSetVolumeYandexStyle=Number(t.target.checked),await _.set("autoSetVolumeYandexStyle",this.data.autoSetVolumeYandexStyle),I.log("autoSetVolumeYandexStyle value changed. New value: ",this.data.autoSetVolumeYandexStyle)})()})),this.votAutoSetVolumeSlider.input.addEventListener("input",(t=>{(async()=>{const e=Number(t.target.value);this.data.autoVolume=(e/100).toFixed(2),await _.set("autoVolume",this.data.autoVolume),this.votAutoSetVolumeSlider.label.querySelector("strong").textContent=`${e}%`})()})),this.votShowVideoSliderCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.showVideoSlider=Number(t.target.checked),await _.set("showVideoSlider",this.data.showVideoSlider),I.log("showVideoSlider value changed. New value: ",this.data.showVideoSlider),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status})()})),this.votAudioBoosterCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.audioBooster=Number(t.target.checked),await _.set("audioBooster",this.data.audioBooster),I.log("audioBooster value changed. New value: ",this.data.audioBooster);const e=this.votVideoTranslationVolumeSlider.input.value;this.votVideoTranslationVolumeSlider.input.max=this.data.audioBooster?900:100,this.data.audioBooster||(this.votVideoTranslationVolumeSlider.input.value=e>100?100:e,this.votVideoTranslationVolumeSlider.input.dispatchEvent(new Event("input")))})()})),this.votSyncVolumeCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.syncVolume=Number(t.target.checked),await _.set("syncVolume",this.data.syncVolume),I.log("syncVolume value changed. New value: ",this.data.syncVolume)})()})),this.votTranslationServiceSelect.labelElement.addEventListener("change",(t=>{(async()=>{this.data.translateAPIErrors=Number(t.target.checked),await _.set("translateAPIErrors",this.data.translateAPIErrors),I.log("translateAPIErrors value changed. New value: ",this.data.translateAPIErrors)})()})),this.votSubtitlesDetails.container.addEventListener("click",(()=>{this.votSubtitlesDialog=pe.createDialog(z.get("VOTSubtitlesDesign")),this.votSubtitlesDialog.container.classList.add("vot-dialog-temp"),this.votSubtitlesDialog.container.hidden=!1,this.votSubtitlesDialog.backdrop.onclick=this.votSubtitlesDialog.closeButton.onclick=()=>{this.votSubtitlesDialog.container.remove()},this.votSubtitlesHighlightWordsCheckbox=pe.createCheckbox(z.get("VOTHighlightWords"),this.data?.highlightWords??!1),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesHighlightWordsCheckbox.container),this.votSubtitlesMaxLengthSlider=pe.createSlider(It`${z.get("VOTSubtitlesMaxLength")}: - ${this.data?.subtitlesMaxLength??300}`,this.data?.subtitlesMaxLength??300,50,300),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesMaxLengthSlider.container),this.votSubtitlesFontSizeSlider=pe.createSlider(It`${z.get("VOTSubtitlesFontSize")}: - ${this.data?.subtitlesFontSize??20}`,this.data?.subtitlesFontSize??20,8,50),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesFontSizeSlider.container),this.votSubtitlesOpacitySlider=pe.createSlider(It`${z.get("VOTSubtitlesOpacity")}: - ${this.data?.subtitlesOpacity??20}`,this.data?.subtitlesOpacity??20,0,100),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesOpacitySlider.container),this.votSubtitlesHighlightWordsCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.highlightWords=Number(t.target.checked),await _.set("highlightWords",this.data.highlightWords),I.log("highlightWords value changed. New value: ",this.data.highlightWords),this.subtitlesWidget.setHighlightWords(this.data.highlightWords)})()})),this.votSubtitlesMaxLengthSlider.input.addEventListener("input",(t=>{(async()=>{this.data.subtitlesMaxLength=Number(t.target.value),await _.set("subtitlesMaxLength",this.data.subtitlesMaxLength),this.votSubtitlesMaxLengthSlider.label.querySelector("strong").textContent=`${this.data.subtitlesMaxLength}`,this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength)})()})),this.votSubtitlesFontSizeSlider.input.addEventListener("input",(t=>{(async()=>{this.data.subtitlesFontSize=Number(t.target.value),await _.set("subtitlesFontSize",this.data.subtitlesFontSize),this.votSubtitlesFontSizeSlider.label.querySelector("strong").textContent=`${this.data.subtitlesFontSize}`,this.subtitlesWidget.setFontSize(this.data.subtitlesFontSize)})()})),this.votSubtitlesOpacitySlider.input.addEventListener("input",(t=>{(async()=>{this.data.subtitlesOpacity=Number(t.target.value),await _.set("subtitlesOpacity",this.data.subtitlesOpacity),this.votSubtitlesOpacitySlider.label.querySelector("strong").textContent=`${this.data.subtitlesOpacity}`,this.subtitlesWidget.setOpacity(this.data.subtitlesOpacity)})()})),document.documentElement.appendChild(this.votSubtitlesDialog.container)})),this.votShowPiPButtonCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.showPiPButton=Number(t.target.checked),await _.set("showPiPButton",this.data.showPiPButton),I.log("showPiPButton value changed. New value: ",this.data.showPiPButton),this.votButton.pipButton.hidden=!B()||!this.data.showPiPButton,this.votButton.separator2.hidden=!B()||!this.data.showPiPButton})()})),this.votM3u8ProxyHostTextfield.input.addEventListener("change",(t=>{(async()=>{this.data.m3u8ProxyHost=t.target.value||Qt,await _.set("m3u8ProxyHost",this.data.m3u8ProxyHost),I.log("m3u8ProxyHost value changed. New value: ",this.data.m3u8ProxyHost)})()})),this.votProxyWorkerHostTextfield.input.addEventListener("change",(t=>{(async()=>{this.data.proxyWorkerHost=t.target.value||Xt,await _.set("proxyWorkerHost",this.data.proxyWorkerHost),I.log("proxyWorkerHost value changed. New value: ",this.data.proxyWorkerHost),this.votClient.host=this.data.proxyWorkerHost})()})),this.votAudioProxyCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.audioProxy=Number(t.target.checked),await _.set("audioProxy",this.data.audioProxy),I.log("audioProxy value changed. New value: ",this.data.audioProxy)})()})),this.votResetSettingsButton.addEventListener("click",(()=>{(async()=>{z.reset();const t=await _.list();for(let e=0;e{this.extraEvents.push({element:t,event:e,handler:o}),t.addEventListener(e,o)},e=(e,o,n)=>{for(const i of o)t(e,i,n)};if(this.resizeObserver=new ResizeObserver((t=>{for(let e=0;e550;this.votButton.container.dataset.position=this.votMenu.container.dataset.position=e?this.data?.buttonPos:"default",this.votButton.container.dataset.direction=this.data?.buttonPos&&"default"!==this.data?.buttonPos&&e?"column":"row"})),this.resizeObserver.observe(this.video),this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`),["youtube","googledrive"].includes(this.site.host)&&"mobile"!==this.site.additionalData){this.syncVolumeObserver=new MutationObserver((t=>{if(this.audio.src&&this.data.syncVolume)for(let e=0;e{const e=t.target,o=this.votButton.container,n=this.votMenu.container,i=this.container,a=this.votSettingsDialog.container,r=document.querySelector(".vot-dialog-temp"),s=o.contains(e),l=n.contains(e),d=i.contains(e),u=a.contains(e),c=r?.contains(e)??!1;I.log(`[document click] ${s} ${l} ${d} ${u} ${c}`),s||l||u||c||(d||this.logout(0),this.votMenu.container.hidden=!0)})),document.addEventListener("keydown",(async t=>{const e=t.code,o=document.activeElement;["input","textarea"].includes(o.tagName.toLowerCase())||o.isContentEditable||e!==this.data.hotkeyButton||await this.handleTranslationBtnClick()})),o="pornhub"===this.site.host?"embed"===this.site.additionalData?document.querySelector("#player"):this.container.querySelector(".mgp_eventCatcher"):"twitter"===this.site.host?document.querySelector('div[data-testid="videoPlayer"]'):"yandexdisk"===this.site.host?document.querySelector(".video-player__player"):this.container,o&&e(o,["mousemove","mouseout"],this.resetTimer),t(this.votButton.container,"mousemove",this.changeOpacityOnEvent),t(this.votMenu.container,"mousemove",this.changeOpacityOnEvent),e(document,["touchstart","touchmove","touchend"],this.changeOpacityOnEvent),t(this.votButton.container,"mousedown",(t=>{t.stopImmediatePropagation()})),t(this.votMenu.container,"mousedown",(t=>{t.stopImmediatePropagation()})),"youtube"===this.site.host&&(this.container.draggable=!1),"googledrive"===this.site.host&&(this.container.style.height="100%"),t(this.video,"canplay",(async()=>{"rutube"===this.site.host&&this.video.src||await it(this.site,this.video)!==this.videoData.videoId&&(await this.handleSrcChanged(),await this.autoTranslate(),I.log("lipsync mode is canplay"))})),t(this.video,"emptied",(async()=>{this.video.src&&await it(this.site,this.video)===this.videoData.videoId||(I.log("lipsync mode is emptied"),this.videoData="",this.stopTranslation())})),["rutube","ok"].includes(this.site.host)||t(this.video,"volumechange",(()=>{this.syncVideoVolumeSlider()}))}logout(t){this.votMenu.container.hidden&&(this.votButton.container.style.opacity=t)}resetTimer=()=>{clearTimeout(this.timer),this.logout(1),this.timer=setTimeout((()=>{this.logout(0)}),1e3)};changeOpacityOnEvent=t=>{clearTimeout(this.timer),this.logout(1),t.stopPropagation()};async changeSubtitlesLang(t){if(I.log("[onchange] subtitles",t),this.votSubtitlesSelect.setSelected(t),"disabled"===t)this.votSubtitlesSelect.setTitle(z.get("VOTSubtitlesDisabled")),this.subtitlesWidget.setContent(null),this.votDownloadSubtitlesButton.hidden=!0,this.yandexSubtitles=null;else{const e=this.subtitlesList.at(parseInt(t));if(1===this.data.audioProxy&&e.url.startsWith("https://brosubs.s3-private.mds.yandex.net/vtrans/")){const t=e.url.replace("https://brosubs.s3-private.mds.yandex.net/vtrans/","");e.url=`https://${this.data.proxyWorkerHost}/video-subtitles/subtitles-proxy/${t}`,console.log(`[VOT] Subs proxied via ${e.url}`)}this.yandexSubtitles=await Me(e),this.subtitlesWidget.setContent(this.yandexSubtitles),this.votDownloadSubtitlesButton.hidden=!1}}async updateSubtitlesLangSelect(){const t=[{label:z.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1},...this.subtitlesList.map(((t,e)=>({label:(z.get("langs")[t.language]??t.language.toUpperCase())+(t.translatedFromLanguage?` ${z.get("VOTTranslatedFrom")} ${z.get("langs")[t.translatedFromLanguage]??t.translatedFromLanguage.toUpperCase()}`:"")+("yandex"!==t.source?` ${t.source}`:"")+(t.isAutoGenerated?` (${z.get("VOTAutogenerated")})`:""),value:e,selected:!1,disabled:!1})))];this.votSubtitlesSelect.updateItems(t),await this.changeSubtitlesLang(t[0].value)}async updateSubtitles(){if(await this.changeSubtitlesLang("disabled"),!this.videoData.videoId)return console.error(`[VOT] ${z.getDefault("VOTNoVideoIDFound")}`),this.subtitlesList=[],this.subtitlesListVideoId=null,this.votButton.container.hidden=!0,void await this.updateSubtitlesLangSelect();if(this.votButton.container.hidden=!1,this.subtitlesListVideoId!==this.videoData.videoId){try{this.subtitlesList=await Ae(this.votClient,this.videoData)}catch(t){if("Unsupported video URL for getting subtitles"===t?.unlocalizedMessage)return this.subtitlesList=[],void await this.updateSubtitlesLangSelect();I.log("Error with yandex server, try auto-fix...",t),this.votOpts={fetchFn:q,hostVOT:te,host:this.data.proxyWorkerHost},this.votClient=new ut(this.votOpts),this.subtitlesList=await Ae(this.votClient,this.videoData),await _.set("translateProxyEnabled",1)}this.subtitlesList?this.subtitlesListVideoId=this.videoData.videoId:await this.changeSubtitlesLang("disabled"),await this.updateSubtitlesLangSelect()}}getVideoVolume(){let t=this.video?.volume;return["youtube","googledrive"].includes(this.site.host)&&(t=Te.getVideoVolume()??t),t}setVideoVolume(t){if(["youtube","googledrive"].includes(this.site.host)){if(Te.setVideoVolume(t))return}this.video.volume=t}getAudioVolume(){return this.gainNode?this.gainNode.gain.value:this.audio.volume}setAudioVolume(t){return this.gainNode?this.gainNode.gain.value=t:this.audio.volume=t}isMuted(){return["youtube","googledrive"].includes(this.site.host)?Te.isMuted():this.video?.muted}syncVideoVolumeSlider(){const t=this.isMuted()?0:100*this.getVideoVolume(),e=Math.round(t);this.votVideoVolumeSlider.input.value=e,this.votVideoVolumeSlider.label.querySelector("strong").textContent=`${e}%`,pe.updateSlider(this.votVideoVolumeSlider.input),1===this.data.syncVolume&&(this.tempOriginalVolume=Number(e))}setSelectMenuValues(t,e){this.votTranslationLanguageSelect.fromSelect.setTitle(z.get("langs")[t]),this.votTranslationLanguageSelect.toSelect.setTitle(z.get("langs")[e]),this.votTranslationLanguageSelect.fromSelect.setSelected(t),this.votTranslationLanguageSelect.toSelect.setSelected(e),console.log(`[VOT] Set translation from ${t} to ${e}`),this.videoData.detectedLanguage=t,this.videoData.responseLanguage=e}syncVolumeWrapper(t,e){const o="translation"===t?this.votVideoVolumeSlider:this.votVideoTranslationVolumeSlider,n=Number(o.input.value),i=function(t,e,o,n){let i=e;return e>n?(i=o+(e-n),i=i>100?100:Math.max(i,0),t.volume=i/100):e100?100:Math.max(i,0),t.volume=i/100),i}("translation"===t?this.video:this.audio,e,n,"translation"===t?this.tempVolume:this.tempOriginalVolume);o.input.value=i,o.label.querySelector("strong").textContent=`${i}%`,pe.updateSlider(o.input),this.tempOriginalVolume="translation"===t?i:e,this.tempVolume="translation"===t?e:i}async getVideoData(){const{duration:t,url:e,videoId:o,host:n,translationHelp:i,detectedLanguage:a}=await at(this.site,this.video),r={translationHelp:i??null,isStream:!1,duration:this.video?.duration||t||y.defaultDuration,videoId:o,url:e,host:n,detectedLanguage:a??this.translateFromLang,responseLanguage:this.translateToLang};if("youtube"===this.site.host){const t=await Te.getVideoData();r.isStream=t.isLive,t.title&&(r.detectedLanguage=t.detectedLanguage)}else if(["rutube","ok.ru","mail_ru"].includes(this.site.host))r.detectedLanguage="ru";else if("youku"===this.site.host)r.detectedLanguage="zh";else if("vk"===this.site.host){const t=document.getElementsByTagName("track")?.[0]?.srclang;r.detectedLanguage=t||"auto"}else"weverse"===this.site.host?r.detectedLanguage="ko":["bilibili","piped","invidious","bitchute","rumble","peertube","dailymotion","trovo","yandexdisk","coursehunter","archive","directlink"].includes(this.site.host)&&(r.detectedLanguage="auto");return r}videoValidator(){if(["youtube","ok.ru","vk"].includes(this.site.host)&&(I.log("VideoValidator videoData: ",this.videoData),1===this.data.dontTranslateYourLang&&this.videoData.detectedLanguage===this.data.dontTranslateLanguage))throw new rt("VOTDisableFromYourLang");if(!this.videoData.isStream&&this.videoData.duration>14400)throw new rt("VOTVideoIsTooLong");return!0}lipSync(t=!1){if(I.log("lipsync video",this.video),this.video)if(this.audio.currentTime=this.video.currentTime,this.audio.playbackRate=this.video.playbackRate,t)if("play"!=t)["pause","stop","waiting"].includes(t)&&(I.log(`lipsync mode is ${t}`),this.audio.pause()),"playing"==t&&(I.log("lipsync mode is playing"),this.audio.play());else{I.log("lipsync mode is play");const t=this.audio.play();void 0!==t&&t.catch((async t=>{if(console.error("[VOT]",t),"NotAllowedError"===t.name)throw this.transformBtn("error",z.get("grantPermissionToAutoPlay")),new rt("grantPermissionToAutoPlay")}))}else I.log("lipsync mode is not set")}handleVideoEvent=t=>{I.log(`video ${t.type}`),this.lipSync(t.type)};stopTranslate(){for(const t of Re)this.video.removeEventListener(t,this.handleVideoEvent);this.audio.pause(),this.audio.src="",this.audio.removeAttribute("src"),this.votVideoVolumeSlider.container.hidden=!0,this.votVideoTranslationVolumeSlider.container.hidden=!0,this.votDownloadButton.hidden=!0,this.downloadTranslationUrl=null,this.transformBtn("none",z.get("translateVideo")),I.log(`Volume on start: ${this.volumeOnStart}`),this.volumeOnStart&&this.setVideoVolume(this.volumeOnStart),this.volumeOnStart="",clearInterval(this.streamPing),clearTimeout(this.autoRetry),this.hls?.destroy(),this.hls=D(),this.firstSyncVolume=!0}async translateExecutor(t){I.log("Run translateFunc",t),await this.translateFunc(t,this.videoData.isStream,this.videoData.detectedLanguage,this.videoData.responseLanguage,this.videoData.translationHelp)}async updateTranslationErrorMsg(t){const e=z.get("translationTake"),o=z.lang;if(["Подготавливаем перевод","Видео передано в обработку","Ожидаем перевод видео","Загружаем переведенное аудио"].includes(t)&&this.setLoadingBtn(!0),"VOTLocalizedError"===t?.name)this.transformBtn("error",t.localizedMessage);else if(t instanceof Error)this.transformBtn("error",t?.message);else if(1!==this.data.translateAPIErrors||t.includes(e)||"ru"===o)this.transformBtn("error",t);else{this.setLoadingBtn(!0);const e=await async function(t,e="",o="ru"){switch(await _.get("translationService",oe)){case"yandex":{const n=e&&o?`${e}-${o}`:o;return await ge.translate(t,n)}case"deepl":return await me.translate(t,e,o);default:return t}}(t,"ru",o);this.transformBtn("error",e)}}afterUpdateTranslation(t){this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").textContent=100*this.data.autoVolume+"%",pe.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=t}async updateTranslation(t){if(this.cachedTranslation?.url===this.audio.currentSrc)I.log("[translateFunc] Audio src is the same"),this.audio.src=t;else{try{const e=await q(t,{method:"HEAD",timeout:5e3});if(I.log("Test audio response",e),404===e.status){I.log("Yandex returned not valid audio, trying to fix...");let e=await this.translateVideoImpl(this.videoData,this.videoData.detectedLanguage="auto",this.videoData.responseLanguage,this.videoData.translationHelp);this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage),t=e.url,I.log("Fixed audio audioUrl",t)}else I.log("Valid audioUrl",t)}catch(t){"Timeout"===t.message?(I.log("Request timed out. Handling timeout error..."),this.data.audioProxy=1,await _.set("audioProxy",1)):I.log("Test audio error:",t)}this.audio.src=t;try{await this.audio.play()}catch(t){if(console.error("[VOT]",t),"NotSupportedError"===t.name){if([...V,...M].includes(window.location.hostname))throw new rt("VOTMediaCSPError");this.data.audioProxy=1,await _.set("audioProxy",1)}}}if(1===this.data.audioProxy&&t.startsWith("https://vtrans.s3-private.mds.yandex.net/tts/prod/")){const e=t.replace("https://vtrans.s3-private.mds.yandex.net/tts/prod/","");t=`https://${this.data.proxyWorkerHost}/video-translation/audio-proxy/${e}`,console.log(`[VOT] Audio proxied via ${t}`)}if(this.audio.src=t,this.volumeOnStart||(this.volumeOnStart=this.getVideoVolume()),this.setupAudioSettings(),"twitter"===this.site.host)document.querySelector('button[data-testid="app-bar-back"][role="button"]').addEventListener("click",this.stopTranslation);this.video&&!this.video.paused&&this.lipSync("play");for(const t of Re)this.video.addEventListener(t,this.handleVideoEvent);this.transformBtn("success",z.get("disableTranslate")),this.afterUpdateTranslation(t)}async translateFunc(t,e,o,n,i){if(console.log("[VOT] Video Data: ",this.videoData),I.log("Run videoValidator"),this.videoValidator(),this.setLoadingBtn(!0),e){let t=await this.translateStreamImpl(this.videoData,o,n);if(!t)return void I.log("Skip translation");this.transformBtn("success",z.get("disableTranslate"));const e=`https://${this.data.m3u8ProxyHost}/?all=yes&origin=${encodeURIComponent("https://strm.yandex.ru")}&referer=${encodeURIComponent("https://strm.yandex.ru")}&url=${encodeURIComponent(t.result.url)}`;if(this.hls)this.setupHLS(e);else{if(!this.audio.canPlayType("application/vnd.apple.mpegurl"))throw new rt("audioFormatNotSupported");this.audio.src=e}if("youtube"===this.site.host&&Te.videoSeek(this.video,10),this.setupAudioSettings(),!this.video.src&&!this.video.currentSrc&&!this.video.srcObject)return this.stopTranslation();this.video&&!this.video.paused&&this.lipSync("play");for(const t of Re)this.video.addEventListener(t,this.handleVideoEvent);return this.afterUpdateTranslation(e)}if(this.cachedTranslation=this.videoTranslations.find((e=>e.videoId===t&&e.expires>Date.now()/1e3&&e.from===o&&e.to===n)),this.cachedTranslation)return await this.updateTranslation(this.cachedTranslation.url),void I.log("[translateFunc] Cached translation was received");let a=await this.translateVideoImpl(this.videoData,o,n,i);I.log("[translateRes]",a),a?(await this.updateTranslation(a.url),[k.kick,k.reddit,k.patreon,k.kodik,k.appledeveloper].includes(this.site.host)||this.subtitlesList.some((t=>"yandex"===t.source&&t.translatedFromLanguage===this.videoData.detectedLanguage&&t.language===this.videoData.responseLanguage))||(this.subtitlesList=await Ae(this.votClient,this.videoData),await this.updateSubtitlesLangSelect()),this.videoTranslations.push({videoId:t,from:o,to:n,url:this.downloadTranslationUrl,expires:Date.now()/1e3+this.videoTranslationTTL})):I.log("Skip translation")}setupHLS(t){this.hls.on(Hls.Events.MEDIA_ATTACHED,(function(){I.log("audio and hls.js are now bound together !")})),this.hls.on(Hls.Events.MANIFEST_PARSED,(function(t){I.log("manifest loaded, found "+t?.levels?.length+" quality level")})),this.hls.loadSource(t),this.hls.attachMedia(this.audio),this.hls.on(Hls.Events.ERROR,(function(t){if(t.fatal)switch(t.type){case Hls.ErrorTypes.MEDIA_ERROR:console.log("fatal media error encountered, try to recover"),this.hls.recoverMediaError();break;case Hls.ErrorTypes.NETWORK_ERROR:console.error("fatal network error encountered",t);break;default:this.hls.destroy()}})),I.log(this.hls)}setupAudioSettings(){"number"==typeof this.data.defaultVolume&&this.setAudioVolume(this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume)}stopTranslation=()=>{this.stopTranslate(),this.syncVideoVolumeSlider()};async handleSrcChanged(){I.log("[VideoHandler] src changed",this),this.firstPlay=!0;const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),this.site.selector||(this.container=this.video.parentElement),this.container.contains(this.votButton.container)||(this.container.appendChild(this.votButton.container),this.container.appendChild(this.votMenu.container)),await Promise.all([this.videoData=await this.getVideoData(),this.updateSubtitles(),this.translateToLang=this.data.responseLanguage??"ru"]),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)}async release(){I.log("[VideoHandler] release"),this.initialized=!1,this.releaseExtraEvents(),this.subtitlesWidget.release(),this.votButton.container.remove(),this.votMenu.container.remove()}}const Fe=new class{constructor(){this.videoCache=new Set,this.onVideoAdded=new Ce,this.onVideoRemoved=new Ce,this.observer=new MutationObserver(this.handleMutations),this.intersectionObserver=new IntersectionObserver(this.handleIntersections,{threshold:.1})}handleMutations=t=>{window.requestIdleCallback((()=>{for(let e=0;e{for(let e=0;e{if(!t)return;const n=t.querySelectorAll("video");for(let t=0;t{this.videoCache.has(t)||(this.videoCache.add(t),this.intersectionObserver.observe(t))};handleIntersectingVideo=t=>{this.intersectionObserver.unobserve(t),(t=>{if(Ee.test(t.className)||Ee.test(t.title))return!0;let e=t.parentElement;for(;e;){if(Ee.test(e.className)||Ee.test(e.id))return!0;e=e.parentElement}return!1})(t)||(t=>t.hasAttribute("muted")&&!t.classList.contains("vjs-tech"))(t)?I.log("The promotional/muted video was ignored",t):((t,e)=>{const o=()=>{(t=>t.readyState>=3)(t)?e(t):requestAnimationFrame(o)};o()})(t,this.handleVideoAdded)};handleVideoAdded=t=>{this.onVideoAdded.dispatch(t)};handleVideoRemoved=t=>{document.contains(t)||(this.videoCache.delete(t),this.onVideoRemoved.dispatch(t))}},qe=new WeakMap;function He(t,e){if(t.shadowRoot){let o=t.selector?Array.from(document.querySelectorAll(t.selector)).find((t=>t.shadowRoot.contains(e))):e.parentElement;return o&&o.shadowRoot?o.parentElement:o}const o=_e.browser.version.split(".")[0];if(t.selector?.includes(":not")&&t.selector?.includes("*")&&o&&("Chrome"===_e.browser.name&&Number(o)<88||"Firefox"===_e.browser.name&&Number(o)<84)){const o=t.selector.split(" *")[0];return o?Array.from(document.querySelectorAll(o)).find((t=>t.contains(e))):e.parentElement}return t.selector?Array.from(document.querySelectorAll(t.selector)).find((t=>t.contains(e))):e.parentElement}(async function(){I.log("Loading extension..."),await z.update(),I.log(`Selected menu language: ${z.lang}`),Fe.onVideoAdded.addListener((t=>{for(const e of function(){if(/(http(s)?:\/\/)(127\.0\.0\.1|localhost)/.exec(window.location.href))return[];const t=window.location.hostname,e=new URL(window.location),o=o=>o instanceof RegExp?o.test(t):"string"==typeof o?t.includes(o):"function"==typeof o&&o(e);return A.filter((t=>(Array.isArray(t.match)?t.match.some(o):o(t.match))&&t.host&&t.url))}()){if(!e)continue;let o=He(e,t);if(o&&(("rumble"!==e.host||t.style.display)&&(["peertube","directlink"].includes(e.host)&&(e.url=window.location.origin),!qe.has(t)))){qe.set(t,new De(t,o,e));break}}})),Fe.onVideoRemoved.addListener((async t=>{qe.has(t)&&(await qe.get(t).release(),qe.delete(t))})),Fe.enable()})().catch((t=>{console.error("[VOT]",t)}))})()})(); \ No newline at end of file + `),this.votMenu.headerContainer.appendChild(this.votSettingsButton),this.votTranslationLanguageSelect=ve.createVOTLanguageSelect({fromTitle:z.get("langs")[this.video.detectedLanguage],fromDialogTitle:z.get("videoLanguage"),fromItems:De(O,this.videoData.detectedLanguage),fromOnSelectCB:async t=>{E.log("[fromOnSelectCB] select from language",t.target.dataset.votValue),this.videoData=await this.getVideoData(),this.setSelectMenuValues(t.target.dataset.votValue,this.videoData.responseLanguage)},toTitle:z.get("langs")[this.video.responseLanguage],toDialogTitle:z.get("translationLanguage"),toItems:De(C,this.videoData.responseLanguage),toOnSelectCB:async t=>{const e=t.target.dataset.votValue;E.log("[toOnSelectCB] select to language",e),this.data.responseLanguage=this.translateToLang=e,await _.set("responseLanguage",this.data.responseLanguage),E.log("Response Language value changed. New value: ",this.data.responseLanguage),this.videoData=await this.getVideoData(),this.setSelectMenuValues(this.videoData.detectedLanguage,this.data.responseLanguage)}}),this.votMenu.bodyContainer.appendChild(this.votTranslationLanguageSelect.container),this.votSubtitlesSelect=ve.createVOTSelect(z.get("VOTSubtitlesDisabled"),z.get("VOTSubtitles"),[{label:z.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1}],{onSelectCb:async t=>{await this.changeSubtitlesLang(t.target.dataset.votValue)},labelElement:ve.createVOTSelectLabel(z.get("VOTSubtitles"))}),this.votMenu.bodyContainer.appendChild(this.votSubtitlesSelect.container),this.votVideoVolumeSlider=ve.createSlider($t`${z.get("VOTVolume")}: + ${100*this.getVideoVolume()}%`,100*this.getVideoVolume()),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoVolumeSlider.container),this.votVideoTranslationVolumeSlider=ve.createSlider($t`${z.get("VOTVolumeTranslation")}: + ${this.data?.defaultVolume??100}%`,this.data?.defaultVolume??100,0,this.data.audioBooster?900:100),this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,this.votMenu.bodyContainer.appendChild(this.votVideoTranslationVolumeSlider.container),this.votMenu.container.addEventListener("click",(t=>{t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation()})),this.votSettingsDialog=ve.createDialog(z.get("VOTSettings")),document.documentElement.appendChild(this.votSettingsDialog.container),this.votTranslationHeader=ve.createHeader(z.get("translationSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationHeader),this.votAutoTranslateCheckbox=ve.createCheckbox(z.get("VOTAutoTranslate"),this.data?.autoTranslate??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoTranslateCheckbox.container),this.votDontTranslateYourLangSelect=ve.createVOTSelect(z.get("langs")[_.syncGet("dontTranslateLanguage",R)],z.get("VOTDontTranslateYourLang"),De(O,_.syncGet("dontTranslateLanguage",R)),{onSelectCb:async t=>{this.data.dontTranslateLanguage=t.target.dataset.votValue,await _.set("dontTranslateLanguage",this.data.dontTranslateLanguage)},labelElement:ve.createCheckbox(z.get("VOTDontTranslateYourLang"),this.data?.dontTranslateYourLang??!0).container}),this.votSettingsDialog.bodyContainer.appendChild(this.votDontTranslateYourLangSelect.container),this.changehotkeyButton=ve.createOutlinedButton(Fe(this.data.hotkeyButton)),this.votSettingsDialog.bodyContainer.appendChild(this.changehotkeyButton),this.votAutoSetVolumeCheckbox=ve.createCheckbox(`${z.get("VOTAutoSetVolume")}`,this.data?.autoSetVolumeYandexStyle??!0),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeCheckbox.container),this.votAutoSetVolumeSlider=ve.createSlider($t`${100*(this.data?.autoVolume??ne)}%`,100*(this.data?.autoVolume??ne),0,100),this.votSettingsDialog.bodyContainer.appendChild(this.votAutoSetVolumeSlider.container),this.votShowVideoSliderCheckbox=ve.createCheckbox(z.get("VOTShowVideoSlider"),this.data?.showVideoSlider??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votShowVideoSliderCheckbox.container),this.votAudioBoosterCheckbox=ve.createCheckbox(z.get("VOTAudioBooster"),this.data?.audioBooster??!1),this.votAudioBoosterCheckbox.container.hidden=!this.audioContext,this.votSettingsDialog.bodyContainer.appendChild(this.votAudioBoosterCheckbox.container),this.votSyncVolumeCheckbox=ve.createCheckbox(z.get("VOTSyncVolume"),this.data?.syncVolume??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votSyncVolumeCheckbox.container),this.votTranslationServiceSelect=ve.createVOTSelect(_.syncGet("translationService",ie).toUpperCase(),z.get("VOTTranslationService"),De(ye,_.syncGet("translationService",ie)),{onSelectCb:async t=>{this.data.translationService=t.target.dataset.votValue,await _.set("translationService",this.data.translationService)},labelElement:ve.createCheckbox(z.get("VOTTranslateAPIErrors"),this.data.translateAPIErrors??!0).container}),this.votTranslationServiceSelect.container.hidden="ru"===z.lang,this.votSettingsDialog.bodyContainer.appendChild(this.votTranslationServiceSelect.container),this.votDetectServiceSelect=ve.createVOTSelect(_.syncGet("detectService",ae).toUpperCase(),z.get("VOTDetectService"),De(we,_.syncGet("detectService",ae)),{onSelectCb:async t=>{this.data.detectService=t.target.dataset.votValue,await _.set("detectService",this.data.detectService)},labelElement:ve.createVOTSelectLabel(z.get("VOTDetectService"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votDetectServiceSelect.container),this.votSubtitlesHeader=ve.createHeader(z.get("subtitlesSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesHeader),this.votSubtitlesDetails=ve.createDetails(z.get("VOTSubtitlesDesign")),this.votSettingsDialog.bodyContainer.appendChild(this.votSubtitlesDetails.container),this.votProxyHeader=ve.createHeader(z.get("proxySettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyHeader),this.votM3u8ProxyHostTextfield=ve.createTextfield(z.get("VOTM3u8ProxyHost"),this.data?.m3u8ProxyHost,te),this.votSettingsDialog.bodyContainer.appendChild(this.votM3u8ProxyHostTextfield.container),this.votProxyWorkerHostTextfield=ve.createTextfield(z.get("VOTProxyWorkerHost"),this.data?.proxyWorkerHost,ee),this.votSettingsDialog.bodyContainer.appendChild(this.votProxyWorkerHostTextfield.container),this.votAudioProxyCheckbox=ve.createCheckbox(z.get("VOTAudioProxy"),this.data?.audioProxy??!1),this.votSettingsDialog.bodyContainer.appendChild(this.votAudioProxyCheckbox.container),this.votAboutHeader=ve.createHeader(z.get("about")),this.votSettingsDialog.bodyContainer.appendChild(this.votAboutHeader),this.votLanguageSelect=ve.createVOTSelect(z.get("langs")[_.syncGet("locale-lang-override","auto")],z.get("VOTMenuLanguage"),De(H,_.syncGet("locale-lang-override","auto")),{onSelectCb:async t=>{await _.set("locale-lang-override",t.target.dataset.votValue)},labelElement:ve.createVOTSelectLabel(z.get("VOTMenuLanguage"))}),this.votSettingsDialog.bodyContainer.appendChild(this.votLanguageSelect.container),this.votShowPiPButtonCheckbox=ve.createCheckbox(z.get("VOTShowPiPButton"),this.data?.showPiPButton??!1),this.votShowPiPButtonCheckbox.container.hidden=!B(),this.votSettingsDialog.bodyContainer.appendChild(this.votShowPiPButtonCheckbox.container),this.votVersionInfo=ve.createInformation(`${z.get("VOTVersion")}:`,GM_info.script.version),this.votSettingsDialog.bodyContainer.appendChild(this.votVersionInfo.container),this.votAuthorsInfo=ve.createInformation(`${z.get("VOTAuthors")}:`,GM_info.script.author),this.votSettingsDialog.bodyContainer.appendChild(this.votAuthorsInfo.container),this.votLoaderInfo=ve.createInformation(`${z.get("VOTLoader")}:`,`${GM_info.scriptHandler} v${GM_info.version}`),this.votSettingsDialog.bodyContainer.appendChild(this.votLoaderInfo.container),this.votBrowserInfo=ve.createInformation(`${z.get("VOTBrowser")}:`,`${Re.browser.name} ${Re.browser.version} (${Re.os.name} ${Re.os.version})`),this.votSettingsDialog.bodyContainer.appendChild(this.votBrowserInfo.container),this.votResetSettingsButton=ve.createButton(z.get("resetSettings")),this.votSettingsDialog.bodyContainer.appendChild(this.votResetSettingsButton)}async handleTranslationBtnClick(){if(this.audio.src)return E.log("[click translationBtn] audio.src is not empty"),void this.stopTranslate();if(this.hls.url)return E.log("[click translationBtn] hls is not empty"),void this.stopTranslate();try{if(E.log("[click translationBtn] trying execute translation"),!this.videoData.videoId)throw new lt("VOTNoVideoIDFound");"vk"===this.site.host&&"clips"===this.site.additionalData&&(this.videoData=await this.getVideoData()),await this.translateExecutor(this.videoData.videoId)}catch(t){console.error("[VOT]",t),"VOTLocalizedError"===t?.name?this.transformBtn("error",t.localizedMessage):this.transformBtn("error",t)}}initUIEvents(){this.votButton.translateButton.addEventListener("click",(async()=>{await this.handleTranslationBtnClick()})),this.votButton.pipButton.addEventListener("click",(()=>{(async()=>{this.video!==document.pictureInPictureElement?await this.video.requestPictureInPicture():await document.exitPictureInPicture()})()})),this.votButton.menuButton.addEventListener("click",(()=>{this.votMenu.container.hidden=!this.votMenu.container.hidden})),this.votButton.container.addEventListener("mousedown",(()=>{this.dragging=!0})),this.container.addEventListener("mouseup",(()=>{this.dragging=!1})),this.container.addEventListener("mousemove",(async t=>{if(this.dragging){t.preventDefault();const e=t.clientX/this.container.clientWidth*100;this.data.buttonPos=this.container.clientWidth&&this.container.clientWidth>550?e<=44?"left":e>=66?"right":"default":"default",this.votButton.container.dataset.direction="default"===this.data.buttonPos?"row":"column",this.votButton.container.dataset.position=this.data.buttonPos,this.votMenu.container.dataset.position=this.data.buttonPos,this.container.clientWidth&&this.container.clientWidth>550&&await _.set("buttonPos",this.data.buttonPos)}})),this.votDownloadButton.addEventListener("click",(()=>{this.downloadTranslationUrl&&window.open(this.downloadTranslationUrl,"_blank").focus()})),this.votDownloadSubtitlesButton.addEventListener("click",(async()=>{const t=function(t,e="srt"){const o=t.subtitles.map(((t,o)=>{const n=t.startMs/1e3,i=(t.startMs+t.durationMs)/1e3;return("srt"===e?`${o+1}\n`:"")+`${pt(n)} --\x3e ${pt(i)}\n${t.text}\n\n`})).join("").trim();return"vtt"===e?`WEBVTT\n\n${o}`:o}(this.yandexSubtitles,"srt"),e=new Blob([t],{type:"text/plain"}),o=URL.createObjectURL(e),n=document.createElement("a");n.href=o,n.download=`subtitles_${this.videoData.videoId}.srt`,n.click(),URL.revokeObjectURL(o)})),this.votSettingsButton.addEventListener("click",(()=>{this.votSettingsDialog.container.hidden=!this.votSettingsDialog.container.hidden,(document.fullscreenElement||document.webkitFullscreenElement)&&(document.webkitExitFullscreen&&document.webkitExitFullscreen(),document.exitFullscreen&&document.exitFullscreen())})),this.votVideoVolumeSlider.input.addEventListener("input",(t=>{const e=Number(t.target.value);this.votVideoVolumeSlider.label.querySelector("strong").textContent=`${e}%`,this.setVideoVolume(e/100),this.data.syncVolume&&this.syncVolumeWrapper("video",e)})),this.votVideoTranslationVolumeSlider.input.addEventListener("input",(t=>{(async()=>{this.data.defaultVolume=Number(t.target.value),await _.set("defaultVolume",this.data.defaultVolume),this.votVideoTranslationVolumeSlider.label.querySelector("strong").textContent=`${this.data.defaultVolume}%`,this.setAudioVolume(this.data.defaultVolume/100),this.data.syncVolume&&(this.syncVolumeWrapper("translation",this.data.defaultVolume),["youtube","googledrive"].includes(this.site.host)&&"mobile"!==this.site.additionalData&&this.setVideoVolume(this.tempOriginalVolume/100))})()}));{this.votAutoTranslateCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.autoTranslate=Number(t.target.checked),await Promise.all([_.set("autoTranslate",this.data.autoTranslate),this.autoTranslate()]),E.log("autoTranslate value changed. New value: ",this.data.autoTranslate)})()})),this.votDontTranslateYourLangSelect.labelElement.addEventListener("change",(t=>{(async()=>{this.data.dontTranslateYourLang=Number(t.target.checked),await _.set("dontTranslateYourLang",this.data.dontTranslateYourLang),E.log("dontTranslateYourLang value changed. New value: ",this.data.dontTranslateYourLang)})()}));const t=async t=>{await _.set("hotkeyButton",t),this.data.hotkeyButton=t,this.changehotkeyButton.textContent=Fe(t)},e=o=>{const n="Escape"===o.code?null:o.code;t(n),document.removeEventListener("keydown",e)};this.changehotkeyButton.addEventListener("click",(()=>{this.changehotkeyButton.textContent=z.get("VOTPressNewHotkey"),document.addEventListener("keydown",e)})),this.votAutoSetVolumeCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.autoSetVolumeYandexStyle=Number(t.target.checked),await _.set("autoSetVolumeYandexStyle",this.data.autoSetVolumeYandexStyle),E.log("autoSetVolumeYandexStyle value changed. New value: ",this.data.autoSetVolumeYandexStyle)})()})),this.votAutoSetVolumeSlider.input.addEventListener("input",(t=>{(async()=>{const e=Number(t.target.value);this.data.autoVolume=(e/100).toFixed(2),await _.set("autoVolume",this.data.autoVolume),this.votAutoSetVolumeSlider.label.querySelector("strong").textContent=`${e}%`})()})),this.votShowVideoSliderCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.showVideoSlider=Number(t.target.checked),await _.set("showVideoSlider",this.data.showVideoSlider),E.log("showVideoSlider value changed. New value: ",this.data.showVideoSlider),this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status})()})),this.votAudioBoosterCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.audioBooster=Number(t.target.checked),await _.set("audioBooster",this.data.audioBooster),E.log("audioBooster value changed. New value: ",this.data.audioBooster);const e=this.votVideoTranslationVolumeSlider.input.value;this.votVideoTranslationVolumeSlider.input.max=this.data.audioBooster?900:100,this.data.audioBooster||(this.votVideoTranslationVolumeSlider.input.value=e>100?100:e,this.votVideoTranslationVolumeSlider.input.dispatchEvent(new Event("input")))})()})),this.votSyncVolumeCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.syncVolume=Number(t.target.checked),await _.set("syncVolume",this.data.syncVolume),E.log("syncVolume value changed. New value: ",this.data.syncVolume)})()})),this.votTranslationServiceSelect.labelElement.addEventListener("change",(t=>{(async()=>{this.data.translateAPIErrors=Number(t.target.checked),await _.set("translateAPIErrors",this.data.translateAPIErrors),E.log("translateAPIErrors value changed. New value: ",this.data.translateAPIErrors)})()})),this.votSubtitlesDetails.container.addEventListener("click",(()=>{this.votSubtitlesDialog=ve.createDialog(z.get("VOTSubtitlesDesign")),this.votSubtitlesDialog.container.classList.add("vot-dialog-temp"),this.votSubtitlesDialog.container.hidden=!1,this.votSubtitlesDialog.backdrop.onclick=this.votSubtitlesDialog.closeButton.onclick=()=>{this.votSubtitlesDialog.container.remove()},this.votSubtitlesHighlightWordsCheckbox=ve.createCheckbox(z.get("VOTHighlightWords"),this.data?.highlightWords??!1),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesHighlightWordsCheckbox.container),this.votSubtitlesMaxLengthSlider=ve.createSlider($t`${z.get("VOTSubtitlesMaxLength")}: + ${this.data?.subtitlesMaxLength??300}`,this.data?.subtitlesMaxLength??300,50,300),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesMaxLengthSlider.container),this.votSubtitlesFontSizeSlider=ve.createSlider($t`${z.get("VOTSubtitlesFontSize")}: + ${this.data?.subtitlesFontSize??20}`,this.data?.subtitlesFontSize??20,8,50),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesFontSizeSlider.container),this.votSubtitlesOpacitySlider=ve.createSlider($t`${z.get("VOTSubtitlesOpacity")}: + ${this.data?.subtitlesOpacity??20}`,this.data?.subtitlesOpacity??20,0,100),this.votSubtitlesDialog.bodyContainer.appendChild(this.votSubtitlesOpacitySlider.container),this.votSubtitlesHighlightWordsCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.highlightWords=Number(t.target.checked),await _.set("highlightWords",this.data.highlightWords),E.log("highlightWords value changed. New value: ",this.data.highlightWords),this.subtitlesWidget.setHighlightWords(this.data.highlightWords)})()})),this.votSubtitlesMaxLengthSlider.input.addEventListener("input",(t=>{(async()=>{this.data.subtitlesMaxLength=Number(t.target.value),await _.set("subtitlesMaxLength",this.data.subtitlesMaxLength),this.votSubtitlesMaxLengthSlider.label.querySelector("strong").textContent=`${this.data.subtitlesMaxLength}`,this.subtitlesWidget.setMaxLength(this.data.subtitlesMaxLength)})()})),this.votSubtitlesFontSizeSlider.input.addEventListener("input",(t=>{(async()=>{this.data.subtitlesFontSize=Number(t.target.value),await _.set("subtitlesFontSize",this.data.subtitlesFontSize),this.votSubtitlesFontSizeSlider.label.querySelector("strong").textContent=`${this.data.subtitlesFontSize}`,this.subtitlesWidget.setFontSize(this.data.subtitlesFontSize)})()})),this.votSubtitlesOpacitySlider.input.addEventListener("input",(t=>{(async()=>{this.data.subtitlesOpacity=Number(t.target.value),await _.set("subtitlesOpacity",this.data.subtitlesOpacity),this.votSubtitlesOpacitySlider.label.querySelector("strong").textContent=`${this.data.subtitlesOpacity}`,this.subtitlesWidget.setOpacity(this.data.subtitlesOpacity)})()})),document.documentElement.appendChild(this.votSubtitlesDialog.container)})),this.votShowPiPButtonCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.showPiPButton=Number(t.target.checked),await _.set("showPiPButton",this.data.showPiPButton),E.log("showPiPButton value changed. New value: ",this.data.showPiPButton),this.votButton.pipButton.hidden=!B()||!this.data.showPiPButton,this.votButton.separator2.hidden=!B()||!this.data.showPiPButton})()})),this.votM3u8ProxyHostTextfield.input.addEventListener("change",(t=>{(async()=>{this.data.m3u8ProxyHost=t.target.value||te,await _.set("m3u8ProxyHost",this.data.m3u8ProxyHost),E.log("m3u8ProxyHost value changed. New value: ",this.data.m3u8ProxyHost)})()})),this.votProxyWorkerHostTextfield.input.addEventListener("change",(t=>{(async()=>{this.data.proxyWorkerHost=t.target.value||ee,await _.set("proxyWorkerHost",this.data.proxyWorkerHost),E.log("proxyWorkerHost value changed. New value: ",this.data.proxyWorkerHost),this.votClient.host=this.data.proxyWorkerHost})()})),this.votAudioProxyCheckbox.input.addEventListener("change",(t=>{(async()=>{this.data.audioProxy=Number(t.target.checked),await _.set("audioProxy",this.data.audioProxy),E.log("audioProxy value changed. New value: ",this.data.audioProxy)})()})),this.votResetSettingsButton.addEventListener("click",(()=>{(async()=>{z.reset();const t=await _.list();for(let e=0;e{this.extraEvents.push({element:t,event:e,handler:o}),t.addEventListener(e,o)},e=(e,o,n)=>{for(const i of o)t(e,i,n)};if(this.resizeObserver=new ResizeObserver((t=>{for(let e=0;e550;this.votButton.container.dataset.position=this.votMenu.container.dataset.position=e?this.data?.buttonPos:"default",this.votButton.container.dataset.direction=this.data?.buttonPos&&"default"!==this.data?.buttonPos&&e?"column":"row"})),this.resizeObserver.observe(this.video),this.votMenu.container.setAttribute("style",`--vot-container-height: ${this.video.getBoundingClientRect().height}px`),["youtube","googledrive"].includes(this.site.host)&&"mobile"!==this.site.additionalData){this.syncVolumeObserver=new MutationObserver((t=>{if(this.audio.src&&this.data.syncVolume)for(let e=0;e{const e=t.target,o=this.votButton.container,n=this.votMenu.container,i=this.container,a=this.votSettingsDialog.container,r=document.querySelector(".vot-dialog-temp"),s=o.contains(e),l=n.contains(e),d=i.contains(e),u=a.contains(e),c=r?.contains(e)??!1;E.log(`[document click] ${s} ${l} ${d} ${u} ${c}`),s||l||u||c||(d||this.logout(0),this.votMenu.container.hidden=!0)})),document.addEventListener("keydown",(async t=>{const e=t.code,o=document.activeElement;["input","textarea"].includes(o.tagName.toLowerCase())||o.isContentEditable||e!==this.data.hotkeyButton||await this.handleTranslationBtnClick()})),o="pornhub"===this.site.host?"embed"===this.site.additionalData?document.querySelector("#player"):this.container.querySelector(".mgp_eventCatcher"):"twitter"===this.site.host?document.querySelector('div[data-testid="videoPlayer"]'):"yandexdisk"===this.site.host?document.querySelector(".video-player__player"):this.container,o&&e(o,["mousemove","mouseout"],this.resetTimer),t(this.votButton.container,"mousemove",this.changeOpacityOnEvent),t(this.votMenu.container,"mousemove",this.changeOpacityOnEvent),e(document,["touchstart","touchmove","touchend"],this.changeOpacityOnEvent),t(this.votButton.container,"mousedown",(t=>{t.stopImmediatePropagation()})),t(this.votMenu.container,"mousedown",(t=>{t.stopImmediatePropagation()})),"youtube"===this.site.host&&(this.container.draggable=!1),"googledrive"===this.site.host&&(this.container.style.height="100%"),t(this.video,"canplay",(async()=>{"rutube"===this.site.host&&this.video.src||await rt(this.site,this.video)!==this.videoData.videoId&&(await this.handleSrcChanged(),await this.autoTranslate(),E.log("lipsync mode is canplay"))})),t(this.video,"emptied",(async()=>{this.video.src&&await rt(this.site,this.video)===this.videoData.videoId||(E.log("lipsync mode is emptied"),this.videoData="",this.stopTranslation())})),["rutube","ok"].includes(this.site.host)||t(this.video,"volumechange",(()=>{this.syncVideoVolumeSlider()}))}logout(t){this.votMenu.container.hidden&&(this.votButton.container.style.opacity=t)}resetTimer=()=>{clearTimeout(this.timer),this.logout(1),this.timer=setTimeout((()=>{this.logout(0)}),1e3)};changeOpacityOnEvent=t=>{clearTimeout(this.timer),this.logout(1),t.stopPropagation()};async changeSubtitlesLang(t){if(E.log("[onchange] subtitles",t),this.votSubtitlesSelect.setSelected(t),"disabled"===t)this.votSubtitlesSelect.setTitle(z.get("VOTSubtitlesDisabled")),this.subtitlesWidget.setContent(null),this.votDownloadSubtitlesButton.hidden=!0,this.yandexSubtitles=null;else{const e=this.subtitlesList.at(parseInt(t));if(1===this.data.audioProxy&&e.url.startsWith("https://brosubs.s3-private.mds.yandex.net/vtrans/")){const t=e.url.replace("https://brosubs.s3-private.mds.yandex.net/vtrans/","");e.url=`https://${this.data.proxyWorkerHost}/video-subtitles/subtitles-proxy/${t}`,console.log(`[VOT] Subs proxied via ${e.url}`)}this.yandexSubtitles=await Oe(e),this.subtitlesWidget.setContent(this.yandexSubtitles),this.votDownloadSubtitlesButton.hidden=!1}}async updateSubtitlesLangSelect(){const t=[{label:z.get("VOTSubtitlesDisabled"),value:"disabled",selected:!0,disabled:!1},...this.subtitlesList.map(((t,e)=>({label:(z.get("langs")[t.language]??t.language.toUpperCase())+(t.translatedFromLanguage?` ${z.get("VOTTranslatedFrom")} ${z.get("langs")[t.translatedFromLanguage]??t.translatedFromLanguage.toUpperCase()}`:"")+("yandex"!==t.source?` ${t.source}`:"")+(t.isAutoGenerated?` (${z.get("VOTAutogenerated")})`:""),value:e,selected:!1,disabled:!1})))];this.votSubtitlesSelect.updateItems(t),await this.changeSubtitlesLang(t[0].value)}async updateSubtitles(){if(await this.changeSubtitlesLang("disabled"),!this.videoData.videoId)return console.error(`[VOT] ${z.getDefault("VOTNoVideoIDFound")}`),this.subtitlesList=[],this.subtitlesListVideoId=null,this.votButton.container.hidden=!0,void await this.updateSubtitlesLangSelect();if(this.votButton.container.hidden=!1,this.subtitlesListVideoId!==this.videoData.videoId){try{this.subtitlesList=await Ce(this.votClient,this.videoData)}catch(t){if("Unsupported video URL for getting subtitles"===t?.unlocalizedMessage)return this.subtitlesList=[],void await this.updateSubtitlesLangSelect();E.log("Error with yandex server, try auto-fix...",t),this.votOpts={fetchFn:q,hostVOT:oe,host:this.data.proxyWorkerHost},this.votClient=new ht(this.votOpts),this.subtitlesList=await Ce(this.votClient,this.videoData),await _.set("translateProxyEnabled",1)}this.subtitlesList?this.subtitlesListVideoId=this.videoData.videoId:await this.changeSubtitlesLang("disabled"),await this.updateSubtitlesLangSelect()}}getVideoVolume(){let t=this.video?.volume;return["youtube","googledrive"].includes(this.site.host)&&(t=Ve.getVideoVolume()??t),t}setVideoVolume(t){if(["youtube","googledrive"].includes(this.site.host)){if(Ve.setVideoVolume(t))return}this.video.volume=t}getAudioVolume(){return this.gainNode?this.gainNode.gain.value:this.audio.volume}setAudioVolume(t){return this.gainNode?this.gainNode.gain.value=t:this.audio.volume=t}isMuted(){return["youtube","googledrive"].includes(this.site.host)?Ve.isMuted():this.video?.muted}syncVideoVolumeSlider(){const t=this.isMuted()?0:100*this.getVideoVolume(),e=Math.round(t);this.votVideoVolumeSlider.input.value=e,this.votVideoVolumeSlider.label.querySelector("strong").textContent=`${e}%`,ve.updateSlider(this.votVideoVolumeSlider.input),1===this.data.syncVolume&&(this.tempOriginalVolume=Number(e))}setSelectMenuValues(t,e){this.votTranslationLanguageSelect.fromSelect.setTitle(z.get("langs")[t]),this.votTranslationLanguageSelect.toSelect.setTitle(z.get("langs")[e]),this.votTranslationLanguageSelect.fromSelect.setSelected(t),this.votTranslationLanguageSelect.toSelect.setSelected(e),console.log(`[VOT] Set translation from ${t} to ${e}`),this.videoData.detectedLanguage=t,this.videoData.responseLanguage=e}syncVolumeWrapper(t,e){const o="translation"===t?this.votVideoVolumeSlider:this.votVideoTranslationVolumeSlider,n=Number(o.input.value),i=function(t,e,o,n){let i=e;return e>n?(i=o+(e-n),i=i>100?100:Math.max(i,0),t.volume=i/100):e100?100:Math.max(i,0),t.volume=i/100),i}("translation"===t?this.video:this.audio,e,n,"translation"===t?this.tempVolume:this.tempOriginalVolume);o.input.value=i,o.label.querySelector("strong").textContent=`${i}%`,ve.updateSlider(o.input),this.tempOriginalVolume="translation"===t?i:e,this.tempVolume="translation"===t?e:i}async getVideoData(){const{duration:t,url:e,videoId:o,host:n,translationHelp:i,detectedLanguage:a}=await st(this.site,this.video),r={translationHelp:i??null,isStream:!1,duration:this.video?.duration||t||y.defaultDuration,videoId:o,url:e,host:n,detectedLanguage:a??this.translateFromLang,responseLanguage:this.translateToLang};if("youtube"===this.site.host){const t=await Ve.getVideoData();r.isStream=t.isLive,t.title&&(r.detectedLanguage=t.detectedLanguage)}else if(["rutube","ok.ru","mail_ru"].includes(this.site.host))r.detectedLanguage="ru";else if("youku"===this.site.host)r.detectedLanguage="zh";else if("vk"===this.site.host){const t=document.getElementsByTagName("track")?.[0]?.srclang;r.detectedLanguage=t||"auto"}else"weverse"===this.site.host?r.detectedLanguage="ko":["bilibili","piped","invidious","bitchute","rumble","peertube","dailymotion","trovo","yandexdisk","coursehunter","archive","nineanimetv","directlink"].includes(this.site.host)&&(r.detectedLanguage="auto");return r}videoValidator(){if(["youtube","ok.ru","vk"].includes(this.site.host)&&(E.log("VideoValidator videoData: ",this.videoData),1===this.data.dontTranslateYourLang&&this.videoData.detectedLanguage===this.data.dontTranslateLanguage))throw new lt("VOTDisableFromYourLang");if(!this.videoData.isStream&&this.videoData.duration>14400)throw new lt("VOTVideoIsTooLong");return!0}lipSync(t=!1){if(E.log("lipsync video",this.video),this.video)if(this.audio.currentTime=this.video.currentTime,this.audio.playbackRate=this.video.playbackRate,t)if("play"!=t)["pause","stop","waiting"].includes(t)&&(E.log(`lipsync mode is ${t}`),this.audio.pause()),"playing"==t&&(E.log("lipsync mode is playing"),this.audio.play());else{E.log("lipsync mode is play");const t=this.audio.play();void 0!==t&&t.catch((async t=>{if(console.error("[VOT]",t),"NotAllowedError"===t.name)throw this.transformBtn("error",z.get("grantPermissionToAutoPlay")),new lt("grantPermissionToAutoPlay")}))}else E.log("lipsync mode is not set")}handleVideoEvent=t=>{E.log(`video ${t.type}`),this.lipSync(t.type)};stopTranslate(){for(const t of Be)this.video.removeEventListener(t,this.handleVideoEvent);this.audio.pause(),this.audio.src="",this.audio.removeAttribute("src"),this.votVideoVolumeSlider.container.hidden=!0,this.votVideoTranslationVolumeSlider.container.hidden=!0,this.votDownloadButton.hidden=!0,this.downloadTranslationUrl=null,this.transformBtn("none",z.get("translateVideo")),E.log(`Volume on start: ${this.volumeOnStart}`),this.volumeOnStart&&this.setVideoVolume(this.volumeOnStart),this.volumeOnStart="",clearInterval(this.streamPing),clearTimeout(this.autoRetry),this.hls?.destroy(),this.hls=D(),this.firstSyncVolume=!0}async translateExecutor(t){E.log("Run translateFunc",t),await this.translateFunc(t,this.videoData.isStream,this.videoData.detectedLanguage,this.videoData.responseLanguage,this.videoData.translationHelp)}async updateTranslationErrorMsg(t){const e=z.get("translationTake"),o=z.lang;if(["Подготавливаем перевод","Видео передано в обработку","Ожидаем перевод видео","Загружаем переведенное аудио"].includes(t)&&this.setLoadingBtn(!0),"VOTLocalizedError"===t?.name)this.transformBtn("error",t.localizedMessage);else if(t instanceof Error)this.transformBtn("error",t?.message);else if(1!==this.data.translateAPIErrors||t.includes(e)||"ru"===o)this.transformBtn("error",t);else{this.setLoadingBtn(!0);const e=await async function(t,e="",o="ru"){switch(await _.get("translationService",ie)){case"yandex":{const n=e&&o?`${e}-${o}`:o;return await me.translate(t,n)}case"deepl":return await fe.translate(t,e,o);default:return t}}(t,"ru",o);this.transformBtn("error",e)}}afterUpdateTranslation(t){this.votVideoVolumeSlider.container.hidden=1!==this.data.showVideoSlider||"success"!==this.votButton.container.dataset.status,this.votVideoTranslationVolumeSlider.container.hidden="success"!==this.votButton.container.dataset.status,1===this.data.autoSetVolumeYandexStyle&&(this.votVideoVolumeSlider.input.value=100*this.data.autoVolume,this.votVideoVolumeSlider.label.querySelector("strong").textContent=100*this.data.autoVolume+"%",ve.updateSlider(this.votVideoVolumeSlider.input)),this.votDownloadButton.hidden=!1,this.downloadTranslationUrl=t}async updateTranslation(t){if(this.cachedTranslation?.url===this.audio.currentSrc)E.log("[translateFunc] Audio src is the same"),this.audio.src=t;else{try{const e=await q(t,{method:"HEAD",timeout:5e3});if(E.log("Test audio response",e),404===e.status){E.log("Yandex returned not valid audio, trying to fix...");let e=await this.translateVideoImpl(this.videoData,this.videoData.detectedLanguage="auto",this.videoData.responseLanguage,this.videoData.translationHelp);this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage),t=e.url,E.log("Fixed audio audioUrl",t)}else E.log("Valid audioUrl",t)}catch(t){"Timeout"===t.message?(E.log("Request timed out. Handling timeout error..."),this.data.audioProxy=1,await _.set("audioProxy",1)):E.log("Test audio error:",t)}this.audio.src=t;try{await this.audio.play()}catch(t){if(console.error("[VOT]",t),"NotSupportedError"===t.name){if([...V,...M].includes(window.location.hostname))throw new lt("VOTMediaCSPError");this.data.audioProxy=1,await _.set("audioProxy",1)}}}if(1===this.data.audioProxy&&t.startsWith("https://vtrans.s3-private.mds.yandex.net/tts/prod/")){const e=t.replace("https://vtrans.s3-private.mds.yandex.net/tts/prod/","");t=`https://${this.data.proxyWorkerHost}/video-translation/audio-proxy/${e}`,console.log(`[VOT] Audio proxied via ${t}`)}if(this.audio.src=t,this.volumeOnStart||(this.volumeOnStart=this.getVideoVolume()),this.setupAudioSettings(),"twitter"===this.site.host)document.querySelector('button[data-testid="app-bar-back"][role="button"]').addEventListener("click",this.stopTranslation);this.video&&!this.video.paused&&this.lipSync("play");for(const t of Be)this.video.addEventListener(t,this.handleVideoEvent);this.transformBtn("success",z.get("disableTranslate")),this.afterUpdateTranslation(t)}async translateFunc(t,e,o,n,i){if(console.log("[VOT] Video Data: ",this.videoData),E.log("Run videoValidator"),this.videoValidator(),this.setLoadingBtn(!0),e){let t=await this.translateStreamImpl(this.videoData,o,n);if(!t)return void E.log("Skip translation");this.transformBtn("success",z.get("disableTranslate"));const e=`https://${this.data.m3u8ProxyHost}/?all=yes&origin=${encodeURIComponent("https://strm.yandex.ru")}&referer=${encodeURIComponent("https://strm.yandex.ru")}&url=${encodeURIComponent(t.result.url)}`;if(this.hls)this.setupHLS(e);else{if(!this.audio.canPlayType("application/vnd.apple.mpegurl"))throw new lt("audioFormatNotSupported");this.audio.src=e}if("youtube"===this.site.host&&Ve.videoSeek(this.video,10),this.setupAudioSettings(),!this.video.src&&!this.video.currentSrc&&!this.video.srcObject)return this.stopTranslation();this.video&&!this.video.paused&&this.lipSync("play");for(const t of Be)this.video.addEventListener(t,this.handleVideoEvent);return this.afterUpdateTranslation(e)}if(this.cachedTranslation=this.videoTranslations.find((e=>e.videoId===t&&e.expires>Date.now()/1e3&&e.from===o&&e.to===n)),this.cachedTranslation)return await this.updateTranslation(this.cachedTranslation.url),void E.log("[translateFunc] Cached translation was received");let a=await this.translateVideoImpl(this.videoData,o,n,i);E.log("[translateRes]",a),a?(await this.updateTranslation(a.url),[k.kick,k.reddit,k.patreon,k.kodik,k.appledeveloper,k.epicgames,k.nineanimetv].includes(this.site.host)||this.subtitlesList.some((t=>"yandex"===t.source&&t.translatedFromLanguage===this.videoData.detectedLanguage&&t.language===this.videoData.responseLanguage))||(this.subtitlesList=await Ce(this.votClient,this.videoData),await this.updateSubtitlesLangSelect()),this.videoTranslations.push({videoId:t,from:o,to:n,url:this.downloadTranslationUrl,expires:Date.now()/1e3+this.videoTranslationTTL})):E.log("Skip translation")}setupHLS(t){this.hls.on(Hls.Events.MEDIA_ATTACHED,(function(){E.log("audio and hls.js are now bound together !")})),this.hls.on(Hls.Events.MANIFEST_PARSED,(function(t){E.log("manifest loaded, found "+t?.levels?.length+" quality level")})),this.hls.loadSource(t),this.hls.attachMedia(this.audio),this.hls.on(Hls.Events.ERROR,(function(t){if(t.fatal)switch(t.type){case Hls.ErrorTypes.MEDIA_ERROR:console.log("fatal media error encountered, try to recover"),this.hls.recoverMediaError();break;case Hls.ErrorTypes.NETWORK_ERROR:console.error("fatal network error encountered",t);break;default:this.hls.destroy()}})),E.log(this.hls)}setupAudioSettings(){"number"==typeof this.data.defaultVolume&&this.setAudioVolume(this.data.defaultVolume/100),"number"==typeof this.data.autoSetVolumeYandexStyle&&this.data.autoSetVolumeYandexStyle&&this.setVideoVolume(this.data.autoVolume)}stopTranslation=()=>{this.stopTranslate(),this.syncVideoVolumeSlider()};async handleSrcChanged(){E.log("[VideoHandler] src changed",this),this.firstPlay=!0;const t=!this.video.src&&!this.video.currentSrc&&!this.video.srcObject;this.votButton.container.hidden=t,t&&(this.votMenu.container.hidden=t),this.site.selector||(this.container=this.video.parentElement),this.container.contains(this.votButton.container)||(this.container.appendChild(this.votButton.container),this.container.appendChild(this.votMenu.container)),await Promise.all([this.videoData=await this.getVideoData(),this.updateSubtitles(),this.translateToLang=this.data.responseLanguage??"ru"]),this.setSelectMenuValues(this.videoData.detectedLanguage,this.videoData.responseLanguage)}async release(){E.log("[VideoHandler] release"),this.initialized=!1,this.releaseExtraEvents(),this.subtitlesWidget.release(),this.votButton.container.remove(),this.votMenu.container.remove()}}const He=new class{constructor(){this.videoCache=new Set,this.onVideoAdded=new Ie,this.onVideoRemoved=new Ie,this.observer=new MutationObserver(this.handleMutations),this.intersectionObserver=new IntersectionObserver(this.handleIntersections,{threshold:.1})}handleMutations=t=>{window.requestIdleCallback((()=>{for(let e=0;e{for(let e=0;e{if(!t)return;const n=t.querySelectorAll("video");for(let t=0;t{this.videoCache.has(t)||(this.videoCache.add(t),this.intersectionObserver.observe(t))};handleIntersectingVideo=t=>{this.intersectionObserver.unobserve(t),(t=>{if(_e.test(t.className)||_e.test(t.title))return!0;let e=t.parentElement;for(;e;){if(_e.test(e.className)||_e.test(e.id))return!0;e=e.parentElement}return!1})(t)||(t=>t.hasAttribute("muted")&&!t.classList.contains("vjs-tech"))(t)?E.log("The promotional/muted video was ignored",t):((t,e)=>{const o=()=>{(t=>t.readyState>=3)(t)?e(t):requestAnimationFrame(o)};o()})(t,this.handleVideoAdded)};handleVideoAdded=t=>{this.onVideoAdded.dispatch(t)};handleVideoRemoved=t=>{document.contains(t)||(this.videoCache.delete(t),this.onVideoRemoved.dispatch(t))}},ze=new WeakMap;function Ue(t,e){if(t.shadowRoot){let o=t.selector?Array.from(document.querySelectorAll(t.selector)).find((t=>t.shadowRoot.contains(e))):e.parentElement;return o&&o.shadowRoot?o.parentElement:o}const o=Re.browser.version.split(".")[0];if(t.selector?.includes(":not")&&t.selector?.includes("*")&&o&&("Chrome"===Re.browser.name&&Number(o)<88||"Firefox"===Re.browser.name&&Number(o)<84)){const o=t.selector.split(" *")[0];return o?Array.from(document.querySelectorAll(o)).find((t=>t.contains(e))):e.parentElement}return t.selector?Array.from(document.querySelectorAll(t.selector)).find((t=>t.contains(e))):e.parentElement}(async function(){E.log("Loading extension..."),await z.update(),E.log(`Selected menu language: ${z.lang}`),"https://9animetv.to"===window.location.origin&&window.addEventListener("message",(t=>{if("https://rapid-cloud.co"===t.origin&&"getVideoId"===t.data){const t=/[^/]+$/.exec(window.location.href)?.[0],e=document.querySelector("#iframe-embed")?.contentWindow;e.postMessage(`getVideoId:${t}`,"https://rapid-cloud.co/")}})),He.onVideoAdded.addListener((t=>{for(const e of function(){if(/(http(s)?:\/\/)(127\.0\.0\.1|localhost)/.exec(window.location.href))return[];const t=window.location.hostname,e=new URL(window.location),o=o=>o instanceof RegExp?o.test(t):"string"==typeof o?t.includes(o):"function"==typeof o&&o(e);return A.filter((t=>(Array.isArray(t.match)?t.match.some(o):o(t.match))&&t.host&&t.url))}()){if(!e)continue;let o=Ue(e,t);if(o&&(("rumble"!==e.host||t.style.display)&&(["peertube","directlink"].includes(e.host)&&(e.url=window.location.origin),!ze.has(t)))){ze.set(t,new qe(t,o,e));break}}})),He.onVideoRemoved.addListener((async t=>{ze.has(t)&&(await ze.get(t).release(),ze.delete(t))})),He.enable()})().catch((t=>{console.error("[VOT]",t)}))})()})(); \ No newline at end of file diff --git a/dist/vot.user.js b/dist/vot.user.js index 4ddded00..bca3f9f7 100644 --- a/dist/vot.user.js +++ b/dist/vot.user.js @@ -65,6 +65,9 @@ // @match *://*.kodik.cc/* // @match *://*.kick.com/* // @match *://developer.apple.com/* +// @match *://dev.epicgames.com/* +// @match *://*.rapid-cloud.co/* +// @match *://9animetv.to/* // @match *://*/*.mp4* // @match *://*.yewtu.be/* // @match *://yt.artemislena.eu/* @@ -143,6 +146,7 @@ // @connect yandex.net // @connect timeweb.cloud // @connect raw.githubusercontent.com +// @connect 9animetv.to // @connect toil.cc // @connect deno.dev // @connect onrender.com @@ -1481,14 +1485,14 @@ const yandexProtobuf = { /* harmony default export */ const config = ({ host: "api.browser.yandex.ru", hostVOT: "vot-api.toil.cc/v1", - userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 YaBrowser/24.6.0.0 Safari/537.36", + userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 YaBrowser/24.7.0.0 Safari/537.36", componentVersion: "24.7.0.2377", hmac: "bt8xH3VOlb4mqf0nqAibnDOoiPlXsisf", defaultDuration: 343, }); ;// CONCATENATED MODULE: ./node_modules/vot.js/package.json -const package_namespaceObject = {"rE":"1.0.4"}; +const package_namespaceObject = {"rE":"1.0.5"}; ;// CONCATENATED MODULE: ./node_modules/vot.js/dist/secure.js const utf8Encoder = new TextEncoder(); @@ -1571,6 +1575,8 @@ var VideoService; VideoService["apple_developer"] = "apple_developer"; VideoService["appledeveloper"] = "apple_developer"; VideoService["poketube"] = "poketube"; + VideoService["epicgames"] = "epicgames"; + VideoService["nineanimetv"] = "nineanimetv"; })(VideoService || (VideoService = {})); var VideoTranslationStatus; (function (VideoTranslationStatus) { @@ -2018,6 +2024,20 @@ const sitesPoketube = [ selector: ".developer-video-player", needExtraData: true, }, + { + host: VideoService.epicgames, + url: "https://dev.epicgames.com/community/learning/", + match: /^dev.epicgames.com$/, + selector: ".vjs-v7", + needExtraData: true, + }, + { + host: VideoService.nineanimetv, + url: "https://9animetv.to/watch/", + match: /^rapid-cloud.co$/, + selector: ".jw-media", + needExtraData: true, + }, { host: VideoService.custom, url: "stub", @@ -2051,9 +2071,7 @@ const en_namespaceObject = /*#__PURE__*/JSON.parse('{"__version__":5,"recommende ;// CONCATENATED MODULE: ./src/utils/debug.js const debug = {}; debug.log = (...text) => { - if (true) { - return; - } + if (false) {} return console.log( "%c[VOT DEBUG]", "background: #F2452D; color: #fff; padding: 5px;", @@ -2212,7 +2230,7 @@ function isPiPAvailable() { function initHls() { return typeof Hls != "undefined" && Hls?.isSupported() ? new Hls({ - debug: false, // turn it on manually if necessary + debug: true, // turn it on manually if necessary lowLatencyMode: true, backBufferLength: 90, }) @@ -2320,7 +2338,7 @@ async function GM_fetch(url, opts = {}) { const localesVersion = 5; const localesUrl = `https://raw.githubusercontent.com/ilyhalight/voice-over-translation/${ - false ? 0 : "master" + true ? "dev" : 0 }/src/localization/locales`; const availableLocales = [ @@ -2508,16 +2526,6 @@ class VideoHelperError extends Error { } class MailRuHelper { API_ORIGIN = "https://my.mail.ru/"; - async getExtraVideoId(pathname) { - try { - const content = document.querySelector(".sp-video__page-config")?.innerText; - return /"itemId":\s?"([^"]+)"/.exec(content)?.[1]; - } - catch (err) { - console.error("Failed to get mail.ru extra video id", err.message); - return undefined; - } - } async getVideoData(videoId) { try { const res = await fetchWithTimeout(`${this.API_ORIGIN}+/video/meta/${videoId}?xemail=&ajax_call=1&func_name=&mna=&mnb=&ext=1&_=${new Date().getTime()}`); @@ -3111,6 +3119,107 @@ class CourseraHelper { }; } } +class EpicGamesHelper { + API_ORIGIN = "https://dev.epicgames.com/community/api/learning"; + async getPostInfo(videoId) { + try { + const res = await fetchWithTimeout(`${this.API_ORIGIN}/post.json?hash_id=${videoId}`); + return (await res.json()); + } + catch (err) { + console.error(`Failed to get post info by videoId: ${videoId}.`, err.message); + return false; + } + } + async getVideoData(videoId) { + const postInfo = await this.getPostInfo(videoId); + if (!postInfo) { + return undefined; + } + const playlistUrl = postInfo.blocks + .find((block) => block.type === "video") + ?.video_url?.replace("qsep://", "https://"); + if (!playlistUrl) { + return undefined; + } + return { + url: playlistUrl, + }; + } +} +class NineAnimetvHelper { + API_ORIGIN = "https://9animetv.to/ajax/episode"; + RAPID_CLOUD_ORIGIN = "https://rapid-cloud.co/ajax/embed-6-v2"; + async getSourceId(episodeId) { + try { + const res = await GM_fetch(`${this.API_ORIGIN}/servers?episodeId=${episodeId}`); + const content = (await res.json()); + if (!content.html) { + return false; + } + return /data-id="(\d+)"/.exec(content.html)?.[1]; + } + catch (err) { + console.error(`Failed to get 9animetv servers info by episodeId: ${episodeId}.`, err.message); + return false; + } + } + async getPlayerLink(sourceId) { + try { + const res = await GM_fetch(`${this.API_ORIGIN}/sources?id=${sourceId}`); + const content = (await res.json()); + if (!content.link.includes("rapid-cloud.co")) { + return false; + } + return content.link; + } + catch (err) { + console.error(`Failed to get player link by sourceId: ${sourceId}.`, err.message); + return false; + } + } + async getRapidCloudData(rapidId) { + try { + const res = await GM_fetch(`${this.RAPID_CLOUD_ORIGIN}/getSources?id=${rapidId}`); + const content = (await res.json()); + if (content.encrypted) { + console.warn("Encrypted RapidCloud data found. Let us know about it", content); + return false; + } + return content; + } + catch (err) { + console.error(`Failed to get rapid cloud data by rapidId: ${rapidId}.`, err.message); + return false; + } + } + async getVideoData(videoId) { + const episodeId = videoId.split("?ep=")[1]; + const sourceId = await this.getSourceId(episodeId); + if (!sourceId) { + return undefined; + } + const playerLink = await this.getPlayerLink(sourceId); + if (!playerLink) { + return undefined; + } + const rapidCloudId = /\/([^/?]+)\?/.exec(playerLink)?.[1]; + if (!rapidCloudId) { + return undefined; + } + const rapidData = await this.getRapidCloudData(rapidCloudId); + if (!rapidData) { + return undefined; + } + const videoUrl = rapidData.sources.find((file) => file.type === "hls")?.file; + if (!videoUrl) { + return undefined; + } + return { + url: videoUrl, + }; + } +} class VideoHelper { static [VideoService.mailru] = new MailRuHelper(); static [VideoService.weverse] = new WeverseHelper(); @@ -3123,6 +3232,8 @@ class VideoHelper { static [VideoService.coursehunter] = new CoursehunterHelper(); static [VideoService.coursera] = new CourseraHelper(); static [VideoService.appledeveloper] = new AppleDeveloperHelper(); + static [VideoService.epicgames] = new EpicGamesHelper(); + static [VideoService.nineanimetv] = new NineAnimetvHelper(); } ;// CONCATENATED MODULE: ./node_modules/vot.js/dist/utils/videoData.js @@ -3280,13 +3391,10 @@ async function getVideoID(service, video) { } case VideoService.mailru: { const pathname = url.pathname; - if (/\/(v|mail)\//.exec(pathname)) { + if (/\/(v|mail|bk|inbox)\//.exec(pathname)) { return pathname.slice(1); } - const videoId = /video\/embed\/([^/]+)/.exec(pathname)?.[1] ?? - /\/(bk|inbox)\/([^/]+)\/video\//.exec(pathname) - ? await VideoHelper.mailru.getExtraVideoId(pathname) - : undefined; + const videoId = /video\/embed\/([^/]+)/.exec(pathname)?.[1]; if (!videoId) { return null; } @@ -3382,6 +3490,24 @@ async function getVideoID(service, video) { case VideoService.appledeveloper: { return /videos\/play\/([^/]+)\/([\d]+)/.exec(url.pathname)?.[0]; } + case VideoService.epicgames: { + return /\/(\w{4})\/[^/]+$/.exec(url.pathname)?.[1]; + } + case VideoService.nineanimetv: { + return new Promise(resolve => { + const origin = "https://9animetv.to" + window.addEventListener("message", (e) => { + if (e.origin !== origin) { + return; + } + + if (e.data?.startsWith("getVideoId:")) { + resolve(e.data.replace("getVideoId:")) + } + }) + window.top.postMessage("getVideoId", origin); + }) + } default: return undefined; } @@ -3490,8 +3616,9 @@ class VOTClient { streamTranslation: "/stream-translation/translate-stream", createSession: "/session/create", }; - isCustomFormat(url) { - return /\.(m3u8|m4(a|v)|mpd)/.exec(url); + isCustomLink(url) { + return !!(/\.(m3u8|m4(a|v)|mpd)/.exec(url) ?? + /^https:\/\/cdn\.qstv\.on\.epicgames\.com/.exec(url)); } headers = { "User-Agent": this.userAgent, @@ -3667,7 +3794,7 @@ class VOTClient { } async translateVideo({ videoData, requestLang = this.requestLang, responseLang = this.responseLang, translationHelp = null, headers = {}, }) { const { url, videoId, host } = videoData; - return this.isCustomFormat(url) + return this.isCustomLink(url) ? await this.translateVideoVOTImpl({ url, videoId, @@ -3686,7 +3813,7 @@ class VOTClient { } async getSubtitles({ videoData, requestLang = this.requestLang, headers = {}, }) { const { url } = videoData; - if (this.isCustomFormat(url)) { + if (this.isCustomLink(url)) { throw new VOTLocalizedError("Unsupported video URL for getting subtitles"); // add translation } const { secretKey, uuid } = await this.getSession("video-translation"); @@ -3720,7 +3847,7 @@ class VOTClient { } async translateStream({ videoData, requestLang = this.requestLang, responseLang = this.responseLang, headers = {}, }) { const { url } = videoData; - if (this.isCustomFormat(url)) { + if (this.isCustomLink(url)) { throw new VOTLocalizedError("Unsupported video URL for getting stream translation"); // add translation } const { secretKey, uuid } = await this.getSession("video-translation"); @@ -5964,8 +6091,8 @@ class VideoHandler { await this.updateTranslationErrorMsg( res.remainingTime > 0 ? secsToStrTime(res.remainingTime) - : res.message ?? - localizationProvider.get("translationTakeFewMinutes"), + : (res.message ?? + localizationProvider.get("translationTakeFewMinutes")), ); } catch (err) { console.error("[VOT] Failed to translate video", err); @@ -7710,6 +7837,7 @@ class VideoHandler { "yandexdisk", "coursehunter", "archive", + "nineanimetv", "directlink", ].includes(this.site.host) ) { @@ -8078,6 +8206,8 @@ class VideoHandler { VideoService.patreon, VideoService.kodik, VideoService.appledeveloper, + VideoService.epicgames, + VideoService.nineanimetv, ].includes(this.site.host) && !this.subtitlesList.some( (item) => @@ -8244,6 +8374,26 @@ async function src_main() { utils_debug.log(`Selected menu language: ${localizationProvider.lang}`); + // I haven't figured out how to do it any other way + if (window.location.origin === "https://9animetv.to") { + window.addEventListener("message", (e) => { + if (e.origin !== "https://rapid-cloud.co") { + return; + } + + if (e.data === "getVideoId") { + const videoId = /[^/]+$/.exec(window.location.href)?.[0]; + const iframeWin = + document.querySelector("#iframe-embed")?.contentWindow; + + iframeWin.postMessage( + `getVideoId:${videoId}`, + "https://rapid-cloud.co/", + ); + } + }); + } + videoObserver.onVideoAdded.addListener((video) => { for (const site of getService()) { if (!site) continue; diff --git a/package-lock.json b/package-lock.json index 594aa516..a9983757 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,25 +10,27 @@ "license": "MIT", "dependencies": { "bowser": "^2.11.0", - "requestidlecallback-polyfill": "^1.0.2" + "lit": "^3.2.0", + "requestidlecallback-polyfill": "^1.0.2", + "vot.js": "^1.0.5" }, "devDependencies": { - "ajv": "^8.16.0", - "bun-types": "^1.1.13", - "css-loader": "^7.1.2", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", + "browserslist": "^4.23.3", + "bun-types": "^1.1.24", + "eslint": "^9.9.0", + "eslint-plugin-github": "^5.0.1", + "eslint-plugin-oxlint": "0.7.2", + "eslint-plugin-sonarjs": "^1.0.4", "eslint-webpack-plugin": "^4.2.0", - "husky": "^9.0.11", - "lint-staged": "^15.2.7", - "npm-run-all2": "^6.2.0", - "prettier": "^3.3.2", - "sass": "^1.77.6", - "sass-loader": "^14.2.1", - "style-loader": "^4.0.0", - "tslib": "^2.6.3", - "webpack": "^5.92.0", + "husky": "^9.1.4", + "lightningcss": "^1.26.0", + "lint-staged": "^15.2.9", + "npm-run-all2": "^6.2.2", + "oxlint": "0.7.0", + "patch-package": "^8.0.0", + "postinstall-postinstall": "^2.1.0", + "sass": "^1.77.8", + "webpack": "^5.93.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.0.4", "webpack-monkey": "^0.2.1" @@ -68,24 +70,38 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", + "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -93,7 +109,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -122,28 +138,29 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@github/browserslist-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@github/browserslist-config/-/browserslist-config-1.0.0.tgz", + "integrity": "sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==", + "dev": true + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -157,11 +174,18 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", + "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -406,6 +430,19 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz", + "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==" + }, + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -441,6 +478,110 @@ "node": ">= 8" } }, + "node_modules/@oxlint/darwin-arm64": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-arm64/-/darwin-arm64-0.7.0.tgz", + "integrity": "sha512-BlKKozOOJb5q37mqAyTQhFHMEh8KBUsQvynrO0aBKOzHqkhVQ62eTtd064XsDym+qZCNlKeNR4363wBPRZWgZw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint/darwin-x64": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/darwin-x64/-/darwin-x64-0.7.0.tgz", + "integrity": "sha512-GSBgglTBEecG0ri9YbQcxxu62/FxnhFScbbx6tgT9qjzKNAtpogrgx5uvi22yq0XjyD8XT3SY7oVOz8wg6GZxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@oxlint/linux-arm64-gnu": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-gnu/-/linux-arm64-gnu-0.7.0.tgz", + "integrity": "sha512-xrX1qpnQvFbCnyfD0OvapoqR3S7kWHbCUb7PfGI8q2n5lB1CBf55FcFapcqwbxBzzC7/JaafRJu8qEiEdRH8oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-arm64-musl": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/linux-arm64-musl/-/linux-arm64-musl-0.7.0.tgz", + "integrity": "sha512-W3NBZiJ50Y+pPeB/qFTsspjvlRrzbq+ZiwWmNJfIDJD3eJWjICS4ehUm9qd+ZNUOtgakcG8xa69xoOg9NFE3Lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-x64-gnu": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-gnu/-/linux-x64-gnu-0.7.0.tgz", + "integrity": "sha512-gHQusonVYFwlhgWKgismXRGlAVynDIk4G2lNRKXt+sQOauIEDJTH/Kgk7xlKJmu8J1Ztrb4xjR5meDeeIgyxRg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/linux-x64-musl": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/linux-x64-musl/-/linux-x64-musl-0.7.0.tgz", + "integrity": "sha512-tT5VivFnhDS2vov8h1Hmn+Rv4vWoIQuS3I+HMaQbItMkDeh6mLanE7faeg+h9p5RqV2KLjRRDm49sdRvF05s4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@oxlint/win32-arm64": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/win32-arm64/-/win32-arm64-0.7.0.tgz", + "integrity": "sha512-Bt6D5eOC0Gb6TB4USXIAgZKXwuA1RVv96Und6z7GGryfDM53KpLrgAaeNXytx+u2yq74QuAtkkdsHh9wRosFFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@oxlint/win32-x64": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@oxlint/win32-x64/-/win32-x64-0.7.0.tgz", + "integrity": "sha512-Mjmw9fTpuW1iBFt1BxacM1WK4CVzHY15esx8RKOGCJD09kcxMpMvYE0ILtlXEQkTB62iJegtHav2uwkZoazkmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -463,6 +604,60 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -602,6 +797,12 @@ "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/mime": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", @@ -612,7 +813,6 @@ "version": "20.12.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz", "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } @@ -683,6 +883,11 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, "node_modules/@types/ws": { "version": "8.5.10", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", @@ -707,11 +912,116 @@ "integrity": "sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw==", "dev": true }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", @@ -915,6 +1225,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -929,9 +1245,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -992,12 +1308,15 @@ } }, "node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, + "dependencies": { + "environment": "^1.0.0" + }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1058,67 +1377,247 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { @@ -1174,9 +1673,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -1193,10 +1692,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -1212,9 +1711,9 @@ "dev": true }, "node_modules/bun-types": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.13.tgz", - "integrity": "sha512-G/TqF0SsMQGLr4g7K3B2BK8BrPEA1EqCNwxZbyRdj5M4t54zvwyaqvRJOW34kuPqc2IvNNalRU3swc8B4oc4FA==", + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.24.tgz", + "integrity": "sha512-UNEcYawHWOVw9GYQdOgjJvTQduYlPckmRMqpBqfkWpUzeK2CZfEP/JOYBH6SMypyfkNg/Zsqf0olN6vMrSPg3w==", "dev": true, "dependencies": { "@types/node": "~20.12.8", @@ -1274,9 +1773,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001554", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz", - "integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==", + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "dev": true, "funding": [ { @@ -1370,15 +1869,15 @@ } }, "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1419,9 +1918,9 @@ "dev": true }, "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -1616,51 +2115,61 @@ "node": ">= 8" } }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/debug": { @@ -1680,6 +2189,44 @@ } } }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1755,6 +2302,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -1764,6 +2328,15 @@ "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -1774,12 +2347,36 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -1793,17 +2390,22 @@ } }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, + "node_modules/dom-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/dom-parser/-/dom-parser-1.1.5.tgz", + "integrity": "sha512-lCiFG48ZUzGXjKN0qhSkxD/i3ndyV6I37zQ3W2VFYLjF1ob8A+QgSsM7Ps2UT0d3LpJxLMmMHiJJ34z5hkKLiA==" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1817,9 +2419,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.567", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz", - "integrity": "sha512-8KR114CAYQ4/r5EIEsOmOMqQ9j0MRbJZR3aXD/KFA8RuKzyoUB4XrUCg+l8RUGqTVQgKNIgTpjaG8YHRPAbX2w==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.10.tgz", + "integrity": "sha512-C3RDERDjrNW262GCRvpoer3a0Ksd66CtgDLxMHhzShQ8fhL4kwnpVXsJPAKg9xJjIROXUbLBrvtOzVAjALMIWA==", "dev": true }, "node_modules/emoji-regex": { @@ -1862,6 +2464,78 @@ "node": ">=4" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -1883,16 +2557,119 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", - "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -1917,41 +2694,37 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", + "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.17.1", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.9.0", "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.0.2", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", @@ -1965,10 +2738,18 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -1983,6 +2764,369 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-escompat": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.1.tgz", + "integrity": "sha512-j/H70uveM+G9M0onQJOYM+h5trTjQfmBnhGzxAxwGrqARfgXwkfjs+SkvJ1j/a4ofyCIYpBQsGg7q+TowwPNmA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.1" + }, + "peerDependencies": { + "eslint": ">=5.14.1" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-filenames": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-filenames/-/eslint-plugin-filenames-1.3.2.tgz", + "integrity": "sha512-tqxJTiEM5a0JmRCUYQmxw23vtTxrb2+a3Q2mMOPhFxvt7ZQQJmdiuMby9B/vUAuVMghyP7oET+nIf6EO6CBd/w==", + "dev": true, + "dependencies": { + "lodash.camelcase": "4.3.0", + "lodash.kebabcase": "4.1.1", + "lodash.snakecase": "4.1.1", + "lodash.upperfirst": "4.3.1" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-plugin-github": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-5.0.1.tgz", + "integrity": "sha512-qbXG3wL5Uh2JB92EKeX2hPtO9c/t75qVxQjVLYuTFfhHifLZzv9CBvLCvoaBhLrAC/xTMVht7DK/NofYK8X4Dg==", + "dev": true, + "dependencies": { + "@github/browserslist-config": "^1.0.0", + "@typescript-eslint/eslint-plugin": "^7.0.1", + "@typescript-eslint/parser": "^7.0.1", + "aria-query": "^5.3.0", + "eslint-config-prettier": ">=8.0.0", + "eslint-plugin-escompat": "^3.3.3", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-filenames": "^1.3.2", + "eslint-plugin-i18n-text": "^1.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-no-only-tests": "^3.0.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-rule-documentation": ">=1.0.0", + "jsx-ast-utils": "^3.3.2", + "prettier": "^3.0.0", + "svg-element-attributes": "^1.3.1" + }, + "bin": { + "eslint-ignore-errors": "bin/eslint-ignore-errors.js" + }, + "peerDependencies": { + "eslint": "^8.0.1" + } + }, + "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/eslint-plugin-github/node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-github/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/eslint-plugin-github/node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-github/node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-github/node_modules/eslint-plugin-jsx-a11y": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz", + "integrity": "sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==", + "dev": true, + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.9.1", + "axobject-query": "~3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-github/node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/eslint-plugin-github/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-i18n-text": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-i18n-text/-/eslint-plugin-i18n-text-1.0.1.tgz", + "integrity": "sha512-3G3UetST6rdqhqW9SfcfzNYMpQXS7wNkJvp6dsXnjzGiku6Iu5hl3B0kmk6lIcFPwYjhQIY+tXVRtK9TlGT7RA==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz", + "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==", + "dev": true, + "engines": { + "node": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-oxlint": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-oxlint/-/eslint-plugin-oxlint-0.7.2.tgz", + "integrity": "sha512-3+fhror4D0SQi4FmAI/c6eNVwUegekIMBNjBz2vBCDLkXnKsKO7hx4tLb93UOA1j1sznHXSlsoCr1hTNtEIU/Q==", + "dev": true, + "dependencies": { + "scule": "^1.3.0" + } + }, "node_modules/eslint-plugin-prettier": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", @@ -2013,17 +3157,38 @@ } } }, + "node_modules/eslint-plugin-sonarjs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-1.0.4.tgz", + "integrity": "sha512-jF0eGCUsq/HzMub4ExAyD8x1oEgjOyB9XVytYGyWgSFvdiJQJp6IuP7RmtauCf06o6N/kZErh+zW4b10y1WZ+Q==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-rule-documentation": { + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz", + "integrity": "sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2081,6 +3246,18 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2088,17 +3265,29 @@ "dev": true }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2274,6 +3463,34 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2317,15 +3534,15 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { @@ -2389,6 +3606,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -2399,23 +3625,22 @@ } }, "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": ">=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/follow-redirects": { @@ -2438,6 +3663,15 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -2484,6 +3718,21 @@ "node": ">= 0.6" } }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2513,6 +3762,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-east-asian-width": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", @@ -2556,10 +3832,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -2595,20 +3889,62 @@ "dev": true }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -2639,6 +3975,15 @@ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2684,6 +4029,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -2830,12 +4190,12 @@ } }, "node_modules/husky": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", - "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.4.tgz", + "integrity": "sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==", "dev": true, "bin": { - "husky": "bin.mjs" + "husky": "bin.js" }, "engines": { "node": ">=18" @@ -2865,22 +4225,10 @@ "node": ">=0.10.0" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -2940,6 +4288,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -2952,6 +4301,20 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -2970,6 +4333,65 @@ "node": ">= 10" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2982,6 +4404,34 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -2994,6 +4444,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -3018,6 +4498,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -3027,6 +4519,21 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3057,19 +4564,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-network-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz", - "integrity": "sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "engines": { - "node": ">=16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number": { + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-network-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz", + "integrity": "sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", @@ -3078,6 +4609,21 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -3111,6 +4657,49 @@ "node": ">=0.10.0" } }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -3123,6 +4712,91 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", @@ -3159,6 +4833,19 @@ "node": ">=0.10.0" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jackspeak": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", @@ -3194,111 +4881,438 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stable-stringify/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.26.0.tgz", + "integrity": "sha512-a/XZ5hdgifrofQJUArr5AiJjx26SwMam3SJUSMjgebZbESZ96i+6Qsl8tLi0kaUsdMzBWXh9sN1Oe6hp2/dkQw==", + "dev": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.26.0", + "lightningcss-darwin-x64": "1.26.0", + "lightningcss-freebsd-x64": "1.26.0", + "lightningcss-linux-arm-gnueabihf": "1.26.0", + "lightningcss-linux-arm64-gnu": "1.26.0", + "lightningcss-linux-arm64-musl": "1.26.0", + "lightningcss-linux-x64-gnu": "1.26.0", + "lightningcss-linux-x64-musl": "1.26.0", + "lightningcss-win32-arm64-msvc": "1.26.0", + "lightningcss-win32-x64-msvc": "1.26.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.26.0.tgz", + "integrity": "sha512-n4TIvHO1NY1ondKFYpL2ZX0bcC2y6yjXMD6JfyizgR8BCFNEeArINDzEaeqlfX9bXz73Bpz/Ow0nu+1qiDrBKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.26.0.tgz", + "integrity": "sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.26.0.tgz", + "integrity": "sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.26.0.tgz", + "integrity": "sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.26.0.tgz", + "integrity": "sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.26.0.tgz", + "integrity": "sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "argparse": "^2.0.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.26.0.tgz", + "integrity": "sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "json-buffer": "3.0.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.26.0.tgz", + "integrity": "sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.26.0.tgz", + "integrity": "sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.26.0.tgz", + "integrity": "sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.8.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lilconfig": { @@ -3314,21 +5328,21 @@ } }, "node_modules/lint-staged": { - "version": "15.2.7", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.7.tgz", - "integrity": "sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw==", + "version": "15.2.9", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.9.tgz", + "integrity": "sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==", "dev": true, "dependencies": { "chalk": "~5.3.0", "commander": "~12.1.0", - "debug": "~4.3.4", + "debug": "~4.3.6", "execa": "~8.0.1", - "lilconfig": "~3.1.1", - "listr2": "~8.2.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", "micromatch": "~4.0.7", "pidtree": "~0.6.0", "string-argv": "~0.3.2", - "yaml": "~2.4.2" + "yaml": "~2.5.0" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -3361,6 +5375,23 @@ "node": ">=18" } }, + "node_modules/lint-staged/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/lint-staged/node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", @@ -3496,16 +5527,16 @@ } }, "node_modules/listr2": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.1.tgz", - "integrity": "sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g==", + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", "dev": true, "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", - "log-update": "^6.0.0", - "rfdc": "^1.3.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" }, "engines": { @@ -3518,6 +5549,34 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, + "node_modules/lit": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz", + "integrity": "sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-element": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.0.tgz", + "integrity": "sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-html": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz", + "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -3548,21 +5607,45 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true + }, "node_modules/log-update": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", - "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, "dependencies": { - "ansi-escapes": "^6.2.0", - "cli-cursor": "^4.0.0", - "slice-ansi": "^7.0.0", + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" }, @@ -3643,6 +5726,11 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -3704,6 +5792,15 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -3768,6 +5865,18 @@ "node": ">=6" } }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -3786,6 +5895,15 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", @@ -3820,24 +5938,6 @@ "multicast-dns": "cli.js" } }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3869,9 +5969,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/normalize-path": { @@ -3893,9 +5993,9 @@ } }, "node_modules/npm-run-all2": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.0.tgz", - "integrity": "sha512-wA7yVIkthe6qJBfiJ2g6aweaaRlw72itsFGF6HuwCHKwtwAx/4BY1vVpk6bw6lS8RLMsexoasOkd0aYOmsFG7Q==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.2.tgz", + "integrity": "sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==", "dev": true, "dependencies": { "ansi-styles": "^6.2.1", @@ -3913,7 +6013,7 @@ "run-s": "bin/run-s/index.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0", + "node": "^14.18.0 || ^16.13.0 || >=18.0.0", "npm": ">= 8" } }, @@ -3926,50 +6026,142 @@ "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-run-all2/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-run-all2/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-run-all2/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-run-all2/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4060,6 +6252,40 @@ "node": ">= 0.8.0" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oxlint": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-0.7.0.tgz", + "integrity": "sha512-oZI76dyBPW+cETjci4Rm56nfumbNsUcjJoPXomaC+FBzCi2fB5gV6ibnwRnVilt9yJXWGNvloB7c8/Mmmc9B5w==", + "dev": true, + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": ">=14.*" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/darwin-arm64": "0.7.0", + "@oxlint/darwin-x64": "0.7.0", + "@oxlint/linux-arm64-gnu": "0.7.0", + "@oxlint/linux-arm64-musl": "0.7.0", + "@oxlint/linux-x64-gnu": "0.7.0", + "@oxlint/linux-x64-musl": "0.7.0", + "@oxlint/win32-arm64": "0.7.0", + "@oxlint/win32-x64": "0.7.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -4137,6 +6363,79 @@ "node": ">= 0.8" } }, + "node_modules/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "dev": true, + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-package/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4201,10 +6500,19 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -4295,111 +6603,21 @@ "node": ">=8" } }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", - "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.4" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "node_modules/postinstall-postinstall": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", + "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "hasInstallScript": true }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -4443,6 +6661,29 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/protobufjs": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -4611,6 +6852,45 @@ "node": ">= 10.13.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/requestidlecallback-polyfill": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/requestidlecallback-polyfill/-/requestidlecallback-polyfill-1.0.2.tgz", @@ -4679,21 +6959,48 @@ } }, "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -4720,18 +7027,16 @@ "dev": true }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-applescript": { @@ -4769,6 +7074,30 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -4789,6 +7118,23 @@ } ] }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4796,9 +7142,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.77.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", - "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -4812,46 +7158,6 @@ "node": ">=14.0.0" } }, - "node_modules/sass-loader": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.2.1.tgz", - "integrity": "sha512-G0VcnMYU18a4N7VoNDegg2OuMjYtxnqzQWARVWCIVSZwJeiL9kg8QMsuIZOplsJgTzZLF6jGxI3AClj8I9nRdQ==", - "dev": true, - "dependencies": { - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -4883,6 +7189,12 @@ "ajv": "^8.8.2" } }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "dev": true + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -5081,6 +7393,21 @@ "node": ">= 0.4" } }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -5149,6 +7476,15 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -5286,6 +7622,18 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -5333,6 +7681,65 @@ "node": ">=8" } }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5358,6 +7765,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -5379,22 +7795,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-4.0.0.tgz", - "integrity": "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==", - "dev": true, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.27.0" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5419,6 +7819,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-element-attributes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz", + "integrity": "sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/synckit": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", @@ -5598,6 +8008,18 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5635,6 +8057,30 @@ "tslib": "2" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", @@ -5653,18 +8099,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -5678,11 +8112,107 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } }, "node_modules/unpipe": { "version": "1.0.0", @@ -5694,9 +8224,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -5713,8 +8243,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -5765,6 +8295,21 @@ "node": ">= 0.8" } }, + "node_modules/vot.js": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vot.js/-/vot.js-1.0.5.tgz", + "integrity": "sha512-O2YCMSui8XQ0ESXbeciV4ixlHRhBNcTslsROi57Mcjhnaia0EhdNuBUQLqXeZVCiaXjHH8CHuCLpcdFpaQlhlQ==", + "dependencies": { + "dom-parser": "^1.1.5", + "protobufjs": "^7.3.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, "node_modules/watchpack": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", @@ -5788,9 +8333,9 @@ } }, "node_modules/webpack": { - "version": "5.92.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.92.0.tgz", - "integrity": "sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA==", + "version": "5.93.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -6201,6 +8746,91 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wildcard": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", @@ -6273,9 +8903,9 @@ "dev": true }, "node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -6338,9 +8968,9 @@ "dev": true }, "node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", "dev": true, "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index 1c387892..b76a974e 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,6 @@ "bowser": "^2.11.0", "lit": "^3.2.0", "requestidlecallback-polyfill": "^1.0.2", - "vot.js": "^1.0.4" + "vot.js": "^1.0.5" } } diff --git a/patches/vot.js+1.0.4+018+removed-mailru-extra-fetch.patch b/patches/vot.js+1.0.4+018+removed-mailru-extra-fetch.patch deleted file mode 100644 index 3a94390c..00000000 --- a/patches/vot.js+1.0.4+018+removed-mailru-extra-fetch.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/node_modules/vot.js/dist/utils/helper.js b/node_modules/vot.js/dist/utils/helper.js -index b61b6bc..f8eded2 100644 ---- a/node_modules/vot.js/dist/utils/helper.js -+++ b/node_modules/vot.js/dist/utils/helper.js -@@ -18,8 +18,7 @@ export class MailRuHelper { - API_ORIGIN = "https://my.mail.ru/"; - async getExtraVideoId(pathname) { - try { -- const res = await fetchWithTimeout(`${this.API_ORIGIN}${pathname}`); -- const content = await res.text(); -+ const content = document.querySelector(".sp-video__page-config")?.innerText; - return /"itemId":\s?"([^"]+)"/.exec(content)?.[1]; - } - catch (err) { diff --git a/patches/vot.js+1.0.2+005+improve-videodata-logic.patch b/patches/vot.js+1.0.5+005+improve-videodata-logic.patch similarity index 90% rename from patches/vot.js+1.0.2+005+improve-videodata-logic.patch rename to patches/vot.js+1.0.5+005+improve-videodata-logic.patch index 76a99954..1ce6340f 100644 --- a/patches/vot.js+1.0.2+005+improve-videodata-logic.patch +++ b/patches/vot.js+1.0.5+005+improve-videodata-logic.patch @@ -1,27 +1,27 @@ diff --git a/node_modules/vot.js/dist/client.js b/node_modules/vot.js/dist/client.js -index ffa6115..903b604 100644 +index ce15ba0..bf7ffc7 100644 --- a/node_modules/vot.js/dist/client.js +++ b/node_modules/vot.js/dist/client.js -@@ -237,7 +237,7 @@ export default class VOTClient { +@@ -235,7 +235,7 @@ export default class VOTClient { async getSubtitles({ videoData, requestLang = this.requestLang, headers = {}, }) { const { url } = videoData; - if (this.isCustomFormat(url)) { + if (this.isCustomLink(url)) { - throw new VOTJSError("Unsupported video URL for getting subtitles"); + throw new VOTLocalizedError("Unsupported video URL for getting subtitles"); // add translation } const { secretKey, uuid } = await this.getSession("video-translation"); const body = yandexProtobuf.encodeSubtitlesRequest(url, requestLang); -@@ -271,7 +271,7 @@ export default class VOTClient { +@@ -269,7 +269,7 @@ export default class VOTClient { async translateStream({ videoData, requestLang = this.requestLang, responseLang = this.responseLang, headers = {}, }) { const { url } = videoData; - if (this.isCustomFormat(url)) { + if (this.isCustomLink(url)) { - throw new VOTJSError("Unsupported video URL for getting stream translation"); + throw new VOTLocalizedError("Unsupported video URL for getting stream translation"); // add translation } const { secretKey, uuid } = await this.getSession("video-translation"); const body = yandexProtobuf.encodeStreamRequest(url, requestLang, responseLang); diff --git a/node_modules/vot.js/dist/utils/videoData.js b/node_modules/vot.js/dist/utils/videoData.js -index 9ab1c62..2532b39 100644 +index 5f7adbe..de2c385 100644 --- a/node_modules/vot.js/dist/utils/videoData.js +++ b/node_modules/vot.js/dist/utils/videoData.js @@ -9,18 +9,11 @@ class VideoDataError extends Error { @@ -66,7 +66,7 @@ index 9ab1c62..2532b39 100644 switch (service.host) { case VideoService.custom: return url.href; -@@ -67,6 +60,12 @@ export async function getVideoID(service, videoURL) { +@@ -68,6 +61,12 @@ export async function getVideoID(service, videoURL) { else if (paramOID && paramID) { return `video-${Math.abs(parseInt(paramOID))}_${paramID}`; } @@ -79,7 +79,7 @@ index 9ab1c62..2532b39 100644 return null; } case VideoService.nine_gag: -@@ -223,12 +222,8 @@ export async function getVideoID(service, videoURL) { +@@ -233,12 +232,8 @@ export async function getVideoID(service, videoURL) { return undefined; } } diff --git a/patches/vot.js+1.0.4+007+added-udemy-helper.patch b/patches/vot.js+1.0.5+007+added-udemy-helper.patch similarity index 91% rename from patches/vot.js+1.0.4+007+added-udemy-helper.patch rename to patches/vot.js+1.0.5+007+added-udemy-helper.patch index f2cae375..0ad9694e 100644 --- a/patches/vot.js+1.0.4+007+added-udemy-helper.patch +++ b/patches/vot.js+1.0.5+007+added-udemy-helper.patch @@ -65,20 +65,20 @@ index 0000000..0aacd4e +export {} \ No newline at end of file diff --git a/node_modules/vot.js/dist/utils/helper.d.ts b/node_modules/vot.js/dist/utils/helper.d.ts -index 80a6b43..36d1d6c 100644 +index 0d0db05..4469506 100644 --- a/node_modules/vot.js/dist/utils/helper.d.ts +++ b/node_modules/vot.js/dist/utils/helper.d.ts -@@ -4,7 +4,8 @@ import * as Kodik from "../types/helpers/kodik.js"; - import * as Patreon from "../types/helpers/patreon.js"; - import * as BannedVideo from "../types/helpers/bannedvideo.js"; +@@ -6,7 +6,8 @@ import * as BannedVideo from "../types/helpers/bannedvideo.js"; import * as Kick from "../types/helpers/kick.js"; + import * as NineAnimeTV from "../types/helpers/nineanimetv.js"; + import * as EpicGames from "../types/helpers/epicgames.js"; -import { VideoService } from "../types/yandex.js"; +import * as Udemy from "../types/helpers/udemy.js"; +import { VideoService, RequestLang, TranslationHelp } from "../types/yandex.js"; export declare class MailRuHelper { API_ORIGIN: string; - getExtraVideoId(pathname: string): Promise; -@@ -82,6 +83,24 @@ export declare class KickHelper { + getVideoData(videoId: string): Promise; +@@ -83,6 +84,24 @@ export declare class KickHelper { title: string; }>; } @@ -103,17 +103,16 @@ index 80a6b43..36d1d6c 100644 export declare class AppleDeveloperHelper { getVideoData(videoId: string): Promise<{ url: string; -@@ -95,6 +114,7 @@ export default class VideoHelper { +@@ -113,6 +132,7 @@ export default class VideoHelper { static [VideoService.reddit]: RedditHelper; static [VideoService.bannedvideo]: BannedVideoHelper; static [VideoService.kick]: KickHelper; + static [VideoService.udemy]: UdemyHelper; static [VideoService.appledeveloper]: AppleDeveloperHelper; - } - //# sourceMappingURL=helper.d.ts.map -\ No newline at end of file + static [VideoService.epicgames]: EpicGamesHelper; + static [VideoService.nineanimetv]: NineAnimetvHelper; diff --git a/node_modules/vot.js/dist/utils/helper.js b/node_modules/vot.js/dist/utils/helper.js -index e55f95d..0778561 100644 +index 59d03b4..651dfa8 100644 --- a/node_modules/vot.js/dist/utils/helper.js +++ b/node_modules/vot.js/dist/utils/helper.js @@ -1,8 +1,12 @@ @@ -129,7 +128,7 @@ index e55f95d..0778561 100644 class VideoHelperError extends Error { constructor(message) { super(message); -@@ -379,6 +383,120 @@ export class KickHelper { +@@ -368,6 +372,120 @@ export class KickHelper { }; } } @@ -250,10 +249,11 @@ index e55f95d..0778561 100644 export class AppleDeveloperHelper { async getVideoData(videoId) { const res = await fetchWithTimeout(`https://developer.apple.com/${videoId}`); -@@ -400,5 +518,6 @@ export default class VideoHelper { +@@ -490,6 +608,7 @@ export default class VideoHelper { static [VideoService.reddit] = new RedditHelper(); static [VideoService.bannedvideo] = new BannedVideoHelper(); static [VideoService.kick] = new KickHelper(); + static [VideoService.udemy] = new UdemyHelper(); static [VideoService.appledeveloper] = new AppleDeveloperHelper(); - } + static [VideoService.epicgames] = new EpicGamesHelper(); + static [VideoService.nineanimetv] = new NineAnimetvHelper(); diff --git a/patches/vot.js+1.0.4+008+added-coursehunter-helper.patch b/patches/vot.js+1.0.5+008+added-coursehunter-helper.patch similarity index 83% rename from patches/vot.js+1.0.4+008+added-coursehunter-helper.patch rename to patches/vot.js+1.0.5+008+added-coursehunter-helper.patch index 261595ed..6d72288e 100644 --- a/patches/vot.js+1.0.4+008+added-coursehunter-helper.patch +++ b/patches/vot.js+1.0.5+008+added-coursehunter-helper.patch @@ -21,18 +21,18 @@ index 0000000..0aacd4e +export {} \ No newline at end of file diff --git a/node_modules/vot.js/dist/utils/helper.d.ts b/node_modules/vot.js/dist/utils/helper.d.ts -index 36d1d6c..1f88850 100644 +index 4469506..c81aaf6 100644 --- a/node_modules/vot.js/dist/utils/helper.d.ts +++ b/node_modules/vot.js/dist/utils/helper.d.ts -@@ -5,6 +5,7 @@ import * as Patreon from "../types/helpers/patreon.js"; - import * as BannedVideo from "../types/helpers/bannedvideo.js"; - import * as Kick from "../types/helpers/kick.js"; +@@ -7,6 +7,7 @@ import * as Kick from "../types/helpers/kick.js"; + import * as NineAnimeTV from "../types/helpers/nineanimetv.js"; + import * as EpicGames from "../types/helpers/epicgames.js"; import * as Udemy from "../types/helpers/udemy.js"; +import * as Coursehunter from "../types/helpers/coursehunter.js"; import { VideoService, RequestLang, TranslationHelp } from "../types/yandex.js"; export declare class MailRuHelper { API_ORIGIN: string; -@@ -101,6 +102,14 @@ export declare class UdemyHelper { +@@ -102,6 +103,14 @@ export declare class UdemyHelper { detectedLanguage?: RequestLang }>; } @@ -47,20 +47,19 @@ index 36d1d6c..1f88850 100644 export declare class AppleDeveloperHelper { getVideoData(videoId: string): Promise<{ url: string; -@@ -115,6 +124,7 @@ export default class VideoHelper { +@@ -133,6 +142,7 @@ export default class VideoHelper { static [VideoService.bannedvideo]: BannedVideoHelper; static [VideoService.kick]: KickHelper; static [VideoService.udemy]: UdemyHelper; + static [VideoService.coursehunter]: CoursehunterHelper; static [VideoService.appledeveloper]: AppleDeveloperHelper; - } - //# sourceMappingURL=helper.d.ts.map -\ No newline at end of file + static [VideoService.epicgames]: EpicGamesHelper; + static [VideoService.nineanimetv]: NineAnimetvHelper; diff --git a/node_modules/vot.js/dist/utils/helper.js b/node_modules/vot.js/dist/utils/helper.js -index 0778561..750d917 100644 +index 651dfa8..98f8b69 100644 --- a/node_modules/vot.js/dist/utils/helper.js +++ b/node_modules/vot.js/dist/utils/helper.js -@@ -497,6 +497,33 @@ export class UdemyHelper { +@@ -486,6 +486,33 @@ export class UdemyHelper { }; } } @@ -94,18 +93,19 @@ index 0778561..750d917 100644 export class AppleDeveloperHelper { async getVideoData(videoId) { const res = await fetchWithTimeout(`https://developer.apple.com/${videoId}`); -@@ -519,5 +546,6 @@ export default class VideoHelper { +@@ -609,6 +636,7 @@ export default class VideoHelper { static [VideoService.bannedvideo] = new BannedVideoHelper(); static [VideoService.kick] = new KickHelper(); static [VideoService.udemy] = new UdemyHelper(); + static [VideoService.coursehunter] = new CoursehunterHelper(); static [VideoService.appledeveloper] = new AppleDeveloperHelper(); - } + static [VideoService.epicgames] = new EpicGamesHelper(); + static [VideoService.nineanimetv] = new NineAnimetvHelper(); diff --git a/node_modules/vot.js/dist/utils/videoData.js b/node_modules/vot.js/dist/utils/videoData.js -index bdff13c..115fa98 100644 +index 740c4b9..202dbf4 100644 --- a/node_modules/vot.js/dist/utils/videoData.js +++ b/node_modules/vot.js/dist/utils/videoData.js -@@ -188,6 +188,10 @@ export async function getVideoID(service, video) { +@@ -185,6 +185,10 @@ export async function getVideoID(service, video) { } case VideoService.yandexdisk: return /\/i\/([^/]+)/.exec(url.pathname)?.[1]; diff --git a/patches/vot.js+1.0.4+009+added-coursera-helper.patch b/patches/vot.js+1.0.5+009+added-coursera-helper.patch similarity index 89% rename from patches/vot.js+1.0.4+009+added-coursera-helper.patch rename to patches/vot.js+1.0.5+009+added-coursera-helper.patch index 17f91ede..13ea1fd0 100644 --- a/patches/vot.js+1.0.4+009+added-coursera-helper.patch +++ b/patches/vot.js+1.0.5+009+added-coursera-helper.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/vot.js/dist/config/sites.js b/node_modules/vot.js/dist/config/sites.js -index bfa6edc..d7598b2 100644 +index 69c1a46..00fcc39 100644 --- a/node_modules/vot.js/dist/config/sites.js +++ b/node_modules/vot.js/dist/config/sites.js @@ -238,6 +238,7 @@ export default [ @@ -78,18 +78,18 @@ index 0000000..0aacd4e +export {} \ No newline at end of file diff --git a/node_modules/vot.js/dist/utils/helper.d.ts b/node_modules/vot.js/dist/utils/helper.d.ts -index 1f88850..597091f 100644 +index c81aaf6..1a66b09 100644 --- a/node_modules/vot.js/dist/utils/helper.d.ts +++ b/node_modules/vot.js/dist/utils/helper.d.ts -@@ -6,6 +6,7 @@ import * as BannedVideo from "../types/helpers/bannedvideo.js"; - import * as Kick from "../types/helpers/kick.js"; +@@ -8,6 +8,7 @@ import * as NineAnimeTV from "../types/helpers/nineanimetv.js"; + import * as EpicGames from "../types/helpers/epicgames.js"; import * as Udemy from "../types/helpers/udemy.js"; import * as Coursehunter from "../types/helpers/coursehunter.js"; +import * as Coursera from "../types/helpers/coursera.js"; import { VideoService, RequestLang, TranslationHelp } from "../types/yandex.js"; export declare class MailRuHelper { API_ORIGIN: string; -@@ -99,7 +100,7 @@ export declare class UdemyHelper { +@@ -100,7 +101,7 @@ export declare class UdemyHelper { title: string; description: string; translationHelp: TranslationHelp[] | null; @@ -98,7 +98,7 @@ index 1f88850..597091f 100644 }>; } export declare class CoursehunterHelper { -@@ -110,6 +111,19 @@ export declare class CoursehunterHelper { +@@ -111,6 +112,19 @@ export declare class CoursehunterHelper { title: string; }>; } @@ -118,17 +118,16 @@ index 1f88850..597091f 100644 export declare class AppleDeveloperHelper { getVideoData(videoId: string): Promise<{ url: string; -@@ -125,6 +139,7 @@ export default class VideoHelper { +@@ -143,6 +157,7 @@ export default class VideoHelper { static [VideoService.kick]: KickHelper; static [VideoService.udemy]: UdemyHelper; static [VideoService.coursehunter]: CoursehunterHelper; + static [VideoService.coursera]: CourseraHelper; static [VideoService.appledeveloper]: AppleDeveloperHelper; - } - //# sourceMappingURL=helper.d.ts.map -\ No newline at end of file + static [VideoService.epicgames]: EpicGamesHelper; + static [VideoService.nineanimetv]: NineAnimetvHelper; diff --git a/node_modules/vot.js/dist/utils/helper.js b/node_modules/vot.js/dist/utils/helper.js -index 750d917..aeba2ba 100644 +index 98f8b69..cdb1aa7 100644 --- a/node_modules/vot.js/dist/utils/helper.js +++ b/node_modules/vot.js/dist/utils/helper.js @@ -1,7 +1,7 @@ @@ -140,7 +139,7 @@ index 750d917..aeba2ba 100644 import config from "../config/config.js"; import { VideoService } from "../types/yandex.js"; import { localizationProvider } from "../../../../src/localization/localizationProvider.js"; -@@ -462,13 +462,13 @@ export class UdemyHelper { +@@ -451,13 +451,13 @@ export class UdemyHelper { } const courseLangData = await this.getCourseLang(courseId); @@ -159,7 +158,7 @@ index 750d917..aeba2ba 100644 if (!subtitleUrl) { console.log("Failed to find subtitle file in captions", captions) } -@@ -486,7 +486,7 @@ export class UdemyHelper { +@@ -475,7 +475,7 @@ export class UdemyHelper { targetUrl: videoUrl, }, ], @@ -168,7 +167,7 @@ index 750d917..aeba2ba 100644 } : { url: videoUrl, translationHelp: null, -@@ -537,6 +537,90 @@ export class AppleDeveloperHelper { +@@ -526,6 +526,90 @@ export class AppleDeveloperHelper { }; } } @@ -256,13 +255,14 @@ index 750d917..aeba2ba 100644 + }; + } +} - export default class VideoHelper { - static [VideoService.mailru] = new MailRuHelper(); - static [VideoService.weverse] = new WeverseHelper(); -@@ -547,5 +631,6 @@ export default class VideoHelper { + export class EpicGamesHelper { + API_ORIGIN = "https://dev.epicgames.com/community/api/learning"; + async getPostInfo(videoId) { +@@ -637,6 +721,7 @@ export default class VideoHelper { static [VideoService.kick] = new KickHelper(); static [VideoService.udemy] = new UdemyHelper(); static [VideoService.coursehunter] = new CoursehunterHelper(); + static [VideoService.coursera] = new CourseraHelper(); static [VideoService.appledeveloper] = new AppleDeveloperHelper(); - } + static [VideoService.epicgames] = new EpicGamesHelper(); + static [VideoService.nineanimetv] = new NineAnimetvHelper(); diff --git a/patches/vot.js+1.0.4+017+fix-dailymotion.patch b/patches/vot.js+1.0.5+017+fix-dailymotion.patch similarity index 93% rename from patches/vot.js+1.0.4+017+fix-dailymotion.patch rename to patches/vot.js+1.0.5+017+fix-dailymotion.patch index b045f54e..c3ad2714 100644 --- a/patches/vot.js+1.0.4+017+fix-dailymotion.patch +++ b/patches/vot.js+1.0.5+017+fix-dailymotion.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/vot.js/dist/config/sites.js b/node_modules/vot.js/dist/config/sites.js -index 8c7b35d..52f942b 100644 +index c4a4a5c..ab11302 100644 --- a/node_modules/vot.js/dist/config/sites.js +++ b/node_modules/vot.js/dist/config/sites.js @@ -219,7 +219,7 @@ export default [ diff --git a/patches/vot.js+1.0.5+018+added-9animetv-and-epicgames.patch b/patches/vot.js+1.0.5+018+added-9animetv-and-epicgames.patch new file mode 100644 index 00000000..52318ff8 --- /dev/null +++ b/patches/vot.js+1.0.5+018+added-9animetv-and-epicgames.patch @@ -0,0 +1,76 @@ +diff --git a/node_modules/vot.js/dist/config/sites.js b/node_modules/vot.js/dist/config/sites.js +index ab11302..b91a1fb 100644 +--- a/node_modules/vot.js/dist/config/sites.js ++++ b/node_modules/vot.js/dist/config/sites.js +@@ -331,12 +331,14 @@ export default [ + host: VideoService.epicgames, + url: "https://dev.epicgames.com/community/learning/", + match: /^dev.epicgames.com$/, ++ selector: ".vjs-v7", + needExtraData: true, + }, + { + host: VideoService.nineanimetv, + url: "https://9animetv.to/watch/", +- match: /^9animetv.to$/, ++ match: /^rapid-cloud.co$/, ++ selector: ".jw-media", + needExtraData: true, + }, + { +diff --git a/node_modules/vot.js/dist/utils/helper.js b/node_modules/vot.js/dist/utils/helper.js +index 5933938..d0c0942 100644 +--- a/node_modules/vot.js/dist/utils/helper.js ++++ b/node_modules/vot.js/dist/utils/helper.js +@@ -642,7 +642,7 @@ export class NineAnimetvHelper { + RAPID_CLOUD_ORIGIN = "https://rapid-cloud.co/ajax/embed-6-v2"; + async getSourceId(episodeId) { + try { +- const res = await fetchWithTimeout(`${this.API_ORIGIN}/servers?episodeId=${episodeId}`); ++ const res = await GM_fetch(`${this.API_ORIGIN}/servers?episodeId=${episodeId}`); + const content = (await res.json()); + if (!content.html) { + return false; +@@ -656,7 +656,7 @@ export class NineAnimetvHelper { + } + async getPlayerLink(sourceId) { + try { +- const res = await fetchWithTimeout(`${this.API_ORIGIN}/sources?id=${sourceId}`); ++ const res = await GM_fetch(`${this.API_ORIGIN}/sources?id=${sourceId}`); + const content = (await res.json()); + if (!content.link.includes("rapid-cloud.co")) { + return false; +@@ -670,7 +670,7 @@ export class NineAnimetvHelper { + } + async getRapidCloudData(rapidId) { + try { +- const res = await fetchWithTimeout(`${this.RAPID_CLOUD_ORIGIN}/getSources?id=${rapidId}`); ++ const res = await GM_fetch(`${this.RAPID_CLOUD_ORIGIN}/getSources?id=${rapidId}`); + const content = (await res.json()); + if (content.encrypted) { + console.warn("Encrypted RapidCloud data found. Let us know about it", content); +diff --git a/node_modules/vot.js/dist/utils/videoData.js b/node_modules/vot.js/dist/utils/videoData.js +index 188abc1..c5d8b30 100644 +--- a/node_modules/vot.js/dist/utils/videoData.js ++++ b/node_modules/vot.js/dist/utils/videoData.js +@@ -255,7 +255,19 @@ export async function getVideoID(service, video) { + return /\/(\w{4})\/[^/]+$/.exec(url.pathname)?.[1]; + } + case VideoService.nineanimetv: { +- return /[^/]+$/.exec(url.href)?.[0]; ++ return new Promise(resolve => { ++ const origin = "https://9animetv.to" ++ window.addEventListener("message", (e) => { ++ if (e.origin !== origin) { ++ return; ++ } ++ ++ if (e.data?.startsWith("getVideoId:")) { ++ resolve(e.data.replace("getVideoId:")) ++ } ++ }) ++ window.top.postMessage("getVideoId", origin); ++ }) + } + default: + return undefined; diff --git a/src/headers.json b/src/headers.json index 12a31440..d6e52ca7 100644 --- a/src/headers.json +++ b/src/headers.json @@ -52,6 +52,9 @@ "*://*.kodik.cc/*", "*://*.kick.com/*", "*://developer.apple.com/*", + "*://dev.epicgames.com/*", + "*://*.rapid-cloud.co/*", + "*://9animetv.to/*", "*://*/*.mp4*" ], "exclude": ["file://*/*.mp4*"], @@ -65,6 +68,7 @@ "yandex.net", "timeweb.cloud", "raw.githubusercontent.com", + "9animetv.to", "toil.cc", "deno.dev", "onrender.com", diff --git a/src/index.js b/src/index.js index 2c1c07c1..026a1bc9 100644 --- a/src/index.js +++ b/src/index.js @@ -1921,6 +1921,7 @@ class VideoHandler { "yandexdisk", "coursehunter", "archive", + "nineanimetv", "directlink", ].includes(this.site.host) ) { @@ -2289,6 +2290,8 @@ class VideoHandler { YandexType.VideoService.patreon, YandexType.VideoService.kodik, YandexType.VideoService.appledeveloper, + YandexType.VideoService.epicgames, + YandexType.VideoService.nineanimetv, ].includes(this.site.host) && !this.subtitlesList.some( (item) => @@ -2455,6 +2458,26 @@ async function main() { debug.log(`Selected menu language: ${localizationProvider.lang}`); + // I haven't figured out how to do it any other way + if (window.location.origin === "https://9animetv.to") { + window.addEventListener("message", (e) => { + if (e.origin !== "https://rapid-cloud.co") { + return; + } + + if (e.data === "getVideoId") { + const videoId = /[^/]+$/.exec(window.location.href)?.[0]; + const iframeWin = + document.querySelector("#iframe-embed")?.contentWindow; + + iframeWin.postMessage( + `getVideoId:${videoId}`, + "https://rapid-cloud.co/", + ); + } + }); + } + videoObserver.onVideoAdded.addListener((video) => { for (const site of getService()) { if (!site) continue; diff --git a/wiki/SITES-EN.md b/wiki/SITES-EN.md index 2a13bfcf..b1f35cb7 100644 --- a/wiki/SITES-EN.md +++ b/wiki/SITES-EN.md @@ -670,6 +670,38 @@ Limitations: - There are no subtitles +## Epicgames + +Status: [✅] Working + +Available (sub)domains: + +- `dev.epicgames.com` + +Available paths: + +- /community/learning/courses/XXX/XXX/XXX/XXX + +Limitations: + +- There are no subtitles + +## Nineanimetv + +Status: [✅] Working + +Available (sub)domains: + +- `9animetv.to (vidstreaming / vidcloud)` + +Available paths: + +- /watch/anime-name-ANIME_ID?ep=EPISODE_ID + +Limitations: + +- There are no subtitles + ## Direct link to MP4 Status: [✅] Working diff --git a/wiki/SITES-RU.md b/wiki/SITES-RU.md index 6fddeb44..38636d09 100644 --- a/wiki/SITES-RU.md +++ b/wiki/SITES-RU.md @@ -670,6 +670,38 @@ - Нет субтитров +## Epicgames + +Статус: [✅] Работает + +Доступные (под)домены: + +- `dev.epicgames.com` + +Доступные пути: + +- /community/learning/courses/XXX/XXX/XXX/XXX + +Ограничения: + +- Нет субтитров + +## Nineanimetv + +Статус: [✅] Работает + +Доступные (под)домены: + +- `9animetv.to (vidstreaming / vidcloud)` + +Доступные пути: + +- /watch/anime-name-ANIME_ID?ep=EPISODE_ID + +Ограничения: + +- Нет субтитров + ## Direct link to MP4 Статус: [✅] Работает diff --git a/wiki/gen-sites.js b/wiki/gen-sites.js index 12397593..99c5283c 100644 --- a/wiki/gen-sites.js +++ b/wiki/gen-sites.js @@ -243,6 +243,14 @@ const siteData = { paths: ["/videos/play/XXX/XXX"], limits: [i18n.noSubtitles], }, + epicgames: { + paths: ["/community/learning/courses/XXX/XXX/XXX/XXX"], + limits: [i18n.noSubtitles], + }, + nineanimetv: { + paths: ["/watch/anime-name-ANIME_ID?ep=EPISODE_ID"], + limits: [i18n.noSubtitles], + }, directlink: { paths: ["/*.mp4"], limits: [i18n.noLocalLinks], @@ -415,6 +423,7 @@ async function main() { "geo.dailymotion.com", `geo.dailymotion.com (${i18n.dailymotionNotice[lang]})`, ) + .replace("rapid-cloud.co", `9animetv.to (vidstreaming / vidcloud)`) .replaceAll("\\/", "/"); await Bun.write( diff --git a/yarn.lock b/yarn.lock index 29d4361d..80869af2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6 +1,5 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 -# bun ./bun.lockb --hash: 73E1FC844114B6D1-d17cc8cd94311a8c-234FF38BF3CE6940-1c6d1c32ad3168c9 "@aashutoshrathi/word-wrap@^1.2.3": @@ -20,25 +19,11 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz" integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== -"@eslint/config-array@^0.17.0": - version "0.17.0" - resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz" - integrity sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA== - dependencies: - "@eslint/object-schema" "^2.1.4" - debug "^4.3.1" - minimatch "^3.1.2" - "@eslint/config-array@^0.17.1": version "0.17.1" resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz" @@ -48,21 +33,6 @@ debug "^4.3.1" minimatch "^3.1.2" -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - "@eslint/eslintrc@^3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz" @@ -78,21 +48,6 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@eslint/js@9.7.0": - version "9.7.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz" - integrity sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng== - -"@eslint/js@9.8.0": - version "9.8.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz" - integrity sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA== - "@eslint/js@9.9.0": version "9.9.0" resolved "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz" @@ -108,25 +63,11 @@ resolved "https://registry.npmjs.org/@github/browserslist-config/-/browserslist-config-1.0.0.tgz" integrity sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz" - integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== - "@humanwhocodes/retry@^0.3.0": version "0.3.0" resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz" @@ -229,9 +170,9 @@ integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== "@lit-labs/ssr-dom-shim@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz" - integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g== + version "1.2.1" + resolved "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz" + integrity sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ== "@lit/reactive-element@^2.0.4": version "2.0.4" @@ -248,7 +189,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -261,41 +202,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oxlint/darwin-arm64@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@oxlint/darwin-arm64/-/darwin-arm64-0.7.0.tgz" - integrity sha512-BlKKozOOJb5q37mqAyTQhFHMEh8KBUsQvynrO0aBKOzHqkhVQ62eTtd064XsDym+qZCNlKeNR4363wBPRZWgZw== - -"@oxlint/darwin-x64@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@oxlint/darwin-x64/-/darwin-x64-0.7.0.tgz" - integrity sha512-GSBgglTBEecG0ri9YbQcxxu62/FxnhFScbbx6tgT9qjzKNAtpogrgx5uvi22yq0XjyD8XT3SY7oVOz8wg6GZxQ== - -"@oxlint/linux-arm64-gnu@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@oxlint/linux-arm64-gnu/-/linux-arm64-gnu-0.7.0.tgz" - integrity sha512-xrX1qpnQvFbCnyfD0OvapoqR3S7kWHbCUb7PfGI8q2n5lB1CBf55FcFapcqwbxBzzC7/JaafRJu8qEiEdRH8oA== - -"@oxlint/linux-arm64-musl@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@oxlint/linux-arm64-musl/-/linux-arm64-musl-0.7.0.tgz" - integrity sha512-W3NBZiJ50Y+pPeB/qFTsspjvlRrzbq+ZiwWmNJfIDJD3eJWjICS4ehUm9qd+ZNUOtgakcG8xa69xoOg9NFE3Lg== - -"@oxlint/linux-x64-gnu@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@oxlint/linux-x64-gnu/-/linux-x64-gnu-0.7.0.tgz" - integrity sha512-gHQusonVYFwlhgWKgismXRGlAVynDIk4G2lNRKXt+sQOauIEDJTH/Kgk7xlKJmu8J1Ztrb4xjR5meDeeIgyxRg== - -"@oxlint/linux-x64-musl@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@oxlint/linux-x64-musl/-/linux-x64-musl-0.7.0.tgz" - integrity sha512-tT5VivFnhDS2vov8h1Hmn+Rv4vWoIQuS3I+HMaQbItMkDeh6mLanE7faeg+h9p5RqV2KLjRRDm49sdRvF05s4Q== - -"@oxlint/win32-arm64@0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@oxlint/win32-arm64/-/win32-arm64-0.7.0.tgz" - integrity sha512-Bt6D5eOC0Gb6TB4USXIAgZKXwuA1RVv96Und6z7GGryfDM53KpLrgAaeNXytx+u2yq74QuAtkkdsHh9wRosFFA== - "@oxlint/win32-x64@0.7.0": version "0.7.0" resolved "https://registry.npmjs.org/@oxlint/win32-x64/-/win32-x64-0.7.0.tgz" @@ -307,9 +213,9 @@ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + version "0.1.0" + resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz" + integrity sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ== "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" @@ -384,13 +290,6 @@ dependencies: "@types/node" "*" -"@types/connect@*": - version "3.4.37" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz" - integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== - dependencies: - "@types/node" "*" - "@types/connect-history-api-fallback@^1.5.4": version "1.5.4" resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz" @@ -399,13 +298,12 @@ "@types/express-serve-static-core" "*" "@types/node" "*" -"@types/eslint@*", "@types/eslint@^8.56.10": - version "8.56.10" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== +"@types/connect@*": + version "3.4.37" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz" + integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== dependencies: - "@types/estree" "*" - "@types/json-schema" "*" + "@types/node" "*" "@types/eslint-scope@^3.7.3": version "3.7.6" @@ -415,21 +313,19 @@ "@types/eslint" "*" "@types/estree" "*" +"@types/eslint@*", "@types/eslint@^8.56.10": + version "8.56.10" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree@*", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/express@*", "@types/express@^4.17.13", "@types/express@^4.17.21": - version "4.17.21" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.17.39" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz" @@ -440,6 +336,16 @@ "@types/range-parser" "*" "@types/send" "*" +"@types/express@*", "@types/express@^4.17.21": + version "4.17.21" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/http-errors@*": version "2.0.3" resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz" @@ -486,27 +392,20 @@ resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz" integrity sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw== -"@types/node@*": - version "20.8.9" - resolved "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz" - integrity sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg== +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== dependencies: - undici-types "~5.26.4" + "@types/node" "*" -"@types/node@>=13.7.0", "@types/node@~20.12.8": +"@types/node@*", "@types/node@>=13.7.0", "@types/node@~20.12.8": version "20.12.14" resolved "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz" integrity sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg== dependencies: undici-types "~5.26.4" -"@types/node-forge@^1.3.0": - version "1.3.11" - resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz" - integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== - dependencies: - "@types/node" "*" - "@types/qs@*": version "6.9.9" resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz" @@ -565,6 +464,11 @@ dependencies: "@types/node" "*" +"@types/yargs-parser@*": + version "21.0.2" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== + "@types/yargs@^17.0.8": version "17.0.29" resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz" @@ -572,36 +476,31 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs-parser@*": - version "21.0.2" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.2.tgz" - integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== - "@typescript-eslint/eslint-plugin@^7.0.1": version "7.18.0" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz" integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== dependencies: - ignore "^5.3.1" - graphemer "^1.4.0" - ts-api-utils "^1.3.0" - natural-compare "^1.4.0" - "@typescript-eslint/utils" "7.18.0" "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "7.18.0" "@typescript-eslint/type-utils" "7.18.0" + "@typescript-eslint/utils" "7.18.0" "@typescript-eslint/visitor-keys" "7.18.0" - "@typescript-eslint/scope-manager" "7.18.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^7.0.0", "@typescript-eslint/parser@^7.0.1": +"@typescript-eslint/parser@^7.0.1": version "7.18.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz" integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== dependencies: - debug "^4.3.4" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" + debug "^4.3.4" "@typescript-eslint/scope-manager@7.18.0": version "7.18.0" @@ -616,10 +515,10 @@ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz" integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== dependencies: + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" debug "^4.3.4" ts-api-utils "^1.3.0" - "@typescript-eslint/utils" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" "@typescript-eslint/types@7.18.0": version "7.18.0" @@ -631,23 +530,23 @@ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz" integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== dependencies: + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" globby "^11.1.0" - semver "^7.6.0" is-glob "^4.0.3" minimatch "^9.0.4" + semver "^7.6.0" ts-api-utils "^1.3.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" "@typescript-eslint/utils@7.18.0": version "7.18.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz" integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== dependencies: - "@typescript-eslint/types" "7.18.0" "@eslint-community/eslint-utils" "^4.4.0" "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" "@typescript-eslint/typescript-estree" "7.18.0" "@typescript-eslint/visitor-keys@7.18.0": @@ -655,15 +554,10 @@ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz" integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== dependencies: - eslint-visitor-keys "^3.4.3" "@typescript-eslint/types" "7.18.0" + eslint-visitor-keys "^3.4.3" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": +"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== @@ -764,7 +658,7 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": +"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1": version "1.12.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== @@ -822,21 +716,6 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== - -acorn@^8.12.0, acorn@^8.7.1: - version "8.12.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== - -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - acorn-import-attributes@^1.9.5: version "1.9.5" resolved "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz" @@ -847,35 +726,10 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^8.8.2, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" +acorn@^8.12.0, acorn@^8.7.1, acorn@^8.8.2: + version "8.12.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== ajv-formats@^2.1.1: version "2.1.1" @@ -896,6 +750,36 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.16.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + ansi-escapes@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz" @@ -918,16 +802,6 @@ ansi-regex@^6.0.1: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -935,17 +809,12 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0, ansi-styles@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - ansi-styles@^6.0.0: version "6.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -ansi-styles@^6.2.1: +ansi-styles@^6.1.0: version "6.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -968,13 +837,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@~5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - aria-query@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" @@ -982,6 +844,13 @@ aria-query@^5.3.0: dependencies: dequal "^2.0.3" +aria-query@~5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" @@ -1148,21 +1017,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -braces@^3.0.3: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -1176,27 +1031,7 @@ browser-extension-url-match@^0.3.3: dependencies: fancy-regex "^0.4.3" -"browserslist@>= 4.21.0", browserslist@^4.21.10: - version "4.22.1" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" - integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== - dependencies: - caniuse-lite "^1.0.30001541" - electron-to-chromium "^1.4.535" - node-releases "^2.0.13" - update-browserslist-db "^1.0.13" - -"browserslist@>= 4.21.0", browserslist@^4.23.1: - version "4.23.2" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz" - integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== - dependencies: - caniuse-lite "^1.0.30001640" - electron-to-chromium "^1.4.820" - node-releases "^2.0.14" - update-browserslist-db "^1.1.0" - -browserslist@^4.21.10, browserslist@^4.23.3: +browserslist@^4.21.10, browserslist@^4.23.1, browserslist@^4.23.3: version "4.23.3" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz" integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== @@ -1216,8 +1051,8 @@ bun-types@^1.1.24: resolved "https://registry.npmjs.org/bun-types/-/bun-types-1.1.24.tgz" integrity sha512-UNEcYawHWOVw9GYQdOgjJvTQduYlPckmRMqpBqfkWpUzeK2CZfEP/JOYBH6SMypyfkNg/Zsqf0olN6vMrSPg3w== dependencies: - "@types/ws" "~8.5.10" "@types/node" "~20.12.8" + "@types/ws" "~8.5.10" bundle-name@^4.1.0: version "4.1.0" @@ -1236,11 +1071,6 @@ bytes@3.1.2: resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" @@ -1257,16 +1087,6 @@ callsites@^3.0.0: resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30001541: - version "1.0.30001554" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz" - integrity sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ== - -caniuse-lite@^1.0.30001640: - version "1.0.30001645" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001645.tgz" - integrity sha512-GFtY2+qt91kzyMk6j48dJcwJVq5uTkk71XxE3RtScx7XWRLsO7bU44LOFkOZYR8w9YMS0UhPSYpN/6rAMImmLw== - caniuse-lite@^1.0.30001646: version "1.0.30001651" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz" @@ -1285,7 +1105,7 @@ chalk@~5.3.0: resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.6.0: +chokidar@^3.6.0, "chokidar@>=3.0.0 <4.0.0": version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -1346,23 +1166,23 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^2.0.0, colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.20: +colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.20: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@^10.0.1: version "10.0.1" resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== -commander@~12.1.0: - version "12.1.0" +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@~12.1.0: + version "12.1.0" resolved "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== @@ -1408,16 +1228,16 @@ content-type@~1.0.4: resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" @@ -1464,48 +1284,6 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -1520,13 +1298,20 @@ debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -debug@^4.3.2, debug@~4.3.6: +debug@~4.3.6: version "4.3.6" resolved "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz" integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== dependencies: ms "2.1.2" +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + deep-equal@^2.0.5: version "2.2.3" resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz" @@ -1556,6 +1341,11 @@ deep-is@^0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + default-browser@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz" @@ -1564,11 +1354,6 @@ default-browser@^5.2.1: bundle-name "^4.1.0" default-browser-id "^5.0.0" -default-browser-id@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz" - integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== - default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" @@ -1650,13 +1435,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-parser@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/dom-parser/-/dom-parser-1.1.5.tgz" @@ -1672,15 +1450,15 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.535: - version "1.4.567" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz" - integrity sha512-8KR114CAYQ4/r5EIEsOmOMqQ9j0MRbJZR3aXD/KFA8RuKzyoUB4XrUCg+l8RUGqTVQgKNIgTpjaG8YHRPAbX2w== +electron-to-chromium@^1.5.4: + version "1.5.10" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.10.tgz" + integrity sha512-C3RDERDjrNW262GCRvpoer3a0Ksd66CtgDLxMHhzShQ8fhL4kwnpVXsJPAKg9xJjIROXUbLBrvtOzVAjALMIWA== -electron-to-chromium@^1.4.820, electron-to-chromium@^1.5.4: - version "1.5.4" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz" - integrity sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA== +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== emoji-regex@^8.0.0: version "8.0.0" @@ -1692,29 +1470,11 @@ emoji-regex@^9.2.2: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emoji-regex@^10.3.0: - version "10.3.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" - integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== - -emoji-regex@^10.3.0: - version "10.3.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" - integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.16.0: - version "5.16.1" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz" - integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enhanced-resolve@^5.17.0: version "5.17.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz" @@ -1724,9 +1484,9 @@ enhanced-resolve@^5.17.0: tapable "^2.2.0" envinfo@^7.7.3: - version "7.13.0" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz" - integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + version "7.10.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== environment@^1.0.0: version "1.1.0" @@ -1869,11 +1629,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - escalade@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" @@ -1894,171 +1649,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -"eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.0.0 || ^9.0.0", eslint@^8.0.1, eslint@^8.56.0: - version "8.57.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -"eslint@^8.0.0 || ^9.0.0": - version "9.7.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.7.0.tgz" - integrity sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw== - dependencies: - ajv "^6.12.4" - levn "^0.4.1" - chalk "^4.0.0" - debug "^4.3.2" - espree "^10.1.0" - ignore "^5.2.0" - esquery "^1.5.0" - esutils "^2.0.2" - find-up "^5.0.0" - is-glob "^4.0.0" - minimatch "^3.1.2" - "@eslint/js" "9.7.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - cross-spawn "^7.0.2" - glob-parent "^6.0.2" - imurmurhash "^0.1.4" - eslint-scope "^8.0.2" - lodash.merge "^4.6.2" - is-path-inside "^3.0.3" - fast-deep-equal "^3.1.3" - natural-compare "^1.4.0" - "@eslint/eslintrc" "^3.1.0" - "@nodelib/fs.walk" "^1.2.8" - file-entry-cache "^8.0.0" - eslint-visitor-keys "^4.0.0" - "@eslint/config-array" "^0.17.0" - "@humanwhocodes/retry" "^0.3.0" - escape-string-regexp "^4.0.0" - "@eslint-community/regexpp" "^4.11.0" - "@eslint-community/eslint-utils" "^4.2.0" - "@humanwhocodes/module-importer" "^1.0.1" - json-stable-stringify-without-jsonify "^1.0.1" - -eslint@*, eslint@>=4.19.1, eslint@>=5.0.0, eslint@>=5.14.1, eslint@>=7.0.0, eslint@>=8.0.0: - version "9.8.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz" - integrity sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.11.0" - "@eslint/config-array" "^0.17.1" - "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.8.0" - "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.3.0" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^8.0.2" - eslint-visitor-keys "^4.0.0" - espree "^10.1.0" - esquery "^1.5.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -eslint@^9.9.0: - version "9.9.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz" - integrity sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA== - dependencies: - ajv "^6.12.4" - levn "^0.4.1" - chalk "^4.0.0" - debug "^4.3.2" - espree "^10.1.0" - ignore "^5.2.0" - esquery "^1.5.0" - esutils "^2.0.2" - find-up "^5.0.0" - is-glob "^4.0.0" - minimatch "^3.1.2" - "@eslint/js" "9.9.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - cross-spawn "^7.0.2" - glob-parent "^6.0.2" - imurmurhash "^0.1.4" - eslint-scope "^8.0.2" - lodash.merge "^4.6.2" - is-path-inside "^3.0.3" - fast-deep-equal "^3.1.3" - natural-compare "^1.4.0" - "@eslint/eslintrc" "^3.1.0" - "@nodelib/fs.walk" "^1.2.8" - file-entry-cache "^8.0.0" - eslint-visitor-keys "^4.0.0" - "@eslint/config-array" "^0.17.1" - "@humanwhocodes/retry" "^0.3.0" - escape-string-regexp "^4.0.0" - "@eslint-community/regexpp" "^4.11.0" - "@eslint-community/eslint-utils" "^4.2.0" - "@humanwhocodes/module-importer" "^1.0.1" - json-stable-stringify-without-jsonify "^1.0.1" - -eslint-config-prettier@*, eslint-config-prettier@>=8.0.0: +eslint-config-prettier@>=8.0.0: version "9.1.0" resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== @@ -2080,9 +1671,9 @@ eslint-module-utils@^2.8.0: debug "^3.2.7" eslint-plugin-escompat@^3.3.3: - version "3.11.0" - resolved "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.0.tgz" - integrity sha512-kSTb1wxBRW4aL43Yu23Ula5lSFd9KVVwxyZ4zkG2feBFoj/o4mmgqkN12DXYv3VclZ559ePpBG6b9UjAeYeUyA== + version "3.11.1" + resolved "https://registry.npmjs.org/eslint-plugin-escompat/-/eslint-plugin-escompat-3.11.1.tgz" + integrity sha512-j/H70uveM+G9M0onQJOYM+h5trTjQfmBnhGzxAxwGrqARfgXwkfjs+SkvJ1j/a4ofyCIYpBQsGg7q+TowwPNmA== dependencies: browserslist "^4.23.1" @@ -2178,9 +1769,9 @@ eslint-plugin-jsx-a11y@^6.7.1: string.prototype.includes "^2.0.0" eslint-plugin-no-only-tests@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz" - integrity sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw== + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz" + integrity sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q== eslint-plugin-oxlint@0.7.2: version "0.7.2" @@ -2190,12 +1781,12 @@ eslint-plugin-oxlint@0.7.2: scule "^1.3.0" eslint-plugin-prettier@^5.0.0: - version "5.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz" - integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw== + version "5.1.3" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== dependencies: prettier-linter-helpers "^1.0.0" - synckit "^0.9.1" + synckit "^0.8.6" eslint-plugin-sonarjs@^1.0.4: version "1.0.4" @@ -2207,22 +1798,6 @@ eslint-rule-documentation@>=1.0.0: resolved "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz" integrity sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw== -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - eslint-scope@^8.0.2: version "8.0.2" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz" @@ -2231,7 +1806,15 @@ eslint-scope@^8.0.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== @@ -2252,14 +1835,45 @@ eslint-webpack-plugin@^4.2.0: normalize-path "^3.0.0" schema-utils "^4.2.0" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +eslint@^9.9.0: + version "9.9.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz" + integrity sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA== dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.11.0" + "@eslint/config-array" "^0.17.1" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.9.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.3.0" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.0.2" + eslint-visitor-keys "^4.0.0" + espree "^10.1.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" espree@^10.0.1, espree@^10.1.0: version "10.1.0" @@ -2270,7 +1884,7 @@ espree@^10.0.1, espree@^10.1.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.0.0" -esquery@^1.4.2, esquery@^1.5.0: +esquery@^1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -2441,13 +2055,6 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - file-entry-cache@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" @@ -2455,13 +2062,6 @@ file-entry-cache@^8.0.0: dependencies: flat-cache "^4.0.0" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - fill-range@^7.1.1: version "7.1.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" @@ -2505,20 +2105,6 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flat-cache@^3.0.4: - version "3.1.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz" - integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - flat-cache@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" @@ -2527,10 +2113,15 @@ flat-cache@^4.0.0: flatted "^3.2.9" keyv "^4.5.4" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + version "3.3.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== follow-redirects@^1.0.0: version "1.15.5" @@ -2577,11 +2168,6 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -2637,30 +2223,7 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^10.3.7: - version "10.3.10" - resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2674,17 +2237,40 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== +glob@^10.3.7: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: - type-fest "^0.20.2" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" globals@^14.0.0: version "14.0.0" @@ -2704,12 +2290,12 @@ globby@^11.1.0: resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: - slash "^3.0.0" - ignore "^5.2.0" - merge2 "^1.4.1" + array-union "^2.1.0" dir-glob "^3.0.1" fast-glob "^3.2.9" - array-union "^2.1.0" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" gopd@^1.0.1: version "1.0.1" @@ -2818,16 +2404,7 @@ http-errors@2.0.0: http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-middleware@^2.0.3: version "2.0.6" @@ -2840,6 +2417,15 @@ http-proxy-middleware@^2.0.3: is-plain-obj "^3.0.0" micromatch "^4.0.2" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" @@ -2867,15 +2453,10 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ignore@^5.0.5, ignore@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - -ignore@^5.2.0, ignore@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +ignore@^5.0.5, ignore@^5.2.0, ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== immutable@^4.0.0: version "4.3.4" @@ -2891,9 +2472,9 @@ import-fresh@^3.2.1: resolve-from "^4.0.0" import-local@^3.0.2: - version "3.2.0" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -2911,16 +2492,16 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + inherits@2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - internal-slot@^1.0.4, internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz" @@ -2935,16 +2516,16 @@ interpret@^3.1.1: resolved "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz" integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -3091,11 +2672,6 @@ is-network-error@^1.0.0: resolved "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz" integrity sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ== -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - is-number-object@^1.0.4: version "1.0.7" resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" @@ -3103,6 +2679,11 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" @@ -3205,16 +2786,16 @@ is-wsl@^3.1.0: dependencies: is-inside-container "^1.0.0" -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isarray@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -3308,10 +2889,10 @@ json-schema-traverse@^1.0.0: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.2: version "1.1.1" @@ -3323,11 +2904,6 @@ json-stable-stringify@^1.0.2: jsonify "^0.0.1" object-keys "^1.1.1" -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - json5@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" @@ -3359,7 +2935,7 @@ jsx-ast-utils@^3.3.2, jsx-ast-utils@^3.3.5: object.assign "^4.1.4" object.values "^1.1.6" -keyv@^4.5.3, keyv@^4.5.4: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -3406,6 +2982,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lightningcss-win32-x64-msvc@1.26.0: + version "1.26.0" + resolved "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.26.0.tgz" + integrity sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw== + lightningcss@^1.26.0: version "1.26.0" resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.26.0.tgz" @@ -3413,66 +2994,16 @@ lightningcss@^1.26.0: dependencies: detect-libc "^1.0.3" optionalDependencies: - lightningcss-darwin-x64 "1.26.0" - lightningcss-linux-x64-gnu "1.26.0" - lightningcss-win32-x64-msvc "1.26.0" - lightningcss-win32-arm64-msvc "1.26.0" lightningcss-darwin-arm64 "1.26.0" - lightningcss-linux-arm64-gnu "1.26.0" + lightningcss-darwin-x64 "1.26.0" + lightningcss-freebsd-x64 "1.26.0" lightningcss-linux-arm-gnueabihf "1.26.0" + lightningcss-linux-arm64-gnu "1.26.0" lightningcss-linux-arm64-musl "1.26.0" + lightningcss-linux-x64-gnu "1.26.0" lightningcss-linux-x64-musl "1.26.0" - lightningcss-freebsd-x64 "1.26.0" - -lightningcss-darwin-arm64@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.26.0.tgz" - integrity sha512-n4TIvHO1NY1ondKFYpL2ZX0bcC2y6yjXMD6JfyizgR8BCFNEeArINDzEaeqlfX9bXz73Bpz/Ow0nu+1qiDrBKg== - -lightningcss-darwin-x64@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.26.0.tgz" - integrity sha512-Rf9HuHIDi1R6/zgBkJh25SiJHF+dm9axUZW/0UoYCW1/8HV0gMI0blARhH4z+REmWiU1yYT/KyNF3h7tHyRXUg== - -lightningcss-freebsd-x64@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.26.0.tgz" - integrity sha512-C/io7POAxp6sZxFSVGezjajMlCKQ8KSwISLLGRq8xLQpQMokYrUoqYEwmIX8mLmF6C/CZPk0gFmRSzd8biWM0g== - -lightningcss-linux-arm-gnueabihf@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.26.0.tgz" - integrity sha512-Aag9kqXqkyPSW+dXMgyWk66C984Nay2pY8Nws+67gHlDzV3cWh7TvFlzuaTaVFMVqdDTzN484LSK3u39zFBnzg== - -lightningcss-linux-arm64-gnu@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.26.0.tgz" - integrity sha512-iJmZM7fUyVjH+POtdiCtExG+67TtPUTer7K/5A8DIfmPfrmeGvzfRyBltGhQz13Wi15K1lf2cPYoRaRh6vcwNA== - -lightningcss-linux-arm64-musl@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.26.0.tgz" - integrity sha512-XxoEL++tTkyuvu+wq/QS8bwyTXZv2y5XYCMcWL45b8XwkiS8eEEEej9BkMGSRwxa5J4K+LDeIhLrS23CpQyfig== - -lightningcss-linux-x64-gnu@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.26.0.tgz" - integrity sha512-1dkTfZQAYLj8MUSkd6L/+TWTG8V6Kfrzfa0T1fSlXCXQHrt1HC1/UepXHtKHDt/9yFwyoeayivxXAsApVxn6zA== - -lightningcss-linux-x64-musl@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.26.0.tgz" - integrity sha512-yX3Rk9m00JGCUzuUhFEojY+jf/6zHs3XU8S8Vk+FRbnr4St7cjyMXdNjuA2LjiT8e7j8xHRCH8hyZ4H/btRE4A== - -lightningcss-win32-arm64-msvc@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.26.0.tgz" - integrity sha512-X/597/cFnCogy9VItj/+7Tgu5VLbAtDF7KZDPdSw0MaL6FL940th1y3HiOzFIlziVvAtbo0RB3NAae1Oofr+Tw== - -lightningcss-win32-x64-msvc@1.26.0: - version "1.26.0" - resolved "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.26.0.tgz" - integrity sha512-pYS3EyGP3JRhfqEFYmfFDiZ9/pVNfy8jVIYtrx9TVNusVyDK3gpW1w/rbvroQ4bDJi7grdUtyrYU6V2xkY/bBw== + lightningcss-win32-arm64-msvc "1.26.0" + lightningcss-win32-x64-msvc "1.26.0" lilconfig@~3.1.2: version "3.1.2" @@ -3507,15 +3038,6 @@ listr2@~8.2.4: rfdc "^1.4.1" wrap-ansi "^9.0.0" -lit@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz" - integrity sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw== - dependencies: - "@lit/reactive-element" "^2.0.4" - lit-element "^4.1.0" - lit-html "^3.2.0" - lit-element@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/lit-element/-/lit-element-4.1.0.tgz" @@ -3532,6 +3054,15 @@ lit-html@^3.2.0: dependencies: "@types/trusted-types" "^2.0.2" +lit@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz" + integrity sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw== + dependencies: + "@lit/reactive-element" "^2.0.4" + lit-element "^4.1.0" + lit-html "^3.2.0" + loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" @@ -3551,11 +3082,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lodash.camelcase@4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" @@ -3581,6 +3107,11 @@ lodash.upperfirst@4.3.1: resolved "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-update@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz" @@ -3649,15 +3180,7 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@~4.0.7: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@~4.0.7: version "4.0.7" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz" integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== @@ -3665,12 +3188,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@~4.0.7: braces "^3.0.3" picomatch "^2.3.1" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -3682,6 +3200,11 @@ mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, dependencies: mime-db "1.52.0" +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" @@ -3702,13 +3225,20 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@^9.0.0: + version "9.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.1: version "9.0.3" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" @@ -3716,10 +3246,10 @@ minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" @@ -3738,42 +3268,17 @@ mitt@^3.0.1: resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: +ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3806,12 +3311,7 @@ node-forge@^1: resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== - -node-releases@^2.0.14, node-releases@^2.0.18: +node-releases@^2.0.18: version "2.0.18" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz" integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== @@ -3914,7 +3414,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1, on-finished@^2.4.1: +on-finished@^2.4.1, on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -3954,14 +3454,6 @@ onetime@^7.0.0: dependencies: mimic-function "^5.0.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - open@^10.0.3: version "10.0.3" resolved "https://registry.npmjs.org/open/-/open-10.0.3.tgz" @@ -3972,6 +3464,14 @@ open@^10.0.3: is-inside-container "^1.0.0" is-wsl "^3.1.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + optionator@^0.9.3: version "0.9.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" @@ -3994,14 +3494,14 @@ oxlint@0.7.0: resolved "https://registry.npmjs.org/oxlint/-/oxlint-0.7.0.tgz" integrity sha512-oZI76dyBPW+cETjci4Rm56nfumbNsUcjJoPXomaC+FBzCi2fB5gV6ibnwRnVilt9yJXWGNvloB7c8/Mmmc9B5w== optionalDependencies: - "@oxlint/win32-x64" "0.7.0" - "@oxlint/win32-arm64" "0.7.0" - "@oxlint/linux-x64-gnu" "0.7.0" + "@oxlint/darwin-arm64" "0.7.0" + "@oxlint/darwin-x64" "0.7.0" "@oxlint/linux-arm64-gnu" "0.7.0" - "@oxlint/linux-x64-musl" "0.7.0" "@oxlint/linux-arm64-musl" "0.7.0" - "@oxlint/darwin-x64" "0.7.0" - "@oxlint/darwin-arm64" "0.7.0" + "@oxlint/linux-x64-gnu" "0.7.0" + "@oxlint/linux-x64-musl" "0.7.0" + "@oxlint/win32-arm64" "0.7.0" + "@oxlint/win32-x64" "0.7.0" p-limit@^2.2.0: version "2.3.0" @@ -4121,12 +3621,7 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picocolors@^1.0.1: +picocolors@^1.0.0, picocolors@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== @@ -4136,7 +3631,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pidtree@^0.6.0: +pidtree@^0.6.0, pidtree@~0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== @@ -4163,11 +3658,6 @@ prelude-ls@^1.2.1: resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@>=3.0.0, prettier@^3.0.0: - version "3.3.3" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" @@ -4175,6 +3665,11 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" +prettier@^3.0.0: + version "3.3.2" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz" + integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" @@ -4327,15 +3822,6 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -resolve@^1.20.0, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" @@ -4353,6 +3839,15 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve@^1.20.0, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz" @@ -4383,13 +3878,6 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rimraf@^5.0.5: version "5.0.5" resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" @@ -4419,20 +3907,20 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex-test@^1.0.3: version "1.0.3" @@ -4457,7 +3945,7 @@ sass@^1.77.8: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -schema-utils@^3.2.0: +schema-utils@^3.1.1: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -4466,7 +3954,7 @@ schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^3.1.1, schema-utils@^3.2.0: +schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -4639,7 +4127,7 @@ signal-exit@^3.0.3: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1, signal-exit@^4.1.0: +signal-exit@^4.0.1: version "4.1.0" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -4691,11 +4179,6 @@ sonic-forest@^1.0.0: dependencies: tree-dump "^1.0.0" -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - "source-map-js@>=0.6.2 <2.0.0": version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" @@ -4709,16 +4192,10 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdy-transport@^3.0.0: version "3.0.0" @@ -4732,6 +4209,17 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" @@ -4749,12 +4237,26 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-argv@~0.3.2: version "0.3.2" resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -"string-width@npm:string-width@^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -4782,18 +4284,9 @@ string-width@^5.0.1, string-width@^5.1.2: strip-ansi "^7.0.1" string-width@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz" - integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== - dependencies: - emoji-regex "^10.3.0" - get-east-asian-width "^1.0.0" - strip-ansi "^7.1.0" - -string-width@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz" - integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + version "7.2.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz" + integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== dependencies: emoji-regex "^10.3.0" get-east-asian-width "^1.0.0" @@ -4835,35 +4328,21 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -"strip-ansi@npm:strip-ansi@^6.0.1": +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.1.0: +strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -4877,13 +4356,6 @@ strip-ansi@^7.1.0: dependencies: ansi-regex "^6.0.1" -strip-ansi@^7.0.1, strip-ansi@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" @@ -4918,13 +4390,6 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" @@ -4935,10 +4400,10 @@ svg-element-attributes@^1.3.1: resolved "https://registry.npmjs.org/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz" integrity sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA== -synckit@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz" - integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== dependencies: "@pkgr/core" "^0.1.0" tslib "^2.6.2" @@ -4948,17 +4413,7 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser@^5.26.0: - version "5.28.1" - resolved "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz" - integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -terser-webpack-plugin@^5.0.0, terser-webpack-plugin@^5.3.10: +terser-webpack-plugin@^5.3.10: version "5.3.10" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== @@ -4969,6 +4424,16 @@ terser-webpack-plugin@^5.0.0, terser-webpack-plugin@^5.3.10: serialize-javascript "^6.0.1" terser "^5.26.0" +terser@^5.26.0: + version "5.28.1" + resolved "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz" + integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" @@ -5018,33 +4483,23 @@ tsconfig-paths@^3.15.0: resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: + "@types/json5" "^0.0.29" json5 "^1.0.2" minimist "^1.2.6" strip-bom "^3.0.0" - "@types/json5" "^0.0.29" -tslib@2, tslib@^2: - version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.6.2: version "2.6.3" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== -type-check@^0.4.0: +type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -5097,11 +4552,6 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@>=4.2.0, typescript@^5.0.0: - version "5.5.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" @@ -5122,19 +4572,11 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - update-browserslist-db@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz" @@ -5143,7 +4585,7 @@ update-browserslist-db@^1.1.0: escalade "^3.1.2" picocolors "^1.0.1" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -5170,10 +4612,10 @@ vary@~1.1.2: resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vot.js@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/vot.js/-/vot.js-1.0.4.tgz" - integrity sha512-6MTW79VkJLnha74ql6U1wyVyD5a2QMi6ZE6tGoKZOXl1rBPwVC9lq1rCiWbrZLWKuSNMc05i1tHEnXMnl1zyQw== +vot.js@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/vot.js/-/vot.js-1.0.5.tgz" + integrity sha512-O2YCMSui8XQ0ESXbeciV4ixlHRhBNcTslsROi57Mcjhnaia0EhdNuBUQLqXeZVCiaXjHH8CHuCLpcdFpaQlhlQ== dependencies: dom-parser "^1.1.5" protobufjs "^7.3.2" @@ -5193,114 +4635,24 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webpack@^5.0.0, webpack@^5.1.0: - version "5.91.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - -webpack@^5.0.0: - version "5.92.1" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.92.1.tgz" - integrity sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-attributes "^1.9.5" - browserslist "^4.21.10" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.0" - es-module-lexer "^1.2.1" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.11" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.2.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" - watchpack "^2.4.1" - webpack-sources "^3.2.3" - -webpack@5.x.x, webpack@^5.93.0: - version "5.93.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz" - integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA== - dependencies: - acorn "^8.7.1" - events "^3.2.0" - tapable "^2.1.1" - neo-async "^2.6.2" - watchpack "^2.4.1" - mime-types "^2.1.27" - graceful-fs "^4.2.11" - browserslist "^4.21.10" - eslint-scope "5.1.1" - schema-utils "^3.2.0" - "@types/estree" "^1.0.5" - loader-runner "^4.2.0" - glob-to-regexp "^0.4.1" - es-module-lexer "^1.2.1" - webpack-sources "^3.2.3" - enhanced-resolve "^5.17.0" - "@webassemblyjs/ast" "^1.12.1" - chrome-trace-event "^1.0.2" - "@types/eslint-scope" "^3.7.3" - terser-webpack-plugin "^5.3.10" - acorn-import-attributes "^1.9.5" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - json-parse-even-better-errors "^2.3.1" - -webpack-cli@5.x.x, webpack-cli@^5.1.4: +webpack-cli@^5.1.4: version "5.1.4" resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz" integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== dependencies: - envinfo "^7.7.3" - rechoir "^0.8.0" + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" colorette "^2.0.14" commander "^10.0.1" - interpret "^3.1.1" cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" webpack-merge "^5.7.3" - "@webpack-cli/info" "^2.0.2" - "@webpack-cli/serve" "^2.0.5" - fastest-levenshtein "^1.0.12" - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.1" webpack-dev-middleware@^7.1.0: version "7.2.1" @@ -5314,7 +4666,7 @@ webpack-dev-middleware@^7.1.0: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^5.0.0, webpack-dev-server@^5.0.4: +webpack-dev-server@^5.0.4: version "5.0.4" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz" integrity sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA== @@ -5374,7 +4726,37 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +webpack@^5.93.0: + version "5.93.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz" + integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.7.1" + acorn-import-attributes "^1.9.5" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -5388,13 +4770,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" @@ -5445,12 +4820,19 @@ which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: gopd "^1.0.1" has-tostringtag "^1.0.2" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wildcard@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -"wrap-ansi@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -5492,12 +4874,7 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^2.2.2: - version "2.4.5" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz" - integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== - -yaml@~2.5.0: +yaml@^2.2.2, yaml@~2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz" integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==