Simple online protractor - measure any angle directly on your image!
Page not found
Page accessed under the address: "/404" was not found. If you believe this is an error, click here to file an issue.
Otherwise, you can go back to the main page by clicking here.
\ No newline at end of file
diff --git a/assets/Button-XV6Wby9K.css b/assets/Button-B-gA1mlD.css
similarity index 100%
rename from assets/Button-XV6Wby9K.css
rename to assets/Button-B-gA1mlD.css
diff --git a/assets/Button-BKAj1tfY.js b/assets/Button-nXEYzZOt.js
similarity index 90%
rename from assets/Button-BKAj1tfY.js
rename to assets/Button-nXEYzZOt.js
index 7db33bc6..1e5a7fae 100644
--- a/assets/Button-BKAj1tfY.js
+++ b/assets/Button-nXEYzZOt.js
@@ -1 +1 @@
-import{m as l,o,e as a,a as s,d as n,D as c,n as i}from"./app-Dwl7-0AS.js";import{_ as r}from"./_plugin-vue_export-helper-DlAUqK2U.js";const d={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},m=s("path",{fill:"currentColor","fill-rule":"evenodd",d:"M16 2a14 14 0 0 0-4.43 27.28c.7.13 1-.3 1-.67v-2.38c-3.89.84-4.71-1.88-4.71-1.88a3.7 3.7 0 0 0-1.62-2.05c-1.27-.86.1-.85.1-.85a2.94 2.94 0 0 1 2.14 1.45a3 3 0 0 0 4.08 1.16a2.93 2.93 0 0 1 .88-1.87c-3.1-.36-6.37-1.56-6.37-6.92a5.4 5.4 0 0 1 1.44-3.76a5 5 0 0 1 .14-3.7s1.17-.38 3.85 1.43a13.3 13.3 0 0 1 7 0c2.67-1.81 3.84-1.43 3.84-1.43a5 5 0 0 1 .14 3.7a5.4 5.4 0 0 1 1.44 3.76c0 5.38-3.27 6.56-6.39 6.91a3.33 3.33 0 0 1 .95 2.59v3.84c0 .46.25.81 1 .67A14 14 0 0 0 16 2"},null,-1),u=[m];function p(t,e){return o(),a("svg",d,[...u])}const S=l({name:"carbon-logo-github",render:p}),_=["aria-label","data-tooltip","data-placement"],f=n({__name:"Button",props:{tooltip:{type:String,default:void 0},tooltipPlacement:{type:String,default:void 0},size:{type:String,default:void 0}},setup(t){return(e,b)=>(o(),a("button",{type:"button",role:"button",class:i(["vertical-middle",{[e.$style.small]:t.size==="small"}]),"aria-label":t.tooltip,"data-tooltip":t.tooltip,"data-placement":t.tooltipPlacement},[c(e.$slots,"default")],10,_))}}),h="f_3",g={small:h},v={$style:g},$=r(f,[["__cssModules",v]]);export{S as I,$ as _};
+import{m as l,o,e as a,a as s,d as n,D as c,n as i}from"./app-B089dKne.js";import{_ as r}from"./_plugin-vue_export-helper-DlAUqK2U.js";const d={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},m=s("path",{fill:"currentColor","fill-rule":"evenodd",d:"M16 2a14 14 0 0 0-4.43 27.28c.7.13 1-.3 1-.67v-2.38c-3.89.84-4.71-1.88-4.71-1.88a3.7 3.7 0 0 0-1.62-2.05c-1.27-.86.1-.85.1-.85a2.94 2.94 0 0 1 2.14 1.45a3 3 0 0 0 4.08 1.16a2.93 2.93 0 0 1 .88-1.87c-3.1-.36-6.37-1.56-6.37-6.92a5.4 5.4 0 0 1 1.44-3.76a5 5 0 0 1 .14-3.7s1.17-.38 3.85 1.43a13.3 13.3 0 0 1 7 0c2.67-1.81 3.84-1.43 3.84-1.43a5 5 0 0 1 .14 3.7a5.4 5.4 0 0 1 1.44 3.76c0 5.38-3.27 6.56-6.39 6.91a3.33 3.33 0 0 1 .95 2.59v3.84c0 .46.25.81 1 .67A14 14 0 0 0 16 2"},null,-1),u=[m];function p(t,e){return o(),a("svg",d,[...u])}const S=l({name:"carbon-logo-github",render:p}),_=["aria-label","data-tooltip","data-placement"],f=n({__name:"Button",props:{tooltip:{type:String,default:void 0},tooltipPlacement:{type:String,default:void 0},size:{type:String,default:void 0}},setup(t){return(e,b)=>(o(),a("button",{type:"button",role:"button",class:i(["vertical-middle",{[e.$style.small]:t.size==="small"}]),"aria-label":t.tooltip,"data-tooltip":t.tooltip,"data-placement":t.tooltipPlacement},[c(e.$slots,"default")],10,_))}}),h="f_3",g={small:h},v={$style:g},$=r(f,[["__cssModules",v]]);export{S as I,$ as _};
diff --git a/assets/_...all_-Co0Kp9As.js b/assets/_...all_-CUrrhdgQ.js
similarity index 86%
rename from assets/_...all_-Co0Kp9As.js
rename to assets/_...all_-CUrrhdgQ.js
index 14766349..9b59ffee 100644
--- a/assets/_...all_-Co0Kp9As.js
+++ b/assets/_...all_-CUrrhdgQ.js
@@ -1 +1 @@
-import{d as b,u as k,G as x,i as s,B as g,r,o as c,e as l,a as n,t as e,g as t,b as u,w as i,f as _,E as R,H as p}from"./app-Dwl7-0AS.js";import{u as L}from"./useUriLocale-UwDq5HYh.js";const v=["textContent"],y=["textContent"],B={key:0},N=b({__name:"[...all]",setup(V){const{t:o}=k(),d=x(),f=L(),a=s(()=>g(f.value)),m=s(()=>d.fullPath);return(E,U)=>{const h=r("i18n-t"),C=r("RouterLink");return c(),l("div",null,[n("h1",{textContent:e(t(o)("404.title"))},null,8,v),n("p",null,[u(h,{keypath:"404.description"},{url:i(()=>[n("i",null,e(t(m)),1)]),_:1}),n("a",{rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle",target:"_blank",textContent:e(t(o)("404.file_issue_button"))},null,8,y)]),t(a)?(c(),l("p",B,[_(e(t(o)("404.redirect_button_description"))+" ",1),u(C,{to:{name:`lang-${t(a)}`}},{default:i(()=>[_(e(t(o)("404.redirect_button")),1)]),_:1},8,["to"])])):R("",!0)])}}});typeof p=="function"&&p(N);export{N as default};
+import{d as b,u as k,G as x,i as s,B as g,r,o as c,e as l,a as n,t as e,g as t,b as u,w as i,f as _,E as R,H as p}from"./app-B089dKne.js";import{u as L}from"./useUriLocale-BPgYWpfF.js";const v=["textContent"],y=["textContent"],B={key:0},N=b({__name:"[...all]",setup(V){const{t:o}=k(),d=x(),f=L(),a=s(()=>g(f.value)),m=s(()=>d.fullPath);return(E,U)=>{const h=r("i18n-t"),C=r("RouterLink");return c(),l("div",null,[n("h1",{textContent:e(t(o)("404.title"))},null,8,v),n("p",null,[u(h,{keypath:"404.description"},{url:i(()=>[n("i",null,e(t(m)),1)]),_:1}),n("a",{rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle",target:"_blank",textContent:e(t(o)("404.file_issue_button"))},null,8,y)]),t(a)?(c(),l("p",B,[_(e(t(o)("404.redirect_button_description"))+" ",1),u(C,{to:{name:`lang-${t(a)}`}},{default:i(()=>[_(e(t(o)("404.redirect_button")),1)]),_:1},8,["to"])])):R("",!0)])}}});typeof p=="function"&&p(N);export{N as default};
diff --git a/assets/app-Dwl7-0AS.js b/assets/app-B089dKne.js
similarity index 99%
rename from assets/app-Dwl7-0AS.js
rename to assets/app-B089dKne.js
index 8cdf8007..6bc8846f 100644
--- a/assets/app-Dwl7-0AS.js
+++ b/assets/app-B089dKne.js
@@ -1,4 +1,4 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/centered-LQcEJ4f_.js","assets/default-T5VnCwtH.js","assets/Button-BKAj1tfY.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/Button-XV6Wby9K.css","assets/useUriLocale-UwDq5HYh.js","assets/default-D9dwkEVE.css","assets/centered-CsPDCAwg.css","assets/_...all_-Co0Kp9As.js","assets/index-D8cNfCUs.js","assets/index-BnNlN_Ib.css","assets/privacy-policy-BHhLFajV.js","assets/privacy-policy-CmBhhdc4.css","assets/terms-B1EPTX13.js","assets/terms-B3Ue1xku.css"])))=>i.map(i=>d[i]);
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/centered-DXVC6Tw2.js","assets/default-Bb8t_gCU.js","assets/Button-nXEYzZOt.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/Button-B-gA1mlD.css","assets/useUriLocale-BPgYWpfF.js","assets/default-iCgzCfzV.css","assets/centered-BXo6jbpB.css","assets/_...all_-CUrrhdgQ.js","assets/index-jBPnjwvd.js","assets/index-C3mIgKMT.css","assets/privacy-policy-DwrW54wZ.js","assets/privacy-policy-D0QDukm7.css","assets/terms-hP3Pi29U.js","assets/terms-CGu14MWA.css"])))=>i.map(i=>d[i]);
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();/*!
* shared v9.14.1
* (c) 2024 kazuya kawaguchi
@@ -49,8 +49,8 @@ Jeśli uważasz to za błąd,
`}]}},file_issue_button:{t:0,b:{t:2,i:[{t:3}],s:"Kliknij tutaj, by go zgłosić."}},redirect_button_description:{t:0,b:{t:2,i:[{t:3}],s:"Do strony głównej możesz wrócić poprzez"}},redirect_button:{t:0,b:{t:2,i:[{t:3}],s:"naciśnięcie tego linku."}}},lang_redirect:{title:{t:0,b:{t:2,i:[{t:3}],s:"Przekierowanie"}},description:{t:0,b:{t:2,i:[{t:3}],s:"Przekierowujemy Cię do strony głównej."}}},board:{drop_file_here:{t:0,b:{t:2,i:[{t:3}],s:"Upuść plik tutaj"}},click_this_button_or_drop:{t:0,b:{t:2,i:[{t:3}],s:`Kliknij tutaj aby rozpocząć pomiary.
By wczytać obrazek, upuść go tutaj lub naciśnij przycisk oznaczony ikoną chmury ze strzałką.
Dla większej wygody możesz włączyć tryb pełnoekranowy za pomocą przycisku znajdującego się w prawym-dolnym rogu.
-`}},result:{zoom_in:{t:0,b:{t:2,i:[{t:3}],s:"Przybliż"}},zoom_out:{t:0,b:{t:2,i:[{t:3}],s:"Oddal"}}},nav:{download_image:{action:{t:0,b:{t:2,i:[{t:3}],s:"Pobierz obrazek"}},save:{t:0,b:{t:2,i:[{t:3}],s:"Zapisz obrazek"}},heading:{t:0,b:{t:2,i:[{t:3}],s:"Eksport obrazka"}},name_label:{t:0,b:{t:2,i:[{t:3}],s:"Nazwa obrazka"}},format_label:{t:0,b:{t:2,i:[{t:3}],s:"Format"}},sizing_label:{t:0,b:{t:2,i:[{t:3}],s:"Wymiary obrazka"}},width_label:{t:0,b:{t:2,i:[{t:3}],s:"Szerokość"}},height_label:{t:0,b:{t:2,i:[{t:3}],s:"Wysokość"}},keep_aspect_ratio:{t:0,b:{t:2,i:[{t:3}],s:"Zachowuj proporcje obrazka"}},unit_label:{t:0,b:{t:2,i:[{t:3}],s:"Jednostka"}},quality_label:{t:0,b:{t:2,i:[{t:3}],s:"Jakość"}}},upload_file:{t:0,b:{t:2,i:[{t:3}],s:"Kliknij tutaj lub przeciągnij obraz, aby go załadować"}},toggle_fullscreen:{t:0,b:{t:2,i:[{t:3}],s:"Przełącz tryb pełnoekranowy"}},undo:{t:0,b:{t:2,i:[{t:3}],s:"Cofnij poprzednią akcję"}},redo:{t:0,b:{t:2,i:[{t:3}],s:"Przywróć cofniętą akcję"}},toggle_dark:{t:0,b:{t:2,i:[{t:3}],s:"Ustaw tryb nocny"}},toggle_langs:{t:0,b:{t:2,i:[{t:3}],s:"Zmień język"}},help:{action:{t:0,b:{t:2,i:[{t:3}],s:"Otwórz pomoc i informację o aplikacji"}},heading:{t:0,b:{t:2,i:[{t:3}],s:"Pomoc"}},heading_authors:{t:0,b:{t:2,i:[{t:3}],s:"Autorzy"}},key_bindings:{heading:{t:0,b:{t:2,i:[{t:3}],s:"Skróty klawiaturowy"}},description:{t:0,b:{t:2,i:[{t:3}],s:"Akcja"}}},content:[{t:0,b:{t:2,i:[{t:3}],s:"By wczytać obrazek, upuść go na pole rysowania lub naciśnij przycisk oznaczony ikoną obrazka ze strzałką."}},{t:0,b:{t:2,i:[{t:3}],s:"Po narysowaniu drugiej linii, kliknij raz jeszcze by zresetować linie."}},{t:0,b:{t:2,i:[{t:3}],s:"Wygodniej jest obsługiwać aplikację w trybie pełnoekranowym."}}]}}}},Ih=Object.freeze(Object.defineProperty({__proto__:null,default:kh},Symbol.toStringTag,{value:"Module"}));function sn(e){return ia()?(zf(e),!0):!1}function tl(){const e=new Set,t=s=>{e.delete(s)};return{on:s=>{e.add(s);const o=()=>t(s);return sn(o),{off:o}},off:t,trigger:(...s)=>Promise.all(Array.from(e).map(o=>o(...s)))}}function U_(e){let t=0,n,r;const s=()=>{t-=1,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return(...o)=>(t+=1,r||(r=oa(!0),n=r.run(()=>e(...o))),sn(s),n)}function je(e){return typeof e=="function"?e():Je(e)}const In=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const xh=Object.prototype.toString,Mh=e=>xh.call(e)==="[object Object]",Dh=()=>+Date.now(),Ut=()=>{},Fh=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Hh=$h();function $h(){var e,t;return In&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function wc(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const Mo=e=>e();function Oc(...e){let t=0,n,r=!0,s=Ut,o,i,a,l,u;!we(e[0])&&typeof e[0]=="object"?{delay:i,trailing:a=!0,leading:l=!0,rejectOnCancel:u=!1}=e[0]:[i,a=!0,l=!0,u=!1]=e;const f=()=>{n&&(clearTimeout(n),n=void 0,s(),s=Ut)};return d=>{const h=je(i),E=Date.now()-t,y=()=>o=d();return f(),h<=0?(t=Date.now(),y()):(E>h&&(l||!r)?(t=Date.now(),y()):a&&(o=new Promise((O,w)=>{s=u?w:O,n=setTimeout(()=>{t=Date.now(),r=!0,O(y()),f()},Math.max(0,h-E))})),!l&&!n&&(n=setTimeout(()=>r=!0,h)),r=!1,o)}}function Cc(e=Mo){const t=se(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function Uh(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function jh(e,t){var n;if(typeof e=="number")return e+t;const r=((n=e.match(/^-?\d+\.?\d*/))==null?void 0:n[0])||"",s=e.slice(r.length),o=Number.parseFloat(r)+t;return Number.isNaN(o)?e:o+s}function Vh(e){return kn()}function Ac(...e){if(e.length!==1)return yd(...e);const t=e[0];return typeof t=="function"?Ln(gd(()=>({get:t,set:Ut}))):se(t)}const j_=Ac;function Pc(e,t,n={}){const{eventFilter:r=Mo,...s}=n;return Ae(e,wc(r,t),s)}function Wh(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:a,isActive:l}=Cc(r);return{stop:Pc(e,t,{...s,eventFilter:o}),pause:i,resume:a,isActive:l}}function Do(e,t=!0,n){Vh()?Rn(e,n):t?e():Nn(e)}function Kh(e,t,n={}){const{immediate:r=!0}=n,s=se(!1);let o=null;function i(){o&&(clearTimeout(o),o=null)}function a(){s.value=!1,i()}function l(...u){i(),s.value=!0,o=setTimeout(()=>{s.value=!1,o=null,e(...u)},je(t))}return r&&(s.value=!0,In&&l()),sn(a),{isPending:Ln(s),start:l,stop:a}}function Bh(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,s=we(e),o=se(e);function i(a){if(arguments.length)return o.value=a,o.value;{const l=je(n);return o.value=o.value===l?je(r):l,o.value}}return s?i:[o,i]}function Gh(e,t,n={}){const{eventFilter:r=Mo,...s}=n,o=wc(r,t);let i,a,l;if(s.flush==="sync"){const u=se(!1);a=()=>{},i=f=>{u.value=!0,f(),u.value=!1},l=Ae(e,(...f)=>{u.value||o(...f)},s)}else{const u=[],f=se(0),c=se(0);a=()=>{f.value=c.value},u.push(Ae(e,()=>{c.value++},{...s,flush:"sync"})),i=d=>{const h=c.value;d(),f.value+=c.value-h},u.push(Ae(e,(...d)=>{const h=f.value>0&&f.value===c.value;f.value=0,c.value=0,!h&&o(...d)},s)),l=()=>{u.forEach(d=>d())}}return{stop:l,ignoreUpdates:i,ignorePrevAsyncUpdates:a}}function V_(e,t,n={}){const{throttle:r=0,trailing:s=!0,leading:o=!0,...i}=n;return Pc(e,t,{...i,eventFilter:Oc(r,s,o)})}function W_(e,t,n){return Ae(e,(s,o,i)=>{s&&t(s,o,i)},{...n,once:!1})}const Ve=In?window:void 0,Lc=In?window.document:void 0,Nc=In?window.navigator:void 0;function Ye(e){var t;const n=je(e);return(t=n==null?void 0:n.$el)!=null?t:n}function ge(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Ve):[t,n,r,s]=e,!t)return Ut;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},a=(f,c,d,h)=>(f.addEventListener(c,d,h),()=>f.removeEventListener(c,d,h)),l=Ae(()=>[Ye(t),je(s)],([f,c])=>{if(i(),!f)return;const d=Mh(c)?{...c}:c;o.push(...n.flatMap(h=>r.map(E=>a(f,h,E,d))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return sn(u),u}let nl=!1;function K_(e,t,n={}){const{window:r=Ve,ignore:s=[],capture:o=!0,detectIframe:i=!1}=n;if(!r)return Ut;Hh&&!nl&&(nl=!0,Array.from(r.document.body.children).forEach(h=>h.addEventListener("click",Ut)),r.document.documentElement.addEventListener("click",Ut));let a=!0;const l=h=>je(s).some(E=>{if(typeof E=="string")return Array.from(r.document.querySelectorAll(E)).some(y=>y===h.target||h.composedPath().includes(y));{const y=Ye(E);return y&&(h.target===y||h.composedPath().includes(y))}}),u=h=>{const E=Ye(e);if(!(!E||E===h.target||h.composedPath().includes(E))){if(h.detail===0&&(a=!l(h)),!a){a=!0;return}t(h)}};let f=!1;const c=[ge(r,"click",h=>{f||(f=!0,setTimeout(()=>{f=!1},0),u(h))},{passive:!0,capture:o}),ge(r,"pointerdown",h=>{const E=Ye(e);a=!l(h)&&!!(E&&!h.composedPath().includes(E))},{passive:!0}),i&&ge(r,"blur",h=>{setTimeout(()=>{var E;const y=Ye(e);((E=r.document.activeElement)==null?void 0:E.tagName)==="IFRAME"&&!(y!=null&&y.contains(r.document.activeElement))&&t(h)},0)})].filter(Boolean);return()=>c.forEach(h=>h())}function zh(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function B_(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Ve,eventName:o="keydown",passive:i=!1,dedupe:a=!1}=r,l=zh(t);return ge(s,o,f=>{f.repeat&&je(a)||l(f)&&n(f)},i)}function Yh(){const e=se(!1),t=kn();return t&&Rn(()=>{e.value=!0},t),e}function cr(e){const t=Yh();return oe(()=>(t.value,!!e()))}function fn(e,t={}){const{window:n=Ve}=t,r=cr(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=se(!1),i=u=>{o.value=u.matches},a=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=tc(()=>{r.value&&(a(),s=n.matchMedia(je(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return sn(()=>{l(),a(),s=void 0}),o}const G_={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function z_(e,t={}){function n(f,c){let d=je(e[je(f)]);return c!=null&&(d=jh(d,c)),typeof d=="number"&&(d=`${d}px`),d}const{window:r=Ve,strategy:s="min-width"}=t;function o(f){return r?r.matchMedia(f).matches:!1}const i=f=>fn(()=>`(min-width: ${n(f)})`,t),a=f=>fn(()=>`(max-width: ${n(f)})`,t),l=Object.keys(e).reduce((f,c)=>(Object.defineProperty(f,c,{get:()=>s==="min-width"?i(c):a(c),enumerable:!0,configurable:!0}),f),{});function u(){const f=Object.keys(e).map(c=>[c,i(c)]);return oe(()=>f.filter(([,c])=>c.value).map(([c])=>c))}return Object.assign(l,{greaterOrEqual:i,smallerOrEqual:a,greater(f){return fn(()=>`(min-width: ${n(f,.1)})`,t)},smaller(f){return fn(()=>`(max-width: ${n(f,-.1)})`,t)},between(f,c){return fn(()=>`(min-width: ${n(f)}) and (max-width: ${n(c,-.1)})`,t)},isGreater(f){return o(`(min-width: ${n(f,.1)})`)},isGreaterOrEqual(f){return o(`(min-width: ${n(f)})`)},isSmaller(f){return o(`(max-width: ${n(f,-.1)})`)},isSmallerOrEqual(f){return o(`(max-width: ${n(f)})`)},isInBetween(f,c){return o(`(min-width: ${n(f)}) and (max-width: ${n(c,-.1)})`)},current:u,active(){const f=u();return oe(()=>f.value.length===0?"":f.value.at(-1))}})}function rl(e,t={}){const{controls:n=!1,navigator:r=Nc}=t,s=cr(()=>r&&"permissions"in r),o=Sn(),i=typeof e=="string"?{name:e}:e,a=Sn(),l=()=>{var f,c;a.value=(c=(f=o.value)==null?void 0:f.state)!=null?c:"prompt"};ge(o,"change",l);const u=Uh(async()=>{if(s.value){if(!o.value)try{o.value=await r.permissions.query(i)}catch{o.value=void 0}finally{l()}if(n)return ae(o.value)}});return u(),n?{state:a,isSupported:s,query:u}:a}function Y_(e={}){const{navigator:t=Nc,read:n=!1,source:r,copiedDuring:s=1500,legacy:o=!1}=e,i=cr(()=>t&&"clipboard"in t),a=rl("clipboard-read"),l=rl("clipboard-write"),u=oe(()=>i.value||o),f=se(""),c=se(!1),d=Kh(()=>c.value=!1,s);function h(){i.value&&w(a.value)?t.clipboard.readText().then(P=>{f.value=P}):f.value=O()}u.value&&n&&ge(["copy","cut"],h);async function E(P=je(r)){u.value&&P!=null&&(i.value&&w(l.value)?await t.clipboard.writeText(P):y(P),f.value=P,c.value=!0,d.start())}function y(P){const p=document.createElement("textarea");p.value=P??"",p.style.position="absolute",p.style.opacity="0",document.body.appendChild(p),p.select(),document.execCommand("copy"),p.remove()}function O(){var P,p,g;return(g=(p=(P=document==null?void 0:document.getSelection)==null?void 0:P.call(document))==null?void 0:p.toString())!=null?g:""}function w(P){return P==="granted"||P==="prompt"}return{isSupported:u,text:f,copied:c,copy:E}}function Rc(e){return JSON.parse(JSON.stringify(e))}const yr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vr="__vueuse_ssr_handlers__",Xh=qh();function qh(){return vr in yr||(yr[vr]=yr[vr]||{}),yr[vr]}function kc(e,t){return Xh[e]||t}function Ic(e){return fn("(prefers-color-scheme: dark)",e)}function Jh(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Qh={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},sl="vueuse-storage";function xc(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:f,window:c=Ve,eventFilter:d,onError:h=H=>{console.error(H)},initOnMounted:E}=r,y=(f?Sn:se)(typeof t=="function"?t():t);if(!n)try{n=kc("getDefaultStorage",()=>{var H;return(H=Ve)==null?void 0:H.localStorage})()}catch(H){h(H)}if(!n)return y;const O=je(t),w=Jh(O),P=(s=r.serializer)!=null?s:Qh[w],{pause:p,resume:g}=Wh(y,()=>C(y.value),{flush:o,deep:i,eventFilter:d});c&&a&&Do(()=>{n instanceof Storage?ge(c,"storage",M):ge(c,sl,I),E&&M()}),E||M();function T(H,G){if(c){const K={key:e,oldValue:H,newValue:G,storageArea:n};c.dispatchEvent(n instanceof Storage?new StorageEvent("storage",K):new CustomEvent(sl,{detail:K}))}}function C(H){try{const G=n.getItem(e);if(H==null)T(G,null),n.removeItem(e);else{const K=P.write(H);G!==K&&(n.setItem(e,K),T(G,K))}}catch(G){h(G)}}function N(H){const G=H?H.newValue:n.getItem(e);if(G==null)return l&&O!=null&&n.setItem(e,P.write(O)),O;if(!H&&u){const K=P.read(G);return typeof u=="function"?u(K,O):w==="object"&&!Array.isArray(K)?{...O,...K}:K}else return typeof G!="string"?G:P.read(G)}function M(H){if(!(H&&H.storageArea!==n)){if(H&&H.key==null){y.value=O;return}if(!(H&&H.key!==e)){p();try{(H==null?void 0:H.newValue)!==P.write(y.value)&&(y.value=N(H))}catch(G){h(G)}finally{H?Nn(g):g()}}}}function I(H){M(H.detail)}return y}const Zh="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function em(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Ve,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:a=!0,storageRef:l,emitAuto:u,disableTransition:f=!0}=e,c={auto:"",light:"light",dark:"dark",...e.modes||{}},d=Ic({window:s}),h=oe(()=>d.value?"dark":"light"),E=l||(i==null?Ac(r):xc(i,r,o,{window:s,listenToStorageChanges:a})),y=oe(()=>E.value==="auto"?h.value:E.value),O=kc("updateHTMLAttrs",(g,T,C)=>{const N=typeof g=="string"?s==null?void 0:s.document.querySelector(g):Ye(g);if(!N)return;const M=new Set,I=new Set;let H=null;if(T==="class"){const K=C.split(/\s/g);Object.values(c).flatMap(Z=>(Z||"").split(/\s/g)).filter(Boolean).forEach(Z=>{K.includes(Z)?M.add(Z):I.add(Z)})}else H={key:T,value:C};if(M.size===0&&I.size===0&&H===null)return;let G;f&&(G=s.document.createElement("style"),G.appendChild(document.createTextNode(Zh)),s.document.head.appendChild(G));for(const K of M)N.classList.add(K);for(const K of I)N.classList.remove(K);H&&N.setAttribute(H.key,H.value),f&&(s.getComputedStyle(G).opacity,document.head.removeChild(G))});function w(g){var T;O(t,n,(T=c[g])!=null?T:g)}function P(g){e.onChanged?e.onChanged(g,w):w(g)}Ae(y,P,{flush:"post",immediate:!0}),Do(()=>P(y.value));const p=oe({get(){return u?E.value:y.value},set(g){E.value=g}});try{return Object.assign(p,{store:E,system:h,state:y})}catch{return p}}function tm(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Ve}=e,s=em({...e,onChanged:(a,l)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,a==="dark",l,a):l(a)},modes:{dark:t,light:n}}),o=oe(()=>s.system?s.system.value:Ic({window:r}).value?"dark":"light");return oe({get(){return s.value==="dark"},set(a){const l=a?"dark":"light";o.value===l?s.value="auto":s.value=l}})}function Mc(e){return e}function nm(e,t){return e.value=t}function rm(e){return e?typeof e=="function"?e:Rc:Mc}function sm(e){return e?typeof e=="function"?e:Rc:Mc}function om(e,t={}){const{clone:n=!1,dump:r=rm(n),parse:s=sm(n),setSource:o=nm}=t;function i(){return Ea({snapshot:r(e.value),timestamp:Dh()})}const a=se(i()),l=se([]),u=se([]),f=p=>{o(e,s(p.snapshot)),a.value=p},c=()=>{l.value.unshift(a.value),a.value=i(),t.capacity&&l.value.length>t.capacity&&l.value.splice(t.capacity,Number.POSITIVE_INFINITY),u.value.length&&u.value.splice(0,u.value.length)},d=()=>{l.value.splice(0,l.value.length),u.value.splice(0,u.value.length)},h=()=>{const p=l.value.shift();p&&(u.value.unshift(a.value),f(p))},E=()=>{const p=u.value.shift();p&&(l.value.unshift(a.value),f(p))},y=()=>{f(a.value)},O=oe(()=>[a.value,...l.value]),w=oe(()=>l.value.length>0),P=oe(()=>u.value.length>0);return{source:e,undoStack:l,redoStack:u,last:a,history:O,canUndo:w,canRedo:P,clear:d,commit:c,reset:y,undo:h,redo:E}}function X_(e,t={}){const{deep:n=!1,flush:r="pre",eventFilter:s}=t,{eventFilter:o,pause:i,resume:a,isActive:l}=Cc(s),{ignoreUpdates:u,ignorePrevAsyncUpdates:f,stop:c}=Gh(e,O,{deep:n,flush:r,eventFilter:o});function d(g,T){f(),u(()=>{g.value=T})}const h=om(e,{...t,clone:t.clone||n,setSource:d}),{clear:E,commit:y}=h;function O(){f(),y()}function w(g){a(),g&&O()}function P(g){let T=!1;const C=()=>T=!0;u(()=>{g(C)}),T||O()}function p(){c(),E()}return{...h,isTracking:l,pause:i,resume:w,commit:O,batch:P,dispose:p}}function q_(e,t={}){var n,r;const s=se(!1),o=Sn(null);let i=0,a=!0;if(In){const l=typeof t=="function"?{onDrop:t}:t,u=(n=l.multiple)!=null?n:!0,f=(r=l.preventDefaultForUnhandled)!=null?r:!1,c=y=>{var O,w;const P=Array.from((w=(O=y.dataTransfer)==null?void 0:O.files)!=null?w:[]);return P.length===0?null:u?P:[P[0]]},d=y=>{if(l.dataTypes){const O=Je(l.dataTypes);return typeof O=="function"?O(y):O?O.some(w=>y.includes(w)):!0}return!0},h=y=>{var O,w;const P=Array.from((w=(O=y.dataTransfer)==null?void 0:O.items)!=null?w:[]),p=P.filter(C=>C.kind==="file").map(C=>C.type),g=d(p),T=u||P.filter(C=>C.kind==="file").length<=1;return g&&T},E=(y,O)=>{var w,P,p,g;if(a=h(y),!a){f&&y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="none");return}y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="copy");const T=c(y);switch(O){case"enter":i+=1,s.value=!0,(w=l.onEnter)==null||w.call(l,null,y);break;case"over":(P=l.onOver)==null||P.call(l,null,y);break;case"leave":i-=1,i===0&&(s.value=!1),(p=l.onLeave)==null||p.call(l,null,y);break;case"drop":i=0,s.value=!1,a&&(o.value=T,(g=l.onDrop)==null||g.call(l,T,y));break}};ge(e,"dragenter",y=>E(y,"enter")),ge(e,"dragover",y=>E(y,"over")),ge(e,"dragleave",y=>E(y,"leave")),ge(e,"drop",y=>E(y,"drop"))}return{files:o,isOverDropZone:s}}function im(e,t,n={}){const{window:r=Ve,...s}=n;let o;const i=cr(()=>r&&"ResizeObserver"in r),a=()=>{o&&(o.disconnect(),o=void 0)},l=oe(()=>{const c=je(e);return Array.isArray(c)?c.map(d=>Ye(d)):[Ye(c)]}),u=Ae(l,c=>{if(a(),i.value&&r){o=new ResizeObserver(t);for(const d of c)d&&o.observe(d,s)}},{immediate:!0,flush:"post"}),f=()=>{a(),u()};return sn(f),{isSupported:i,stop:f}}function J_(e,t={width:0,height:0},n={}){const{window:r=Ve,box:s="content-box"}=n,o=oe(()=>{var c,d;return(d=(c=Ye(e))==null?void 0:c.namespaceURI)==null?void 0:d.includes("svg")}),i=se(t.width),a=se(t.height),{stop:l}=im(e,([c])=>{const d=s==="border-box"?c.borderBoxSize:s==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(r&&o.value){const h=Ye(e);if(h){const E=h.getBoundingClientRect();i.value=E.width,a.value=E.height}}else if(d){const h=Array.isArray(d)?d:[d];i.value=h.reduce((E,{inlineSize:y})=>E+y,0),a.value=h.reduce((E,{blockSize:y})=>E+y,0)}else i.value=c.contentRect.width,a.value=c.contentRect.height},n);Do(()=>{const c=Ye(e);c&&(i.value="offsetWidth"in c?c.offsetWidth:t.width,a.value="offsetHeight"in c?c.offsetHeight:t.height)});const u=Ae(()=>Ye(e),c=>{i.value=c?t.width:0,a.value=c?t.height:0});function f(){l(),u()}return{width:i,height:a,stop:f}}const lm={multiple:!0,accept:"*",reset:!1,directory:!1};function Q_(e={}){const{document:t=Lc}=e,n=se(null),{on:r,trigger:s}=tl(),{on:o,trigger:i}=tl();let a;t&&(a=t.createElement("input"),a.type="file",a.onchange=f=>{const c=f.target;n.value=c.files,s(n.value)},a.oncancel=()=>{i()});const l=()=>{n.value=null,a&&a.value&&(a.value="",s(null))},u=f=>{if(!a)return;const c={...lm,...e,...f};a.multiple=c.multiple,a.accept=c.accept,a.webkitdirectory=c.directory,Fh(c,"capture")&&(a.capture=c.capture),c.reset&&l(),a.click()};return{files:Ln(n),open:u,reset:l,onCancel:o,onChange:r}}const ol=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Z_(e,t={}){const{document:n=Lc,autoExit:r=!1}=t,s=oe(()=>{var w;return(w=Ye(e))!=null?w:n==null?void 0:n.querySelector("html")}),o=se(!1),i=oe(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(w=>n&&w in n||s.value&&w in s.value)),a=oe(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(w=>n&&w in n||s.value&&w in s.value)),l=oe(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(w=>n&&w in n||s.value&&w in s.value)),u=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(w=>n&&w in n),f=cr(()=>s.value&&n&&i.value!==void 0&&a.value!==void 0&&l.value!==void 0),c=()=>u?(n==null?void 0:n[u])===s.value:!1,d=()=>{if(l.value){if(n&&n[l.value]!=null)return n[l.value];{const w=s.value;if((w==null?void 0:w[l.value])!=null)return!!w[l.value]}}return!1};async function h(){if(!(!f.value||!o.value)){if(a.value)if((n==null?void 0:n[a.value])!=null)await n[a.value]();else{const w=s.value;(w==null?void 0:w[a.value])!=null&&await w[a.value]()}o.value=!1}}async function E(){if(!f.value||o.value)return;d()&&await h();const w=s.value;i.value&&(w==null?void 0:w[i.value])!=null&&(await w[i.value](),o.value=!0)}async function y(){await(o.value?h():E())}const O=()=>{const w=d();(!w||w&&c())&&(o.value=w)};return ge(n,ol,O,!1),ge(()=>Ye(s),ol,O,!1),r&&sn(h),{isSupported:f,isFullscreen:o,enter:E,exit:h,toggle:y}}function am(e,t,n={}){const{window:r=Ve}=n;return xc(e,t,r==null?void 0:r.localStorage,n)}const cm={ctrl:"control",command:"meta",cmd:"meta",option:"alt",up:"arrowup",down:"arrowdown",left:"arrowleft",right:"arrowright"};function eb(e={}){const{reactive:t=!1,target:n=Ve,aliasMap:r=cm,passive:s=!0,onEventFired:o=Ut}=e,i=Tn(new Set),a={toJSON(){return{}},current:i},l=t?Tn(a):a,u=new Set,f=new Set;function c(y,O){y in l&&(t?l[y]=O:l[y].value=O)}function d(){i.clear();for(const y of f)c(y,!1)}function h(y,O){var w,P;const p=(w=y.key)==null?void 0:w.toLowerCase(),T=[(P=y.code)==null?void 0:P.toLowerCase(),p].filter(Boolean);p&&(O?i.add(p):i.delete(p));for(const C of T)f.add(C),c(C,O);p==="meta"&&!O?(u.forEach(C=>{i.delete(C),c(C,!1)}),u.clear()):typeof y.getModifierState=="function"&&y.getModifierState("Meta")&&O&&[...i,...T].forEach(C=>u.add(C))}ge(n,"keydown",y=>(h(y,!0),o(y)),{passive:s}),ge(n,"keyup",y=>(h(y,!1),o(y)),{passive:s}),ge("blur",d,{passive:!0}),ge("focus",d,{passive:!0});const E=new Proxy(l,{get(y,O,w){if(typeof O!="string")return Reflect.get(y,O,w);if(O=O.toLowerCase(),O in r&&(O=r[O]),!(O in l))if(/[+_-]/.test(O)){const p=O.split(/[+_-]/g).map(g=>g.trim());l[O]=oe(()=>p.every(g=>je(E[g])))}else l[O]=se(!1);const P=Reflect.get(y,O,w);return t?je(P):P}});return E}function tb(e,t){const r=So(new Map),s=(...f)=>JSON.stringify(f),o=(f,...c)=>(r.set(f,e(...c)),r.get(f)),i=(...f)=>o(s(...f),...f),a=(...f)=>{r.delete(s(...f))},l=()=>{r.clear()},u=(...f)=>{const c=s(...f);return r.has(c)?r.get(c):o(c,...f)};return u.load=i,u.delete=a,u.clear=l,u.generateKey=s,u.cache=r,u}const um={page:e=>[e.pageX,e.pageY],client:e=>[e.clientX,e.clientY],screen:e=>[e.screenX,e.screenY],movement:e=>e instanceof Touch?null:[e.movementX,e.movementY]};function fm(e={}){const{type:t="page",touch:n=!0,resetOnTouchEnds:r=!1,initialValue:s={x:0,y:0},window:o=Ve,target:i=o,scroll:a=!0,eventFilter:l}=e;let u=null;const f=se(s.x),c=se(s.y),d=se(null),h=typeof t=="function"?t:um[t],E=T=>{const C=h(T);u=T,C&&([f.value,c.value]=C,d.value="mouse")},y=T=>{if(T.touches.length>0){const C=h(T.touches[0]);C&&([f.value,c.value]=C,d.value="touch")}},O=()=>{if(!u||!o)return;const T=h(u);u instanceof MouseEvent&&T&&(f.value=T[0]+o.scrollX,c.value=T[1]+o.scrollY)},w=()=>{f.value=s.x,c.value=s.y},P=l?T=>l(()=>E(T),{}):T=>E(T),p=l?T=>l(()=>y(T),{}):T=>y(T),g=l?()=>l(()=>O(),{}):()=>O();if(i){const T={passive:!0};ge(i,["mousemove","dragover"],P,T),n&&t!=="movement"&&(ge(i,["touchstart","touchmove"],p,T),r&&ge(i,"touchend",w,T)),a&&t==="page"&&ge(o,"scroll",g,{passive:!0})}return{x:f,y:c,sourceType:d}}function nb(e,t={}){const{handleOutside:n=!0,window:r=Ve}=t,s=t.type||"page",{x:o,y:i,sourceType:a}=fm(t),l=se(e??(r==null?void 0:r.document.body)),u=se(0),f=se(0),c=se(0),d=se(0),h=se(0),E=se(0),y=se(!0);let O=()=>{};return r&&(O=Ae([l,o,i],()=>{const w=Ye(l);if(!w||!(w instanceof Element))return;const{left:P,top:p,width:g,height:T}=w.getBoundingClientRect();c.value=P+(s==="page"?r.pageXOffset:0),d.value=p+(s==="page"?r.pageYOffset:0),h.value=T,E.value=g;const C=o.value-c.value,N=i.value-d.value;y.value=g===0||T===0||C<0||N<0||C>g||N>T,(n||!y.value)&&(u.value=C,f.value=N)},{immediate:!0}),ge(document,"mouseleave",()=>{y.value=!0})),{x:o,y:i,sourceType:a,elementX:u,elementY:f,elementPositionX:c,elementPositionY:d,elementHeight:h,elementWidth:E,isOutside:y,stop:O}}function dm(e={}){const{window:t=Ve}=e;if(!t)return se(["en"]);const n=t.navigator,r=se(n.languages);return ge(t,"languagechange",()=>{r.value=n.languages}),r}const Dc=Object.fromEntries(Object.entries(Object.assign({"../../locales/de.yml":Lh,"../../locales/en.yml":Rh,"../../locales/pl.yml":Ih})).map(([e,t])=>{const n=e.endsWith(".yaml");return[e.slice(14,n?-5:-4),t.default]})),fs="en",pm=dm(),hm=Object.keys(Dc),Fc=e=>hm.includes(e),rb=e=>Fc(e)?e:fs,Hc=se(fs);Ae(pm,e=>{Hc.value=e.find(Fc)||fs},{immediate:!0});const eo=am("fast-angle-locale",Hc.value),mm=({app:e})=>{const t=bh({legacy:!1,locale:eo.value,fallbackLocale:fs,messages:Dc});e.use(t),Ae(t.global.locale,n=>{eo.value=n})},gm=Object.freeze(Object.defineProperty({__proto__:null,install:mm},Symbol.toStringTag,{value:"Module"})),_m="modulepreload",bm=function(e){return"/fast-angle/"+e},il={},nn=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(n.map(l=>{if(l=bm(l),l in il)return;il[l]=!0;const u=l.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${f}`))return;const c=document.createElement("link");if(c.rel=u?"stylesheet":_m,u||(c.as="script"),c.crossOrigin="",c.href=l,a&&c.setAttribute("nonce",a),document.head.appendChild(c),u)return new Promise((d,h)=>{c.addEventListener("load",d),c.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},ym=async({isClient:e})=>{if(!e)return;const{registerSW:t}=await nn(async()=>{const{registerSW:n}=await import("./virtual_pwa-register-CqiHQMMu.js");return{registerSW:n}},[]);t({immediate:!0})},vm=Object.freeze(Object.defineProperty({__proto__:null,install:ym},Symbol.toStringTag,{value:"Module"})),Em=e=>"virtualKeyboard"in e,Tm=async({isClient:e})=>{e&&Em(navigator)&&(navigator.virtualKeyboard.overlaysContent=!0)},Sm=Object.freeze(Object.defineProperty({__proto__:null,install:Tm},Symbol.toStringTag,{value:"Module"}));/*!
+`}},result:{zoom_in:{t:0,b:{t:2,i:[{t:3}],s:"Przybliż"}},zoom_out:{t:0,b:{t:2,i:[{t:3}],s:"Oddal"}}},nav:{download_image:{action:{t:0,b:{t:2,i:[{t:3}],s:"Pobierz obrazek"}},save:{t:0,b:{t:2,i:[{t:3}],s:"Zapisz obrazek"}},heading:{t:0,b:{t:2,i:[{t:3}],s:"Eksport obrazka"}},name_label:{t:0,b:{t:2,i:[{t:3}],s:"Nazwa obrazka"}},format_label:{t:0,b:{t:2,i:[{t:3}],s:"Format"}},sizing_label:{t:0,b:{t:2,i:[{t:3}],s:"Wymiary obrazka"}},width_label:{t:0,b:{t:2,i:[{t:3}],s:"Szerokość"}},height_label:{t:0,b:{t:2,i:[{t:3}],s:"Wysokość"}},keep_aspect_ratio:{t:0,b:{t:2,i:[{t:3}],s:"Zachowuj proporcje obrazka"}},unit_label:{t:0,b:{t:2,i:[{t:3}],s:"Jednostka"}},quality_label:{t:0,b:{t:2,i:[{t:3}],s:"Jakość"}}},upload_file:{t:0,b:{t:2,i:[{t:3}],s:"Kliknij tutaj lub przeciągnij obraz, aby go załadować"}},toggle_fullscreen:{t:0,b:{t:2,i:[{t:3}],s:"Przełącz tryb pełnoekranowy"}},undo:{t:0,b:{t:2,i:[{t:3}],s:"Cofnij poprzednią akcję"}},redo:{t:0,b:{t:2,i:[{t:3}],s:"Przywróć cofniętą akcję"}},toggle_dark:{t:0,b:{t:2,i:[{t:3}],s:"Ustaw tryb nocny"}},toggle_langs:{t:0,b:{t:2,i:[{t:3}],s:"Zmień język"}},help:{action:{t:0,b:{t:2,i:[{t:3}],s:"Otwórz pomoc i informację o aplikacji"}},heading:{t:0,b:{t:2,i:[{t:3}],s:"Pomoc"}},heading_authors:{t:0,b:{t:2,i:[{t:3}],s:"Autorzy"}},key_bindings:{heading:{t:0,b:{t:2,i:[{t:3}],s:"Skróty klawiaturowy"}},description:{t:0,b:{t:2,i:[{t:3}],s:"Akcja"}}},content:[{t:0,b:{t:2,i:[{t:3}],s:"By wczytać obrazek, upuść go na pole rysowania lub naciśnij przycisk oznaczony ikoną obrazka ze strzałką."}},{t:0,b:{t:2,i:[{t:3}],s:"Po narysowaniu drugiej linii, kliknij raz jeszcze by zresetować linie."}},{t:0,b:{t:2,i:[{t:3}],s:"Wygodniej jest obsługiwać aplikację w trybie pełnoekranowym."}}]}}}},Ih=Object.freeze(Object.defineProperty({__proto__:null,default:kh},Symbol.toStringTag,{value:"Module"}));function sn(e){return ia()?(zf(e),!0):!1}function tl(){const e=new Set,t=s=>{e.delete(s)};return{on:s=>{e.add(s);const o=()=>t(s);return sn(o),{off:o}},off:t,trigger:(...s)=>Promise.all(Array.from(e).map(o=>o(...s)))}}function U_(e){let t=0,n,r;const s=()=>{t-=1,r&&t<=0&&(r.stop(),n=void 0,r=void 0)};return(...o)=>(t+=1,r||(r=oa(!0),n=r.run(()=>e(...o))),sn(s),n)}function je(e){return typeof e=="function"?e():Je(e)}const In=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const xh=Object.prototype.toString,Mh=e=>xh.call(e)==="[object Object]",Dh=()=>+Date.now(),Ut=()=>{},Fh=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Hh=$h();function $h(){var e,t;return In&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function wc(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const Mo=e=>e();function Oc(...e){let t=0,n,r=!0,s=Ut,o,i,a,l,u;!we(e[0])&&typeof e[0]=="object"?{delay:i,trailing:a=!0,leading:l=!0,rejectOnCancel:u=!1}=e[0]:[i,a=!0,l=!0,u=!1]=e;const f=()=>{n&&(clearTimeout(n),n=void 0,s(),s=Ut)};return d=>{const h=je(i),E=Date.now()-t,y=()=>o=d();return f(),h<=0?(t=Date.now(),y()):(E>h&&(l||!r)?(t=Date.now(),y()):a&&(o=new Promise((O,w)=>{s=u?w:O,n=setTimeout(()=>{t=Date.now(),r=!0,O(y()),f()},Math.max(0,h-E))})),!l&&!n&&(n=setTimeout(()=>r=!0,h)),r=!1,o)}}function Cc(e=Mo){const t=se(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function Uh(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function jh(e,t){var n;if(typeof e=="number")return e+t;const r=((n=e.match(/^-?\d+\.?\d*/))==null?void 0:n[0])||"",s=e.slice(r.length),o=Number.parseFloat(r)+t;return Number.isNaN(o)?e:o+s}function Vh(e){return kn()}function Ac(...e){if(e.length!==1)return yd(...e);const t=e[0];return typeof t=="function"?Ln(gd(()=>({get:t,set:Ut}))):se(t)}const j_=Ac;function Pc(e,t,n={}){const{eventFilter:r=Mo,...s}=n;return Ae(e,wc(r,t),s)}function Wh(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:a,isActive:l}=Cc(r);return{stop:Pc(e,t,{...s,eventFilter:o}),pause:i,resume:a,isActive:l}}function Do(e,t=!0,n){Vh()?Rn(e,n):t?e():Nn(e)}function Kh(e,t,n={}){const{immediate:r=!0}=n,s=se(!1);let o=null;function i(){o&&(clearTimeout(o),o=null)}function a(){s.value=!1,i()}function l(...u){i(),s.value=!0,o=setTimeout(()=>{s.value=!1,o=null,e(...u)},je(t))}return r&&(s.value=!0,In&&l()),sn(a),{isPending:Ln(s),start:l,stop:a}}function Bh(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,s=we(e),o=se(e);function i(a){if(arguments.length)return o.value=a,o.value;{const l=je(n);return o.value=o.value===l?je(r):l,o.value}}return s?i:[o,i]}function Gh(e,t,n={}){const{eventFilter:r=Mo,...s}=n,o=wc(r,t);let i,a,l;if(s.flush==="sync"){const u=se(!1);a=()=>{},i=f=>{u.value=!0,f(),u.value=!1},l=Ae(e,(...f)=>{u.value||o(...f)},s)}else{const u=[],f=se(0),c=se(0);a=()=>{f.value=c.value},u.push(Ae(e,()=>{c.value++},{...s,flush:"sync"})),i=d=>{const h=c.value;d(),f.value+=c.value-h},u.push(Ae(e,(...d)=>{const h=f.value>0&&f.value===c.value;f.value=0,c.value=0,!h&&o(...d)},s)),l=()=>{u.forEach(d=>d())}}return{stop:l,ignoreUpdates:i,ignorePrevAsyncUpdates:a}}function V_(e,t,n={}){const{throttle:r=0,trailing:s=!0,leading:o=!0,...i}=n;return Pc(e,t,{...i,eventFilter:Oc(r,s,o)})}function W_(e,t,n){return Ae(e,(s,o,i)=>{s&&t(s,o,i)},{...n,once:!1})}const Ve=In?window:void 0,Lc=In?window.document:void 0,Nc=In?window.navigator:void 0;function Ye(e){var t;const n=je(e);return(t=n==null?void 0:n.$el)!=null?t:n}function ge(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Ve):[t,n,r,s]=e,!t)return Ut;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},a=(f,c,d,h)=>(f.addEventListener(c,d,h),()=>f.removeEventListener(c,d,h)),l=Ae(()=>[Ye(t),je(s)],([f,c])=>{if(i(),!f)return;const d=Mh(c)?{...c}:c;o.push(...n.flatMap(h=>r.map(E=>a(f,h,E,d))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return sn(u),u}let nl=!1;function K_(e,t,n={}){const{window:r=Ve,ignore:s=[],capture:o=!0,detectIframe:i=!1}=n;if(!r)return Ut;Hh&&!nl&&(nl=!0,Array.from(r.document.body.children).forEach(h=>h.addEventListener("click",Ut)),r.document.documentElement.addEventListener("click",Ut));let a=!0;const l=h=>je(s).some(E=>{if(typeof E=="string")return Array.from(r.document.querySelectorAll(E)).some(y=>y===h.target||h.composedPath().includes(y));{const y=Ye(E);return y&&(h.target===y||h.composedPath().includes(y))}}),u=h=>{const E=Ye(e);if(!(!E||E===h.target||h.composedPath().includes(E))){if(h.detail===0&&(a=!l(h)),!a){a=!0;return}t(h)}};let f=!1;const c=[ge(r,"click",h=>{f||(f=!0,setTimeout(()=>{f=!1},0),u(h))},{passive:!0,capture:o}),ge(r,"pointerdown",h=>{const E=Ye(e);a=!l(h)&&!!(E&&!h.composedPath().includes(E))},{passive:!0}),i&&ge(r,"blur",h=>{setTimeout(()=>{var E;const y=Ye(e);((E=r.document.activeElement)==null?void 0:E.tagName)==="IFRAME"&&!(y!=null&&y.contains(r.document.activeElement))&&t(h)},0)})].filter(Boolean);return()=>c.forEach(h=>h())}function zh(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function B_(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Ve,eventName:o="keydown",passive:i=!1,dedupe:a=!1}=r,l=zh(t);return ge(s,o,f=>{f.repeat&&je(a)||l(f)&&n(f)},i)}function Yh(){const e=se(!1),t=kn();return t&&Rn(()=>{e.value=!0},t),e}function cr(e){const t=Yh();return oe(()=>(t.value,!!e()))}function fn(e,t={}){const{window:n=Ve}=t,r=cr(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=se(!1),i=u=>{o.value=u.matches},a=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},l=tc(()=>{r.value&&(a(),s=n.matchMedia(je(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return sn(()=>{l(),a(),s=void 0}),o}const G_={sm:640,md:768,lg:1024,xl:1280,"2xl":1536};function z_(e,t={}){function n(f,c){let d=je(e[je(f)]);return c!=null&&(d=jh(d,c)),typeof d=="number"&&(d=`${d}px`),d}const{window:r=Ve,strategy:s="min-width"}=t;function o(f){return r?r.matchMedia(f).matches:!1}const i=f=>fn(()=>`(min-width: ${n(f)})`,t),a=f=>fn(()=>`(max-width: ${n(f)})`,t),l=Object.keys(e).reduce((f,c)=>(Object.defineProperty(f,c,{get:()=>s==="min-width"?i(c):a(c),enumerable:!0,configurable:!0}),f),{});function u(){const f=Object.keys(e).map(c=>[c,i(c)]);return oe(()=>f.filter(([,c])=>c.value).map(([c])=>c))}return Object.assign(l,{greaterOrEqual:i,smallerOrEqual:a,greater(f){return fn(()=>`(min-width: ${n(f,.1)})`,t)},smaller(f){return fn(()=>`(max-width: ${n(f,-.1)})`,t)},between(f,c){return fn(()=>`(min-width: ${n(f)}) and (max-width: ${n(c,-.1)})`,t)},isGreater(f){return o(`(min-width: ${n(f,.1)})`)},isGreaterOrEqual(f){return o(`(min-width: ${n(f)})`)},isSmaller(f){return o(`(max-width: ${n(f,-.1)})`)},isSmallerOrEqual(f){return o(`(max-width: ${n(f)})`)},isInBetween(f,c){return o(`(min-width: ${n(f)}) and (max-width: ${n(c,-.1)})`)},current:u,active(){const f=u();return oe(()=>f.value.length===0?"":f.value.at(-1))}})}function rl(e,t={}){const{controls:n=!1,navigator:r=Nc}=t,s=cr(()=>r&&"permissions"in r),o=Sn(),i=typeof e=="string"?{name:e}:e,a=Sn(),l=()=>{var f,c;a.value=(c=(f=o.value)==null?void 0:f.state)!=null?c:"prompt"};ge(o,"change",l);const u=Uh(async()=>{if(s.value){if(!o.value)try{o.value=await r.permissions.query(i)}catch{o.value=void 0}finally{l()}if(n)return ae(o.value)}});return u(),n?{state:a,isSupported:s,query:u}:a}function Y_(e={}){const{navigator:t=Nc,read:n=!1,source:r,copiedDuring:s=1500,legacy:o=!1}=e,i=cr(()=>t&&"clipboard"in t),a=rl("clipboard-read"),l=rl("clipboard-write"),u=oe(()=>i.value||o),f=se(""),c=se(!1),d=Kh(()=>c.value=!1,s);function h(){i.value&&w(a.value)?t.clipboard.readText().then(P=>{f.value=P}):f.value=O()}u.value&&n&&ge(["copy","cut"],h);async function E(P=je(r)){u.value&&P!=null&&(i.value&&w(l.value)?await t.clipboard.writeText(P):y(P),f.value=P,c.value=!0,d.start())}function y(P){const p=document.createElement("textarea");p.value=P??"",p.style.position="absolute",p.style.opacity="0",document.body.appendChild(p),p.select(),document.execCommand("copy"),p.remove()}function O(){var P,p,g;return(g=(p=(P=document==null?void 0:document.getSelection)==null?void 0:P.call(document))==null?void 0:p.toString())!=null?g:""}function w(P){return P==="granted"||P==="prompt"}return{isSupported:u,text:f,copied:c,copy:E}}function Rc(e){return JSON.parse(JSON.stringify(e))}const yr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vr="__vueuse_ssr_handlers__",Xh=qh();function qh(){return vr in yr||(yr[vr]=yr[vr]||{}),yr[vr]}function kc(e,t){return Xh[e]||t}function Ic(e){return fn("(prefers-color-scheme: dark)",e)}function Jh(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Qh={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},sl="vueuse-storage";function xc(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:f,window:c=Ve,eventFilter:d,onError:h=H=>{console.error(H)},initOnMounted:E}=r,y=(f?Sn:se)(typeof t=="function"?t():t);if(!n)try{n=kc("getDefaultStorage",()=>{var H;return(H=Ve)==null?void 0:H.localStorage})()}catch(H){h(H)}if(!n)return y;const O=je(t),w=Jh(O),P=(s=r.serializer)!=null?s:Qh[w],{pause:p,resume:g}=Wh(y,()=>C(y.value),{flush:o,deep:i,eventFilter:d});c&&a&&Do(()=>{n instanceof Storage?ge(c,"storage",M):ge(c,sl,I),E&&M()}),E||M();function T(H,G){if(c){const K={key:e,oldValue:H,newValue:G,storageArea:n};c.dispatchEvent(n instanceof Storage?new StorageEvent("storage",K):new CustomEvent(sl,{detail:K}))}}function C(H){try{const G=n.getItem(e);if(H==null)T(G,null),n.removeItem(e);else{const K=P.write(H);G!==K&&(n.setItem(e,K),T(G,K))}}catch(G){h(G)}}function N(H){const G=H?H.newValue:n.getItem(e);if(G==null)return l&&O!=null&&n.setItem(e,P.write(O)),O;if(!H&&u){const K=P.read(G);return typeof u=="function"?u(K,O):w==="object"&&!Array.isArray(K)?{...O,...K}:K}else return typeof G!="string"?G:P.read(G)}function M(H){if(!(H&&H.storageArea!==n)){if(H&&H.key==null){y.value=O;return}if(!(H&&H.key!==e)){p();try{(H==null?void 0:H.newValue)!==P.write(y.value)&&(y.value=N(H))}catch(G){h(G)}finally{H?Nn(g):g()}}}}function I(H){M(H.detail)}return y}const Zh="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function em(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Ve,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:a=!0,storageRef:l,emitAuto:u,disableTransition:f=!0}=e,c={auto:"",light:"light",dark:"dark",...e.modes||{}},d=Ic({window:s}),h=oe(()=>d.value?"dark":"light"),E=l||(i==null?Ac(r):xc(i,r,o,{window:s,listenToStorageChanges:a})),y=oe(()=>E.value==="auto"?h.value:E.value),O=kc("updateHTMLAttrs",(g,T,C)=>{const N=typeof g=="string"?s==null?void 0:s.document.querySelector(g):Ye(g);if(!N)return;const M=new Set,I=new Set;let H=null;if(T==="class"){const K=C.split(/\s/g);Object.values(c).flatMap(Z=>(Z||"").split(/\s/g)).filter(Boolean).forEach(Z=>{K.includes(Z)?M.add(Z):I.add(Z)})}else H={key:T,value:C};if(M.size===0&&I.size===0&&H===null)return;let G;f&&(G=s.document.createElement("style"),G.appendChild(document.createTextNode(Zh)),s.document.head.appendChild(G));for(const K of M)N.classList.add(K);for(const K of I)N.classList.remove(K);H&&N.setAttribute(H.key,H.value),f&&(s.getComputedStyle(G).opacity,document.head.removeChild(G))});function w(g){var T;O(t,n,(T=c[g])!=null?T:g)}function P(g){e.onChanged?e.onChanged(g,w):w(g)}Ae(y,P,{flush:"post",immediate:!0}),Do(()=>P(y.value));const p=oe({get(){return u?E.value:y.value},set(g){E.value=g}});try{return Object.assign(p,{store:E,system:h,state:y})}catch{return p}}function tm(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Ve}=e,s=em({...e,onChanged:(a,l)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,a==="dark",l,a):l(a)},modes:{dark:t,light:n}}),o=oe(()=>s.system?s.system.value:Ic({window:r}).value?"dark":"light");return oe({get(){return s.value==="dark"},set(a){const l=a?"dark":"light";o.value===l?s.value="auto":s.value=l}})}function Mc(e){return e}function nm(e,t){return e.value=t}function rm(e){return e?typeof e=="function"?e:Rc:Mc}function sm(e){return e?typeof e=="function"?e:Rc:Mc}function om(e,t={}){const{clone:n=!1,dump:r=rm(n),parse:s=sm(n),setSource:o=nm}=t;function i(){return Ea({snapshot:r(e.value),timestamp:Dh()})}const a=se(i()),l=se([]),u=se([]),f=p=>{o(e,s(p.snapshot)),a.value=p},c=()=>{l.value.unshift(a.value),a.value=i(),t.capacity&&l.value.length>t.capacity&&l.value.splice(t.capacity,Number.POSITIVE_INFINITY),u.value.length&&u.value.splice(0,u.value.length)},d=()=>{l.value.splice(0,l.value.length),u.value.splice(0,u.value.length)},h=()=>{const p=l.value.shift();p&&(u.value.unshift(a.value),f(p))},E=()=>{const p=u.value.shift();p&&(l.value.unshift(a.value),f(p))},y=()=>{f(a.value)},O=oe(()=>[a.value,...l.value]),w=oe(()=>l.value.length>0),P=oe(()=>u.value.length>0);return{source:e,undoStack:l,redoStack:u,last:a,history:O,canUndo:w,canRedo:P,clear:d,commit:c,reset:y,undo:h,redo:E}}function X_(e,t={}){const{deep:n=!1,flush:r="pre",eventFilter:s}=t,{eventFilter:o,pause:i,resume:a,isActive:l}=Cc(s),{ignoreUpdates:u,ignorePrevAsyncUpdates:f,stop:c}=Gh(e,O,{deep:n,flush:r,eventFilter:o});function d(g,T){f(),u(()=>{g.value=T})}const h=om(e,{...t,clone:t.clone||n,setSource:d}),{clear:E,commit:y}=h;function O(){f(),y()}function w(g){a(),g&&O()}function P(g){let T=!1;const C=()=>T=!0;u(()=>{g(C)}),T||O()}function p(){c(),E()}return{...h,isTracking:l,pause:i,resume:w,commit:O,batch:P,dispose:p}}function q_(e,t={}){var n,r;const s=se(!1),o=Sn(null);let i=0,a=!0;if(In){const l=typeof t=="function"?{onDrop:t}:t,u=(n=l.multiple)!=null?n:!0,f=(r=l.preventDefaultForUnhandled)!=null?r:!1,c=y=>{var O,w;const P=Array.from((w=(O=y.dataTransfer)==null?void 0:O.files)!=null?w:[]);return P.length===0?null:u?P:[P[0]]},d=y=>{if(l.dataTypes){const O=Je(l.dataTypes);return typeof O=="function"?O(y):O?O.some(w=>y.includes(w)):!0}return!0},h=y=>{var O,w;const P=Array.from((w=(O=y.dataTransfer)==null?void 0:O.items)!=null?w:[]),p=P.filter(C=>C.kind==="file").map(C=>C.type),g=d(p),T=u||P.filter(C=>C.kind==="file").length<=1;return g&&T},E=(y,O)=>{var w,P,p,g;if(a=h(y),!a){f&&y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="none");return}y.preventDefault(),y.dataTransfer&&(y.dataTransfer.dropEffect="copy");const T=c(y);switch(O){case"enter":i+=1,s.value=!0,(w=l.onEnter)==null||w.call(l,null,y);break;case"over":(P=l.onOver)==null||P.call(l,null,y);break;case"leave":i-=1,i===0&&(s.value=!1),(p=l.onLeave)==null||p.call(l,null,y);break;case"drop":i=0,s.value=!1,a&&(o.value=T,(g=l.onDrop)==null||g.call(l,T,y));break}};ge(e,"dragenter",y=>E(y,"enter")),ge(e,"dragover",y=>E(y,"over")),ge(e,"dragleave",y=>E(y,"leave")),ge(e,"drop",y=>E(y,"drop"))}return{files:o,isOverDropZone:s}}function im(e,t,n={}){const{window:r=Ve,...s}=n;let o;const i=cr(()=>r&&"ResizeObserver"in r),a=()=>{o&&(o.disconnect(),o=void 0)},l=oe(()=>{const c=je(e);return Array.isArray(c)?c.map(d=>Ye(d)):[Ye(c)]}),u=Ae(l,c=>{if(a(),i.value&&r){o=new ResizeObserver(t);for(const d of c)d&&o.observe(d,s)}},{immediate:!0,flush:"post"}),f=()=>{a(),u()};return sn(f),{isSupported:i,stop:f}}function J_(e,t={width:0,height:0},n={}){const{window:r=Ve,box:s="content-box"}=n,o=oe(()=>{var c,d;return(d=(c=Ye(e))==null?void 0:c.namespaceURI)==null?void 0:d.includes("svg")}),i=se(t.width),a=se(t.height),{stop:l}=im(e,([c])=>{const d=s==="border-box"?c.borderBoxSize:s==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(r&&o.value){const h=Ye(e);if(h){const E=h.getBoundingClientRect();i.value=E.width,a.value=E.height}}else if(d){const h=Array.isArray(d)?d:[d];i.value=h.reduce((E,{inlineSize:y})=>E+y,0),a.value=h.reduce((E,{blockSize:y})=>E+y,0)}else i.value=c.contentRect.width,a.value=c.contentRect.height},n);Do(()=>{const c=Ye(e);c&&(i.value="offsetWidth"in c?c.offsetWidth:t.width,a.value="offsetHeight"in c?c.offsetHeight:t.height)});const u=Ae(()=>Ye(e),c=>{i.value=c?t.width:0,a.value=c?t.height:0});function f(){l(),u()}return{width:i,height:a,stop:f}}const lm={multiple:!0,accept:"*",reset:!1,directory:!1};function Q_(e={}){const{document:t=Lc}=e,n=se(null),{on:r,trigger:s}=tl(),{on:o,trigger:i}=tl();let a;t&&(a=t.createElement("input"),a.type="file",a.onchange=f=>{const c=f.target;n.value=c.files,s(n.value)},a.oncancel=()=>{i()});const l=()=>{n.value=null,a&&a.value&&(a.value="",s(null))},u=f=>{if(!a)return;const c={...lm,...e,...f};a.multiple=c.multiple,a.accept=c.accept,a.webkitdirectory=c.directory,Fh(c,"capture")&&(a.capture=c.capture),c.reset&&l(),a.click()};return{files:Ln(n),open:u,reset:l,onCancel:o,onChange:r}}const ol=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Z_(e,t={}){const{document:n=Lc,autoExit:r=!1}=t,s=oe(()=>{var w;return(w=Ye(e))!=null?w:n==null?void 0:n.querySelector("html")}),o=se(!1),i=oe(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(w=>n&&w in n||s.value&&w in s.value)),a=oe(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(w=>n&&w in n||s.value&&w in s.value)),l=oe(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(w=>n&&w in n||s.value&&w in s.value)),u=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(w=>n&&w in n),f=cr(()=>s.value&&n&&i.value!==void 0&&a.value!==void 0&&l.value!==void 0),c=()=>u?(n==null?void 0:n[u])===s.value:!1,d=()=>{if(l.value){if(n&&n[l.value]!=null)return n[l.value];{const w=s.value;if((w==null?void 0:w[l.value])!=null)return!!w[l.value]}}return!1};async function h(){if(!(!f.value||!o.value)){if(a.value)if((n==null?void 0:n[a.value])!=null)await n[a.value]();else{const w=s.value;(w==null?void 0:w[a.value])!=null&&await w[a.value]()}o.value=!1}}async function E(){if(!f.value||o.value)return;d()&&await h();const w=s.value;i.value&&(w==null?void 0:w[i.value])!=null&&(await w[i.value](),o.value=!0)}async function y(){await(o.value?h():E())}const O=()=>{const w=d();(!w||w&&c())&&(o.value=w)};return ge(n,ol,O,!1),ge(()=>Ye(s),ol,O,!1),r&&sn(h),{isSupported:f,isFullscreen:o,enter:E,exit:h,toggle:y}}function am(e,t,n={}){const{window:r=Ve}=n;return xc(e,t,r==null?void 0:r.localStorage,n)}const cm={ctrl:"control",command:"meta",cmd:"meta",option:"alt",up:"arrowup",down:"arrowdown",left:"arrowleft",right:"arrowright"};function eb(e={}){const{reactive:t=!1,target:n=Ve,aliasMap:r=cm,passive:s=!0,onEventFired:o=Ut}=e,i=Tn(new Set),a={toJSON(){return{}},current:i},l=t?Tn(a):a,u=new Set,f=new Set;function c(y,O){y in l&&(t?l[y]=O:l[y].value=O)}function d(){i.clear();for(const y of f)c(y,!1)}function h(y,O){var w,P;const p=(w=y.key)==null?void 0:w.toLowerCase(),T=[(P=y.code)==null?void 0:P.toLowerCase(),p].filter(Boolean);p&&(O?i.add(p):i.delete(p));for(const C of T)f.add(C),c(C,O);p==="meta"&&!O?(u.forEach(C=>{i.delete(C),c(C,!1)}),u.clear()):typeof y.getModifierState=="function"&&y.getModifierState("Meta")&&O&&[...i,...T].forEach(C=>u.add(C))}ge(n,"keydown",y=>(h(y,!0),o(y)),{passive:s}),ge(n,"keyup",y=>(h(y,!1),o(y)),{passive:s}),ge("blur",d,{passive:!0}),ge("focus",d,{passive:!0});const E=new Proxy(l,{get(y,O,w){if(typeof O!="string")return Reflect.get(y,O,w);if(O=O.toLowerCase(),O in r&&(O=r[O]),!(O in l))if(/[+_-]/.test(O)){const p=O.split(/[+_-]/g).map(g=>g.trim());l[O]=oe(()=>p.every(g=>je(E[g])))}else l[O]=se(!1);const P=Reflect.get(y,O,w);return t?je(P):P}});return E}function tb(e,t){const r=So(new Map),s=(...f)=>JSON.stringify(f),o=(f,...c)=>(r.set(f,e(...c)),r.get(f)),i=(...f)=>o(s(...f),...f),a=(...f)=>{r.delete(s(...f))},l=()=>{r.clear()},u=(...f)=>{const c=s(...f);return r.has(c)?r.get(c):o(c,...f)};return u.load=i,u.delete=a,u.clear=l,u.generateKey=s,u.cache=r,u}const um={page:e=>[e.pageX,e.pageY],client:e=>[e.clientX,e.clientY],screen:e=>[e.screenX,e.screenY],movement:e=>e instanceof Touch?null:[e.movementX,e.movementY]};function fm(e={}){const{type:t="page",touch:n=!0,resetOnTouchEnds:r=!1,initialValue:s={x:0,y:0},window:o=Ve,target:i=o,scroll:a=!0,eventFilter:l}=e;let u=null;const f=se(s.x),c=se(s.y),d=se(null),h=typeof t=="function"?t:um[t],E=T=>{const C=h(T);u=T,C&&([f.value,c.value]=C,d.value="mouse")},y=T=>{if(T.touches.length>0){const C=h(T.touches[0]);C&&([f.value,c.value]=C,d.value="touch")}},O=()=>{if(!u||!o)return;const T=h(u);u instanceof MouseEvent&&T&&(f.value=T[0]+o.scrollX,c.value=T[1]+o.scrollY)},w=()=>{f.value=s.x,c.value=s.y},P=l?T=>l(()=>E(T),{}):T=>E(T),p=l?T=>l(()=>y(T),{}):T=>y(T),g=l?()=>l(()=>O(),{}):()=>O();if(i){const T={passive:!0};ge(i,["mousemove","dragover"],P,T),n&&t!=="movement"&&(ge(i,["touchstart","touchmove"],p,T),r&&ge(i,"touchend",w,T)),a&&t==="page"&&ge(o,"scroll",g,{passive:!0})}return{x:f,y:c,sourceType:d}}function nb(e,t={}){const{handleOutside:n=!0,window:r=Ve}=t,s=t.type||"page",{x:o,y:i,sourceType:a}=fm(t),l=se(e??(r==null?void 0:r.document.body)),u=se(0),f=se(0),c=se(0),d=se(0),h=se(0),E=se(0),y=se(!0);let O=()=>{};return r&&(O=Ae([l,o,i],()=>{const w=Ye(l);if(!w||!(w instanceof Element))return;const{left:P,top:p,width:g,height:T}=w.getBoundingClientRect();c.value=P+(s==="page"?r.pageXOffset:0),d.value=p+(s==="page"?r.pageYOffset:0),h.value=T,E.value=g;const C=o.value-c.value,N=i.value-d.value;y.value=g===0||T===0||C<0||N<0||C>g||N>T,(n||!y.value)&&(u.value=C,f.value=N)},{immediate:!0}),ge(document,"mouseleave",()=>{y.value=!0})),{x:o,y:i,sourceType:a,elementX:u,elementY:f,elementPositionX:c,elementPositionY:d,elementHeight:h,elementWidth:E,isOutside:y,stop:O}}function dm(e={}){const{window:t=Ve}=e;if(!t)return se(["en"]);const n=t.navigator,r=se(n.languages);return ge(t,"languagechange",()=>{r.value=n.languages}),r}const Dc=Object.fromEntries(Object.entries(Object.assign({"../../locales/de.yml":Lh,"../../locales/en.yml":Rh,"../../locales/pl.yml":Ih})).map(([e,t])=>{const n=e.endsWith(".yaml");return[e.slice(14,n?-5:-4),t.default]})),fs="en",pm=dm(),hm=Object.keys(Dc),Fc=e=>hm.includes(e),rb=e=>Fc(e)?e:fs,Hc=se(fs);Ae(pm,e=>{Hc.value=e.find(Fc)||fs},{immediate:!0});const eo=am("fast-angle-locale",Hc.value),mm=({app:e})=>{const t=bh({legacy:!1,locale:eo.value,fallbackLocale:fs,messages:Dc});e.use(t),Ae(t.global.locale,n=>{eo.value=n})},gm=Object.freeze(Object.defineProperty({__proto__:null,install:mm},Symbol.toStringTag,{value:"Module"})),_m="modulepreload",bm=function(e){return"/fast-angle/"+e},il={},nn=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(n.map(l=>{if(l=bm(l),l in il)return;il[l]=!0;const u=l.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${f}`))return;const c=document.createElement("link");if(c.rel=u?"stylesheet":_m,u||(c.as="script"),c.crossOrigin="",c.href=l,a&&c.setAttribute("nonce",a),document.head.appendChild(c),u)return new Promise((d,h)=>{c.addEventListener("load",d),c.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},ym=async({isClient:e})=>{if(!e)return;const{registerSW:t}=await nn(async()=>{const{registerSW:n}=await import("./virtual_pwa-register-B2s4srKm.js");return{registerSW:n}},[]);t({immediate:!0})},vm=Object.freeze(Object.defineProperty({__proto__:null,install:ym},Symbol.toStringTag,{value:"Module"})),Em=e=>"virtualKeyboard"in e,Tm=async({isClient:e})=>{e&&Em(navigator)&&(navigator.virtualKeyboard.overlaysContent=!0)},Sm=Object.freeze(Object.defineProperty({__proto__:null,install:Tm},Symbol.toStringTag,{value:"Module"}));/*!
* vue-router v4.4.5
* (c) 2024 Eduardo San Martin Morote
* @license MIT
- */const dn=typeof document<"u";function $c(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function wm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&$c(e.default)}const fe=Object.assign;function Cs(e,t){const n={};for(const r in t){const s=t[r];n[r]=pt(s)?s.map(e):e(s)}return n}const zn=()=>{},pt=Array.isArray,Uc=/#/g,Om=/&/g,Cm=/\//g,Am=/=/g,Pm=/\?/g,jc=/\+/g,Lm=/%5B/g,Nm=/%5D/g,Vc=/%5E/g,Rm=/%60/g,Wc=/%7B/g,km=/%7C/g,Kc=/%7D/g,Im=/%20/g;function Fo(e){return encodeURI(""+e).replace(km,"|").replace(Lm,"[").replace(Nm,"]")}function xm(e){return Fo(e).replace(Wc,"{").replace(Kc,"}").replace(Vc,"^")}function to(e){return Fo(e).replace(jc,"%2B").replace(Im,"+").replace(Uc,"%23").replace(Om,"%26").replace(Rm,"`").replace(Wc,"{").replace(Kc,"}").replace(Vc,"^")}function Mm(e){return to(e).replace(Am,"%3D")}function Dm(e){return Fo(e).replace(Uc,"%23").replace(Pm,"%3F")}function Fm(e){return e==null?"":Dm(e).replace(Cm,"%2F")}function rr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Hm=/\/$/,$m=e=>e.replace(Hm,"");function As(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Wm(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:rr(i)}}function Um(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ll(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function jm(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&On(t.matched[r],n.matched[s])&&Bc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function On(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Bc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Vm(e[n],t[n]))return!1;return!0}function Vm(e,t){return pt(e)?al(e,t):pt(t)?al(t,e):e===t}function al(e,t){return pt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Wm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const It={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Cn;(function(e){e.pop="pop",e.push="push"})(Cn||(Cn={}));var en;(function(e){e.back="back",e.forward="forward",e.unknown=""})(en||(en={}));const Ps="";function Gc(e){if(!e)if(dn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),$m(e)}const Km=/^[^#]+#/;function zc(e,t){return e.replace(Km,"#")+t}function Bm(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const ds=()=>({left:window.scrollX,top:window.scrollY});function Gm(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Bm(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function cl(e,t){return(history.state?history.state.position-t:-1)+e}const no=new Map;function zm(e,t){no.set(e,t)}function Ym(e){const t=no.get(e);return no.delete(e),t}let Xm=()=>location.protocol+"//"+location.host;function Yc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),ll(l,"")}return ll(n,e)+r+s}function qm(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const h=Yc(e,location),E=n.value,y=t.value;let O=0;if(d){if(n.value=h,t.value=d,i&&i===E){i=null;return}O=y?d.position-y.position:0}else r(h);s.forEach(w=>{w(n.value,E,{delta:O,type:Cn.pop,direction:O?O>0?en.forward:en.back:en.unknown})})};function l(){i=n.value}function u(d){s.push(d);const h=()=>{const E=s.indexOf(d);E>-1&&s.splice(E,1)};return o.push(h),h}function f(){const{history:d}=window;d.state&&d.replaceState(fe({},d.state,{scroll:ds()}),"")}function c(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:l,listen:u,destroy:c}}function ul(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ds():null}}function Jm(e){const{history:t,location:n}=window,r={value:Yc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,f){const c=e.indexOf("#"),d=c>-1?(n.host&&document.querySelector("base")?e:e.slice(c))+l:Xm()+e+l;try{t[f?"replaceState":"pushState"](u,"",d),s.value=u}catch(h){console.error(h),n[f?"replace":"assign"](d)}}function i(l,u){const f=fe({},t.state,ul(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,f,!0),r.value=l}function a(l,u){const f=fe({},s.value,t.state,{forward:l,scroll:ds()});o(f.current,f,!0);const c=fe({},ul(r.value,l,null),{position:f.position+1},u);o(l,c,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function Qm(e){e=Gc(e);const t=Jm(e),n=qm(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=fe({location:"",base:e,go:r,createHref:zc.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Zm(e=""){let t=[],n=[Ps],r=0;e=Gc(e);function s(a){r++,r!==n.length&&n.splice(r),n.push(a)}function o(a,l,{direction:u,delta:f}){const c={direction:u,delta:f,type:Cn.pop};for(const d of t)d(a,l,c)}const i={location:Ps,state:{},base:e,createHref:zc.bind(null,e),replace(a){n.splice(r--,1),s(a)},push(a,l){s(a)},listen(a){return t.push(a),()=>{const l=t.indexOf(a);l>-1&&t.splice(l,1)}},destroy(){t=[],n=[Ps],r=0},go(a,l=!0){const u=this.location,f=a<0?en.back:en.forward;r=Math.max(0,Math.min(r+a,n.length-1)),l&&o(this.location,u,{direction:f,delta:a})}};return Object.defineProperty(i,"location",{enumerable:!0,get:()=>n[r]}),i}function eg(e){return typeof e=="string"||e&&typeof e=="object"}function Xc(e){return typeof e=="string"||typeof e=="symbol"}const qc=Symbol("");var fl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(fl||(fl={}));function An(e,t){return fe(new Error,{type:e,[qc]:!0},t)}function wt(e,t){return e instanceof Error&&qc in e&&(t==null||!!(e.type&t))}const dl="[^/]+?",tg={sensitive:!1,strict:!1,start:!0,end:!0},ng=/[.+*?^${}()[\]/\\]/g;function rg(e,t){const n=fe({},tg,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const f=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let c=0;ct.length?t.length===1&&t[0]===80?1:-1:0}function Jc(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const og={type:0,value:""},ig=/[a-zA-Z0-9_]/;function lg(e){if(!e)return[[]];if(e==="/")return[[og]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${u}": ${h}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",f="";function c(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:f,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(p)}:zn}function i(c){if(Xc(c)){const d=r.get(c);d&&(r.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){const d=dg(c,n);n.splice(d,0,c),c.record.name&&!gl(c)&&r.set(c.record.name,c)}function u(c,d){let h,E={},y,O;if("name"in c&&c.name){if(h=r.get(c.name),!h)throw An(1,{location:c});O=h.record.name,E=fe(hl(d.params,h.keys.filter(p=>!p.optional).concat(h.parent?h.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),c.params&&hl(c.params,h.keys.map(p=>p.name))),y=h.stringify(E)}else if(c.path!=null)y=c.path,h=n.find(p=>p.re.test(y)),h&&(E=h.parse(y),O=h.record.name);else{if(h=d.name?r.get(d.name):n.find(p=>p.re.test(d.path)),!h)throw An(1,{location:c,currentLocation:d});O=h.record.name,E=fe({},d.params,c.params),y=h.stringify(E)}const w=[];let P=h;for(;P;)w.unshift(P.record),P=P.parent;return{name:O,path:y,params:E,matched:w,meta:fg(w)}}e.forEach(c=>o(c));function f(){n.length=0,r.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:f,getRoutes:a,getRecordMatcher:s}}function hl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ml(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ug(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function ug(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function gl(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function fg(e){return e.reduce((t,n)=>fe(t,n.meta),{})}function _l(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function dg(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Jc(e,t[o])<0?r=o:n=o+1}const s=pg(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function pg(e){let t=e;for(;t=t.parent;)if(Qc(t)&&Jc(e,t)===0)return t}function Qc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function hg(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&to(o)):[r&&to(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function mg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=pt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const gg=Symbol(""),yl=Symbol(""),ps=Symbol(""),Ho=Symbol(""),ro=Symbol("");function Hn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Ft(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(An(4,{from:n,to:t})):d instanceof Error?l(d):eg(d)?l(An(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},f=o(()=>e.call(r&&r.instances[s],t,n,u));let c=Promise.resolve(f);e.length<3&&(c=c.then(u)),c.catch(d=>l(d))})}function Ls(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if($c(l)){const f=(l.__vccOpts||l)[t];f&&o.push(Ft(f,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const c=wm(f)?f.default:f;i.mods[a]=f,i.components[a]=c;const h=(c.__vccOpts||c)[t];return h&&Ft(h,n,r,i,a,s)()}))}}return o}function vl(e){const t=et(ps),n=et(Ho),r=oe(()=>{const l=Je(e.to);return t.resolve(l)}),s=oe(()=>{const{matched:l}=r.value,{length:u}=l,f=l[u-1],c=n.matched;if(!f||!c.length)return-1;const d=c.findIndex(On.bind(null,f));if(d>-1)return d;const h=El(l[u-2]);return u>1&&El(f)===h&&c[c.length-1].path!==h?c.findIndex(On.bind(null,l[u-2])):d}),o=oe(()=>s.value>-1&&vg(n.params,r.value.params)),i=oe(()=>s.value>-1&&s.value===n.matched.length-1&&Bc(n.params,r.value.params));function a(l={}){return yg(l)?t[Je(e.replace)?"replace":"push"](Je(e.to)).catch(zn):Promise.resolve()}return{route:r,href:oe(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}const _g=Bt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:vl,setup(e,{slots:t}){const n=Tn(vl(e)),{options:r}=et(ps),s=oe(()=>({[Tl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Tl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:us("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),bg=_g;function yg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function vg(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!pt(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function El(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Tl=(e,t,n)=>e??t??n,Eg=Bt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=et(ro),s=oe(()=>e.route||r.value),o=et(yl,0),i=oe(()=>{let u=Je(o);const{matched:f}=s.value;let c;for(;(c=f[u])&&!c.components;)u++;return u}),a=oe(()=>s.value.matched[i.value]);wr(yl,oe(()=>i.value+1)),wr(gg,a),wr(ro,s);const l=se();return Ae(()=>[l.value,a.value,e.name],([u,f,c],[d,h,E])=>{f&&(f.instances[c]=u,h&&h!==f&&u&&u===d&&(f.leaveGuards.size||(f.leaveGuards=h.leaveGuards),f.updateGuards.size||(f.updateGuards=h.updateGuards))),u&&f&&(!h||!On(f,h)||!d)&&(f.enterCallbacks[c]||[]).forEach(y=>y(u))},{flush:"post"}),()=>{const u=s.value,f=e.name,c=a.value,d=c&&c.components[f];if(!d)return Sl(n.default,{Component:d,route:u});const h=c.props[f],E=h?h===!0?u.params:typeof h=="function"?h(u):h:null,O=us(d,fe({},E,t,{onVnodeUnmounted:w=>{w.component.isUnmounted&&(c.instances[f]=null)},ref:l}));return Sl(n.default,{Component:O,route:u})||O}}});function Sl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Tg=Eg;function Sg(e){const t=cg(e.routes,e),n=e.parseQuery||hg,r=e.stringifyQuery||bl,s=e.history,o=Hn(),i=Hn(),a=Hn(),l=Sn(It);let u=It;dn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Cs.bind(null,x=>""+x),c=Cs.bind(null,Fm),d=Cs.bind(null,rr);function h(x,B){let W,z;return Xc(x)?(W=t.getRecordMatcher(x),z=B):z=x,t.addRoute(z,W)}function E(x){const B=t.getRecordMatcher(x);B&&t.removeRoute(B)}function y(){return t.getRoutes().map(x=>x.record)}function O(x){return!!t.getRecordMatcher(x)}function w(x,B){if(B=fe({},B||l.value),typeof x=="string"){const v=As(n,x,B.path),L=t.resolve({path:v.path},B),D=s.createHref(v.fullPath);return fe(v,L,{params:d(L.params),hash:rr(v.hash),redirectedFrom:void 0,href:D})}let W;if(x.path!=null)W=fe({},x,{path:As(n,x.path,B.path).path});else{const v=fe({},x.params);for(const L in v)v[L]==null&&delete v[L];W=fe({},x,{params:c(v)}),B.params=c(B.params)}const z=t.resolve(W,B),ie=x.hash||"";z.params=f(d(z.params));const de=Um(r,fe({},x,{hash:xm(ie),path:z.path})),b=s.createHref(de);return fe({fullPath:de,hash:ie,query:r===bl?mg(x.query):x.query||{}},z,{redirectedFrom:void 0,href:b})}function P(x){return typeof x=="string"?As(n,x,l.value.path):fe({},x)}function p(x,B){if(u!==x)return An(8,{from:B,to:x})}function g(x){return N(x)}function T(x){return g(fe(P(x),{replace:!0}))}function C(x){const B=x.matched[x.matched.length-1];if(B&&B.redirect){const{redirect:W}=B;let z=typeof W=="function"?W(x):W;return typeof z=="string"&&(z=z.includes("?")||z.includes("#")?z=P(z):{path:z},z.params={}),fe({query:x.query,hash:x.hash,params:z.path!=null?{}:x.params},z)}}function N(x,B){const W=u=w(x),z=l.value,ie=x.state,de=x.force,b=x.replace===!0,v=C(W);if(v)return N(fe(P(v),{state:typeof v=="object"?fe({},ie,v.state):ie,force:de,replace:b}),B||W);const L=W;L.redirectedFrom=B;let D;return!de&&jm(r,z,W)&&(D=An(16,{to:L,from:z}),Oe(z,z,!0,!1)),(D?Promise.resolve(D):H(L,z)).catch(k=>wt(k)?wt(k,2)?k:tt(k):Y(k,L,z)).then(k=>{if(k){if(wt(k,2))return N(fe({replace:b},P(k.to),{state:typeof k.to=="object"?fe({},ie,k.to.state):ie,force:de}),B||L)}else k=K(L,z,!0,b,ie);return G(L,z,k),k})}function M(x,B){const W=p(x,B);return W?Promise.reject(W):Promise.resolve()}function I(x){const B=at.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(x):x()}function H(x,B){let W;const[z,ie,de]=wg(x,B);W=Ls(z.reverse(),"beforeRouteLeave",x,B);for(const v of z)v.leaveGuards.forEach(L=>{W.push(Ft(L,x,B))});const b=M.bind(null,x,B);return W.push(b),Fe(W).then(()=>{W=[];for(const v of o.list())W.push(Ft(v,x,B));return W.push(b),Fe(W)}).then(()=>{W=Ls(ie,"beforeRouteUpdate",x,B);for(const v of ie)v.updateGuards.forEach(L=>{W.push(Ft(L,x,B))});return W.push(b),Fe(W)}).then(()=>{W=[];for(const v of de)if(v.beforeEnter)if(pt(v.beforeEnter))for(const L of v.beforeEnter)W.push(Ft(L,x,B));else W.push(Ft(v.beforeEnter,x,B));return W.push(b),Fe(W)}).then(()=>(x.matched.forEach(v=>v.enterCallbacks={}),W=Ls(de,"beforeRouteEnter",x,B,I),W.push(b),Fe(W))).then(()=>{W=[];for(const v of i.list())W.push(Ft(v,x,B));return W.push(b),Fe(W)}).catch(v=>wt(v,8)?v:Promise.reject(v))}function G(x,B,W){a.list().forEach(z=>I(()=>z(x,B,W)))}function K(x,B,W,z,ie){const de=p(x,B);if(de)return de;const b=B===It,v=dn?history.state:{};W&&(z||b?s.replace(x.fullPath,fe({scroll:b&&v&&v.scroll},ie)):s.push(x.fullPath,ie)),l.value=x,Oe(x,B,W,b),tt()}let Z;function Le(){Z||(Z=s.listen((x,B,W)=>{if(!Rt.listening)return;const z=w(x),ie=C(z);if(ie){N(fe(ie,{replace:!0}),z).catch(zn);return}u=z;const de=l.value;dn&&zm(cl(de.fullPath,W.delta),ds()),H(z,de).catch(b=>wt(b,12)?b:wt(b,2)?(N(b.to,z).then(v=>{wt(v,20)&&!W.delta&&W.type===Cn.pop&&s.go(-1,!1)}).catch(zn),Promise.reject()):(W.delta&&s.go(-W.delta,!1),Y(b,z,de))).then(b=>{b=b||K(z,de,!1),b&&(W.delta&&!wt(b,8)?s.go(-W.delta,!1):W.type===Cn.pop&&wt(b,20)&&s.go(-1,!1)),G(z,de,b)}).catch(zn)}))}let ye=Hn(),q=Hn(),ne;function Y(x,B,W){tt(x);const z=q.list();return z.length?z.forEach(ie=>ie(x,B,W)):console.error(x),Promise.reject(x)}function _e(){return ne&&l.value!==It?Promise.resolve():new Promise((x,B)=>{ye.add([x,B])})}function tt(x){return ne||(ne=!x,Le(),ye.list().forEach(([B,W])=>x?W(x):B()),ye.reset()),x}function Oe(x,B,W,z){const{scrollBehavior:ie}=e;if(!dn||!ie)return Promise.resolve();const de=!W&&Ym(cl(x.fullPath,0))||(z||!W)&&history.state&&history.state.scroll||null;return Nn().then(()=>ie(x,B,de)).then(b=>b&&Gm(b)).catch(b=>Y(b,x,B))}const Ce=x=>s.go(x);let ht;const at=new Set,Rt={currentRoute:l,listening:!0,addRoute:h,removeRoute:E,clearRoutes:t.clearRoutes,hasRoute:O,getRoutes:y,resolve:w,options:e,push:g,replace:T,go:Ce,back:()=>Ce(-1),forward:()=>Ce(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:q.add,isReady:_e,install(x){const B=this;x.component("RouterLink",bg),x.component("RouterView",Tg),x.config.globalProperties.$router=B,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>Je(l)}),dn&&!ht&&l.value===It&&(ht=!0,g(s.location).catch(ie=>{}));const W={};for(const ie in It)Object.defineProperty(W,ie,{get:()=>l.value[ie],enumerable:!0});x.provide(ps,B),x.provide(Ho,So(W)),x.provide(ro,l);const z=x.unmount;at.add(x),x.unmount=function(){at.delete(x),at.size<1&&(u=It,Z&&Z(),Z=null,l.value=It,ht=!1,ne=!1),z()}}};function Fe(x){return x.reduce((B,W)=>B.then(()=>I(W)),Promise.resolve())}return Rt}function wg(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iOn(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>On(u,l))||s.push(l))}return[n,r,s]}function Og(){return et(ps)}function sb(e){return et(Ho)}function so(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?so(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const Cg={run:e=>e()},Ag=()=>Cg,Zc=typeof console.createTask<"u"?console.createTask:Ag;function Pg(e,t){const n=t.shift(),r=Zc(n);return e.reduce((s,o)=>s.then(()=>r.run(()=>o(...t))),Promise.resolve())}function Lg(e,t){const n=t.shift(),r=Zc(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}function Ns(e,t){for(const n of[...e])n(t)}class Ng{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const s=t;let o;for(;this._deprecatedHooks[t];)o=this._deprecatedHooks[t],t=o.to;if(o&&!r.allowDeprecated){let i=o.message;i||(i=`${s} hook has been deprecated`+(o.to?`, please use ${o.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,s=(...o)=>(typeof r=="function"&&r(),r=void 0,s=void 0,n(...o));return r=this.hook(t,s),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const s of r)this.hook(t,s)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=so(t),r=Object.keys(n).map(s=>this.hook(s,n[s]));return()=>{for(const s of r.splice(0,r.length))s()}}removeHooks(t){const n=so(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(Pg,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(Lg,t,...n)}callHookWith(t,n,...r){const s=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&Ns(this._before,s);const o=t(n in this._hooks?[...this._hooks[n]]:[],r);return o instanceof Promise?o.finally(()=>{this._after&&s&&Ns(this._after,s)}):(this._after&&s&&Ns(this._after,s),o)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function Rg(){return new Ng}function kg(e){return Array.isArray(e)?e:[e]}const Ig=["title","titleTemplate","script","style","noscript"],Ar=["base","meta","link","style","script","noscript"],xg=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],Mg=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],eu=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],Dg=typeof window<"u";function $o(e){let t=9;for(let n=0;n>>9)+65536).toString(16).substring(1,8).toLowerCase()}function wl(e){return e._h||$o(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function tu(e,t){const{props:n,tag:r}=e;if(Mg.includes(r))return r;if(r==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const s=["id"];r==="meta"&&s.push("name","property","http-equiv");for(const o of s)if(typeof n[o]<"u"){const i=String(n[o]);return`${r}:${o}:${i}`}return!1}function Ol(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function Fg(e,t,n){const r={tag:e,props:await nu(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return eu.forEach(s=>{const o=typeof r.props[s]<"u"?r.props[s]:n[s];typeof o<"u"&&((!["innerHTML","textContent","children"].includes(s)||Ig.includes(r.tag))&&(r[s==="children"?"innerHTML":s]=o),delete r.props[s])}),r.props.body&&(r.tagPosition="bodyClose",delete r.props.body),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function Hg(e,t){var r;const n=e==="class"?" ":";";return typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=String(Array.isArray(t)?t.join(n):t))==null?void 0:r.split(n).filter(s=>s.trim()).filter(Boolean).join(n)}async function nu(e,t){for(const n of Object.keys(e)){if(["class","style"].includes(n)){e[n]=Hg(n,e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!eu.includes(n)){const r=String(e[n]),s=n.startsWith("data-");r==="true"||r===""?e[n]=s?"true":!0:e[n]||(s&&r==="false"?e[n]="false":delete e[n])}}return e}const $g=10;async function Ug(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,r])=>typeof r<"u"&&xg.includes(n)).forEach(([n,r])=>{const s=kg(r);t.push(...s.map(o=>Fg(n,o,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,r)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<<$g)+r,n))}const Cl={base:-10,title:10},Al={critical:-80,high:-10,low:20};function Xr(e){let t=100;const n=e.tagPriority;return typeof n=="number"?n:(e.tag==="meta"?(e.props["http-equiv"]==="content-security-policy"&&(t=-30),e.props.charset&&(t=-20),e.props.name==="viewport"&&(t=-15)):e.tag==="link"&&e.props.rel==="preconnect"?t=20:e.tag in Cl&&(t=Cl[e.tag]),typeof n=="string"&&n in Al?t+Al[n]:t)}const jg=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],Pl=["onload","onerror","onabort","onprogress","onloadstart"],xt="%separator";function Pr(e,t,n){if(typeof e!="string"||!e.includes("%"))return e;function r(i){let a;return["s","pageTitle"].includes(i)?a=t.pageTitle:i.includes(".")?a=i.split(".").reduce((l,u)=>l&&l[u]||void 0,t):a=t[i],typeof a<"u"?(a||"").replace(/"/g,'\\"'):!1}let s=e;try{s=decodeURI(e)}catch{}return(s.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const a=r(i.slice(1));typeof a=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(l,u)=>`${a}${u}`).trim())}),e.includes(xt)&&(e.endsWith(xt)&&(e=e.slice(0,-xt.length).trim()),e.startsWith(xt)&&(e=e.slice(xt.length).trim()),e=e.replace(new RegExp(`\\${xt}\\s*\\${xt}`,"g"),xt),e=Pr(e,{separator:n},n)),e}async function Vg(e,t={}){var f;const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!r.shouldRender)return;const s=(await e.resolveTags()).map(c=>({tag:c,id:Ar.includes(c.tag)?wl(c):c.tag,shouldRender:!0}));let o=e._dom;if(!o){o={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const c of["body","head"]){const d=(f=n[c])==null?void 0:f.children,h=[];for(const E of[...d].filter(y=>Ar.includes(y.tagName.toLowerCase()))){const y={tag:E.tagName.toLowerCase(),props:await nu(E.getAttributeNames().reduce((P,p)=>({...P,[p]:E.getAttribute(p)}),{})),innerHTML:E.innerHTML};let O=1,w=tu(y);for(;w&&h.find(P=>P._d===w);)w=`${w}:${O++}`;y._d=w||void 0,h.push(y),o.elMap[E.getAttribute("data-hid")||wl(y)]=E}}}o.pendingSideEffects={...o.sideEffects||{}},o.sideEffects={};function i(c,d,h){const E=`${c}:${d}`;o.sideEffects[E]=h,delete o.pendingSideEffects[E]}function a({id:c,$el:d,tag:h}){const E=h.tag.endsWith("Attrs");o.elMap[c]=d,E||(["textContent","innerHTML"].forEach(y=>{h[y]&&h[y]!==d[y]&&(d[y]=h[y])}),i(c,"el",()=>{var y;(y=o.elMap[c])==null||y.remove(),delete o.elMap[c]}));for(const[y,O]of Object.entries(h._eventHandlers||{}))d.getAttribute(`data-${y}`)!==""&&((h.tag==="bodyAttrs"?n.defaultView:d).addEventListener(y.replace("on",""),O.bind(d)),d.setAttribute(`data-${y}`,""));Object.entries(h.props).forEach(([y,O])=>{const w=`attr:${y}`;if(y==="class")for(const P of(O||"").split(" ").filter(Boolean))E&&i(c,`${w}:${P}`,()=>d.classList.remove(P)),!d.classList.contains(P)&&d.classList.add(P);else if(y==="style")for(const P of(O||"").split(";").filter(Boolean)){const[p,...g]=P.split(":").map(T=>T.trim());i(c,`${w}:${p}`,()=>{d.style.removeProperty(p)}),d.style.setProperty(p,g.join(":"))}else d.getAttribute(y)!==O&&d.setAttribute(y,O===!0?"":String(O)),E&&i(c,w,()=>d.removeAttribute(y))})}const l=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const c of s){const{tag:d,shouldRender:h,id:E}=c;if(h){if(d.tag==="title"){n.title=d.textContent;continue}c.$el=c.$el||o.elMap[E],c.$el?a(c):Ar.includes(d.tag)&&l.push(c)}}for(const c of l){const d=c.tag.tagPosition||"head";c.$el=n.createElement(c.tag.tag),a(c),u[d]=u[d]||n.createDocumentFragment(),u[d].appendChild(c.$el)}for(const c of s)await e.hooks.callHook("dom:renderTag",c,n,i);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose),Object.values(o.pendingSideEffects).forEach(c=>c()),e._dom=o,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:s})}async function Wg(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(r=>n(async()=>{await Vg(e,t),delete e._domUpdatePromise,r()}))}function Kg(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(o){Wg(o,e)}}}}}const Bg=["templateParams","htmlAttrs","bodyAttrs"],Gg={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(r=>{e.props[r]&&(e.key=e.props[r],delete e.props[r])});const n=tu(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(r=>{const s=(r.key?`${r.tag}:${r.key}`:r._d)||r._p,o=t[s];if(o){let a=r==null?void 0:r.tagDuplicateStrategy;if(!a&&Bg.includes(r.tag)&&(a="merge"),a==="merge"){const l=o.props;["class","style"].forEach(u=>{l[u]&&(r.props[u]?(u==="style"&&!l[u].endsWith(";")&&(l[u]+=";"),r.props[u]=`${l[u]} ${r.props[u]}`):r.props[u]=l[u])}),t[s].props={...l,...r.props};return}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);return}else if(Xr(r)>Xr(o))return}const i=Object.keys(r.props).length+(r.innerHTML?1:0)+(r.textContent?1:0);if(Ar.includes(r.tag)&&i===0){delete t[s];return}t[s]=r});const n=[];Object.values(t).forEach(r=>{const s=r._duped;delete r._duped,n.push(r),s&&n.push(...s)}),e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},zg={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},Yg=["script","link","bodyAttrs"],Xg=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags.filter(r=>Yg.includes(r.tag)))Object.entries(n.props).forEach(([r,s])=>{r.startsWith("on")&&typeof s=="function"&&(e.ssr&&Pl.includes(r)?n.props[r]=`this.dataset.${r}fired = true`:delete n.props[r],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[r]=s)}),e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||$o(n.props.src||n.props.href))},"dom:renderTag":function({$el:t,tag:n}){var r,s;for(const o of Object.keys((t==null?void 0:t.dataset)||{}).filter(i=>Pl.some(a=>`${a}fired`===i))){const i=o.replace("fired","");(s=(r=n._eventHandlers)==null?void 0:r[i])==null||s.call(t,new Event(i.replace("on","")))}}}}),qg=["link","style","script","noscript"],Jg={hooks:{"tag:normalise":({tag:e})=>{e.key&&qg.includes(e.tag)&&(e.props["data-hid"]=e._h=$o(e.key))}}},Qg={hooks:{"tags:resolve":e=>{const t=n=>{var r;return(r=e.tags.find(s=>s._d===n))==null?void 0:r._p};for(const{prefix:n,offset:r}of jg)for(const s of e.tags.filter(o=>typeof o.tagPriority=="string"&&o.tagPriority.startsWith(n))){const o=t(s.tagPriority.replace(n,""));typeof o<"u"&&(s._p=o+r)}e.tags.sort((n,r)=>n._p-r._p).sort((n,r)=>Xr(n)-Xr(r))}}},Zg={meta:"content",link:"href",htmlAttrs:"lang"},e_=e=>({hooks:{"tags:resolve":t=>{var a;const{tags:n}=t,r=(a=n.find(l=>l.tag==="title"))==null?void 0:a.textContent,s=n.findIndex(l=>l.tag==="templateParams"),o=s!==-1?n[s].props:{},i=o.separator||"|";delete o.separator,o.pageTitle=Pr(o.pageTitle||r||"",o,i);for(const l of n.filter(u=>u.processTemplateParams!==!1)){const u=Zg[l.tag];u&&typeof l.props[u]=="string"?l.props[u]=Pr(l.props[u],o,i):(l.processTemplateParams===!0||["titleTemplate","title"].includes(l.tag))&&["innerHTML","textContent"].forEach(f=>{typeof l[f]=="string"&&(l[f]=Pr(l[f],o,i))})}e._templateParams=o,e._separator=i,t.tags=n.filter(l=>l.tag!=="templateParams")}}}),t_={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(s=>s.tag==="titleTemplate");const r=t.findIndex(s=>s.tag==="title");if(r!==-1&&n!==-1){const s=Ol(t[n].textContent,t[r].textContent);s!==null?t[r].textContent=s||t[r].textContent:delete t[r]}else if(n!==-1){const s=Ol(t[n].textContent);s!==null&&(t[n].textContent=s,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},n_={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{a.dirty=!0,t.callHook("entries:updated",a)};let s=0,o=[];const i=[],a={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(l){const u=typeof l=="function"?l(a):l;(!u.key||!i.some(f=>f.key===u.key))&&(i.push(u),Ll(u.mode,n)&&t.addHooks(u.hooks||{}))},push(l,u){u==null||delete u.head;const f={_i:s++,input:l,...u};return Ll(f.mode,n)&&(o.push(f),r()),{dispose(){o=o.filter(c=>c._i!==f._i),t.callHook("entries:updated",a),r()},patch(c){o=o.map(d=>(d._i===f._i&&(d.input=f.input=c),d)),r()}}},async resolveTags(){const l={tags:[],entries:[...o]};await t.callHook("entries:resolve",l);for(const u of l.entries){const f=u.resolvedInput||u.input;if(u.resolvedInput=await(u.transform?u.transform(f):f),u.resolvedInput)for(const c of await Ug(u)){const d={tag:c,entry:u,resolvedOptions:a.resolvedOptions};await t.callHook("tag:normalise",d),l.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",l),await t.callHook("tags:resolve",l),await t.callHook("tags:afterResolve",l),l.tags},ssr:n};return[Gg,zg,Xg,Jg,Qg,e_,t_,n_,...(e==null?void 0:e.plugins)||[]].forEach(l=>a.use(l)),a.hooks.callHook("init",a),a}const o_=fc.startsWith("3");function i_(e){return typeof e=="function"?e():Je(e)}function oo(e,t=""){if(e instanceof Promise)return e;const n=i_(e);return!e||!n?n:Array.isArray(n)?n.map(r=>oo(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,Je(s)]:[r,oo(s,r)])):n}const l_={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=oo(t.input)}}},a_="usehead";function c_(e){return{install(n){o_&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(a_,e))}}.install}function u_(e={}){e.domDelayFn=e.domDelayFn||(n=>Nn(()=>setTimeout(()=>n(),0)));const t=r_(e);return t.use(l_),t.install=c_(t),t}function f_(e){try{return JSON.parse(e||"{}")}catch(t){return console.error("[SSG] On state deserialization -",t,e),{}}}function d_(e){return document.readyState==="loading"?new Promise(t=>{document.addEventListener("DOMContentLoaded",()=>t(e))}):Promise.resolve(e)}const p_=Bt({setup(e,{slots:t}){const n=se(!1);return Rn(()=>n.value=!0),()=>n.value?t.default&&t.default({}):t.placeholder&&t.placeholder({})}});function h_(e,t,n,r={}){const{transformState:s,registerComponents:o=!0,useHead:i=!0,rootContainer:a="#app"}=r,l=typeof window<"u";async function u(f=!1,c){const d=f?eh(e):th(e);let h;i&&(h=u_(),d.use(h));const E=Sg({history:f?Qm(t.base):Zm(t.base),...t}),{routes:y}=t;o&&d.component("ClientOnly",p_);const O=[],p={app:d,head:h,isClient:l,router:E,routes:y,onSSRAppRendered:f?()=>{}:N=>O.push(N),triggerOnSSRAppRendered:()=>Promise.all(O.map(N=>N())),initialState:{},transformState:s,routePath:c};f&&(await d_(),p.initialState=(s==null?void 0:s(window.__INITIAL_STATE__||{}))||f_(window.__INITIAL_STATE__)),await(n==null?void 0:n(p)),d.use(E);let g,T=!0;if(E.beforeEach((N,M,I)=>{(T||g&&g===N.path)&&(T=!1,g=N.path,N.meta.state=p.initialState),I()}),!f){const N=p.routePath??"/";E.push(N),await E.isReady(),p.initialState=E.currentRoute.value.meta.state||{}}const C=p.initialState;return{...p,initialState:C}}return l&&(async()=>{const{app:f,router:c}=await u(!0);await c.isReady(),f.mount(a,!0)})(),u}const m_=e=>{const t={};Object.entries(Object.assign({"/src/layouts/centered.vue":()=>nn(()=>import("./centered-LQcEJ4f_.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),"/src/layouts/default.vue":()=>nn(()=>import("./default-T5VnCwtH.js"),__vite__mapDeps([1,2,3,4,5,6]))})).forEach(([s,o])=>{let i=s.replace("/src/layouts/","").replace(".vue","");t[i]=o});function r(s,o=!0){return s.map(i=>{var a,l,u,f,c,d;if(((a=i.children)==null?void 0:a.length)>0&&(i.children=r(i.children,!1)),o){if(!i.component&&((l=i.children)==null?void 0:l.find(E=>{var y;return(E.path===""||E.path==="/")&&((y=E.meta)==null?void 0:y.isLayout)})))return i;if(((u=i.meta)==null?void 0:u.layout)!==!1)return{path:i.path,component:t[((f=i.meta)==null?void 0:f.layout)||"default"],children:i.path==="/"?[i]:[{...i,path:""}],meta:{isLayout:!0}}}return(c=i.meta)!=null&&c.layout?{path:i.path,component:t[(d=i.meta)==null?void 0:d.layout],children:[{...i,path:""}],meta:{isLayout:!0}}:i})}return r(e)};let g_;function __(){return g_}function b_(e){return typeof e=="function"?e():Je(e)}function io(e,t=""){if(e instanceof Promise)return e;const n=b_(e);return!e||!n?n:Array.isArray(n)?n.map(r=>io(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,Je(s)]:[r,io(s,r)])):n}const y_="usehead",Nl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Rl="__unhead_injection_handler__";function v_(){if(Rl in Nl)return Nl[Rl]();const e=et(y_);return e||__()}function ru(e,t={}){const n=t.head||v_();if(n)return n.ssr?n.push(e,t):E_(n,e,t)}function E_(e,t,n={}){const r=se(!1),s=se({});tc(()=>{s.value=r.value?{}:io(t)});const o=e.push(s.value,n);return Ae(s,a=>{o.patch(a)}),kn()&&(Da(()=>{o.dispose()}),xa(()=>{r.value=!0}),Ia(()=>{r.value=!1})),o}const Lr="https://www.frsource.org",yn="/fast-angle/",Uo=tm({attribute:"data-theme",valueLight:"light"}),ob=Bh(Uo),T_=oe(()=>`${yn}${Uo.value?"favicon-dark.svg":"favicon.svg"}`),S_=Bt({__name:"App",setup(e){const{t,locale:n,availableLocales:r}=ar(),s=Og(),o=Oc(300);function i(){const l=document.querySelector("meta[name=viewport]");l==null||l.setAttribute("content",`width=device-width, height=${window.innerHeight}, initial-scale=1.0`)}const a=()=>o(i,{});return ru({title:"Fast angle",htmlAttrs:{lang:n},meta:[{name:"description",content:oe(()=>t("main.description"))},{name:"twitter:card",content:"summary"},{name:"twitter:site",content:"@FRSOURCE1"},{name:"og:url",content:`${Lr}${yn}`},{name:"og:title",content:"Fast Angle"},{name:"og:description",content:oe(()=>t("main.description"))},{name:"og:image",content:`${Lr}${yn}fast-angle-og-image.jpg`},{name:"theme-color",content:oe(()=>(Uo.value,"#0189e9"))}],link:[{rel:"icon",type:"image/svg+xml",href:T_},...r.map(l=>({rel:"alternate",hreflang:l,href:`${Lr}${yn}${s.resolve({name:`lang-${l}`}).fullPath.substring(1)}`}))]}),Rn(()=>{window.addEventListener("resize",a,{passive:!0}),i()}),(l,u)=>{const f=Kd("RouterView");return Qn(),Wr(f)}}}),w_=["textContent"],O_=["textContent"],su=Bt({__name:"index",setup(e){const{t}=ar();return ru({meta:[{"http-equiv":"status",content:"302"},{"http-equiv":"refresh",content:`0;${Lr}${yn}${eo.value}`}]}),(n,r)=>(Qn(),bp(Me,null,[Kr("h1",{textContent:Hs(Je(t)("lang_redirect.title"))},null,8,w_),Kr("p",{textContent:Hs(Je(t)("lang_redirect.description"))},null,8,O_)],64))}}),kl={};typeof kl=="function"&&kl(su);const Il=()=>nn(()=>import("./_...all_-Co0Kp9As.js"),__vite__mapDeps([8,5])),Rs=()=>nn(()=>import("./index-D8cNfCUs.js"),__vite__mapDeps([9,2,3,4,10])),ks=()=>nn(()=>import("./privacy-policy-BHhLFajV.js"),__vite__mapDeps([11,3,12])),Is=()=>nn(()=>import("./terms-B1EPTX13.js"),__vite__mapDeps([13,3,14])),C_=[{name:"index",path:"/",component:su,props:!0,meta:{layout:"centered"}},{name:"404",path:"/404",component:Il,props:!0,meta:{layout:"centered"}},{name:"all",path:"/:all(.*)*",component:Il,props:!0,meta:{layout:"centered"}},{name:"lang-de",path:"/de",component:Rs,props:!0},{name:"lang-en",path:"/en",component:Rs,props:!0},{name:"lang-pl",path:"/pl",component:Rs,props:!0},{name:"lang-de-privacy-policy",path:"/de/privacy-policy",component:ks,props:!0,meta:{layout:"centered"}},{name:"lang-en-privacy-policy",path:"/en/privacy-policy",component:ks,props:!0,meta:{layout:"centered"}},{name:"lang-pl-privacy-policy",path:"/pl/privacy-policy",component:ks,props:!0,meta:{layout:"centered"}},{name:"lang-de-terms",path:"/de/terms",component:Is,props:!0,meta:{layout:"centered"}},{name:"lang-en-terms",path:"/en/terms",component:Is,props:!0,meta:{layout:"centered"}},{name:"lang-pl-terms",path:"/pl/terms",component:Is,props:!0,meta:{layout:"centered"}}],A_=m_(C_);h_(S_,{routes:A_,base:yn},e=>{Object.values(Object.assign({"./modules/i18n.ts":gm,"./modules/pwa.ts":vm,"./modules/virtual-keyboard.ts":Sm})).forEach(t=>{var n;return(n=t.install)==null?void 0:n.call(t,e)})});export{Nn as $,Ae as A,rb as B,Og as C,I_ as D,M_ as E,Me as F,sb as G,kl as H,se as I,zf as J,us as K,Ep as L,U_ as M,z_ as N,G_ as O,am as P,P_ as Q,F_ as R,J_ as S,N_ as T,eb as U,Y_ as V,X_ as W,kn as X,Rn as Y,Po as Z,nn as _,Kr as a,j_ as a0,Ye as a1,Z_ as a2,Q_ as a3,W_ as a4,B_ as a5,tb as a6,yd as a7,V_ as a8,K_ as a9,R_ as aa,_o as ab,nb as ac,D_ as ad,q_ as ae,ru as af,x_ as ag,Ie as b,Wr as c,Bt as d,bp as e,ac as f,Je as g,Lr as h,oe as i,yn as j,T_ as k,eo as l,Ea as m,bo as n,Qn as o,$_ as p,L_ as q,Kd as r,we as s,Hs as t,ar as u,H_ as v,Ad as w,k_ as x,ob as y,Uo as z};
+ */const dn=typeof document<"u";function $c(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function wm(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&$c(e.default)}const fe=Object.assign;function Cs(e,t){const n={};for(const r in t){const s=t[r];n[r]=pt(s)?s.map(e):e(s)}return n}const zn=()=>{},pt=Array.isArray,Uc=/#/g,Om=/&/g,Cm=/\//g,Am=/=/g,Pm=/\?/g,jc=/\+/g,Lm=/%5B/g,Nm=/%5D/g,Vc=/%5E/g,Rm=/%60/g,Wc=/%7B/g,km=/%7C/g,Kc=/%7D/g,Im=/%20/g;function Fo(e){return encodeURI(""+e).replace(km,"|").replace(Lm,"[").replace(Nm,"]")}function xm(e){return Fo(e).replace(Wc,"{").replace(Kc,"}").replace(Vc,"^")}function to(e){return Fo(e).replace(jc,"%2B").replace(Im,"+").replace(Uc,"%23").replace(Om,"%26").replace(Rm,"`").replace(Wc,"{").replace(Kc,"}").replace(Vc,"^")}function Mm(e){return to(e).replace(Am,"%3D")}function Dm(e){return Fo(e).replace(Uc,"%23").replace(Pm,"%3F")}function Fm(e){return e==null?"":Dm(e).replace(Cm,"%2F")}function rr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Hm=/\/$/,$m=e=>e.replace(Hm,"");function As(e,t,n="/"){let r,s={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,a>-1?a:t.length),s=e(o)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Wm(r??t,n),{fullPath:r+(o&&"?")+o+i,path:r,query:s,hash:rr(i)}}function Um(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ll(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function jm(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&On(t.matched[r],n.matched[s])&&Bc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function On(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Bc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Vm(e[n],t[n]))return!1;return!0}function Vm(e,t){return pt(e)?al(e,t):pt(t)?al(t,e):e===t}function al(e,t){return pt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Wm(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),s=r[r.length-1];(s===".."||s===".")&&r.push("");let o=n.length-1,i,a;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(i).join("/")}const It={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Cn;(function(e){e.pop="pop",e.push="push"})(Cn||(Cn={}));var en;(function(e){e.back="back",e.forward="forward",e.unknown=""})(en||(en={}));const Ps="";function Gc(e){if(!e)if(dn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),$m(e)}const Km=/^[^#]+#/;function zc(e,t){return e.replace(Km,"#")+t}function Bm(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const ds=()=>({left:window.scrollX,top:window.scrollY});function Gm(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),s=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=Bm(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function cl(e,t){return(history.state?history.state.position-t:-1)+e}const no=new Map;function zm(e,t){no.set(e,t)}function Ym(e){const t=no.get(e);return no.delete(e),t}let Xm=()=>location.protocol+"//"+location.host;function Yc(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(a);return l[0]!=="/"&&(l="/"+l),ll(l,"")}return ll(n,e)+r+s}function qm(e,t,n,r){let s=[],o=[],i=null;const a=({state:d})=>{const h=Yc(e,location),E=n.value,y=t.value;let O=0;if(d){if(n.value=h,t.value=d,i&&i===E){i=null;return}O=y?d.position-y.position:0}else r(h);s.forEach(w=>{w(n.value,E,{delta:O,type:Cn.pop,direction:O?O>0?en.forward:en.back:en.unknown})})};function l(){i=n.value}function u(d){s.push(d);const h=()=>{const E=s.indexOf(d);E>-1&&s.splice(E,1)};return o.push(h),h}function f(){const{history:d}=window;d.state&&d.replaceState(fe({},d.state,{scroll:ds()}),"")}function c(){for(const d of o)d();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:l,listen:u,destroy:c}}function ul(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?ds():null}}function Jm(e){const{history:t,location:n}=window,r={value:Yc(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,f){const c=e.indexOf("#"),d=c>-1?(n.host&&document.querySelector("base")?e:e.slice(c))+l:Xm()+e+l;try{t[f?"replaceState":"pushState"](u,"",d),s.value=u}catch(h){console.error(h),n[f?"replace":"assign"](d)}}function i(l,u){const f=fe({},t.state,ul(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,f,!0),r.value=l}function a(l,u){const f=fe({},s.value,t.state,{forward:l,scroll:ds()});o(f.current,f,!0);const c=fe({},ul(r.value,l,null),{position:f.position+1},u);o(l,c,!1),r.value=l}return{location:r,state:s,push:a,replace:i}}function Qm(e){e=Gc(e);const t=Jm(e),n=qm(e,t.state,t.location,t.replace);function r(o,i=!0){i||n.pauseListeners(),history.go(o)}const s=fe({location:"",base:e,go:r,createHref:zc.bind(null,e)},t,n);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function Zm(e=""){let t=[],n=[Ps],r=0;e=Gc(e);function s(a){r++,r!==n.length&&n.splice(r),n.push(a)}function o(a,l,{direction:u,delta:f}){const c={direction:u,delta:f,type:Cn.pop};for(const d of t)d(a,l,c)}const i={location:Ps,state:{},base:e,createHref:zc.bind(null,e),replace(a){n.splice(r--,1),s(a)},push(a,l){s(a)},listen(a){return t.push(a),()=>{const l=t.indexOf(a);l>-1&&t.splice(l,1)}},destroy(){t=[],n=[Ps],r=0},go(a,l=!0){const u=this.location,f=a<0?en.back:en.forward;r=Math.max(0,Math.min(r+a,n.length-1)),l&&o(this.location,u,{direction:f,delta:a})}};return Object.defineProperty(i,"location",{enumerable:!0,get:()=>n[r]}),i}function eg(e){return typeof e=="string"||e&&typeof e=="object"}function Xc(e){return typeof e=="string"||typeof e=="symbol"}const qc=Symbol("");var fl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(fl||(fl={}));function An(e,t){return fe(new Error,{type:e,[qc]:!0},t)}function wt(e,t){return e instanceof Error&&qc in e&&(t==null||!!(e.type&t))}const dl="[^/]+?",tg={sensitive:!1,strict:!1,start:!0,end:!0},ng=/[.+*?^${}()[\]/\\]/g;function rg(e,t){const n=fe({},tg,t),r=[];let s=n.start?"^":"";const o=[];for(const u of e){const f=u.length?[]:[90];n.strict&&!u.length&&(s+="/");for(let c=0;ct.length?t.length===1&&t[0]===80?1:-1:0}function Jc(e,t){let n=0;const r=e.score,s=t.score;for(;n0&&t[t.length-1]<0}const og={type:0,value:""},ig=/[a-zA-Z0-9_]/;function lg(e){if(!e)return[[]];if(e==="/")return[[og]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${u}": ${h}`)}let n=0,r=n;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,l,u="",f="";function c(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:f,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=l}for(;a{i(p)}:zn}function i(c){if(Xc(c)){const d=r.get(c);d&&(r.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){const d=dg(c,n);n.splice(d,0,c),c.record.name&&!gl(c)&&r.set(c.record.name,c)}function u(c,d){let h,E={},y,O;if("name"in c&&c.name){if(h=r.get(c.name),!h)throw An(1,{location:c});O=h.record.name,E=fe(hl(d.params,h.keys.filter(p=>!p.optional).concat(h.parent?h.parent.keys.filter(p=>p.optional):[]).map(p=>p.name)),c.params&&hl(c.params,h.keys.map(p=>p.name))),y=h.stringify(E)}else if(c.path!=null)y=c.path,h=n.find(p=>p.re.test(y)),h&&(E=h.parse(y),O=h.record.name);else{if(h=d.name?r.get(d.name):n.find(p=>p.re.test(d.path)),!h)throw An(1,{location:c,currentLocation:d});O=h.record.name,E=fe({},d.params,c.params),y=h.stringify(E)}const w=[];let P=h;for(;P;)w.unshift(P.record),P=P.parent;return{name:O,path:y,params:E,matched:w,meta:fg(w)}}e.forEach(c=>o(c));function f(){n.length=0,r.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:f,getRoutes:a,getRecordMatcher:s}}function hl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ml(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:ug(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function ug(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function gl(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function fg(e){return e.reduce((t,n)=>fe(t,n.meta),{})}function _l(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function dg(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;Jc(e,t[o])<0?r=o:n=o+1}const s=pg(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function pg(e){let t=e;for(;t=t.parent;)if(Qc(t)&&Jc(e,t)===0)return t}function Qc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function hg(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&to(o)):[r&&to(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function mg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=pt(r)?r.map(s=>s==null?null:""+s):r==null?r:""+r)}return t}const gg=Symbol(""),yl=Symbol(""),ps=Symbol(""),Ho=Symbol(""),ro=Symbol("");function Hn(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Ft(e,t,n,r,s,o=i=>i()){const i=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((a,l)=>{const u=d=>{d===!1?l(An(4,{from:n,to:t})):d instanceof Error?l(d):eg(d)?l(An(2,{from:t,to:d})):(i&&r.enterCallbacks[s]===i&&typeof d=="function"&&i.push(d),a())},f=o(()=>e.call(r&&r.instances[s],t,n,u));let c=Promise.resolve(f);e.length<3&&(c=c.then(u)),c.catch(d=>l(d))})}function Ls(e,t,n,r,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if($c(l)){const f=(l.__vccOpts||l)[t];f&&o.push(Ft(f,n,r,i,a,s))}else{let u=l();o.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const c=wm(f)?f.default:f;i.mods[a]=f,i.components[a]=c;const h=(c.__vccOpts||c)[t];return h&&Ft(h,n,r,i,a,s)()}))}}return o}function vl(e){const t=et(ps),n=et(Ho),r=oe(()=>{const l=Je(e.to);return t.resolve(l)}),s=oe(()=>{const{matched:l}=r.value,{length:u}=l,f=l[u-1],c=n.matched;if(!f||!c.length)return-1;const d=c.findIndex(On.bind(null,f));if(d>-1)return d;const h=El(l[u-2]);return u>1&&El(f)===h&&c[c.length-1].path!==h?c.findIndex(On.bind(null,l[u-2])):d}),o=oe(()=>s.value>-1&&vg(n.params,r.value.params)),i=oe(()=>s.value>-1&&s.value===n.matched.length-1&&Bc(n.params,r.value.params));function a(l={}){return yg(l)?t[Je(e.replace)?"replace":"push"](Je(e.to)).catch(zn):Promise.resolve()}return{route:r,href:oe(()=>r.value.href),isActive:o,isExactActive:i,navigate:a}}const _g=Bt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:vl,setup(e,{slots:t}){const n=Tn(vl(e)),{options:r}=et(ps),s=oe(()=>({[Tl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Tl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:us("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),bg=_g;function yg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function vg(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r=="string"){if(r!==s)return!1}else if(!pt(s)||s.length!==r.length||r.some((o,i)=>o!==s[i]))return!1}return!0}function El(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Tl=(e,t,n)=>e??t??n,Eg=Bt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=et(ro),s=oe(()=>e.route||r.value),o=et(yl,0),i=oe(()=>{let u=Je(o);const{matched:f}=s.value;let c;for(;(c=f[u])&&!c.components;)u++;return u}),a=oe(()=>s.value.matched[i.value]);wr(yl,oe(()=>i.value+1)),wr(gg,a),wr(ro,s);const l=se();return Ae(()=>[l.value,a.value,e.name],([u,f,c],[d,h,E])=>{f&&(f.instances[c]=u,h&&h!==f&&u&&u===d&&(f.leaveGuards.size||(f.leaveGuards=h.leaveGuards),f.updateGuards.size||(f.updateGuards=h.updateGuards))),u&&f&&(!h||!On(f,h)||!d)&&(f.enterCallbacks[c]||[]).forEach(y=>y(u))},{flush:"post"}),()=>{const u=s.value,f=e.name,c=a.value,d=c&&c.components[f];if(!d)return Sl(n.default,{Component:d,route:u});const h=c.props[f],E=h?h===!0?u.params:typeof h=="function"?h(u):h:null,O=us(d,fe({},E,t,{onVnodeUnmounted:w=>{w.component.isUnmounted&&(c.instances[f]=null)},ref:l}));return Sl(n.default,{Component:O,route:u})||O}}});function Sl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Tg=Eg;function Sg(e){const t=cg(e.routes,e),n=e.parseQuery||hg,r=e.stringifyQuery||bl,s=e.history,o=Hn(),i=Hn(),a=Hn(),l=Sn(It);let u=It;dn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Cs.bind(null,x=>""+x),c=Cs.bind(null,Fm),d=Cs.bind(null,rr);function h(x,B){let W,z;return Xc(x)?(W=t.getRecordMatcher(x),z=B):z=x,t.addRoute(z,W)}function E(x){const B=t.getRecordMatcher(x);B&&t.removeRoute(B)}function y(){return t.getRoutes().map(x=>x.record)}function O(x){return!!t.getRecordMatcher(x)}function w(x,B){if(B=fe({},B||l.value),typeof x=="string"){const v=As(n,x,B.path),L=t.resolve({path:v.path},B),D=s.createHref(v.fullPath);return fe(v,L,{params:d(L.params),hash:rr(v.hash),redirectedFrom:void 0,href:D})}let W;if(x.path!=null)W=fe({},x,{path:As(n,x.path,B.path).path});else{const v=fe({},x.params);for(const L in v)v[L]==null&&delete v[L];W=fe({},x,{params:c(v)}),B.params=c(B.params)}const z=t.resolve(W,B),ie=x.hash||"";z.params=f(d(z.params));const de=Um(r,fe({},x,{hash:xm(ie),path:z.path})),b=s.createHref(de);return fe({fullPath:de,hash:ie,query:r===bl?mg(x.query):x.query||{}},z,{redirectedFrom:void 0,href:b})}function P(x){return typeof x=="string"?As(n,x,l.value.path):fe({},x)}function p(x,B){if(u!==x)return An(8,{from:B,to:x})}function g(x){return N(x)}function T(x){return g(fe(P(x),{replace:!0}))}function C(x){const B=x.matched[x.matched.length-1];if(B&&B.redirect){const{redirect:W}=B;let z=typeof W=="function"?W(x):W;return typeof z=="string"&&(z=z.includes("?")||z.includes("#")?z=P(z):{path:z},z.params={}),fe({query:x.query,hash:x.hash,params:z.path!=null?{}:x.params},z)}}function N(x,B){const W=u=w(x),z=l.value,ie=x.state,de=x.force,b=x.replace===!0,v=C(W);if(v)return N(fe(P(v),{state:typeof v=="object"?fe({},ie,v.state):ie,force:de,replace:b}),B||W);const L=W;L.redirectedFrom=B;let D;return!de&&jm(r,z,W)&&(D=An(16,{to:L,from:z}),Oe(z,z,!0,!1)),(D?Promise.resolve(D):H(L,z)).catch(k=>wt(k)?wt(k,2)?k:tt(k):Y(k,L,z)).then(k=>{if(k){if(wt(k,2))return N(fe({replace:b},P(k.to),{state:typeof k.to=="object"?fe({},ie,k.to.state):ie,force:de}),B||L)}else k=K(L,z,!0,b,ie);return G(L,z,k),k})}function M(x,B){const W=p(x,B);return W?Promise.reject(W):Promise.resolve()}function I(x){const B=at.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(x):x()}function H(x,B){let W;const[z,ie,de]=wg(x,B);W=Ls(z.reverse(),"beforeRouteLeave",x,B);for(const v of z)v.leaveGuards.forEach(L=>{W.push(Ft(L,x,B))});const b=M.bind(null,x,B);return W.push(b),Fe(W).then(()=>{W=[];for(const v of o.list())W.push(Ft(v,x,B));return W.push(b),Fe(W)}).then(()=>{W=Ls(ie,"beforeRouteUpdate",x,B);for(const v of ie)v.updateGuards.forEach(L=>{W.push(Ft(L,x,B))});return W.push(b),Fe(W)}).then(()=>{W=[];for(const v of de)if(v.beforeEnter)if(pt(v.beforeEnter))for(const L of v.beforeEnter)W.push(Ft(L,x,B));else W.push(Ft(v.beforeEnter,x,B));return W.push(b),Fe(W)}).then(()=>(x.matched.forEach(v=>v.enterCallbacks={}),W=Ls(de,"beforeRouteEnter",x,B,I),W.push(b),Fe(W))).then(()=>{W=[];for(const v of i.list())W.push(Ft(v,x,B));return W.push(b),Fe(W)}).catch(v=>wt(v,8)?v:Promise.reject(v))}function G(x,B,W){a.list().forEach(z=>I(()=>z(x,B,W)))}function K(x,B,W,z,ie){const de=p(x,B);if(de)return de;const b=B===It,v=dn?history.state:{};W&&(z||b?s.replace(x.fullPath,fe({scroll:b&&v&&v.scroll},ie)):s.push(x.fullPath,ie)),l.value=x,Oe(x,B,W,b),tt()}let Z;function Le(){Z||(Z=s.listen((x,B,W)=>{if(!Rt.listening)return;const z=w(x),ie=C(z);if(ie){N(fe(ie,{replace:!0}),z).catch(zn);return}u=z;const de=l.value;dn&&zm(cl(de.fullPath,W.delta),ds()),H(z,de).catch(b=>wt(b,12)?b:wt(b,2)?(N(b.to,z).then(v=>{wt(v,20)&&!W.delta&&W.type===Cn.pop&&s.go(-1,!1)}).catch(zn),Promise.reject()):(W.delta&&s.go(-W.delta,!1),Y(b,z,de))).then(b=>{b=b||K(z,de,!1),b&&(W.delta&&!wt(b,8)?s.go(-W.delta,!1):W.type===Cn.pop&&wt(b,20)&&s.go(-1,!1)),G(z,de,b)}).catch(zn)}))}let ye=Hn(),q=Hn(),ne;function Y(x,B,W){tt(x);const z=q.list();return z.length?z.forEach(ie=>ie(x,B,W)):console.error(x),Promise.reject(x)}function _e(){return ne&&l.value!==It?Promise.resolve():new Promise((x,B)=>{ye.add([x,B])})}function tt(x){return ne||(ne=!x,Le(),ye.list().forEach(([B,W])=>x?W(x):B()),ye.reset()),x}function Oe(x,B,W,z){const{scrollBehavior:ie}=e;if(!dn||!ie)return Promise.resolve();const de=!W&&Ym(cl(x.fullPath,0))||(z||!W)&&history.state&&history.state.scroll||null;return Nn().then(()=>ie(x,B,de)).then(b=>b&&Gm(b)).catch(b=>Y(b,x,B))}const Ce=x=>s.go(x);let ht;const at=new Set,Rt={currentRoute:l,listening:!0,addRoute:h,removeRoute:E,clearRoutes:t.clearRoutes,hasRoute:O,getRoutes:y,resolve:w,options:e,push:g,replace:T,go:Ce,back:()=>Ce(-1),forward:()=>Ce(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:q.add,isReady:_e,install(x){const B=this;x.component("RouterLink",bg),x.component("RouterView",Tg),x.config.globalProperties.$router=B,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>Je(l)}),dn&&!ht&&l.value===It&&(ht=!0,g(s.location).catch(ie=>{}));const W={};for(const ie in It)Object.defineProperty(W,ie,{get:()=>l.value[ie],enumerable:!0});x.provide(ps,B),x.provide(Ho,So(W)),x.provide(ro,l);const z=x.unmount;at.add(x),x.unmount=function(){at.delete(x),at.size<1&&(u=It,Z&&Z(),Z=null,l.value=It,ht=!1,ne=!1),z()}}};function Fe(x){return x.reduce((B,W)=>B.then(()=>I(W)),Promise.resolve())}return Rt}function wg(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iOn(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>On(u,l))||s.push(l))}return[n,r,s]}function Og(){return et(ps)}function sb(e){return et(Ho)}function so(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?so(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const Cg={run:e=>e()},Ag=()=>Cg,Zc=typeof console.createTask<"u"?console.createTask:Ag;function Pg(e,t){const n=t.shift(),r=Zc(n);return e.reduce((s,o)=>s.then(()=>r.run(()=>o(...t))),Promise.resolve())}function Lg(e,t){const n=t.shift(),r=Zc(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}function Ns(e,t){for(const n of[...e])n(t)}class Ng{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const s=t;let o;for(;this._deprecatedHooks[t];)o=this._deprecatedHooks[t],t=o.to;if(o&&!r.allowDeprecated){let i=o.message;i||(i=`${s} hook has been deprecated`+(o.to?`, please use ${o.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,s=(...o)=>(typeof r=="function"&&r(),r=void 0,s=void 0,n(...o));return r=this.hook(t,s),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const s of r)this.hook(t,s)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=so(t),r=Object.keys(n).map(s=>this.hook(s,n[s]));return()=>{for(const s of r.splice(0,r.length))s()}}removeHooks(t){const n=so(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(Pg,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(Lg,t,...n)}callHookWith(t,n,...r){const s=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&Ns(this._before,s);const o=t(n in this._hooks?[...this._hooks[n]]:[],r);return o instanceof Promise?o.finally(()=>{this._after&&s&&Ns(this._after,s)}):(this._after&&s&&Ns(this._after,s),o)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function Rg(){return new Ng}function kg(e){return Array.isArray(e)?e:[e]}const Ig=["title","titleTemplate","script","style","noscript"],Ar=["base","meta","link","style","script","noscript"],xg=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],Mg=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],eu=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],Dg=typeof window<"u";function $o(e){let t=9;for(let n=0;n>>9)+65536).toString(16).substring(1,8).toLowerCase()}function wl(e){return e._h||$o(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function tu(e,t){const{props:n,tag:r}=e;if(Mg.includes(r))return r;if(r==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const s=["id"];r==="meta"&&s.push("name","property","http-equiv");for(const o of s)if(typeof n[o]<"u"){const i=String(n[o]);return`${r}:${o}:${i}`}return!1}function Ol(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function Fg(e,t,n){const r={tag:e,props:await nu(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return eu.forEach(s=>{const o=typeof r.props[s]<"u"?r.props[s]:n[s];typeof o<"u"&&((!["innerHTML","textContent","children"].includes(s)||Ig.includes(r.tag))&&(r[s==="children"?"innerHTML":s]=o),delete r.props[s])}),r.props.body&&(r.tagPosition="bodyClose",delete r.props.body),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function Hg(e,t){var r;const n=e==="class"?" ":";";return typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=String(Array.isArray(t)?t.join(n):t))==null?void 0:r.split(n).filter(s=>s.trim()).filter(Boolean).join(n)}async function nu(e,t){for(const n of Object.keys(e)){if(["class","style"].includes(n)){e[n]=Hg(n,e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!eu.includes(n)){const r=String(e[n]),s=n.startsWith("data-");r==="true"||r===""?e[n]=s?"true":!0:e[n]||(s&&r==="false"?e[n]="false":delete e[n])}}return e}const $g=10;async function Ug(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,r])=>typeof r<"u"&&xg.includes(n)).forEach(([n,r])=>{const s=kg(r);t.push(...s.map(o=>Fg(n,o,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,r)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<<$g)+r,n))}const Cl={base:-10,title:10},Al={critical:-80,high:-10,low:20};function Xr(e){let t=100;const n=e.tagPriority;return typeof n=="number"?n:(e.tag==="meta"?(e.props["http-equiv"]==="content-security-policy"&&(t=-30),e.props.charset&&(t=-20),e.props.name==="viewport"&&(t=-15)):e.tag==="link"&&e.props.rel==="preconnect"?t=20:e.tag in Cl&&(t=Cl[e.tag]),typeof n=="string"&&n in Al?t+Al[n]:t)}const jg=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],Pl=["onload","onerror","onabort","onprogress","onloadstart"],xt="%separator";function Pr(e,t,n){if(typeof e!="string"||!e.includes("%"))return e;function r(i){let a;return["s","pageTitle"].includes(i)?a=t.pageTitle:i.includes(".")?a=i.split(".").reduce((l,u)=>l&&l[u]||void 0,t):a=t[i],typeof a<"u"?(a||"").replace(/"/g,'\\"'):!1}let s=e;try{s=decodeURI(e)}catch{}return(s.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const a=r(i.slice(1));typeof a=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(l,u)=>`${a}${u}`).trim())}),e.includes(xt)&&(e.endsWith(xt)&&(e=e.slice(0,-xt.length).trim()),e.startsWith(xt)&&(e=e.slice(xt.length).trim()),e=e.replace(new RegExp(`\\${xt}\\s*\\${xt}`,"g"),xt),e=Pr(e,{separator:n},n)),e}async function Vg(e,t={}){var f;const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!r.shouldRender)return;const s=(await e.resolveTags()).map(c=>({tag:c,id:Ar.includes(c.tag)?wl(c):c.tag,shouldRender:!0}));let o=e._dom;if(!o){o={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const c of["body","head"]){const d=(f=n[c])==null?void 0:f.children,h=[];for(const E of[...d].filter(y=>Ar.includes(y.tagName.toLowerCase()))){const y={tag:E.tagName.toLowerCase(),props:await nu(E.getAttributeNames().reduce((P,p)=>({...P,[p]:E.getAttribute(p)}),{})),innerHTML:E.innerHTML};let O=1,w=tu(y);for(;w&&h.find(P=>P._d===w);)w=`${w}:${O++}`;y._d=w||void 0,h.push(y),o.elMap[E.getAttribute("data-hid")||wl(y)]=E}}}o.pendingSideEffects={...o.sideEffects||{}},o.sideEffects={};function i(c,d,h){const E=`${c}:${d}`;o.sideEffects[E]=h,delete o.pendingSideEffects[E]}function a({id:c,$el:d,tag:h}){const E=h.tag.endsWith("Attrs");o.elMap[c]=d,E||(["textContent","innerHTML"].forEach(y=>{h[y]&&h[y]!==d[y]&&(d[y]=h[y])}),i(c,"el",()=>{var y;(y=o.elMap[c])==null||y.remove(),delete o.elMap[c]}));for(const[y,O]of Object.entries(h._eventHandlers||{}))d.getAttribute(`data-${y}`)!==""&&((h.tag==="bodyAttrs"?n.defaultView:d).addEventListener(y.replace("on",""),O.bind(d)),d.setAttribute(`data-${y}`,""));Object.entries(h.props).forEach(([y,O])=>{const w=`attr:${y}`;if(y==="class")for(const P of(O||"").split(" ").filter(Boolean))E&&i(c,`${w}:${P}`,()=>d.classList.remove(P)),!d.classList.contains(P)&&d.classList.add(P);else if(y==="style")for(const P of(O||"").split(";").filter(Boolean)){const[p,...g]=P.split(":").map(T=>T.trim());i(c,`${w}:${p}`,()=>{d.style.removeProperty(p)}),d.style.setProperty(p,g.join(":"))}else d.getAttribute(y)!==O&&d.setAttribute(y,O===!0?"":String(O)),E&&i(c,w,()=>d.removeAttribute(y))})}const l=[],u={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const c of s){const{tag:d,shouldRender:h,id:E}=c;if(h){if(d.tag==="title"){n.title=d.textContent;continue}c.$el=c.$el||o.elMap[E],c.$el?a(c):Ar.includes(d.tag)&&l.push(c)}}for(const c of l){const d=c.tag.tagPosition||"head";c.$el=n.createElement(c.tag.tag),a(c),u[d]=u[d]||n.createDocumentFragment(),u[d].appendChild(c.$el)}for(const c of s)await e.hooks.callHook("dom:renderTag",c,n,i);u.head&&n.head.appendChild(u.head),u.bodyOpen&&n.body.insertBefore(u.bodyOpen,n.body.firstChild),u.bodyClose&&n.body.appendChild(u.bodyClose),Object.values(o.pendingSideEffects).forEach(c=>c()),e._dom=o,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:s})}async function Wg(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(r=>n(async()=>{await Vg(e,t),delete e._domUpdatePromise,r()}))}function Kg(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(o){Wg(o,e)}}}}}const Bg=["templateParams","htmlAttrs","bodyAttrs"],Gg={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(r=>{e.props[r]&&(e.key=e.props[r],delete e.props[r])});const n=tu(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(r=>{const s=(r.key?`${r.tag}:${r.key}`:r._d)||r._p,o=t[s];if(o){let a=r==null?void 0:r.tagDuplicateStrategy;if(!a&&Bg.includes(r.tag)&&(a="merge"),a==="merge"){const l=o.props;["class","style"].forEach(u=>{l[u]&&(r.props[u]?(u==="style"&&!l[u].endsWith(";")&&(l[u]+=";"),r.props[u]=`${l[u]} ${r.props[u]}`):r.props[u]=l[u])}),t[s].props={...l,...r.props};return}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);return}else if(Xr(r)>Xr(o))return}const i=Object.keys(r.props).length+(r.innerHTML?1:0)+(r.textContent?1:0);if(Ar.includes(r.tag)&&i===0){delete t[s];return}t[s]=r});const n=[];Object.values(t).forEach(r=>{const s=r._duped;delete r._duped,n.push(r),s&&n.push(...s)}),e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},zg={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},Yg=["script","link","bodyAttrs"],Xg=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags.filter(r=>Yg.includes(r.tag)))Object.entries(n.props).forEach(([r,s])=>{r.startsWith("on")&&typeof s=="function"&&(e.ssr&&Pl.includes(r)?n.props[r]=`this.dataset.${r}fired = true`:delete n.props[r],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[r]=s)}),e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||$o(n.props.src||n.props.href))},"dom:renderTag":function({$el:t,tag:n}){var r,s;for(const o of Object.keys((t==null?void 0:t.dataset)||{}).filter(i=>Pl.some(a=>`${a}fired`===i))){const i=o.replace("fired","");(s=(r=n._eventHandlers)==null?void 0:r[i])==null||s.call(t,new Event(i.replace("on","")))}}}}),qg=["link","style","script","noscript"],Jg={hooks:{"tag:normalise":({tag:e})=>{e.key&&qg.includes(e.tag)&&(e.props["data-hid"]=e._h=$o(e.key))}}},Qg={hooks:{"tags:resolve":e=>{const t=n=>{var r;return(r=e.tags.find(s=>s._d===n))==null?void 0:r._p};for(const{prefix:n,offset:r}of jg)for(const s of e.tags.filter(o=>typeof o.tagPriority=="string"&&o.tagPriority.startsWith(n))){const o=t(s.tagPriority.replace(n,""));typeof o<"u"&&(s._p=o+r)}e.tags.sort((n,r)=>n._p-r._p).sort((n,r)=>Xr(n)-Xr(r))}}},Zg={meta:"content",link:"href",htmlAttrs:"lang"},e_=e=>({hooks:{"tags:resolve":t=>{var a;const{tags:n}=t,r=(a=n.find(l=>l.tag==="title"))==null?void 0:a.textContent,s=n.findIndex(l=>l.tag==="templateParams"),o=s!==-1?n[s].props:{},i=o.separator||"|";delete o.separator,o.pageTitle=Pr(o.pageTitle||r||"",o,i);for(const l of n.filter(u=>u.processTemplateParams!==!1)){const u=Zg[l.tag];u&&typeof l.props[u]=="string"?l.props[u]=Pr(l.props[u],o,i):(l.processTemplateParams===!0||["titleTemplate","title"].includes(l.tag))&&["innerHTML","textContent"].forEach(f=>{typeof l[f]=="string"&&(l[f]=Pr(l[f],o,i))})}e._templateParams=o,e._separator=i,t.tags=n.filter(l=>l.tag!=="templateParams")}}}),t_={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(s=>s.tag==="titleTemplate");const r=t.findIndex(s=>s.tag==="title");if(r!==-1&&n!==-1){const s=Ol(t[n].textContent,t[r].textContent);s!==null?t[r].textContent=s||t[r].textContent:delete t[r]}else if(n!==-1){const s=Ol(t[n].textContent);s!==null&&(t[n].textContent=s,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},n_={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{a.dirty=!0,t.callHook("entries:updated",a)};let s=0,o=[];const i=[],a={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(l){const u=typeof l=="function"?l(a):l;(!u.key||!i.some(f=>f.key===u.key))&&(i.push(u),Ll(u.mode,n)&&t.addHooks(u.hooks||{}))},push(l,u){u==null||delete u.head;const f={_i:s++,input:l,...u};return Ll(f.mode,n)&&(o.push(f),r()),{dispose(){o=o.filter(c=>c._i!==f._i),t.callHook("entries:updated",a),r()},patch(c){o=o.map(d=>(d._i===f._i&&(d.input=f.input=c),d)),r()}}},async resolveTags(){const l={tags:[],entries:[...o]};await t.callHook("entries:resolve",l);for(const u of l.entries){const f=u.resolvedInput||u.input;if(u.resolvedInput=await(u.transform?u.transform(f):f),u.resolvedInput)for(const c of await Ug(u)){const d={tag:c,entry:u,resolvedOptions:a.resolvedOptions};await t.callHook("tag:normalise",d),l.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",l),await t.callHook("tags:resolve",l),await t.callHook("tags:afterResolve",l),l.tags},ssr:n};return[Gg,zg,Xg,Jg,Qg,e_,t_,n_,...(e==null?void 0:e.plugins)||[]].forEach(l=>a.use(l)),a.hooks.callHook("init",a),a}const o_=fc.startsWith("3");function i_(e){return typeof e=="function"?e():Je(e)}function oo(e,t=""){if(e instanceof Promise)return e;const n=i_(e);return!e||!n?n:Array.isArray(n)?n.map(r=>oo(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,Je(s)]:[r,oo(s,r)])):n}const l_={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=oo(t.input)}}},a_="usehead";function c_(e){return{install(n){o_&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(a_,e))}}.install}function u_(e={}){e.domDelayFn=e.domDelayFn||(n=>Nn(()=>setTimeout(()=>n(),0)));const t=r_(e);return t.use(l_),t.install=c_(t),t}function f_(e){try{return JSON.parse(e||"{}")}catch(t){return console.error("[SSG] On state deserialization -",t,e),{}}}function d_(e){return document.readyState==="loading"?new Promise(t=>{document.addEventListener("DOMContentLoaded",()=>t(e))}):Promise.resolve(e)}const p_=Bt({setup(e,{slots:t}){const n=se(!1);return Rn(()=>n.value=!0),()=>n.value?t.default&&t.default({}):t.placeholder&&t.placeholder({})}});function h_(e,t,n,r={}){const{transformState:s,registerComponents:o=!0,useHead:i=!0,rootContainer:a="#app"}=r,l=typeof window<"u";async function u(f=!1,c){const d=f?eh(e):th(e);let h;i&&(h=u_(),d.use(h));const E=Sg({history:f?Qm(t.base):Zm(t.base),...t}),{routes:y}=t;o&&d.component("ClientOnly",p_);const O=[],p={app:d,head:h,isClient:l,router:E,routes:y,onSSRAppRendered:f?()=>{}:N=>O.push(N),triggerOnSSRAppRendered:()=>Promise.all(O.map(N=>N())),initialState:{},transformState:s,routePath:c};f&&(await d_(),p.initialState=(s==null?void 0:s(window.__INITIAL_STATE__||{}))||f_(window.__INITIAL_STATE__)),await(n==null?void 0:n(p)),d.use(E);let g,T=!0;if(E.beforeEach((N,M,I)=>{(T||g&&g===N.path)&&(T=!1,g=N.path,N.meta.state=p.initialState),I()}),!f){const N=p.routePath??"/";E.push(N),await E.isReady(),p.initialState=E.currentRoute.value.meta.state||{}}const C=p.initialState;return{...p,initialState:C}}return l&&(async()=>{const{app:f,router:c}=await u(!0);await c.isReady(),f.mount(a,!0)})(),u}const m_=e=>{const t={};Object.entries(Object.assign({"/src/layouts/centered.vue":()=>nn(()=>import("./centered-DXVC6Tw2.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),"/src/layouts/default.vue":()=>nn(()=>import("./default-Bb8t_gCU.js"),__vite__mapDeps([1,2,3,4,5,6]))})).forEach(([s,o])=>{let i=s.replace("/src/layouts/","").replace(".vue","");t[i]=o});function r(s,o=!0){return s.map(i=>{var a,l,u,f,c,d;if(((a=i.children)==null?void 0:a.length)>0&&(i.children=r(i.children,!1)),o){if(!i.component&&((l=i.children)==null?void 0:l.find(E=>{var y;return(E.path===""||E.path==="/")&&((y=E.meta)==null?void 0:y.isLayout)})))return i;if(((u=i.meta)==null?void 0:u.layout)!==!1)return{path:i.path,component:t[((f=i.meta)==null?void 0:f.layout)||"default"],children:i.path==="/"?[i]:[{...i,path:""}],meta:{isLayout:!0}}}return(c=i.meta)!=null&&c.layout?{path:i.path,component:t[(d=i.meta)==null?void 0:d.layout],children:[{...i,path:""}],meta:{isLayout:!0}}:i})}return r(e)};let g_;function __(){return g_}function b_(e){return typeof e=="function"?e():Je(e)}function io(e,t=""){if(e instanceof Promise)return e;const n=b_(e);return!e||!n?n:Array.isArray(n)?n.map(r=>io(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,Je(s)]:[r,io(s,r)])):n}const y_="usehead",Nl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Rl="__unhead_injection_handler__";function v_(){if(Rl in Nl)return Nl[Rl]();const e=et(y_);return e||__()}function ru(e,t={}){const n=t.head||v_();if(n)return n.ssr?n.push(e,t):E_(n,e,t)}function E_(e,t,n={}){const r=se(!1),s=se({});tc(()=>{s.value=r.value?{}:io(t)});const o=e.push(s.value,n);return Ae(s,a=>{o.patch(a)}),kn()&&(Da(()=>{o.dispose()}),xa(()=>{r.value=!0}),Ia(()=>{r.value=!1})),o}const Lr="https://www.frsource.org",yn="/fast-angle/",Uo=tm({attribute:"data-theme",valueLight:"light"}),ob=Bh(Uo),T_=oe(()=>`${yn}${Uo.value?"favicon-dark.svg":"favicon.svg"}`),S_=Bt({__name:"App",setup(e){const{t,locale:n,availableLocales:r}=ar(),s=Og(),o=Oc(300);function i(){const l=document.querySelector("meta[name=viewport]");l==null||l.setAttribute("content",`width=device-width, height=${window.innerHeight}, initial-scale=1.0`)}const a=()=>o(i,{});return ru({title:"Fast angle",htmlAttrs:{lang:n},meta:[{name:"description",content:oe(()=>t("main.description"))},{name:"twitter:card",content:"summary"},{name:"twitter:site",content:"@FRSOURCE1"},{name:"og:url",content:`${Lr}${yn}`},{name:"og:title",content:"Fast Angle"},{name:"og:description",content:oe(()=>t("main.description"))},{name:"og:image",content:`${Lr}${yn}fast-angle-og-image.jpg`},{name:"theme-color",content:oe(()=>(Uo.value,"#0189e9"))}],link:[{rel:"icon",type:"image/svg+xml",href:T_},...r.map(l=>({rel:"alternate",hreflang:l,href:`${Lr}${yn}${s.resolve({name:`lang-${l}`}).fullPath.substring(1)}`}))]}),Rn(()=>{window.addEventListener("resize",a,{passive:!0}),i()}),(l,u)=>{const f=Kd("RouterView");return Qn(),Wr(f)}}}),w_=["textContent"],O_=["textContent"],su=Bt({__name:"index",setup(e){const{t}=ar();return ru({meta:[{"http-equiv":"status",content:"302"},{"http-equiv":"refresh",content:`0;${Lr}${yn}${eo.value}`}]}),(n,r)=>(Qn(),bp(Me,null,[Kr("h1",{textContent:Hs(Je(t)("lang_redirect.title"))},null,8,w_),Kr("p",{textContent:Hs(Je(t)("lang_redirect.description"))},null,8,O_)],64))}}),kl={};typeof kl=="function"&&kl(su);const Il=()=>nn(()=>import("./_...all_-CUrrhdgQ.js"),__vite__mapDeps([8,5])),Rs=()=>nn(()=>import("./index-jBPnjwvd.js"),__vite__mapDeps([9,2,3,4,10])),ks=()=>nn(()=>import("./privacy-policy-DwrW54wZ.js"),__vite__mapDeps([11,3,12])),Is=()=>nn(()=>import("./terms-hP3Pi29U.js"),__vite__mapDeps([13,3,14])),C_=[{name:"index",path:"/",component:su,props:!0,meta:{layout:"centered"}},{name:"404",path:"/404",component:Il,props:!0,meta:{layout:"centered"}},{name:"all",path:"/:all(.*)*",component:Il,props:!0,meta:{layout:"centered"}},{name:"lang-de",path:"/de",component:Rs,props:!0},{name:"lang-en",path:"/en",component:Rs,props:!0},{name:"lang-pl",path:"/pl",component:Rs,props:!0},{name:"lang-de-privacy-policy",path:"/de/privacy-policy",component:ks,props:!0,meta:{layout:"centered"}},{name:"lang-en-privacy-policy",path:"/en/privacy-policy",component:ks,props:!0,meta:{layout:"centered"}},{name:"lang-pl-privacy-policy",path:"/pl/privacy-policy",component:ks,props:!0,meta:{layout:"centered"}},{name:"lang-de-terms",path:"/de/terms",component:Is,props:!0,meta:{layout:"centered"}},{name:"lang-en-terms",path:"/en/terms",component:Is,props:!0,meta:{layout:"centered"}},{name:"lang-pl-terms",path:"/pl/terms",component:Is,props:!0,meta:{layout:"centered"}}],A_=m_(C_);h_(S_,{routes:A_,base:yn},e=>{Object.values(Object.assign({"./modules/i18n.ts":gm,"./modules/pwa.ts":vm,"./modules/virtual-keyboard.ts":Sm})).forEach(t=>{var n;return(n=t.install)==null?void 0:n.call(t,e)})});export{Nn as $,Ae as A,rb as B,Og as C,I_ as D,M_ as E,Me as F,sb as G,kl as H,se as I,zf as J,us as K,Ep as L,U_ as M,z_ as N,G_ as O,am as P,P_ as Q,F_ as R,J_ as S,N_ as T,eb as U,Y_ as V,X_ as W,kn as X,Rn as Y,Po as Z,nn as _,Kr as a,j_ as a0,Ye as a1,Z_ as a2,Q_ as a3,W_ as a4,B_ as a5,tb as a6,yd as a7,V_ as a8,K_ as a9,R_ as aa,_o as ab,nb as ac,D_ as ad,q_ as ae,ru as af,x_ as ag,Ie as b,Wr as c,Bt as d,bp as e,ac as f,Je as g,Lr as h,oe as i,yn as j,T_ as k,eo as l,Ea as m,bo as n,Qn as o,$_ as p,L_ as q,Kd as r,we as s,Hs as t,ar as u,H_ as v,Ad as w,k_ as x,ob as y,Uo as z};
diff --git a/assets/app-BUT5I0Zb.css b/assets/app-DrvwiHnI.css
similarity index 100%
rename from assets/app-BUT5I0Zb.css
rename to assets/app-DrvwiHnI.css
diff --git a/assets/centered-CsPDCAwg.css b/assets/centered-BXo6jbpB.css
similarity index 100%
rename from assets/centered-CsPDCAwg.css
rename to assets/centered-BXo6jbpB.css
diff --git a/assets/centered-LQcEJ4f_.js b/assets/centered-DXVC6Tw2.js
similarity index 62%
rename from assets/centered-LQcEJ4f_.js
rename to assets/centered-DXVC6Tw2.js
index dfa439e3..6a6b1e69 100644
--- a/assets/centered-LQcEJ4f_.js
+++ b/assets/centered-DXVC6Tw2.js
@@ -1 +1 @@
-import s from"./default-T5VnCwtH.js";import{d as t,r,o as a,c as n,w as c,a as p,b as l,n as _}from"./app-Dwl7-0AS.js";import{_ as m}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./Button-BKAj1tfY.js";import"./useUriLocale-UwDq5HYh.js";const d=t({__name:"centered",setup(w){return(e,x)=>{const o=r("RouterView");return a(),n(s,null,{default:c(()=>[p("div",{class:_(["flex-grow",e.$style.wrapper])},[l(o)],2)]),_:1})}}}),i="f_d",u={wrapper:i},f={$style:u},k=m(d,[["__cssModules",f]]);export{k as default};
+import s from"./default-Bb8t_gCU.js";import{d as t,r,o as a,c as n,w as c,a as p,b as l,n as _}from"./app-B089dKne.js";import{_ as m}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./Button-nXEYzZOt.js";import"./useUriLocale-BPgYWpfF.js";const d=t({__name:"centered",setup(w){return(e,x)=>{const o=r("RouterView");return a(),n(s,null,{default:c(()=>[p("div",{class:_(["flex-grow",e.$style.wrapper])},[l(o)],2)]),_:1})}}}),i="f_d",u={wrapper:i},f={$style:u},k=m(d,[["__cssModules",f]]);export{k as default};
diff --git a/assets/default-T5VnCwtH.js b/assets/default-Bb8t_gCU.js
similarity index 84%
rename from assets/default-T5VnCwtH.js
rename to assets/default-Bb8t_gCU.js
index fa015e8b..34405cfa 100644
--- a/assets/default-T5VnCwtH.js
+++ b/assets/default-Bb8t_gCU.js
@@ -1 +1 @@
-import{d as v,u as $,r as M,o as l,e as c,a as e,n as o,f as C,t as h,g as t,h as H,b as m,w as g,l as k,m as y,i as L,j as A,k as B,p as F,q as S,v as V,s as D,F as z,x as I,y as N,z as E,c as p,A as w,B as U,C as j,D as x,E as G}from"./app-Dwl7-0AS.js";import{I as O,_ as P}from"./Button-BKAj1tfY.js";import{_ as b}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{u as q}from"./useUriLocale-UwDq5HYh.js";const T=["href","data-tooltip","title"],J=["textContent"],K=["textContent"],Q=["aria-label","data-tooltip"],W=v({__name:"Footer",setup(d){const{t:s}=$();return(a,u)=>{const i=M("RouterLink");return l(),c("footer",null,[e("nav",{class:o(a.$style.nav)},[e("ul",null,[e("li",null,[e("strong",{class:o(a.$style["font-small"])},[C(h(t(s)("main.brought_to_you_by"))+" ",1),e("a",{href:`${"host"in a?a.host:t(H)}/`,"data-tooltip":t(s)("main.visit_our_website"),title:t(s)("main.visit_our_website")},"FRSOURCE",8,T)],2)])]),e("ul",{class:o(a.$style["right-col"])},[e("li",{class:o(a.$style.links)},[m(i,{to:{name:`lang-${t(k)}-terms`}},{default:g(()=>[e("small",{class:o(a.$style["font-small"]),textContent:h(t(s)("main.terms_and_conditions"))},null,10,J)]),_:1},8,["to"]),m(i,{to:{name:`lang-${t(k)}-privacy-policy`}},{default:g(()=>[e("small",{class:o(a.$style["font-small"]),textContent:h(t(s)("main.privacy_policy"))},null,10,K)]),_:1},8,["to"])],2),e("li",null,[e("a",{rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle","aria-label":t(s)("main.star_us_on_github"),"data-tooltip":t(s)("main.star_us_on_github"),"data-placement":"left",target:"_blank",title:"GitHub"},[m(t(O))],8,Q)])],2)],2)])}}}),X="f_l",Y="f_n",Z={nav:X,"right-col":"f_m",links:Y,"font-small":"f_o"},tt={$style:Z},et=b(W,[["__cssModules",tt]]),st={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},nt=e("path",{fill:"currentColor",d:"M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6M5.394 6.813L6.81 5.399l3.505 3.506L8.9 10.319zM2 15.005h5v2H2zm3.394 10.193L8.9 21.692l1.414 1.414l-3.505 3.506zM15 25.005h2v5h-2zm6.687-1.9l1.414-1.414l3.506 3.506l-1.414 1.414zm3.313-8.1h5v2h-5zm-3.313-6.101l3.506-3.506l1.414 1.414l-3.506 3.506zM15 2.005h2v5h-2z"},null,-1),ot=[nt];function at(d,s){return l(),c("svg",st,[...ot])}const lt=y({name:"carbon-sun",render:at}),rt={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},it=e("path",{fill:"currentColor",d:"M13.503 5.414a15.076 15.076 0 0 0 11.593 18.194a11.1 11.1 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1 1 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.07 13.07 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3"},null,-1),ct=[it];function ut(d,s){return l(),c("svg",rt,[...ct])}const _t=y({name:"carbon-moon",render:ut}),mt={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ht=e("path",{fill:"currentColor",d:"M18 19h6v2h-6zm0-4h12v2H18zm0-4h12v2H18zm-4 10v-2H9v-2H7v2H2v2h8.215a8.6 8.6 0 0 1-2.216 3.977A9.3 9.3 0 0 1 6.552 23H4.333a10.9 10.9 0 0 0 2.145 3.297A14.7 14.7 0 0 1 3 28.127L3.702 30a16.4 16.4 0 0 0 4.29-2.336A16.5 16.5 0 0 0 12.299 30L13 28.127A14.7 14.7 0 0 1 9.523 26.3a10.3 10.3 0 0 0 2.729-5.3zm-2.833-8h2.166L8.75 2H6.583L2 13h2.166L5 11h5.334zM5.833 9l1.834-4.4L9.5 9z"},null,-1),dt=[ht];function ft(d,s){return l(),c("svg",mt,[...dt])}const gt=y({name:"carbon-language",render:ft}),pt=["href"],vt=["src"],$t=["title","aria-label"],yt=["textContent"],bt=v({__name:"Header",setup(d){const{t:s,availableLocales:a,locale:u}=$(),i=L({get(){return u.value},set(n){u.value=n}});return(n,r)=>{const f=P;return l(),c("header",{class:o(n.$style.header)},[e("hgroup",{class:o(n.$style.heading)},[e("h1",null,[e("a",{href:t(A),class:o(n.$style.title)},[e("img",{src:t(B),class:o(n.$style.favicon),alt:"Fast Angle logo",width:"32",height:"32"},null,10,vt),C(" "+h(t(s)("main.title")),1)],10,pt)]),e("h2",null,h(t(s)("main.description")),1)],2),e("nav",null,[e("ul",null,[e("li",null,[e("form",{onSubmit:r[1]||(r[1]=F(()=>{},["prevent"])),class:o(n.$style.lang)},[m(t(gt),{class:o(n.$style["lang-icon"]),"aria-label":t(s)("board.nav.toggle_langs")},null,8,["class","aria-label"]),S(e("select",{class:o(n.$style["lang-select"]),"onUpdate:modelValue":r[0]||(r[0]=_=>D(i)?i.value=_:null),title:t(s)("board.nav.toggle_langs"),"aria-label":t(s)("board.nav.toggle_langs")},[(l(!0),c(z,null,I(t(a),_=>(l(),c("option",{key:_,textContent:h(_)},null,8,yt))),128))],10,$t),[[V,t(i)]])],34)]),e("li",null,[m(f,{title:t(s)("board.nav.toggle_dark"),onClick:r[2]||(r[2]=_=>t(N)())},{default:g(()=>[t(E)?(l(),p(t(lt),{key:0})):(l(),p(t(_t),{key:1}))]),_:1},8,["title"])])])])],2)}}}),kt="f_s",wt="f_t",Mt="f_u",Ct="f_v",Lt="f_w",zt={header:kt,heading:wt,title:Mt,favicon:Ct,lang:Lt,"lang-icon":"f_x","lang-select":"f_y"},Rt={$style:zt},Ht=b(bt,[["__cssModules",Rt]]),At=v({__name:"default",setup(d){const{locale:s}=$(),a=q();w(a,n=>{n&&n!==s.value&&(s.value=U(n))},{immediate:!0});const u=j(),i=L(()=>(u.currentRoute.value.name||"").split("-").length!==2);return w(s,n=>{const r=u.currentRoute.value.path.split("/");r[1]=n,u.push(r.join("/"))}),(n,r)=>{const f=Ht,_=M("RouterView"),R=et;return l(),c(z,null,[m(f,{class:o(n.$style.header)},null,8,["class"]),e("main",{class:o([n.$style.main,{[n.$style["main-no-footer"]]:!t(i)}])},[x(n.$slots,"default",{},()=>[m(_)]),t(i)?(l(),p(R,{key:0})):G("",!0)],2)],64)}}}),Bt="f_e",Ft="f_f",St={header:Bt,main:Ft,"main-no-footer":"f_g"},Vt={$style:St},Ut=b(At,[["__cssModules",Vt]]);export{Ut as default};
+import{d as v,u as $,r as w,o as l,e as c,a as e,n as o,f as C,t as h,g as t,h as H,b as m,w as g,l as k,m as y,i as L,j as A,k as B,p as F,q as S,v as V,s as D,F as z,x as I,y as N,z as E,c as p,A as M,B as U,C as j,D as q,E as G}from"./app-B089dKne.js";import{I as O,_ as P}from"./Button-nXEYzZOt.js";import{_ as b}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{u as x}from"./useUriLocale-BPgYWpfF.js";const T=["href","data-tooltip","title"],J=["textContent"],K=["textContent"],Q=["aria-label","data-tooltip"],W=v({__name:"Footer",setup(d){const{t:s}=$();return(a,u)=>{const i=w("RouterLink");return l(),c("footer",null,[e("nav",{class:o(a.$style.nav)},[e("ul",null,[e("li",null,[e("strong",{class:o(a.$style["font-small"])},[C(h(t(s)("main.brought_to_you_by"))+" ",1),e("a",{href:`${"host"in a?a.host:t(H)}/`,"data-tooltip":t(s)("main.visit_our_website"),title:t(s)("main.visit_our_website")},"FRSOURCE",8,T)],2)])]),e("ul",{class:o(a.$style["right-col"])},[e("li",{class:o(a.$style.links)},[m(i,{to:{name:`lang-${t(k)}-terms`}},{default:g(()=>[e("small",{class:o(a.$style["font-small"]),textContent:h(t(s)("main.terms_and_conditions"))},null,10,J)]),_:1},8,["to"]),m(i,{to:{name:`lang-${t(k)}-privacy-policy`}},{default:g(()=>[e("small",{class:o(a.$style["font-small"]),textContent:h(t(s)("main.privacy_policy"))},null,10,K)]),_:1},8,["to"])],2),e("li",null,[e("a",{rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle","aria-label":t(s)("main.star_us_on_github"),"data-tooltip":t(s)("main.star_us_on_github"),"data-placement":"left",target:"_blank",title:"GitHub"},[m(t(O))],8,Q)])],2)],2)])}}}),X="f_l",Y="f_n",Z={nav:X,"right-col":"f_m",links:Y,"font-small":"f_o"},tt={$style:Z},et=b(W,[["__cssModules",tt]]),st={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},nt=e("path",{fill:"currentColor",d:"M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6M5.394 6.813L6.81 5.399l3.505 3.506L8.9 10.319zM2 15.005h5v2H2zm3.394 10.193L8.9 21.692l1.414 1.414l-3.505 3.506zM15 25.005h2v5h-2zm6.687-1.9l1.414-1.414l3.506 3.506l-1.414 1.414zm3.313-8.1h5v2h-5zm-3.313-6.101l3.506-3.506l1.414 1.414l-3.506 3.506zM15 2.005h2v5h-2z"},null,-1),ot=[nt];function at(d,s){return l(),c("svg",st,[...ot])}const lt=y({name:"carbon-sun",render:at}),rt={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},it=e("path",{fill:"currentColor",d:"M13.503 5.414a15.076 15.076 0 0 0 11.593 18.194a11.1 11.1 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1 1 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.07 13.07 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3"},null,-1),ct=[it];function ut(d,s){return l(),c("svg",rt,[...ct])}const _t=y({name:"carbon-moon",render:ut}),mt={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ht=e("path",{fill:"currentColor",d:"M18 19h6v2h-6zm0-4h12v2H18zm0-4h12v2H18zm-4 10v-2H9v-2H7v2H2v2h8.215a8.6 8.6 0 0 1-2.216 3.977A9.3 9.3 0 0 1 6.552 23H4.333a10.9 10.9 0 0 0 2.145 3.297A14.7 14.7 0 0 1 3 28.127L3.702 30a16.4 16.4 0 0 0 4.29-2.336A16.5 16.5 0 0 0 12.299 30L13 28.127A14.7 14.7 0 0 1 9.523 26.3a10.3 10.3 0 0 0 2.729-5.3zm-2.833-8h2.166L8.75 2H6.583L2 13h2.166L5 11h5.334zM5.833 9l1.834-4.4L9.5 9z"},null,-1),dt=[ht];function ft(d,s){return l(),c("svg",mt,[...dt])}const gt=y({name:"carbon-language",render:ft}),pt=["href"],vt=["src"],$t=["title","aria-label"],yt=["textContent"],bt=v({__name:"Header",setup(d){const{t:s,availableLocales:a,locale:u}=$(),i=L({get(){return u.value},set(n){u.value=n}});return(n,r)=>{const f=P;return l(),c("header",{class:o(n.$style.header)},[e("hgroup",{class:o(n.$style.heading)},[e("h1",null,[e("a",{href:t(A),class:o(n.$style.title)},[e("img",{src:t(B),class:o(n.$style.favicon),alt:"Fast Angle logo",width:"32",height:"32"},null,10,vt),C(" "+h(t(s)("main.title")),1)],10,pt)]),e("h2",null,h(t(s)("main.description")),1)],2),e("nav",null,[e("ul",null,[e("li",null,[e("form",{onSubmit:r[1]||(r[1]=F(()=>{},["prevent"])),class:o(n.$style.lang)},[m(t(gt),{class:o(n.$style["lang-icon"]),"aria-label":t(s)("board.nav.toggle_langs")},null,8,["class","aria-label"]),S(e("select",{class:o(n.$style["lang-select"]),"onUpdate:modelValue":r[0]||(r[0]=_=>D(i)?i.value=_:null),title:t(s)("board.nav.toggle_langs"),"aria-label":t(s)("board.nav.toggle_langs")},[(l(!0),c(z,null,I(t(a),_=>(l(),c("option",{key:_,textContent:h(_)},null,8,yt))),128))],10,$t),[[V,t(i)]])],34)]),e("li",null,[m(f,{title:t(s)("board.nav.toggle_dark"),onClick:r[2]||(r[2]=_=>t(N)())},{default:g(()=>[t(E)?(l(),p(t(lt),{key:0})):(l(),p(t(_t),{key:1}))]),_:1},8,["title"])])])])],2)}}}),kt="f_p",Mt="f_q",wt="f_r",Ct="f_s",Lt="f_t",zt={header:kt,heading:Mt,title:wt,favicon:Ct,lang:Lt,"lang-icon":"f_u","lang-select":"f_v"},Rt={$style:zt},Ht=b(bt,[["__cssModules",Rt]]),At=v({__name:"default",setup(d){const{locale:s}=$(),a=x();M(a,n=>{n&&n!==s.value&&(s.value=U(n))},{immediate:!0});const u=j(),i=L(()=>(u.currentRoute.value.name||"").split("-").length!==2);return M(s,n=>{const r=u.currentRoute.value.path.split("/");r[1]=n,u.push(r.join("/"))}),(n,r)=>{const f=Ht,_=w("RouterView"),R=et;return l(),c(z,null,[m(f,{class:o(n.$style.header)},null,8,["class"]),e("main",{class:o([n.$style.main,{[n.$style["main-no-footer"]]:!t(i)}])},[q(n.$slots,"default",{},()=>[m(_)]),t(i)?(l(),p(R,{key:0})):G("",!0)],2)],64)}}}),Bt="f_e",Ft="f_f",St={header:Bt,main:Ft,"main-no-footer":"f_g"},Vt={$style:St},Ut=b(At,[["__cssModules",Vt]]);export{Ut as default};
diff --git a/assets/default-D9dwkEVE.css b/assets/default-iCgzCfzV.css
similarity index 61%
rename from assets/default-D9dwkEVE.css
rename to assets/default-iCgzCfzV.css
index 573cb6e2..47849344 100644
--- a/assets/default-D9dwkEVE.css
+++ b/assets/default-iCgzCfzV.css
@@ -1 +1 @@
-.f_l{align-items:flex-start;--nav-element-spacing-vertical: .25rem}@media (min-width: 768px){.f_l{--nav-element-spacing-vertical: 1rem}}.f_m{margin-right:0!important}.f_n{margin-inline-end:.5rem;display:flex;flex-flow:column;width:max-content;text-align:right}.f_n:before{display:none}@media (min-width: 640px){.f_n{flex-flow:row;gap:1rem}}.f_o{font-size:.75em}.f_s{--block-spacing-vertical: 0 !important;--nav-element-spacing-vertical: .5rem;display:flex;justify-content:space-between;align-items:center}@media (min-width: 1024px){.f_s{margin:var(--nav-element-spacing-vertical) 0}}.f_t{overflow:hidden;max-height:2.25rem;margin:0;transition:max-height .3s ease-out}@media (min-width: 1024px){.f_t{margin-bottom:calc(var(--nav-element-spacing-vertical) / 2);max-height:120px}}.f_u{vertical-align:middle;font-size:1.5rem;color:var(--h2-color);--underline: rgba(255 255 255 / 0%)}@media (min-width: 1024px){.f_u{display:block;font-size:var(--font-size);margin-bottom:.5rem}}@media (min-width: 768px){.f_v{margin-right:.5rem}}.f_w{position:relative}.f_x{position:absolute;top:50%;left:.5rem;transform:translateY(-50%)}.f_y{width:0;padding-left:1.5rem!important;--nav-link-spacing-vertical: .35rem}.f_e{position:sticky;top:0;background:var(--background-color)}.f_f{--block-spacing-vertical: 0px !important;flex-grow:1;display:flex;flex-flow:column;overflow:hidden}@media (min-width: 768px){.f_g{padding-bottom:.5rem!important}}@media (min-width: 1024px){.f_g{padding-bottom:1rem!important}}
+.f_l{align-items:flex-start;--nav-element-spacing-vertical: .25rem}@media (min-width: 768px){.f_l{--nav-element-spacing-vertical: 1rem}}.f_m{margin-right:0!important}.f_n{margin-inline-end:.5rem;display:flex;flex-flow:column;width:max-content;text-align:right}.f_n:before{display:none}@media (min-width: 640px){.f_n{flex-flow:row;gap:1rem}}.f_o{font-size:.75em}.f_p{--block-spacing-vertical: 0 !important;--nav-element-spacing-vertical: .5rem;display:flex;justify-content:space-between;align-items:center}@media (min-width: 1024px){.f_p{margin:var(--nav-element-spacing-vertical) 0}}.f_q{overflow:hidden;max-height:2.25rem;margin:0;transition:max-height .3s ease-out}@media (min-width: 1024px){.f_q{margin-bottom:calc(var(--nav-element-spacing-vertical) / 2);max-height:120px}}.f_r{vertical-align:middle;font-size:1.5rem;color:var(--h2-color);--underline: rgba(255 255 255 / 0%)}@media (min-width: 1024px){.f_r{display:block;font-size:var(--font-size);margin-bottom:.5rem}}@media (min-width: 768px){.f_s{margin-right:.5rem}}.f_t{position:relative}.f_u{position:absolute;top:50%;left:.5rem;transform:translateY(-50%)}.f_v{width:0;padding-left:1.5rem!important;--nav-link-spacing-vertical: .35rem}.f_e{position:sticky;top:0;background:var(--background-color)}.f_f{--block-spacing-vertical: 0px !important;flex-grow:1;display:flex;flex-flow:column;overflow:hidden}@media (min-width: 768px){.f_g{padding-bottom:.5rem!important}}@media (min-width: 1024px){.f_g{padding-bottom:1rem!important}}
diff --git a/assets/index-BnNlN_Ib.css b/assets/index-C3mIgKMT.css
similarity index 79%
rename from assets/index-BnNlN_Ib.css
rename to assets/index-C3mIgKMT.css
index dc8f6b07..29690aec 100644
--- a/assets/index-BnNlN_Ib.css
+++ b/assets/index-C3mIgKMT.css
@@ -1 +1 @@
-.f_ad{margin:0;max-height:100vh}@media (min-width: 576px){.f_ad{margin:var(--spacing);max-height:calc(100vh - var(--spacing) * 2)}}.f_ae{height:80px}.f_af{position:sticky;bottom:calc(-1 * var(--block-spacing-vertical) - 1px)}.f_ag{flex-shrink:1;flex-grow:1;width:100px;min-width:0}.f_ah{width:160px}.f_ai{width:80px}.f_aj,.f_ak{display:flex;gap:.5rem}.f_aj{flex-wrap:wrap}.f_al{border-bottom:none!important;margin-top:calc(var(--spacing) * .25 + .375rem);cursor:default!important}.f_am{--form-element-spacing-vertical: .5rem;--form-element-spacing-horizontal: .25rem;margin-right:0}.f_an{opacity:.5}.f_ao{display:flex;gap:.5rem;align-items:center}.f_ao .f_ap{margin:0 .5rem 0 auto;width:100px;--line-height: 9px;--form-element-spacing-vertical: .5rem;--form-element-spacing-horizontal: .75rem}@media (min-width: 1024px){.f_ao .f_ap{width:115px}}.f_4{width:auto!important}@media (min-width: 768px){.f_8{min-width:720px}}.f_9{display:none}@media (min-width: 1024px){.f_9{display:block}}.f__{display:inline-flex;flex-wrap:wrap;gap:.25em}.f_-{font-size:.75em;line-height:2.5em}.f_aa{list-style:none}.f_ab{display:flex;gap:2rem}.f_ac{display:inline-flex;vertical-align:middle;margin-right:2em;gap:.5em}.f_5{display:flex;width:100%;align-items:center;justify-content:space-between;gap:1em}.f_6{margin-left:.25rem;vertical-align:middle}.f_7{justify-content:flex-end;border:none;margin:0;font-size:.75em;padding:0;vertical-align:middle;background:none;color:inherit}.f_p{display:flex;justify-content:space-between;align-items:flex-end}.f_q{margin-left:auto;flex-flow:column;--nav-element-spacing-vertical: var(--nav-element-spacing-horizontal)}@media (min-width: 768px){.f_q{flex-flow:row}}.f_r{display:flex;flex-flow:column;gap:.5rem;align-items:center;margin:var(--nav-element-spacing-horizontal);margin-left:0;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:4.5px}.f_z{position:absolute;z-index:1;border-radius:.25rem;box-sizing:content-box;margin:0;padding:0;transition:height .4s ease-in-out,width .4s ease-in-out,top .2s ease-in-out,left .2s ease-in-out,bottom .2s ease-in-out,right .2s ease-in-out}.f_z:not(.f_0):hover .f_1{opacity:.2}.f_z:not(.f_0) .f_2{padding:0;width:100%;height:100%;background:transparent;border-color:transparent;color:inherit}.f_2{position:absolute;z-index:1;top:0;right:0;align-items:center;justify-content:center;transition:none}.f_0 .f_1{opacity:1}.f_0 .f_2{margin:.5rem;padding:.5rem;width:auto}.f_1{height:100%;width:100%;opacity:.5;transition:opacity .2s ease-in-out}.f_h{position:relative;border:solid thin var(--card-border-color);border-radius:2px;display:flex;flex-flow:column;width:100%;height:260px;background:var(--card-background-color)}.f_i{flex-grow:1;min-height:0;width:100%;stroke:#fff;touch-action:none}.f_i:focus{outline:none}.f_i:focus-visible{outline:solid 2px var(--primary-focus)}.f_j{position:absolute;bottom:0;left:var(--nav-element-spacing-horizontal);right:var(--nav-element-spacing-horizontal)}.f_k{position:absolute;top:40%;left:20px;right:70px;margin:auto;max-width:600px;transform:translateY(-50%);text-align:justify;white-space:pre-line;pointer-events:none}@media (min-width: 768px){.f_k{right:20px}}
+.f_ad{margin:0;max-height:100vh}@media (min-width: 576px){.f_ad{margin:var(--spacing);max-height:calc(100vh - var(--spacing) * 2)}}.f_ae{height:80px}.f_af{position:sticky;bottom:calc(-1 * var(--block-spacing-vertical) - 1px)}.f_ag{flex-shrink:1;flex-grow:1;width:100px;min-width:0}.f_ah{width:160px}.f_ai{width:80px}.f_aj,.f_ak{display:flex;gap:.5rem}.f_aj{flex-wrap:wrap}.f_al{border-bottom:none!important;margin-top:calc(var(--spacing) * .25 + .375rem);cursor:default!important}.f_am{--form-element-spacing-vertical: .5rem;--form-element-spacing-horizontal: .25rem;margin-right:0}.f_an{opacity:.5}.f_ao{display:flex;gap:.5rem;align-items:center}.f_ao .f_ap{margin:0 .5rem 0 auto;width:100px;--line-height: 9px;--form-element-spacing-vertical: .5rem;--form-element-spacing-horizontal: .75rem}@media (min-width: 1024px){.f_ao .f_ap{width:115px}}.f_4{width:auto!important}@media (min-width: 768px){.f_5{min-width:720px}}.f_6{display:none}@media (min-width: 1024px){.f_6{display:block}}.f_7{display:inline-flex;flex-wrap:wrap;gap:.25em}.f_8{font-size:.75em;line-height:2.5em}.f_9{list-style:none}.f__{display:flex;gap:2rem}.f_-{display:inline-flex;vertical-align:middle;margin-right:2em;gap:.5em}.f_aa{display:flex;width:100%;align-items:center;justify-content:space-between;gap:1em}.f_ab{margin-left:.25rem;vertical-align:middle}.f_ac{justify-content:flex-end;border:none;margin:0;font-size:.75em;padding:0;vertical-align:middle;background:none;color:inherit}.f_w{display:flex;justify-content:space-between;align-items:flex-end}.f_x{margin-left:auto;flex-flow:column;--nav-element-spacing-vertical: var(--nav-element-spacing-horizontal)}@media (min-width: 768px){.f_x{flex-flow:row}}.f_y{display:flex;flex-flow:column;gap:.5rem;align-items:center;margin:var(--nav-element-spacing-horizontal);margin-left:0;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:4.5px}.f_z{position:absolute;z-index:1;border-radius:.25rem;box-sizing:content-box;margin:0;padding:0;transition:height .4s ease-in-out,width .4s ease-in-out,top .2s ease-in-out,left .2s ease-in-out,bottom .2s ease-in-out,right .2s ease-in-out}.f_z:not(.f_0):hover .f_1{opacity:.2}.f_z:not(.f_0) .f_2{padding:0;width:100%;height:100%;background:transparent;border-color:transparent;color:inherit}.f_2{position:absolute;z-index:1;top:0;right:0;align-items:center;justify-content:center;transition:none}.f_0 .f_1{opacity:1}.f_0 .f_2{margin:.5rem;padding:.5rem;width:auto}.f_1{height:100%;width:100%;opacity:.5;transition:opacity .2s ease-in-out}.f_h{position:relative;border:solid thin var(--card-border-color);border-radius:2px;display:flex;flex-flow:column;width:100%;height:260px;background:var(--card-background-color)}.f_i{flex-grow:1;min-height:0;width:100%;stroke:#fff;touch-action:none}.f_i:focus{outline:none}.f_i:focus-visible{outline:solid 2px var(--primary-focus)}.f_j{position:absolute;bottom:0;left:var(--nav-element-spacing-horizontal);right:var(--nav-element-spacing-horizontal)}.f_k{position:absolute;top:40%;left:20px;right:70px;margin:auto;max-width:600px;transform:translateY(-50%);text-align:justify;white-space:pre-line;pointer-events:none}@media (min-width: 768px){.f_k{right:20px}}
diff --git a/assets/index-D8cNfCUs.js b/assets/index-jBPnjwvd.js
similarity index 97%
rename from assets/index-D8cNfCUs.js
rename to assets/index-jBPnjwvd.js
index 18f1bf0f..a71e7dc1 100644
--- a/assets/index-D8cNfCUs.js
+++ b/assets/index-jBPnjwvd.js
@@ -1,7 +1,7 @@
-import{_ as Ht,I as Xn}from"./Button-BKAj1tfY.js";import{g as l,d as ot,I as O,A as Z,J as Zn,K as Jn,u as Wt,o as k,c as it,b as P,w as H,a as c,L as Ut,p as tt,t as B,D as se,n as C,f as Q,T as Qn,E as ct,M as Kt,i as A,m as Y,e as E,N as ts,O as es,P as fe,Q as gn,q as Ft,R as Jt,s as kt,v as je,F as dt,x as Zt,S as Oe,U as ze,r as ns,h as ss,l as Ye,V as is,W as ye,X as as,Y as os,Z as rs,$ as ls,a0 as us,a1 as yn,a2 as cs,a3 as ds,a4 as fs,a5 as _n,a6 as hs,z as De,a7 as qe,a8 as vs,a9 as ps,aa as ms,ab as me,ac as bs,ad as gs,ae as ys}from"./app-Dwl7-0AS.js";import{_ as Et}from"./_plugin-vue_export-helper-DlAUqK2U.js";/*!
+import{_ as Ht,I as Xn}from"./Button-nXEYzZOt.js";import{g as l,d as ot,I as O,A as Z,J as Zn,K as Jn,u as Wt,o as k,c as it,b as P,w as H,a as c,L as Ut,p as tt,t as B,D as se,n as C,f as Q,T as Qn,E as ct,M as Kt,i as A,m as Y,e as E,N as ts,O as es,P as fe,Q as gn,q as Ft,R as Jt,s as kt,v as je,F as dt,x as Zt,S as Oe,U as ze,r as ns,h as ss,l as Ye,V as is,W as ye,X as as,Y as os,Z as rs,$ as ls,a0 as us,a1 as yn,a2 as cs,a3 as ds,a4 as fs,a5 as _n,a6 as hs,z as De,a7 as qe,a8 as vs,a9 as ps,aa as ms,ab as me,ac as bs,ad as gs,ae as ys}from"./app-B089dKne.js";import{_ as Et}from"./_plugin-vue_export-helper-DlAUqK2U.js";/*!
* tabbable 6.2.0
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
*/var wn=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],_e=wn.join(","),xn=typeof Element>"u",Vt=xn?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,we=!xn&&Element.prototype.getRootNode?function(n){var t;return n==null||(t=n.getRootNode)===null||t===void 0?void 0:t.call(n)}:function(n){return n==null?void 0:n.ownerDocument},xe=function n(t,e){var s;e===void 0&&(e=!0);var i=t==null||(s=t.getAttribute)===null||s===void 0?void 0:s.call(t,"inert"),o=i===""||i==="true",a=o||e&&t&&n(t.parentNode);return a},_s=function(t){var e,s=t==null||(e=t.getAttribute)===null||e===void 0?void 0:e.call(t,"contenteditable");return s===""||s==="true"},$n=function(t,e,s){if(xe(t))return[];var i=Array.prototype.slice.apply(t.querySelectorAll(_e));return e&&Vt.call(t,_e)&&i.unshift(t),i=i.filter(s),i},Sn=function n(t,e,s){for(var i=[],o=Array.from(t);o.length;){var a=o.shift();if(!xe(a,!1))if(a.tagName==="SLOT"){var r=a.assignedElements(),u=r.length?r:a.children,d=n(u,!0,s);s.flatten?i.push.apply(i,d):i.push({scopeParent:a,candidates:d})}else{var m=Vt.call(a,_e);m&&s.filter(a)&&(e||!t.includes(a))&&i.push(a);var b=a.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(a),p=!xe(b,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(a));if(b&&p){var v=n(b===!0?a.children:b.children,!0,s);s.flatten?i.push.apply(i,v):i.push({scopeParent:a,candidates:v})}else o.unshift.apply(o,a.children)}}return i},kn=function(t){return!isNaN(parseInt(t.getAttribute("tabindex"),10))},Gt=function(t){if(!t)throw new Error("No node provided");return t.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(t.tagName)||_s(t))&&!kn(t)?0:t.tabIndex},ws=function(t,e){var s=Gt(t);return s<0&&e&&!kn(t)?0:s},xs=function(t,e){return t.tabIndex===e.tabIndex?t.documentOrder-e.documentOrder:t.tabIndex-e.tabIndex},Tn=function(t){return t.tagName==="INPUT"},$s=function(t){return Tn(t)&&t.type==="hidden"},Ss=function(t){var e=t.tagName==="DETAILS"&&Array.prototype.slice.apply(t.children).some(function(s){return s.tagName==="SUMMARY"});return e},ks=function(t,e){for(var s=0;ssummary:first-of-type"),a=o?t.parentElement:t;if(Vt.call(a,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof i=="function"){for(var r=t;t;){var u=t.parentElement,d=we(t);if(u&&!u.shadowRoot&&i(u)===!0)return Xe(t);t.assignedSlot?t=t.assignedSlot:!u&&d!==t.ownerDocument?t=d.host:t=u}t=r}if(Es(t))return!t.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return Xe(t);return!1},Ds=function(t){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(t.tagName))for(var e=t.parentElement;e;){if(e.tagName==="FIELDSET"&&e.disabled){for(var s=0;s=0)},Ps=function n(t){var e=[],s=[];return t.forEach(function(i,o){var a=!!i.scopeParent,r=a?i.scopeParent:i,u=ws(r,a),d=a?n(i.candidates):r;u===0?a?e.push.apply(e,d):e.push(r):s.push({documentOrder:o,tabIndex:u,item:i,isScope:a,content:d})}),s.sort(xs).reduce(function(i,o){return o.isScope?i.push.apply(i,o.content):i.push(o.content),i},[]).concat(e)},Ns=function(t,e){e=e||{};var s;return e.getShadowRoot?s=Sn([t],e.includeContainer,{filter:Ne.bind(null,e),flatten:!1,getShadowRoot:e.getShadowRoot,shadowRootFilter:Fs}):s=$n(t,e.includeContainer,Ne.bind(null,e)),Ps(s)},Rs=function(t,e){e=e||{};var s;return e.getShadowRoot?s=Sn([t],e.includeContainer,{filter:$e.bind(null,e),flatten:!0,getShadowRoot:e.getShadowRoot}):s=$n(t,e.includeContainer,$e.bind(null,e)),s},Yt=function(t,e){if(e=e||{},!t)throw new Error("No node provided");return Vt.call(t,_e)===!1?!1:Ne(e,t)},As=wn.concat("iframe").join(","),Fe=function(t,e){if(e=e||{},!t)throw new Error("No node provided");return Vt.call(t,As)===!1?!1:$e(e,t)};/*!
* focus-trap 7.5.4
* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
-*/function Ze(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(n);t&&(s=s.filter(function(i){return Object.getOwnPropertyDescriptor(n,i).enumerable})),e.push.apply(e,s)}return e}function Je(n){for(var t=1;t0){var s=t[t.length-1];s!==e&&s.pause()}var i=t.indexOf(e);i===-1||t.splice(i,1),t.push(e)},deactivateTrap:function(t,e){var s=t.indexOf(e);s!==-1&&t.splice(s,1),t.length>0&&t[t.length-1].unpause()}},Ls=function(t){return t.tagName&&t.tagName.toLowerCase()==="input"&&typeof t.select=="function"},Gs=function(t){return(t==null?void 0:t.key)==="Escape"||(t==null?void 0:t.key)==="Esc"||(t==null?void 0:t.keyCode)===27},ie=function(t){return(t==null?void 0:t.key)==="Tab"||(t==null?void 0:t.keyCode)===9},Us=function(t){return ie(t)&&!t.shiftKey},Vs=function(t){return ie(t)&&t.shiftKey},tn=function(t){return setTimeout(t,0)},en=function(t,e){var s=-1;return t.every(function(i,o){return e(i)?(s=o,!1):!0}),s},Qt=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i1?_-1:0),R=1;R<_;R++)N[R-1]=arguments[R];h=h.apply(void 0,N)}if(h===!0&&(h=void 0),!h){if(h===void 0||h===!1)return h;throw new Error("`".concat(f,"` was specified but was not a node, or did not return a node"))}var L=h;if(typeof h=="string"&&(L=s.querySelector(h),!L))throw new Error("`".concat(f,"` as selector refers to no known node"));return L},b=function(){var f=m("initialFocus");if(f===!1)return!1;if(f===void 0||!Fe(f,o.tabbableOptions))if(d(s.activeElement)>=0)f=s.activeElement;else{var h=a.tabbableGroups[0],_=h&&h.firstTabbableNode;f=_||m("fallbackFocus")}if(!f)throw new Error("Your focus-trap needs to have at least one focusable element");return f},p=function(){if(a.containerGroups=a.containers.map(function(f){var h=Ns(f,o.tabbableOptions),_=Rs(f,o.tabbableOptions),N=h.length>0?h[0]:void 0,R=h.length>0?h[h.length-1]:void 0,L=_.find(function(W){return Yt(W)}),G=_.slice().reverse().find(function(W){return Yt(W)}),q=!!h.find(function(W){return Gt(W)>0});return{container:f,tabbableNodes:h,focusableNodes:_,posTabIndexesFound:q,firstTabbableNode:N,lastTabbableNode:R,firstDomTabbableNode:L,lastDomTabbableNode:G,nextTabbableNode:function(ft){var It=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,ht=h.indexOf(ft);return ht<0?It?_.slice(_.indexOf(ft)+1).find(function(Dt){return Yt(Dt)}):_.slice(0,_.indexOf(ft)).reverse().find(function(Dt){return Yt(Dt)}):h[ht+(It?1:-1)]}}}),a.tabbableGroups=a.containerGroups.filter(function(f){return f.tabbableNodes.length>0}),a.tabbableGroups.length<=0&&!m("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(a.containerGroups.find(function(f){return f.posTabIndexesFound})&&a.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},v=function T(f){var h=f.activeElement;if(h)return h.shadowRoot&&h.shadowRoot.activeElement!==null?T(h.shadowRoot):h},y=function T(f){if(f!==!1&&f!==v(document)){if(!f||!f.focus){T(b());return}f.focus({preventScroll:!!o.preventScroll}),a.mostRecentlyFocusedNode=f,Ls(f)&&f.select()}},S=function(f){var h=m("setReturnFocus",f);return h||(h===!1?!1:f)},D=function(f){var h=f.target,_=f.event,N=f.isBackward,R=N===void 0?!1:N;h=h||he(_),p();var L=null;if(a.tabbableGroups.length>0){var G=d(h,_),q=G>=0?a.containerGroups[G]:void 0;if(G<0)R?L=a.tabbableGroups[a.tabbableGroups.length-1].lastTabbableNode:L=a.tabbableGroups[0].firstTabbableNode;else if(R){var W=en(a.tabbableGroups,function(jt){var rt=jt.firstTabbableNode;return h===rt});if(W<0&&(q.container===h||Fe(h,o.tabbableOptions)&&!Yt(h,o.tabbableOptions)&&!q.nextTabbableNode(h,!1))&&(W=G),W>=0){var ft=W===0?a.tabbableGroups.length-1:W-1,It=a.tabbableGroups[ft];L=Gt(h)>=0?It.lastTabbableNode:It.lastDomTabbableNode}else ie(_)||(L=q.nextTabbableNode(h,!1))}else{var ht=en(a.tabbableGroups,function(jt){var rt=jt.lastTabbableNode;return h===rt});if(ht<0&&(q.container===h||Fe(h,o.tabbableOptions)&&!Yt(h,o.tabbableOptions)&&!q.nextTabbableNode(h))&&(ht=G),ht>=0){var Dt=ht===a.tabbableGroups.length-1?0:ht+1,de=a.tabbableGroups[Dt];L=Gt(h)>=0?de.firstTabbableNode:de.firstDomTabbableNode}else ie(_)||(L=q.nextTabbableNode(h))}}else L=m("fallbackFocus");return L},g=function(f){var h=he(f);if(!(d(h,f)>=0)){if(Qt(o.clickOutsideDeactivates,f)){r.deactivate({returnFocus:o.returnFocusOnDeactivate});return}Qt(o.allowOutsideClick,f)||f.preventDefault()}},F=function(f){var h=he(f),_=d(h,f)>=0;if(_||h instanceof Document)_&&(a.mostRecentlyFocusedNode=h);else{f.stopImmediatePropagation();var N,R=!0;if(a.mostRecentlyFocusedNode)if(Gt(a.mostRecentlyFocusedNode)>0){var L=d(a.mostRecentlyFocusedNode),G=a.containerGroups[L].tabbableNodes;if(G.length>0){var q=G.findIndex(function(W){return W===a.mostRecentlyFocusedNode});q>=0&&(o.isKeyForward(a.recentNavEvent)?q+1=0&&(N=G[q-1],R=!1))}}else a.containerGroups.some(function(W){return W.tabbableNodes.some(function(ft){return Gt(ft)>0})})||(R=!1);else R=!1;R&&(N=D({target:a.mostRecentlyFocusedNode,isBackward:o.isKeyBackward(a.recentNavEvent)})),y(N||a.mostRecentlyFocusedNode||b())}a.recentNavEvent=void 0},M=function(f){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;a.recentNavEvent=f;var _=D({event:f,isBackward:h});_&&(ie(f)&&f.preventDefault(),y(_))},x=function(f){if(Gs(f)&&Qt(o.escapeDeactivates,f)!==!1){f.preventDefault(),r.deactivate();return}(o.isKeyForward(f)||o.isKeyBackward(f))&&M(f,o.isKeyBackward(f))},V=function(f){var h=he(f);d(h,f)>=0||Qt(o.clickOutsideDeactivates,f)||Qt(o.allowOutsideClick,f)||(f.preventDefault(),f.stopImmediatePropagation())},z=function(){if(a.active)return Qe.activateTrap(i,r),a.delayInitialFocusTimer=o.delayInitialFocus?tn(function(){y(b())}):y(b()),s.addEventListener("focusin",F,!0),s.addEventListener("mousedown",g,{capture:!0,passive:!1}),s.addEventListener("touchstart",g,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",x,{capture:!0,passive:!1}),r},xt=function(){if(a.active)return s.removeEventListener("focusin",F,!0),s.removeEventListener("mousedown",g,!0),s.removeEventListener("touchstart",g,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",x,!0),r},Ot=function(f){var h=f.some(function(_){var N=Array.from(_.removedNodes);return N.some(function(R){return R===a.mostRecentlyFocusedNode})});h&&y(b())},$t=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Ot):void 0,U=function(){$t&&($t.disconnect(),a.active&&!a.paused&&a.containers.map(function(f){$t.observe(f,{subtree:!0,childList:!0})}))};return r={get active(){return a.active},get paused(){return a.paused},activate:function(f){if(a.active)return this;var h=u(f,"onActivate"),_=u(f,"onPostActivate"),N=u(f,"checkCanFocusTrap");N||p(),a.active=!0,a.paused=!1,a.nodeFocusedBeforeActivation=s.activeElement,h==null||h();var R=function(){N&&p(),z(),U(),_==null||_()};return N?(N(a.containers.concat()).then(R,R),this):(R(),this)},deactivate:function(f){if(!a.active)return this;var h=Je({onDeactivate:o.onDeactivate,onPostDeactivate:o.onPostDeactivate,checkCanReturnFocus:o.checkCanReturnFocus},f);clearTimeout(a.delayInitialFocusTimer),a.delayInitialFocusTimer=void 0,xt(),a.active=!1,a.paused=!1,U(),Qe.deactivateTrap(i,r);var _=u(h,"onDeactivate"),N=u(h,"onPostDeactivate"),R=u(h,"checkCanReturnFocus"),L=u(h,"returnFocus","returnFocusOnDeactivate");_==null||_();var G=function(){tn(function(){L&&y(S(a.nodeFocusedBeforeActivation)),N==null||N()})};return L&&R?(R(S(a.nodeFocusedBeforeActivation)).then(G,G),this):(G(),this)},pause:function(f){if(a.paused||!a.active)return this;var h=u(f,"onPause"),_=u(f,"onPostPause");return a.paused=!0,h==null||h(),xt(),U(),_==null||_(),this},unpause:function(f){if(!a.paused||!a.active)return this;var h=u(f,"onUnpause"),_=u(f,"onPostUnpause");return a.paused=!1,h==null||h(),p(),z(),U(),_==null||_(),this},updateContainerElements:function(f){var h=[].concat(f).filter(Boolean);return a.containers=h.map(function(_){return typeof _=="string"?s.querySelector(_):_}),a.active&&p(),U(),this}},r.updateContainerElements(t),r};function Ks(n){return typeof n=="function"?n():l(n)}typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function js(n){var t;const e=Ks(n);return(t=e==null?void 0:e.$el)!=null?t:e}const Ys=ot({name:"UseFocusTrap",props:["as","options"],setup(n,{slots:t}){let e;const s=O(),i=()=>e&&e.activate(),o=()=>e&&e.deactivate();return Z(()=>js(s),a=>{a&&(e=Ws(a,n.options||{}),i())},{flush:"post"}),Zn(()=>o()),()=>{if(t.default)return Jn(n.as||"div",{ref:s},t.default())}}}),qs=["textContent"],Xs={inheritAttrs:!1},Zs=ot({...Xs,__name:"Modal",props:{heading:{type:String,required:!0},modelValue:{type:Boolean,required:!0}},emits:["update:modelValue"],setup(n,{emit:t}){const e=t,{t:s}=Wt(),i=O(),o=()=>e("update:modelValue",!1);return Z(i,a=>{a==null||a.showModal()}),(a,r)=>{const u=Ht;return n.modelValue?(k(),it(Qn,{key:0,to:"body"},[P(l(Ys),{options:{immediate:!0,initialFocus:!1}},{default:H(()=>[c("dialog",{ref_key:"dialog",ref:i,"aria-modal":"",onClick:o,onClose:o},[c("article",Ut({class:a.$style.content},a.$attrs,{onClick:r[0]||(r[0]=tt(()=>{},["stop"]))}),[c("h3",{textContent:B(n.heading)},null,8,qs),se(a.$slots,"default"),c("footer",{class:C(a.$style.footer)},[se(a.$slots,"footer-pre"),P(u,{onClick:o,class:"outline"},{default:H(()=>[Q(B(l(s)("main.close")),1)]),_:1}),se(a.$slots,"footer")],2)],16)],544)]),_:3})])):ct("",!0)}}}),Js="f_ad",Qs="f_ae",ti="f_af",ei={content:Js,spacer:Qs,footer:ti},ni={$style:ei},Cn=Et(Zs,[["__cssModules",ni]]),Me=Kt(()=>O());function si(n,t){const e=new MouseEvent("click",{view:window,bubbles:!1,cancelable:!0}),s=document.createElement("a");s.setAttribute("download",t),s.setAttribute("href",n),s.setAttribute("target","_blank"),s.dispatchEvent(e)}async function ii(n,t){const e=new XMLSerializer().serializeToString(n),s=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),i=new Image,o=URL.createObjectURL(s);await new Promise((a,r)=>{i.onload=function(){t.drawImage(i,0,0),URL.revokeObjectURL(o),a()},i.onabort=i.onerror=()=>r(),i.src=o})}const ae={JPG:1,PNG:2},ai={[ae.JPG]:{encoding:"image/jpeg",extension:"jpg"},[ae.PNG]:{encoding:"image/png",extension:"png"}};function oi(n){var s;const t=n.cloneNode(!0),e=window.getComputedStyle(n);return(s=t.querySelector("circle"))==null||s.remove(),t.style.setProperty("--background-color-transparent",e.getPropertyValue("--background-color-transparent")),t.style.color=t.style.fill=e.getPropertyValue("--color"),t.style.stroke="#fff",t.style.fontFamily="Arial",t.style.fontSize="20px",t}const Mn=Kt(()=>{const n=document.createElement("canvas"),t=n==null?void 0:n.getContext("2d"),e=Me(),s=A(()=>e.value&&t);return{triggerDownload:async({filename:o,filetype:a,quality:r,width:u,height:d})=>{if(!s.value||!n||!e.value||!t)return console.error("Cannot download due to required api missing:",s.value,n,e.value,t);n.width=u,n.height=d,await ii(oi(e.value),t);const{encoding:m,extension:b}=ai[a],p=n.toDataURL(m,r);si(p,`${o}.${b}`)},isSupported:s}}),Mt={px:1,"%":2,in:3,mm:4};function ri(n,t,e){let s=n;switch(t){case Mt["%"]:s=n*100/e;break;case Mt.in:s=n/window.devicePixelRatio;break;case Mt.mm:s=n*25.4/window.devicePixelRatio;break}return+s.toFixed(6)}function li(n,t,e){let s=n;switch(t){case Mt["%"]:s=n/100*e;break;case Mt.in:s=n*window.devicePixelRatio;break;case Mt.mm:s=n*window.devicePixelRatio/25.4;break}return+s.toFixed(5)}function nn(n,t,e){const s=O(0),i=O(n.value-1),o=O(0);return Z([n,t],([a,r],[,u])=>{(i.value!==a||r!==u)&&(i.value=a,s.value=ri(a,r,e.value))},{immediate:!0}),Z(o,a=>{s.value!==a&&(i.value=li(a,t.value,e.value))}),Z(s,a=>o.value=a,{immediate:!0}),o}const ui={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ci=c("path",{fill:"currentColor",d:"M24 14h-2V8a6 6 0 0 0-12 0v6H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2M12 8a4 4 0 0 1 8 0v6h-8Zm12 20H8V16h16Z"},null,-1),di=[ci];function fi(n,t){return k(),E("svg",ui,[...di])}const hi=Y({name:"carbon-locked",render:fi}),vi={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},pi=c("path",{fill:"currentColor",d:"M24 14H12V8a4 4 0 0 1 8 0h2a6 6 0 0 0-12 0v6H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2m0 14H8V16h16Z"},null,-1),mi=[pi];function bi(n,t){return k(),E("svg",vi,[...mi])}const gi=Y({name:"carbon-unlocked",render:bi}),yi=ts({...es,xs:480}),_i={class:"flex-grow"},wi=["aria-invalid"],xi=["value","textContent"],$i=["aria-invalid"],Si=["aria-invalid"],ki=["data-tooltip"],Ti=["value","textContent"],Ci=["aria-invalid"],Mi=ot({__name:"BoardControlsSvgDownloadModalContent",props:{boardWidth:{type:Number,required:!0},boardHeight:{type:Number,required:!0}},emits:["downloadFinish"],setup(n,{emit:t}){const e=n,s=t,{t:i}=Wt(),{triggerDownload:o}=Mn(),a=fe("FA_FILENAME","fast-angle-image"),{boardHeight:r,boardWidth:u}=gn(e),d=O(r.value),m=O(u.value),b=fe("FA_SIZE_UNIT",Mt.px),p=O(!0),v=O(u.value/r.value);yi.isGreaterOrEqual("xl")&&Z([u,r],([M,x])=>{m.value=M,d.value=x,v.value=M/x});const y=nn(d,b,r),S=nn(m,b,u);Z([S,y],([M,x])=>{p.value||(v.value=M/x)},{flush:"sync",immediate:!0}),Z(y,()=>{y.value<0&&(y.value=1),p.value&&y.value!==+(S.value/v.value).toFixed(3)&&(S.value=+(y.value*v.value).toFixed(3))},{flush:"sync"}),Z(S,()=>{S.value<0&&(S.value=1),p.value&&S.value!==+(y.value*v.value).toFixed(3)&&(y.value=+(S.value/v.value).toFixed(3))},{flush:"sync"});const D=fe("FA_FILETYPE",ae.PNG),g=fe("FA_QUALITY",100);Z(g,()=>{g.value>100&&(g.value=100),g.value<0&&(g.value=0)});async function F(){await o({filename:a.value,filetype:D.value,quality:g.value/100,width:m.value,height:d.value}).catch(()=>{}),s("downloadFinish")}return(M,x)=>{const V=Ht;return k(),E("form",{onSubmit:tt(F,["prevent"])},[c("div",{class:C(M.$style.name)},[c("label",_i,[Q(B(l(i)("board.nav.download_image.name_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[0]||(x[0]=z=>kt(a)?a.value=z:null),type:"text",name:"name",required:"","aria-invalid":!l(a)},null,8,wi),[[Jt,l(a)]])]),c("label",{class:C(M.$style["label--big"])},[Q(B(l(i)("board.nav.download_image.format_label"))+" ",1),Ft(c("select",{"onUpdate:modelValue":x[1]||(x[1]=z=>kt(D)?D.value=z:null),required:""},[(k(!0),E(dt,null,Zt(Object.keys(l(ae)),z=>(k(),E("option",{key:z,value:l(ae)[z],textContent:B(z)},null,8,xi))),128))],512),[[je,l(D)]])],2)],2),c("fieldset",{class:C(M.$style.sizing)},[c("legend",null,[c("small",null,B(l(i)("board.nav.download_image.sizing_label")),1)]),c("label",{class:C(M.$style.label)},[Q(B(l(i)("board.nav.download_image.width_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[2]||(x[2]=z=>kt(S)?S.value=z:null),min:"1",type:"number",step:"0.000001",name:"width",required:"","aria-invalid":!l(S)||l(S)<1},null,8,$i),[[Jt,l(S),void 0,{number:!0}]])],2),c("label",{class:C(M.$style.label)},[Q(B(l(i)("board.nav.download_image.height_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[3]||(x[3]=z=>kt(y)?y.value=z:null),min:"1",type:"number",step:"0.000001",name:"height",required:"","aria-invalid":!l(y)||l(y)<1},null,8,Si),[[Jt,l(y),void 0,{number:!0}]])],2),c("label",null,[x[8]||(x[8]=Q(" ")),c("div",{class:C(M.$style["aspect-ratio"]),"data-tooltip":l(i)("board.nav.download_image.keep_aspect_ratio"),"data-placement":"left"},[P(V,{"aria-label":l(i)("board.nav.download_image.keep_aspect_ratio"),class:C([M.$style["aspect-ratio-btn"],{[M.$style["aspect-ratio-btn--inactive"]]:!l(p)}]),onClick:x[4]||(x[4]=z=>p.value=!l(p))},{default:H(()=>[l(p)?(k(),it(l(hi),{key:0})):(k(),it(l(gi),{key:1}))]),_:1},8,["aria-label","class"])],10,ki)]),c("label",{class:C([M.$style.label,M.$style["label--small"]])},[Q(B(l(i)("board.nav.download_image.unit_label"))+" ",1),Ft(c("select",{"onUpdate:modelValue":x[5]||(x[5]=z=>kt(b)?b.value=z:null),required:""},[(k(!0),E(dt,null,Zt(Object.keys(l(Mt)),z=>(k(),E("option",{key:z,value:l(Mt)[z],textContent:B(z)},null,8,Ti))),128))],512),[[je,l(b)]])],2)],2),c("label",null,[c("span",{class:C(M.$style.quality)},[Q(B(l(i)("board.nav.download_image.quality_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[6]||(x[6]=z=>kt(g)?g.value=z:null),type:"number",min:"1",max:"100",class:C(M.$style.quality__input),name:"quality","aria-invalid":!l(g)||l(g)>100||l(g)<1},null,10,Ci),[[Jt,l(g),void 0,{number:!0}]]),x[9]||(x[9]=Q(" % "))],2),Ft(c("input",{"onUpdate:modelValue":x[7]||(x[7]=z=>kt(g)?g.value=z:null),type:"range",min:"1",max:"100",name:"quality"},null,512),[[Jt,l(g),void 0,{number:!0}]])])],32)}}}),Ei="f_ag",Ii="f_aj",Di="f_ak",Fi="f_ao",Pi="f_ap",Ni={label:Ei,"label--big":"f_ah","label--small":"f_ai",sizing:Ii,name:Di,"aspect-ratio":"f_al","aspect-ratio-btn":"f_am","aspect-ratio-btn--inactive":"f_an",quality:Fi,quality__input:Pi},Ri={$style:Ni},Ai=Et(Mi,[["__cssModules",Ri]]),Oi={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},zi=c("path",{fill:"currentColor",d:"M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10z"},null,-1),Bi=[zi];function Li(n,t){return k(),E("svg",Oi,[...Bi])}const Gi=Y({name:"carbon-download",render:Li}),Ee=Kt(()=>O()),Ui={key:0},sn="board_svg_download_form",Vi=ot({__name:"BoardControlsSvgDownload",props:{disabled:{type:Boolean,default:!1}},setup(n){const{t}=Wt(),{isSupported:e}=Mn(),s=Ee(),{height:i,width:o}=Oe(s),a=O(!1),r=O(!1);return ze({onEventFired(u){(u.ctrlKey||u.metaKey)&&u.key==="s"&&(u.preventDefault(),a.value=!0)},passive:!1}),(u,d)=>{const m=Ai,b=Ht,p=Cn;return l(e)?(k(),E("li",Ui,[P(b,{tooltip:`${l(t)("board.nav.download_image.action")} [ctrl + s][⌘ + s]`,"tooltip-placement":"left",disabled:n.disabled?void 0:!0,onClick:d[3]||(d[3]=v=>a.value=!0),onTouchstart:d[4]||(d[4]=tt(v=>a.value=!0,["stop","prevent"]))},{default:H(()=>[P(l(Gi)),P(p,{modelValue:l(a),"onUpdate:modelValue":d[2]||(d[2]=v=>kt(a)?a.value=v:null),heading:l(t)("board.nav.download_image.heading")},{footer:H(()=>[P(b,{type:"submit",role:"button",form:sn,disabled:l(r),"aria-busy":l(r),class:C(u.$style["button-submit"]),autofocus:""},{default:H(()=>[Q(B(l(t)("board.nav.download_image.save")),1)]),_:1},8,["disabled","aria-busy","class"])]),default:H(()=>[P(m,{id:sn,"board-height":l(i),"board-width":l(o),onSubmit:d[0]||(d[0]=v=>r.value=!0),onDownloadFinish:d[1]||(d[1]=v=>(r.value=!1,a.value=!1))},null,8,["board-height","board-width"])]),_:1},8,["modelValue","heading"])]),_:1},8,["tooltip","disabled"])])):ct("",!0)}}}),Hi={"button-submit":"f_4"},Wi={$style:Hi},Ki=Et(Vi,[["__cssModules",Wi]]),ji={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Yi=c("path",{fill:"currentColor",d:"M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2m0 26a12 12 0 1 1 12-12a12 12 0 0 1-12 12"},null,-1),qi=c("circle",{cx:"16",cy:"23.5",r:"1.5",fill:"currentColor"},null,-1),Xi=c("path",{fill:"currentColor",d:"M17 8h-1.5a4.49 4.49 0 0 0-4.5 4.5v.5h2v-.5a2.5 2.5 0 0 1 2.5-2.5H17a2.5 2.5 0 0 1 0 5h-2v4.5h2V17a4.5 4.5 0 0 0 0-9"},null,-1),Zi=[Yi,qi,Xi];function Ji(n,t){return k(),E("svg",ji,[...Zi])}const Qi=Y({name:"carbon-help",render:Ji}),ta={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ea=c("path",{fill:"currentColor",d:"M22.5 4c-2 0-3.9.8-5.3 2.2L16 7.4l-1.1-1.1c-2.9-3-7.7-3-10.6-.1l-.1.1c-3 3-3 7.8 0 10.8L16 29l11.8-11.9c3-3 3-7.8 0-10.8C26.4 4.8 24.5 4 22.5 4"},null,-1),na=[ea];function sa(n,t){return k(),E("svg",ta,[...na])}const an=Y({name:"carbon-favorite-filled",render:sa}),ia=["textContent"],aa={rol:"grid"},oa=["textContent"],ra=["textContent"],la=["textContent"],ua=["textContent"],ca=["textContent"],da=["textContent"],fa=["href","data-tooltip","title"],ha={rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle",target:"_blank",title:"GitHub"},va={rel:"noreferrer",href:"https://www.frsource.org/blog/sponsoring",target:"_blank",title:"Sponsoring"},pa=["textContent"],ma=["textContent"],ba=ot({__name:"BoardControlsSvgHelp",setup(n){const{t,tm:e,rt:s}=Wt(),i=O(!1),o=A(()=>e("board.nav.help.content"));return(a,r)=>{const u=ns("RouterLink"),d=Cn,m=Ht;return k(),E("li",null,[P(m,{tooltip:l(t)("board.nav.help.action"),"tooltip-placement":"left",onClick:r[1]||(r[1]=b=>i.value=!0),onTouchstartCapture:r[2]||(r[2]=tt(b=>i.value=!0,["prevent","stop"]))},{default:H(()=>[P(l(Qi)),P(d,{modelValue:l(i),"onUpdate:modelValue":r[0]||(r[0]=b=>kt(i)?i.value=b:null),heading:l(t)("board.nav.help.heading"),class:C(a.$style.modal)},{"footer-pre":H(()=>[c("a",{autofocus:"",rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle",target:"_blank",title:"GitHub",class:C(a.$style.donate)},[P(l(an)),c("small",null,B(l(t)("main.donate_us")),1)],2)]),default:H(()=>[c("ul",null,[(k(!0),E(dt,null,Zt(l(o),b=>(k(),E("li",{key:l(s)(b)},B(l(s)(b)),1))),128))]),r[21]||(r[21]=c("hr",null,null,-1)),c("div",{class:C(a.$style["hide-mobile"])},[c("h4",{textContent:B(l(t)("board.nav.help.key_bindings.heading"))},null,8,ia),c("table",aa,[c("thead",null,[c("tr",null,[r[3]||(r[3]=c("th",{scope:"col",textContent:"Win"},null,-1)),r[4]||(r[4]=c("th",{scope:"col",textContent:"Mac"},null,-1)),c("th",{scope:"col",textContent:B(l(t)("board.nav.help.key_bindings.description"))},null,8,oa)])]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[5]||(r[5]=c("kbd",null,"ctrl",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[6]||(r[6]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[7]||(r[7]=c("kbd",null,"⌘",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[8]||(r[8]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.undo"))},null,8,ra)]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[9]||(r[9]=c("kbd",null,"ctrl",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[10]||(r[10]=c("kbd",null,"shift",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[11]||(r[11]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[12]||(r[12]=c("kbd",null,"⌘",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[13]||(r[13]=c("kbd",null,"shift",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[14]||(r[14]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.download_image.action"))},null,8,la)]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[15]||(r[15]=c("kbd",null,"ctrl",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[16]||(r[16]=c("kbd",null,"s",-1))],2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[17]||(r[17]=c("kbd",null,"⌘",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[18]||(r[18]=c("kbd",null,"s",-1))],2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.redo"))},null,8,ua)]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},r[19]||(r[19]=[c("kbd",null,"f",-1)]),2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},r[20]||(r[20]=[c("kbd",null,"f",-1)]),2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.toggle_fullscreen"))},null,8,ca)])])],2),c("h4",{textContent:B(l(t)("board.nav.help.heading_authors"))},null,8,da),c("p",null,[Q(B(l(t)("main.brought_to_you_by"))+" ",1),c("a",{href:`${"host"in a?a.host:l(ss)}/`,"data-tooltip":l(t)("main.visit_our_website"),title:l(t)("main.visit_our_website")},"FRSOURCE",8,fa)]),c("p",null,[c("a",ha,[P(l(Xn)),Q(" "+B(l(t)("main.star_us_on_github")),1)])]),c("p",null,[c("a",va,[P(l(an)),Q(" "+B(l(t)("main.donate_us")),1)])]),r[22]||(r[22]=c("hr",null,null,-1)),c("p",{class:C(a.$style.terms)},[P(u,{to:{name:`lang-${l(Ye)}-terms`}},{default:H(()=>[c("small",{textContent:B(l(t)("main.terms_and_conditions"))},null,8,pa)]),_:1},8,["to"]),P(u,{to:{name:`lang-${l(Ye)}-privacy-policy`}},{default:H(()=>[c("small",{textContent:B(l(t)("main.privacy_policy"))},null,8,ma)]),_:1},8,["to"])],2)]),_:1},8,["modelValue","heading","class"])]),_:1},8,["tooltip"])])}}}),ga="f_8",ya="f_ab",_a="f_ac",wa={modal:ga,"hide-mobile":"f_9","binding-item":"f__","binding-item-plus":"f_-","list-item":"f_aa",terms:ya,donate:_a},xa={$style:wa},$a=Et(ba,[["__cssModules",xa]]),Sa={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ka=c("path",{fill:"currentColor",d:"M28 10v18H10V10zm0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2"},null,-1),Ta=c("path",{fill:"currentColor",d:"M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z"},null,-1),Ca=[ka,Ta];function Ma(n,t){return k(),E("svg",Sa,[...Ca])}const Ea=Y({name:"carbon-copy",render:Ma}),Ia={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Da=c("path",{fill:"currentColor",d:"m13 24l-9-9l1.414-1.414L13 21.171L26.586 7.586L28 9z"},null,-1),Fa=[Da];function Pa(n,t){return k(),E("svg",Ia,[...Fa])}const Na=Y({name:"carbon-checkmark",render:Pa}),Ra=ot({__name:"BoardSummaryItem",props:{value:{type:Number,default:0}},setup(n){const t=n,e=A(()=>t.value?t.value.toFixed(3):""),{copy:s,copied:i,isSupported:o}=is({source:e});return(a,r)=>{const u=Ht;return k(),E("small",{class:C(a.$style.item),onClick:r[0]||(r[0]=()=>l(s)())},[c("div",null,[se(a.$slots,"default"),c("span",{class:C(a.$style.text)},[l(e)?(k(),E(dt,{key:0},[Q(B(l(e))+"°",1)],64)):(k(),E(dt,{key:1},[Q("?")],64))],2)]),l(o)&&l(e)?(k(),it(u,{key:0,class:C(a.$style.btn),disabled:l(i)},{default:H(()=>[l(i)?(k(),it(l(Na),{key:0})):(k(),it(l(Ea),{key:1}))]),_:1},8,["class","disabled"])):ct("",!0)],2)}}}),Aa="f_5",Oa="f_6",za="f_7",Ba={item:Aa,text:Oa,btn:za},La={$style:Ba},Ga=Et(Ra,[["__cssModules",La]]),Ua={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Va=c("path",{fill:"currentColor",d:"M20 2v2h6.586L18 12.582L19.414 14L28 5.414V12h2V2zm-6 17.416L12.592 18L4 26.586V20H2v10h10v-2H5.414z"},null,-1),Ha=[Va];function Wa(n,t){return k(),E("svg",Ua,[...Ha])}const Ka=Y({name:"carbon-maximize",render:Wa}),ja={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Ya=c("path",{fill:"currentColor",d:"M4 18v2h6.586L2 28.582L3.414 30L12 21.414V28h2V18zM30 3.416L28.592 2L20 10.586V4h-2v10h10v-2h-6.586z"},null,-1),qa=[Ya];function Xa(n,t){return k(),E("svg",ja,[...qa])}const Za=Y({name:"carbon-minimize",render:Xa}),Ja={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Qa=c("path",{fill:"currentColor",d:"M18 12h-4V8h-2v4H8v2h4v4h2v-4h4z"},null,-1),to=c("path",{fill:"currentColor",d:"M21.448 20A10.86 10.86 0 0 0 24 13a11 11 0 1 0-11 11a10.86 10.86 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9"},null,-1),eo=[Qa,to];function no(n,t){return k(),E("svg",Ja,[...eo])}const so=Y({name:"carbon-zoom-in",render:no}),io={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ao=c("path",{fill:"currentColor",d:"M8 12h10v2H8z"},null,-1),oo=c("path",{fill:"currentColor",d:"M21.448 20A10.86 10.86 0 0 0 24 13a11 11 0 1 0-11 11a10.86 10.86 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9"},null,-1),ro=[ao,oo];function lo(n,t){return k(),E("svg",io,[...ro])}const uo=Y({name:"carbon-zoom-out",render:lo}),co={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},fo=c("path",{fill:"currentColor",d:"M4 20v2h4.586L2 28.586L3.414 30L10 23.414V28h2v-8zm15-6a3 3 0 1 0-3-3a3 3 0 0 0 3 3m0-4a1 1 0 1 1-1 1a1 1 0 0 1 1-1"},null,-1),ho=c("path",{fill:"currentColor",d:"M26 4H6a2 2 0 0 0-2 2v10h2V6h20v15.17l-3.59-3.59a2 2 0 0 0-2.82 0L18 19.17L11.83 13l-1.414 1.416L14 18l2.59 2.59a2 2 0 0 0 2.82 0L21 19l5 5v2H16v2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2"},null,-1),vo=[fo,ho];function po(n,t){return k(),E("svg",co,[...vo])}const mo=Y({name:"carbon-image-reference",render:po}),bo={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},go=c("path",{d:"M9 24a3.51 3.51 0 0 0-.88-1.86l9.53-16.58l-1.73-1l-9.57 16.56A3.06 3.06 0 0 0 5.5 21a3.5 3.5 0 1 0 3.15 5H28v-2zm-3.5 2A1.5 1.5 0 1 1 7 24.5A1.5 1.5 0 0 1 5.5 26z",fill:"currentColor"},null,-1),yo=c("path",{d:"M22 21h2a13 13 0 0 0-5.42-10.56l-1.16 1.62A11 11 0 0 1 22 21z",fill:"currentColor"},null,-1),_o=[go,yo];function wo(n,t){return k(),E("svg",bo,[..._o])}const xo=Y({name:"carbon-angle",render:wo}),$o={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},So=c("path",{fill:"currentColor",d:"M20 10H7.815l3.587-3.586L10 5l-6 6l6 6l1.402-1.415L7.818 12H20a6 6 0 0 1 0 12h-8v2h8a8 8 0 0 0 0-16"},null,-1),ko=[So];function To(n,t){return k(),E("svg",$o,[...ko])}const Co=Y({name:"carbon-undo",render:To}),Mo={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Eo=c("path",{fill:"currentColor",d:"M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16"},null,-1),Io=[Eo];function Do(n,t){return k(),E("svg",Mo,[...Io])}const Fo=Y({name:"carbon-redo",render:Do}),Po={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor"},No=c("path",{d:"M18.3 26a3.5 3.5 0 006.6-3.05 3 3 0 00-.7-.8l7.53-15.58-1.73-1-7.57 15.56a2.7 2.7 0 00-.8-.1 3.5 3.5 0 00-3.33 2.97h-17.973v2Zm3.4.1a1.5 1.5 0 111.5-1.5 1.5 1.5 0 01-1.5 1.5Z"},null,-1),Ro=c("path",{d:"M3.75 21.25a13.2 13.2 90 0120.25-10.56l-.87 1.44a11.75 11.75 90 00-17.6 9.13z"},null,-1),Ao=[No,Ro];function Oo(n,t){return k(),E("svg",Po,[...Ao])}const zo=Y({name:"custom-angle-obtuse",render:Oo}),Pe=4,Se=Kt(()=>{const n=O([]),t=O([]),e=O(Pe-1);let s=()=>{},i=()=>{};Z(n,g=>{t.value=[...g]},{deep:!0,flush:"sync"});const o=(g,F)=>{++e.value>=Pe&&(e.value=0,n.value=[]);const M=Math.floor(e.value/2);if(e.value%2){const x=n.value[M][0];if(!x)return;n.value[M]=[x,[g,F]]}else n.value[M]=[[g,F]]},a=(g,F)=>{const M=e.value+1>=Pe?0:e.value+1,x=Math.floor(M/2);if(M%2){const V=t.value[x][0];if(!V)return;t.value[x]=[V,[g,F]]}else t.value[x]=[[g,F]]},{undo:r,redo:u,canUndo:d,canRedo:m}=ye(e),{undo:b,redo:p,canUndo:v,canRedo:y}=ye(n,{deep:!0}),S=()=>{b(),s(),r()},D=()=>{p(),i(),u()};return ze({onEventFired(g){(g.ctrlKey||g.metaKey)&&g.key==="z"&&(g.shiftKey?D():S())}}),{step:e,lines:t,drawNextPoint:o,predictNextPoint:a,undo:S,redo:D,canUndo:A(()=>d.value&&v.value),canRedo:A(()=>m.value&&y.value),registerOnUndo:g=>s=g,registerOnRedo:g=>i=g}});function En(n){const[[[t,e],[s,i]],[[o,a],[r,u]]]=n,d=s-t,m=i-e,b=r-o,p=u-a,v=Math.atan2(d*p-m*b,d*b+m*p);return Math.abs(v)*(180/Math.PI)}function Be(n){return A(()=>{var t,e;return(((t=n.value[0])==null?void 0:t.length)||0)<2||(((e=n.value[1])==null?void 0:e.length)||0)<2?0:En(n.value)})}function Bo(){try{return"constructor"in GestureEvent}catch{return!1}}function In(){return typeof window<"u"&&"ontouchstart"in window}function Dn(n){return"pointerId"in n?null:n.type==="touchend"?n.changedTouches:n.targetTouches}function Le(n){return Array.from(Dn(n)).map(t=>t.identifier)}function Tt(n){const t="buttons"in n?n.buttons:0,{shiftKey:e,altKey:s,metaKey:i,ctrlKey:o}=n;return{buttons:t,shiftKey:e,altKey:s,metaKey:i,ctrlKey:o}}const Ie=n=>n;function on(n,t=Ie){const e=Dn(n),{clientX:s,clientY:i}=e?e[0]:n;return t([s,i])}function rn(n,t,e=Ie){const[s,i]=Array.from(n.touches).filter(v=>t.includes(v.identifier));if(!s||!i)throw Error("The event doesn't have two pointers matching the pointerIds");const o=i.clientX-s.clientX,a=i.clientY-s.clientY,r=(i.clientX+s.clientX)/2,u=(i.clientY+s.clientY)/2,d=Math.hypot(o,a),m=-(Math.atan2(o,a)*180)/Math.PI,b=e([d,m]),p=e([r,u]);return{values:b,origin:p}}const ln=40,un=800;function Fn(n,t=Ie){let{deltaX:e,deltaY:s,deltaMode:i}=n;return i===1?(e*=ln,s*=ln):i===2&&(e*=un,s*=un),t([e,s])}function cn(n,t=Ie){return t([n.scale,n.rotation])}function Pn(){}function Nn(...n){return n.length===0?Pn:n.length===1?n[0]:function(){var t;for(let e of n)t=e.apply(this,arguments)||t;return t}}function At(n,t){if(n===void 0){if(t===void 0)throw new Error("Must define fallback value if undefined is expected");n=t}return Array.isArray(n)?n:[n,n]}function dn(n,t){return Object.assign({},t,n||{})}function ke(n,...t){return typeof n=="function"?n(...t):n}function te(n){return{_active:!1,_blocked:!1,_intentional:[!1,!1],_movement:[0,0],_initial:[0,0],_bounds:[[-1/0,1/0],[-1/0,1/0]],_lastEventType:void 0,_dragStarted:!1,_dragPreventScroll:!1,_dragIsTap:!0,_dragDelayed:!1,event:void 0,intentional:!1,values:[0,0],velocities:[0,0],delta:[0,0],movement:[0,0],offset:[0,0],lastOffset:[0,0],direction:[0,0],initial:[0,0],previous:[0,0],first:!1,last:!1,active:!1,timeStamp:0,startTime:0,elapsedTime:0,cancel:Pn,canceled:!1,memo:void 0,args:void 0,...n}}function Re(){const n={hovering:!1,scrolling:!1,wheeling:!1,dragging:!1,moving:!1,pinching:!1,touches:0,buttons:0,down:!1,shiftKey:!1,altKey:!1,metaKey:!1,ctrlKey:!1,locked:!1},t=te({_pointerId:void 0,axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0,tap:!1,swipe:[0,0]}),e=te({_pointerIds:[],da:[0,0],vdva:[0,0],origin:void 0,turns:0}),s=te({axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0}),i=te({axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0}),o=te({axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0});return{shared:n,drag:t,pinch:e,wheel:s,move:i,scroll:o}}var Lo=Object.defineProperty,Go=(n,t,e)=>t in n?Lo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,et=(n,t,e)=>(Go(n,typeof t!="symbol"?t+"":t,e),e);class Uo{constructor(t){this.classes=t,et(this,"nativeRefs"),et(this,"config"),et(this,"handlers"),et(this,"state"),et(this,"timeouts"),et(this,"domListeners"),et(this,"windowListeners"),et(this,"pointerIds",new Set),et(this,"touchIds",new Set),et(this,"supportsTouchEvents",In()),et(this,"supportsGestureEvents",Bo()),et(this,"bind",(...e)=>{const s={};for(let i of this.classes)new i(this,e).addBindings(s);for(let i in this.nativeRefs)K(s,i,o=>this.nativeRefs[i]({...this.state.shared,event:o,args:e}));return this.config.domTarget?Ko(this,s):jo(this,s)}),et(this,"clean",()=>{const{eventOptions:e,domTarget:s}=this.config,i=l(s);i&&ue(i,On(this.domListeners),e),Object.values(this.timeouts).forEach(clearTimeout),Vo(this)}),et(this,"reset",()=>{this.state=Re()}),this.classes=t,this.state=Re(),this.timeouts={},this.domListeners=[],this.windowListeners={}}}function Rn(n,t){"pointerId"in t?n.pointerIds.add(t.pointerId):n.touchIds=new Set(Le(t))}function An(n,t){"pointerId"in t?n.pointerIds.delete(t.pointerId):Le(t).forEach(e=>n.touchIds.delete(e))}function Vo(n){const{config:{window:t,eventOptions:e},windowListeners:s}=n,i=l(t);if(i){for(let o in s){const a=s[o];ue(i,a,e)}n.windowListeners={}}}function Ho({config:n,windowListeners:t},e,s=n.eventOptions){const i=l(n.window);i&&(ue(i,t[e],s),delete t[e])}function Wo({config:n,windowListeners:t},e,s=[],i=n.eventOptions){const o=l(n.window);o&&(ue(o,t[e],i),zn(o,t[e]=s,i))}function Ko({config:n,domListeners:t},e){const{eventOptions:s,domTarget:i}=n,o=l(i);if(!o)throw new Error("domTarget must be defined");ue(o,On(t),s);for(let[a,r]of Object.entries(e)){const u=a.slice(2).toLowerCase();t.push([u,Nn(...r)])}zn(o,t,s)}function jo({config:n},t){const e={},s=n.eventOptions.capture?"Capture":"";for(let[i,o]of Object.entries(t)){const a=Array.isArray(o)?o:[o],r=i+s;e[r]=Nn(...a)}return e}function On(n=[]){return n.splice(0,n.length)}function K(n,t,e){n[t]||(n[t]=[]),n[t].push(e)}function zn(n,t=[],e={}){if(n)for(let[s,i]of t)n.addEventListener(s,i,e)}function ue(n,t=[],e={}){if(n)for(let[s,i]of t)n.removeEventListener(s,i,e)}function Te(n,t){return n.map((e,s)=>e+t[s])}function Ge(n,t){return n.map((e,s)=>e-t[s])}function re(n){return Math.hypot(...n)}function Yo(n,t=n){const e=re(t),s=e===0?0:1/e,i=t.map(a=>s*a);return{distance:re(n),direction:i}}function Bn(n,t,e){const s=re(t),i=s===0?0:1/s,o=e===0?0:1/e,a=o*s,r=t.map(m=>o*m),u=t.map(m=>i*m),d=re(n);return{velocities:r,velocity:a,distance:d,direction:u}}function Ce(n){return Math.sign?Math.sign(n):+(n>0)-+(n<0)||+n}function qo(n,t,e){return Math.max(t,Math.min(n,e))}function Xo(n,t){return Math.pow(n,t*5)}function fn(n,t,e){return t===0||Math.abs(t)===1/0?Xo(n,e):n*t*e/(t+e*n)}function hn(n,t,e,s=.15){return s===0?qo(n,t,e):ne?+fn(n-e,e-t,s)+e:n}var Zo=Object.defineProperty,Jo=(n,t,e)=>t in n?Zo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ve=(n,t,e)=>(Jo(n,typeof t!="symbol"?t+"":t,e),e);const Ct=new Map,Qo=n=>n;class Ln{constructor(t,e=[]){this.controller=t,this.args=e,ve(this,"debounced",!0),ve(this,"setTimeout",(s,i=140,...o)=>{clearTimeout(this.controller.timeouts[this.stateKey]),this.controller.timeouts[this.stateKey]=window.setTimeout(s,i,...o)}),ve(this,"clearTimeout",()=>{clearTimeout(this.controller.timeouts[this.stateKey])}),ve(this,"fireGestureHandler",(s=!1)=>{if(this.state._blocked)return this.debounced||(this.state._active=!1,this.clean()),null;if(!s&&!this.state.intentional&&!this.config.triggerAllEvents)return null;if(this.state.intentional){const u=this.state.active,d=this.state._active;this.state.active=d,this.state.first=d&&!u,this.state.last=u&&!d,this.controller.state.shared[this.ingKey]=d}const i=this.controller.pointerIds.size||this.controller.touchIds.size,o=this.controller.state.shared.buttons>0||i>0,a={...this.controller.state.shared,...this.state,...this.mapStateValues(this.state),locked:!!document.pointerLockElement,touches:i,down:o},r=this.handler(a);return this.state.memo=r!==void 0?r:this.state.memo,a}),this.controller=t,this.args=e}get config(){return this.controller.config[this.stateKey]}get enabled(){return this.controller.config.enabled&&this.config.enabled}get state(){return this.controller.state[this.stateKey]}get handler(){return this.controller.handlers[this.stateKey]}get transform(){return this.config.transform||this.controller.config.transform||Qo}updateSharedState(t){Object.assign(this.controller.state.shared,t)}updateGestureState(t){Object.assign(this.state,t)}checkIntentionality(t,e){return{_intentional:t,_blocked:!1}}getMovement(t){const{rubberband:e,threshold:s}=this.config,{_bounds:i,_initial:o,_active:a,_intentional:r,lastOffset:u,movement:d}=this.state,m=this.getInternalMovement(t,this.state),b=this.transform(s).map(Math.abs),p=r[0]===!1?vn(m[0],b[0]):r[0],v=r[1]===!1?vn(m[1],b[1]):r[1],y=this.checkIntentionality([p,v],m);if(y._blocked)return{...y,_movement:m,delta:[0,0]};const S=y._intentional,D=m;let g=[S[0]!==!1?m[0]-S[0]:0,S[1]!==!1?m[1]-S[1]:0];const F=Te(g,u),M=a?e:[0,0];return g=pn(i,Te(g,o),M),{...y,intentional:S[0]!==!1||S[1]!==!1,_initial:o,_movement:D,movement:g,values:t,offset:pn(i,F,M),delta:Ge(g,d)}}clean(){this.clearTimeout()}}function vn(n,t){return Math.abs(n)>=t?Ce(n)*t:!1}function pn(n,[t,e],[s,i]){const[[o,a],[r,u]]=n;return[hn(t,o,a,s),hn(e,r,u,i)]}function st({state:n},t,e){const{timeStamp:s,type:i}=t,o=n.values,a=e?0:s-n.startTime;return{_lastEventType:i,event:t,timeStamp:s,elapsedTime:a,previous:o}}function oe({state:n,config:t,stateKey:e,args:s},i,o){const a=n.offset,r=o.timeStamp,{initial:u,bounds:d}=t,m={...Re()[e],_active:!0,args:s,values:i,initial:i,offset:a,lastOffset:a,startTime:r};return{...m,_initial:ke(u,m),_bounds:ke(d,m)}}class Gn extends Ln{getInternalMovement(t,e){return Ge(t,e.initial)}checkIntentionality(t,e){if(t[0]===!1&&t[1]===!1)return{_intentional:t,axis:this.state.axis};const[s,i]=e.map(Math.abs),o=this.state.axis||(s>i?"x":st in n?tr(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,X=(n,t,e)=>(er(n,typeof t!="symbol"?t+"":t,e),e);const nr=3;function mn(n){"persist"in n&&typeof n.persist=="function"&&n.persist()}class sr extends Gn{constructor(){super(...arguments),X(this,"ingKey","dragging"),X(this,"stateKey","drag"),X(this,"setPointerCapture",t=>{if(this.config.useTouch||document.pointerLockElement)return;const{target:e,pointerId:s}=t;e&&"setPointerCapture"in e&&e.setPointerCapture(s),this.updateGestureState({_dragTarget:e,_dragPointerId:s})}),X(this,"releasePointerCapture",()=>{if(this.config.useTouch||document.pointerLockElement)return;const{_dragTarget:t,_dragPointerId:e}=this.state;if(e&&t&&"releasePointerCapture"in t&&(!("hasPointerCapture"in t)||t.hasPointerCapture(e)))try{t.releasePointerCapture(e)}catch{}}),X(this,"preventScroll",t=>{this.state._dragPreventScroll&&t.cancelable&&t.preventDefault()}),X(this,"getEventId",t=>this.config.useTouch?t.changedTouches[0].identifier:t.pointerId),X(this,"isValidEvent",t=>this.state._pointerId===this.getEventId(t)),X(this,"shouldPreventWindowScrollY",this.config.preventWindowScrollY&&this.controller.supportsTouchEvents),X(this,"setUpWindowScrollDetection",t=>{mn(t),Wo(this.controller,this.stateKey,[["touchmove",this.preventScroll],["touchend",this.clean.bind(this)],["touchcancel",this.clean.bind(this)]],{passive:!1}),this.setTimeout(this.startDrag.bind(this),250,t)}),X(this,"setUpDelayedDragTrigger",t=>{this.state._dragDelayed=!0,mn(t),this.setTimeout(this.startDrag.bind(this),this.config.delay,t)}),X(this,"setStartState",t=>{const e=on(t,this.transform);this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,e,t),...st(this,t,!0),_pointerId:this.getEventId(t)}),this.updateGestureState(this.getMovement(e))}),X(this,"onDragStart",t=>{Rn(this.controller,t),!(!this.enabled||this.state._active)&&(this.setStartState(t),this.setPointerCapture(t),this.shouldPreventWindowScrollY?this.setUpWindowScrollDetection(t):this.config.delay>0?this.setUpDelayedDragTrigger(t):this.startDrag(t,!0))}),X(this,"onDragChange",t=>{if(this.state.canceled||!this.state._active||!this.isValidEvent(t)||this.state._lastEventType===t.type&&t.timeStamp===this.state.timeStamp)return;let e;if(document.pointerLockElement){const{movementX:u,movementY:d}=t;e=Te(this.transform([u,d]),this.state.values)}else e=on(t,this.transform);const s=this.getKinematics(e,t);if(!this.state._dragStarted){if(this.state._dragDelayed){this.startDrag(t);return}if(this.shouldPreventWindowScrollY)if(!this.state._dragPreventScroll&&s.axis)if(s.axis==="x")this.startDrag(t);else{this.state._active=!1;return}else return;else return}const i=Tt(t);this.updateSharedState(i);const o=st(this,t),a=re(s._movement);let{_dragIsTap:r}=this.state;r&&a>=nr&&(r=!1),this.updateGestureState({...o,...s,_dragIsTap:r}),this.fireGestureHandler()}),X(this,"onDragEnd",t=>{if(An(this.controller,t),!this.isValidEvent(t)||(this.clean(),!this.state._active))return;this.state._active=!1;const e=this.state._dragIsTap,[s,i]=this.state.velocities,[o,a]=this.state.movement,[r,u]=this.state._intentional,[d,m]=this.config.swipeVelocity,[b,p]=this.config.swipeDistance,v=this.config.swipeDuration,y={...st(this,t),...this.getMovement(this.state.values)},S=[0,0];y.elapsedTimed&&Math.abs(o)>b&&(S[0]=Ce(s)),u!==!1&&Math.abs(i)>m&&Math.abs(a)>p&&(S[1]=Ce(i))),this.updateSharedState({buttons:0}),this.updateGestureState({...y,tap:e,swipe:S}),this.fireGestureHandler(this.config.filterTaps&&e===!0)}),X(this,"clean",()=>{super.clean(),this.state._dragStarted=!1,this.releasePointerCapture(),Ho(this.controller,this.stateKey)}),X(this,"onCancel",()=>{this.state.canceled||(this.updateGestureState({canceled:!0,_active:!1}),this.updateSharedState({buttons:0}),ls(this.fireGestureHandler))}),X(this,"onClick",t=>{this.state._dragIsTap||t.stopPropagation()})}startDrag(t,e=!1){!this.state._active||this.state._dragStarted||(e||this.setStartState(t),this.updateGestureState({_dragStarted:!0,_dragPreventScroll:!0,cancel:this.onCancel}),this.clearTimeout(),this.fireGestureHandler())}addBindings(t){if(this.config.useTouch?(K(t,"onTouchStart",this.onDragStart),K(t,"onTouchMove",this.onDragChange),K(t,"onTouchEnd",this.onDragEnd),K(t,"onTouchCancel",this.onDragEnd)):(K(t,"onPointerDown",this.onDragStart),K(t,"onPointerMove",this.onDragChange),K(t,"onPointerUp",this.onDragEnd),K(t,"onPointerCancel",this.onDragEnd)),this.config.filterTaps){const e=this.controller.config.eventOptions.capture?"onClick":"onClickCapture";K(t,e,this.onClick)}}}function Ue(n,t){let e,s=[],i,o=!1;function a(...r){return o&&e===this&&t(r,s)||(i=n.apply(this,r),o=!0,e=this,s=r),i}return a}function be(n,t){if(n===t)return!0;if(n&&t&&typeof n=="object"&&typeof t=="object"){if(n.constructor!==t.constructor)return!1;let e,s,i;if(Array.isArray(n)){if(e=n.length,e!==t.length)return!1;for(s=e;s--!==0;)if(!be(n[s],t[s]))return!1;return!0}let o;if(typeof Map=="function"&&n instanceof Map&&t instanceof Map){if(n.size!==t.size)return!1;for(o=n.entries();!(s=o.next()).done;)if(!t.has(s.value[0]))return!1;for(o=n.entries();!(s=o.next()).done;)if(!be(s.value[1],t.get(s.value[0])))return!1;return!0}if(typeof Set=="function"&&n instanceof Set&&t instanceof Set){if(n.size!==t.size)return!1;for(o=n.entries();!(s=o.next()).done;)if(!t.has(s.value[0]))return!1;return!0}if(n.constructor===RegExp)return n.source===t.source&&n.flags===t.flags;if(n.valueOf!==Object.prototype.valueOf)return n.valueOf()===t.valueOf();if(n.toString!==Object.prototype.toString)return n.toString()===t.toString();if(i=Object.keys(n),e=i.length,e!==Object.keys(t).length)return!1;for(s=e;s--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[s]))return!1;if(typeof Element<"u"&&n instanceof Element)return!1;for(s=e;s--!==0;)if(!(i[s]==="_owner"&&n.$$typeof)&&!be(n[i[s]],t[i[s]]))return!1;return!0}return n!==n&&t!==t}function Ve(n,t){try{return be(n,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}function ce(n={},t){const e={};for(const[s,i]of Object.entries(t))switch(typeof i){case"function":e[s]=i.call(e,n[s],s,n);break;case"object":e[s]=ce(n[s],i);break;case"boolean":i&&(e[s]=n[s]);break}return e}const ir=180,ar=.15,or=.5,rr=50,lr=250,Un={threshold(n=0){return At(n)},rubberband(n=0){switch(n){case!0:return At(ar);case!1:return At(0);default:return At(n)}},enabled(n=!0){return n},triggerAllEvents(n=!1){return n},initial(n=0){return typeof n=="function"?n:At(n)},transform:!0},He={...Un,axis:!0,lockDirection(n=!1){return n},bounds(n={}){if(typeof n=="function")return o=>He.bounds(n(o));const{left:t=-1/0,right:e=1/0,top:s=-1/0,bottom:i=1/0}=n;return[[t,e],[s,i]]}},ur=typeof window<"u"&&window.document&&window.document.createElement,cr={enabled(n=!0){return n},domTarget:!0,window(n=ur?window:void 0){return n},eventOptions({passive:n=!0,capture:t=!1}={}){return{passive:n,capture:t}},transform:!0},dr={...Un,bounds(n,t,{distanceBounds:e={},angleBounds:s={}}){const i=a=>{const r=dn(ke(e,a),{min:-1/0,max:1/0});return[r.min,r.max]},o=a=>{const r=dn(ke(s,a),{min:-1/0,max:1/0});return[r.min,r.max]};return typeof e!="function"&&typeof s!="function"?[i(),o()]:a=>[i(a),o(a)]}},fr={...He,useTouch(n=!0){return n&&In()},preventWindowScrollY(n=!1){return n},threshold(n,t,{filterTaps:e=!1,lockDirection:s=!1,axis:i=void 0}){const o=At(n,e?3:s||i?1:0);return this.filterTaps=e,o},swipeVelocity(n=or){return At(n)},swipeDistance(n=rr){return At(n)},swipeDuration(n=lr){return n},delay(n=0){switch(n){case!0:return ir;case!1:return 0;default:return n}}};function We(n){return ce(n,cr)}function hr(n={}){return ce(n,He)}function vr(n={}){return ce(n,dr)}function pr(n={}){return ce(n,fr)}function mr({domTarget:n,eventOptions:t,window:e,enabled:s,...i}){const o=We({domTarget:n,eventOptions:t,window:e,enabled:s});return o.drag=pr(i),o}function br({domTarget:n,eventOptions:t,window:e,enabled:s,...i}){const o=We({domTarget:n,eventOptions:t,window:e,enabled:s});return o.pinch=vr(i),o}function gr({domTarget:n,eventOptions:t,window:e,enabled:s,...i}){const o=We({domTarget:n,eventOptions:t,window:e,enabled:s});return o.wheel=hr(i),o}function Ke(n,t,e={}){const s=yr(n),i=new Uo(s);return i.config=t,i.handlers=n,i.nativeRefs=e,as()&&!t.manual&&(os(i.bind),rs(i.clean)),i}function yr(n){const t=new Set;return n.drag&&t.add(Ct.get("drag")),n.wheel&&t.add(Ct.get("wheel")),n.scroll&&t.add(Ct.get("scroll")),n.move&&t.add(Ct.get("move")),n.pinch&&t.add(Ct.get("pinch")),n.hover&&t.add(Ct.get("hover")),t}function _r(n,t={}){Ct.set("drag",sr);const e=O();return e.value||(e.value=Ue(mr,Ve)),Ke({drag:n},e.value(t))}class wr extends Ln{getInternalMovement(t,e){const s=e.values[1];let[i,o=s]=t,a=o-s,r=e.turns;return Math.abs(a)>270&&(r+=Ce(a)),Ge([i,o-360*r],e.initial)}getKinematics(t,e){const s=this.getMovement(t),i=(t[1]-s._movement[1]-this.state.initial[1])/360,o=e.timeStamp-this.state.timeStamp,{distance:a,velocity:r,...u}=Bn(s.movement,s.delta,o);return{turns:i,...s,...u}}mapStateValues(t){return{da:t.values,vdva:t.velocities}}}var xr=Object.defineProperty,$r=(n,t,e)=>t in n?xr(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,J=(n,t,e)=>($r(n,typeof t!="symbol"?t+"":t,e),e);const Sr=7,kr=260;class Tr extends wr{constructor(){super(...arguments),J(this,"ingKey","pinching"),J(this,"stateKey","pinch"),J(this,"onPinchStart",t=>{Rn(this.controller,t);const e=this.controller.touchIds;if(!this.enabled||this.state._active&&this.state._pointerIds.every(a=>e.has(a))||e.size<2)return;const s=Array.from(e).slice(0,2),{values:i,origin:o}=rn(t,s,this.transform);this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,i,t),...st(this,t,!0),_pointerIds:s,cancel:this.onCancel,origin:o}),this.updateGestureState(this.getMovement(i)),this.fireGestureHandler()}),J(this,"onPinchChange",t=>{const{canceled:e,_active:s}=this.state;if(e||!s||t.timeStamp===this.state.timeStamp)return;const i=Tt(t);this.updateSharedState(i);try{const{values:o,origin:a}=rn(t,this.state._pointerIds,this.transform),r=this.getKinematics(o,t);this.updateGestureState({...st(this,t),...r,origin:a}),this.fireGestureHandler()}catch{this.onPinchEnd(t)}}),J(this,"onPinchEnd",t=>{An(this.controller,t);const e=Le(t);this.state._pointerIds.every(s=>!e.includes(s))||(this.clean(),this.state._active&&(this.updateGestureState({...st(this,t),...this.getMovement(this.state.values),_active:!1}),this.fireGestureHandler()))}),J(this,"onCancel",()=>{this.state.canceled||(this.updateGestureState({_active:!1,canceled:!0}),this.fireGestureHandler())}),J(this,"onGestureStart",t=>{if(!this.enabled)return;t.preventDefault();const e=cn(t,this.transform);this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,e,t),...st(this,t,!0),origin:[t.clientX,t.clientY],cancel:this.onCancel}),this.updateGestureState(this.getMovement(e)),this.fireGestureHandler()}),J(this,"onGestureChange",t=>{const{canceled:e,_active:s}=this.state;if(e||!s)return;t.preventDefault();const i=Tt(t);this.updateSharedState(i);const o=cn(t,this.transform);o[0]=(o[0]-this.state.event.scale)*kr+this.state.values[0];const a=this.getKinematics(o,t);this.updateGestureState({...st(this,t),...a,origin:[t.clientX,t.clientY]}),this.fireGestureHandler()}),J(this,"onGestureEnd",t=>{this.clean(),this.state._active&&(this.updateGestureState({...st(this,t),...this.getMovement(this.state.values),_active:!1,origin:[t.clientX,t.clientY]}),this.fireGestureHandler())}),J(this,"wheelShouldRun",t=>this.enabled&&t.ctrlKey),J(this,"getWheelValuesFromEvent",t=>{const[,e]=Fn(t,this.transform),{values:[s,i]}=this.state;return{values:[s-e*Sr,i!==void 0?i:0],origin:[t.clientX,t.clientY],delta:[0,e]}}),J(this,"onWheel",t=>{this.wheelShouldRun(t)&&(this.setTimeout(this.onWheelEnd),this.state._active?this.onWheelChange(t):this.onWheelStart(t))}),J(this,"onWheelStart",t=>{const{values:e,delta:s,origin:i}=this.getWheelValuesFromEvent(t);t.cancelable&&t.preventDefault(),this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,e,t),...st(this,t,!0),initial:this.state.values,offset:e,delta:s,origin:i}),this.updateGestureState(this.getMovement(e)),this.fireGestureHandler()}),J(this,"onWheelChange",t=>{t.cancelable&&t.preventDefault(),this.updateSharedState(Tt(t));const{values:e,origin:s,delta:i}=this.getWheelValuesFromEvent(t);this.updateGestureState({...st(this,t),...this.getKinematics(e,t),origin:s,delta:i}),this.fireGestureHandler()}),J(this,"onWheelEnd",()=>{this.clean(),this.state._active&&(this.state._active=!1,this.updateGestureState(this.getMovement(this.state.values)),this.fireGestureHandler())})}addBindings(t){this.controller.config.domTarget&&!this.controller.supportsTouchEvents&&this.controller.supportsGestureEvents?(K(t,"onGestureStart",this.onGestureStart),K(t,"onGestureChange",this.onGestureChange),K(t,"onGestureEnd",this.onGestureEnd)):(K(t,"onTouchStart",this.onPinchStart),K(t,"onTouchMove",this.onPinchChange),K(t,"onTouchEnd",this.onPinchEnd),K(t,"onTouchCancel",this.onPinchEnd),K(t,"onWheel",this.onWheel))}}var Cr=Object.defineProperty,Mr=(n,t,e)=>t in n?Cr(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ee=(n,t,e)=>(Mr(n,typeof t!="symbol"?t+"":t,e),e);class Er extends Gn{constructor(){super(...arguments),ee(this,"ingKey","wheeling"),ee(this,"stateKey","wheel"),ee(this,"debounced",!0),ee(this,"handleEvent",t=>{if(t.ctrlKey&&"pinch"in this.controller.handlers||!this.enabled)return;this.setTimeout(this.onEnd),this.updateSharedState(Tt(t));const e=Te(Fn(t,this.transform),this.state.values);if(this.state._active)this.updateGestureState({...st(this,t),...this.getKinematics(e,t)});else{this.updateGestureState({...oe(this,e,t),...st(this,t,!0),initial:this.state.values});const s=this.getMovement(e),i=Yo(s.delta);this.updateGestureState(s),this.updateGestureState(i)}this.fireGestureHandler()}),ee(this,"onEnd",()=>{if(this.clean(),!this.state._active)return;const t=this.getMovement(this.state.values);this.updateGestureState(t),this.updateGestureState({_active:!1,velocities:[0,0],velocity:0}),this.fireGestureHandler()})}addBindings(t){K(t,"onWheel",this.handleEvent)}}function Ir(n,t={}){Ct.set("pinch",Tr);const e=O();return e.value||(e.value=Ue(br,Ve)),Ke({pinch:n},e.value(t))}function Dr(n,t={}){Ct.set("wheel",Er);const e=O();return e.value||(e.value=Ue(gr,Ve)),Ke({wheel:n},e.value(t))}function Fr(n,t){const e=us(t),s=A(()=>{var p;return((p=l(e))==null?void 0:p.enabled)??!0}),i=O(!1),o=O([0,0]),a=O(1),r=A({set(p){return p>10?a.value=10:p<.1?a.value=.1:a.value=p,a.value},get(){return a.value}}),u=O([0,0]),d=A(()=>{var p;return(p=yn(n))==null?void 0:p.getBoundingClientRect()}),m=p=>(p=(p+1800)/1800,p<=0?.01:p),b=({wheeling:p,dragging:v,pinching:y,intentional:S,enabled:D,touches:g,ctrlKey:F,event:M})=>{const x=!D||!S?!1:v&&(g===2||"pointerType"in M&&M.pointerType==="mouse")||y||p&&!F;return i.value?requestAnimationFrame(()=>i.value=x):i.value=x,x};return _r(({wheeling:p,dragging:v,pinching:y,touches:S,intentional:D,delta:g,ctrlKey:F,event:M})=>{b({wheeling:p,dragging:v,pinching:y,intentional:D,enabled:s.value,ctrlKey:F,touches:S,event:M})&&(o.value[0]+=g[0],o.value[1]+=g[1])},{domTarget:n,filterTaps:!0}),Dr(({event:p,delta:v,wheeling:y,dragging:S,pinching:D,touches:g,intentional:F,ctrlKey:M})=>{b({dragging:S,pinching:D,wheeling:y,intentional:F,enabled:s.value,touches:g,ctrlKey:M,event:p})&&(p.preventDefault(),o.value[0]+=v[0],o.value[1]+=v[1])},{domTarget:n,eventOptions:{passive:!1}}),Ir(({offset:[p],origin:v,pinching:y,dragging:S,wheeling:D,ctrlKey:g,touches:F,intentional:M,event:x})=>{if(!b({dragging:S,pinching:y,wheeling:D,intentional:M,enabled:s.value,touches:F,ctrlKey:g,event:x}))return;const V=r.value;r.value=m(p),d.value&&(v[0]-=d.value.x,v[1]-=d.value.y,o.value[0]-=(v[0]-d.value.width/2)*(r.value-V),o.value[1]-=(v[1]-d.value.height/2)*(r.value-V)),o.value[0]-=v[0]-u.value[0],o.value[1]-=v[1]-u.value[1],u.value=v},{domTarget:n,eventOptions:{passive:!1},distanceBounds:()=>({min:-1800,max:16200})}),{offset:A(()=>[o.value[0]+u.value[0],o.value[1]+u.value[1]]),zoom:r,transformOrigin:u,active:i}}const Vn=Kt(()=>Fr(Me())),Hn=Kt(()=>{const n=O(""),t=O(0),e=O(0);return{src:n,width:t,height:e,processFiles:i=>{if(!((i==null?void 0:i[0])instanceof File))return;const o=new FileReader;o.addEventListener("load",a=>{var r;if((r=a.target)!=null&&r.result){const u=new Image;u.onload=()=>{n.value=u.src,t.value=u.width,e.value=u.height},u.src=a.target.result.toString()}}),o.readAsDataURL(i[0])}}}),Pr={class:"d-none md-d-inline-block"},Nr={class:"d-none md-d-inline-block"},Rr={key:0},Ar=ot({__name:"BoardControls",props:{info:{type:Array,required:!0}},setup(n){const{t}=Wt(),{lines:e}=Se(),s=Be(e),{zoom:i,transformOrigin:o}=Vn(),a=Ee(),r=Me(),u=A(()=>{const U=yn(r);return U?U.viewBox.baseVal:{x:0,y:0,width:0,height:0}});function d(){o.value=[(u.value.width/2-(u.value.x+u.value.width/2)/2)*i.value,(u.value.height/2-(u.value.y+u.value.height/2)/2)*i.value]}function m(){d(),i.value+=.1}function b(){d(),i.value-=.1}const{toggle:p,isFullscreen:v,isSupported:y}=cs(a),{undo:S,redo:D,canUndo:g,canRedo:F}=Se(),M=A(()=>`${t("board.nav.undo")} [ctrl + z][⌘ + z]`),x=A(()=>`${t("board.nav.redo")} [ctrl + shift + z][⌘ + shift + z]`),V=O();Z(s,U=>U===void 0?V.value=void 0:V.value=U>90?180-U:U);const z=A(()=>V.value?180-V.value:void 0),{processFiles:xt}=Hn(),{files:Ot,open:$t}=ds({multiple:!1,accept:"image/*"});return fs(Ot,U=>{xt(Array.from(U))}),_n("f",p),(U,T)=>{const f=Ga,h=$a,_=Ht,N=Ki;return k(),E("div",{class:C([U.$style.bar,"pointer-none"])},[c("div",{class:C(["pointer-all bg-bg-transparent-inverse text-inverse whitespace-nowrap",U.$style["info-box"]]),onMousemoveCapture:T[0]||(T[0]=tt(()=>{},["prevent","stop"]))},[P(f,{value:l(V)},{default:H(()=>[P(l(xo))]),_:1},8,["value"]),P(f,{value:l(z)},{default:H(()=>[P(l(zo))]),_:1},8,["value"])],34),(k(!0),E(dt,null,Zt(n.info,R=>(k(),E("li",{key:R,class:C(["bg-bg-transparent-inverse text-inverse min-w-0",U.$style["info-box"]])},[c("small",null,B(R),1)],2))),128)),c("nav",{class:C(U.$style.nav)},[c("ul",{class:C(["pointer-all",U.$style.nav__btns])},[P(h),c("li",null,[P(_,{disabled:!l(g),tooltip:l(M),"tooltip-placement":"left",onClick:l(S),onTouchstartCapture:tt(l(S),["prevent","stop"])},{default:H(()=>[P(l(Co))]),_:1},8,["disabled","tooltip","onClick","onTouchstartCapture"])]),c("li",null,[P(_,{disabled:!l(F),tooltip:l(x),"tooltip-placement":"left",onClick:l(D),onTouchstartCapture:tt(l(D),["prevent","stop"])},{default:H(()=>[P(l(Fo))]),_:1},8,["disabled","tooltip","onClick","onTouchstartCapture"])]),P(N,{disabled:l(g)},null,8,["disabled"]),c("li",null,[P(_,{tooltip:l(t)("board.nav.upload_file"),"tooltip-placement":"left",onClick:T[1]||(T[1]=R=>l($t)()),onTouchstartCapture:T[2]||(T[2]=tt(()=>{},["stop"]))},{default:H(()=>[P(l(mo))]),_:1},8,["tooltip"])]),c("li",Pr,[P(_,{disabled:!l(g),tooltip:`${l(t)("board.result.zoom_out")} [-]`,"tooltip-placement":"left",onClick:T[3]||(T[3]=R=>b()),onTouchstartCapture:T[4]||(T[4]=tt(R=>b(),["prevent","stop"]))},{default:H(()=>[P(l(uo))]),_:1},8,["disabled","tooltip"])]),c("li",Nr,[P(_,{disabled:!l(g),tooltip:`${l(t)("board.result.zoom_in")} [+]`,"tooltip-placement":"left",onClick:T[5]||(T[5]=R=>m()),onTouchstartCapture:T[6]||(T[6]=tt(R=>m(),["prevent","stop"]))},{default:H(()=>[P(l(so))]),_:1},8,["disabled","tooltip"])]),l(y)?(k(),E("li",Rr,[P(_,{tooltip:`${l(t)("board.nav.toggle_fullscreen")} [f]`,"tooltip-placement":"left",onClick:l(p),onTouchstartCapture:tt(l(p),["prevent","stop"])},{default:H(()=>[l(v)?(k(),it(l(Za),{key:0})):(k(),it(l(Ka),{key:1}))]),_:1},8,["tooltip","onClick","onTouchstartCapture"])])):ct("",!0)],2)],2)],2)}}}),Or="f_p",zr="f_q",Br={bar:Or,nav__btns:zr,"info-box":"f_r"},Lr={$style:Br},Gr=Et(Ar,[["__cssModules",Lr]]),Ur=["x1","y1","x2","y2"],Vr=ot({__name:"Segment",props:{pointStart:{type:Array,default:void 0},pointStop:{type:Array,default:void 0}},setup(n){return(t,e)=>n.pointStart&&n.pointStop?(k(),E("line",{key:0,x1:n.pointStart[0],y1:n.pointStart[1],x2:n.pointStop[0],y2:n.pointStop[1]},null,8,Ur)):ct("",!0)}}),Hr=hs((n,t,e,s)=>{if(!n||!t||!e||!s)return;n===e&&(n+=.1);const i=(t-s)/(n-e),o=s-e*i;return{slope:i,intercept:o}});function le(n){return A(()=>Hr(...n.value[0]||[],...n.value[1]||[]))}var I=function(n,t,e){if(!t.has(n))throw new TypeError("attempted to set private field on non-instance");return t.set(n,e),e},w=function(n,t){if(!t.has(n))throw new TypeError("attempted to get private field on non-instance");return t.get(n)},Pt,Bt,ut,qt,ne,vt,pt,mt,bt,gt,yt,_t,wt,Lt,Xt,Nt,ge,Rt;const Wr=function(n){var t=131,e=137,s=0;n+="x";var i=Math.floor(9007199254740991/e);for(let o=0;oi&&(s=Math.floor(s/e)),s=s*t+n.charCodeAt(o);return s},$="0123456789abcdef".split(""),Kr=[-2147483648,8388608,32768,128],lt=[24,16,8,0],pe=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],j=[];class jr{constructor(t=!1,e=!1){Pt.set(this,void 0),Bt.set(this,void 0),ut.set(this,void 0),qt.set(this,void 0),ne.set(this,void 0),vt.set(this,void 0),pt.set(this,void 0),mt.set(this,void 0),bt.set(this,void 0),gt.set(this,void 0),yt.set(this,void 0),_t.set(this,void 0),wt.set(this,void 0),Lt.set(this,void 0),Xt.set(this,void 0),Nt.set(this,void 0),ge.set(this,0),Rt.set(this,void 0),this.init(t,e)}init(t,e){e?(j[0]=j[16]=j[1]=j[2]=j[3]=j[4]=j[5]=j[6]=j[7]=j[8]=j[9]=j[10]=j[11]=j[12]=j[13]=j[14]=j[15]=0,I(this,Bt,j)):I(this,Bt,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),t?(I(this,vt,3238371032),I(this,pt,914150663),I(this,mt,812702999),I(this,bt,4144912697),I(this,gt,4290775857),I(this,yt,1750603025),I(this,_t,1694076839),I(this,wt,3204075428)):(I(this,vt,1779033703),I(this,pt,3144134277),I(this,mt,1013904242),I(this,bt,2773480762),I(this,gt,1359893119),I(this,yt,2600822924),I(this,_t,528734635),I(this,wt,1541459225)),I(this,Pt,I(this,Rt,I(this,ut,I(this,Xt,0)))),I(this,qt,I(this,Lt,!1)),I(this,ne,!0),I(this,Nt,t)}update(t){if(w(this,qt))return this;let e;t instanceof ArrayBuffer?e=new Uint8Array(t):e=t;let s=0;const i=e.length,o=w(this,Bt);for(;s>2]|=e[s]<>2]|=r<>2]|=(192|r>>6)<>2]|=(128|r&63)<=57344?(o[a>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|r&63)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|r&63)<=64?(I(this,Pt,o[16]),I(this,Rt,a-64),this.hash(),I(this,Lt,!0)):I(this,Rt,a)}return w(this,ut)>4294967295&&(I(this,Xt,w(this,Xt)+(w(this,ut)/4294967296<<0)),I(this,ut,w(this,ut)%4294967296)),this}finalize(){if(w(this,qt))return;I(this,qt,!0);const t=w(this,Bt),e=w(this,ge);t[16]=w(this,Pt),t[e>>2]|=Kr[e&3],I(this,Pt,t[16]),e>=56&&(w(this,Lt)||this.hash(),t[0]=w(this,Pt),t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=w(this,Xt)<<3|w(this,ut)>>>29,t[15]=w(this,ut)<<3,this.hash()}hash(){let t=w(this,vt),e=w(this,pt),s=w(this,mt),i=w(this,bt),o=w(this,gt),a=w(this,yt),r=w(this,_t),u=w(this,wt);const d=w(this,Bt);let m,b,p,v,y,S,D,g,F,M;for(let x=16;x<64;++x)v=d[x-15],m=(v>>>7|v<<25)^(v>>>18|v<<14)^v>>>3,v=d[x-2],b=(v>>>17|v<<15)^(v>>>19|v<<13)^v>>>10,d[x]=d[x-16]+m+d[x-7]+b<<0;M=e&s;for(let x=0;x<64;x+=4)w(this,ne)?(w(this,Nt)?(D=300032,v=d[0]-1413257819,u=v-150054599<<0,i=v+24177077<<0):(D=704751109,v=d[0]-210244248,u=v-1521486534<<0,i=v+143694565<<0),I(this,ne,!1)):(m=(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10),b=(o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7),D=t&e,p=D^t&s^M,S=o&a^~o&r,v=u+b+S+pe[x]+d[x],y=m+p,u=i+v<<0,i=v+y<<0),m=(i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10),b=(u>>>6|u<<26)^(u>>>11|u<<21)^(u>>>25|u<<7),g=i&t,p=g^i&e^D,S=u&o^~u&a,v=r+b+S+pe[x+1]+d[x+1],y=m+p,r=s+v<<0,s=v+y<<0,m=(s>>>2|s<<30)^(s>>>13|s<<19)^(s>>>22|s<<10),b=(r>>>6|r<<26)^(r>>>11|r<<21)^(r>>>25|r<<7),F=s&i,p=F^s&t^g,S=r&u^~r&o,v=a+b+S+pe[x+2]+d[x+2],y=m+p,a=e+v<<0,e=v+y<<0,m=(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10),b=(a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7),M=e&s,p=M^e&i^F,S=a&r^~a&u,v=o+b+S+pe[x+3]+d[x+3],y=m+p,o=t+v<<0,t=v+y<<0;I(this,vt,w(this,vt)+t<<0),I(this,pt,w(this,pt)+e<<0),I(this,mt,w(this,mt)+s<<0),I(this,bt,w(this,bt)+i<<0),I(this,gt,w(this,gt)+o<<0),I(this,yt,w(this,yt)+a<<0),I(this,_t,w(this,_t)+r<<0),I(this,wt,w(this,wt)+u<<0)}hex(){this.finalize();const t=w(this,vt),e=w(this,pt),s=w(this,mt),i=w(this,bt),o=w(this,gt),a=w(this,yt),r=w(this,_t),u=w(this,wt);let d=$[t>>28&15]+$[t>>24&15]+$[t>>20&15]+$[t>>16&15]+$[t>>12&15]+$[t>>8&15]+$[t>>4&15]+$[t&15]+$[e>>28&15]+$[e>>24&15]+$[e>>20&15]+$[e>>16&15]+$[e>>12&15]+$[e>>8&15]+$[e>>4&15]+$[e&15]+$[s>>28&15]+$[s>>24&15]+$[s>>20&15]+$[s>>16&15]+$[s>>12&15]+$[s>>8&15]+$[s>>4&15]+$[s&15]+$[i>>28&15]+$[i>>24&15]+$[i>>20&15]+$[i>>16&15]+$[i>>12&15]+$[i>>8&15]+$[i>>4&15]+$[i&15]+$[o>>28&15]+$[o>>24&15]+$[o>>20&15]+$[o>>16&15]+$[o>>12&15]+$[o>>8&15]+$[o>>4&15]+$[o&15]+$[a>>28&15]+$[a>>24&15]+$[a>>20&15]+$[a>>16&15]+$[a>>12&15]+$[a>>8&15]+$[a>>4&15]+$[a&15]+$[r>>28&15]+$[r>>24&15]+$[r>>20&15]+$[r>>16&15]+$[r>>12&15]+$[r>>8&15]+$[r>>4&15]+$[r&15];return w(this,Nt)||(d+=$[u>>28&15]+$[u>>24&15]+$[u>>20&15]+$[u>>16&15]+$[u>>12&15]+$[u>>8&15]+$[u>>4&15]+$[u&15]),d}toString(){return this.hex()}digest(){this.finalize();const t=w(this,vt),e=w(this,pt),s=w(this,mt),i=w(this,bt),o=w(this,gt),a=w(this,yt),r=w(this,_t),u=w(this,wt),d=[t>>24&255,t>>16&255,t>>8&255,t&255,e>>24&255,e>>16&255,e>>8&255,e&255,s>>24&255,s>>16&255,s>>8&255,s&255,i>>24&255,i>>16&255,i>>8&255,i&255,o>>24&255,o>>16&255,o>>8&255,o&255,a>>24&255,a>>16&255,a>>8&255,a&255,r>>24&255,r>>16&255,r>>8&255,r&255];return w(this,Nt)||d.push(u>>24&255,u>>16&255,u>>8&255,u&255),d}array(){return this.digest()}arrayBuffer(){this.finalize();const t=new ArrayBuffer(w(this,Nt)?28:32),e=new DataView(t);return e.setUint32(0,w(this,vt)),e.setUint32(4,w(this,pt)),e.setUint32(8,w(this,mt)),e.setUint32(12,w(this,bt)),e.setUint32(16,w(this,gt)),e.setUint32(20,w(this,yt)),e.setUint32(24,w(this,_t)),w(this,Nt)||e.setUint32(28,w(this,wt)),t}}Pt=new WeakMap,Bt=new WeakMap,ut=new WeakMap,qt=new WeakMap,ne=new WeakMap,vt=new WeakMap,pt=new WeakMap,mt=new WeakMap,bt=new WeakMap,gt=new WeakMap,yt=new WeakMap,_t=new WeakMap,wt=new WeakMap,Lt=new WeakMap,Xt=new WeakMap,Nt=new WeakMap,ge=new WeakMap,Rt=new WeakMap;function Yr(n){const t=new jr;return t.update(n),parseInt(t.hex().substring(0,8),16)}const qr=function(n){var t="#";return n.forEach(function(e){e<16&&(t+=0),t+=e.toString(16)}),t},Xr=function(n,t,e){n/=360;var s=e<.5?e*(1+t):e+t-e*t,i=2*e-s;return[n+1/3,n,n-1/3].map(function(o){return o<0&&o++,o>1&&o--,o<1/6?o=i+(s-i)*6*o:o<.5?o=s:o<2/3?o=i+(s-i)*6*(2/3-o):o=i,Math.round(o*255)})};class Zr{constructor(t={}){const[e,s]=[t.lightness,t.saturation].map(function(i){return i=i!==void 0?i:[.35,.5,.65],Array.isArray(i)?i.concat():[i]});this.L=e,this.S=s,typeof t.hue=="number"&&(t.hue={min:t.hue,max:t.hue}),typeof t.hue=="object"&&!Array.isArray(t.hue)&&(t.hue=[t.hue]),typeof t.hue>"u"&&(t.hue=[]),this.hueRanges=t.hue.map(function(i){return{min:typeof i.min>"u"?0:i.min,max:typeof i.max>"u"?360:i.max}}),this.hash=Yr,typeof t.hash=="function"&&(this.hash=t.hash),t.hash==="bkdr"&&(this.hash=Wr)}hsl(t){var e,s,i,o=this.hash(t),a=727;if(this.hueRanges.length){const r=this.hueRanges[o%this.hueRanges.length];e=o/this.hueRanges.length%a*(r.max-r.min)/a+r.min}else e=o%359;return o=Math.ceil(o/360),s=this.S[o%this.S.length],o=Math.ceil(o/this.S.length),i=this.L[o%this.L.length],[e,s,i]}rgb(t){var e=this.hsl(t);return Xr.apply(this,e)}hex(t){var e=this.rgb(t);return qr(e)}}const Jr=Array.from({length:550},(n,t)=>(t+401)/1e3),Qr=Array.from({length:551},(n,t)=>(t+50)/1e3);function Ae(n){return A(()=>{const t=JSON.stringify(n.value),e=De.value?Jr:Qr,[s,i,o]=new Zr({lightness:e}).hsl(t);return`hsl(${[s,`${De.value&&o<.3||!De.value&&o>.7?Math.min(i+.4,1)*100:i*100}%`,`${o*100}%`].join(",")})`})}const Wn=ot({__name:"Line",props:{points:{type:Array,default:()=>[]},pathWidth:{type:Number,default:1},svgSize:{type:Object,default:void 0},svgOffset:{type:Object,default:void 0}},setup(n){const t=n,e=le(qe(t,"points")),s=Ae(qe(t,"points")),i=A(()=>{var p,v,y,S;const{svgSize:a,svgOffset:r}=t;if(!a||!r||!e.value||((p=t.points[0])==null?void 0:p[0])===((v=t.points[1])==null?void 0:v[0])&&((y=t.points[0])==null?void 0:y[1])===((S=t.points[1])==null?void 0:S[1]))return;const{slope:u,intercept:d}=e.value,m=r.x,b=a.width+r.x;return[[m,u*m+d],[b,u*b+d]]}),o=A(()=>`${t.pathWidth} ${2*t.pathWidth}`);return(a,r)=>{const u=Vr;return k(),E(dt,null,[i.value?(k(),E(dt,{key:0},[P(u,Ut(a.$attrs,{"stroke-width":n.pathWidth*.8,stroke:"var(--background-color-transparent)","point-start":i.value[0],"point-stop":i.value[1],"stroke-dasharray":o.value,"stroke-linecap":"round",opacity:".2"}),null,16,["stroke-width","point-start","point-stop","stroke-dasharray"]),P(u,Ut({"stroke-width":n.pathWidth*.4,stroke:l(s)},a.$attrs,{"point-start":i.value[0],"point-stop":i.value[1],"stroke-dasharray":o.value,"stroke-linecap":"round"}),null,16,["stroke-width","stroke","point-start","point-stop","stroke-dasharray"])],64)):ct("",!0),P(u,Ut(a.$attrs,{"stroke-width":n.pathWidth*1.2,stroke:"var(--background-color-transparent)","point-start":n.points[0],"point-stop":n.points[1],"stroke-linecap":"round",opacity:".3"}),null,16,["stroke-width","point-start","point-stop"]),P(u,Ut({stroke:l(s)},a.$attrs,{"stroke-linecap":"round","point-start":n.points[0],"point-stop":n.points[1]}),null,16,["stroke","point-start","point-stop"])],64)}}}),tl={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},el=c("path",{fill:"currentColor",d:"M24 19h-3v-3h-2v3h-3v2h3v3h2v-3h3z"},null,-1),nl=c("path",{fill:"currentColor",d:"m31 29.586l-4.688-4.688a8.028 8.028 0 1 0-1.415 1.414L29.586 31zM20 26a6 6 0 1 1 6-6a6.007 6.007 0 0 1-6 6M4 8H2V4a2 2 0 0 1 2-2h4v2H4zm22 0h-2V4h-4V2h4a2 2 0 0 1 2 2zM12 2h4v2h-4zM8 26H4a2 2 0 0 1-2-2v-4h2v4h4zM2 12h2v4H2z"},null,-1),sl=[el,nl];function il(n,t){return k(),E("svg",tl,[...sl])}const al=Y({name:"carbon-zoom-in-area",render:il}),ol={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},rl=c("path",{fill:"currentColor",d:"M16 19h8v2h-8z"},null,-1),ll=c("path",{fill:"currentColor",d:"m31 29.586l-4.688-4.688a8.028 8.028 0 1 0-1.415 1.414L29.586 31zM20 26a6 6 0 1 1 6-6a6.007 6.007 0 0 1-6 6M4 8H2V4a2 2 0 0 1 2-2h4v2H4zm22 0h-2V4h-4V2h4a2 2 0 0 1 2 2zM12 2h4v2h-4zM8 26H4a2 2 0 0 1-2-2v-4h2v4h4zM2 12h2v4H2z"},null,-1),ul=[rl,ll];function cl(n,t){return k(),E("svg",ol,[...ul])}const dl=Y({name:"carbon-zoom-out-area",render:cl});var St=(n=>(n[n.UP=0]="UP",n[n.DOWN=1]="DOWN",n[n.LEFT=2]="LEFT",n[n.RIGHT=3]="RIGHT",n))(St||{});const Kn=Kt(()=>{const n=O(!1);return{outOfBoundLabels:n,setOutBoundLabels(t,e,s){const i={x:30,y:4.5},o=t.find(({x:u,y:d})=>(u-=s.x,d-=s.y,ue.width-i.x||de.height-i.y));if(!o)return n.value=!1;let{x:a,y:r}=o;return a-=s.x,r-=s.y,ae.width-i.x?n.value={direction:3,y:r}:r{if(!n.value||!t.value)return;const{slope:e,intercept:s}=n.value,{slope:i,intercept:o}=t.value;let a;return e===i?a=o-s:a=(s-o)/(i-e),{x:a,y:e*a+s}})}function Yn(n,t,e,s){return A(()=>{if(!t.value||!e.value||!s.value||!n.value)return;const i=e.value,o=s.value;let a=Math.tan((Math.atan(i.slope)+Math.atan(o.slope))/2),r=-1/a,u=i.slope*t.value.x+i.intercept-a*t.value.x,d=i.slope*t.value.x+i.intercept-r*t.value.x;const m=En([[[0,i.intercept],[t.value.x,i.slope*t.value.x+i.intercept]],[[0,u],[t.value.x,a*t.value.x+u]]])*2;return(m-1>n.value||m+1{if(!t.value||!e.value||!n.value)return s.value=[];const{acute:{slope:i,intercept:o},obtuse:{slope:a,intercept:r}}=e.value,u=70,d=n.value,m=Math.cos(Math.atan(i))*(u+(90-d)*.4)+t.value.x,b=180-d,p=-Math.cos(Math.atan(a))*(u+(90-b)*.4)+t.value.x;s.value=[{x:m,y:i*m+o,value:d},{x:p,y:a*p+r,value:b}]},{throttle:20,immediate:!0}),s}function bn(n,t){return A(()=>{if(!t.value||!n.value)return;const{slope:e,intercept:s}=n.value,{x1:i,x2:o}=t.value;return[[i,e*i+s],[o,e*o+s]]})}const fl=["viewBox"],hl=["transform"],vl=["x","y"],pl=ot({__name:"BoardResult",setup(n){const{t}=Wt(),e=O(!1);function s(){e.value&&(e.value=!1)}const i=O();ps(i,s),_n("Escape",s);const{height:o,width:a}=Oe(Ee()),r=A(()=>({width:300,height:300*o.value/a.value})),{outOfBoundLabels:u}=Kn(),d=A(()=>{const T=e.value?260:50;return{width:T,height:T}}),m=A(()=>({minY:d.value.height,maxY:o.value-d.value.height,minX:d.value.width,maxX:a.value-d.value.width})),b=A(()=>{const{minX:T,maxX:f,minY:h,maxY:_}=m.value,N=G=>G>_?_:GG>f?f:Gp.value[0]||[]),S=A(()=>p.value[1]||[]),D=le(y),g=le(S),F=jn(D,g),M=Yn(v,F,D,g),x=qn(v,F,M),V=A(()=>F.value&&{x1:F.value.x-r.value.width,x2:F.value.x+r.value.width}),z=bn(D,V),xt=bn(g,V),Ot=Ae(y),$t=Ae(S),U={[St.UP]:"bottom",[St.DOWN]:void 0,[St.LEFT]:"right",[St.RIGHT]:"left"};return(T,f)=>{const h=Ht,_=Wn;return l(D)&&l(g)&&l(F)&&l(u)?(k(),E("section",{key:0,ref_key:"el",ref:i,class:C(["bg-bg-transparent-inverse text-inverse",[T.$style.result,{[T.$style["result--open"]]:l(e)}]]),style:me(l(b)),onMousemove:f[0]||(f[0]=tt(()=>{},["prevent","stop"])),onClick:f[1]||(f[1]=N=>e.value=!l(e))},[P(h,{class:C(T.$style.btn),tooltip:l(e)?l(t)("board.result.zoom_out"):l(t)("board.result.zoom_in"),"tooltip-placement":l(e)?"left":U[l(u).direction]},{default:H(()=>[(k(),it(ms(l(e)?l(dl):l(al))))]),_:1},8,["class","tooltip","tooltip-placement"]),(k(),E("svg",{viewBox:`${l(r).width*.1} ${l(r).height*.1} ${l(r).width*.8} ${l(r).height*.8}`,class:C(T.$style.svg)},[c("g",{transform:`translate(${-l(F).x+l(r).width*.5} ${-l(F).y+l(r).height*.5})`},[l(z)?(k(),it(_,Ut({key:0,"stroke-width":"4","stroke-linecap":"round"},T.$attrs,{stroke:l(Ot),"path-width":4,points:l(z),"stroke-dasharray":"5 10",filter:"saturate(2.5)"}),null,16,["stroke","points"])):ct("",!0),l(xt)?(k(),it(_,Ut({key:1,"stroke-width":"4","stroke-linecap":"round"},T.$attrs,{stroke:l($t),"path-width":4,points:l(xt),"stroke-dasharray":"5 10",filter:"saturate(2.5)"}),null,16,["stroke","points"])):ct("",!0),(k(!0),E(dt,null,Zt(l(x),N=>(k(),E("text",{key:`${N.x}|${N.y}`,x:N.x,y:N.y,"text-anchor":"middle","dominant-baseline":"middle",stroke:"transparent"},B(N.value.toFixed(3))+"° ",9,vl))),128))],8,hl)],10,fl))],38)):ct("",!0)}}}),ml="f_z",bl="f_1",gl="f_2",yl={result:ml,"result--open":"f_0",svg:bl,btn:gl},_l={$style:yl},wl=Et(pl,[["__cssModules",_l]]),xl=["viewBox","stroke-width"],$l=["cx","cy","r"],Sl=["x","y","stroke-width"],kl=["x","y"],Tl=ot({__name:"BoardSvg",props:{width:{type:Number,default:0},height:{type:Number,default:0}},emits:["pressed"],setup(n,{emit:t}){const e=n,s=t,{width:i,height:o}=gn(e),a=Me(),r=O(!1),{ctrl:u,meta:d,option:m}=ze(),b=A(()=>{if(d.value)return"move"}),{offset:p,active:v,zoom:y,transformOrigin:S}=Vn(),D=A(()=>5/y.value),g=A(()=>({width:i.value/y.value,height:o.value/y.value})),F=A(()=>({x:-p.value[0]/y.value,y:-p.value[1]/y.value})),{elementX:M,elementY:x}=bs(a,{handleOutside:!1}),V=A(()=>(M.value-p.value[0])/y.value),z=A(()=>(x.value-p.value[1])/y.value),{undo:xt,redo:Ot}=ye(M),{undo:$t,redo:U}=ye(x),{lines:T,predictNextPoint:f,drawNextPoint:h,step:_,registerOnRedo:N,registerOnUndo:R}=Se();N(()=>{Ot(),U()}),R(()=>{xt(),$t()}),Z([V,z],([rt,at])=>{_.value===2&&f(rt,at)});const L=Be(T),G=A(()=>T.value[0]||[]),q=A(()=>T.value[1]||[]),W=le(G),ft=le(q),It=jn(W,ft),ht=Yn(L,It,W,ft),Dt=qn(L,It,ht),{setOutBoundLabels:de}=Kn();Z([Dt,g,F],([rt,at,zt])=>de(rt,at,zt)),Z([i,o],([rt,at],[zt,nt])=>{S.value=[S.value[0]+(rt-zt)/2,S.value[1]+(at-nt)/2]});function jt(){v.value||(h(V.value,z.value),s("pressed"))}return(rt,at)=>{const zt=Wn;return k(),E("svg",{ref_key:"svgRef",ref:a,viewBox:`${l(F).x} ${l(F).y} ${l(g).width} ${l(g).height}`,"stroke-width":l(D),tabindex:"0",style:me({cursor:l(b)}),onTouchend:tt(jt,["prevent"]),onMouseup:tt(jt,["left","prevent"]),onMousedownOnce:at[0]||(at[0]=tt(nt=>r.value=!0,["left"])),onMousemovePassiveOnce:at[1]||(at[1]=nt=>r.value=!0),onTouchstartPassiveOnce:at[2]||(at[2]=nt=>r.value=!0)},[se(rt.$slots,"default"),l(_)%2?Ft((k(),E("circle",{key:0,cx:`${l(V)}px`,cy:`${l(z)}px`,r:l(D),"stroke-width":1},null,8,$l)),[[gs,l(r)&&!l(u)&&!l(d)&&!l(m)]]):(k(),it(zt,{key:1,points:[l(T)[Math.floor(l(_)/2)][0],[l(V),l(z)]],"svg-size":l(g),"svg-offset":l(F),"path-width":l(D)},null,8,["points","svg-size","svg-offset","path-width"])),P(zt,{points:l(T)[0],"svg-size":l(g),"svg-offset":l(F),"path-width":l(D)},null,8,["points","svg-size","svg-offset","path-width"]),P(zt,{points:l(T)[1],"svg-size":l(g),"svg-offset":l(F),"path-width":l(D)},null,8,["points","svg-size","svg-offset","path-width"]),(k(!0),E(dt,null,Zt(l(Dt),nt=>(k(),E(dt,{key:`${nt.x}|${nt.y}`},[c("text",{x:nt.x,y:nt.y,"text-anchor":"middle","dominant-baseline":"middle",stroke:"var(--background-color-transparent)","stroke-width":l(D),style:me(`font-size:${l(D)/5}em`)},B(nt.value.toFixed(3))+"° ",13,Sl),c("text",{x:nt.x,y:nt.y,"text-anchor":"middle","dominant-baseline":"middle",stroke:"transparent",style:me(`font-size:${l(D)/5}em`)},B(nt.value.toFixed(3))+"° ",13,kl)],64))),128))],44,xl)}}}),Cl=["href","x","y","height","width"],Ml=ot({__name:"Board",setup(n){const{t}=Wt(),e=O(!0),s=Ee(),{height:i,width:o}=Oe(s),{src:a,width:r,height:u,processFiles:d}=Hn(),m=O(0),b=O(0);Z(a,()=>{if(u&&r)if(r.value>o.value||u.value>i.value){const y=Math.min(o.value/r.value,i.value/u.value);m.value=u.value*y,b.value=r.value*y}else m.value=u.value,b.value=r.value});const{isOverDropZone:p}=ys(s,d),v=A(()=>p.value?[t("board.drop_file_here")]:[]);return(y,S)=>{const D=Tl,g=wl,F=Gr;return k(),E("div",{ref_key:"boardRef",ref:s,class:C(y.$style.board)},[P(D,{class:C(y.$style.board__svg),width:l(o),height:l(i),onPressed:S[0]||(S[0]=M=>e.value=!1)},{default:H(()=>[l(a)?(k(),E("image",{key:0,href:l(a),x:l(b)/-2,y:l(m)/-2,height:`${l(m)}`,width:`${l(b)}`},null,8,Cl)):ct("",!0)]),_:1},8,["class","width","height"]),l(e)&&!l(a)?(k(),E("div",{key:0,class:C(y.$style.board__hint)},B(l(t)("board.click_this_button_or_drop")),3)):ct("",!0),P(g),P(F,{class:C(y.$style.board__nav),info:l(v),"onUpdate:files":l(d)},null,8,["class","info","onUpdate:files"])],2)}}}),El="f_h",Il="f_i",Dl="f_j",Fl="f_k",Pl={board:El,board__svg:Il,board__nav:Dl,board__hint:Fl},Nl={$style:Pl},Rl=Et(Ml,[["__cssModules",Nl]]),Al={};function Ol(n,t){const e=Rl;return k(),it(e,{class:"flex-grow"})}const Gl=Et(Al,[["render",Ol]]);export{Gl as default};
+*/function Ze(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(n);t&&(s=s.filter(function(i){return Object.getOwnPropertyDescriptor(n,i).enumerable})),e.push.apply(e,s)}return e}function Je(n){for(var t=1;t0){var s=t[t.length-1];s!==e&&s.pause()}var i=t.indexOf(e);i===-1||t.splice(i,1),t.push(e)},deactivateTrap:function(t,e){var s=t.indexOf(e);s!==-1&&t.splice(s,1),t.length>0&&t[t.length-1].unpause()}},Ls=function(t){return t.tagName&&t.tagName.toLowerCase()==="input"&&typeof t.select=="function"},Gs=function(t){return(t==null?void 0:t.key)==="Escape"||(t==null?void 0:t.key)==="Esc"||(t==null?void 0:t.keyCode)===27},ie=function(t){return(t==null?void 0:t.key)==="Tab"||(t==null?void 0:t.keyCode)===9},Us=function(t){return ie(t)&&!t.shiftKey},Vs=function(t){return ie(t)&&t.shiftKey},tn=function(t){return setTimeout(t,0)},en=function(t,e){var s=-1;return t.every(function(i,o){return e(i)?(s=o,!1):!0}),s},Qt=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i1?_-1:0),R=1;R<_;R++)N[R-1]=arguments[R];h=h.apply(void 0,N)}if(h===!0&&(h=void 0),!h){if(h===void 0||h===!1)return h;throw new Error("`".concat(f,"` was specified but was not a node, or did not return a node"))}var L=h;if(typeof h=="string"&&(L=s.querySelector(h),!L))throw new Error("`".concat(f,"` as selector refers to no known node"));return L},b=function(){var f=m("initialFocus");if(f===!1)return!1;if(f===void 0||!Fe(f,o.tabbableOptions))if(d(s.activeElement)>=0)f=s.activeElement;else{var h=a.tabbableGroups[0],_=h&&h.firstTabbableNode;f=_||m("fallbackFocus")}if(!f)throw new Error("Your focus-trap needs to have at least one focusable element");return f},p=function(){if(a.containerGroups=a.containers.map(function(f){var h=Ns(f,o.tabbableOptions),_=Rs(f,o.tabbableOptions),N=h.length>0?h[0]:void 0,R=h.length>0?h[h.length-1]:void 0,L=_.find(function(W){return Yt(W)}),G=_.slice().reverse().find(function(W){return Yt(W)}),q=!!h.find(function(W){return Gt(W)>0});return{container:f,tabbableNodes:h,focusableNodes:_,posTabIndexesFound:q,firstTabbableNode:N,lastTabbableNode:R,firstDomTabbableNode:L,lastDomTabbableNode:G,nextTabbableNode:function(ft){var It=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,ht=h.indexOf(ft);return ht<0?It?_.slice(_.indexOf(ft)+1).find(function(Dt){return Yt(Dt)}):_.slice(0,_.indexOf(ft)).reverse().find(function(Dt){return Yt(Dt)}):h[ht+(It?1:-1)]}}}),a.tabbableGroups=a.containerGroups.filter(function(f){return f.tabbableNodes.length>0}),a.tabbableGroups.length<=0&&!m("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(a.containerGroups.find(function(f){return f.posTabIndexesFound})&&a.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},v=function T(f){var h=f.activeElement;if(h)return h.shadowRoot&&h.shadowRoot.activeElement!==null?T(h.shadowRoot):h},y=function T(f){if(f!==!1&&f!==v(document)){if(!f||!f.focus){T(b());return}f.focus({preventScroll:!!o.preventScroll}),a.mostRecentlyFocusedNode=f,Ls(f)&&f.select()}},S=function(f){var h=m("setReturnFocus",f);return h||(h===!1?!1:f)},D=function(f){var h=f.target,_=f.event,N=f.isBackward,R=N===void 0?!1:N;h=h||he(_),p();var L=null;if(a.tabbableGroups.length>0){var G=d(h,_),q=G>=0?a.containerGroups[G]:void 0;if(G<0)R?L=a.tabbableGroups[a.tabbableGroups.length-1].lastTabbableNode:L=a.tabbableGroups[0].firstTabbableNode;else if(R){var W=en(a.tabbableGroups,function(jt){var rt=jt.firstTabbableNode;return h===rt});if(W<0&&(q.container===h||Fe(h,o.tabbableOptions)&&!Yt(h,o.tabbableOptions)&&!q.nextTabbableNode(h,!1))&&(W=G),W>=0){var ft=W===0?a.tabbableGroups.length-1:W-1,It=a.tabbableGroups[ft];L=Gt(h)>=0?It.lastTabbableNode:It.lastDomTabbableNode}else ie(_)||(L=q.nextTabbableNode(h,!1))}else{var ht=en(a.tabbableGroups,function(jt){var rt=jt.lastTabbableNode;return h===rt});if(ht<0&&(q.container===h||Fe(h,o.tabbableOptions)&&!Yt(h,o.tabbableOptions)&&!q.nextTabbableNode(h))&&(ht=G),ht>=0){var Dt=ht===a.tabbableGroups.length-1?0:ht+1,de=a.tabbableGroups[Dt];L=Gt(h)>=0?de.firstTabbableNode:de.firstDomTabbableNode}else ie(_)||(L=q.nextTabbableNode(h))}}else L=m("fallbackFocus");return L},g=function(f){var h=he(f);if(!(d(h,f)>=0)){if(Qt(o.clickOutsideDeactivates,f)){r.deactivate({returnFocus:o.returnFocusOnDeactivate});return}Qt(o.allowOutsideClick,f)||f.preventDefault()}},F=function(f){var h=he(f),_=d(h,f)>=0;if(_||h instanceof Document)_&&(a.mostRecentlyFocusedNode=h);else{f.stopImmediatePropagation();var N,R=!0;if(a.mostRecentlyFocusedNode)if(Gt(a.mostRecentlyFocusedNode)>0){var L=d(a.mostRecentlyFocusedNode),G=a.containerGroups[L].tabbableNodes;if(G.length>0){var q=G.findIndex(function(W){return W===a.mostRecentlyFocusedNode});q>=0&&(o.isKeyForward(a.recentNavEvent)?q+1=0&&(N=G[q-1],R=!1))}}else a.containerGroups.some(function(W){return W.tabbableNodes.some(function(ft){return Gt(ft)>0})})||(R=!1);else R=!1;R&&(N=D({target:a.mostRecentlyFocusedNode,isBackward:o.isKeyBackward(a.recentNavEvent)})),y(N||a.mostRecentlyFocusedNode||b())}a.recentNavEvent=void 0},M=function(f){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;a.recentNavEvent=f;var _=D({event:f,isBackward:h});_&&(ie(f)&&f.preventDefault(),y(_))},x=function(f){if(Gs(f)&&Qt(o.escapeDeactivates,f)!==!1){f.preventDefault(),r.deactivate();return}(o.isKeyForward(f)||o.isKeyBackward(f))&&M(f,o.isKeyBackward(f))},V=function(f){var h=he(f);d(h,f)>=0||Qt(o.clickOutsideDeactivates,f)||Qt(o.allowOutsideClick,f)||(f.preventDefault(),f.stopImmediatePropagation())},z=function(){if(a.active)return Qe.activateTrap(i,r),a.delayInitialFocusTimer=o.delayInitialFocus?tn(function(){y(b())}):y(b()),s.addEventListener("focusin",F,!0),s.addEventListener("mousedown",g,{capture:!0,passive:!1}),s.addEventListener("touchstart",g,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",x,{capture:!0,passive:!1}),r},xt=function(){if(a.active)return s.removeEventListener("focusin",F,!0),s.removeEventListener("mousedown",g,!0),s.removeEventListener("touchstart",g,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",x,!0),r},Ot=function(f){var h=f.some(function(_){var N=Array.from(_.removedNodes);return N.some(function(R){return R===a.mostRecentlyFocusedNode})});h&&y(b())},$t=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Ot):void 0,U=function(){$t&&($t.disconnect(),a.active&&!a.paused&&a.containers.map(function(f){$t.observe(f,{subtree:!0,childList:!0})}))};return r={get active(){return a.active},get paused(){return a.paused},activate:function(f){if(a.active)return this;var h=u(f,"onActivate"),_=u(f,"onPostActivate"),N=u(f,"checkCanFocusTrap");N||p(),a.active=!0,a.paused=!1,a.nodeFocusedBeforeActivation=s.activeElement,h==null||h();var R=function(){N&&p(),z(),U(),_==null||_()};return N?(N(a.containers.concat()).then(R,R),this):(R(),this)},deactivate:function(f){if(!a.active)return this;var h=Je({onDeactivate:o.onDeactivate,onPostDeactivate:o.onPostDeactivate,checkCanReturnFocus:o.checkCanReturnFocus},f);clearTimeout(a.delayInitialFocusTimer),a.delayInitialFocusTimer=void 0,xt(),a.active=!1,a.paused=!1,U(),Qe.deactivateTrap(i,r);var _=u(h,"onDeactivate"),N=u(h,"onPostDeactivate"),R=u(h,"checkCanReturnFocus"),L=u(h,"returnFocus","returnFocusOnDeactivate");_==null||_();var G=function(){tn(function(){L&&y(S(a.nodeFocusedBeforeActivation)),N==null||N()})};return L&&R?(R(S(a.nodeFocusedBeforeActivation)).then(G,G),this):(G(),this)},pause:function(f){if(a.paused||!a.active)return this;var h=u(f,"onPause"),_=u(f,"onPostPause");return a.paused=!0,h==null||h(),xt(),U(),_==null||_(),this},unpause:function(f){if(!a.paused||!a.active)return this;var h=u(f,"onUnpause"),_=u(f,"onPostUnpause");return a.paused=!1,h==null||h(),p(),z(),U(),_==null||_(),this},updateContainerElements:function(f){var h=[].concat(f).filter(Boolean);return a.containers=h.map(function(_){return typeof _=="string"?s.querySelector(_):_}),a.active&&p(),U(),this}},r.updateContainerElements(t),r};function Ks(n){return typeof n=="function"?n():l(n)}typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function js(n){var t;const e=Ks(n);return(t=e==null?void 0:e.$el)!=null?t:e}const Ys=ot({name:"UseFocusTrap",props:["as","options"],setup(n,{slots:t}){let e;const s=O(),i=()=>e&&e.activate(),o=()=>e&&e.deactivate();return Z(()=>js(s),a=>{a&&(e=Ws(a,n.options||{}),i())},{flush:"post"}),Zn(()=>o()),()=>{if(t.default)return Jn(n.as||"div",{ref:s},t.default())}}}),qs=["textContent"],Xs={inheritAttrs:!1},Zs=ot({...Xs,__name:"Modal",props:{heading:{type:String,required:!0},modelValue:{type:Boolean,required:!0}},emits:["update:modelValue"],setup(n,{emit:t}){const e=t,{t:s}=Wt(),i=O(),o=()=>e("update:modelValue",!1);return Z(i,a=>{a==null||a.showModal()}),(a,r)=>{const u=Ht;return n.modelValue?(k(),it(Qn,{key:0,to:"body"},[P(l(Ys),{options:{immediate:!0,initialFocus:!1}},{default:H(()=>[c("dialog",{ref_key:"dialog",ref:i,"aria-modal":"",onClick:o,onClose:o},[c("article",Ut({class:a.$style.content},a.$attrs,{onClick:r[0]||(r[0]=tt(()=>{},["stop"]))}),[c("h3",{textContent:B(n.heading)},null,8,qs),se(a.$slots,"default"),c("footer",{class:C(a.$style.footer)},[se(a.$slots,"footer-pre"),P(u,{onClick:o,class:"outline"},{default:H(()=>[Q(B(l(s)("main.close")),1)]),_:1}),se(a.$slots,"footer")],2)],16)],544)]),_:3})])):ct("",!0)}}}),Js="f_ad",Qs="f_ae",ti="f_af",ei={content:Js,spacer:Qs,footer:ti},ni={$style:ei},Cn=Et(Zs,[["__cssModules",ni]]),Me=Kt(()=>O());function si(n,t){const e=new MouseEvent("click",{view:window,bubbles:!1,cancelable:!0}),s=document.createElement("a");s.setAttribute("download",t),s.setAttribute("href",n),s.setAttribute("target","_blank"),s.dispatchEvent(e)}async function ii(n,t){const e=new XMLSerializer().serializeToString(n),s=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),i=new Image,o=URL.createObjectURL(s);await new Promise((a,r)=>{i.onload=function(){t.drawImage(i,0,0),URL.revokeObjectURL(o),a()},i.onabort=i.onerror=()=>r(),i.src=o})}const ae={JPG:1,PNG:2},ai={[ae.JPG]:{encoding:"image/jpeg",extension:"jpg"},[ae.PNG]:{encoding:"image/png",extension:"png"}};function oi(n){var s;const t=n.cloneNode(!0),e=window.getComputedStyle(n);return(s=t.querySelector("circle"))==null||s.remove(),t.style.setProperty("--background-color-transparent",e.getPropertyValue("--background-color-transparent")),t.style.color=t.style.fill=e.getPropertyValue("--color"),t.style.stroke="#fff",t.style.fontFamily="Arial",t.style.fontSize="20px",t}const Mn=Kt(()=>{const n=document.createElement("canvas"),t=n==null?void 0:n.getContext("2d"),e=Me(),s=A(()=>e.value&&t);return{triggerDownload:async({filename:o,filetype:a,quality:r,width:u,height:d})=>{if(!s.value||!n||!e.value||!t)return console.error("Cannot download due to required api missing:",s.value,n,e.value,t);n.width=u,n.height=d,await ii(oi(e.value),t);const{encoding:m,extension:b}=ai[a],p=n.toDataURL(m,r);si(p,`${o}.${b}`)},isSupported:s}}),Mt={px:1,"%":2,in:3,mm:4};function ri(n,t,e){let s=n;switch(t){case Mt["%"]:s=n*100/e;break;case Mt.in:s=n/window.devicePixelRatio;break;case Mt.mm:s=n*25.4/window.devicePixelRatio;break}return+s.toFixed(6)}function li(n,t,e){let s=n;switch(t){case Mt["%"]:s=n/100*e;break;case Mt.in:s=n*window.devicePixelRatio;break;case Mt.mm:s=n*window.devicePixelRatio/25.4;break}return+s.toFixed(5)}function nn(n,t,e){const s=O(0),i=O(n.value-1),o=O(0);return Z([n,t],([a,r],[,u])=>{(i.value!==a||r!==u)&&(i.value=a,s.value=ri(a,r,e.value))},{immediate:!0}),Z(o,a=>{s.value!==a&&(i.value=li(a,t.value,e.value))}),Z(s,a=>o.value=a,{immediate:!0}),o}const ui={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ci=c("path",{fill:"currentColor",d:"M24 14h-2V8a6 6 0 0 0-12 0v6H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2M12 8a4 4 0 0 1 8 0v6h-8Zm12 20H8V16h16Z"},null,-1),di=[ci];function fi(n,t){return k(),E("svg",ui,[...di])}const hi=Y({name:"carbon-locked",render:fi}),vi={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},pi=c("path",{fill:"currentColor",d:"M24 14H12V8a4 4 0 0 1 8 0h2a6 6 0 0 0-12 0v6H8a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2m0 14H8V16h16Z"},null,-1),mi=[pi];function bi(n,t){return k(),E("svg",vi,[...mi])}const gi=Y({name:"carbon-unlocked",render:bi}),yi=ts({...es,xs:480}),_i={class:"flex-grow"},wi=["aria-invalid"],xi=["value","textContent"],$i=["aria-invalid"],Si=["aria-invalid"],ki=["data-tooltip"],Ti=["value","textContent"],Ci=["aria-invalid"],Mi=ot({__name:"BoardControlsSvgDownloadModalContent",props:{boardWidth:{type:Number,required:!0},boardHeight:{type:Number,required:!0}},emits:["downloadFinish"],setup(n,{emit:t}){const e=n,s=t,{t:i}=Wt(),{triggerDownload:o}=Mn(),a=fe("FA_FILENAME","fast-angle-image"),{boardHeight:r,boardWidth:u}=gn(e),d=O(r.value),m=O(u.value),b=fe("FA_SIZE_UNIT",Mt.px),p=O(!0),v=O(u.value/r.value);yi.isGreaterOrEqual("xl")&&Z([u,r],([M,x])=>{m.value=M,d.value=x,v.value=M/x});const y=nn(d,b,r),S=nn(m,b,u);Z([S,y],([M,x])=>{p.value||(v.value=M/x)},{flush:"sync",immediate:!0}),Z(y,()=>{y.value<0&&(y.value=1),p.value&&y.value!==+(S.value/v.value).toFixed(3)&&(S.value=+(y.value*v.value).toFixed(3))},{flush:"sync"}),Z(S,()=>{S.value<0&&(S.value=1),p.value&&S.value!==+(y.value*v.value).toFixed(3)&&(y.value=+(S.value/v.value).toFixed(3))},{flush:"sync"});const D=fe("FA_FILETYPE",ae.PNG),g=fe("FA_QUALITY",100);Z(g,()=>{g.value>100&&(g.value=100),g.value<0&&(g.value=0)});async function F(){await o({filename:a.value,filetype:D.value,quality:g.value/100,width:m.value,height:d.value}).catch(()=>{}),s("downloadFinish")}return(M,x)=>{const V=Ht;return k(),E("form",{onSubmit:tt(F,["prevent"])},[c("div",{class:C(M.$style.name)},[c("label",_i,[Q(B(l(i)("board.nav.download_image.name_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[0]||(x[0]=z=>kt(a)?a.value=z:null),type:"text",name:"name",required:"","aria-invalid":!l(a)},null,8,wi),[[Jt,l(a)]])]),c("label",{class:C(M.$style["label--big"])},[Q(B(l(i)("board.nav.download_image.format_label"))+" ",1),Ft(c("select",{"onUpdate:modelValue":x[1]||(x[1]=z=>kt(D)?D.value=z:null),required:""},[(k(!0),E(dt,null,Zt(Object.keys(l(ae)),z=>(k(),E("option",{key:z,value:l(ae)[z],textContent:B(z)},null,8,xi))),128))],512),[[je,l(D)]])],2)],2),c("fieldset",{class:C(M.$style.sizing)},[c("legend",null,[c("small",null,B(l(i)("board.nav.download_image.sizing_label")),1)]),c("label",{class:C(M.$style.label)},[Q(B(l(i)("board.nav.download_image.width_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[2]||(x[2]=z=>kt(S)?S.value=z:null),min:"1",type:"number",step:"0.000001",name:"width",required:"","aria-invalid":!l(S)||l(S)<1},null,8,$i),[[Jt,l(S),void 0,{number:!0}]])],2),c("label",{class:C(M.$style.label)},[Q(B(l(i)("board.nav.download_image.height_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[3]||(x[3]=z=>kt(y)?y.value=z:null),min:"1",type:"number",step:"0.000001",name:"height",required:"","aria-invalid":!l(y)||l(y)<1},null,8,Si),[[Jt,l(y),void 0,{number:!0}]])],2),c("label",null,[x[8]||(x[8]=Q(" ")),c("div",{class:C(M.$style["aspect-ratio"]),"data-tooltip":l(i)("board.nav.download_image.keep_aspect_ratio"),"data-placement":"left"},[P(V,{"aria-label":l(i)("board.nav.download_image.keep_aspect_ratio"),class:C([M.$style["aspect-ratio-btn"],{[M.$style["aspect-ratio-btn--inactive"]]:!l(p)}]),onClick:x[4]||(x[4]=z=>p.value=!l(p))},{default:H(()=>[l(p)?(k(),it(l(hi),{key:0})):(k(),it(l(gi),{key:1}))]),_:1},8,["aria-label","class"])],10,ki)]),c("label",{class:C([M.$style.label,M.$style["label--small"]])},[Q(B(l(i)("board.nav.download_image.unit_label"))+" ",1),Ft(c("select",{"onUpdate:modelValue":x[5]||(x[5]=z=>kt(b)?b.value=z:null),required:""},[(k(!0),E(dt,null,Zt(Object.keys(l(Mt)),z=>(k(),E("option",{key:z,value:l(Mt)[z],textContent:B(z)},null,8,Ti))),128))],512),[[je,l(b)]])],2)],2),c("label",null,[c("span",{class:C(M.$style.quality)},[Q(B(l(i)("board.nav.download_image.quality_label"))+" ",1),Ft(c("input",{"onUpdate:modelValue":x[6]||(x[6]=z=>kt(g)?g.value=z:null),type:"number",min:"1",max:"100",class:C(M.$style.quality__input),name:"quality","aria-invalid":!l(g)||l(g)>100||l(g)<1},null,10,Ci),[[Jt,l(g),void 0,{number:!0}]]),x[9]||(x[9]=Q(" % "))],2),Ft(c("input",{"onUpdate:modelValue":x[7]||(x[7]=z=>kt(g)?g.value=z:null),type:"range",min:"1",max:"100",name:"quality"},null,512),[[Jt,l(g),void 0,{number:!0}]])])],32)}}}),Ei="f_ag",Ii="f_aj",Di="f_ak",Fi="f_ao",Pi="f_ap",Ni={label:Ei,"label--big":"f_ah","label--small":"f_ai",sizing:Ii,name:Di,"aspect-ratio":"f_al","aspect-ratio-btn":"f_am","aspect-ratio-btn--inactive":"f_an",quality:Fi,quality__input:Pi},Ri={$style:Ni},Ai=Et(Mi,[["__cssModules",Ri]]),Oi={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},zi=c("path",{fill:"currentColor",d:"M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10z"},null,-1),Bi=[zi];function Li(n,t){return k(),E("svg",Oi,[...Bi])}const Gi=Y({name:"carbon-download",render:Li}),Ee=Kt(()=>O()),Ui={key:0},sn="board_svg_download_form",Vi=ot({__name:"BoardControlsSvgDownload",props:{disabled:{type:Boolean,default:!1}},setup(n){const{t}=Wt(),{isSupported:e}=Mn(),s=Ee(),{height:i,width:o}=Oe(s),a=O(!1),r=O(!1);return ze({onEventFired(u){(u.ctrlKey||u.metaKey)&&u.key==="s"&&(u.preventDefault(),a.value=!0)},passive:!1}),(u,d)=>{const m=Ai,b=Ht,p=Cn;return l(e)?(k(),E("li",Ui,[P(b,{tooltip:`${l(t)("board.nav.download_image.action")} [ctrl + s][⌘ + s]`,"tooltip-placement":"left",disabled:n.disabled?void 0:!0,onClick:d[3]||(d[3]=v=>a.value=!0),onTouchstart:d[4]||(d[4]=tt(v=>a.value=!0,["stop","prevent"]))},{default:H(()=>[P(l(Gi)),P(p,{modelValue:l(a),"onUpdate:modelValue":d[2]||(d[2]=v=>kt(a)?a.value=v:null),heading:l(t)("board.nav.download_image.heading")},{footer:H(()=>[P(b,{type:"submit",role:"button",form:sn,disabled:l(r),"aria-busy":l(r),class:C(u.$style["button-submit"]),autofocus:""},{default:H(()=>[Q(B(l(t)("board.nav.download_image.save")),1)]),_:1},8,["disabled","aria-busy","class"])]),default:H(()=>[P(m,{id:sn,"board-height":l(i),"board-width":l(o),onSubmit:d[0]||(d[0]=v=>r.value=!0),onDownloadFinish:d[1]||(d[1]=v=>(r.value=!1,a.value=!1))},null,8,["board-height","board-width"])]),_:1},8,["modelValue","heading"])]),_:1},8,["tooltip","disabled"])])):ct("",!0)}}}),Hi={"button-submit":"f_4"},Wi={$style:Hi},Ki=Et(Vi,[["__cssModules",Wi]]),ji={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Yi=c("path",{fill:"currentColor",d:"M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2m0 26a12 12 0 1 1 12-12a12 12 0 0 1-12 12"},null,-1),qi=c("circle",{cx:"16",cy:"23.5",r:"1.5",fill:"currentColor"},null,-1),Xi=c("path",{fill:"currentColor",d:"M17 8h-1.5a4.49 4.49 0 0 0-4.5 4.5v.5h2v-.5a2.5 2.5 0 0 1 2.5-2.5H17a2.5 2.5 0 0 1 0 5h-2v4.5h2V17a4.5 4.5 0 0 0 0-9"},null,-1),Zi=[Yi,qi,Xi];function Ji(n,t){return k(),E("svg",ji,[...Zi])}const Qi=Y({name:"carbon-help",render:Ji}),ta={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ea=c("path",{fill:"currentColor",d:"M22.5 4c-2 0-3.9.8-5.3 2.2L16 7.4l-1.1-1.1c-2.9-3-7.7-3-10.6-.1l-.1.1c-3 3-3 7.8 0 10.8L16 29l11.8-11.9c3-3 3-7.8 0-10.8C26.4 4.8 24.5 4 22.5 4"},null,-1),na=[ea];function sa(n,t){return k(),E("svg",ta,[...na])}const an=Y({name:"carbon-favorite-filled",render:sa}),ia=["textContent"],aa={rol:"grid"},oa=["textContent"],ra=["textContent"],la=["textContent"],ua=["textContent"],ca=["textContent"],da=["textContent"],fa=["href","data-tooltip","title"],ha={rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle",target:"_blank",title:"GitHub"},va={rel:"noreferrer",href:"https://www.frsource.org/blog/sponsoring",target:"_blank",title:"Sponsoring"},pa=["textContent"],ma=["textContent"],ba=ot({__name:"BoardControlsSvgHelp",setup(n){const{t,tm:e,rt:s}=Wt(),i=O(!1),o=A(()=>e("board.nav.help.content"));return(a,r)=>{const u=ns("RouterLink"),d=Cn,m=Ht;return k(),E("li",null,[P(m,{tooltip:l(t)("board.nav.help.action"),"tooltip-placement":"left",onClick:r[1]||(r[1]=b=>i.value=!0),onTouchstartCapture:r[2]||(r[2]=tt(b=>i.value=!0,["prevent","stop"]))},{default:H(()=>[P(l(Qi)),P(d,{modelValue:l(i),"onUpdate:modelValue":r[0]||(r[0]=b=>kt(i)?i.value=b:null),heading:l(t)("board.nav.help.heading"),class:C(a.$style.modal)},{"footer-pre":H(()=>[c("a",{autofocus:"",rel:"noreferrer",href:"https://github.com/FRSOURCE/fast-angle",target:"_blank",title:"GitHub",class:C(a.$style.donate)},[P(l(an)),c("small",null,B(l(t)("main.donate_us")),1)],2)]),default:H(()=>[c("ul",null,[(k(!0),E(dt,null,Zt(l(o),b=>(k(),E("li",{key:l(s)(b)},B(l(s)(b)),1))),128))]),r[21]||(r[21]=c("hr",null,null,-1)),c("div",{class:C(a.$style["hide-mobile"])},[c("h4",{textContent:B(l(t)("board.nav.help.key_bindings.heading"))},null,8,ia),c("table",aa,[c("thead",null,[c("tr",null,[r[3]||(r[3]=c("th",{scope:"col",textContent:"Win"},null,-1)),r[4]||(r[4]=c("th",{scope:"col",textContent:"Mac"},null,-1)),c("th",{scope:"col",textContent:B(l(t)("board.nav.help.key_bindings.description"))},null,8,oa)])]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[5]||(r[5]=c("kbd",null,"ctrl",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[6]||(r[6]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[7]||(r[7]=c("kbd",null,"⌘",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[8]||(r[8]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.undo"))},null,8,ra)]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[9]||(r[9]=c("kbd",null,"ctrl",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[10]||(r[10]=c("kbd",null,"shift",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[11]||(r[11]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[12]||(r[12]=c("kbd",null,"⌘",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[13]||(r[13]=c("kbd",null,"shift",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[14]||(r[14]=c("kbd",null,"z",-1))],2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.download_image.action"))},null,8,la)]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[15]||(r[15]=c("kbd",null,"ctrl",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[16]||(r[16]=c("kbd",null,"s",-1))],2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},[r[17]||(r[17]=c("kbd",null,"⌘",-1)),c("small",{class:C(a.$style["binding-item-plus"])},"+",2),r[18]||(r[18]=c("kbd",null,"s",-1))],2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.redo"))},null,8,ua)]),c("tr",null,[c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},r[19]||(r[19]=[c("kbd",null,"f",-1)]),2)],2),c("td",{scope:"col",class:C(a.$style["binding-item-wrapper"])},[c("div",{class:C(a.$style["binding-item"])},r[20]||(r[20]=[c("kbd",null,"f",-1)]),2)],2),c("td",{scope:"col",textContent:B(l(t)("board.nav.toggle_fullscreen"))},null,8,ca)])])],2),c("h4",{textContent:B(l(t)("board.nav.help.heading_authors"))},null,8,da),c("p",null,[Q(B(l(t)("main.brought_to_you_by"))+" ",1),c("a",{href:`${"host"in a?a.host:l(ss)}/`,"data-tooltip":l(t)("main.visit_our_website"),title:l(t)("main.visit_our_website")},"FRSOURCE",8,fa)]),c("p",null,[c("a",ha,[P(l(Xn)),Q(" "+B(l(t)("main.star_us_on_github")),1)])]),c("p",null,[c("a",va,[P(l(an)),Q(" "+B(l(t)("main.donate_us")),1)])]),r[22]||(r[22]=c("hr",null,null,-1)),c("p",{class:C(a.$style.terms)},[P(u,{to:{name:`lang-${l(Ye)}-terms`}},{default:H(()=>[c("small",{textContent:B(l(t)("main.terms_and_conditions"))},null,8,pa)]),_:1},8,["to"]),P(u,{to:{name:`lang-${l(Ye)}-privacy-policy`}},{default:H(()=>[c("small",{textContent:B(l(t)("main.privacy_policy"))},null,8,ma)]),_:1},8,["to"])],2)]),_:1},8,["modelValue","heading","class"])]),_:1},8,["tooltip"])])}}}),ga="f_5",ya="f__",_a="f_-",wa={modal:ga,"hide-mobile":"f_6","binding-item":"f_7","binding-item-plus":"f_8","list-item":"f_9",terms:ya,donate:_a},xa={$style:wa},$a=Et(ba,[["__cssModules",xa]]),Sa={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ka=c("path",{fill:"currentColor",d:"M28 10v18H10V10zm0-2H10a2 2 0 0 0-2 2v18a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2"},null,-1),Ta=c("path",{fill:"currentColor",d:"M4 18H2V4a2 2 0 0 1 2-2h14v2H4Z"},null,-1),Ca=[ka,Ta];function Ma(n,t){return k(),E("svg",Sa,[...Ca])}const Ea=Y({name:"carbon-copy",render:Ma}),Ia={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Da=c("path",{fill:"currentColor",d:"m13 24l-9-9l1.414-1.414L13 21.171L26.586 7.586L28 9z"},null,-1),Fa=[Da];function Pa(n,t){return k(),E("svg",Ia,[...Fa])}const Na=Y({name:"carbon-checkmark",render:Pa}),Ra=ot({__name:"BoardSummaryItem",props:{value:{type:Number,default:0}},setup(n){const t=n,e=A(()=>t.value?t.value.toFixed(3):""),{copy:s,copied:i,isSupported:o}=is({source:e});return(a,r)=>{const u=Ht;return k(),E("small",{class:C(a.$style.item),onClick:r[0]||(r[0]=()=>l(s)())},[c("div",null,[se(a.$slots,"default"),c("span",{class:C(a.$style.text)},[l(e)?(k(),E(dt,{key:0},[Q(B(l(e))+"°",1)],64)):(k(),E(dt,{key:1},[Q("?")],64))],2)]),l(o)&&l(e)?(k(),it(u,{key:0,class:C(a.$style.btn),disabled:l(i)},{default:H(()=>[l(i)?(k(),it(l(Na),{key:0})):(k(),it(l(Ea),{key:1}))]),_:1},8,["class","disabled"])):ct("",!0)],2)}}}),Aa="f_aa",Oa="f_ab",za="f_ac",Ba={item:Aa,text:Oa,btn:za},La={$style:Ba},Ga=Et(Ra,[["__cssModules",La]]),Ua={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Va=c("path",{fill:"currentColor",d:"M20 2v2h6.586L18 12.582L19.414 14L28 5.414V12h2V2zm-6 17.416L12.592 18L4 26.586V20H2v10h10v-2H5.414z"},null,-1),Ha=[Va];function Wa(n,t){return k(),E("svg",Ua,[...Ha])}const Ka=Y({name:"carbon-maximize",render:Wa}),ja={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Ya=c("path",{fill:"currentColor",d:"M4 18v2h6.586L2 28.582L3.414 30L12 21.414V28h2V18zM30 3.416L28.592 2L20 10.586V4h-2v10h10v-2h-6.586z"},null,-1),qa=[Ya];function Xa(n,t){return k(),E("svg",ja,[...qa])}const Za=Y({name:"carbon-minimize",render:Xa}),Ja={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Qa=c("path",{fill:"currentColor",d:"M18 12h-4V8h-2v4H8v2h4v4h2v-4h4z"},null,-1),to=c("path",{fill:"currentColor",d:"M21.448 20A10.86 10.86 0 0 0 24 13a11 11 0 1 0-11 11a10.86 10.86 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9"},null,-1),eo=[Qa,to];function no(n,t){return k(),E("svg",Ja,[...eo])}const so=Y({name:"carbon-zoom-in",render:no}),io={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},ao=c("path",{fill:"currentColor",d:"M8 12h10v2H8z"},null,-1),oo=c("path",{fill:"currentColor",d:"M21.448 20A10.86 10.86 0 0 0 24 13a11 11 0 1 0-11 11a10.86 10.86 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9"},null,-1),ro=[ao,oo];function lo(n,t){return k(),E("svg",io,[...ro])}const uo=Y({name:"carbon-zoom-out",render:lo}),co={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},fo=c("path",{fill:"currentColor",d:"M4 20v2h4.586L2 28.586L3.414 30L10 23.414V28h2v-8zm15-6a3 3 0 1 0-3-3a3 3 0 0 0 3 3m0-4a1 1 0 1 1-1 1a1 1 0 0 1 1-1"},null,-1),ho=c("path",{fill:"currentColor",d:"M26 4H6a2 2 0 0 0-2 2v10h2V6h20v15.17l-3.59-3.59a2 2 0 0 0-2.82 0L18 19.17L11.83 13l-1.414 1.416L14 18l2.59 2.59a2 2 0 0 0 2.82 0L21 19l5 5v2H16v2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2"},null,-1),vo=[fo,ho];function po(n,t){return k(),E("svg",co,[...vo])}const mo=Y({name:"carbon-image-reference",render:po}),bo={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},go=c("path",{d:"M9 24a3.51 3.51 0 0 0-.88-1.86l9.53-16.58l-1.73-1l-9.57 16.56A3.06 3.06 0 0 0 5.5 21a3.5 3.5 0 1 0 3.15 5H28v-2zm-3.5 2A1.5 1.5 0 1 1 7 24.5A1.5 1.5 0 0 1 5.5 26z",fill:"currentColor"},null,-1),yo=c("path",{d:"M22 21h2a13 13 0 0 0-5.42-10.56l-1.16 1.62A11 11 0 0 1 22 21z",fill:"currentColor"},null,-1),_o=[go,yo];function wo(n,t){return k(),E("svg",bo,[..._o])}const xo=Y({name:"carbon-angle",render:wo}),$o={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},So=c("path",{fill:"currentColor",d:"M20 10H7.815l3.587-3.586L10 5l-6 6l6 6l1.402-1.415L7.818 12H20a6 6 0 0 1 0 12h-8v2h8a8 8 0 0 0 0-16"},null,-1),ko=[So];function To(n,t){return k(),E("svg",$o,[...ko])}const Co=Y({name:"carbon-undo",render:To}),Mo={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},Eo=c("path",{fill:"currentColor",d:"M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16"},null,-1),Io=[Eo];function Do(n,t){return k(),E("svg",Mo,[...Io])}const Fo=Y({name:"carbon-redo",render:Do}),Po={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor"},No=c("path",{d:"M18.3 26a3.5 3.5 0 006.6-3.05 3 3 0 00-.7-.8l7.53-15.58-1.73-1-7.57 15.56a2.7 2.7 0 00-.8-.1 3.5 3.5 0 00-3.33 2.97h-17.973v2Zm3.4.1a1.5 1.5 0 111.5-1.5 1.5 1.5 0 01-1.5 1.5Z"},null,-1),Ro=c("path",{d:"M3.75 21.25a13.2 13.2 90 0120.25-10.56l-.87 1.44a11.75 11.75 90 00-17.6 9.13z"},null,-1),Ao=[No,Ro];function Oo(n,t){return k(),E("svg",Po,[...Ao])}const zo=Y({name:"custom-angle-obtuse",render:Oo}),Pe=4,Se=Kt(()=>{const n=O([]),t=O([]),e=O(Pe-1);let s=()=>{},i=()=>{};Z(n,g=>{t.value=[...g]},{deep:!0,flush:"sync"});const o=(g,F)=>{++e.value>=Pe&&(e.value=0,n.value=[]);const M=Math.floor(e.value/2);if(e.value%2){const x=n.value[M][0];if(!x)return;n.value[M]=[x,[g,F]]}else n.value[M]=[[g,F]]},a=(g,F)=>{const M=e.value+1>=Pe?0:e.value+1,x=Math.floor(M/2);if(M%2){const V=t.value[x][0];if(!V)return;t.value[x]=[V,[g,F]]}else t.value[x]=[[g,F]]},{undo:r,redo:u,canUndo:d,canRedo:m}=ye(e),{undo:b,redo:p,canUndo:v,canRedo:y}=ye(n,{deep:!0}),S=()=>{b(),s(),r()},D=()=>{p(),i(),u()};return ze({onEventFired(g){(g.ctrlKey||g.metaKey)&&g.key==="z"&&(g.shiftKey?D():S())}}),{step:e,lines:t,drawNextPoint:o,predictNextPoint:a,undo:S,redo:D,canUndo:A(()=>d.value&&v.value),canRedo:A(()=>m.value&&y.value),registerOnUndo:g=>s=g,registerOnRedo:g=>i=g}});function En(n){const[[[t,e],[s,i]],[[o,a],[r,u]]]=n,d=s-t,m=i-e,b=r-o,p=u-a,v=Math.atan2(d*p-m*b,d*b+m*p);return Math.abs(v)*(180/Math.PI)}function Be(n){return A(()=>{var t,e;return(((t=n.value[0])==null?void 0:t.length)||0)<2||(((e=n.value[1])==null?void 0:e.length)||0)<2?0:En(n.value)})}function Bo(){try{return"constructor"in GestureEvent}catch{return!1}}function In(){return typeof window<"u"&&"ontouchstart"in window}function Dn(n){return"pointerId"in n?null:n.type==="touchend"?n.changedTouches:n.targetTouches}function Le(n){return Array.from(Dn(n)).map(t=>t.identifier)}function Tt(n){const t="buttons"in n?n.buttons:0,{shiftKey:e,altKey:s,metaKey:i,ctrlKey:o}=n;return{buttons:t,shiftKey:e,altKey:s,metaKey:i,ctrlKey:o}}const Ie=n=>n;function on(n,t=Ie){const e=Dn(n),{clientX:s,clientY:i}=e?e[0]:n;return t([s,i])}function rn(n,t,e=Ie){const[s,i]=Array.from(n.touches).filter(v=>t.includes(v.identifier));if(!s||!i)throw Error("The event doesn't have two pointers matching the pointerIds");const o=i.clientX-s.clientX,a=i.clientY-s.clientY,r=(i.clientX+s.clientX)/2,u=(i.clientY+s.clientY)/2,d=Math.hypot(o,a),m=-(Math.atan2(o,a)*180)/Math.PI,b=e([d,m]),p=e([r,u]);return{values:b,origin:p}}const ln=40,un=800;function Fn(n,t=Ie){let{deltaX:e,deltaY:s,deltaMode:i}=n;return i===1?(e*=ln,s*=ln):i===2&&(e*=un,s*=un),t([e,s])}function cn(n,t=Ie){return t([n.scale,n.rotation])}function Pn(){}function Nn(...n){return n.length===0?Pn:n.length===1?n[0]:function(){var t;for(let e of n)t=e.apply(this,arguments)||t;return t}}function At(n,t){if(n===void 0){if(t===void 0)throw new Error("Must define fallback value if undefined is expected");n=t}return Array.isArray(n)?n:[n,n]}function dn(n,t){return Object.assign({},t,n||{})}function ke(n,...t){return typeof n=="function"?n(...t):n}function te(n){return{_active:!1,_blocked:!1,_intentional:[!1,!1],_movement:[0,0],_initial:[0,0],_bounds:[[-1/0,1/0],[-1/0,1/0]],_lastEventType:void 0,_dragStarted:!1,_dragPreventScroll:!1,_dragIsTap:!0,_dragDelayed:!1,event:void 0,intentional:!1,values:[0,0],velocities:[0,0],delta:[0,0],movement:[0,0],offset:[0,0],lastOffset:[0,0],direction:[0,0],initial:[0,0],previous:[0,0],first:!1,last:!1,active:!1,timeStamp:0,startTime:0,elapsedTime:0,cancel:Pn,canceled:!1,memo:void 0,args:void 0,...n}}function Re(){const n={hovering:!1,scrolling:!1,wheeling:!1,dragging:!1,moving:!1,pinching:!1,touches:0,buttons:0,down:!1,shiftKey:!1,altKey:!1,metaKey:!1,ctrlKey:!1,locked:!1},t=te({_pointerId:void 0,axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0,tap:!1,swipe:[0,0]}),e=te({_pointerIds:[],da:[0,0],vdva:[0,0],origin:void 0,turns:0}),s=te({axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0}),i=te({axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0}),o=te({axis:void 0,xy:[0,0],vxvy:[0,0],velocity:0,distance:0});return{shared:n,drag:t,pinch:e,wheel:s,move:i,scroll:o}}var Lo=Object.defineProperty,Go=(n,t,e)=>t in n?Lo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,et=(n,t,e)=>(Go(n,typeof t!="symbol"?t+"":t,e),e);class Uo{constructor(t){this.classes=t,et(this,"nativeRefs"),et(this,"config"),et(this,"handlers"),et(this,"state"),et(this,"timeouts"),et(this,"domListeners"),et(this,"windowListeners"),et(this,"pointerIds",new Set),et(this,"touchIds",new Set),et(this,"supportsTouchEvents",In()),et(this,"supportsGestureEvents",Bo()),et(this,"bind",(...e)=>{const s={};for(let i of this.classes)new i(this,e).addBindings(s);for(let i in this.nativeRefs)K(s,i,o=>this.nativeRefs[i]({...this.state.shared,event:o,args:e}));return this.config.domTarget?Ko(this,s):jo(this,s)}),et(this,"clean",()=>{const{eventOptions:e,domTarget:s}=this.config,i=l(s);i&&ue(i,On(this.domListeners),e),Object.values(this.timeouts).forEach(clearTimeout),Vo(this)}),et(this,"reset",()=>{this.state=Re()}),this.classes=t,this.state=Re(),this.timeouts={},this.domListeners=[],this.windowListeners={}}}function Rn(n,t){"pointerId"in t?n.pointerIds.add(t.pointerId):n.touchIds=new Set(Le(t))}function An(n,t){"pointerId"in t?n.pointerIds.delete(t.pointerId):Le(t).forEach(e=>n.touchIds.delete(e))}function Vo(n){const{config:{window:t,eventOptions:e},windowListeners:s}=n,i=l(t);if(i){for(let o in s){const a=s[o];ue(i,a,e)}n.windowListeners={}}}function Ho({config:n,windowListeners:t},e,s=n.eventOptions){const i=l(n.window);i&&(ue(i,t[e],s),delete t[e])}function Wo({config:n,windowListeners:t},e,s=[],i=n.eventOptions){const o=l(n.window);o&&(ue(o,t[e],i),zn(o,t[e]=s,i))}function Ko({config:n,domListeners:t},e){const{eventOptions:s,domTarget:i}=n,o=l(i);if(!o)throw new Error("domTarget must be defined");ue(o,On(t),s);for(let[a,r]of Object.entries(e)){const u=a.slice(2).toLowerCase();t.push([u,Nn(...r)])}zn(o,t,s)}function jo({config:n},t){const e={},s=n.eventOptions.capture?"Capture":"";for(let[i,o]of Object.entries(t)){const a=Array.isArray(o)?o:[o],r=i+s;e[r]=Nn(...a)}return e}function On(n=[]){return n.splice(0,n.length)}function K(n,t,e){n[t]||(n[t]=[]),n[t].push(e)}function zn(n,t=[],e={}){if(n)for(let[s,i]of t)n.addEventListener(s,i,e)}function ue(n,t=[],e={}){if(n)for(let[s,i]of t)n.removeEventListener(s,i,e)}function Te(n,t){return n.map((e,s)=>e+t[s])}function Ge(n,t){return n.map((e,s)=>e-t[s])}function re(n){return Math.hypot(...n)}function Yo(n,t=n){const e=re(t),s=e===0?0:1/e,i=t.map(a=>s*a);return{distance:re(n),direction:i}}function Bn(n,t,e){const s=re(t),i=s===0?0:1/s,o=e===0?0:1/e,a=o*s,r=t.map(m=>o*m),u=t.map(m=>i*m),d=re(n);return{velocities:r,velocity:a,distance:d,direction:u}}function Ce(n){return Math.sign?Math.sign(n):+(n>0)-+(n<0)||+n}function qo(n,t,e){return Math.max(t,Math.min(n,e))}function Xo(n,t){return Math.pow(n,t*5)}function fn(n,t,e){return t===0||Math.abs(t)===1/0?Xo(n,e):n*t*e/(t+e*n)}function hn(n,t,e,s=.15){return s===0?qo(n,t,e):ne?+fn(n-e,e-t,s)+e:n}var Zo=Object.defineProperty,Jo=(n,t,e)=>t in n?Zo(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ve=(n,t,e)=>(Jo(n,typeof t!="symbol"?t+"":t,e),e);const Ct=new Map,Qo=n=>n;class Ln{constructor(t,e=[]){this.controller=t,this.args=e,ve(this,"debounced",!0),ve(this,"setTimeout",(s,i=140,...o)=>{clearTimeout(this.controller.timeouts[this.stateKey]),this.controller.timeouts[this.stateKey]=window.setTimeout(s,i,...o)}),ve(this,"clearTimeout",()=>{clearTimeout(this.controller.timeouts[this.stateKey])}),ve(this,"fireGestureHandler",(s=!1)=>{if(this.state._blocked)return this.debounced||(this.state._active=!1,this.clean()),null;if(!s&&!this.state.intentional&&!this.config.triggerAllEvents)return null;if(this.state.intentional){const u=this.state.active,d=this.state._active;this.state.active=d,this.state.first=d&&!u,this.state.last=u&&!d,this.controller.state.shared[this.ingKey]=d}const i=this.controller.pointerIds.size||this.controller.touchIds.size,o=this.controller.state.shared.buttons>0||i>0,a={...this.controller.state.shared,...this.state,...this.mapStateValues(this.state),locked:!!document.pointerLockElement,touches:i,down:o},r=this.handler(a);return this.state.memo=r!==void 0?r:this.state.memo,a}),this.controller=t,this.args=e}get config(){return this.controller.config[this.stateKey]}get enabled(){return this.controller.config.enabled&&this.config.enabled}get state(){return this.controller.state[this.stateKey]}get handler(){return this.controller.handlers[this.stateKey]}get transform(){return this.config.transform||this.controller.config.transform||Qo}updateSharedState(t){Object.assign(this.controller.state.shared,t)}updateGestureState(t){Object.assign(this.state,t)}checkIntentionality(t,e){return{_intentional:t,_blocked:!1}}getMovement(t){const{rubberband:e,threshold:s}=this.config,{_bounds:i,_initial:o,_active:a,_intentional:r,lastOffset:u,movement:d}=this.state,m=this.getInternalMovement(t,this.state),b=this.transform(s).map(Math.abs),p=r[0]===!1?vn(m[0],b[0]):r[0],v=r[1]===!1?vn(m[1],b[1]):r[1],y=this.checkIntentionality([p,v],m);if(y._blocked)return{...y,_movement:m,delta:[0,0]};const S=y._intentional,D=m;let g=[S[0]!==!1?m[0]-S[0]:0,S[1]!==!1?m[1]-S[1]:0];const F=Te(g,u),M=a?e:[0,0];return g=pn(i,Te(g,o),M),{...y,intentional:S[0]!==!1||S[1]!==!1,_initial:o,_movement:D,movement:g,values:t,offset:pn(i,F,M),delta:Ge(g,d)}}clean(){this.clearTimeout()}}function vn(n,t){return Math.abs(n)>=t?Ce(n)*t:!1}function pn(n,[t,e],[s,i]){const[[o,a],[r,u]]=n;return[hn(t,o,a,s),hn(e,r,u,i)]}function st({state:n},t,e){const{timeStamp:s,type:i}=t,o=n.values,a=e?0:s-n.startTime;return{_lastEventType:i,event:t,timeStamp:s,elapsedTime:a,previous:o}}function oe({state:n,config:t,stateKey:e,args:s},i,o){const a=n.offset,r=o.timeStamp,{initial:u,bounds:d}=t,m={...Re()[e],_active:!0,args:s,values:i,initial:i,offset:a,lastOffset:a,startTime:r};return{...m,_initial:ke(u,m),_bounds:ke(d,m)}}class Gn extends Ln{getInternalMovement(t,e){return Ge(t,e.initial)}checkIntentionality(t,e){if(t[0]===!1&&t[1]===!1)return{_intentional:t,axis:this.state.axis};const[s,i]=e.map(Math.abs),o=this.state.axis||(s>i?"x":st in n?tr(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,X=(n,t,e)=>(er(n,typeof t!="symbol"?t+"":t,e),e);const nr=3;function mn(n){"persist"in n&&typeof n.persist=="function"&&n.persist()}class sr extends Gn{constructor(){super(...arguments),X(this,"ingKey","dragging"),X(this,"stateKey","drag"),X(this,"setPointerCapture",t=>{if(this.config.useTouch||document.pointerLockElement)return;const{target:e,pointerId:s}=t;e&&"setPointerCapture"in e&&e.setPointerCapture(s),this.updateGestureState({_dragTarget:e,_dragPointerId:s})}),X(this,"releasePointerCapture",()=>{if(this.config.useTouch||document.pointerLockElement)return;const{_dragTarget:t,_dragPointerId:e}=this.state;if(e&&t&&"releasePointerCapture"in t&&(!("hasPointerCapture"in t)||t.hasPointerCapture(e)))try{t.releasePointerCapture(e)}catch{}}),X(this,"preventScroll",t=>{this.state._dragPreventScroll&&t.cancelable&&t.preventDefault()}),X(this,"getEventId",t=>this.config.useTouch?t.changedTouches[0].identifier:t.pointerId),X(this,"isValidEvent",t=>this.state._pointerId===this.getEventId(t)),X(this,"shouldPreventWindowScrollY",this.config.preventWindowScrollY&&this.controller.supportsTouchEvents),X(this,"setUpWindowScrollDetection",t=>{mn(t),Wo(this.controller,this.stateKey,[["touchmove",this.preventScroll],["touchend",this.clean.bind(this)],["touchcancel",this.clean.bind(this)]],{passive:!1}),this.setTimeout(this.startDrag.bind(this),250,t)}),X(this,"setUpDelayedDragTrigger",t=>{this.state._dragDelayed=!0,mn(t),this.setTimeout(this.startDrag.bind(this),this.config.delay,t)}),X(this,"setStartState",t=>{const e=on(t,this.transform);this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,e,t),...st(this,t,!0),_pointerId:this.getEventId(t)}),this.updateGestureState(this.getMovement(e))}),X(this,"onDragStart",t=>{Rn(this.controller,t),!(!this.enabled||this.state._active)&&(this.setStartState(t),this.setPointerCapture(t),this.shouldPreventWindowScrollY?this.setUpWindowScrollDetection(t):this.config.delay>0?this.setUpDelayedDragTrigger(t):this.startDrag(t,!0))}),X(this,"onDragChange",t=>{if(this.state.canceled||!this.state._active||!this.isValidEvent(t)||this.state._lastEventType===t.type&&t.timeStamp===this.state.timeStamp)return;let e;if(document.pointerLockElement){const{movementX:u,movementY:d}=t;e=Te(this.transform([u,d]),this.state.values)}else e=on(t,this.transform);const s=this.getKinematics(e,t);if(!this.state._dragStarted){if(this.state._dragDelayed){this.startDrag(t);return}if(this.shouldPreventWindowScrollY)if(!this.state._dragPreventScroll&&s.axis)if(s.axis==="x")this.startDrag(t);else{this.state._active=!1;return}else return;else return}const i=Tt(t);this.updateSharedState(i);const o=st(this,t),a=re(s._movement);let{_dragIsTap:r}=this.state;r&&a>=nr&&(r=!1),this.updateGestureState({...o,...s,_dragIsTap:r}),this.fireGestureHandler()}),X(this,"onDragEnd",t=>{if(An(this.controller,t),!this.isValidEvent(t)||(this.clean(),!this.state._active))return;this.state._active=!1;const e=this.state._dragIsTap,[s,i]=this.state.velocities,[o,a]=this.state.movement,[r,u]=this.state._intentional,[d,m]=this.config.swipeVelocity,[b,p]=this.config.swipeDistance,v=this.config.swipeDuration,y={...st(this,t),...this.getMovement(this.state.values)},S=[0,0];y.elapsedTimed&&Math.abs(o)>b&&(S[0]=Ce(s)),u!==!1&&Math.abs(i)>m&&Math.abs(a)>p&&(S[1]=Ce(i))),this.updateSharedState({buttons:0}),this.updateGestureState({...y,tap:e,swipe:S}),this.fireGestureHandler(this.config.filterTaps&&e===!0)}),X(this,"clean",()=>{super.clean(),this.state._dragStarted=!1,this.releasePointerCapture(),Ho(this.controller,this.stateKey)}),X(this,"onCancel",()=>{this.state.canceled||(this.updateGestureState({canceled:!0,_active:!1}),this.updateSharedState({buttons:0}),ls(this.fireGestureHandler))}),X(this,"onClick",t=>{this.state._dragIsTap||t.stopPropagation()})}startDrag(t,e=!1){!this.state._active||this.state._dragStarted||(e||this.setStartState(t),this.updateGestureState({_dragStarted:!0,_dragPreventScroll:!0,cancel:this.onCancel}),this.clearTimeout(),this.fireGestureHandler())}addBindings(t){if(this.config.useTouch?(K(t,"onTouchStart",this.onDragStart),K(t,"onTouchMove",this.onDragChange),K(t,"onTouchEnd",this.onDragEnd),K(t,"onTouchCancel",this.onDragEnd)):(K(t,"onPointerDown",this.onDragStart),K(t,"onPointerMove",this.onDragChange),K(t,"onPointerUp",this.onDragEnd),K(t,"onPointerCancel",this.onDragEnd)),this.config.filterTaps){const e=this.controller.config.eventOptions.capture?"onClick":"onClickCapture";K(t,e,this.onClick)}}}function Ue(n,t){let e,s=[],i,o=!1;function a(...r){return o&&e===this&&t(r,s)||(i=n.apply(this,r),o=!0,e=this,s=r),i}return a}function be(n,t){if(n===t)return!0;if(n&&t&&typeof n=="object"&&typeof t=="object"){if(n.constructor!==t.constructor)return!1;let e,s,i;if(Array.isArray(n)){if(e=n.length,e!==t.length)return!1;for(s=e;s--!==0;)if(!be(n[s],t[s]))return!1;return!0}let o;if(typeof Map=="function"&&n instanceof Map&&t instanceof Map){if(n.size!==t.size)return!1;for(o=n.entries();!(s=o.next()).done;)if(!t.has(s.value[0]))return!1;for(o=n.entries();!(s=o.next()).done;)if(!be(s.value[1],t.get(s.value[0])))return!1;return!0}if(typeof Set=="function"&&n instanceof Set&&t instanceof Set){if(n.size!==t.size)return!1;for(o=n.entries();!(s=o.next()).done;)if(!t.has(s.value[0]))return!1;return!0}if(n.constructor===RegExp)return n.source===t.source&&n.flags===t.flags;if(n.valueOf!==Object.prototype.valueOf)return n.valueOf()===t.valueOf();if(n.toString!==Object.prototype.toString)return n.toString()===t.toString();if(i=Object.keys(n),e=i.length,e!==Object.keys(t).length)return!1;for(s=e;s--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[s]))return!1;if(typeof Element<"u"&&n instanceof Element)return!1;for(s=e;s--!==0;)if(!(i[s]==="_owner"&&n.$$typeof)&&!be(n[i[s]],t[i[s]]))return!1;return!0}return n!==n&&t!==t}function Ve(n,t){try{return be(n,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}function ce(n={},t){const e={};for(const[s,i]of Object.entries(t))switch(typeof i){case"function":e[s]=i.call(e,n[s],s,n);break;case"object":e[s]=ce(n[s],i);break;case"boolean":i&&(e[s]=n[s]);break}return e}const ir=180,ar=.15,or=.5,rr=50,lr=250,Un={threshold(n=0){return At(n)},rubberband(n=0){switch(n){case!0:return At(ar);case!1:return At(0);default:return At(n)}},enabled(n=!0){return n},triggerAllEvents(n=!1){return n},initial(n=0){return typeof n=="function"?n:At(n)},transform:!0},He={...Un,axis:!0,lockDirection(n=!1){return n},bounds(n={}){if(typeof n=="function")return o=>He.bounds(n(o));const{left:t=-1/0,right:e=1/0,top:s=-1/0,bottom:i=1/0}=n;return[[t,e],[s,i]]}},ur=typeof window<"u"&&window.document&&window.document.createElement,cr={enabled(n=!0){return n},domTarget:!0,window(n=ur?window:void 0){return n},eventOptions({passive:n=!0,capture:t=!1}={}){return{passive:n,capture:t}},transform:!0},dr={...Un,bounds(n,t,{distanceBounds:e={},angleBounds:s={}}){const i=a=>{const r=dn(ke(e,a),{min:-1/0,max:1/0});return[r.min,r.max]},o=a=>{const r=dn(ke(s,a),{min:-1/0,max:1/0});return[r.min,r.max]};return typeof e!="function"&&typeof s!="function"?[i(),o()]:a=>[i(a),o(a)]}},fr={...He,useTouch(n=!0){return n&&In()},preventWindowScrollY(n=!1){return n},threshold(n,t,{filterTaps:e=!1,lockDirection:s=!1,axis:i=void 0}){const o=At(n,e?3:s||i?1:0);return this.filterTaps=e,o},swipeVelocity(n=or){return At(n)},swipeDistance(n=rr){return At(n)},swipeDuration(n=lr){return n},delay(n=0){switch(n){case!0:return ir;case!1:return 0;default:return n}}};function We(n){return ce(n,cr)}function hr(n={}){return ce(n,He)}function vr(n={}){return ce(n,dr)}function pr(n={}){return ce(n,fr)}function mr({domTarget:n,eventOptions:t,window:e,enabled:s,...i}){const o=We({domTarget:n,eventOptions:t,window:e,enabled:s});return o.drag=pr(i),o}function br({domTarget:n,eventOptions:t,window:e,enabled:s,...i}){const o=We({domTarget:n,eventOptions:t,window:e,enabled:s});return o.pinch=vr(i),o}function gr({domTarget:n,eventOptions:t,window:e,enabled:s,...i}){const o=We({domTarget:n,eventOptions:t,window:e,enabled:s});return o.wheel=hr(i),o}function Ke(n,t,e={}){const s=yr(n),i=new Uo(s);return i.config=t,i.handlers=n,i.nativeRefs=e,as()&&!t.manual&&(os(i.bind),rs(i.clean)),i}function yr(n){const t=new Set;return n.drag&&t.add(Ct.get("drag")),n.wheel&&t.add(Ct.get("wheel")),n.scroll&&t.add(Ct.get("scroll")),n.move&&t.add(Ct.get("move")),n.pinch&&t.add(Ct.get("pinch")),n.hover&&t.add(Ct.get("hover")),t}function _r(n,t={}){Ct.set("drag",sr);const e=O();return e.value||(e.value=Ue(mr,Ve)),Ke({drag:n},e.value(t))}class wr extends Ln{getInternalMovement(t,e){const s=e.values[1];let[i,o=s]=t,a=o-s,r=e.turns;return Math.abs(a)>270&&(r+=Ce(a)),Ge([i,o-360*r],e.initial)}getKinematics(t,e){const s=this.getMovement(t),i=(t[1]-s._movement[1]-this.state.initial[1])/360,o=e.timeStamp-this.state.timeStamp,{distance:a,velocity:r,...u}=Bn(s.movement,s.delta,o);return{turns:i,...s,...u}}mapStateValues(t){return{da:t.values,vdva:t.velocities}}}var xr=Object.defineProperty,$r=(n,t,e)=>t in n?xr(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,J=(n,t,e)=>($r(n,typeof t!="symbol"?t+"":t,e),e);const Sr=7,kr=260;class Tr extends wr{constructor(){super(...arguments),J(this,"ingKey","pinching"),J(this,"stateKey","pinch"),J(this,"onPinchStart",t=>{Rn(this.controller,t);const e=this.controller.touchIds;if(!this.enabled||this.state._active&&this.state._pointerIds.every(a=>e.has(a))||e.size<2)return;const s=Array.from(e).slice(0,2),{values:i,origin:o}=rn(t,s,this.transform);this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,i,t),...st(this,t,!0),_pointerIds:s,cancel:this.onCancel,origin:o}),this.updateGestureState(this.getMovement(i)),this.fireGestureHandler()}),J(this,"onPinchChange",t=>{const{canceled:e,_active:s}=this.state;if(e||!s||t.timeStamp===this.state.timeStamp)return;const i=Tt(t);this.updateSharedState(i);try{const{values:o,origin:a}=rn(t,this.state._pointerIds,this.transform),r=this.getKinematics(o,t);this.updateGestureState({...st(this,t),...r,origin:a}),this.fireGestureHandler()}catch{this.onPinchEnd(t)}}),J(this,"onPinchEnd",t=>{An(this.controller,t);const e=Le(t);this.state._pointerIds.every(s=>!e.includes(s))||(this.clean(),this.state._active&&(this.updateGestureState({...st(this,t),...this.getMovement(this.state.values),_active:!1}),this.fireGestureHandler()))}),J(this,"onCancel",()=>{this.state.canceled||(this.updateGestureState({_active:!1,canceled:!0}),this.fireGestureHandler())}),J(this,"onGestureStart",t=>{if(!this.enabled)return;t.preventDefault();const e=cn(t,this.transform);this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,e,t),...st(this,t,!0),origin:[t.clientX,t.clientY],cancel:this.onCancel}),this.updateGestureState(this.getMovement(e)),this.fireGestureHandler()}),J(this,"onGestureChange",t=>{const{canceled:e,_active:s}=this.state;if(e||!s)return;t.preventDefault();const i=Tt(t);this.updateSharedState(i);const o=cn(t,this.transform);o[0]=(o[0]-this.state.event.scale)*kr+this.state.values[0];const a=this.getKinematics(o,t);this.updateGestureState({...st(this,t),...a,origin:[t.clientX,t.clientY]}),this.fireGestureHandler()}),J(this,"onGestureEnd",t=>{this.clean(),this.state._active&&(this.updateGestureState({...st(this,t),...this.getMovement(this.state.values),_active:!1,origin:[t.clientX,t.clientY]}),this.fireGestureHandler())}),J(this,"wheelShouldRun",t=>this.enabled&&t.ctrlKey),J(this,"getWheelValuesFromEvent",t=>{const[,e]=Fn(t,this.transform),{values:[s,i]}=this.state;return{values:[s-e*Sr,i!==void 0?i:0],origin:[t.clientX,t.clientY],delta:[0,e]}}),J(this,"onWheel",t=>{this.wheelShouldRun(t)&&(this.setTimeout(this.onWheelEnd),this.state._active?this.onWheelChange(t):this.onWheelStart(t))}),J(this,"onWheelStart",t=>{const{values:e,delta:s,origin:i}=this.getWheelValuesFromEvent(t);t.cancelable&&t.preventDefault(),this.updateSharedState(Tt(t)),this.updateGestureState({...oe(this,e,t),...st(this,t,!0),initial:this.state.values,offset:e,delta:s,origin:i}),this.updateGestureState(this.getMovement(e)),this.fireGestureHandler()}),J(this,"onWheelChange",t=>{t.cancelable&&t.preventDefault(),this.updateSharedState(Tt(t));const{values:e,origin:s,delta:i}=this.getWheelValuesFromEvent(t);this.updateGestureState({...st(this,t),...this.getKinematics(e,t),origin:s,delta:i}),this.fireGestureHandler()}),J(this,"onWheelEnd",()=>{this.clean(),this.state._active&&(this.state._active=!1,this.updateGestureState(this.getMovement(this.state.values)),this.fireGestureHandler())})}addBindings(t){this.controller.config.domTarget&&!this.controller.supportsTouchEvents&&this.controller.supportsGestureEvents?(K(t,"onGestureStart",this.onGestureStart),K(t,"onGestureChange",this.onGestureChange),K(t,"onGestureEnd",this.onGestureEnd)):(K(t,"onTouchStart",this.onPinchStart),K(t,"onTouchMove",this.onPinchChange),K(t,"onTouchEnd",this.onPinchEnd),K(t,"onTouchCancel",this.onPinchEnd),K(t,"onWheel",this.onWheel))}}var Cr=Object.defineProperty,Mr=(n,t,e)=>t in n?Cr(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,ee=(n,t,e)=>(Mr(n,typeof t!="symbol"?t+"":t,e),e);class Er extends Gn{constructor(){super(...arguments),ee(this,"ingKey","wheeling"),ee(this,"stateKey","wheel"),ee(this,"debounced",!0),ee(this,"handleEvent",t=>{if(t.ctrlKey&&"pinch"in this.controller.handlers||!this.enabled)return;this.setTimeout(this.onEnd),this.updateSharedState(Tt(t));const e=Te(Fn(t,this.transform),this.state.values);if(this.state._active)this.updateGestureState({...st(this,t),...this.getKinematics(e,t)});else{this.updateGestureState({...oe(this,e,t),...st(this,t,!0),initial:this.state.values});const s=this.getMovement(e),i=Yo(s.delta);this.updateGestureState(s),this.updateGestureState(i)}this.fireGestureHandler()}),ee(this,"onEnd",()=>{if(this.clean(),!this.state._active)return;const t=this.getMovement(this.state.values);this.updateGestureState(t),this.updateGestureState({_active:!1,velocities:[0,0],velocity:0}),this.fireGestureHandler()})}addBindings(t){K(t,"onWheel",this.handleEvent)}}function Ir(n,t={}){Ct.set("pinch",Tr);const e=O();return e.value||(e.value=Ue(br,Ve)),Ke({pinch:n},e.value(t))}function Dr(n,t={}){Ct.set("wheel",Er);const e=O();return e.value||(e.value=Ue(gr,Ve)),Ke({wheel:n},e.value(t))}function Fr(n,t){const e=us(t),s=A(()=>{var p;return((p=l(e))==null?void 0:p.enabled)??!0}),i=O(!1),o=O([0,0]),a=O(1),r=A({set(p){return p>10?a.value=10:p<.1?a.value=.1:a.value=p,a.value},get(){return a.value}}),u=O([0,0]),d=A(()=>{var p;return(p=yn(n))==null?void 0:p.getBoundingClientRect()}),m=p=>(p=(p+1800)/1800,p<=0?.01:p),b=({wheeling:p,dragging:v,pinching:y,intentional:S,enabled:D,touches:g,ctrlKey:F,event:M})=>{const x=!D||!S?!1:v&&(g===2||"pointerType"in M&&M.pointerType==="mouse")||y||p&&!F;return i.value?requestAnimationFrame(()=>i.value=x):i.value=x,x};return _r(({wheeling:p,dragging:v,pinching:y,touches:S,intentional:D,delta:g,ctrlKey:F,event:M})=>{b({wheeling:p,dragging:v,pinching:y,intentional:D,enabled:s.value,ctrlKey:F,touches:S,event:M})&&(o.value[0]+=g[0],o.value[1]+=g[1])},{domTarget:n,filterTaps:!0}),Dr(({event:p,delta:v,wheeling:y,dragging:S,pinching:D,touches:g,intentional:F,ctrlKey:M})=>{b({dragging:S,pinching:D,wheeling:y,intentional:F,enabled:s.value,touches:g,ctrlKey:M,event:p})&&(p.preventDefault(),o.value[0]+=v[0],o.value[1]+=v[1])},{domTarget:n,eventOptions:{passive:!1}}),Ir(({offset:[p],origin:v,pinching:y,dragging:S,wheeling:D,ctrlKey:g,touches:F,intentional:M,event:x})=>{if(!b({dragging:S,pinching:y,wheeling:D,intentional:M,enabled:s.value,touches:F,ctrlKey:g,event:x}))return;const V=r.value;r.value=m(p),d.value&&(v[0]-=d.value.x,v[1]-=d.value.y,o.value[0]-=(v[0]-d.value.width/2)*(r.value-V),o.value[1]-=(v[1]-d.value.height/2)*(r.value-V)),o.value[0]-=v[0]-u.value[0],o.value[1]-=v[1]-u.value[1],u.value=v},{domTarget:n,eventOptions:{passive:!1},distanceBounds:()=>({min:-1800,max:16200})}),{offset:A(()=>[o.value[0]+u.value[0],o.value[1]+u.value[1]]),zoom:r,transformOrigin:u,active:i}}const Vn=Kt(()=>Fr(Me())),Hn=Kt(()=>{const n=O(""),t=O(0),e=O(0);return{src:n,width:t,height:e,processFiles:i=>{if(!((i==null?void 0:i[0])instanceof File))return;const o=new FileReader;o.addEventListener("load",a=>{var r;if((r=a.target)!=null&&r.result){const u=new Image;u.onload=()=>{n.value=u.src,t.value=u.width,e.value=u.height},u.src=a.target.result.toString()}}),o.readAsDataURL(i[0])}}}),Pr={class:"d-none md-d-inline-block"},Nr={class:"d-none md-d-inline-block"},Rr={key:0},Ar=ot({__name:"BoardControls",props:{info:{type:Array,required:!0}},setup(n){const{t}=Wt(),{lines:e}=Se(),s=Be(e),{zoom:i,transformOrigin:o}=Vn(),a=Ee(),r=Me(),u=A(()=>{const U=yn(r);return U?U.viewBox.baseVal:{x:0,y:0,width:0,height:0}});function d(){o.value=[(u.value.width/2-(u.value.x+u.value.width/2)/2)*i.value,(u.value.height/2-(u.value.y+u.value.height/2)/2)*i.value]}function m(){d(),i.value+=.1}function b(){d(),i.value-=.1}const{toggle:p,isFullscreen:v,isSupported:y}=cs(a),{undo:S,redo:D,canUndo:g,canRedo:F}=Se(),M=A(()=>`${t("board.nav.undo")} [ctrl + z][⌘ + z]`),x=A(()=>`${t("board.nav.redo")} [ctrl + shift + z][⌘ + shift + z]`),V=O();Z(s,U=>U===void 0?V.value=void 0:V.value=U>90?180-U:U);const z=A(()=>V.value?180-V.value:void 0),{processFiles:xt}=Hn(),{files:Ot,open:$t}=ds({multiple:!1,accept:"image/*"});return fs(Ot,U=>{xt(Array.from(U))}),_n("f",p),(U,T)=>{const f=Ga,h=$a,_=Ht,N=Ki;return k(),E("div",{class:C([U.$style.bar,"pointer-none"])},[c("div",{class:C(["pointer-all bg-bg-transparent-inverse text-inverse whitespace-nowrap",U.$style["info-box"]]),onMousemoveCapture:T[0]||(T[0]=tt(()=>{},["prevent","stop"]))},[P(f,{value:l(V)},{default:H(()=>[P(l(xo))]),_:1},8,["value"]),P(f,{value:l(z)},{default:H(()=>[P(l(zo))]),_:1},8,["value"])],34),(k(!0),E(dt,null,Zt(n.info,R=>(k(),E("li",{key:R,class:C(["bg-bg-transparent-inverse text-inverse min-w-0",U.$style["info-box"]])},[c("small",null,B(R),1)],2))),128)),c("nav",{class:C(U.$style.nav)},[c("ul",{class:C(["pointer-all",U.$style.nav__btns])},[P(h),c("li",null,[P(_,{disabled:!l(g),tooltip:l(M),"tooltip-placement":"left",onClick:l(S),onTouchstartCapture:tt(l(S),["prevent","stop"])},{default:H(()=>[P(l(Co))]),_:1},8,["disabled","tooltip","onClick","onTouchstartCapture"])]),c("li",null,[P(_,{disabled:!l(F),tooltip:l(x),"tooltip-placement":"left",onClick:l(D),onTouchstartCapture:tt(l(D),["prevent","stop"])},{default:H(()=>[P(l(Fo))]),_:1},8,["disabled","tooltip","onClick","onTouchstartCapture"])]),P(N,{disabled:l(g)},null,8,["disabled"]),c("li",null,[P(_,{tooltip:l(t)("board.nav.upload_file"),"tooltip-placement":"left",onClick:T[1]||(T[1]=R=>l($t)()),onTouchstartCapture:T[2]||(T[2]=tt(()=>{},["stop"]))},{default:H(()=>[P(l(mo))]),_:1},8,["tooltip"])]),c("li",Pr,[P(_,{disabled:!l(g),tooltip:`${l(t)("board.result.zoom_out")} [-]`,"tooltip-placement":"left",onClick:T[3]||(T[3]=R=>b()),onTouchstartCapture:T[4]||(T[4]=tt(R=>b(),["prevent","stop"]))},{default:H(()=>[P(l(uo))]),_:1},8,["disabled","tooltip"])]),c("li",Nr,[P(_,{disabled:!l(g),tooltip:`${l(t)("board.result.zoom_in")} [+]`,"tooltip-placement":"left",onClick:T[5]||(T[5]=R=>m()),onTouchstartCapture:T[6]||(T[6]=tt(R=>m(),["prevent","stop"]))},{default:H(()=>[P(l(so))]),_:1},8,["disabled","tooltip"])]),l(y)?(k(),E("li",Rr,[P(_,{tooltip:`${l(t)("board.nav.toggle_fullscreen")} [f]`,"tooltip-placement":"left",onClick:l(p),onTouchstartCapture:tt(l(p),["prevent","stop"])},{default:H(()=>[l(v)?(k(),it(l(Za),{key:0})):(k(),it(l(Ka),{key:1}))]),_:1},8,["tooltip","onClick","onTouchstartCapture"])])):ct("",!0)],2)],2)],2)}}}),Or="f_w",zr="f_x",Br={bar:Or,nav__btns:zr,"info-box":"f_y"},Lr={$style:Br},Gr=Et(Ar,[["__cssModules",Lr]]),Ur=["x1","y1","x2","y2"],Vr=ot({__name:"Segment",props:{pointStart:{type:Array,default:void 0},pointStop:{type:Array,default:void 0}},setup(n){return(t,e)=>n.pointStart&&n.pointStop?(k(),E("line",{key:0,x1:n.pointStart[0],y1:n.pointStart[1],x2:n.pointStop[0],y2:n.pointStop[1]},null,8,Ur)):ct("",!0)}}),Hr=hs((n,t,e,s)=>{if(!n||!t||!e||!s)return;n===e&&(n+=.1);const i=(t-s)/(n-e),o=s-e*i;return{slope:i,intercept:o}});function le(n){return A(()=>Hr(...n.value[0]||[],...n.value[1]||[]))}var I=function(n,t,e){if(!t.has(n))throw new TypeError("attempted to set private field on non-instance");return t.set(n,e),e},w=function(n,t){if(!t.has(n))throw new TypeError("attempted to get private field on non-instance");return t.get(n)},Pt,Bt,ut,qt,ne,vt,pt,mt,bt,gt,yt,_t,wt,Lt,Xt,Nt,ge,Rt;const Wr=function(n){var t=131,e=137,s=0;n+="x";var i=Math.floor(9007199254740991/e);for(let o=0;oi&&(s=Math.floor(s/e)),s=s*t+n.charCodeAt(o);return s},$="0123456789abcdef".split(""),Kr=[-2147483648,8388608,32768,128],lt=[24,16,8,0],pe=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],j=[];class jr{constructor(t=!1,e=!1){Pt.set(this,void 0),Bt.set(this,void 0),ut.set(this,void 0),qt.set(this,void 0),ne.set(this,void 0),vt.set(this,void 0),pt.set(this,void 0),mt.set(this,void 0),bt.set(this,void 0),gt.set(this,void 0),yt.set(this,void 0),_t.set(this,void 0),wt.set(this,void 0),Lt.set(this,void 0),Xt.set(this,void 0),Nt.set(this,void 0),ge.set(this,0),Rt.set(this,void 0),this.init(t,e)}init(t,e){e?(j[0]=j[16]=j[1]=j[2]=j[3]=j[4]=j[5]=j[6]=j[7]=j[8]=j[9]=j[10]=j[11]=j[12]=j[13]=j[14]=j[15]=0,I(this,Bt,j)):I(this,Bt,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),t?(I(this,vt,3238371032),I(this,pt,914150663),I(this,mt,812702999),I(this,bt,4144912697),I(this,gt,4290775857),I(this,yt,1750603025),I(this,_t,1694076839),I(this,wt,3204075428)):(I(this,vt,1779033703),I(this,pt,3144134277),I(this,mt,1013904242),I(this,bt,2773480762),I(this,gt,1359893119),I(this,yt,2600822924),I(this,_t,528734635),I(this,wt,1541459225)),I(this,Pt,I(this,Rt,I(this,ut,I(this,Xt,0)))),I(this,qt,I(this,Lt,!1)),I(this,ne,!0),I(this,Nt,t)}update(t){if(w(this,qt))return this;let e;t instanceof ArrayBuffer?e=new Uint8Array(t):e=t;let s=0;const i=e.length,o=w(this,Bt);for(;s>2]|=e[s]<>2]|=r<>2]|=(192|r>>6)<>2]|=(128|r&63)<=57344?(o[a>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|r&63)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|r&63)<=64?(I(this,Pt,o[16]),I(this,Rt,a-64),this.hash(),I(this,Lt,!0)):I(this,Rt,a)}return w(this,ut)>4294967295&&(I(this,Xt,w(this,Xt)+(w(this,ut)/4294967296<<0)),I(this,ut,w(this,ut)%4294967296)),this}finalize(){if(w(this,qt))return;I(this,qt,!0);const t=w(this,Bt),e=w(this,ge);t[16]=w(this,Pt),t[e>>2]|=Kr[e&3],I(this,Pt,t[16]),e>=56&&(w(this,Lt)||this.hash(),t[0]=w(this,Pt),t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=w(this,Xt)<<3|w(this,ut)>>>29,t[15]=w(this,ut)<<3,this.hash()}hash(){let t=w(this,vt),e=w(this,pt),s=w(this,mt),i=w(this,bt),o=w(this,gt),a=w(this,yt),r=w(this,_t),u=w(this,wt);const d=w(this,Bt);let m,b,p,v,y,S,D,g,F,M;for(let x=16;x<64;++x)v=d[x-15],m=(v>>>7|v<<25)^(v>>>18|v<<14)^v>>>3,v=d[x-2],b=(v>>>17|v<<15)^(v>>>19|v<<13)^v>>>10,d[x]=d[x-16]+m+d[x-7]+b<<0;M=e&s;for(let x=0;x<64;x+=4)w(this,ne)?(w(this,Nt)?(D=300032,v=d[0]-1413257819,u=v-150054599<<0,i=v+24177077<<0):(D=704751109,v=d[0]-210244248,u=v-1521486534<<0,i=v+143694565<<0),I(this,ne,!1)):(m=(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10),b=(o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7),D=t&e,p=D^t&s^M,S=o&a^~o&r,v=u+b+S+pe[x]+d[x],y=m+p,u=i+v<<0,i=v+y<<0),m=(i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10),b=(u>>>6|u<<26)^(u>>>11|u<<21)^(u>>>25|u<<7),g=i&t,p=g^i&e^D,S=u&o^~u&a,v=r+b+S+pe[x+1]+d[x+1],y=m+p,r=s+v<<0,s=v+y<<0,m=(s>>>2|s<<30)^(s>>>13|s<<19)^(s>>>22|s<<10),b=(r>>>6|r<<26)^(r>>>11|r<<21)^(r>>>25|r<<7),F=s&i,p=F^s&t^g,S=r&u^~r&o,v=a+b+S+pe[x+2]+d[x+2],y=m+p,a=e+v<<0,e=v+y<<0,m=(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10),b=(a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7),M=e&s,p=M^e&i^F,S=a&r^~a&u,v=o+b+S+pe[x+3]+d[x+3],y=m+p,o=t+v<<0,t=v+y<<0;I(this,vt,w(this,vt)+t<<0),I(this,pt,w(this,pt)+e<<0),I(this,mt,w(this,mt)+s<<0),I(this,bt,w(this,bt)+i<<0),I(this,gt,w(this,gt)+o<<0),I(this,yt,w(this,yt)+a<<0),I(this,_t,w(this,_t)+r<<0),I(this,wt,w(this,wt)+u<<0)}hex(){this.finalize();const t=w(this,vt),e=w(this,pt),s=w(this,mt),i=w(this,bt),o=w(this,gt),a=w(this,yt),r=w(this,_t),u=w(this,wt);let d=$[t>>28&15]+$[t>>24&15]+$[t>>20&15]+$[t>>16&15]+$[t>>12&15]+$[t>>8&15]+$[t>>4&15]+$[t&15]+$[e>>28&15]+$[e>>24&15]+$[e>>20&15]+$[e>>16&15]+$[e>>12&15]+$[e>>8&15]+$[e>>4&15]+$[e&15]+$[s>>28&15]+$[s>>24&15]+$[s>>20&15]+$[s>>16&15]+$[s>>12&15]+$[s>>8&15]+$[s>>4&15]+$[s&15]+$[i>>28&15]+$[i>>24&15]+$[i>>20&15]+$[i>>16&15]+$[i>>12&15]+$[i>>8&15]+$[i>>4&15]+$[i&15]+$[o>>28&15]+$[o>>24&15]+$[o>>20&15]+$[o>>16&15]+$[o>>12&15]+$[o>>8&15]+$[o>>4&15]+$[o&15]+$[a>>28&15]+$[a>>24&15]+$[a>>20&15]+$[a>>16&15]+$[a>>12&15]+$[a>>8&15]+$[a>>4&15]+$[a&15]+$[r>>28&15]+$[r>>24&15]+$[r>>20&15]+$[r>>16&15]+$[r>>12&15]+$[r>>8&15]+$[r>>4&15]+$[r&15];return w(this,Nt)||(d+=$[u>>28&15]+$[u>>24&15]+$[u>>20&15]+$[u>>16&15]+$[u>>12&15]+$[u>>8&15]+$[u>>4&15]+$[u&15]),d}toString(){return this.hex()}digest(){this.finalize();const t=w(this,vt),e=w(this,pt),s=w(this,mt),i=w(this,bt),o=w(this,gt),a=w(this,yt),r=w(this,_t),u=w(this,wt),d=[t>>24&255,t>>16&255,t>>8&255,t&255,e>>24&255,e>>16&255,e>>8&255,e&255,s>>24&255,s>>16&255,s>>8&255,s&255,i>>24&255,i>>16&255,i>>8&255,i&255,o>>24&255,o>>16&255,o>>8&255,o&255,a>>24&255,a>>16&255,a>>8&255,a&255,r>>24&255,r>>16&255,r>>8&255,r&255];return w(this,Nt)||d.push(u>>24&255,u>>16&255,u>>8&255,u&255),d}array(){return this.digest()}arrayBuffer(){this.finalize();const t=new ArrayBuffer(w(this,Nt)?28:32),e=new DataView(t);return e.setUint32(0,w(this,vt)),e.setUint32(4,w(this,pt)),e.setUint32(8,w(this,mt)),e.setUint32(12,w(this,bt)),e.setUint32(16,w(this,gt)),e.setUint32(20,w(this,yt)),e.setUint32(24,w(this,_t)),w(this,Nt)||e.setUint32(28,w(this,wt)),t}}Pt=new WeakMap,Bt=new WeakMap,ut=new WeakMap,qt=new WeakMap,ne=new WeakMap,vt=new WeakMap,pt=new WeakMap,mt=new WeakMap,bt=new WeakMap,gt=new WeakMap,yt=new WeakMap,_t=new WeakMap,wt=new WeakMap,Lt=new WeakMap,Xt=new WeakMap,Nt=new WeakMap,ge=new WeakMap,Rt=new WeakMap;function Yr(n){const t=new jr;return t.update(n),parseInt(t.hex().substring(0,8),16)}const qr=function(n){var t="#";return n.forEach(function(e){e<16&&(t+=0),t+=e.toString(16)}),t},Xr=function(n,t,e){n/=360;var s=e<.5?e*(1+t):e+t-e*t,i=2*e-s;return[n+1/3,n,n-1/3].map(function(o){return o<0&&o++,o>1&&o--,o<1/6?o=i+(s-i)*6*o:o<.5?o=s:o<2/3?o=i+(s-i)*6*(2/3-o):o=i,Math.round(o*255)})};class Zr{constructor(t={}){const[e,s]=[t.lightness,t.saturation].map(function(i){return i=i!==void 0?i:[.35,.5,.65],Array.isArray(i)?i.concat():[i]});this.L=e,this.S=s,typeof t.hue=="number"&&(t.hue={min:t.hue,max:t.hue}),typeof t.hue=="object"&&!Array.isArray(t.hue)&&(t.hue=[t.hue]),typeof t.hue>"u"&&(t.hue=[]),this.hueRanges=t.hue.map(function(i){return{min:typeof i.min>"u"?0:i.min,max:typeof i.max>"u"?360:i.max}}),this.hash=Yr,typeof t.hash=="function"&&(this.hash=t.hash),t.hash==="bkdr"&&(this.hash=Wr)}hsl(t){var e,s,i,o=this.hash(t),a=727;if(this.hueRanges.length){const r=this.hueRanges[o%this.hueRanges.length];e=o/this.hueRanges.length%a*(r.max-r.min)/a+r.min}else e=o%359;return o=Math.ceil(o/360),s=this.S[o%this.S.length],o=Math.ceil(o/this.S.length),i=this.L[o%this.L.length],[e,s,i]}rgb(t){var e=this.hsl(t);return Xr.apply(this,e)}hex(t){var e=this.rgb(t);return qr(e)}}const Jr=Array.from({length:550},(n,t)=>(t+401)/1e3),Qr=Array.from({length:551},(n,t)=>(t+50)/1e3);function Ae(n){return A(()=>{const t=JSON.stringify(n.value),e=De.value?Jr:Qr,[s,i,o]=new Zr({lightness:e}).hsl(t);return`hsl(${[s,`${De.value&&o<.3||!De.value&&o>.7?Math.min(i+.4,1)*100:i*100}%`,`${o*100}%`].join(",")})`})}const Wn=ot({__name:"Line",props:{points:{type:Array,default:()=>[]},pathWidth:{type:Number,default:1},svgSize:{type:Object,default:void 0},svgOffset:{type:Object,default:void 0}},setup(n){const t=n,e=le(qe(t,"points")),s=Ae(qe(t,"points")),i=A(()=>{var p,v,y,S;const{svgSize:a,svgOffset:r}=t;if(!a||!r||!e.value||((p=t.points[0])==null?void 0:p[0])===((v=t.points[1])==null?void 0:v[0])&&((y=t.points[0])==null?void 0:y[1])===((S=t.points[1])==null?void 0:S[1]))return;const{slope:u,intercept:d}=e.value,m=r.x,b=a.width+r.x;return[[m,u*m+d],[b,u*b+d]]}),o=A(()=>`${t.pathWidth} ${2*t.pathWidth}`);return(a,r)=>{const u=Vr;return k(),E(dt,null,[i.value?(k(),E(dt,{key:0},[P(u,Ut(a.$attrs,{"stroke-width":n.pathWidth*.8,stroke:"var(--background-color-transparent)","point-start":i.value[0],"point-stop":i.value[1],"stroke-dasharray":o.value,"stroke-linecap":"round",opacity:".2"}),null,16,["stroke-width","point-start","point-stop","stroke-dasharray"]),P(u,Ut({"stroke-width":n.pathWidth*.4,stroke:l(s)},a.$attrs,{"point-start":i.value[0],"point-stop":i.value[1],"stroke-dasharray":o.value,"stroke-linecap":"round"}),null,16,["stroke-width","stroke","point-start","point-stop","stroke-dasharray"])],64)):ct("",!0),P(u,Ut(a.$attrs,{"stroke-width":n.pathWidth*1.2,stroke:"var(--background-color-transparent)","point-start":n.points[0],"point-stop":n.points[1],"stroke-linecap":"round",opacity:".3"}),null,16,["stroke-width","point-start","point-stop"]),P(u,Ut({stroke:l(s)},a.$attrs,{"stroke-linecap":"round","point-start":n.points[0],"point-stop":n.points[1]}),null,16,["stroke","point-start","point-stop"])],64)}}}),tl={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},el=c("path",{fill:"currentColor",d:"M24 19h-3v-3h-2v3h-3v2h3v3h2v-3h3z"},null,-1),nl=c("path",{fill:"currentColor",d:"m31 29.586l-4.688-4.688a8.028 8.028 0 1 0-1.415 1.414L29.586 31zM20 26a6 6 0 1 1 6-6a6.007 6.007 0 0 1-6 6M4 8H2V4a2 2 0 0 1 2-2h4v2H4zm22 0h-2V4h-4V2h4a2 2 0 0 1 2 2zM12 2h4v2h-4zM8 26H4a2 2 0 0 1-2-2v-4h2v4h4zM2 12h2v4H2z"},null,-1),sl=[el,nl];function il(n,t){return k(),E("svg",tl,[...sl])}const al=Y({name:"carbon-zoom-in-area",render:il}),ol={viewBox:"0 0 32 32",width:"1.2em",height:"1.2em"},rl=c("path",{fill:"currentColor",d:"M16 19h8v2h-8z"},null,-1),ll=c("path",{fill:"currentColor",d:"m31 29.586l-4.688-4.688a8.028 8.028 0 1 0-1.415 1.414L29.586 31zM20 26a6 6 0 1 1 6-6a6.007 6.007 0 0 1-6 6M4 8H2V4a2 2 0 0 1 2-2h4v2H4zm22 0h-2V4h-4V2h4a2 2 0 0 1 2 2zM12 2h4v2h-4zM8 26H4a2 2 0 0 1-2-2v-4h2v4h4zM2 12h2v4H2z"},null,-1),ul=[rl,ll];function cl(n,t){return k(),E("svg",ol,[...ul])}const dl=Y({name:"carbon-zoom-out-area",render:cl});var St=(n=>(n[n.UP=0]="UP",n[n.DOWN=1]="DOWN",n[n.LEFT=2]="LEFT",n[n.RIGHT=3]="RIGHT",n))(St||{});const Kn=Kt(()=>{const n=O(!1);return{outOfBoundLabels:n,setOutBoundLabels(t,e,s){const i={x:30,y:4.5},o=t.find(({x:u,y:d})=>(u-=s.x,d-=s.y,ue.width-i.x||de.height-i.y));if(!o)return n.value=!1;let{x:a,y:r}=o;return a-=s.x,r-=s.y,ae.width-i.x?n.value={direction:3,y:r}:r{if(!n.value||!t.value)return;const{slope:e,intercept:s}=n.value,{slope:i,intercept:o}=t.value;let a;return e===i?a=o-s:a=(s-o)/(i-e),{x:a,y:e*a+s}})}function Yn(n,t,e,s){return A(()=>{if(!t.value||!e.value||!s.value||!n.value)return;const i=e.value,o=s.value;let a=Math.tan((Math.atan(i.slope)+Math.atan(o.slope))/2),r=-1/a,u=i.slope*t.value.x+i.intercept-a*t.value.x,d=i.slope*t.value.x+i.intercept-r*t.value.x;const m=En([[[0,i.intercept],[t.value.x,i.slope*t.value.x+i.intercept]],[[0,u],[t.value.x,a*t.value.x+u]]])*2;return(m-1>n.value||m+1{if(!t.value||!e.value||!n.value)return s.value=[];const{acute:{slope:i,intercept:o},obtuse:{slope:a,intercept:r}}=e.value,u=70,d=n.value,m=Math.cos(Math.atan(i))*(u+(90-d)*.4)+t.value.x,b=180-d,p=-Math.cos(Math.atan(a))*(u+(90-b)*.4)+t.value.x;s.value=[{x:m,y:i*m+o,value:d},{x:p,y:a*p+r,value:b}]},{throttle:20,immediate:!0}),s}function bn(n,t){return A(()=>{if(!t.value||!n.value)return;const{slope:e,intercept:s}=n.value,{x1:i,x2:o}=t.value;return[[i,e*i+s],[o,e*o+s]]})}const fl=["viewBox"],hl=["transform"],vl=["x","y"],pl=ot({__name:"BoardResult",setup(n){const{t}=Wt(),e=O(!1);function s(){e.value&&(e.value=!1)}const i=O();ps(i,s),_n("Escape",s);const{height:o,width:a}=Oe(Ee()),r=A(()=>({width:300,height:300*o.value/a.value})),{outOfBoundLabels:u}=Kn(),d=A(()=>{const T=e.value?260:50;return{width:T,height:T}}),m=A(()=>({minY:d.value.height,maxY:o.value-d.value.height,minX:d.value.width,maxX:a.value-d.value.width})),b=A(()=>{const{minX:T,maxX:f,minY:h,maxY:_}=m.value,N=G=>G>_?_:GG>f?f:Gp.value[0]||[]),S=A(()=>p.value[1]||[]),D=le(y),g=le(S),F=jn(D,g),M=Yn(v,F,D,g),x=qn(v,F,M),V=A(()=>F.value&&{x1:F.value.x-r.value.width,x2:F.value.x+r.value.width}),z=bn(D,V),xt=bn(g,V),Ot=Ae(y),$t=Ae(S),U={[St.UP]:"bottom",[St.DOWN]:void 0,[St.LEFT]:"right",[St.RIGHT]:"left"};return(T,f)=>{const h=Ht,_=Wn;return l(D)&&l(g)&&l(F)&&l(u)?(k(),E("section",{key:0,ref_key:"el",ref:i,class:C(["bg-bg-transparent-inverse text-inverse",[T.$style.result,{[T.$style["result--open"]]:l(e)}]]),style:me(l(b)),onMousemove:f[0]||(f[0]=tt(()=>{},["prevent","stop"])),onClick:f[1]||(f[1]=N=>e.value=!l(e))},[P(h,{class:C(T.$style.btn),tooltip:l(e)?l(t)("board.result.zoom_out"):l(t)("board.result.zoom_in"),"tooltip-placement":l(e)?"left":U[l(u).direction]},{default:H(()=>[(k(),it(ms(l(e)?l(dl):l(al))))]),_:1},8,["class","tooltip","tooltip-placement"]),(k(),E("svg",{viewBox:`${l(r).width*.1} ${l(r).height*.1} ${l(r).width*.8} ${l(r).height*.8}`,class:C(T.$style.svg)},[c("g",{transform:`translate(${-l(F).x+l(r).width*.5} ${-l(F).y+l(r).height*.5})`},[l(z)?(k(),it(_,Ut({key:0,"stroke-width":"4","stroke-linecap":"round"},T.$attrs,{stroke:l(Ot),"path-width":4,points:l(z),"stroke-dasharray":"5 10",filter:"saturate(2.5)"}),null,16,["stroke","points"])):ct("",!0),l(xt)?(k(),it(_,Ut({key:1,"stroke-width":"4","stroke-linecap":"round"},T.$attrs,{stroke:l($t),"path-width":4,points:l(xt),"stroke-dasharray":"5 10",filter:"saturate(2.5)"}),null,16,["stroke","points"])):ct("",!0),(k(!0),E(dt,null,Zt(l(x),N=>(k(),E("text",{key:`${N.x}|${N.y}`,x:N.x,y:N.y,"text-anchor":"middle","dominant-baseline":"middle",stroke:"transparent"},B(N.value.toFixed(3))+"° ",9,vl))),128))],8,hl)],10,fl))],38)):ct("",!0)}}}),ml="f_z",bl="f_1",gl="f_2",yl={result:ml,"result--open":"f_0",svg:bl,btn:gl},_l={$style:yl},wl=Et(pl,[["__cssModules",_l]]),xl=["viewBox","stroke-width"],$l=["cx","cy","r"],Sl=["x","y","stroke-width"],kl=["x","y"],Tl=ot({__name:"BoardSvg",props:{width:{type:Number,default:0},height:{type:Number,default:0}},emits:["pressed"],setup(n,{emit:t}){const e=n,s=t,{width:i,height:o}=gn(e),a=Me(),r=O(!1),{ctrl:u,meta:d,option:m}=ze(),b=A(()=>{if(d.value)return"move"}),{offset:p,active:v,zoom:y,transformOrigin:S}=Vn(),D=A(()=>5/y.value),g=A(()=>({width:i.value/y.value,height:o.value/y.value})),F=A(()=>({x:-p.value[0]/y.value,y:-p.value[1]/y.value})),{elementX:M,elementY:x}=bs(a,{handleOutside:!1}),V=A(()=>(M.value-p.value[0])/y.value),z=A(()=>(x.value-p.value[1])/y.value),{undo:xt,redo:Ot}=ye(M),{undo:$t,redo:U}=ye(x),{lines:T,predictNextPoint:f,drawNextPoint:h,step:_,registerOnRedo:N,registerOnUndo:R}=Se();N(()=>{Ot(),U()}),R(()=>{xt(),$t()}),Z([V,z],([rt,at])=>{_.value===2&&f(rt,at)});const L=Be(T),G=A(()=>T.value[0]||[]),q=A(()=>T.value[1]||[]),W=le(G),ft=le(q),It=jn(W,ft),ht=Yn(L,It,W,ft),Dt=qn(L,It,ht),{setOutBoundLabels:de}=Kn();Z([Dt,g,F],([rt,at,zt])=>de(rt,at,zt)),Z([i,o],([rt,at],[zt,nt])=>{S.value=[S.value[0]+(rt-zt)/2,S.value[1]+(at-nt)/2]});function jt(){v.value||(h(V.value,z.value),s("pressed"))}return(rt,at)=>{const zt=Wn;return k(),E("svg",{ref_key:"svgRef",ref:a,viewBox:`${l(F).x} ${l(F).y} ${l(g).width} ${l(g).height}`,"stroke-width":l(D),tabindex:"0",style:me({cursor:l(b)}),onTouchend:tt(jt,["prevent"]),onMouseup:tt(jt,["left","prevent"]),onMousedownOnce:at[0]||(at[0]=tt(nt=>r.value=!0,["left"])),onMousemovePassiveOnce:at[1]||(at[1]=nt=>r.value=!0),onTouchstartPassiveOnce:at[2]||(at[2]=nt=>r.value=!0)},[se(rt.$slots,"default"),l(_)%2?Ft((k(),E("circle",{key:0,cx:`${l(V)}px`,cy:`${l(z)}px`,r:l(D),"stroke-width":1},null,8,$l)),[[gs,l(r)&&!l(u)&&!l(d)&&!l(m)]]):(k(),it(zt,{key:1,points:[l(T)[Math.floor(l(_)/2)][0],[l(V),l(z)]],"svg-size":l(g),"svg-offset":l(F),"path-width":l(D)},null,8,["points","svg-size","svg-offset","path-width"])),P(zt,{points:l(T)[0],"svg-size":l(g),"svg-offset":l(F),"path-width":l(D)},null,8,["points","svg-size","svg-offset","path-width"]),P(zt,{points:l(T)[1],"svg-size":l(g),"svg-offset":l(F),"path-width":l(D)},null,8,["points","svg-size","svg-offset","path-width"]),(k(!0),E(dt,null,Zt(l(Dt),nt=>(k(),E(dt,{key:`${nt.x}|${nt.y}`},[c("text",{x:nt.x,y:nt.y,"text-anchor":"middle","dominant-baseline":"middle",stroke:"var(--background-color-transparent)","stroke-width":l(D),style:me(`font-size:${l(D)/5}em`)},B(nt.value.toFixed(3))+"° ",13,Sl),c("text",{x:nt.x,y:nt.y,"text-anchor":"middle","dominant-baseline":"middle",stroke:"transparent",style:me(`font-size:${l(D)/5}em`)},B(nt.value.toFixed(3))+"° ",13,kl)],64))),128))],44,xl)}}}),Cl=["href","x","y","height","width"],Ml=ot({__name:"Board",setup(n){const{t}=Wt(),e=O(!0),s=Ee(),{height:i,width:o}=Oe(s),{src:a,width:r,height:u,processFiles:d}=Hn(),m=O(0),b=O(0);Z(a,()=>{if(u&&r)if(r.value>o.value||u.value>i.value){const y=Math.min(o.value/r.value,i.value/u.value);m.value=u.value*y,b.value=r.value*y}else m.value=u.value,b.value=r.value});const{isOverDropZone:p}=ys(s,d),v=A(()=>p.value?[t("board.drop_file_here")]:[]);return(y,S)=>{const D=Tl,g=wl,F=Gr;return k(),E("div",{ref_key:"boardRef",ref:s,class:C(y.$style.board)},[P(D,{class:C(y.$style.board__svg),width:l(o),height:l(i),onPressed:S[0]||(S[0]=M=>e.value=!1)},{default:H(()=>[l(a)?(k(),E("image",{key:0,href:l(a),x:l(b)/-2,y:l(m)/-2,height:`${l(m)}`,width:`${l(b)}`},null,8,Cl)):ct("",!0)]),_:1},8,["class","width","height"]),l(e)&&!l(a)?(k(),E("div",{key:0,class:C(y.$style.board__hint)},B(l(t)("board.click_this_button_or_drop")),3)):ct("",!0),P(g),P(F,{class:C(y.$style.board__nav),info:l(v),"onUpdate:files":l(d)},null,8,["class","info","onUpdate:files"])],2)}}}),El="f_h",Il="f_i",Dl="f_j",Fl="f_k",Pl={board:El,board__svg:Il,board__nav:Dl,board__hint:Fl},Nl={$style:Pl},Rl=Et(Ml,[["__cssModules",Nl]]),Al={};function Ol(n,t){const e=Rl;return k(),it(e,{class:"flex-grow"})}const Gl=Et(Al,[["render",Ol]]);export{Gl as default};
diff --git a/assets/privacy-policy-CmBhhdc4.css b/assets/privacy-policy-D0QDukm7.css
similarity index 100%
rename from assets/privacy-policy-CmBhhdc4.css
rename to assets/privacy-policy-D0QDukm7.css
diff --git a/assets/privacy-policy-BHhLFajV.js b/assets/privacy-policy-DwrW54wZ.js
similarity index 99%
rename from assets/privacy-policy-BHhLFajV.js
rename to assets/privacy-policy-DwrW54wZ.js
index cff819bc..9664e4e1 100644
--- a/assets/privacy-policy-BHhLFajV.js
+++ b/assets/privacy-policy-DwrW54wZ.js
@@ -1 +1 @@
-import{d as p,af as h,o as d,e as f,ag as n,a as e,f as r,g as i,h as a,j as s,t as y,n as l,H as u}from"./app-Dwl7-0AS.js";import{_ as m}from"./_plugin-vue_export-helper-DlAUqK2U.js";const g=["href","textContent"],c=p({__name:"privacy-policy",setup(I){return h({title:"Privacy Policy"}),(t,o)=>(d(),f("article",{class:l(t.$style.article)},[o[3]||(o[3]=n("
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
",2)),e("ul",null,[e("li",null,[o[0]||(o[0]=r(" Visit our website at ")),e("a",{href:`${"host"in t?t.host:i(a)}${"basePath"in t?t.basePath:i(s)}`,textContent:y(`${"host"in t?t.host:i(a)}${"basePath"in t?t.basePath:i(s)}`)},null,8,g),o[1]||(o[1]=r(", or any website of ours that links to this privacy notice "))])]),o[4]||(o[4]=n('
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
',78)),e("table",{class:l(t.$style.table)},o[2]||(o[2]=[e("tbody",null,[e("tr",null,[e("td",null,[e("strong",null,"Category")]),e("td",null,[e("strong",null,"Examples")]),e("td",null,[e("strong",null,"Collected")])]),e("tr",null,[e("td",null,[e("p",null,"A. Identifiers")]),e("td",null,[e("p",null," Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null," B. Personal information categories listed in the California Customer Records statute ")]),e("td",null,[e("p",null," Name, contact information, education, employment, employment history, and financial information ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null," C. Protected classification characteristics under California or federal law ")]),e("td",null,[e("p",null,"Gender and date of birth")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"D. Commercial information")]),e("td",null,[e("p",null," Transaction information, purchase history, financial details, and payment information ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"E. Biometric information")]),e("td",null,[e("p",null,"Fingerprints and voiceprints")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"F. Internet or other similar network activity")]),e("td",null,[e("p",null," Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"G. Geolocation data")]),e("td",null,[e("p",null,"Device location")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null," H. Audio, electronic, visual, thermal, olfactory, or similar information ")]),e("td",null,[e("p",null," Images and audio, video or call recordings created in connection with our business activities ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"I. Professional or employment-related information")]),e("td",null,[e("p",null," Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"J. Education Information")]),e("td",null,[e("p",null,"Student records and directory information")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"K. Inferences drawn from other personal information")]),e("td",null,[e("p",null," Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics ")]),e("td",null,[e("p",null,"NO")])])],-1)]),2),o[5]||(o[5]=n('
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
',44))],2))}}),w="f_a",v="f_b",b={article:w,table:v},O={$style:b};typeof u=="function"&&u(c);const C=m(c,[["__cssModules",O]]);export{C as default};
+import{d as p,af as h,o as d,e as f,ag as n,a as e,f as r,g as i,h as a,j as s,t as y,n as l,H as u}from"./app-B089dKne.js";import{_ as m}from"./_plugin-vue_export-helper-DlAUqK2U.js";const g=["href","textContent"],c=p({__name:"privacy-policy",setup(I){return h({title:"Privacy Policy"}),(t,o)=>(d(),f("article",{class:l(t.$style.article)},[o[3]||(o[3]=n("
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
",2)),e("ul",null,[e("li",null,[o[0]||(o[0]=r(" Visit our website at ")),e("a",{href:`${"host"in t?t.host:i(a)}${"basePath"in t?t.basePath:i(s)}`,textContent:y(`${"host"in t?t.host:i(a)}${"basePath"in t?t.basePath:i(s)}`)},null,8,g),o[1]||(o[1]=r(", or any website of ours that links to this privacy notice "))])]),o[4]||(o[4]=n('
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
',78)),e("table",{class:l(t.$style.table)},o[2]||(o[2]=[e("tbody",null,[e("tr",null,[e("td",null,[e("strong",null,"Category")]),e("td",null,[e("strong",null,"Examples")]),e("td",null,[e("strong",null,"Collected")])]),e("tr",null,[e("td",null,[e("p",null,"A. Identifiers")]),e("td",null,[e("p",null," Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null," B. Personal information categories listed in the California Customer Records statute ")]),e("td",null,[e("p",null," Name, contact information, education, employment, employment history, and financial information ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null," C. Protected classification characteristics under California or federal law ")]),e("td",null,[e("p",null,"Gender and date of birth")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"D. Commercial information")]),e("td",null,[e("p",null," Transaction information, purchase history, financial details, and payment information ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"E. Biometric information")]),e("td",null,[e("p",null,"Fingerprints and voiceprints")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"F. Internet or other similar network activity")]),e("td",null,[e("p",null," Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"G. Geolocation data")]),e("td",null,[e("p",null,"Device location")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null," H. Audio, electronic, visual, thermal, olfactory, or similar information ")]),e("td",null,[e("p",null," Images and audio, video or call recordings created in connection with our business activities ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"I. Professional or employment-related information")]),e("td",null,[e("p",null," Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us ")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"J. Education Information")]),e("td",null,[e("p",null,"Student records and directory information")]),e("td",null,[e("p",null,"NO")])]),e("tr",null,[e("td",null,[e("p",null,"K. Inferences drawn from other personal information")]),e("td",null,[e("p",null," Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics ")]),e("td",null,[e("p",null,"NO")])])],-1)]),2),o[5]||(o[5]=n('
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
',44))],2))}}),w="f_a",v="f_b",b={article:w,table:v},O={$style:b};typeof u=="function"&&u(c);const C=m(c,[["__cssModules",O]]);export{C as default};
diff --git a/assets/terms-B3Ue1xku.css b/assets/terms-CGu14MWA.css
similarity index 100%
rename from assets/terms-B3Ue1xku.css
rename to assets/terms-CGu14MWA.css
diff --git a/assets/terms-B1EPTX13.js b/assets/terms-hP3Pi29U.js
similarity index 99%
rename from assets/terms-B1EPTX13.js
rename to assets/terms-hP3Pi29U.js
index 15dab7f8..72b8141f 100644
--- a/assets/terms-B1EPTX13.js
+++ b/assets/terms-hP3Pi29U.js
@@ -1 +1 @@
-import{d as c,af as p,o as y,e as m,ag as s,a as i,f as r,g as o,h as a,j as n,t as l,l as h,n as f,H as u}from"./app-Dwl7-0AS.js";import{_ as T}from"./_plugin-vue_export-helper-DlAUqK2U.js";const E=["href","textContent"],S=["href","textContent"],d=c({__name:"terms",setup(A){return p({title:"Terms and Conditions"}),(t,e)=>(y(),m("article",{class:f(t.$style.article)},[e[12]||(e[12]=s('
',4)),i("p",null,[e[0]||(e[0]=r(' These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("')),e[1]||(e[1]=i("strong",null,"Company",-1)),e[2]||(e[2]=r('," “')),e[3]||(e[3]=i("strong",null,"we",-1)),e[4]||(e[4]=r('," “')),e[5]||(e[5]=i("strong",null,"us",-1)),e[6]||(e[6]=r('," or “')),e[7]||(e[7]=i("strong",null,"our",-1)),e[8]||(e[8]=r("”), concerning your access to and use of the ")),i("a",{href:`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}`,textContent:l(`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}`)},null,8,E),e[9]||(e[9]=r(" website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY. "))]),e[13]||(e[13]=s('
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
',34)),i("p",null,[e[10]||(e[10]=r(" We care about data privacy and security. Please review our Privacy Policy: ")),i("strong",null,[i("a",{href:`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}${"locale"in t?t.locale:o(h)}/privacy-policy`,textContent:l(`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}${"locale"in t?t.locale:o(h)}/privacy-policy`)},null,8,S)]),e[11]||(e[11]=r(". By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States. "))]),e[14]||(e[14]=s('
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org ',37))],2))}}),g="f_c",I={article:g},b={$style:I};typeof u=="function"&&u(d);const R=T(d,[["__cssModules",b]]);export{R as default};
+import{d as c,af as p,o as y,e as m,ag as s,a as i,f as r,g as o,h as a,j as n,t as l,l as h,n as f,H as u}from"./app-B089dKne.js";import{_ as T}from"./_plugin-vue_export-helper-DlAUqK2U.js";const E=["href","textContent"],S=["href","textContent"],d=c({__name:"terms",setup(A){return p({title:"Terms and Conditions"}),(t,e)=>(y(),m("article",{class:f(t.$style.article)},[e[12]||(e[12]=s('
',4)),i("p",null,[e[0]||(e[0]=r(' These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("')),e[1]||(e[1]=i("strong",null,"Company",-1)),e[2]||(e[2]=r('," “')),e[3]||(e[3]=i("strong",null,"we",-1)),e[4]||(e[4]=r('," “')),e[5]||(e[5]=i("strong",null,"us",-1)),e[6]||(e[6]=r('," or “')),e[7]||(e[7]=i("strong",null,"our",-1)),e[8]||(e[8]=r("”), concerning your access to and use of the ")),i("a",{href:`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}`,textContent:l(`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}`)},null,8,E),e[9]||(e[9]=r(" website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY. "))]),e[13]||(e[13]=s('
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
',34)),i("p",null,[e[10]||(e[10]=r(" We care about data privacy and security. Please review our Privacy Policy: ")),i("strong",null,[i("a",{href:`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}${"locale"in t?t.locale:o(h)}/privacy-policy`,textContent:l(`${"host"in t?t.host:o(a)}${"basePath"in t?t.basePath:o(n)}${"locale"in t?t.locale:o(h)}/privacy-policy`)},null,8,S)]),e[11]||(e[11]=r(". By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States. "))]),e[14]||(e[14]=s('
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org ',37))],2))}}),g="f_c",I={article:g},b={$style:I};typeof u=="function"&&u(d);const R=T(d,[["__cssModules",b]]);export{R as default};
diff --git a/assets/useUriLocale-BPgYWpfF.js b/assets/useUriLocale-BPgYWpfF.js
new file mode 100644
index 00000000..9891df52
--- /dev/null
+++ b/assets/useUriLocale-BPgYWpfF.js
@@ -0,0 +1 @@
+import{G as e,i as o}from"./app-B089dKne.js";function r(){const t=e();return o(()=>t.path.split("/")[1])}export{r as u};
diff --git a/assets/useUriLocale-UwDq5HYh.js b/assets/useUriLocale-UwDq5HYh.js
deleted file mode 100644
index dc0d9c87..00000000
--- a/assets/useUriLocale-UwDq5HYh.js
+++ /dev/null
@@ -1 +0,0 @@
-import{G as e,i as o}from"./app-Dwl7-0AS.js";function r(){const t=e();return o(()=>t.path.split("/")[1])}export{r as u};
diff --git a/assets/virtual_pwa-register-CqiHQMMu.js b/assets/virtual_pwa-register-B2s4srKm.js
similarity index 91%
rename from assets/virtual_pwa-register-CqiHQMMu.js
rename to assets/virtual_pwa-register-B2s4srKm.js
index 5c74fcc0..68491ea8 100644
--- a/assets/virtual_pwa-register-CqiHQMMu.js
+++ b/assets/virtual_pwa-register-B2s4srKm.js
@@ -1 +1 @@
-import{_ as f}from"./app-Dwl7-0AS.js";function _(c={}){const{immediate:o=!1,onNeedRefresh:u,onOfflineReady:i,onRegistered:s,onRegisteredSW:r,onRegisterError:t}=c;let a,n;const d=async(e=!0)=>{await n};async function l(){if("serviceWorker"in navigator){if(a=await f(async()=>{const{Workbox:e}=await import("./workbox-window.prod.es5-D5gOYdM7.js");return{Workbox:e}},[]).then(({Workbox:e})=>new e("/fast-angle/sw.js",{scope:"/fast-angle/",type:"classic"})).catch(e=>{t==null||t(e)}),!a)return;a.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),a.addEventListener("installed",e=>{e.isUpdate||i==null||i()}),a.register({immediate:o}).then(e=>{r?r("/fast-angle/sw.js",e):s==null||s(e)}).catch(e=>{t==null||t(e)})}}return n=l(),d}export{_ as registerSW};
+import{_ as f}from"./app-B089dKne.js";function _(c={}){const{immediate:o=!1,onNeedRefresh:u,onOfflineReady:i,onRegistered:s,onRegisteredSW:r,onRegisterError:t}=c;let a,n;const d=async(e=!0)=>{await n};async function l(){if("serviceWorker"in navigator){if(a=await f(async()=>{const{Workbox:e}=await import("./workbox-window.prod.es5-D5gOYdM7.js");return{Workbox:e}},[]).then(({Workbox:e})=>new e("/fast-angle/sw.js",{scope:"/fast-angle/",type:"classic"})).catch(e=>{t==null||t(e)}),!a)return;a.addEventListener("activated",e=>{(e.isUpdate||e.isExternal)&&window.location.reload()}),a.addEventListener("installed",e=>{e.isUpdate||i==null||i()}),a.register({immediate:o}).then(e=>{r?r("/fast-angle/sw.js",e):s==null||s(e)}).catch(e=>{t==null||t(e)})}}return n=l(),d}export{_ as registerSW};
diff --git a/de.html b/de.html
index d3c91b2e..83dccb9c 100644
--- a/de.html
+++ b/de.html
@@ -1 +1 @@
-Fast angle
Einfacher Online-Winkelmesser - messen Sie jeden Winkel direkt auf Ihrem Bild!
Klicken Sie hier, um die Messung zu starten. Um das Bild zu öffnen, ziehen Sie es auf dieses Board oder verwenden Sie die Ladeschaltfläche unten. Für ein besseres Erlebnis - aktivieren Sie den Vollbildmodus, indem Sie auf die Schaltfläche in der unteren rechten Ecke klicken.
Einfacher Online-Winkelmesser - messen Sie jeden Winkel direkt auf Ihrem Bild!
Klicken Sie hier, um die Messung zu starten. Um das Bild zu öffnen, ziehen Sie es auf dieses Board oder verwenden Sie die Ladeschaltfläche unten. Für ein besseres Erlebnis - aktivieren Sie den Vollbildmodus, indem Sie auf die Schaltfläche in der unteren rechten Ecke klicken.
?
?
\ No newline at end of file
diff --git a/de/privacy-policy.html b/de/privacy-policy.html
index 6ad1d93a..f5dd8a44 100644
--- a/de/privacy-policy.html
+++ b/de/privacy-policy.html
@@ -1 +1 @@
-Privacy Policy
Einfacher Online-Winkelmesser - messen Sie jeden Winkel direkt auf Ihrem Bild!
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
Category
Examples
Collected
A. Identifiers
Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name
NO
B. Personal information categories listed in the California Customer Records statute
Name, contact information, education, employment, employment history, and financial information
NO
C. Protected classification characteristics under California or federal law
Gender and date of birth
NO
D. Commercial information
Transaction information, purchase history, financial details, and payment information
NO
E. Biometric information
Fingerprints and voiceprints
NO
F. Internet or other similar network activity
Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements
NO
G. Geolocation data
Device location
NO
H. Audio, electronic, visual, thermal, olfactory, or similar information
Images and audio, video or call recordings created in connection with our business activities
NO
I. Professional or employment-related information
Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us
NO
J. Education Information
Student records and directory information
NO
K. Inferences drawn from other personal information
Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics
NO
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
Einfacher Online-Winkelmesser - messen Sie jeden Winkel direkt auf Ihrem Bild!
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
Category
Examples
Collected
A. Identifiers
Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name
NO
B. Personal information categories listed in the California Customer Records statute
Name, contact information, education, employment, employment history, and financial information
NO
C. Protected classification characteristics under California or federal law
Gender and date of birth
NO
D. Commercial information
Transaction information, purchase history, financial details, and payment information
NO
E. Biometric information
Fingerprints and voiceprints
NO
F. Internet or other similar network activity
Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements
NO
G. Geolocation data
Device location
NO
H. Audio, electronic, visual, thermal, olfactory, or similar information
Images and audio, video or call recordings created in connection with our business activities
NO
I. Professional or employment-related information
Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us
NO
J. Education Information
Student records and directory information
NO
K. Inferences drawn from other personal information
Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics
NO
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
\ No newline at end of file
diff --git a/de/terms.html b/de/terms.html
index 5f4559fd..11bd841e 100644
--- a/de/terms.html
+++ b/de/terms.html
@@ -1 +1 @@
-Terms and Conditions
These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("Company," “we," “us," or “our”), concerning your access to and use of the https://www.frsource.org/fast-angle/ website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY.
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
We care about data privacy and security. Please review our Privacy Policy: https://www.frsource.org/fast-angle/pl/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States.
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org
These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("Company," “we," “us," or “our”), concerning your access to and use of the https://www.frsource.org/fast-angle/ website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY.
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
We care about data privacy and security. Please review our Privacy Policy: https://www.frsource.org/fast-angle/pl/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States.
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org
\ No newline at end of file
diff --git a/en.html b/en.html
index 366bfd3a..9c5f2770 100644
--- a/en.html
+++ b/en.html
@@ -1 +1 @@
-Fast angle
Simple online protractor - measure any angle directly on your image!
Click here to start measurement. To open image, drop it onto this board or use load button below. For better experience - enable fullscreen mode by clicking on button located in bottom-right corner.
Simple online protractor - measure any angle directly on your image!
Click here to start measurement. To open image, drop it onto this board or use load button below. For better experience - enable fullscreen mode by clicking on button located in bottom-right corner.
?
?
\ No newline at end of file
diff --git a/en/privacy-policy.html b/en/privacy-policy.html
index fb802ce3..59ec5379 100644
--- a/en/privacy-policy.html
+++ b/en/privacy-policy.html
@@ -1 +1 @@
-Privacy Policy
Simple online protractor - measure any angle directly on your image!
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
Category
Examples
Collected
A. Identifiers
Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name
NO
B. Personal information categories listed in the California Customer Records statute
Name, contact information, education, employment, employment history, and financial information
NO
C. Protected classification characteristics under California or federal law
Gender and date of birth
NO
D. Commercial information
Transaction information, purchase history, financial details, and payment information
NO
E. Biometric information
Fingerprints and voiceprints
NO
F. Internet or other similar network activity
Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements
NO
G. Geolocation data
Device location
NO
H. Audio, electronic, visual, thermal, olfactory, or similar information
Images and audio, video or call recordings created in connection with our business activities
NO
I. Professional or employment-related information
Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us
NO
J. Education Information
Student records and directory information
NO
K. Inferences drawn from other personal information
Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics
NO
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
Simple online protractor - measure any angle directly on your image!
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
Category
Examples
Collected
A. Identifiers
Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name
NO
B. Personal information categories listed in the California Customer Records statute
Name, contact information, education, employment, employment history, and financial information
NO
C. Protected classification characteristics under California or federal law
Gender and date of birth
NO
D. Commercial information
Transaction information, purchase history, financial details, and payment information
NO
E. Biometric information
Fingerprints and voiceprints
NO
F. Internet or other similar network activity
Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements
NO
G. Geolocation data
Device location
NO
H. Audio, electronic, visual, thermal, olfactory, or similar information
Images and audio, video or call recordings created in connection with our business activities
NO
I. Professional or employment-related information
Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us
NO
J. Education Information
Student records and directory information
NO
K. Inferences drawn from other personal information
Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics
NO
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
\ No newline at end of file
diff --git a/en/terms.html b/en/terms.html
index e28cef2e..0c0cd1cc 100644
--- a/en/terms.html
+++ b/en/terms.html
@@ -1 +1 @@
-Terms and Conditions
These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("Company," “we," “us," or “our”), concerning your access to and use of the https://www.frsource.org/fast-angle/ website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY.
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
We care about data privacy and security. Please review our Privacy Policy: https://www.frsource.org/fast-angle/pl/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States.
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org
These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("Company," “we," “us," or “our”), concerning your access to and use of the https://www.frsource.org/fast-angle/ website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY.
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
We care about data privacy and security. Please review our Privacy Policy: https://www.frsource.org/fast-angle/pl/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States.
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org
\ No newline at end of file
diff --git a/index.html b/index.html
index 1d422512..aaf62176 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-Fast angle
Prosty kątomierz online - zmierz dowolny kąt bezpośrednio na Twoim obrazku!
Kliknij tutaj aby rozpocząć pomiary. By wczytać obrazek, upuść go tutaj lub naciśnij przycisk oznaczony ikoną chmury ze strzałką. Dla większej wygody możesz włączyć tryb pełnoekranowy za pomocą przycisku znajdującego się w prawym-dolnym rogu.
Prosty kątomierz online - zmierz dowolny kąt bezpośrednio na Twoim obrazku!
Kliknij tutaj aby rozpocząć pomiary. By wczytać obrazek, upuść go tutaj lub naciśnij przycisk oznaczony ikoną chmury ze strzałką. Dla większej wygody możesz włączyć tryb pełnoekranowy za pomocą przycisku znajdującego się w prawym-dolnym rogu.
?
?
\ No newline at end of file
diff --git a/pl/privacy-policy.html b/pl/privacy-policy.html
index d6f0073f..28ed7381 100644
--- a/pl/privacy-policy.html
+++ b/pl/privacy-policy.html
@@ -1 +1 @@
-Privacy Policy
Prosty kątomierz online - zmierz dowolny kąt bezpośrednio na Twoim obrazku!
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
Category
Examples
Collected
A. Identifiers
Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name
NO
B. Personal information categories listed in the California Customer Records statute
Name, contact information, education, employment, employment history, and financial information
NO
C. Protected classification characteristics under California or federal law
Gender and date of birth
NO
D. Commercial information
Transaction information, purchase history, financial details, and payment information
NO
E. Biometric information
Fingerprints and voiceprints
NO
F. Internet or other similar network activity
Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements
NO
G. Geolocation data
Device location
NO
H. Audio, electronic, visual, thermal, olfactory, or similar information
Images and audio, video or call recordings created in connection with our business activities
NO
I. Professional or employment-related information
Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us
NO
J. Education Information
Student records and directory information
NO
K. Inferences drawn from other personal information
Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics
NO
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
Prosty kątomierz online - zmierz dowolny kąt bezpośrednio na Twoim obrazku!
PRIVACY NOTICE
Last updated November 03, 2022
This privacy notice for FRS Jakub Freisler ("Company," "we," "us," or "our"), describes how and why we might collect, store, use, and/or share ("process") your information when you use our services ("Services"), such as when you:
Download and use our mobile application (Fast Angle), or any other application of ours that links to this privacy notice
Engage with us in other related ways, including any sales, marketing, or events
Questions or concerns? Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at hi@frsource.org.
SUMMARY OF KEY POINTS
This summary provides key points from our privacy notice, but you can find out more details about any of these topics by clicking the link following each key point or by using our table of contents below to find the section you are looking for. You can also click here to go directly to our table of contents.
What personal information do we process? When you visit, use, or navigate our Services, we may process personal information depending on how you interact with FRS Jakub Freisler and the Services, the choices you make, and the products and features you use. Click here to learn more.
Do we process any sensitive personal information? We do not process sensitive personal information.
Do we receive any information from third parties? We do not receive any information from third parties.
How do we process your information? We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Click here to learn more.
In what situations and with which parties do we share personal information? We may share information in specific situations and with specific third parties. Click here to learn more.
What are your rights? Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Click here to learn more.
How do you exercise your rights? The easiest way to exercise your rights is by filling out our data subject request form available here: privacy@frsource.org, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.
Want to learn more about what FRS Jakub Freisler does with any information we collect? Click here to review the notice in full.
In Short:We collect personal information that you provide to us.
We collect personal information that you voluntarily provide to us when you express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.
Sensitive Information. We do not process sensitive information.
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.
2. HOW DO WE PROCESS YOUR INFORMATION?
In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.
We process your personal information for a variety of reasons, depending on how you interact with our Services, including:
To save or protect an individual's vital interest. We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.
3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?
In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.
If you are located in the EU or UK, this section applies to you.
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:
Consent. We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Click here to learn more.
Legal Obligations. We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.
Vital Interests. We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.
If you are located in Canada, this section applies to you.
We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. Click here to learn more.
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:
If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way
For investigations and fraud detection and prevention
For business transactions provided certain conditions are met
If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim
For identifying injured, ill, or deceased persons and communicating with next of kin
If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse
If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province
If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records
If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced
If the collection is solely for journalistic, artistic, or literary purposes
If the information is publicly available and is specified by the regulations
4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?
In Short: We may share information in specific situations described in this section and/or with the following third parties.
We may need to share your personal information in the following situations:
Business Transfers. We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.
5. HOW LONG DO WE KEEP YOUR INFORMATION?
In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
6. WHAT ARE YOUR PRIVACY RIGHTS?
In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
We will consider and act upon any request in accordance with applicable data protection laws.
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm.
Withdrawing your consent: If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section "HOW CAN YOU CONTACT US ABOUT THIS NOTICE?" below.
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.
If you have questions or comments about your privacy rights, you may email us at privacy@frsource.org.
7. CONTROLS FOR DO-NOT-TRACK FEATURES
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.
8. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?
In Short: Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).
CCPA Privacy Notice
The California Code of Regulations defines a "resident" as:
(1) every individual who is in the State of California for other than a temporary or transitory purpose and
(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose
All other individuals are defined as "non-residents."
If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.
What categories of personal information do we collect?
We have collected the following categories of personal information in the past twelve (12) months:
Category
Examples
Collected
A. Identifiers
Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name
NO
B. Personal information categories listed in the California Customer Records statute
Name, contact information, education, employment, employment history, and financial information
NO
C. Protected classification characteristics under California or federal law
Gender and date of birth
NO
D. Commercial information
Transaction information, purchase history, financial details, and payment information
NO
E. Biometric information
Fingerprints and voiceprints
NO
F. Internet or other similar network activity
Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements
NO
G. Geolocation data
Device location
NO
H. Audio, electronic, visual, thermal, olfactory, or similar information
Images and audio, video or call recordings created in connection with our business activities
NO
I. Professional or employment-related information
Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us
NO
J. Education Information
Student records and directory information
NO
K. Inferences drawn from other personal information
Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics
NO
We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:
Receiving help through our customer support channels;
Participation in customer surveys or contests; and
Facilitation in the delivery of our Services and to respond to your inquiries.
How do we use and share your personal information?
More information about our data collection and sharing practices can be found in this privacy notice.
You may contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document.
If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.
Will your information be shared with anyone else?
We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.
We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.
FRS Jakub Freisler has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. FRS Jakub Freisler will not sell personal information in the future belonging to website visitors, users, and other consumers.
Your rights with respect to your personal data
Right to request deletion of the data — Request to delete
You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.
Right to be informed — Request to know
Depending on the circumstances, you have a right to know:
whether we collect and use your personal information;
the categories of personal information that we collect;
the purposes for which the collected personal information is used;
whether we sell your personal information to third parties;
the categories of personal information that we sold or disclosed for a business purpose;
the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and
the business or commercial purpose for collecting or selling personal information.
In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.
Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights
We will not discriminate against you if you exercise your privacy rights.
Verification process
Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.
We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.
Other privacy rights
You may object to the processing of your personal information.
You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.
You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.
You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.
To exercise these rights, you can contact us by email at ccpa@frsource.org, or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.
9. DO WE MAKE UPDATES TO THIS NOTICE?
In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.
We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.
10. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?
If you have questions or comments about this notice, you may email us at privacy@frsource.org or by post to:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland
11. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?
Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at: privacy@frsource.org.
\ No newline at end of file
diff --git a/pl/terms.html b/pl/terms.html
index 0bdb90fe..7d0bf96e 100644
--- a/pl/terms.html
+++ b/pl/terms.html
@@ -1 +1 @@
-Terms and Conditions
These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("Company," “we," “us," or “our”), concerning your access to and use of the https://www.frsource.org/fast-angle/ website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY.
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
We care about data privacy and security. Please review our Privacy Policy: https://www.frsource.org/fast-angle/pl/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States.
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org
These Terms of Use constitute a legally binding agreement made between you, whether personally or on behalf of an entity (“you”) and FRS Jakub Freisler ("Company," “we," “us," or “our”), concerning your access to and use of the https://www.frsource.org/fast-angle/ website as well as any other media form, media channel, mobile website or mobile application related, linked, or otherwise connected thereto (collectively, the “Site”). We are registered in Poland and have our registered office at ul. Królewska 92 / 8, Kraków, Małopolska 30-079. Our VAT number is PL 6783179514. You agree that by accessing the Site, you have read, understood, and agreed to be bound by all of these Terms of Use. IF YOU DO NOT AGREE WITH ALL OF THESE TERMS OF USE, THEN YOU ARE EXPRESSLY PROHIBITED FROM USING THE SITE AND YOU MUST DISCONTINUE USE IMMEDIATELY.
Supplemental terms and conditions or documents that may be posted on the Site from time to time are hereby expressly incorporated herein by reference. We reserve the right, in our sole discretion, to make changes or modifications to these Terms of Use from time to time. We will alert you about any changes by updating the “Last updated” date of these Terms of Use, and you waive any right to receive specific notice of each such change. Please ensure that you check the applicable Terms every time you use our Site so that you understand which Terms apply. You will be subject to, and will be deemed to have been made aware of and to have accepted, the changes in any revised Terms of Use by your continued use of the Site after the date such revised Terms of Use are posted.
The information provided on the Site is not intended for distribution to or use by any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Accordingly, those persons who choose to access the Site from other locations do so on their own initiative and are solely responsible for compliance with local laws, if and to the extent local laws are applicable.
The Site is not tailored to comply with industry-specific regulations (Health Insurance Portability and Accountability Act (HIPAA), Federal Information Security Management Act (FISMA), etc.), so if your interactions would be subjected to such laws, you may not use this Site. You may not use the Site in a way that would violate the Gramm-Leach-Bliley Act (GLBA).
All users who are minors in the jurisdiction in which they reside (generally under the age of 18) must have the permission of, and be directly supervised by, their parent or guardian to use the Site. If you are a minor, you must have your parent or guardian read and agree to these Terms of Use prior to you using the Site.
2. INTELLECTUAL PROPERTY RIGHTS
Unless otherwise indicated, the Site is our proprietary property and all source code, databases, functionality, software, website designs, audio, video, text, photographs, and graphics on the Site (collectively, the “Content”) and the trademarks, service marks, and logos contained therein (the “Marks”) are owned or controlled by us or licensed to us, and are protected by copyright and trademark laws and various other intellectual property rights and unfair competition laws of the United States, international copyright laws, and international conventions. The Content and the Marks are provided on the Site “AS IS” for your information and personal use only. Except as expressly provided in these Terms of Use, no part of the Site and no Content or Marks may be copied, reproduced, aggregated, republished, uploaded, posted, publicly displayed, encoded, translated, transmitted, distributed, sold, licensed, or otherwise exploited for any commercial purpose whatsoever, without our express prior written permission.
Provided that you are eligible to use the Site, you are granted a limited license to access and use the Site and to download or print a copy of any portion of the Content to which you have properly gained access solely for your personal, non-commercial use. We reserve all rights not expressly granted to you in and to the Site, the Content and the Marks.
3. USER REPRESENTATIONS
By using the Site, you represent and warrant that: (1) you have the legal capacity and you agree to comply with these Terms of Use; (2) you are not a minor in the jurisdiction in which you reside, or if a minor, you have received parental permission to use the Site; (3) you will not access the Site through automated or non-human means, whether through a bot, script, or otherwise; (4) you will not use the Site for any illegal or unauthorized purpose; and (5) your use of the Site will not violate any applicable law or regulation.
If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of the Site (or any portion thereof).
4. PROHIBITED ACTIVITIES
You may not access or use the Site for any purpose other than that for which we make the Site available. The Site may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.
As a user of the Site, you agree not to:
Systematically retrieve data or other content from the Site to create or compile, directly or indirectly, a collection, compilation, database, or directory without written permission from us.
Trick, defraud, or mislead us and other users, especially in any attempt to learn sensitive account information such as user passwords.
Circumvent, disable, or otherwise interfere with security-related features of the Site, including features that prevent or restrict the use or copying of any Content or enforce limitations on the use of the Site and/or the Content contained therein.
Disparage, tarnish, or otherwise harm, in our opinion, us and/or the Site.
Use any information obtained from the Site in order to harass, abuse, or harm another person.
Make improper use of our support services or submit false reports of abuse or misconduct.
Use the Site in a manner inconsistent with any applicable laws or regulations.
Engage in unauthorized framing of or linking to the Site.
Upload or transmit (or attempt to upload or to transmit) viruses, Trojan horses, or other material, including excessive use of capital letters and spamming (continuous posting of repetitive text), that interferes with any party’s uninterrupted use and enjoyment of the Site or modifies, impairs, disrupts, alters, or interferes with the use, features, functions, operation, or maintenance of the Site.
Engage in any automated use of the system, such as using scripts to send comments or messages, or using any data mining, robots, or similar data gathering and extraction tools.
Delete the copyright or other proprietary rights notice from any Content.
Attempt to impersonate another user or person or use the username of another user.
Upload or transmit (or attempt to upload or to transmit) any material that acts as a passive or active information collection or transmission mechanism, including without limitation, clear graphics interchange formats (“gifs”), 1×1 pixels, web bugs, cookies, or other similar devices (sometimes referred to as “spyware” or “passive collection mechanisms” or “pcms”).
Interfere with, disrupt, or create an undue burden on the Site or the networks or services connected to the Site.
Harass, annoy, intimidate, or threaten any of our employees or agents engaged in providing any portion of the Site to you.
Attempt to bypass any measures of the Site designed to prevent or restrict access to the Site, or any portion of the Site.
Copy or adapt the Site’s software, including but not limited to Flash, PHP, HTML, JavaScript, or other code.
Except as permitted by applicable law, decipher, decompile, disassemble, or reverse engineer any of the software comprising or in any way making up a part of the Site.
Except as may be the result of standard search engine or Internet browser usage, use, launch, develop, or distribute any automated system, including without limitation, any spider, robot, cheat utility, scraper, or offline reader that accesses the Site, or using or launching any unauthorized script or other software.
Use a buying agent or purchasing agent to make purchases on the Site.
Make any unauthorized use of the Site, including collecting usernames and/or email addresses of users by electronic or other means for the purpose of sending unsolicited email, or creating user accounts by automated means or under false pretenses.
Use the Site as part of any effort to compete with us or otherwise use the Site and/or the Content for any revenue-generating endeavor or commercial enterprise.
Use the Site to advertise or offer to sell goods and services.
Sell or otherwise transfer your profile.
5. USER GENERATED CONTRIBUTIONS
The Site does not offer users to submit or post content. We may provide you with the opportunity to create, submit, post, display, transmit, perform, publish, distribute, or broadcast content and materials to us or on the Site, including but not limited to text, writings, video, audio, photographs, graphics, comments, suggestions, or personal information or other material (collectively, "Contributions"). Contributions may be viewable by other users of the Site and through third-party websites. As such, any Contributions you transmit may be treated in accordance with the Site Privacy Policy. When you create or make available any Contributions, you thereby represent and warrant that:
The creation, distribution, transmission, public display, or performance, and the accessing, downloading, or copying of your Contributions do not and will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark, trade secret, or moral rights of any third party.
You are the creator and owner of or have the necessary licenses, rights, consents, releases, and permissions to use and to authorize us, the Site, and other users of the Site to use your Contributions in any manner contemplated by the Site and these Terms of Use.
You have the written consent, release, and/or permission of each and every identifiable individual person in your Contributions to use the name or likeness of each and every such identifiable individual person to enable inclusion and use of your Contributions in any manner contemplated by the Site and these Terms of Use.
Your Contributions are not false, inaccurate, or misleading.
Your Contributions are not unsolicited or unauthorized advertising, promotional materials, pyramid schemes, chain letters, spam, mass mailings, or other forms of solicitation.
Your Contributions are not obscene, lewd, lascivious, filthy, violent, harassing, libelous, slanderous, or otherwise objectionable (as determined by us).
Your Contributions do not ridicule, mock, disparage, intimidate, or abuse anyone.
Your Contributions are not used to harass or threaten (in the legal sense of those terms) any other person and to promote violence against a specific person or class of people.
Your Contributions do not violate any applicable law, regulation, or rule.
Your Contributions do not violate the privacy or publicity rights of any third party.
Your Contributions do not violate any applicable law concerning child pornography, or otherwise intended to protect the health or well-being of minors.
Your Contributions do not include any offensive comments that are connected to race, national origin, gender, sexual preference, or physical handicap.
Your Contributions do not otherwise violate, or link to material that violates, any provision of these Terms of Use, or any applicable law or regulation.
Any use of the Site in violation of the foregoing violates these Terms of Use and may result in, among other things, termination or suspension of your rights to use the Site.
6. CONTRIBUTION LICENSE
You agree that we may access, store, process, and use any information and personal data that you provide following the terms of the Privacy Policy and your choices (including settings).
By submitting suggestions or other feedback regarding the Site, you agree that we can use and share such feedback for any purpose without compensation to you.
We do not assert any ownership over your Contributions. You retain full ownership of all of your Contributions and any intellectual property rights or other proprietary rights associated with your Contributions. We are not liable for any statements or representations in your Contributions provided by you in any area on the Site. You are solely responsible for your Contributions to the Site and you expressly agree to exonerate us from any and all responsibility and to refrain from any legal action against us regarding your Contributions.
7. MOBILE APPLICATION LICENSE
Use License
If you access the Site via a mobile application, then we grant you a revocable, non-exclusive, non-transferable, limited right to install and use the mobile application on wireless electronic devices owned or controlled by you, and to access and use the mobile application on such devices strictly in accordance with the terms and conditions of this mobile application license contained in these Terms of Use. You shall not: (1) except as permitted by applicable law, decompile, reverse engineer, disassemble, attempt to derive the source code of, or decrypt the application; (2) make any modification, adaptation, improvement, enhancement, translation, or derivative work from the application; (3) violate any applicable laws, rules, or regulations in connection with your access or use of the application; (4) remove, alter, or obscure any proprietary notice (including any notice of copyright or trademark) posted by us or the licensors of the application; (5) use the application for any revenue generating endeavor, commercial enterprise, or other purpose for which it is not designed or intended; (6) make the application available over a network or other environment permitting access or use by multiple devices or users at the same time; (7) use the application for creating a product, service, or software that is, directly or indirectly, competitive with or in any way a substitute for the application; (8) use the application to send automated queries to any website or to send any unsolicited commercial e-mail; or (9) use any proprietary information or any of our interfaces or our other intellectual property in the design, development, manufacture, licensing, or distribution of any applications, accessories, or devices for use with the application.
Apple and Android Devices
The following terms apply when you use a mobile application obtained from either the Apple Store or Google Play (each an “App Distributor”) to access the Site: (1) the license granted to you for our mobile application is limited to a non-transferable license to use the application on a device that utilizes the Apple iOS or Android operating systems, as applicable, and in accordance with the usage rules set forth in the applicable App Distributor’s terms of service; (2) we are responsible for providing any maintenance and support services with respect to the mobile application as specified in the terms and conditions of this mobile application license contained in these Terms of Use or as otherwise required under applicable law, and you acknowledge that each App Distributor has no obligation whatsoever to furnish any maintenance and support services with respect to the mobile application; (3) in the event of any failure of the mobile application to conform to any applicable warranty, you may notify the applicable App Distributor, and the App Distributor, in accordance with its terms and policies, may refund the purchase price, if any, paid for the mobile application, and to the maximum extent permitted by applicable law, the App Distributor will have no other warranty obligation whatsoever with respect to the mobile application; (4) you represent and warrant that (i) you are not located in a country that is subject to a U.S. government embargo, or that has been designated by the U.S. government as a “terrorist supporting” country and (ii) you are not listed on any U.S. government list of prohibited or restricted parties; (5) you must comply with applicable third-party terms of agreement when using the mobile application, e.g., if you have a VoIP application, then you must not be in violation of their wireless data service agreement when using the mobile application; and (6) you acknowledge and agree that the App Distributors are third-party beneficiaries of the terms and conditions in this mobile application license contained in these Terms of Use, and that each App Distributor will have the right (and will be deemed to have accepted the right) to enforce the terms and conditions in this mobile application license contained in these Terms of Use against you as a third-party beneficiary thereof.
8. SUBMISSIONS
You acknowledge and agree that any questions, comments, suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us are non-confidential and shall become our sole property. We shall own exclusive rights, including all intellectual property rights, and shall be entitled to the unrestricted use and dissemination of these Submissions for any lawful purpose, commercial or otherwise, without acknowledgment or compensation to you. You hereby waive all moral rights to any such Submissions, and you hereby warrant that any such Submissions are original with you or that you have the right to submit such Submissions. You agree there shall be no recourse against us for any alleged or actual infringement or misappropriation of any proprietary right in your Submissions.
9. THIRD-PARTY WEBSITE AND CONTENT
The Site may contain (or you may be sent via the Site) links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures, designs, music, sound, video, information, applications, software, and other content or items belonging to or originating from third parties ("Third-Party Content"). Such Third-Party Websites and Third-Party Content are not investigated, monitored, or checked for accuracy, appropriateness, or completeness by us, and we are not responsible for any Third-Party Websites accessed through the Site or any Third-Party Content posted on, available through, or installed from the Site, including the content, accuracy, offensiveness, opinions, reliability, privacy practices, or other policies of or contained in the Third-Party Websites or the Third-Party Content. Inclusion of, linking to, or permitting the use or installation of any Third-Party Websites or any Third-Party Content does not imply approval or endorsement thereof by us. If you decide to leave the Site and access the Third-Party Websites or to use or install any Third-Party Content, you do so at your own risk, and you should be aware these Terms of Use no longer govern. You should review the applicable terms and policies, including privacy and data gathering practices, of any website to which you navigate from the Site or relating to any applications you use or install from the Site. Any purchases you make through Third-Party Websites will be through other websites and from other companies, and we take no responsibility whatsoever in relation to such purchases which are exclusively between you and the applicable third party. You agree and acknowledge that we do not endorse the products or services offered on Third-Party Websites and you shall hold us harmless from any harm caused by your purchase of such products or services. Additionally, you shall hold us harmless from any losses sustained by you or harm caused to you relating to or resulting in any way from any Third-Party Content or any contact with Third-Party Websites.
10. SITE MANAGEMENT
We reserve the right, but not the obligation, to: (1) monitor the Site for violations of these Terms of Use; (2) take appropriate legal action against anyone who, in our sole discretion, violates the law or these Terms of Use, including without limitation, reporting such user to law enforcement authorities; (3) in our sole discretion and without limitation, refuse, restrict access to, limit the availability of, or disable (to the extent technologically feasible) any of your Contributions or any portion thereof; (4) in our sole discretion and without limitation, notice, or liability, to remove from the Site or otherwise disable all files and content that are excessive in size or are in any way burdensome to our systems; and (5) otherwise manage the Site in a manner designed to protect our rights and property and to facilitate the proper functioning of the Site.
11. PRIVACY POLICY
We care about data privacy and security. Please review our Privacy Policy: https://www.frsource.org/fast-angle/pl/privacy-policy. By using the Site, you agree to be bound by our Privacy Policy, which is incorporated into these Terms of Use. Please be advised the Site is hosted in the United States. If you access the Site from any other region of the world with laws or other requirements governing personal data collection, use, or disclosure that differ from applicable laws in the United States, then through your continued use of the Site, you are transferring your data to the United States, and you agree to have your data transferred to and processed in the United States.
12. TERM AND TERMINATION
These Terms of Use shall remain in full force and effect while you use the Site. WITHOUT LIMITING ANY OTHER PROVISION OF THESE TERMS OF USE, WE RESERVE THE RIGHT TO, IN OUR SOLE DISCRETION AND WITHOUT NOTICE OR LIABILITY, DENY ACCESS TO AND USE OF THE SITE (INCLUDING BLOCKING CERTAIN IP ADDRESSES), TO ANY PERSON FOR ANY REASON OR FOR NO REASON, INCLUDING WITHOUT LIMITATION FOR BREACH OF ANY REPRESENTATION, WARRANTY, OR COVENANT CONTAINED IN THESE TERMS OF USE OR OF ANY APPLICABLE LAW OR REGULATION. WE MAY TERMINATE YOUR USE OR PARTICIPATION IN THE SITE OR DELETE ANY CONTENT OR INFORMATION THAT YOU POSTED AT ANY TIME, WITHOUT WARNING, IN OUR SOLE DISCRETION.
If we terminate or suspend your account for any reason, you are prohibited from registering and creating a new account under your name, a fake or borrowed name, or the name of any third party, even if you may be acting on behalf of the third party. In addition to terminating or suspending your account, we reserve the right to take appropriate legal action, including without limitation pursuing civil, criminal, and injunctive redress.
13. MODIFICATIONS AND INTERRUPTIONS
We reserve the right to change, modify, or remove the contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part of the Site without notice at any time. We will not be liable to you or any third party for any modification, price change, suspension, or discontinuance of the Site.
We cannot guarantee the Site will be available at all times. We may experience hardware, software, or other problems or need to perform maintenance related to the Site, resulting in interruptions, delays, or errors. We reserve the right to change, revise, update, suspend, discontinue, or otherwise modify the Site at any time or for any reason without notice to you. You agree that we have no liability whatsoever for any loss, damage, or inconvenience caused by your inability to access or use the Site during any downtime or discontinuance of the Site. Nothing in these Terms of Use will be construed to obligate us to maintain and support the Site or to supply any corrections, updates, or releases in connection therewith.
14. GOVERNING LAW
These conditions are governed by and interpreted following the laws of Poland, and the use of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. If your habitual residence is in the EU, and you are a consumer, you additionally possess the protection provided to you by obligatory provisions of the law of your country of residence. FRS Jakub Freisler and yourself both agree to submit to the non-exclusive jurisdiction of the courts of Krowodrza, Kraków, Poland, which means that you may make a claim to defend your consumer protection rights in regards to these Terms of Use in Poland, or in the EU country in which you reside.
15. DISPUTE RESOLUTION
Informal Negotiations
To expedite resolution and control the cost of any dispute, controversy, or claim related to these Terms of Use (each "Dispute" and collectively, the “Disputes”) brought by either you or us (individually, a “Party” and collectively, the “Parties”), the Parties agree to first attempt to negotiate any Dispute (except those Disputes expressly provided below) informally for at least thirty (30) days before initiating arbitration. Such informal negotiations commence upon written notice from one Party to the other Party.
Binding Arbitration
Any dispute arising from the relationships between the Parties to this contract shall be determined by one arbitrator who will be chosen in accordance with the Arbitration and Internal Rules of the European Court of Arbitration being part of the European Centre of Arbitration having its seat in Strasbourg, and which are in force at the time the application for arbitration is filed, and of which adoption of this clause constitutes acceptance. The seat of arbitration shall be Kraków, Poland. The language of the proceedings shall be English. Applicable rules of substantive law shall be the law of Poland.
Restrictions
The Parties agree that any arbitration shall be limited to the Dispute between the Parties individually. To the full extent permitted by law, (a) no arbitration shall be joined with any other proceeding; (b) there is no right or authority for any Dispute to be arbitrated on a class-action basis or to utilize class action procedures; and (c) there is no right or authority for any Dispute to be brought in a purported representative capacity on behalf of the general public or any other persons.
Exceptions to Informal Negotiations and Arbitration
The Parties agree that the following Disputes are not subject to the above provisions concerning informal negotiations and binding arbitration: (a) any Disputes seeking to enforce or protect, or concerning the validity of, any of the intellectual property rights of a Party; (b) any Dispute related to, or arising from, allegations of theft, piracy, invasion of privacy, or unauthorized use; and (c) any claim for injunctive relief. If this provision is found to be illegal or unenforceable, then neither Party will elect to arbitrate any Dispute falling within that portion of this provision found to be illegal or unenforceable and such Dispute shall be decided by a court of competent jurisdiction within the courts listed for jurisdiction above, and the Parties agree to submit to the personal jurisdiction of that court.
16. CORRECTIONS
There may be information on the Site that contains typographical errors, inaccuracies, or omissions, including descriptions, pricing, availability, and various other information. We reserve the right to correct any errors, inaccuracies, or omissions and to change or update the information on the Site at any time, without prior notice.
17. DISCLAIMER
THE SITE IS PROVIDED ON AN AS-IS AND AS-AVAILABLE BASIS. YOU AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, IN CONNECTION WITH THE SITE AND YOUR USE THEREOF, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE MAKE NO WARRANTIES OR REPRESENTATIONS ABOUT THE ACCURACY OR COMPLETENESS OF THE SITE’S CONTENT OR THE CONTENT OF ANY WEBSITES LINKED TO THE SITE AND WE WILL ASSUME NO LIABILITY OR RESPONSIBILITY FOR ANY (1) ERRORS, MISTAKES, OR INACCURACIES OF CONTENT AND MATERIALS, (2) PERSONAL INJURY OR PROPERTY DAMAGE, OF ANY NATURE WHATSOEVER, RESULTING FROM YOUR ACCESS TO AND USE OF THE SITE, (3) ANY UNAUTHORIZED ACCESS TO OR USE OF OUR SECURE SERVERS AND/OR ANY AND ALL PERSONAL INFORMATION AND/OR FINANCIAL INFORMATION STORED THEREIN, (4) ANY INTERRUPTION OR CESSATION OF TRANSMISSION TO OR FROM THE SITE, (5) ANY BUGS, VIRUSES, TROJAN HORSES, OR THE LIKE WHICH MAY BE TRANSMITTED TO OR THROUGH THE SITE BY ANY THIRD PARTY, AND/OR (6) ANY ERRORS OR OMISSIONS IN ANY CONTENT AND MATERIALS OR FOR ANY LOSS OR DAMAGE OF ANY KIND INCURRED AS A RESULT OF THE USE OF ANY CONTENT POSTED, TRANSMITTED, OR OTHERWISE MADE AVAILABLE VIA THE SITE. WE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD PARTY THROUGH THE SITE, ANY HYPERLINKED WEBSITE, OR ANY WEBSITE OR MOBILE APPLICATION FEATURED IN ANY BANNER OR OTHER ADVERTISING, AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR MONITORING ANY TRANSACTION BETWEEN YOU AND ANY THIRD-PARTY PROVIDERS OF PRODUCTS OR SERVICES. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM OR IN ANY ENVIRONMENT, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
18. LIMITATIONS OF LIABILITY
IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL, SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM YOUR USE OF THE SITE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE LESSER OF THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE three (3) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING OR $0.00 USD. CERTAIN US STATE LAWS AND INTERNATIONAL LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MAY HAVE ADDITIONAL RIGHTS.
19. INDEMNIFICATION
You agree to defend, indemnify, and hold us harmless, including our subsidiaries, affiliates, and all of our respective officers, agents, partners, and employees, from and against any loss, damage, liability, claim, or demand, including reasonable attorneys’ fees and expenses, made by any third party due to or arising out of: (1) use of the Site; (2) breach of these Terms of Use; (3) any breach of your representations and warranties set forth in these Terms of Use; (4) your violation of the rights of a third party, including but not limited to intellectual property rights; or (5) any overt harmful act toward any other user of the Site with whom you connected via the Site. Notwithstanding the foregoing, we reserve the right, at your expense, to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate, at your expense, with our defense of such claims. We will use reasonable efforts to notify you of any such claim, action, or proceeding which is subject to this indemnification upon becoming aware of it.
20. USER DATA
We will maintain certain data that you transmit to the Site for the purpose of managing the performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine backups of data, you are solely responsible for all data that you transmit or that relates to any activity you have undertaken using the Site. You agree that we shall have no liability to you for any loss or corruption of any such data, and you hereby waive any right of action against us arising from any such loss or corruption of such data.
21. ELECTRONIC COMMUNICATIONS, TRANSACTIONS, AND SIGNATURES
Visiting the Site, sending us emails, and completing online forms constitute electronic communications. You consent to receive electronic communications, and you agree that all agreements, notices, disclosures, and other communications we provide to you electronically, via email and on the Site, satisfy any legal requirement that such communication be in writing. YOU HEREBY AGREE TO THE USE OF ELECTRONIC SIGNATURES, CONTRACTS, ORDERS, AND OTHER RECORDS, AND TO ELECTRONIC DELIVERY OF NOTICES, POLICIES, AND RECORDS OF TRANSACTIONS INITIATED OR COMPLETED BY US OR VIA THE SITE. You hereby waive any rights or requirements under any statutes, regulations, rules, ordinances, or other laws in any jurisdiction which require an original signature or delivery or retention of non-electronic records, or to payments or the granting of credits by any means other than electronic means.
22. CALIFORNIA USERS AND RESIDENTS
If any complaint with us is not satisfactorily resolved, you can contact the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs in writing at 1625 North Market Blvd., Suite N 112, Sacramento, California 95834 or by telephone at (800) 952-5210 or (916) 445-1254.
23. MISCELLANEOUS
These Terms of Use and any policies or operating rules posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate as a waiver of such right or provision. These Terms of Use operate to the fullest extent permissible by law. We may assign any or all of our rights and obligations to others at any time. We shall not be responsible or liable for any loss, damage, delay, or failure to act caused by any cause beyond our reasonable control. If any provision or part of a provision of these Terms of Use is determined to be unlawful, void, or unenforceable, that provision or part of the provision is deemed severable from these Terms of Use and does not affect the validity and enforceability of any remaining provisions. There is no joint venture, partnership, employment or agency relationship created between you and us as a result of these Terms of Use or use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms of Use and the lack of signing by the parties hereto to execute these Terms of Use.
24. CONTACT US
In order to resolve a complaint regarding the Site or to receive further information regarding use of the Site, please contact us at:
FRS Jakub Freisler ul. Królewska 92 / 8 Kraków, Małopolska 30-079 Poland Phone: +48882568430 complaint@frsource.org
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index a8a3cee3..7f28b827 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-https://www.frsource.org/fast-angle/4042024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/de2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/en2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/pl2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/de/privacy-policy2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/de/terms2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/en/privacy-policy2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/en/terms2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/pl/privacy-policy2024-10-21T03:08:16.956Zdaily1.0https://www.frsource.org/fast-angle/pl/terms2024-10-21T03:08:16.956Zdaily1.0
\ No newline at end of file
+https://www.frsource.org/fast-angle/4042024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/de2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/en2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/pl2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/de/privacy-policy2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/de/terms2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/en/privacy-policy2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/en/terms2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/pl/privacy-policy2024-10-28T04:07:10.411Zdaily1.0https://www.frsource.org/fast-angle/pl/terms2024-10-28T04:07:10.411Zdaily1.0
\ No newline at end of file
diff --git a/sw.js b/sw.js
index ca59a5e6..4aec4983 100644
--- a/sw.js
+++ b/sw.js
@@ -1 +1 @@
-if(!self.define){let e,s={};const i=(i,l)=>(i=new URL(i+".js",l).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(l,r)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(s[n])return;let a={};const c=e=>i(e,n),u={module:{uri:n},exports:a,require:c};s[n]=Promise.all(l.map((e=>u[e]||c(e)))).then((e=>(r(...e),a)))}}define(["./workbox-9f7b9521"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"404.html",revision:"1475474688a01b7f4e9309bf9435601f"},{url:"assets/_...all_-Co0Kp9As.js",revision:null},{url:"assets/_plugin-vue_export-helper-DlAUqK2U.js",revision:null},{url:"assets/app-BUT5I0Zb.css",revision:null},{url:"assets/app-Dwl7-0AS.js",revision:null},{url:"assets/Button-BKAj1tfY.js",revision:null},{url:"assets/Button-XV6Wby9K.css",revision:null},{url:"assets/centered-CsPDCAwg.css",revision:null},{url:"assets/centered-LQcEJ4f_.js",revision:null},{url:"assets/default-D9dwkEVE.css",revision:null},{url:"assets/default-T5VnCwtH.js",revision:null},{url:"assets/index-BnNlN_Ib.css",revision:null},{url:"assets/index-D8cNfCUs.js",revision:null},{url:"assets/privacy-policy-BHhLFajV.js",revision:null},{url:"assets/privacy-policy-CmBhhdc4.css",revision:null},{url:"assets/terms-B1EPTX13.js",revision:null},{url:"assets/terms-B3Ue1xku.css",revision:null},{url:"assets/useUriLocale-UwDq5HYh.js",revision:null},{url:"assets/virtual_pwa-register-CqiHQMMu.js",revision:null},{url:"assets/workbox-window.prod.es5-D5gOYdM7.js",revision:null},{url:"de.html",revision:"e89fc388fa2783c024dca2ee79ed851f"},{url:"de/privacy-policy.html",revision:"7252a704c6fe8849576776445870a757"},{url:"de/terms.html",revision:"8b3aa1a29512fb8a90f45fa99a8ec83e"},{url:"en.html",revision:"2d0cd2d0a1abda6d7b52ac3e48f43523"},{url:"en/privacy-policy.html",revision:"def4829fec12fb48113ac1cfc04323fb"},{url:"en/terms.html",revision:"41317785ebfd729f6a4b492e98bc39e0"},{url:"index.html",revision:"1c11880a25dabf40519e529f46eaad71"},{url:"pl.html",revision:"78bd761893cbcc394bf0fd05e78bce9d"},{url:"pl/privacy-policy.html",revision:"7b6aa77dda2007c1f863d273657884e5"},{url:"pl/terms.html",revision:"d3562f4527cd0f341965a05a23ccc010"},{url:"favicon-dark.svg",revision:"98cd02853d9e8386612b5fbd7f9eb630"},{url:"favicon.svg",revision:"e476a8de9eefda3467f128aed07c007d"},{url:"pwa-192x192.png",revision:"307aeecc8a6cf708adcbd0b21274b92f"},{url:"pwa-512x512.png",revision:"50c3254ba3466da79827fcceb4807241"},{url:"pwa-maskable-512x512.png",revision:"5123dacbec6173fc269500f01c0834a8"},{url:"pwa-monochrome-192x192.png",revision:"47c8c3bba4d5b3cc780c268659f6a3fc"},{url:"safari-pinned-tab.svg",revision:"037dc7a68e4764080ef4d13890a13140"},{url:"manifest.webmanifest",revision:"0ffbc5bda62c00c71ebb6dee55f5fc48"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
+if(!self.define){let e,s={};const r=(r,i)=>(r=new URL(r+".js",i).href,s[r]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=r,e.onload=s,document.head.appendChild(e)}else e=r,importScripts(r),s()})).then((()=>{let e=s[r];if(!e)throw new Error(`Module ${r} didn’t register its module`);return e})));self.define=(i,l)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(s[n])return;let c={};const a=e=>r(e,n),u={module:{uri:n},exports:c,require:a};s[n]=Promise.all(i.map((e=>u[e]||a(e)))).then((e=>(l(...e),c)))}}define(["./workbox-9f7b9521"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"404.html",revision:"312f92dcb8486bb851ca2da6a848e566"},{url:"assets/_...all_-CUrrhdgQ.js",revision:null},{url:"assets/_plugin-vue_export-helper-DlAUqK2U.js",revision:null},{url:"assets/app-B089dKne.js",revision:null},{url:"assets/app-DrvwiHnI.css",revision:null},{url:"assets/Button-B-gA1mlD.css",revision:null},{url:"assets/Button-nXEYzZOt.js",revision:null},{url:"assets/centered-BXo6jbpB.css",revision:null},{url:"assets/centered-DXVC6Tw2.js",revision:null},{url:"assets/default-Bb8t_gCU.js",revision:null},{url:"assets/default-iCgzCfzV.css",revision:null},{url:"assets/index-C3mIgKMT.css",revision:null},{url:"assets/index-jBPnjwvd.js",revision:null},{url:"assets/privacy-policy-D0QDukm7.css",revision:null},{url:"assets/privacy-policy-DwrW54wZ.js",revision:null},{url:"assets/terms-CGu14MWA.css",revision:null},{url:"assets/terms-hP3Pi29U.js",revision:null},{url:"assets/useUriLocale-BPgYWpfF.js",revision:null},{url:"assets/virtual_pwa-register-B2s4srKm.js",revision:null},{url:"assets/workbox-window.prod.es5-D5gOYdM7.js",revision:null},{url:"de.html",revision:"1878a5fc46afa076f1fa7e9f60065f04"},{url:"de/privacy-policy.html",revision:"9b51c4238a115a861e30aca99b91509a"},{url:"de/terms.html",revision:"75f3f38c70ec39f4a48daf97200e6d42"},{url:"en.html",revision:"47dda9d4bb5500d25e152c6537c04f28"},{url:"en/privacy-policy.html",revision:"27229047cdc35383ed1a772757e4fb7e"},{url:"en/terms.html",revision:"0a9005dc13fd2f5d4b52cc6df65ed238"},{url:"index.html",revision:"099ff61c5e3b7b08882dce378b4b011e"},{url:"pl.html",revision:"d4422caf09840a0b963f665fddecd677"},{url:"pl/privacy-policy.html",revision:"dcc86bfd2562741796a595c28b0458f9"},{url:"pl/terms.html",revision:"d47f9d7b94f1ff82269e6cc7209c18a0"},{url:"favicon-dark.svg",revision:"98cd02853d9e8386612b5fbd7f9eb630"},{url:"favicon.svg",revision:"e476a8de9eefda3467f128aed07c007d"},{url:"pwa-192x192.png",revision:"307aeecc8a6cf708adcbd0b21274b92f"},{url:"pwa-512x512.png",revision:"50c3254ba3466da79827fcceb4807241"},{url:"pwa-maskable-512x512.png",revision:"5123dacbec6173fc269500f01c0834a8"},{url:"pwa-monochrome-192x192.png",revision:"47c8c3bba4d5b3cc780c268659f6a3fc"},{url:"safari-pinned-tab.svg",revision:"037dc7a68e4764080ef4d13890a13140"},{url:"manifest.webmanifest",revision:"0ffbc5bda62c00c71ebb6dee55f5fc48"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));