altcha 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,18 @@ https://altcha.org
8
8
 
9
9
  - __Friction-less__ - Using PoW instead of visual puzzles.
10
10
  - __Cookie-less__ - GDPR compliant by design.
11
- - __Self-hosted__ - Without reliance on external providers.
11
+ - __Self-hosted__ - Without reliance on external providers in self-hosted mode.
12
+ - __SaaS available__ - Visit [altcha.org](https://altcha.org/docs/api) to get started with the SaaS API.
13
+
14
+ ## Integrations
15
+
16
+ - [WordPress plugin](https://github.com/altcha-org/wordpress-plugin)
17
+ - [Other libraries and plugins](https://altcha.org/docs/integrations/)
18
+
19
+ ## More anti-spam solutions
20
+
21
+ - [Spam Filter](https://altcha.org/anti-spam) - stop sophisticated attacks and human-generated spam by classifying data.
22
+ - [ALTCHA lib](https://github.com/altcha-org/altcha-lib) - invisible Captcha, custom components and server-side M2M ALTCHA.
12
23
 
13
24
  ## Usage
14
25
 
@@ -165,7 +176,7 @@ document.querySelector('#altcha').addEventListener('statechange', (ev) => {
165
176
 
166
177
  ## Spam Filter
167
178
 
168
- The widget integrates with ALTCHA's [Spam Filter API](https://altcha.org/docs/api/spam-filter-api) to allow checking submitted form data for potential spam.
179
+ The widget integrates with ALTCHA's [Anti-Spam solution](https://altcha.org/anti-spam) to allow checking submitted form data for potential spam.
169
180
 
170
181
  The Spam Filter API analyzes various signals in the submitted data to determine if it exhibits characteristics of spam. This non-invasive filtering helps reduce spam submissions without frustrating legitimate users.
171
182
 
@@ -193,6 +204,8 @@ SpamFilter configuration options:
193
204
  - __ipAddress__ - The user's IP is detected automatically but can be overridden or disabled with `false`.
194
205
  - __timeZone__ - The user's timezone is detected automatically but can be overridden or disabled with `false`.
195
206
 
207
+ To include the email field into `fields` (for easier server-side verification), configure the list of input names using the `spamfilter.fields: string[]` option.
208
+
196
209
  ### Exclude Inputs from Spam Checking
197
210
 
198
211
  By default, all text inputs and textareas within the parent form are spam-checked. To exclude a specific input, add the `data-no-spamfilter` attribute. Alternatively, explicitly list the checked fields using the `fields` config option.
package/dist/altcha.js CHANGED
@@ -870,7 +870,7 @@ function Ht(t, e, r) {
870
870
  wt(() => {
871
871
  g && (g.removeEventListener("submit", we), g.removeEventListener("reset", _e), g.removeEventListener("focusin", ve), g = null), G && (clearTimeout(G), G = null);
872
872
  }), vt(() => {
873
- L("mounted", "0.5.0"), L("workers", d), m && L("using test mode"), C && ie(C), s !== void 0 && L("auto", s), g = ne.closest("form"), g && (g.addEventListener("submit", we), g.addEventListener("reset", _e), s === "onfocus" && g.addEventListener("focusin", ve)), s === "onload" && Y();
873
+ L("mounted", "0.5.1"), L("workers", d), m && L("using test mode"), C && ie(C), s !== void 0 && L("auto", s), g = ne.closest("form"), g && (g.addEventListener("submit", we), g.addEventListener("reset", _e), s === "onfocus" && g.addEventListener("focusin", ve)), s === "onload" && Y();
874
874
  });
875
875
  function L(...n) {
876
876
  (j || n.some((h) => h instanceof Error)) && console[n[0] instanceof Error ? "error" : "log"]("ALTCHA", ...n);
@@ -1017,7 +1017,7 @@ function Ht(t, e, r) {
1017
1017
  }
1018
1018
  function et(n) {
1019
1019
  return [
1020
- ...(g == null ? void 0 : g.querySelectorAll(n != null && n.length ? n.map((w) => `input[name="${w}"]`).join(", ") : 'input[type="email"]:not([data-no-spamfilter]), input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || []
1020
+ ...(g == null ? void 0 : g.querySelectorAll(n != null && n.length ? n.map((w) => `input[name="${w}"]`).join(", ") : 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || []
1021
1021
  ].reduce(
1022
1022
  (w, z) => {
1023
1023
  const A = z.name, Z = z.value.trim();
@@ -1 +1 @@
1
- (function(T,z){typeof exports=="object"&&typeof module<"u"?z(exports):typeof define=="function"&&define.amd?define(["exports"],z):(T=typeof globalThis<"u"?globalThis:T||self,z(T.altcha={}))})(this,function(T){"use strict";var Wt=Object.defineProperty;var Pt=(T,z,Q)=>z in T?Wt(T,z,{enumerable:!0,configurable:!0,writable:!0,value:Q}):T[z]=Q;var V=(T,z,Q)=>Pt(T,typeof z!="symbol"?z+"":z,Q);const z="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIGQoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiBwKGUsdCxvKXtyZXR1cm4gZChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChvLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGcoZSx0LG89IlNIQS0yNTYiLGw9MWU2LGM9MCl7Y29uc3QgYT1uZXcgQWJvcnRDb250cm9sbGVyLGk9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgbj1jO248PWw7bis9MSl7aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCBwKHQsbixvKT09PWUpcmV0dXJue251bWJlcjpuLHRvb2s6RGF0ZS5ub3coKS1pfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjphfX1sZXQgcjtvbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0e3R5cGU6dCxwYXlsb2FkOm99PWUuZGF0YTtpZih0PT09ImFib3J0IilyPT1udWxsfHxyLmFib3J0KCkscj12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtjb25zdHthbGc6bCxjaGFsbGVuZ2U6YyxtYXg6YSxzYWx0Omksc3RhcnQ6dX09b3x8e30sbj1nKGMsaSxsLGEsdSk7cj1uLmNvbnRyb2xsZXIsbi5wcm9taXNlLnRoZW4ocz0+e3NlbGYucG9zdE1lc3NhZ2UocyYmey4uLnMsd29ya2VyOiEwfSl9KX19fSkoKTsK",Q=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0)),we=typeof window<"u"&&window.Blob&&new Blob([Q(z)],{type:"text/javascript;charset=utf-8"});function Je(t){let e;try{if(e=we&&(window.URL||window.webkitURL).createObjectURL(we),!e)throw"";const r=new Worker(e,{name:t==null?void 0:t.name});return r.addEventListener("error",()=>{(window.URL||window.webkitURL).revokeObjectURL(e)}),r}catch{return new Worker("data:text/javascript;base64,"+z,{name:t==null?void 0:t.name})}finally{e&&(window.URL||window.webkitURL).revokeObjectURL(e)}}function re(){}function pe(t){return t()}function _e(){return Object.create(null)}function ne(t){t.forEach(pe)}function ke(t){return typeof t=="function"}function Qe(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function qe(t){return Object.keys(t).length===0}function v(t,e){t.appendChild(e)}function et(t,e,r){const i=tt(t);if(!i.getElementById(e)){const o=C("style");o.id=e,o.textContent=r,rt(i,o)}}function tt(t){if(!t)return document;const e=t.getRootNode?t.getRootNode():t.ownerDocument;return e&&e.host?e:t.ownerDocument}function rt(t,e){return v(t.head||t,e),e.sheet}function j(t,e,r){t.insertBefore(e,r||null)}function N(t){t.parentNode&&t.parentNode.removeChild(t)}function C(t){return document.createElement(t)}function X(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function nt(t){return document.createTextNode(t)}function P(){return nt(" ")}function ue(t,e,r,i){return t.addEventListener(e,r,i),()=>t.removeEventListener(e,r,i)}function c(t,e,r){r==null?t.removeAttribute(e):t.getAttribute(e)!==r&&t.setAttribute(e,r)}function it(t){return Array.from(t.childNodes)}function xe(t,e,r){t.classList.toggle(e,!!r)}function ot(t,e,{bubbles:r=!1,cancelable:i=!1}={}){return new CustomEvent(t,{detail:e,bubbles:r,cancelable:i})}function lt(t){const e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}let ie;function oe(t){ie=t}function he(){if(!ie)throw new Error("Function called outside component initialization");return ie}function st(t){he().$$.on_mount.push(t)}function ct(t){he().$$.on_destroy.push(t)}function at(){const t=he();return(e,r,{cancelable:i=!1}={})=>{const o=t.$$.callbacks[e];if(o){const l=ot(e,r,{cancelable:i});return o.slice().forEach(s=>{s.call(t,l)}),!l.defaultPrevented}return!0}}const q=[],de=[];let ee=[];const Ee=[],$e=Promise.resolve();let me=!1;function Ce(){me||(me=!0,$e.then(w))}function ft(){return Ce(),$e}function ge(t){ee.push(t)}const be=new Set;let te=0;function w(){if(te!==0)return;const t=ie;do{try{for(;te<q.length;){const e=q[te];te++,oe(e),ut(e.$$)}}catch(e){throw q.length=0,te=0,e}for(oe(null),q.length=0,te=0;de.length;)de.pop()();for(let e=0;e<ee.length;e+=1){const r=ee[e];be.has(r)||(be.add(r),r())}ee.length=0}while(q.length);for(;Ee.length;)Ee.pop()();me=!1,be.clear(),oe(t)}function ut(t){if(t.fragment!==null){t.update(),ne(t.before_update);const e=t.dirty;t.dirty=[-1],t.fragment&&t.fragment.p(t.ctx,e),t.after_update.forEach(ge)}}function ht(t){const e=[],r=[];ee.forEach(i=>t.indexOf(i)===-1?e.push(i):r.push(i)),r.forEach(i=>i()),ee=e}const dt=new Set;function mt(t,e){t&&t.i&&(dt.delete(t),t.i(e))}function gt(t,e,r){const{fragment:i,after_update:o}=t.$$;i&&i.m(e,r),ge(()=>{const l=t.$$.on_mount.map(pe).filter(ke);t.$$.on_destroy?t.$$.on_destroy.push(...l):ne(l),t.$$.on_mount=[]}),o.forEach(ge)}function bt(t,e){const r=t.$$;r.fragment!==null&&(ht(r.after_update),ne(r.on_destroy),r.fragment&&r.fragment.d(e),r.on_destroy=r.fragment=null,r.ctx=[])}function yt(t,e){t.$$.dirty[0]===-1&&(q.push(t),Ce(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function vt(t,e,r,i,o,l,s=null,f=[-1]){const a=ie;oe(t);const u=t.$$={fragment:null,ctx:[],props:l,update:re,not_equal:o,bound:_e(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(a?a.$$.context:[])),callbacks:_e(),dirty:f,skip_bound:!1,root:e.target||a.$$.root};s&&s(u.root);let Z=!1;if(u.ctx=r?r(t,e.props||{},(L,U,...G)=>{const F=G.length?G[0]:U;return u.ctx&&o(u.ctx[L],u.ctx[L]=F)&&(!u.skip_bound&&u.bound[L]&&u.bound[L](F),Z&&yt(t,L)),U}):[],u.update(),Z=!0,ne(u.before_update),u.fragment=i?i(u.ctx):!1,e.target){if(e.hydrate){const L=it(e.target);u.fragment&&u.fragment.l(L),L.forEach(N)}else u.fragment&&u.fragment.c();e.intro&&mt(t.$$.fragment),gt(t,e.target,e.anchor),w()}oe(a)}let Le;typeof HTMLElement=="function"&&(Le=class extends HTMLElement{constructor(e,r,i){super();V(this,"$$ctor");V(this,"$$s");V(this,"$$c");V(this,"$$cn",!1);V(this,"$$d",{});V(this,"$$r",!1);V(this,"$$p_d",{});V(this,"$$l",{});V(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=r,i&&this.attachShadow({mode:"open"})}addEventListener(e,r,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(r),this.$$c){const o=this.$$c.$on(e,r);this.$$l_u.set(r,o)}super.addEventListener(e,r,i)}removeEventListener(e,r,i){if(super.removeEventListener(e,r,i),this.$$c){const o=this.$$l_u.get(r);o&&(o(),this.$$l_u.delete(r))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=C("slot"),l!=="default"&&c(s,"name",l)},m:function(u,Z){j(u,s,Z)},d:function(u){u&&N(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const r={},i=lt(this);for(const l of this.$$s)l in i&&(r[l]=[e(l)]);for(const l of this.attributes){const s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=le(s,l.value,this.$$p_d,"toProp"))}for(const l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:r,$$scope:{ctx:[]}}});const o=()=>{this.$$r=!0;for(const l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){const s=le(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(o),o();for(const l in this.$$l)for(const s of this.$$l[l]){const f=this.$$c.$on(l,s);this.$$l_u.set(s,f)}this.$$l={}}}attributeChangedCallback(e,r,i){var o;this.$$r||(e=this.$$g_p(e),this.$$d[e]=le(e,i,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(r=>this.$$p_d[r].attribute===e||!this.$$p_d[r].attribute&&r.toLowerCase()===e)||e}});function le(t,e,r,i){var l;const o=(l=r[t])==null?void 0:l.type;if(e=o==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!r[t])return e;if(i==="toAttribute")switch(o){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(o){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function wt(t,e,r,i,o,l){let s=class extends Le{constructor(){super(t,r,o),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(f=>(e[f].attribute||f).toLowerCase())}};return Object.keys(e).forEach(f=>{Object.defineProperty(s.prototype,f,{get(){return this.$$c&&f in this.$$c?this.$$c[f]:this.$$d[f]},set(a){var u;a=le(f,a,e),this.$$d[f]=a,(u=this.$$c)==null||u.$set({[f]:a})}})}),i.forEach(f=>{Object.defineProperty(s.prototype,f,{get(){var a;return(a=this.$$c)==null?void 0:a[f]}})}),l&&(s=l(s)),t.element=s,s}class pt{constructor(){V(this,"$$");V(this,"$$set")}$destroy(){bt(this,1),this.$destroy=re}$on(e,r){if(!ke(r))return re;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(r),()=>{const o=i.indexOf(r);o!==-1&&i.splice(o,1)}}$set(e){this.$$set&&!qe(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const _t="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(_t);const kt=new TextEncoder;function xt(t){return[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function Et(t,e="SHA-256",r=1e5){const i=Date.now().toString(16);t||(t=Math.round(Math.random()*r));const o=await Re(i,t,e);return{algorithm:e,challenge:o,salt:i,signature:""}}async function Re(t,e,r){return xt(await crypto.subtle.digest(r.toUpperCase(),kt.encode(t+e)))}function $t(t,e,r="SHA-256",i=1e6,o=0){const l=new AbortController,s=Date.now();return{promise:(async()=>{for(let a=o;a<=i;a+=1){if(l.signal.aborted)return null;if(await Re(e,a,r)===t)return{number:a,took:Date.now()-s}}return null})(),controller:l}}var g=(t=>(t.ERROR="error",t.VERIFIED="verified",t.VERIFYING="verifying",t.UNVERIFIED="unverified",t.EXPIRED="expired",t))(g||{});function Ct(t){et(t,"svelte-15co9zy",".altcha.svelte-15co9zy.svelte-15co9zy{background:var(--altcha-color-base, transparent);border:var(--altcha-border-width, 1px) solid var(--altcha-color-border, #a0a0a0);border-radius:var(--altcha-border-radius, 3px);color:var(--altcha-color-text, currentColor);display:flex;flex-direction:column;max-width:var(--altcha-max-width, 260px);overflow:hidden;position:relative;text-align:left}.altcha.svelte-15co9zy.svelte-15co9zy:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha-main.svelte-15co9zy.svelte-15co9zy{align-items:center;display:flex;gap:0.4rem;padding:0.7rem}.altcha-label.svelte-15co9zy.svelte-15co9zy{flex-grow:1}.altcha-label.svelte-15co9zy label.svelte-15co9zy{cursor:pointer}.altcha-logo.svelte-15co9zy.svelte-15co9zy{color:currentColor;opacity:0.3}.altcha-logo.svelte-15co9zy.svelte-15co9zy:hover{opacity:1}.altcha-error.svelte-15co9zy.svelte-15co9zy{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:0.85rem;gap:0.3rem;padding:0 0.7rem 0.7rem}.altcha-footer.svelte-15co9zy.svelte-15co9zy{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:0.75rem;opacity:0.4;padding:0.2rem 0.7rem;text-align:right}.altcha-footer.svelte-15co9zy.svelte-15co9zy:hover{opacity:1}.altcha-footer.svelte-15co9zy>.svelte-15co9zy:first-child{flex-grow:1}.altcha-footer.svelte-15co9zy a{color:currentColor}.altcha-checkbox.svelte-15co9zy.svelte-15co9zy{display:flex;align-items:center;height:24px;width:24px}.altcha-checkbox.svelte-15co9zy input.svelte-15co9zy{width:18px;height:18px;margin:0}.altcha-hidden.svelte-15co9zy.svelte-15co9zy{display:none}.altcha-spinner.svelte-15co9zy.svelte-15co9zy{animation:svelte-15co9zy-altcha-spinner 0.75s infinite linear;transform-origin:center}@keyframes svelte-15co9zy-altcha-spinner{100%{transform:rotate(360deg)}}")}function Ie(t){let e,r,i;return{c(){e=X("svg"),r=X("path"),i=X("path"),c(r,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),c(r,"fill","currentColor"),c(r,"opacity",".25"),c(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),c(i,"fill","currentColor"),c(i,"class","altcha-spinner svelte-15co9zy"),c(e,"width","24"),c(e,"height","24"),c(e,"viewBox","0 0 24 24"),c(e,"xmlns","http://www.w3.org/2000/svg")},m(o,l){j(o,e,l),v(e,r),v(e,i)},d(o){o&&N(e)}}}function Lt(t){let e,r=t[9].label+"",i;return{c(){e=C("label"),c(e,"for",i=t[3]+"_checkbox"),c(e,"class","svelte-15co9zy")},m(o,l){j(o,e,l),e.innerHTML=r},p(o,l){l[0]&512&&r!==(r=o[9].label+"")&&(e.innerHTML=r),l[0]&8&&i!==(i=o[3]+"_checkbox")&&c(e,"for",i)},d(o){o&&N(e)}}}function Rt(t){let e,r=t[9].verifying+"";return{c(){e=C("span")},m(i,o){j(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].verifying+"")&&(e.innerHTML=r)},d(i){i&&N(e)}}}function It(t){let e,r=t[9].verified+"",i,o;return{c(){e=C("span"),i=P(),o=C("input"),c(o,"type","hidden"),c(o,"name",t[3]),o.value=t[4]},m(l,s){j(l,e,s),e.innerHTML=r,j(l,i,s),j(l,o,s)},p(l,s){s[0]&512&&r!==(r=l[9].verified+"")&&(e.innerHTML=r),s[0]&8&&c(o,"name",l[3]),s[0]&16&&(o.value=l[4])},d(l){l&&(N(e),N(i),N(o))}}}function ze(t){let e,r,i,o,l,s,f;return{c(){e=C("div"),r=C("a"),i=X("svg"),o=X("path"),l=X("path"),s=X("path"),c(o,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),c(o,"fill","currentColor"),c(l,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),c(l,"fill","currentColor"),c(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),c(s,"fill","currentColor"),c(i,"width","22"),c(i,"height","22"),c(i,"viewBox","0 0 20 20"),c(i,"fill","none"),c(i,"xmlns","http://www.w3.org/2000/svg"),c(r,"href",Ae),c(r,"target","_blank"),c(r,"class","altcha-logo svelte-15co9zy"),c(r,"aria-label",f=t[9].ariaLinkLabel)},m(a,u){j(a,e,u),v(e,r),v(r,i),v(i,o),v(i,l),v(i,s)},p(a,u){u[0]&512&&f!==(f=a[9].ariaLinkLabel)&&c(r,"aria-label",f)},d(a){a&&N(e)}}}function Ne(t){let e,r,i,o;function l(a,u){return a[5]===g.EXPIRED?Nt:zt}let s=l(t),f=s(t);return{c(){e=C("div"),r=X("svg"),i=X("path"),o=P(),f.c(),c(i,"stroke-linecap","round"),c(i,"stroke-linejoin","round"),c(i,"d","M6 18L18 6M6 6l12 12"),c(r,"width","14"),c(r,"height","14"),c(r,"xmlns","http://www.w3.org/2000/svg"),c(r,"fill","none"),c(r,"viewBox","0 0 24 24"),c(r,"stroke-width","1.5"),c(r,"stroke","currentColor"),c(e,"class","altcha-error svelte-15co9zy")},m(a,u){j(a,e,u),v(e,r),v(r,i),v(e,o),f.m(e,null)},p(a,u){s===(s=l(a))&&f?f.p(a,u):(f.d(1),f=s(a),f&&(f.c(),f.m(e,null)))},d(a){a&&N(e),f.d()}}}function zt(t){let e,r=t[9].error+"";return{c(){e=C("div"),c(e,"title",t[8])},m(i,o){j(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].error+"")&&(e.innerHTML=r),o[0]&256&&c(e,"title",i[8])},d(i){i&&N(e)}}}function Nt(t){let e,r=t[9].expired+"";return{c(){e=C("div"),c(e,"title",t[8])},m(i,o){j(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].expired+"")&&(e.innerHTML=r),o[0]&256&&c(e,"title",i[8])},d(i){i&&N(e)}}}function Se(t){let e,r,i=t[9].footer+"";return{c(){e=C("div"),r=C("div"),c(r,"class","svelte-15co9zy"),c(e,"class","altcha-footer svelte-15co9zy")},m(o,l){j(o,e,l),v(e,r),r.innerHTML=i},p(o,l){l[0]&512&&i!==(i=o[9].footer+"")&&(r.innerHTML=i)},d(o){o&&N(e)}}}function St(t){let e,r,i,o,l,s,f,a,u,Z,L,U,G,F,_=t[5]===g.VERIFYING&&Ie();function Y(d,I){return d[5]===g.VERIFIED?It:d[5]===g.VERIFYING?Rt:Lt}let H=Y(t),k=H(t),x=t[2]!==!0&&ze(t),m=(t[8]||t[5]===g.EXPIRED)&&Ne(t),y=t[9].footer&&t[1]!==!0&&Se(t);return{c(){e=C("div"),r=C("div"),_&&_.c(),i=P(),o=C("div"),l=C("input"),a=P(),u=C("div"),k.c(),Z=P(),x&&x.c(),L=P(),m&&m.c(),U=P(),y&&y.c(),c(l,"type","checkbox"),c(l,"id",s=t[3]+"_checkbox"),l.required=f=t[0]!=="onsubmit",c(l,"class","svelte-15co9zy"),c(o,"class","altcha-checkbox svelte-15co9zy"),xe(o,"altcha-hidden",t[5]===g.VERIFYING),c(u,"class","altcha-label svelte-15co9zy"),c(r,"class","altcha-main svelte-15co9zy"),c(e,"class","altcha svelte-15co9zy"),c(e,"data-state",t[5])},m(d,I){j(d,e,I),v(e,r),_&&_.m(r,null),v(r,i),v(r,o),v(o,l),l.checked=t[6],v(r,a),v(r,u),k.m(u,null),v(r,Z),x&&x.m(r,null),v(e,L),m&&m.m(e,null),v(e,U),y&&y.m(e,null),t[31](e),G||(F=[ue(l,"change",t[30]),ue(l,"change",t[10]),ue(l,"invalid",t[11])],G=!0)},p(d,I){d[5]===g.VERIFYING?_||(_=Ie(),_.c(),_.m(r,i)):_&&(_.d(1),_=null),I[0]&8&&s!==(s=d[3]+"_checkbox")&&c(l,"id",s),I[0]&1&&f!==(f=d[0]!=="onsubmit")&&(l.required=f),I[0]&64&&(l.checked=d[6]),I[0]&32&&xe(o,"altcha-hidden",d[5]===g.VERIFYING),H===(H=Y(d))&&k?k.p(d,I):(k.d(1),k=H(d),k&&(k.c(),k.m(u,null))),d[2]!==!0?x?x.p(d,I):(x=ze(d),x.c(),x.m(r,null)):x&&(x.d(1),x=null),d[8]||d[5]===g.EXPIRED?m?m.p(d,I):(m=Ne(d),m.c(),m.m(e,U)):m&&(m.d(1),m=null),d[9].footer&&d[1]!==!0?y?y.p(d,I):(y=Se(d),y.c(),y.m(e,null)):y&&(y.d(1),y=null),I[0]&32&&c(e,"data-state",d[5])},i:re,o:re,d(d){d&&N(e),_&&_.d(),k.d(),x&&x.d(),m&&m.d(),y&&y.d(),t[31](null),G=!1,ne(F)}}}const je="Visit Altcha.org",Ae="https://altcha.org/";function Te(t){return JSON.parse(t)}function jt(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function At(t,e,r){var We,Pe;let i,o,l,{auto:s=void 0}=e,{blockspam:f=void 0}=e,{challengeurl:a=void 0}=e,{challengejson:u=void 0}=e,{debug:Z=!1}=e,{expire:L=void 0}=e,{hidefooter:U=!1}=e,{hidelogo:G=!1}=e,{name:F="altcha"}=e,{maxnumber:_=1e6}=e,{mockerror:Y=!1}=e,{refetchonexpire:H=!0}=e,{spamfilter:k=!1}=e,{strings:x=void 0}=e,{test:m=!1}=e,{verifyurl:y=void 0}=e,{workers:d=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:I=void 0}=e;const ye=at(),Me=["SHA-256","SHA-384","SHA-512"],Ve=(Pe=(We=document.documentElement.lang)==null?void 0:We.split("-"))==null?void 0:Pe[0];let W=!1,se,b=null,ve=null,B=null,D=g.UNVERIFIED,O=null;ct(()=>{b&&(b.removeEventListener("submit",Ge),b.removeEventListener("reset",De),b.removeEventListener("focusin",Ue),b=null),O&&(clearTimeout(O),O=null)}),st(()=>{R("mounted","0.5.0"),R("workers",d),m&&R("using test mode"),L&&ce(L),s!==void 0&&R("auto",s),b=se.closest("form"),b&&(b.addEventListener("submit",Ge),b.addEventListener("reset",De),s==="onfocus"&&b.addEventListener("focusin",Ue)),s==="onload"&&K()});function R(...n){(Z||n.some(h=>h instanceof Error))&&console[n[0]instanceof Error?"error":"log"]("ALTCHA",...n)}function Ue(n){D===g.UNVERIFIED&&K()}function Ge(n){b&&s==="onsubmit"&&D===g.UNVERIFIED&&(n.preventDefault(),n.stopPropagation(),K().then(()=>{b==null||b.requestSubmit()}))}function De(){ae()}function Oe(n,h){return btoa(JSON.stringify({algorithm:n.algorithm,challenge:n.challenge,number:h.number,salt:n.salt,signature:n.signature,test:m?!0:void 0,took:h.took}))}function Xe(n){if(!n.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(n.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!Me.includes(n.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${Me.join(", ")}`);if(!n.challenge||n.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!n.salt||n.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function Tt(){var n;if(Y)throw R("mocking error"),new Error("Mocked error.");if(i)return R("using provided json data"),i;if(m)return R("generating test challenge",{test:m}),Et(typeof m!="boolean"?+m:void 0);{if(!a)throw new Error("Attribute challengeurl not set.");R("fetching challenge from",a);const h=await fetch(a,{headers:{"x-altcha-spam-filter":k?"1":"0"}});if(h.status!==200)throw new Error(`Server responded with ${h.status}.`);const p=h.headers.get("Expires"),S=h.headers.get("X-Altcha-Config"),A=await h.json(),M=new URLSearchParams((n=A.salt.split("?"))==null?void 0:n[1]),J=M.get("expires")||M.get("expire");if(J){const E=new Date(+J*1e3),$=isNaN(E.getTime())?0:E.getTime()-Date.now();$>0&&ce($)}if(S)try{const E=JSON.parse(S);E&&typeof E=="object"&&(E.verifyurl&&(E.verifyurl=new URL(E.verifyurl,new URL(a)).toString()),He(E))}catch(E){R("unable to configure from X-Altcha-Config",E)}if(!L&&(p!=null&&p.length)){const E=Date.parse(p);if(E){const $=E-Date.now();$>0&&ce($)}}return A}}function Fe(){a&&H&&D===g.VERIFIED?K():ae(g.EXPIRED,l.expired)}async function Zt(n){let h=null;if("Worker"in window){try{h=await Mt(n.challenge,n.salt,n.algorithm,n.maxnumber)}catch(p){R(p)}if((h==null?void 0:h.number)!==void 0)return{data:n,solution:h}}return{data:n,solution:await $t(n.challenge,n.salt,n.algorithm,n.maxnumber||_).promise}}async function Mt(n,h,p,S=typeof m=="number"?m:_,A=Math.ceil(d)){const M=[];if(A<1)throw new Error("Wrong number of workers configured.");if(A>16)throw new Error("Too many workers. Max. 16 allowed workers.");for(let $=0;$<A;$++)M.push(createAltchaWorker(I));const J=Math.ceil(S/A),E=await Promise.all(M.map(($,fe)=>{const Ye=fe*J;return new Promise(Ht=>{$.addEventListener("message",Be=>{if(Be.data)for(const Ke of M)Ke!==$&&Ke.postMessage({type:"abort"});Ht(Be.data)}),$.postMessage({payload:{alg:p,challenge:n,max:Ye+J,salt:h,start:Ye},type:"work"})})}));for(const $ of M)$.terminate();return E.find($=>!!$)||null}function Vt(){[g.UNVERIFIED,g.ERROR,g.EXPIRED].includes(D)?k&&(b==null?void 0:b.reportValidity())===!1?r(6,W=!1):K():r(6,W=!0)}function Ut(){D===g.VERIFYING&&alert(l.waitAlert)}function ce(n){R("expire",n),O&&(clearTimeout(O),O=null),n<1?Fe():O=setTimeout(Fe,n)}function Gt(n){var p;const h=b==null?void 0:b.querySelector(typeof n=="string"?`input[name="${n}"]`:'input[type="email"]:not([data-no-spamfilter])');return((p=h==null?void 0:h.value)==null?void 0:p.slice(h.value.indexOf("@")))||void 0}function Dt(n){return[...(b==null?void 0:b.querySelectorAll(n!=null&&n.length?n.map(p=>`input[name="${p}"]`).join(", "):'input[type="email"]:not([data-no-spamfilter]), input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((p,S)=>{const A=S.name,M=S.value.trim();return A&&M&&(p[A]=M),p},{})}async function Ot(n){if(!y)throw new Error("Attribute verifyurl not set.");R("requesting server verification from",y);const h={payload:n};if(k){const{email:A,expectedLanguages:M,expectedCountries:J,fields:E,ipAddress:$,timeZone:fe}=typeof k=="object"?k:{email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,timeZone:void 0};h.ipAddress=$===!1?void 0:$||"auto",h.email=A===!1?void 0:Gt(A),h.fields=E===!1?void 0:Dt(E),h.timeZone=fe===!1?void 0:fe||jt(),h.expectedCountries=J,h.expectedLanguages=M||(Ve?[Ve]:void 0)}const p=await fetch(y,{body:JSON.stringify(h),headers:{"content-type":"application/json"},method:"POST"});if(p.status!==200)throw new Error(`Server responded with ${p.status}.`);const S=await p.json();if(S!=null&&S.payload&&r(4,B=S.payload),ye("serververification",S),f&&S.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function He(n){n.auto!==void 0&&(r(0,s=n.auto),s==="onload"&&K()),n.expire!==void 0&&(ce(n.expire),r(14,L=n.expire)),n.challenge&&(Xe(n.challenge),i=n.challenge),n.challengeurl!==void 0&&r(12,a=n.challengeurl),n.debug!==void 0&&r(13,Z=!!n.debug),n.hidefooter!==void 0&&r(1,U=!!n.hidefooter),n.hidelogo!==void 0&&r(2,G=!!n.hidelogo),n.maxnumber!==void 0&&r(15,_=+n.maxnumber),n.mockerror!==void 0&&r(16,Y=!!n.mockerror),n.name!==void 0&&r(3,F=n.name),n.refetchonexpire!==void 0&&r(17,H=!!n.refetchonexpire),n.spamfilter!==void 0&&r(18,k=typeof n.spamfilter=="object"?n.spamfilter:!!n.spamfilter),n.strings&&r(29,o=n.strings),n.test!==void 0&&r(19,m=typeof n.test=="number"?n.test:!!n.test),n.verifyurl!==void 0&&r(20,y=n.verifyurl),n.workers!==void 0&&r(21,d=+n.workers)}function ae(n=g.UNVERIFIED,h=null){O&&(clearTimeout(O),O=null),r(6,W=!1),r(8,ve=h),r(4,B=null),r(5,D=n)}async function K(){return ae(g.VERIFYING),Tt().then(n=>(Xe(n),R("challenge",n),Zt(n))).then(({data:n,solution:h})=>{if(R("solution",h),(h==null?void 0:h.number)!==void 0){if(y)return Ot(Oe(n,h));r(4,B=Oe(n,h)),R("payload",B)}else throw R("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{ft().then(()=>{r(5,D=g.VERIFIED),r(6,W=!0),R("verified"),ye("verified",{payload:B})})}).catch(n=>{R(n),r(5,D=g.ERROR),r(6,W=!1),r(8,ve=n.message)})}function Xt(){W=this.checked,r(6,W)}function Ft(n){de[n?"unshift":"push"](()=>{se=n,r(7,se)})}return t.$$set=n=>{"auto"in n&&r(0,s=n.auto),"blockspam"in n&&r(22,f=n.blockspam),"challengeurl"in n&&r(12,a=n.challengeurl),"challengejson"in n&&r(23,u=n.challengejson),"debug"in n&&r(13,Z=n.debug),"expire"in n&&r(14,L=n.expire),"hidefooter"in n&&r(1,U=n.hidefooter),"hidelogo"in n&&r(2,G=n.hidelogo),"name"in n&&r(3,F=n.name),"maxnumber"in n&&r(15,_=n.maxnumber),"mockerror"in n&&r(16,Y=n.mockerror),"refetchonexpire"in n&&r(17,H=n.refetchonexpire),"spamfilter"in n&&r(18,k=n.spamfilter),"strings"in n&&r(24,x=n.strings),"test"in n&&r(19,m=n.test),"verifyurl"in n&&r(20,y=n.verifyurl),"workers"in n&&r(21,d=n.workers),"workerurl"in n&&r(25,I=n.workerurl)},t.$$.update=()=>{t.$$.dirty[0]&8388608&&(i=u?Te(u):void 0),t.$$.dirty[0]&16777216&&r(29,o=x?Te(x):{}),t.$$.dirty[0]&536870912&&r(9,l={ariaLinkLabel:je,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by <a href="${Ae}" target="_blank" aria-label="${o.ariaLinkLabel||je}">ALTCHA</a>`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...o}),t.$$.dirty[0]&48&&ye("statechange",{payload:B,state:D})},[s,U,G,F,B,D,W,se,ve,l,Vt,Ut,a,Z,L,_,Y,H,k,m,y,d,f,u,x,I,He,ae,K,o,Xt,Ft]}class Ze extends pt{constructor(e){super(),vt(this,e,At,St,Qe,{auto:0,blockspam:22,challengeurl:12,challengejson:23,debug:13,expire:14,hidefooter:1,hidelogo:2,name:3,maxnumber:15,mockerror:16,refetchonexpire:17,spamfilter:18,strings:24,test:19,verifyurl:20,workers:21,workerurl:25,configure:26,reset:27,verify:28},Ct,[-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),w()}get blockspam(){return this.$$.ctx[22]}set blockspam(e){this.$$set({blockspam:e}),w()}get challengeurl(){return this.$$.ctx[12]}set challengeurl(e){this.$$set({challengeurl:e}),w()}get challengejson(){return this.$$.ctx[23]}set challengejson(e){this.$$set({challengejson:e}),w()}get debug(){return this.$$.ctx[13]}set debug(e){this.$$set({debug:e}),w()}get expire(){return this.$$.ctx[14]}set expire(e){this.$$set({expire:e}),w()}get hidefooter(){return this.$$.ctx[1]}set hidefooter(e){this.$$set({hidefooter:e}),w()}get hidelogo(){return this.$$.ctx[2]}set hidelogo(e){this.$$set({hidelogo:e}),w()}get name(){return this.$$.ctx[3]}set name(e){this.$$set({name:e}),w()}get maxnumber(){return this.$$.ctx[15]}set maxnumber(e){this.$$set({maxnumber:e}),w()}get mockerror(){return this.$$.ctx[16]}set mockerror(e){this.$$set({mockerror:e}),w()}get refetchonexpire(){return this.$$.ctx[17]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),w()}get spamfilter(){return this.$$.ctx[18]}set spamfilter(e){this.$$set({spamfilter:e}),w()}get strings(){return this.$$.ctx[24]}set strings(e){this.$$set({strings:e}),w()}get test(){return this.$$.ctx[19]}set test(e){this.$$set({test:e}),w()}get verifyurl(){return this.$$.ctx[20]}set verifyurl(e){this.$$set({verifyurl:e}),w()}get workers(){return this.$$.ctx[21]}set workers(e){this.$$set({workers:e}),w()}get workerurl(){return this.$$.ctx[25]}set workerurl(e){this.$$set({workerurl:e}),w()}get configure(){return this.$$.ctx[26]}get reset(){return this.$$.ctx[27]}get verify(){return this.$$.ctx[28]}}customElements.define("altcha-widget",wt(Ze,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},expire:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},[],["configure","reset","verify"],!1)),globalThis.createAltchaWorker=t=>t?new Worker(new URL(t)):new Je,T.Altcha=Ze,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})});
1
+ (function(T,z){typeof exports=="object"&&typeof module<"u"?z(exports):typeof define=="function"&&define.amd?define(["exports"],z):(T=typeof globalThis<"u"?globalThis:T||self,z(T.altcha={}))})(this,function(T){"use strict";var Wt=Object.defineProperty;var Pt=(T,z,Q)=>z in T?Wt(T,z,{enumerable:!0,configurable:!0,writable:!0,value:Q}):T[z]=Q;var V=(T,z,Q)=>Pt(T,typeof z!="symbol"?z+"":z,Q);const z="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIGQoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiBwKGUsdCxvKXtyZXR1cm4gZChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChvLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGcoZSx0LG89IlNIQS0yNTYiLGw9MWU2LGM9MCl7Y29uc3QgYT1uZXcgQWJvcnRDb250cm9sbGVyLGk9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgbj1jO248PWw7bis9MSl7aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCBwKHQsbixvKT09PWUpcmV0dXJue251bWJlcjpuLHRvb2s6RGF0ZS5ub3coKS1pfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjphfX1sZXQgcjtvbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0e3R5cGU6dCxwYXlsb2FkOm99PWUuZGF0YTtpZih0PT09ImFib3J0IilyPT1udWxsfHxyLmFib3J0KCkscj12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtjb25zdHthbGc6bCxjaGFsbGVuZ2U6YyxtYXg6YSxzYWx0Omksc3RhcnQ6dX09b3x8e30sbj1nKGMsaSxsLGEsdSk7cj1uLmNvbnRyb2xsZXIsbi5wcm9taXNlLnRoZW4ocz0+e3NlbGYucG9zdE1lc3NhZ2UocyYmey4uLnMsd29ya2VyOiEwfSl9KX19fSkoKTsK",Q=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0)),we=typeof window<"u"&&window.Blob&&new Blob([Q(z)],{type:"text/javascript;charset=utf-8"});function Je(t){let e;try{if(e=we&&(window.URL||window.webkitURL).createObjectURL(we),!e)throw"";const r=new Worker(e,{name:t==null?void 0:t.name});return r.addEventListener("error",()=>{(window.URL||window.webkitURL).revokeObjectURL(e)}),r}catch{return new Worker("data:text/javascript;base64,"+z,{name:t==null?void 0:t.name})}finally{e&&(window.URL||window.webkitURL).revokeObjectURL(e)}}function re(){}function _e(t){return t()}function pe(){return Object.create(null)}function ne(t){t.forEach(_e)}function ke(t){return typeof t=="function"}function Qe(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function qe(t){return Object.keys(t).length===0}function v(t,e){t.appendChild(e)}function et(t,e,r){const i=tt(t);if(!i.getElementById(e)){const o=C("style");o.id=e,o.textContent=r,rt(i,o)}}function tt(t){if(!t)return document;const e=t.getRootNode?t.getRootNode():t.ownerDocument;return e&&e.host?e:t.ownerDocument}function rt(t,e){return v(t.head||t,e),e.sheet}function j(t,e,r){t.insertBefore(e,r||null)}function N(t){t.parentNode&&t.parentNode.removeChild(t)}function C(t){return document.createElement(t)}function X(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function nt(t){return document.createTextNode(t)}function P(){return nt(" ")}function ue(t,e,r,i){return t.addEventListener(e,r,i),()=>t.removeEventListener(e,r,i)}function c(t,e,r){r==null?t.removeAttribute(e):t.getAttribute(e)!==r&&t.setAttribute(e,r)}function it(t){return Array.from(t.childNodes)}function xe(t,e,r){t.classList.toggle(e,!!r)}function ot(t,e,{bubbles:r=!1,cancelable:i=!1}={}){return new CustomEvent(t,{detail:e,bubbles:r,cancelable:i})}function lt(t){const e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}let ie;function oe(t){ie=t}function he(){if(!ie)throw new Error("Function called outside component initialization");return ie}function st(t){he().$$.on_mount.push(t)}function ct(t){he().$$.on_destroy.push(t)}function at(){const t=he();return(e,r,{cancelable:i=!1}={})=>{const o=t.$$.callbacks[e];if(o){const l=ot(e,r,{cancelable:i});return o.slice().forEach(s=>{s.call(t,l)}),!l.defaultPrevented}return!0}}const q=[],de=[];let ee=[];const Ee=[],$e=Promise.resolve();let me=!1;function Ce(){me||(me=!0,$e.then(w))}function ft(){return Ce(),$e}function ge(t){ee.push(t)}const be=new Set;let te=0;function w(){if(te!==0)return;const t=ie;do{try{for(;te<q.length;){const e=q[te];te++,oe(e),ut(e.$$)}}catch(e){throw q.length=0,te=0,e}for(oe(null),q.length=0,te=0;de.length;)de.pop()();for(let e=0;e<ee.length;e+=1){const r=ee[e];be.has(r)||(be.add(r),r())}ee.length=0}while(q.length);for(;Ee.length;)Ee.pop()();me=!1,be.clear(),oe(t)}function ut(t){if(t.fragment!==null){t.update(),ne(t.before_update);const e=t.dirty;t.dirty=[-1],t.fragment&&t.fragment.p(t.ctx,e),t.after_update.forEach(ge)}}function ht(t){const e=[],r=[];ee.forEach(i=>t.indexOf(i)===-1?e.push(i):r.push(i)),r.forEach(i=>i()),ee=e}const dt=new Set;function mt(t,e){t&&t.i&&(dt.delete(t),t.i(e))}function gt(t,e,r){const{fragment:i,after_update:o}=t.$$;i&&i.m(e,r),ge(()=>{const l=t.$$.on_mount.map(_e).filter(ke);t.$$.on_destroy?t.$$.on_destroy.push(...l):ne(l),t.$$.on_mount=[]}),o.forEach(ge)}function bt(t,e){const r=t.$$;r.fragment!==null&&(ht(r.after_update),ne(r.on_destroy),r.fragment&&r.fragment.d(e),r.on_destroy=r.fragment=null,r.ctx=[])}function yt(t,e){t.$$.dirty[0]===-1&&(q.push(t),Ce(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function vt(t,e,r,i,o,l,s=null,f=[-1]){const a=ie;oe(t);const u=t.$$={fragment:null,ctx:[],props:l,update:re,not_equal:o,bound:pe(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(a?a.$$.context:[])),callbacks:pe(),dirty:f,skip_bound:!1,root:e.target||a.$$.root};s&&s(u.root);let Z=!1;if(u.ctx=r?r(t,e.props||{},(L,U,...G)=>{const F=G.length?G[0]:U;return u.ctx&&o(u.ctx[L],u.ctx[L]=F)&&(!u.skip_bound&&u.bound[L]&&u.bound[L](F),Z&&yt(t,L)),U}):[],u.update(),Z=!0,ne(u.before_update),u.fragment=i?i(u.ctx):!1,e.target){if(e.hydrate){const L=it(e.target);u.fragment&&u.fragment.l(L),L.forEach(N)}else u.fragment&&u.fragment.c();e.intro&&mt(t.$$.fragment),gt(t,e.target,e.anchor),w()}oe(a)}let Le;typeof HTMLElement=="function"&&(Le=class extends HTMLElement{constructor(e,r,i){super();V(this,"$$ctor");V(this,"$$s");V(this,"$$c");V(this,"$$cn",!1);V(this,"$$d",{});V(this,"$$r",!1);V(this,"$$p_d",{});V(this,"$$l",{});V(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=r,i&&this.attachShadow({mode:"open"})}addEventListener(e,r,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(r),this.$$c){const o=this.$$c.$on(e,r);this.$$l_u.set(r,o)}super.addEventListener(e,r,i)}removeEventListener(e,r,i){if(super.removeEventListener(e,r,i),this.$$c){const o=this.$$l_u.get(r);o&&(o(),this.$$l_u.delete(r))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=C("slot"),l!=="default"&&c(s,"name",l)},m:function(u,Z){j(u,s,Z)},d:function(u){u&&N(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const r={},i=lt(this);for(const l of this.$$s)l in i&&(r[l]=[e(l)]);for(const l of this.attributes){const s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=le(s,l.value,this.$$p_d,"toProp"))}for(const l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:r,$$scope:{ctx:[]}}});const o=()=>{this.$$r=!0;for(const l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){const s=le(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(o),o();for(const l in this.$$l)for(const s of this.$$l[l]){const f=this.$$c.$on(l,s);this.$$l_u.set(s,f)}this.$$l={}}}attributeChangedCallback(e,r,i){var o;this.$$r||(e=this.$$g_p(e),this.$$d[e]=le(e,i,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(r=>this.$$p_d[r].attribute===e||!this.$$p_d[r].attribute&&r.toLowerCase()===e)||e}});function le(t,e,r,i){var l;const o=(l=r[t])==null?void 0:l.type;if(e=o==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!r[t])return e;if(i==="toAttribute")switch(o){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(o){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function wt(t,e,r,i,o,l){let s=class extends Le{constructor(){super(t,r,o),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(f=>(e[f].attribute||f).toLowerCase())}};return Object.keys(e).forEach(f=>{Object.defineProperty(s.prototype,f,{get(){return this.$$c&&f in this.$$c?this.$$c[f]:this.$$d[f]},set(a){var u;a=le(f,a,e),this.$$d[f]=a,(u=this.$$c)==null||u.$set({[f]:a})}})}),i.forEach(f=>{Object.defineProperty(s.prototype,f,{get(){var a;return(a=this.$$c)==null?void 0:a[f]}})}),l&&(s=l(s)),t.element=s,s}class _t{constructor(){V(this,"$$");V(this,"$$set")}$destroy(){bt(this,1),this.$destroy=re}$on(e,r){if(!ke(r))return re;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(r),()=>{const o=i.indexOf(r);o!==-1&&i.splice(o,1)}}$set(e){this.$$set&&!qe(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const pt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(pt);const kt=new TextEncoder;function xt(t){return[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function Et(t,e="SHA-256",r=1e5){const i=Date.now().toString(16);t||(t=Math.round(Math.random()*r));const o=await Re(i,t,e);return{algorithm:e,challenge:o,salt:i,signature:""}}async function Re(t,e,r){return xt(await crypto.subtle.digest(r.toUpperCase(),kt.encode(t+e)))}function $t(t,e,r="SHA-256",i=1e6,o=0){const l=new AbortController,s=Date.now();return{promise:(async()=>{for(let a=o;a<=i;a+=1){if(l.signal.aborted)return null;if(await Re(e,a,r)===t)return{number:a,took:Date.now()-s}}return null})(),controller:l}}var g=(t=>(t.ERROR="error",t.VERIFIED="verified",t.VERIFYING="verifying",t.UNVERIFIED="unverified",t.EXPIRED="expired",t))(g||{});function Ct(t){et(t,"svelte-15co9zy",".altcha.svelte-15co9zy.svelte-15co9zy{background:var(--altcha-color-base, transparent);border:var(--altcha-border-width, 1px) solid var(--altcha-color-border, #a0a0a0);border-radius:var(--altcha-border-radius, 3px);color:var(--altcha-color-text, currentColor);display:flex;flex-direction:column;max-width:var(--altcha-max-width, 260px);overflow:hidden;position:relative;text-align:left}.altcha.svelte-15co9zy.svelte-15co9zy:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha-main.svelte-15co9zy.svelte-15co9zy{align-items:center;display:flex;gap:0.4rem;padding:0.7rem}.altcha-label.svelte-15co9zy.svelte-15co9zy{flex-grow:1}.altcha-label.svelte-15co9zy label.svelte-15co9zy{cursor:pointer}.altcha-logo.svelte-15co9zy.svelte-15co9zy{color:currentColor;opacity:0.3}.altcha-logo.svelte-15co9zy.svelte-15co9zy:hover{opacity:1}.altcha-error.svelte-15co9zy.svelte-15co9zy{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:0.85rem;gap:0.3rem;padding:0 0.7rem 0.7rem}.altcha-footer.svelte-15co9zy.svelte-15co9zy{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:0.75rem;opacity:0.4;padding:0.2rem 0.7rem;text-align:right}.altcha-footer.svelte-15co9zy.svelte-15co9zy:hover{opacity:1}.altcha-footer.svelte-15co9zy>.svelte-15co9zy:first-child{flex-grow:1}.altcha-footer.svelte-15co9zy a{color:currentColor}.altcha-checkbox.svelte-15co9zy.svelte-15co9zy{display:flex;align-items:center;height:24px;width:24px}.altcha-checkbox.svelte-15co9zy input.svelte-15co9zy{width:18px;height:18px;margin:0}.altcha-hidden.svelte-15co9zy.svelte-15co9zy{display:none}.altcha-spinner.svelte-15co9zy.svelte-15co9zy{animation:svelte-15co9zy-altcha-spinner 0.75s infinite linear;transform-origin:center}@keyframes svelte-15co9zy-altcha-spinner{100%{transform:rotate(360deg)}}")}function Ie(t){let e,r,i;return{c(){e=X("svg"),r=X("path"),i=X("path"),c(r,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),c(r,"fill","currentColor"),c(r,"opacity",".25"),c(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),c(i,"fill","currentColor"),c(i,"class","altcha-spinner svelte-15co9zy"),c(e,"width","24"),c(e,"height","24"),c(e,"viewBox","0 0 24 24"),c(e,"xmlns","http://www.w3.org/2000/svg")},m(o,l){j(o,e,l),v(e,r),v(e,i)},d(o){o&&N(e)}}}function Lt(t){let e,r=t[9].label+"",i;return{c(){e=C("label"),c(e,"for",i=t[3]+"_checkbox"),c(e,"class","svelte-15co9zy")},m(o,l){j(o,e,l),e.innerHTML=r},p(o,l){l[0]&512&&r!==(r=o[9].label+"")&&(e.innerHTML=r),l[0]&8&&i!==(i=o[3]+"_checkbox")&&c(e,"for",i)},d(o){o&&N(e)}}}function Rt(t){let e,r=t[9].verifying+"";return{c(){e=C("span")},m(i,o){j(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].verifying+"")&&(e.innerHTML=r)},d(i){i&&N(e)}}}function It(t){let e,r=t[9].verified+"",i,o;return{c(){e=C("span"),i=P(),o=C("input"),c(o,"type","hidden"),c(o,"name",t[3]),o.value=t[4]},m(l,s){j(l,e,s),e.innerHTML=r,j(l,i,s),j(l,o,s)},p(l,s){s[0]&512&&r!==(r=l[9].verified+"")&&(e.innerHTML=r),s[0]&8&&c(o,"name",l[3]),s[0]&16&&(o.value=l[4])},d(l){l&&(N(e),N(i),N(o))}}}function ze(t){let e,r,i,o,l,s,f;return{c(){e=C("div"),r=C("a"),i=X("svg"),o=X("path"),l=X("path"),s=X("path"),c(o,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),c(o,"fill","currentColor"),c(l,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),c(l,"fill","currentColor"),c(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),c(s,"fill","currentColor"),c(i,"width","22"),c(i,"height","22"),c(i,"viewBox","0 0 20 20"),c(i,"fill","none"),c(i,"xmlns","http://www.w3.org/2000/svg"),c(r,"href",Ae),c(r,"target","_blank"),c(r,"class","altcha-logo svelte-15co9zy"),c(r,"aria-label",f=t[9].ariaLinkLabel)},m(a,u){j(a,e,u),v(e,r),v(r,i),v(i,o),v(i,l),v(i,s)},p(a,u){u[0]&512&&f!==(f=a[9].ariaLinkLabel)&&c(r,"aria-label",f)},d(a){a&&N(e)}}}function Ne(t){let e,r,i,o;function l(a,u){return a[5]===g.EXPIRED?Nt:zt}let s=l(t),f=s(t);return{c(){e=C("div"),r=X("svg"),i=X("path"),o=P(),f.c(),c(i,"stroke-linecap","round"),c(i,"stroke-linejoin","round"),c(i,"d","M6 18L18 6M6 6l12 12"),c(r,"width","14"),c(r,"height","14"),c(r,"xmlns","http://www.w3.org/2000/svg"),c(r,"fill","none"),c(r,"viewBox","0 0 24 24"),c(r,"stroke-width","1.5"),c(r,"stroke","currentColor"),c(e,"class","altcha-error svelte-15co9zy")},m(a,u){j(a,e,u),v(e,r),v(r,i),v(e,o),f.m(e,null)},p(a,u){s===(s=l(a))&&f?f.p(a,u):(f.d(1),f=s(a),f&&(f.c(),f.m(e,null)))},d(a){a&&N(e),f.d()}}}function zt(t){let e,r=t[9].error+"";return{c(){e=C("div"),c(e,"title",t[8])},m(i,o){j(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].error+"")&&(e.innerHTML=r),o[0]&256&&c(e,"title",i[8])},d(i){i&&N(e)}}}function Nt(t){let e,r=t[9].expired+"";return{c(){e=C("div"),c(e,"title",t[8])},m(i,o){j(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].expired+"")&&(e.innerHTML=r),o[0]&256&&c(e,"title",i[8])},d(i){i&&N(e)}}}function Se(t){let e,r,i=t[9].footer+"";return{c(){e=C("div"),r=C("div"),c(r,"class","svelte-15co9zy"),c(e,"class","altcha-footer svelte-15co9zy")},m(o,l){j(o,e,l),v(e,r),r.innerHTML=i},p(o,l){l[0]&512&&i!==(i=o[9].footer+"")&&(r.innerHTML=i)},d(o){o&&N(e)}}}function St(t){let e,r,i,o,l,s,f,a,u,Z,L,U,G,F,p=t[5]===g.VERIFYING&&Ie();function Y(d,I){return d[5]===g.VERIFIED?It:d[5]===g.VERIFYING?Rt:Lt}let H=Y(t),k=H(t),x=t[2]!==!0&&ze(t),m=(t[8]||t[5]===g.EXPIRED)&&Ne(t),y=t[9].footer&&t[1]!==!0&&Se(t);return{c(){e=C("div"),r=C("div"),p&&p.c(),i=P(),o=C("div"),l=C("input"),a=P(),u=C("div"),k.c(),Z=P(),x&&x.c(),L=P(),m&&m.c(),U=P(),y&&y.c(),c(l,"type","checkbox"),c(l,"id",s=t[3]+"_checkbox"),l.required=f=t[0]!=="onsubmit",c(l,"class","svelte-15co9zy"),c(o,"class","altcha-checkbox svelte-15co9zy"),xe(o,"altcha-hidden",t[5]===g.VERIFYING),c(u,"class","altcha-label svelte-15co9zy"),c(r,"class","altcha-main svelte-15co9zy"),c(e,"class","altcha svelte-15co9zy"),c(e,"data-state",t[5])},m(d,I){j(d,e,I),v(e,r),p&&p.m(r,null),v(r,i),v(r,o),v(o,l),l.checked=t[6],v(r,a),v(r,u),k.m(u,null),v(r,Z),x&&x.m(r,null),v(e,L),m&&m.m(e,null),v(e,U),y&&y.m(e,null),t[31](e),G||(F=[ue(l,"change",t[30]),ue(l,"change",t[10]),ue(l,"invalid",t[11])],G=!0)},p(d,I){d[5]===g.VERIFYING?p||(p=Ie(),p.c(),p.m(r,i)):p&&(p.d(1),p=null),I[0]&8&&s!==(s=d[3]+"_checkbox")&&c(l,"id",s),I[0]&1&&f!==(f=d[0]!=="onsubmit")&&(l.required=f),I[0]&64&&(l.checked=d[6]),I[0]&32&&xe(o,"altcha-hidden",d[5]===g.VERIFYING),H===(H=Y(d))&&k?k.p(d,I):(k.d(1),k=H(d),k&&(k.c(),k.m(u,null))),d[2]!==!0?x?x.p(d,I):(x=ze(d),x.c(),x.m(r,null)):x&&(x.d(1),x=null),d[8]||d[5]===g.EXPIRED?m?m.p(d,I):(m=Ne(d),m.c(),m.m(e,U)):m&&(m.d(1),m=null),d[9].footer&&d[1]!==!0?y?y.p(d,I):(y=Se(d),y.c(),y.m(e,null)):y&&(y.d(1),y=null),I[0]&32&&c(e,"data-state",d[5])},i:re,o:re,d(d){d&&N(e),p&&p.d(),k.d(),x&&x.d(),m&&m.d(),y&&y.d(),t[31](null),G=!1,ne(F)}}}const je="Visit Altcha.org",Ae="https://altcha.org/";function Te(t){return JSON.parse(t)}function jt(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function At(t,e,r){var We,Pe;let i,o,l,{auto:s=void 0}=e,{blockspam:f=void 0}=e,{challengeurl:a=void 0}=e,{challengejson:u=void 0}=e,{debug:Z=!1}=e,{expire:L=void 0}=e,{hidefooter:U=!1}=e,{hidelogo:G=!1}=e,{name:F="altcha"}=e,{maxnumber:p=1e6}=e,{mockerror:Y=!1}=e,{refetchonexpire:H=!0}=e,{spamfilter:k=!1}=e,{strings:x=void 0}=e,{test:m=!1}=e,{verifyurl:y=void 0}=e,{workers:d=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:I=void 0}=e;const ye=at(),Me=["SHA-256","SHA-384","SHA-512"],Ve=(Pe=(We=document.documentElement.lang)==null?void 0:We.split("-"))==null?void 0:Pe[0];let W=!1,se,b=null,ve=null,B=null,D=g.UNVERIFIED,O=null;ct(()=>{b&&(b.removeEventListener("submit",Ge),b.removeEventListener("reset",De),b.removeEventListener("focusin",Ue),b=null),O&&(clearTimeout(O),O=null)}),st(()=>{R("mounted","0.5.1"),R("workers",d),m&&R("using test mode"),L&&ce(L),s!==void 0&&R("auto",s),b=se.closest("form"),b&&(b.addEventListener("submit",Ge),b.addEventListener("reset",De),s==="onfocus"&&b.addEventListener("focusin",Ue)),s==="onload"&&K()});function R(...n){(Z||n.some(h=>h instanceof Error))&&console[n[0]instanceof Error?"error":"log"]("ALTCHA",...n)}function Ue(n){D===g.UNVERIFIED&&K()}function Ge(n){b&&s==="onsubmit"&&D===g.UNVERIFIED&&(n.preventDefault(),n.stopPropagation(),K().then(()=>{b==null||b.requestSubmit()}))}function De(){ae()}function Oe(n,h){return btoa(JSON.stringify({algorithm:n.algorithm,challenge:n.challenge,number:h.number,salt:n.salt,signature:n.signature,test:m?!0:void 0,took:h.took}))}function Xe(n){if(!n.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(n.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!Me.includes(n.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${Me.join(", ")}`);if(!n.challenge||n.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!n.salt||n.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function Tt(){var n;if(Y)throw R("mocking error"),new Error("Mocked error.");if(i)return R("using provided json data"),i;if(m)return R("generating test challenge",{test:m}),Et(typeof m!="boolean"?+m:void 0);{if(!a)throw new Error("Attribute challengeurl not set.");R("fetching challenge from",a);const h=await fetch(a,{headers:{"x-altcha-spam-filter":k?"1":"0"}});if(h.status!==200)throw new Error(`Server responded with ${h.status}.`);const _=h.headers.get("Expires"),S=h.headers.get("X-Altcha-Config"),A=await h.json(),M=new URLSearchParams((n=A.salt.split("?"))==null?void 0:n[1]),J=M.get("expires")||M.get("expire");if(J){const E=new Date(+J*1e3),$=isNaN(E.getTime())?0:E.getTime()-Date.now();$>0&&ce($)}if(S)try{const E=JSON.parse(S);E&&typeof E=="object"&&(E.verifyurl&&(E.verifyurl=new URL(E.verifyurl,new URL(a)).toString()),He(E))}catch(E){R("unable to configure from X-Altcha-Config",E)}if(!L&&(_!=null&&_.length)){const E=Date.parse(_);if(E){const $=E-Date.now();$>0&&ce($)}}return A}}function Fe(){a&&H&&D===g.VERIFIED?K():ae(g.EXPIRED,l.expired)}async function Zt(n){let h=null;if("Worker"in window){try{h=await Mt(n.challenge,n.salt,n.algorithm,n.maxnumber)}catch(_){R(_)}if((h==null?void 0:h.number)!==void 0)return{data:n,solution:h}}return{data:n,solution:await $t(n.challenge,n.salt,n.algorithm,n.maxnumber||p).promise}}async function Mt(n,h,_,S=typeof m=="number"?m:p,A=Math.ceil(d)){const M=[];if(A<1)throw new Error("Wrong number of workers configured.");if(A>16)throw new Error("Too many workers. Max. 16 allowed workers.");for(let $=0;$<A;$++)M.push(createAltchaWorker(I));const J=Math.ceil(S/A),E=await Promise.all(M.map(($,fe)=>{const Ye=fe*J;return new Promise(Ht=>{$.addEventListener("message",Be=>{if(Be.data)for(const Ke of M)Ke!==$&&Ke.postMessage({type:"abort"});Ht(Be.data)}),$.postMessage({payload:{alg:_,challenge:n,max:Ye+J,salt:h,start:Ye},type:"work"})})}));for(const $ of M)$.terminate();return E.find($=>!!$)||null}function Vt(){[g.UNVERIFIED,g.ERROR,g.EXPIRED].includes(D)?k&&(b==null?void 0:b.reportValidity())===!1?r(6,W=!1):K():r(6,W=!0)}function Ut(){D===g.VERIFYING&&alert(l.waitAlert)}function ce(n){R("expire",n),O&&(clearTimeout(O),O=null),n<1?Fe():O=setTimeout(Fe,n)}function Gt(n){var _;const h=b==null?void 0:b.querySelector(typeof n=="string"?`input[name="${n}"]`:'input[type="email"]:not([data-no-spamfilter])');return((_=h==null?void 0:h.value)==null?void 0:_.slice(h.value.indexOf("@")))||void 0}function Dt(n){return[...(b==null?void 0:b.querySelectorAll(n!=null&&n.length?n.map(_=>`input[name="${_}"]`).join(", "):'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((_,S)=>{const A=S.name,M=S.value.trim();return A&&M&&(_[A]=M),_},{})}async function Ot(n){if(!y)throw new Error("Attribute verifyurl not set.");R("requesting server verification from",y);const h={payload:n};if(k){const{email:A,expectedLanguages:M,expectedCountries:J,fields:E,ipAddress:$,timeZone:fe}=typeof k=="object"?k:{email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,timeZone:void 0};h.ipAddress=$===!1?void 0:$||"auto",h.email=A===!1?void 0:Gt(A),h.fields=E===!1?void 0:Dt(E),h.timeZone=fe===!1?void 0:fe||jt(),h.expectedCountries=J,h.expectedLanguages=M||(Ve?[Ve]:void 0)}const _=await fetch(y,{body:JSON.stringify(h),headers:{"content-type":"application/json"},method:"POST"});if(_.status!==200)throw new Error(`Server responded with ${_.status}.`);const S=await _.json();if(S!=null&&S.payload&&r(4,B=S.payload),ye("serververification",S),f&&S.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function He(n){n.auto!==void 0&&(r(0,s=n.auto),s==="onload"&&K()),n.expire!==void 0&&(ce(n.expire),r(14,L=n.expire)),n.challenge&&(Xe(n.challenge),i=n.challenge),n.challengeurl!==void 0&&r(12,a=n.challengeurl),n.debug!==void 0&&r(13,Z=!!n.debug),n.hidefooter!==void 0&&r(1,U=!!n.hidefooter),n.hidelogo!==void 0&&r(2,G=!!n.hidelogo),n.maxnumber!==void 0&&r(15,p=+n.maxnumber),n.mockerror!==void 0&&r(16,Y=!!n.mockerror),n.name!==void 0&&r(3,F=n.name),n.refetchonexpire!==void 0&&r(17,H=!!n.refetchonexpire),n.spamfilter!==void 0&&r(18,k=typeof n.spamfilter=="object"?n.spamfilter:!!n.spamfilter),n.strings&&r(29,o=n.strings),n.test!==void 0&&r(19,m=typeof n.test=="number"?n.test:!!n.test),n.verifyurl!==void 0&&r(20,y=n.verifyurl),n.workers!==void 0&&r(21,d=+n.workers)}function ae(n=g.UNVERIFIED,h=null){O&&(clearTimeout(O),O=null),r(6,W=!1),r(8,ve=h),r(4,B=null),r(5,D=n)}async function K(){return ae(g.VERIFYING),Tt().then(n=>(Xe(n),R("challenge",n),Zt(n))).then(({data:n,solution:h})=>{if(R("solution",h),(h==null?void 0:h.number)!==void 0){if(y)return Ot(Oe(n,h));r(4,B=Oe(n,h)),R("payload",B)}else throw R("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{ft().then(()=>{r(5,D=g.VERIFIED),r(6,W=!0),R("verified"),ye("verified",{payload:B})})}).catch(n=>{R(n),r(5,D=g.ERROR),r(6,W=!1),r(8,ve=n.message)})}function Xt(){W=this.checked,r(6,W)}function Ft(n){de[n?"unshift":"push"](()=>{se=n,r(7,se)})}return t.$$set=n=>{"auto"in n&&r(0,s=n.auto),"blockspam"in n&&r(22,f=n.blockspam),"challengeurl"in n&&r(12,a=n.challengeurl),"challengejson"in n&&r(23,u=n.challengejson),"debug"in n&&r(13,Z=n.debug),"expire"in n&&r(14,L=n.expire),"hidefooter"in n&&r(1,U=n.hidefooter),"hidelogo"in n&&r(2,G=n.hidelogo),"name"in n&&r(3,F=n.name),"maxnumber"in n&&r(15,p=n.maxnumber),"mockerror"in n&&r(16,Y=n.mockerror),"refetchonexpire"in n&&r(17,H=n.refetchonexpire),"spamfilter"in n&&r(18,k=n.spamfilter),"strings"in n&&r(24,x=n.strings),"test"in n&&r(19,m=n.test),"verifyurl"in n&&r(20,y=n.verifyurl),"workers"in n&&r(21,d=n.workers),"workerurl"in n&&r(25,I=n.workerurl)},t.$$.update=()=>{t.$$.dirty[0]&8388608&&(i=u?Te(u):void 0),t.$$.dirty[0]&16777216&&r(29,o=x?Te(x):{}),t.$$.dirty[0]&536870912&&r(9,l={ariaLinkLabel:je,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by <a href="${Ae}" target="_blank" aria-label="${o.ariaLinkLabel||je}">ALTCHA</a>`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...o}),t.$$.dirty[0]&48&&ye("statechange",{payload:B,state:D})},[s,U,G,F,B,D,W,se,ve,l,Vt,Ut,a,Z,L,p,Y,H,k,m,y,d,f,u,x,I,He,ae,K,o,Xt,Ft]}class Ze extends _t{constructor(e){super(),vt(this,e,At,St,Qe,{auto:0,blockspam:22,challengeurl:12,challengejson:23,debug:13,expire:14,hidefooter:1,hidelogo:2,name:3,maxnumber:15,mockerror:16,refetchonexpire:17,spamfilter:18,strings:24,test:19,verifyurl:20,workers:21,workerurl:25,configure:26,reset:27,verify:28},Ct,[-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),w()}get blockspam(){return this.$$.ctx[22]}set blockspam(e){this.$$set({blockspam:e}),w()}get challengeurl(){return this.$$.ctx[12]}set challengeurl(e){this.$$set({challengeurl:e}),w()}get challengejson(){return this.$$.ctx[23]}set challengejson(e){this.$$set({challengejson:e}),w()}get debug(){return this.$$.ctx[13]}set debug(e){this.$$set({debug:e}),w()}get expire(){return this.$$.ctx[14]}set expire(e){this.$$set({expire:e}),w()}get hidefooter(){return this.$$.ctx[1]}set hidefooter(e){this.$$set({hidefooter:e}),w()}get hidelogo(){return this.$$.ctx[2]}set hidelogo(e){this.$$set({hidelogo:e}),w()}get name(){return this.$$.ctx[3]}set name(e){this.$$set({name:e}),w()}get maxnumber(){return this.$$.ctx[15]}set maxnumber(e){this.$$set({maxnumber:e}),w()}get mockerror(){return this.$$.ctx[16]}set mockerror(e){this.$$set({mockerror:e}),w()}get refetchonexpire(){return this.$$.ctx[17]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),w()}get spamfilter(){return this.$$.ctx[18]}set spamfilter(e){this.$$set({spamfilter:e}),w()}get strings(){return this.$$.ctx[24]}set strings(e){this.$$set({strings:e}),w()}get test(){return this.$$.ctx[19]}set test(e){this.$$set({test:e}),w()}get verifyurl(){return this.$$.ctx[20]}set verifyurl(e){this.$$set({verifyurl:e}),w()}get workers(){return this.$$.ctx[21]}set workers(e){this.$$set({workers:e}),w()}get workerurl(){return this.$$.ctx[25]}set workerurl(e){this.$$set({workerurl:e}),w()}get configure(){return this.$$.ctx[26]}get reset(){return this.$$.ctx[27]}get verify(){return this.$$.ctx[28]}}customElements.define("altcha-widget",wt(Ze,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},expire:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},[],["configure","reset","verify"],!1)),globalThis.createAltchaWorker=t=>t?new Worker(new URL(t)):new Je,T.Altcha=Ze,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})});
@@ -822,7 +822,7 @@ function Vt(r, e, t) {
822
822
  ht(() => {
823
823
  m && (m.removeEventListener("submit", ye), m.removeEventListener("reset", ve), m.removeEventListener("focusin", we), m = null), H && (clearTimeout(H), H = null);
824
824
  }), at(() => {
825
- L("mounted", "0.5.0"), L("workers", d), g && L("using test mode"), C && ie(C), s !== void 0 && L("auto", s), m = ne.closest("form"), m && (m.addEventListener("submit", ye), m.addEventListener("reset", ve), s === "onfocus" && m.addEventListener("focusin", we)), s === "onload" && X();
825
+ L("mounted", "0.5.1"), L("workers", d), g && L("using test mode"), C && ie(C), s !== void 0 && L("auto", s), m = ne.closest("form"), m && (m.addEventListener("submit", ye), m.addEventListener("reset", ve), s === "onfocus" && m.addEventListener("focusin", we)), s === "onload" && X();
826
826
  });
827
827
  function L(...n) {
828
828
  (N || n.some((h) => h instanceof Error)) && console[n[0] instanceof Error ? "error" : "log"]("ALTCHA", ...n);
@@ -969,7 +969,7 @@ function Vt(r, e, t) {
969
969
  }
970
970
  function Ke(n) {
971
971
  return [
972
- ...(m == null ? void 0 : m.querySelectorAll(n != null && n.length ? n.map((w) => `input[name="${w}"]`).join(", ") : 'input[type="email"]:not([data-no-spamfilter]), input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || []
972
+ ...(m == null ? void 0 : m.querySelectorAll(n != null && n.length ? n.map((w) => `input[name="${w}"]`).join(", ") : 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || []
973
973
  ].reduce(
974
974
  (w, R) => {
975
975
  const T = R.name, S = R.value.trim();
@@ -1 +1 @@
1
- (function(N,R){typeof exports=="object"&&typeof module<"u"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(N=typeof globalThis<"u"?globalThis:N||self,R(N.altcha={}))})(this,function(N){"use strict";var Pt=Object.defineProperty;var Ht=(N,R,P)=>R in N?Pt(N,R,{enumerable:!0,configurable:!0,writable:!0,value:P}):N[R]=P;var O=(N,R,P)=>Ht(N,typeof R!="symbol"?R+"":R,P);var R=typeof document<"u"?document.currentScript:null;function P(){}function we(r){return r()}function ye(){return Object.create(null)}function re(r){r.forEach(we)}function pe(r){return typeof r=="function"}function Je(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function We(r){return Object.keys(r).length===0}function w(r,e){r.appendChild(e)}function j(r,e,t){r.insertBefore(e,t||null)}function T(r){r.parentNode&&r.parentNode.removeChild(r)}function I(r){return document.createElement(r)}function Z(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function ze(r){return document.createTextNode(r)}function Y(){return ze(" ")}function ue(r,e,t,i){return r.addEventListener(e,t,i),()=>r.removeEventListener(e,t,i)}function f(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function Ke(r){return Array.from(r.childNodes)}function ve(r,e,t){r.classList.toggle(e,!!t)}function Qe(r,e,{bubbles:t=!1,cancelable:i=!1}={}){return new CustomEvent(r,{detail:e,bubbles:t,cancelable:i})}function et(r){const e={};return r.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let ne;function ie(r){ne=r}function ae(){if(!ne)throw new Error("Function called outside component initialization");return ne}function tt(r){ae().$$.on_mount.push(r)}function rt(r){ae().$$.on_destroy.push(r)}function nt(){const r=ae();return(e,t,{cancelable:i=!1}={})=>{const l=r.$$.callbacks[e];if(l){const o=Qe(e,t,{cancelable:i});return l.slice().forEach(s=>{s.call(r,o)}),!o.defaultPrevented}return!0}}const Q=[],he=[];let ee=[];const ke=[],Ee=Promise.resolve();let de=!1;function $e(){de||(de=!0,Ee.then(y))}function it(){return $e(),Ee}function ge(r){ee.push(r)}const me=new Set;let te=0;function y(){if(te!==0)return;const r=ne;do{try{for(;te<Q.length;){const e=Q[te];te++,ie(e),lt(e.$$)}}catch(e){throw Q.length=0,te=0,e}for(ie(null),Q.length=0,te=0;he.length;)he.pop()();for(let e=0;e<ee.length;e+=1){const t=ee[e];me.has(t)||(me.add(t),t())}ee.length=0}while(Q.length);for(;ke.length;)ke.pop()();de=!1,me.clear(),ie(r)}function lt(r){if(r.fragment!==null){r.update(),re(r.before_update);const e=r.dirty;r.dirty=[-1],r.fragment&&r.fragment.p(r.ctx,e),r.after_update.forEach(ge)}}function ot(r){const e=[],t=[];ee.forEach(i=>r.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),ee=e}const st=new Set;function ft(r,e){r&&r.i&&(st.delete(r),r.i(e))}function ct(r,e,t){const{fragment:i,after_update:l}=r.$$;i&&i.m(e,t),ge(()=>{const o=r.$$.on_mount.map(we).filter(pe);r.$$.on_destroy?r.$$.on_destroy.push(...o):re(o),r.$$.on_mount=[]}),l.forEach(ge)}function ut(r,e){const t=r.$$;t.fragment!==null&&(ot(t.after_update),re(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function at(r,e){r.$$.dirty[0]===-1&&(Q.push(r),$e(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<<e%31}function ht(r,e,t,i,l,o,s=null,u=[-1]){const c=ne;ie(r);const a=r.$$={fragment:null,ctx:[],props:o,update:P,not_equal:l,bound:ye(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(c?c.$$.context:[])),callbacks:ye(),dirty:u,skip_bound:!1,root:e.target||c.$$.root};s&&s(a.root);let D=!1;if(a.ctx=t?t(r,e.props||{},(C,H,...F)=>{const q=F.length?F[0]:H;return a.ctx&&l(a.ctx[C],a.ctx[C]=q)&&(!a.skip_bound&&a.bound[C]&&a.bound[C](q),D&&at(r,C)),H}):[],a.update(),D=!0,re(a.before_update),a.fragment=i?i(a.ctx):!1,e.target){if(e.hydrate){const C=Ke(e.target);a.fragment&&a.fragment.l(C),C.forEach(T)}else a.fragment&&a.fragment.c();e.intro&&ft(r.$$.fragment),ct(r,e.target,e.anchor),y()}ie(c)}let xe;typeof HTMLElement=="function"&&(xe=class extends HTMLElement{constructor(e,t,i){super();O(this,"$$ctor");O(this,"$$s");O(this,"$$c");O(this,"$$cn",!1);O(this,"$$d",{});O(this,"$$r",!1);O(this,"$$p_d",{});O(this,"$$l",{});O(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const l=this.$$c.$on(e,t);this.$$l_u.set(t,l)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){const l=this.$$l_u.get(t);l&&(l(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(o){return()=>{let s;return{c:function(){s=I("slot"),o!=="default"&&f(s,"name",o)},m:function(a,D){j(a,s,D)},d:function(a){a&&T(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},i=et(this);for(const o of this.$$s)o in i&&(t[o]=[e(o)]);for(const o of this.attributes){const s=this.$$g_p(o.name);s in this.$$d||(this.$$d[s]=le(s,o.value,this.$$p_d,"toProp"))}for(const o in this.$$p_d)!(o in this.$$d)&&this[o]!==void 0&&(this.$$d[o]=this[o],delete this[o]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const l=()=>{this.$$r=!0;for(const o in this.$$p_d)if(this.$$d[o]=this.$$c.$$.ctx[this.$$c.$$.props[o]],this.$$p_d[o].reflect){const s=le(o,this.$$d[o],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[o].attribute||o):this.setAttribute(this.$$p_d[o].attribute||o,s)}this.$$r=!1};this.$$c.$$.after_update.push(l),l();for(const o in this.$$l)for(const s of this.$$l[o]){const u=this.$$c.$on(o,s);this.$$l_u.set(s,u)}this.$$l={}}}attributeChangedCallback(e,t,i){var l;this.$$r||(e=this.$$g_p(e),this.$$d[e]=le(e,i,this.$$p_d,"toProp"),(l=this.$$c)==null||l.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function le(r,e,t,i){var o;const l=(o=t[r])==null?void 0:o.type;if(e=l==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[r])return e;if(i==="toAttribute")switch(l){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(l){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function dt(r,e,t,i,l,o){let s=class extends xe{constructor(){super(r,t,l),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(u=>(e[u].attribute||u).toLowerCase())}};return Object.keys(e).forEach(u=>{Object.defineProperty(s.prototype,u,{get(){return this.$$c&&u in this.$$c?this.$$c[u]:this.$$d[u]},set(c){var a;c=le(u,c,e),this.$$d[u]=c,(a=this.$$c)==null||a.$set({[u]:c})}})}),i.forEach(u=>{Object.defineProperty(s.prototype,u,{get(){var c;return(c=this.$$c)==null?void 0:c[u]}})}),o&&(s=o(s)),r.element=s,s}class gt{constructor(){O(this,"$$");O(this,"$$set")}$destroy(){ut(this,1),this.$destroy=P}$on(e,t){if(!pe(t))return P;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const l=i.indexOf(t);l!==-1&&i.splice(l,1)}}$set(e){this.$$set&&!We(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const mt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(mt);const bt=new TextEncoder;function _t(r){return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function wt(r,e="SHA-256",t=1e5){const i=Date.now().toString(16);r||(r=Math.round(Math.random()*t));const l=await Ce(i,r,e);return{algorithm:e,challenge:l,salt:i,signature:""}}async function Ce(r,e,t){return _t(await crypto.subtle.digest(t.toUpperCase(),bt.encode(r+e)))}function yt(r,e,t="SHA-256",i=1e6,l=0){const o=new AbortController,s=Date.now();return{promise:(async()=>{for(let c=l;c<=i;c+=1){if(o.signal.aborted)return null;if(await Ce(e,c,t)===r)return{number:c,took:Date.now()-s}}return null})(),controller:o}}var m=(r=>(r.ERROR="error",r.VERIFIED="verified",r.VERIFYING="verifying",r.UNVERIFIED="unverified",r.EXPIRED="expired",r))(m||{});function Le(r){let e,t,i;return{c(){e=Z("svg"),t=Z("path"),i=Z("path"),f(t,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),f(t,"fill","currentColor"),f(t,"opacity",".25"),f(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),f(i,"fill","currentColor"),f(i,"class","altcha-spinner"),f(e,"width","24"),f(e,"height","24"),f(e,"viewBox","0 0 24 24"),f(e,"xmlns","http://www.w3.org/2000/svg")},m(l,o){j(l,e,o),w(e,t),w(e,i)},d(l){l&&T(e)}}}function pt(r){let e,t=r[9].label+"",i;return{c(){e=I("label"),f(e,"for",i=r[3]+"_checkbox")},m(l,o){j(l,e,o),e.innerHTML=t},p(l,o){o[0]&512&&t!==(t=l[9].label+"")&&(e.innerHTML=t),o[0]&8&&i!==(i=l[3]+"_checkbox")&&f(e,"for",i)},d(l){l&&T(e)}}}function vt(r){let e,t=r[9].verifying+"";return{c(){e=I("span")},m(i,l){j(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].verifying+"")&&(e.innerHTML=t)},d(i){i&&T(e)}}}function kt(r){let e,t=r[9].verified+"",i,l;return{c(){e=I("span"),i=Y(),l=I("input"),f(l,"type","hidden"),f(l,"name",r[3]),l.value=r[4]},m(o,s){j(o,e,s),e.innerHTML=t,j(o,i,s),j(o,l,s)},p(o,s){s[0]&512&&t!==(t=o[9].verified+"")&&(e.innerHTML=t),s[0]&8&&f(l,"name",o[3]),s[0]&16&&(l.value=o[4])},d(o){o&&(T(e),T(i),T(l))}}}function Ie(r){let e,t,i,l,o,s,u;return{c(){e=I("div"),t=I("a"),i=Z("svg"),l=Z("path"),o=Z("path"),s=Z("path"),f(l,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),f(l,"fill","currentColor"),f(o,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),f(o,"fill","currentColor"),f(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),f(s,"fill","currentColor"),f(i,"width","22"),f(i,"height","22"),f(i,"viewBox","0 0 20 20"),f(i,"fill","none"),f(i,"xmlns","http://www.w3.org/2000/svg"),f(t,"href",Me),f(t,"target","_blank"),f(t,"class","altcha-logo"),f(t,"aria-label",u=r[9].ariaLinkLabel)},m(c,a){j(c,e,a),w(e,t),w(t,i),w(i,l),w(i,o),w(i,s)},p(c,a){a[0]&512&&u!==(u=c[9].ariaLinkLabel)&&f(t,"aria-label",u)},d(c){c&&T(e)}}}function Ae(r){let e,t,i,l;function o(c,a){return c[5]===m.EXPIRED?$t:Et}let s=o(r),u=s(r);return{c(){e=I("div"),t=Z("svg"),i=Z("path"),l=Y(),u.c(),f(i,"stroke-linecap","round"),f(i,"stroke-linejoin","round"),f(i,"d","M6 18L18 6M6 6l12 12"),f(t,"width","14"),f(t,"height","14"),f(t,"xmlns","http://www.w3.org/2000/svg"),f(t,"fill","none"),f(t,"viewBox","0 0 24 24"),f(t,"stroke-width","1.5"),f(t,"stroke","currentColor"),f(e,"class","altcha-error")},m(c,a){j(c,e,a),w(e,t),w(t,i),w(e,l),u.m(e,null)},p(c,a){s===(s=o(c))&&u?u.p(c,a):(u.d(1),u=s(c),u&&(u.c(),u.m(e,null)))},d(c){c&&T(e),u.d()}}}function Et(r){let e,t=r[9].error+"";return{c(){e=I("div"),f(e,"title",r[8])},m(i,l){j(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].error+"")&&(e.innerHTML=t),l[0]&256&&f(e,"title",i[8])},d(i){i&&T(e)}}}function $t(r){let e,t=r[9].expired+"";return{c(){e=I("div"),f(e,"title",r[8])},m(i,l){j(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].expired+"")&&(e.innerHTML=t),l[0]&256&&f(e,"title",i[8])},d(i){i&&T(e)}}}function Re(r){let e,t,i=r[9].footer+"";return{c(){e=I("div"),t=I("div"),f(e,"class","altcha-footer")},m(l,o){j(l,e,o),w(e,t),t.innerHTML=i},p(l,o){o[0]&512&&i!==(i=l[9].footer+"")&&(t.innerHTML=i)},d(l){l&&T(e)}}}function xt(r){let e,t,i,l,o,s,u,c,a,D,C,H,F,q,v=r[5]===m.VERIFYING&&Le();function J(d,A){return d[5]===m.VERIFIED?kt:d[5]===m.VERIFYING?vt:pt}let G=J(r),k=G(r),E=r[2]!==!0&&Ie(r),g=(r[8]||r[5]===m.EXPIRED)&&Ae(r),_=r[9].footer&&r[1]!==!0&&Re(r);return{c(){e=I("div"),t=I("div"),v&&v.c(),i=Y(),l=I("div"),o=I("input"),c=Y(),a=I("div"),k.c(),D=Y(),E&&E.c(),C=Y(),g&&g.c(),H=Y(),_&&_.c(),f(o,"type","checkbox"),f(o,"id",s=r[3]+"_checkbox"),o.required=u=r[0]!=="onsubmit",f(l,"class","altcha-checkbox"),ve(l,"altcha-hidden",r[5]===m.VERIFYING),f(a,"class","altcha-label"),f(t,"class","altcha-main"),f(e,"class","altcha"),f(e,"data-state",r[5])},m(d,A){j(d,e,A),w(e,t),v&&v.m(t,null),w(t,i),w(t,l),w(l,o),o.checked=r[6],w(t,c),w(t,a),k.m(a,null),w(t,D),E&&E.m(t,null),w(e,C),g&&g.m(e,null),w(e,H),_&&_.m(e,null),r[31](e),F||(q=[ue(o,"change",r[30]),ue(o,"change",r[10]),ue(o,"invalid",r[11])],F=!0)},p(d,A){d[5]===m.VERIFYING?v||(v=Le(),v.c(),v.m(t,i)):v&&(v.d(1),v=null),A[0]&8&&s!==(s=d[3]+"_checkbox")&&f(o,"id",s),A[0]&1&&u!==(u=d[0]!=="onsubmit")&&(o.required=u),A[0]&64&&(o.checked=d[6]),A[0]&32&&ve(l,"altcha-hidden",d[5]===m.VERIFYING),G===(G=J(d))&&k?k.p(d,A):(k.d(1),k=G(d),k&&(k.c(),k.m(a,null))),d[2]!==!0?E?E.p(d,A):(E=Ie(d),E.c(),E.m(t,null)):E&&(E.d(1),E=null),d[8]||d[5]===m.EXPIRED?g?g.p(d,A):(g=Ae(d),g.c(),g.m(e,H)):g&&(g.d(1),g=null),d[9].footer&&d[1]!==!0?_?_.p(d,A):(_=Re(d),_.c(),_.m(e,null)):_&&(_.d(1),_=null),A[0]&32&&f(e,"data-state",d[5])},i:P,o:P,d(d){d&&T(e),v&&v.d(),k.d(),E&&E.d(),g&&g.d(),_&&_.d(),r[31](null),F=!1,re(q)}}}const Te="Visit Altcha.org",Me="https://altcha.org/";function je(r){return JSON.parse(r)}function Ct(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function Lt(r,e,t){var Ze,qe;let i,l,o,{auto:s=void 0}=e,{blockspam:u=void 0}=e,{challengeurl:c=void 0}=e,{challengejson:a=void 0}=e,{debug:D=!1}=e,{expire:C=void 0}=e,{hidefooter:H=!1}=e,{hidelogo:F=!1}=e,{name:q="altcha"}=e,{maxnumber:v=1e6}=e,{mockerror:J=!1}=e,{refetchonexpire:G=!0}=e,{spamfilter:k=!1}=e,{strings:E=void 0}=e,{test:g=!1}=e,{verifyurl:_=void 0}=e,{workers:d=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:A=void 0}=e;const be=nt(),Ne=["SHA-256","SHA-384","SHA-512"],De=(qe=(Ze=document.documentElement.lang)==null?void 0:Ze.split("-"))==null?void 0:qe[0];let X=!1,oe,b=null,_e=null,W=null,U=m.UNVERIFIED,B=null;rt(()=>{b&&(b.removeEventListener("submit",Oe),b.removeEventListener("reset",Pe),b.removeEventListener("focusin",Ve),b=null),B&&(clearTimeout(B),B=null)}),tt(()=>{L("mounted","0.5.0"),L("workers",d),g&&L("using test mode"),C&&se(C),s!==void 0&&L("auto",s),b=oe.closest("form"),b&&(b.addEventListener("submit",Oe),b.addEventListener("reset",Pe),s==="onfocus"&&b.addEventListener("focusin",Ve)),s==="onload"&&z()});function L(...n){(D||n.some(h=>h instanceof Error))&&console[n[0]instanceof Error?"error":"log"]("ALTCHA",...n)}function Ve(n){U===m.UNVERIFIED&&z()}function Oe(n){b&&s==="onsubmit"&&U===m.UNVERIFIED&&(n.preventDefault(),n.stopPropagation(),z().then(()=>{b==null||b.requestSubmit()}))}function Pe(){fe()}function He(n,h){return btoa(JSON.stringify({algorithm:n.algorithm,challenge:n.challenge,number:h.number,salt:n.salt,signature:n.signature,test:g?!0:void 0,took:h.took}))}function Fe(n){if(!n.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(n.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!Ne.includes(n.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${Ne.join(", ")}`);if(!n.challenge||n.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!n.salt||n.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function It(){var n;if(J)throw L("mocking error"),new Error("Mocked error.");if(i)return L("using provided json data"),i;if(g)return L("generating test challenge",{test:g}),wt(typeof g!="boolean"?+g:void 0);{if(!c)throw new Error("Attribute challengeurl not set.");L("fetching challenge from",c);const h=await fetch(c,{headers:{"x-altcha-spam-filter":k?"1":"0"}});if(h.status!==200)throw new Error(`Server responded with ${h.status}.`);const p=h.headers.get("Expires"),M=h.headers.get("X-Altcha-Config"),S=await h.json(),V=new URLSearchParams((n=S.salt.split("?"))==null?void 0:n[1]),K=V.get("expires")||V.get("expire");if(K){const $=new Date(+K*1e3),x=isNaN($.getTime())?0:$.getTime()-Date.now();x>0&&se(x)}if(M)try{const $=JSON.parse(M);$&&typeof $=="object"&&($.verifyurl&&($.verifyurl=new URL($.verifyurl,new URL(c)).toString()),Be($))}catch($){L("unable to configure from X-Altcha-Config",$)}if(!C&&(p!=null&&p.length)){const $=Date.parse(p);if($){const x=$-Date.now();x>0&&se(x)}}return S}}function Ue(){c&&G&&U===m.VERIFIED?z():fe(m.EXPIRED,o.expired)}async function At(n){let h=null;if("Worker"in window){try{h=await Rt(n.challenge,n.salt,n.algorithm,n.maxnumber)}catch(p){L(p)}if((h==null?void 0:h.number)!==void 0)return{data:n,solution:h}}return{data:n,solution:await yt(n.challenge,n.salt,n.algorithm,n.maxnumber||v).promise}}async function Rt(n,h,p,M=typeof g=="number"?g:v,S=Math.ceil(d)){const V=[];if(S<1)throw new Error("Wrong number of workers configured.");if(S>16)throw new Error("Too many workers. Max. 16 allowed workers.");for(let x=0;x<S;x++)V.push(createAltchaWorker(A));const K=Math.ceil(M/S),$=await Promise.all(V.map((x,ce)=>{const Ge=ce*K;return new Promise(Ot=>{x.addEventListener("message",Xe=>{if(Xe.data)for(const Ye of V)Ye!==x&&Ye.postMessage({type:"abort"});Ot(Xe.data)}),x.postMessage({payload:{alg:p,challenge:n,max:Ge+K,salt:h,start:Ge},type:"work"})})}));for(const x of V)x.terminate();return $.find(x=>!!x)||null}function Tt(){[m.UNVERIFIED,m.ERROR,m.EXPIRED].includes(U)?k&&(b==null?void 0:b.reportValidity())===!1?t(6,X=!1):z():t(6,X=!0)}function Mt(){U===m.VERIFYING&&alert(o.waitAlert)}function se(n){L("expire",n),B&&(clearTimeout(B),B=null),n<1?Ue():B=setTimeout(Ue,n)}function jt(n){var p;const h=b==null?void 0:b.querySelector(typeof n=="string"?`input[name="${n}"]`:'input[type="email"]:not([data-no-spamfilter])');return((p=h==null?void 0:h.value)==null?void 0:p.slice(h.value.indexOf("@")))||void 0}function St(n){return[...(b==null?void 0:b.querySelectorAll(n!=null&&n.length?n.map(p=>`input[name="${p}"]`).join(", "):'input[type="email"]:not([data-no-spamfilter]), input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((p,M)=>{const S=M.name,V=M.value.trim();return S&&V&&(p[S]=V),p},{})}async function Nt(n){if(!_)throw new Error("Attribute verifyurl not set.");L("requesting server verification from",_);const h={payload:n};if(k){const{email:S,expectedLanguages:V,expectedCountries:K,fields:$,ipAddress:x,timeZone:ce}=typeof k=="object"?k:{email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,timeZone:void 0};h.ipAddress=x===!1?void 0:x||"auto",h.email=S===!1?void 0:jt(S),h.fields=$===!1?void 0:St($),h.timeZone=ce===!1?void 0:ce||Ct(),h.expectedCountries=K,h.expectedLanguages=V||(De?[De]:void 0)}const p=await fetch(_,{body:JSON.stringify(h),headers:{"content-type":"application/json"},method:"POST"});if(p.status!==200)throw new Error(`Server responded with ${p.status}.`);const M=await p.json();if(M!=null&&M.payload&&t(4,W=M.payload),be("serververification",M),u&&M.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function Be(n){n.auto!==void 0&&(t(0,s=n.auto),s==="onload"&&z()),n.expire!==void 0&&(se(n.expire),t(14,C=n.expire)),n.challenge&&(Fe(n.challenge),i=n.challenge),n.challengeurl!==void 0&&t(12,c=n.challengeurl),n.debug!==void 0&&t(13,D=!!n.debug),n.hidefooter!==void 0&&t(1,H=!!n.hidefooter),n.hidelogo!==void 0&&t(2,F=!!n.hidelogo),n.maxnumber!==void 0&&t(15,v=+n.maxnumber),n.mockerror!==void 0&&t(16,J=!!n.mockerror),n.name!==void 0&&t(3,q=n.name),n.refetchonexpire!==void 0&&t(17,G=!!n.refetchonexpire),n.spamfilter!==void 0&&t(18,k=typeof n.spamfilter=="object"?n.spamfilter:!!n.spamfilter),n.strings&&t(29,l=n.strings),n.test!==void 0&&t(19,g=typeof n.test=="number"?n.test:!!n.test),n.verifyurl!==void 0&&t(20,_=n.verifyurl),n.workers!==void 0&&t(21,d=+n.workers)}function fe(n=m.UNVERIFIED,h=null){B&&(clearTimeout(B),B=null),t(6,X=!1),t(8,_e=h),t(4,W=null),t(5,U=n)}async function z(){return fe(m.VERIFYING),It().then(n=>(Fe(n),L("challenge",n),At(n))).then(({data:n,solution:h})=>{if(L("solution",h),(h==null?void 0:h.number)!==void 0){if(_)return Nt(He(n,h));t(4,W=He(n,h)),L("payload",W)}else throw L("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{it().then(()=>{t(5,U=m.VERIFIED),t(6,X=!0),L("verified"),be("verified",{payload:W})})}).catch(n=>{L(n),t(5,U=m.ERROR),t(6,X=!1),t(8,_e=n.message)})}function Dt(){X=this.checked,t(6,X)}function Vt(n){he[n?"unshift":"push"](()=>{oe=n,t(7,oe)})}return r.$$set=n=>{"auto"in n&&t(0,s=n.auto),"blockspam"in n&&t(22,u=n.blockspam),"challengeurl"in n&&t(12,c=n.challengeurl),"challengejson"in n&&t(23,a=n.challengejson),"debug"in n&&t(13,D=n.debug),"expire"in n&&t(14,C=n.expire),"hidefooter"in n&&t(1,H=n.hidefooter),"hidelogo"in n&&t(2,F=n.hidelogo),"name"in n&&t(3,q=n.name),"maxnumber"in n&&t(15,v=n.maxnumber),"mockerror"in n&&t(16,J=n.mockerror),"refetchonexpire"in n&&t(17,G=n.refetchonexpire),"spamfilter"in n&&t(18,k=n.spamfilter),"strings"in n&&t(24,E=n.strings),"test"in n&&t(19,g=n.test),"verifyurl"in n&&t(20,_=n.verifyurl),"workers"in n&&t(21,d=n.workers),"workerurl"in n&&t(25,A=n.workerurl)},r.$$.update=()=>{r.$$.dirty[0]&8388608&&(i=a?je(a):void 0),r.$$.dirty[0]&16777216&&t(29,l=E?je(E):{}),r.$$.dirty[0]&536870912&&t(9,o={ariaLinkLabel:Te,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by <a href="${Me}" target="_blank" aria-label="${l.ariaLinkLabel||Te}">ALTCHA</a>`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...l}),r.$$.dirty[0]&48&&be("statechange",{payload:W,state:U})},[s,H,F,q,W,U,X,oe,_e,o,Tt,Mt,c,D,C,v,J,G,k,g,_,d,u,a,E,A,Be,fe,z,l,Dt,Vt]}class Se extends gt{constructor(e){super(),ht(this,e,Lt,xt,Je,{auto:0,blockspam:22,challengeurl:12,challengejson:23,debug:13,expire:14,hidefooter:1,hidelogo:2,name:3,maxnumber:15,mockerror:16,refetchonexpire:17,spamfilter:18,strings:24,test:19,verifyurl:20,workers:21,workerurl:25,configure:26,reset:27,verify:28},null,[-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),y()}get blockspam(){return this.$$.ctx[22]}set blockspam(e){this.$$set({blockspam:e}),y()}get challengeurl(){return this.$$.ctx[12]}set challengeurl(e){this.$$set({challengeurl:e}),y()}get challengejson(){return this.$$.ctx[23]}set challengejson(e){this.$$set({challengejson:e}),y()}get debug(){return this.$$.ctx[13]}set debug(e){this.$$set({debug:e}),y()}get expire(){return this.$$.ctx[14]}set expire(e){this.$$set({expire:e}),y()}get hidefooter(){return this.$$.ctx[1]}set hidefooter(e){this.$$set({hidefooter:e}),y()}get hidelogo(){return this.$$.ctx[2]}set hidelogo(e){this.$$set({hidelogo:e}),y()}get name(){return this.$$.ctx[3]}set name(e){this.$$set({name:e}),y()}get maxnumber(){return this.$$.ctx[15]}set maxnumber(e){this.$$set({maxnumber:e}),y()}get mockerror(){return this.$$.ctx[16]}set mockerror(e){this.$$set({mockerror:e}),y()}get refetchonexpire(){return this.$$.ctx[17]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),y()}get spamfilter(){return this.$$.ctx[18]}set spamfilter(e){this.$$set({spamfilter:e}),y()}get strings(){return this.$$.ctx[24]}set strings(e){this.$$set({strings:e}),y()}get test(){return this.$$.ctx[19]}set test(e){this.$$set({test:e}),y()}get verifyurl(){return this.$$.ctx[20]}set verifyurl(e){this.$$set({verifyurl:e}),y()}get workers(){return this.$$.ctx[21]}set workers(e){this.$$set({workers:e}),y()}get workerurl(){return this.$$.ctx[25]}set workerurl(e){this.$$set({workerurl:e}),y()}get configure(){return this.$$.ctx[26]}get reset(){return this.$$.ctx[27]}get verify(){return this.$$.ctx[28]}}customElements.define("altcha-widget",dt(Se,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},expire:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},[],["configure","reset","verify"],!1)),globalThis.createAltchaWorker=r=>new Worker(new URL(r||"./worker.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:R&&R.src||new URL("altcha.umd.cjs",document.baseURI).href)),N.Altcha=Se,Object.defineProperty(N,Symbol.toStringTag,{value:"Module"})});
1
+ (function(N,R){typeof exports=="object"&&typeof module<"u"?R(exports):typeof define=="function"&&define.amd?define(["exports"],R):(N=typeof globalThis<"u"?globalThis:N||self,R(N.altcha={}))})(this,function(N){"use strict";var Pt=Object.defineProperty;var Ht=(N,R,P)=>R in N?Pt(N,R,{enumerable:!0,configurable:!0,writable:!0,value:P}):N[R]=P;var O=(N,R,P)=>Ht(N,typeof R!="symbol"?R+"":R,P);var R=typeof document<"u"?document.currentScript:null;function P(){}function we(r){return r()}function ye(){return Object.create(null)}function re(r){r.forEach(we)}function pe(r){return typeof r=="function"}function Je(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function We(r){return Object.keys(r).length===0}function w(r,e){r.appendChild(e)}function j(r,e,t){r.insertBefore(e,t||null)}function T(r){r.parentNode&&r.parentNode.removeChild(r)}function I(r){return document.createElement(r)}function Z(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function ze(r){return document.createTextNode(r)}function Y(){return ze(" ")}function ue(r,e,t,i){return r.addEventListener(e,t,i),()=>r.removeEventListener(e,t,i)}function f(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function Ke(r){return Array.from(r.childNodes)}function ve(r,e,t){r.classList.toggle(e,!!t)}function Qe(r,e,{bubbles:t=!1,cancelable:i=!1}={}){return new CustomEvent(r,{detail:e,bubbles:t,cancelable:i})}function et(r){const e={};return r.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let ne;function ie(r){ne=r}function ae(){if(!ne)throw new Error("Function called outside component initialization");return ne}function tt(r){ae().$$.on_mount.push(r)}function rt(r){ae().$$.on_destroy.push(r)}function nt(){const r=ae();return(e,t,{cancelable:i=!1}={})=>{const l=r.$$.callbacks[e];if(l){const o=Qe(e,t,{cancelable:i});return l.slice().forEach(s=>{s.call(r,o)}),!o.defaultPrevented}return!0}}const Q=[],he=[];let ee=[];const ke=[],Ee=Promise.resolve();let de=!1;function $e(){de||(de=!0,Ee.then(y))}function it(){return $e(),Ee}function ge(r){ee.push(r)}const me=new Set;let te=0;function y(){if(te!==0)return;const r=ne;do{try{for(;te<Q.length;){const e=Q[te];te++,ie(e),lt(e.$$)}}catch(e){throw Q.length=0,te=0,e}for(ie(null),Q.length=0,te=0;he.length;)he.pop()();for(let e=0;e<ee.length;e+=1){const t=ee[e];me.has(t)||(me.add(t),t())}ee.length=0}while(Q.length);for(;ke.length;)ke.pop()();de=!1,me.clear(),ie(r)}function lt(r){if(r.fragment!==null){r.update(),re(r.before_update);const e=r.dirty;r.dirty=[-1],r.fragment&&r.fragment.p(r.ctx,e),r.after_update.forEach(ge)}}function ot(r){const e=[],t=[];ee.forEach(i=>r.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),ee=e}const st=new Set;function ft(r,e){r&&r.i&&(st.delete(r),r.i(e))}function ct(r,e,t){const{fragment:i,after_update:l}=r.$$;i&&i.m(e,t),ge(()=>{const o=r.$$.on_mount.map(we).filter(pe);r.$$.on_destroy?r.$$.on_destroy.push(...o):re(o),r.$$.on_mount=[]}),l.forEach(ge)}function ut(r,e){const t=r.$$;t.fragment!==null&&(ot(t.after_update),re(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function at(r,e){r.$$.dirty[0]===-1&&(Q.push(r),$e(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<<e%31}function ht(r,e,t,i,l,o,s=null,u=[-1]){const c=ne;ie(r);const a=r.$$={fragment:null,ctx:[],props:o,update:P,not_equal:l,bound:ye(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(c?c.$$.context:[])),callbacks:ye(),dirty:u,skip_bound:!1,root:e.target||c.$$.root};s&&s(a.root);let D=!1;if(a.ctx=t?t(r,e.props||{},(C,H,...F)=>{const q=F.length?F[0]:H;return a.ctx&&l(a.ctx[C],a.ctx[C]=q)&&(!a.skip_bound&&a.bound[C]&&a.bound[C](q),D&&at(r,C)),H}):[],a.update(),D=!0,re(a.before_update),a.fragment=i?i(a.ctx):!1,e.target){if(e.hydrate){const C=Ke(e.target);a.fragment&&a.fragment.l(C),C.forEach(T)}else a.fragment&&a.fragment.c();e.intro&&ft(r.$$.fragment),ct(r,e.target,e.anchor),y()}ie(c)}let xe;typeof HTMLElement=="function"&&(xe=class extends HTMLElement{constructor(e,t,i){super();O(this,"$$ctor");O(this,"$$s");O(this,"$$c");O(this,"$$cn",!1);O(this,"$$d",{});O(this,"$$r",!1);O(this,"$$p_d",{});O(this,"$$l",{});O(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const l=this.$$c.$on(e,t);this.$$l_u.set(t,l)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){const l=this.$$l_u.get(t);l&&(l(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(o){return()=>{let s;return{c:function(){s=I("slot"),o!=="default"&&f(s,"name",o)},m:function(a,D){j(a,s,D)},d:function(a){a&&T(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},i=et(this);for(const o of this.$$s)o in i&&(t[o]=[e(o)]);for(const o of this.attributes){const s=this.$$g_p(o.name);s in this.$$d||(this.$$d[s]=le(s,o.value,this.$$p_d,"toProp"))}for(const o in this.$$p_d)!(o in this.$$d)&&this[o]!==void 0&&(this.$$d[o]=this[o],delete this[o]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const l=()=>{this.$$r=!0;for(const o in this.$$p_d)if(this.$$d[o]=this.$$c.$$.ctx[this.$$c.$$.props[o]],this.$$p_d[o].reflect){const s=le(o,this.$$d[o],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[o].attribute||o):this.setAttribute(this.$$p_d[o].attribute||o,s)}this.$$r=!1};this.$$c.$$.after_update.push(l),l();for(const o in this.$$l)for(const s of this.$$l[o]){const u=this.$$c.$on(o,s);this.$$l_u.set(s,u)}this.$$l={}}}attributeChangedCallback(e,t,i){var l;this.$$r||(e=this.$$g_p(e),this.$$d[e]=le(e,i,this.$$p_d,"toProp"),(l=this.$$c)==null||l.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function le(r,e,t,i){var o;const l=(o=t[r])==null?void 0:o.type;if(e=l==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[r])return e;if(i==="toAttribute")switch(l){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(l){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function dt(r,e,t,i,l,o){let s=class extends xe{constructor(){super(r,t,l),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(u=>(e[u].attribute||u).toLowerCase())}};return Object.keys(e).forEach(u=>{Object.defineProperty(s.prototype,u,{get(){return this.$$c&&u in this.$$c?this.$$c[u]:this.$$d[u]},set(c){var a;c=le(u,c,e),this.$$d[u]=c,(a=this.$$c)==null||a.$set({[u]:c})}})}),i.forEach(u=>{Object.defineProperty(s.prototype,u,{get(){var c;return(c=this.$$c)==null?void 0:c[u]}})}),o&&(s=o(s)),r.element=s,s}class gt{constructor(){O(this,"$$");O(this,"$$set")}$destroy(){ut(this,1),this.$destroy=P}$on(e,t){if(!pe(t))return P;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const l=i.indexOf(t);l!==-1&&i.splice(l,1)}}$set(e){this.$$set&&!We(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const mt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(mt);const bt=new TextEncoder;function _t(r){return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function wt(r,e="SHA-256",t=1e5){const i=Date.now().toString(16);r||(r=Math.round(Math.random()*t));const l=await Ce(i,r,e);return{algorithm:e,challenge:l,salt:i,signature:""}}async function Ce(r,e,t){return _t(await crypto.subtle.digest(t.toUpperCase(),bt.encode(r+e)))}function yt(r,e,t="SHA-256",i=1e6,l=0){const o=new AbortController,s=Date.now();return{promise:(async()=>{for(let c=l;c<=i;c+=1){if(o.signal.aborted)return null;if(await Ce(e,c,t)===r)return{number:c,took:Date.now()-s}}return null})(),controller:o}}var m=(r=>(r.ERROR="error",r.VERIFIED="verified",r.VERIFYING="verifying",r.UNVERIFIED="unverified",r.EXPIRED="expired",r))(m||{});function Le(r){let e,t,i;return{c(){e=Z("svg"),t=Z("path"),i=Z("path"),f(t,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),f(t,"fill","currentColor"),f(t,"opacity",".25"),f(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),f(i,"fill","currentColor"),f(i,"class","altcha-spinner"),f(e,"width","24"),f(e,"height","24"),f(e,"viewBox","0 0 24 24"),f(e,"xmlns","http://www.w3.org/2000/svg")},m(l,o){j(l,e,o),w(e,t),w(e,i)},d(l){l&&T(e)}}}function pt(r){let e,t=r[9].label+"",i;return{c(){e=I("label"),f(e,"for",i=r[3]+"_checkbox")},m(l,o){j(l,e,o),e.innerHTML=t},p(l,o){o[0]&512&&t!==(t=l[9].label+"")&&(e.innerHTML=t),o[0]&8&&i!==(i=l[3]+"_checkbox")&&f(e,"for",i)},d(l){l&&T(e)}}}function vt(r){let e,t=r[9].verifying+"";return{c(){e=I("span")},m(i,l){j(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].verifying+"")&&(e.innerHTML=t)},d(i){i&&T(e)}}}function kt(r){let e,t=r[9].verified+"",i,l;return{c(){e=I("span"),i=Y(),l=I("input"),f(l,"type","hidden"),f(l,"name",r[3]),l.value=r[4]},m(o,s){j(o,e,s),e.innerHTML=t,j(o,i,s),j(o,l,s)},p(o,s){s[0]&512&&t!==(t=o[9].verified+"")&&(e.innerHTML=t),s[0]&8&&f(l,"name",o[3]),s[0]&16&&(l.value=o[4])},d(o){o&&(T(e),T(i),T(l))}}}function Ie(r){let e,t,i,l,o,s,u;return{c(){e=I("div"),t=I("a"),i=Z("svg"),l=Z("path"),o=Z("path"),s=Z("path"),f(l,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),f(l,"fill","currentColor"),f(o,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),f(o,"fill","currentColor"),f(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),f(s,"fill","currentColor"),f(i,"width","22"),f(i,"height","22"),f(i,"viewBox","0 0 20 20"),f(i,"fill","none"),f(i,"xmlns","http://www.w3.org/2000/svg"),f(t,"href",Me),f(t,"target","_blank"),f(t,"class","altcha-logo"),f(t,"aria-label",u=r[9].ariaLinkLabel)},m(c,a){j(c,e,a),w(e,t),w(t,i),w(i,l),w(i,o),w(i,s)},p(c,a){a[0]&512&&u!==(u=c[9].ariaLinkLabel)&&f(t,"aria-label",u)},d(c){c&&T(e)}}}function Ae(r){let e,t,i,l;function o(c,a){return c[5]===m.EXPIRED?$t:Et}let s=o(r),u=s(r);return{c(){e=I("div"),t=Z("svg"),i=Z("path"),l=Y(),u.c(),f(i,"stroke-linecap","round"),f(i,"stroke-linejoin","round"),f(i,"d","M6 18L18 6M6 6l12 12"),f(t,"width","14"),f(t,"height","14"),f(t,"xmlns","http://www.w3.org/2000/svg"),f(t,"fill","none"),f(t,"viewBox","0 0 24 24"),f(t,"stroke-width","1.5"),f(t,"stroke","currentColor"),f(e,"class","altcha-error")},m(c,a){j(c,e,a),w(e,t),w(t,i),w(e,l),u.m(e,null)},p(c,a){s===(s=o(c))&&u?u.p(c,a):(u.d(1),u=s(c),u&&(u.c(),u.m(e,null)))},d(c){c&&T(e),u.d()}}}function Et(r){let e,t=r[9].error+"";return{c(){e=I("div"),f(e,"title",r[8])},m(i,l){j(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].error+"")&&(e.innerHTML=t),l[0]&256&&f(e,"title",i[8])},d(i){i&&T(e)}}}function $t(r){let e,t=r[9].expired+"";return{c(){e=I("div"),f(e,"title",r[8])},m(i,l){j(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].expired+"")&&(e.innerHTML=t),l[0]&256&&f(e,"title",i[8])},d(i){i&&T(e)}}}function Re(r){let e,t,i=r[9].footer+"";return{c(){e=I("div"),t=I("div"),f(e,"class","altcha-footer")},m(l,o){j(l,e,o),w(e,t),t.innerHTML=i},p(l,o){o[0]&512&&i!==(i=l[9].footer+"")&&(t.innerHTML=i)},d(l){l&&T(e)}}}function xt(r){let e,t,i,l,o,s,u,c,a,D,C,H,F,q,v=r[5]===m.VERIFYING&&Le();function J(d,A){return d[5]===m.VERIFIED?kt:d[5]===m.VERIFYING?vt:pt}let G=J(r),k=G(r),E=r[2]!==!0&&Ie(r),g=(r[8]||r[5]===m.EXPIRED)&&Ae(r),_=r[9].footer&&r[1]!==!0&&Re(r);return{c(){e=I("div"),t=I("div"),v&&v.c(),i=Y(),l=I("div"),o=I("input"),c=Y(),a=I("div"),k.c(),D=Y(),E&&E.c(),C=Y(),g&&g.c(),H=Y(),_&&_.c(),f(o,"type","checkbox"),f(o,"id",s=r[3]+"_checkbox"),o.required=u=r[0]!=="onsubmit",f(l,"class","altcha-checkbox"),ve(l,"altcha-hidden",r[5]===m.VERIFYING),f(a,"class","altcha-label"),f(t,"class","altcha-main"),f(e,"class","altcha"),f(e,"data-state",r[5])},m(d,A){j(d,e,A),w(e,t),v&&v.m(t,null),w(t,i),w(t,l),w(l,o),o.checked=r[6],w(t,c),w(t,a),k.m(a,null),w(t,D),E&&E.m(t,null),w(e,C),g&&g.m(e,null),w(e,H),_&&_.m(e,null),r[31](e),F||(q=[ue(o,"change",r[30]),ue(o,"change",r[10]),ue(o,"invalid",r[11])],F=!0)},p(d,A){d[5]===m.VERIFYING?v||(v=Le(),v.c(),v.m(t,i)):v&&(v.d(1),v=null),A[0]&8&&s!==(s=d[3]+"_checkbox")&&f(o,"id",s),A[0]&1&&u!==(u=d[0]!=="onsubmit")&&(o.required=u),A[0]&64&&(o.checked=d[6]),A[0]&32&&ve(l,"altcha-hidden",d[5]===m.VERIFYING),G===(G=J(d))&&k?k.p(d,A):(k.d(1),k=G(d),k&&(k.c(),k.m(a,null))),d[2]!==!0?E?E.p(d,A):(E=Ie(d),E.c(),E.m(t,null)):E&&(E.d(1),E=null),d[8]||d[5]===m.EXPIRED?g?g.p(d,A):(g=Ae(d),g.c(),g.m(e,H)):g&&(g.d(1),g=null),d[9].footer&&d[1]!==!0?_?_.p(d,A):(_=Re(d),_.c(),_.m(e,null)):_&&(_.d(1),_=null),A[0]&32&&f(e,"data-state",d[5])},i:P,o:P,d(d){d&&T(e),v&&v.d(),k.d(),E&&E.d(),g&&g.d(),_&&_.d(),r[31](null),F=!1,re(q)}}}const Te="Visit Altcha.org",Me="https://altcha.org/";function je(r){return JSON.parse(r)}function Ct(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function Lt(r,e,t){var Ze,qe;let i,l,o,{auto:s=void 0}=e,{blockspam:u=void 0}=e,{challengeurl:c=void 0}=e,{challengejson:a=void 0}=e,{debug:D=!1}=e,{expire:C=void 0}=e,{hidefooter:H=!1}=e,{hidelogo:F=!1}=e,{name:q="altcha"}=e,{maxnumber:v=1e6}=e,{mockerror:J=!1}=e,{refetchonexpire:G=!0}=e,{spamfilter:k=!1}=e,{strings:E=void 0}=e,{test:g=!1}=e,{verifyurl:_=void 0}=e,{workers:d=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:A=void 0}=e;const be=nt(),Ne=["SHA-256","SHA-384","SHA-512"],De=(qe=(Ze=document.documentElement.lang)==null?void 0:Ze.split("-"))==null?void 0:qe[0];let X=!1,oe,b=null,_e=null,W=null,U=m.UNVERIFIED,B=null;rt(()=>{b&&(b.removeEventListener("submit",Oe),b.removeEventListener("reset",Pe),b.removeEventListener("focusin",Ve),b=null),B&&(clearTimeout(B),B=null)}),tt(()=>{L("mounted","0.5.1"),L("workers",d),g&&L("using test mode"),C&&se(C),s!==void 0&&L("auto",s),b=oe.closest("form"),b&&(b.addEventListener("submit",Oe),b.addEventListener("reset",Pe),s==="onfocus"&&b.addEventListener("focusin",Ve)),s==="onload"&&z()});function L(...n){(D||n.some(h=>h instanceof Error))&&console[n[0]instanceof Error?"error":"log"]("ALTCHA",...n)}function Ve(n){U===m.UNVERIFIED&&z()}function Oe(n){b&&s==="onsubmit"&&U===m.UNVERIFIED&&(n.preventDefault(),n.stopPropagation(),z().then(()=>{b==null||b.requestSubmit()}))}function Pe(){fe()}function He(n,h){return btoa(JSON.stringify({algorithm:n.algorithm,challenge:n.challenge,number:h.number,salt:n.salt,signature:n.signature,test:g?!0:void 0,took:h.took}))}function Fe(n){if(!n.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(n.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!Ne.includes(n.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${Ne.join(", ")}`);if(!n.challenge||n.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!n.salt||n.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function It(){var n;if(J)throw L("mocking error"),new Error("Mocked error.");if(i)return L("using provided json data"),i;if(g)return L("generating test challenge",{test:g}),wt(typeof g!="boolean"?+g:void 0);{if(!c)throw new Error("Attribute challengeurl not set.");L("fetching challenge from",c);const h=await fetch(c,{headers:{"x-altcha-spam-filter":k?"1":"0"}});if(h.status!==200)throw new Error(`Server responded with ${h.status}.`);const p=h.headers.get("Expires"),M=h.headers.get("X-Altcha-Config"),S=await h.json(),V=new URLSearchParams((n=S.salt.split("?"))==null?void 0:n[1]),K=V.get("expires")||V.get("expire");if(K){const $=new Date(+K*1e3),x=isNaN($.getTime())?0:$.getTime()-Date.now();x>0&&se(x)}if(M)try{const $=JSON.parse(M);$&&typeof $=="object"&&($.verifyurl&&($.verifyurl=new URL($.verifyurl,new URL(c)).toString()),Be($))}catch($){L("unable to configure from X-Altcha-Config",$)}if(!C&&(p!=null&&p.length)){const $=Date.parse(p);if($){const x=$-Date.now();x>0&&se(x)}}return S}}function Ue(){c&&G&&U===m.VERIFIED?z():fe(m.EXPIRED,o.expired)}async function At(n){let h=null;if("Worker"in window){try{h=await Rt(n.challenge,n.salt,n.algorithm,n.maxnumber)}catch(p){L(p)}if((h==null?void 0:h.number)!==void 0)return{data:n,solution:h}}return{data:n,solution:await yt(n.challenge,n.salt,n.algorithm,n.maxnumber||v).promise}}async function Rt(n,h,p,M=typeof g=="number"?g:v,S=Math.ceil(d)){const V=[];if(S<1)throw new Error("Wrong number of workers configured.");if(S>16)throw new Error("Too many workers. Max. 16 allowed workers.");for(let x=0;x<S;x++)V.push(createAltchaWorker(A));const K=Math.ceil(M/S),$=await Promise.all(V.map((x,ce)=>{const Ge=ce*K;return new Promise(Ot=>{x.addEventListener("message",Xe=>{if(Xe.data)for(const Ye of V)Ye!==x&&Ye.postMessage({type:"abort"});Ot(Xe.data)}),x.postMessage({payload:{alg:p,challenge:n,max:Ge+K,salt:h,start:Ge},type:"work"})})}));for(const x of V)x.terminate();return $.find(x=>!!x)||null}function Tt(){[m.UNVERIFIED,m.ERROR,m.EXPIRED].includes(U)?k&&(b==null?void 0:b.reportValidity())===!1?t(6,X=!1):z():t(6,X=!0)}function Mt(){U===m.VERIFYING&&alert(o.waitAlert)}function se(n){L("expire",n),B&&(clearTimeout(B),B=null),n<1?Ue():B=setTimeout(Ue,n)}function jt(n){var p;const h=b==null?void 0:b.querySelector(typeof n=="string"?`input[name="${n}"]`:'input[type="email"]:not([data-no-spamfilter])');return((p=h==null?void 0:h.value)==null?void 0:p.slice(h.value.indexOf("@")))||void 0}function St(n){return[...(b==null?void 0:b.querySelectorAll(n!=null&&n.length?n.map(p=>`input[name="${p}"]`).join(", "):'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((p,M)=>{const S=M.name,V=M.value.trim();return S&&V&&(p[S]=V),p},{})}async function Nt(n){if(!_)throw new Error("Attribute verifyurl not set.");L("requesting server verification from",_);const h={payload:n};if(k){const{email:S,expectedLanguages:V,expectedCountries:K,fields:$,ipAddress:x,timeZone:ce}=typeof k=="object"?k:{email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,timeZone:void 0};h.ipAddress=x===!1?void 0:x||"auto",h.email=S===!1?void 0:jt(S),h.fields=$===!1?void 0:St($),h.timeZone=ce===!1?void 0:ce||Ct(),h.expectedCountries=K,h.expectedLanguages=V||(De?[De]:void 0)}const p=await fetch(_,{body:JSON.stringify(h),headers:{"content-type":"application/json"},method:"POST"});if(p.status!==200)throw new Error(`Server responded with ${p.status}.`);const M=await p.json();if(M!=null&&M.payload&&t(4,W=M.payload),be("serververification",M),u&&M.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function Be(n){n.auto!==void 0&&(t(0,s=n.auto),s==="onload"&&z()),n.expire!==void 0&&(se(n.expire),t(14,C=n.expire)),n.challenge&&(Fe(n.challenge),i=n.challenge),n.challengeurl!==void 0&&t(12,c=n.challengeurl),n.debug!==void 0&&t(13,D=!!n.debug),n.hidefooter!==void 0&&t(1,H=!!n.hidefooter),n.hidelogo!==void 0&&t(2,F=!!n.hidelogo),n.maxnumber!==void 0&&t(15,v=+n.maxnumber),n.mockerror!==void 0&&t(16,J=!!n.mockerror),n.name!==void 0&&t(3,q=n.name),n.refetchonexpire!==void 0&&t(17,G=!!n.refetchonexpire),n.spamfilter!==void 0&&t(18,k=typeof n.spamfilter=="object"?n.spamfilter:!!n.spamfilter),n.strings&&t(29,l=n.strings),n.test!==void 0&&t(19,g=typeof n.test=="number"?n.test:!!n.test),n.verifyurl!==void 0&&t(20,_=n.verifyurl),n.workers!==void 0&&t(21,d=+n.workers)}function fe(n=m.UNVERIFIED,h=null){B&&(clearTimeout(B),B=null),t(6,X=!1),t(8,_e=h),t(4,W=null),t(5,U=n)}async function z(){return fe(m.VERIFYING),It().then(n=>(Fe(n),L("challenge",n),At(n))).then(({data:n,solution:h})=>{if(L("solution",h),(h==null?void 0:h.number)!==void 0){if(_)return Nt(He(n,h));t(4,W=He(n,h)),L("payload",W)}else throw L("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{it().then(()=>{t(5,U=m.VERIFIED),t(6,X=!0),L("verified"),be("verified",{payload:W})})}).catch(n=>{L(n),t(5,U=m.ERROR),t(6,X=!1),t(8,_e=n.message)})}function Dt(){X=this.checked,t(6,X)}function Vt(n){he[n?"unshift":"push"](()=>{oe=n,t(7,oe)})}return r.$$set=n=>{"auto"in n&&t(0,s=n.auto),"blockspam"in n&&t(22,u=n.blockspam),"challengeurl"in n&&t(12,c=n.challengeurl),"challengejson"in n&&t(23,a=n.challengejson),"debug"in n&&t(13,D=n.debug),"expire"in n&&t(14,C=n.expire),"hidefooter"in n&&t(1,H=n.hidefooter),"hidelogo"in n&&t(2,F=n.hidelogo),"name"in n&&t(3,q=n.name),"maxnumber"in n&&t(15,v=n.maxnumber),"mockerror"in n&&t(16,J=n.mockerror),"refetchonexpire"in n&&t(17,G=n.refetchonexpire),"spamfilter"in n&&t(18,k=n.spamfilter),"strings"in n&&t(24,E=n.strings),"test"in n&&t(19,g=n.test),"verifyurl"in n&&t(20,_=n.verifyurl),"workers"in n&&t(21,d=n.workers),"workerurl"in n&&t(25,A=n.workerurl)},r.$$.update=()=>{r.$$.dirty[0]&8388608&&(i=a?je(a):void 0),r.$$.dirty[0]&16777216&&t(29,l=E?je(E):{}),r.$$.dirty[0]&536870912&&t(9,o={ariaLinkLabel:Te,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by <a href="${Me}" target="_blank" aria-label="${l.ariaLinkLabel||Te}">ALTCHA</a>`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...l}),r.$$.dirty[0]&48&&be("statechange",{payload:W,state:U})},[s,H,F,q,W,U,X,oe,_e,o,Tt,Mt,c,D,C,v,J,G,k,g,_,d,u,a,E,A,Be,fe,z,l,Dt,Vt]}class Se extends gt{constructor(e){super(),ht(this,e,Lt,xt,Je,{auto:0,blockspam:22,challengeurl:12,challengejson:23,debug:13,expire:14,hidefooter:1,hidelogo:2,name:3,maxnumber:15,mockerror:16,refetchonexpire:17,spamfilter:18,strings:24,test:19,verifyurl:20,workers:21,workerurl:25,configure:26,reset:27,verify:28},null,[-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),y()}get blockspam(){return this.$$.ctx[22]}set blockspam(e){this.$$set({blockspam:e}),y()}get challengeurl(){return this.$$.ctx[12]}set challengeurl(e){this.$$set({challengeurl:e}),y()}get challengejson(){return this.$$.ctx[23]}set challengejson(e){this.$$set({challengejson:e}),y()}get debug(){return this.$$.ctx[13]}set debug(e){this.$$set({debug:e}),y()}get expire(){return this.$$.ctx[14]}set expire(e){this.$$set({expire:e}),y()}get hidefooter(){return this.$$.ctx[1]}set hidefooter(e){this.$$set({hidefooter:e}),y()}get hidelogo(){return this.$$.ctx[2]}set hidelogo(e){this.$$set({hidelogo:e}),y()}get name(){return this.$$.ctx[3]}set name(e){this.$$set({name:e}),y()}get maxnumber(){return this.$$.ctx[15]}set maxnumber(e){this.$$set({maxnumber:e}),y()}get mockerror(){return this.$$.ctx[16]}set mockerror(e){this.$$set({mockerror:e}),y()}get refetchonexpire(){return this.$$.ctx[17]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),y()}get spamfilter(){return this.$$.ctx[18]}set spamfilter(e){this.$$set({spamfilter:e}),y()}get strings(){return this.$$.ctx[24]}set strings(e){this.$$set({strings:e}),y()}get test(){return this.$$.ctx[19]}set test(e){this.$$set({test:e}),y()}get verifyurl(){return this.$$.ctx[20]}set verifyurl(e){this.$$set({verifyurl:e}),y()}get workers(){return this.$$.ctx[21]}set workers(e){this.$$set({workers:e}),y()}get workerurl(){return this.$$.ctx[25]}set workerurl(e){this.$$set({workerurl:e}),y()}get configure(){return this.$$.ctx[26]}get reset(){return this.$$.ctx[27]}get verify(){return this.$$.ctx[28]}}customElements.define("altcha-widget",dt(Se,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},expire:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},[],["configure","reset","verify"],!1)),globalThis.createAltchaWorker=r=>new Worker(new URL(r||"./worker.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:R&&R.src||new URL("altcha.umd.cjs",document.baseURI).href)),N.Altcha=Se,Object.defineProperty(N,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "altcha",
3
3
  "description": "GDPR compliant, self-hosted CAPTCHA alternative.",
4
- "version": "0.5.0",
4
+ "version": "0.5.1",
5
5
  "license": "MIT",
6
6
  "author": {
7
- "name": "Daniel Regeci"
7
+ "name": "Daniel Regeci",
8
+ "url": "https://altcha.org"
8
9
  },
9
- "homepage": "https://github.com/altcha-org/altcha",
10
+ "homepage": "https://altcha.org",
10
11
  "repository": {
11
12
  "type": "git",
12
13
  "url": "https://github.com/altcha-org/altcha"
@@ -1 +0,0 @@
1
- var altcha=function(O){"use strict";var Wt=Object.defineProperty;var Pt=(O,M,Q)=>M in O?Wt(O,M,{enumerable:!0,configurable:!0,writable:!0,value:Q}):O[M]=Q;var T=(O,M,Q)=>Pt(O,typeof M!="symbol"?M+"":M,Q);const M="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIGQoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiBwKGUsdCxvKXtyZXR1cm4gZChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChvLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGcoZSx0LG89IlNIQS0yNTYiLGw9MWU2LGM9MCl7Y29uc3QgYT1uZXcgQWJvcnRDb250cm9sbGVyLGk9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgbj1jO248PWw7bis9MSl7aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCBwKHQsbixvKT09PWUpcmV0dXJue251bWJlcjpuLHRvb2s6RGF0ZS5ub3coKS1pfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjphfX1sZXQgcjtvbm1lc3NhZ2U9YXN5bmMgZT0+e2NvbnN0e3R5cGU6dCxwYXlsb2FkOm99PWUuZGF0YTtpZih0PT09ImFib3J0IilyPT1udWxsfHxyLmFib3J0KCkscj12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtjb25zdHthbGc6bCxjaGFsbGVuZ2U6YyxtYXg6YSxzYWx0Omksc3RhcnQ6dX09b3x8e30sbj1nKGMsaSxsLGEsdSk7cj1uLmNvbnRyb2xsZXIsbi5wcm9taXNlLnRoZW4ocz0+e3NlbGYucG9zdE1lc3NhZ2UocyYmey4uLnMsd29ya2VyOiEwfSl9KX19fSkoKTsK",Q=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0)),we=typeof window<"u"&&window.Blob&&new Blob([Q(M)],{type:"text/javascript;charset=utf-8"});function Je(t){let e;try{if(e=we&&(window.URL||window.webkitURL).createObjectURL(we),!e)throw"";const r=new Worker(e,{name:t==null?void 0:t.name});return r.addEventListener("error",()=>{(window.URL||window.webkitURL).revokeObjectURL(e)}),r}catch{return new Worker("data:text/javascript;base64,"+M,{name:t==null?void 0:t.name})}finally{e&&(window.URL||window.webkitURL).revokeObjectURL(e)}}function re(){}function _e(t){return t()}function pe(){return Object.create(null)}function ne(t){t.forEach(_e)}function ke(t){return typeof t=="function"}function Qe(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function qe(t){return Object.keys(t).length===0}function v(t,e){t.appendChild(e)}function et(t,e,r){const i=tt(t);if(!i.getElementById(e)){const o=C("style");o.id=e,o.textContent=r,rt(i,o)}}function tt(t){if(!t)return document;const e=t.getRootNode?t.getRootNode():t.ownerDocument;return e&&e.host?e:t.ownerDocument}function rt(t,e){return v(t.head||t,e),e.sheet}function S(t,e,r){t.insertBefore(e,r||null)}function z(t){t.parentNode&&t.parentNode.removeChild(t)}function C(t){return document.createElement(t)}function X(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function nt(t){return document.createTextNode(t)}function P(){return nt(" ")}function ue(t,e,r,i){return t.addEventListener(e,r,i),()=>t.removeEventListener(e,r,i)}function c(t,e,r){r==null?t.removeAttribute(e):t.getAttribute(e)!==r&&t.setAttribute(e,r)}function it(t){return Array.from(t.childNodes)}function xe(t,e,r){t.classList.toggle(e,!!r)}function ot(t,e,{bubbles:r=!1,cancelable:i=!1}={}){return new CustomEvent(t,{detail:e,bubbles:r,cancelable:i})}function lt(t){const e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}let ie;function oe(t){ie=t}function he(){if(!ie)throw new Error("Function called outside component initialization");return ie}function st(t){he().$$.on_mount.push(t)}function ct(t){he().$$.on_destroy.push(t)}function at(){const t=he();return(e,r,{cancelable:i=!1}={})=>{const o=t.$$.callbacks[e];if(o){const l=ot(e,r,{cancelable:i});return o.slice().forEach(s=>{s.call(t,l)}),!l.defaultPrevented}return!0}}const q=[],de=[];let ee=[];const Ee=[],$e=Promise.resolve();let me=!1;function Ce(){me||(me=!0,$e.then(w))}function ft(){return Ce(),$e}function ge(t){ee.push(t)}const be=new Set;let te=0;function w(){if(te!==0)return;const t=ie;do{try{for(;te<q.length;){const e=q[te];te++,oe(e),ut(e.$$)}}catch(e){throw q.length=0,te=0,e}for(oe(null),q.length=0,te=0;de.length;)de.pop()();for(let e=0;e<ee.length;e+=1){const r=ee[e];be.has(r)||(be.add(r),r())}ee.length=0}while(q.length);for(;Ee.length;)Ee.pop()();me=!1,be.clear(),oe(t)}function ut(t){if(t.fragment!==null){t.update(),ne(t.before_update);const e=t.dirty;t.dirty=[-1],t.fragment&&t.fragment.p(t.ctx,e),t.after_update.forEach(ge)}}function ht(t){const e=[],r=[];ee.forEach(i=>t.indexOf(i)===-1?e.push(i):r.push(i)),r.forEach(i=>i()),ee=e}const dt=new Set;function mt(t,e){t&&t.i&&(dt.delete(t),t.i(e))}function gt(t,e,r){const{fragment:i,after_update:o}=t.$$;i&&i.m(e,r),ge(()=>{const l=t.$$.on_mount.map(_e).filter(ke);t.$$.on_destroy?t.$$.on_destroy.push(...l):ne(l),t.$$.on_mount=[]}),o.forEach(ge)}function bt(t,e){const r=t.$$;r.fragment!==null&&(ht(r.after_update),ne(r.on_destroy),r.fragment&&r.fragment.d(e),r.on_destroy=r.fragment=null,r.ctx=[])}function yt(t,e){t.$$.dirty[0]===-1&&(q.push(t),Ce(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function vt(t,e,r,i,o,l,s=null,f=[-1]){const a=ie;oe(t);const u=t.$$={fragment:null,ctx:[],props:l,update:re,not_equal:o,bound:pe(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(a?a.$$.context:[])),callbacks:pe(),dirty:f,skip_bound:!1,root:e.target||a.$$.root};s&&s(u.root);let j=!1;if(u.ctx=r?r(t,e.props||{},(L,V,...U)=>{const F=U.length?U[0]:V;return u.ctx&&o(u.ctx[L],u.ctx[L]=F)&&(!u.skip_bound&&u.bound[L]&&u.bound[L](F),j&&yt(t,L)),V}):[],u.update(),j=!0,ne(u.before_update),u.fragment=i?i(u.ctx):!1,e.target){if(e.hydrate){const L=it(e.target);u.fragment&&u.fragment.l(L),L.forEach(z)}else u.fragment&&u.fragment.c();e.intro&&mt(t.$$.fragment),gt(t,e.target,e.anchor),w()}oe(a)}let Le;typeof HTMLElement=="function"&&(Le=class extends HTMLElement{constructor(e,r,i){super();T(this,"$$ctor");T(this,"$$s");T(this,"$$c");T(this,"$$cn",!1);T(this,"$$d",{});T(this,"$$r",!1);T(this,"$$p_d",{});T(this,"$$l",{});T(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=r,i&&this.attachShadow({mode:"open"})}addEventListener(e,r,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(r),this.$$c){const o=this.$$c.$on(e,r);this.$$l_u.set(r,o)}super.addEventListener(e,r,i)}removeEventListener(e,r,i){if(super.removeEventListener(e,r,i),this.$$c){const o=this.$$l_u.get(r);o&&(o(),this.$$l_u.delete(r))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=C("slot"),l!=="default"&&c(s,"name",l)},m:function(u,j){S(u,s,j)},d:function(u){u&&z(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const r={},i=lt(this);for(const l of this.$$s)l in i&&(r[l]=[e(l)]);for(const l of this.attributes){const s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=le(s,l.value,this.$$p_d,"toProp"))}for(const l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:r,$$scope:{ctx:[]}}});const o=()=>{this.$$r=!0;for(const l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){const s=le(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(o),o();for(const l in this.$$l)for(const s of this.$$l[l]){const f=this.$$c.$on(l,s);this.$$l_u.set(s,f)}this.$$l={}}}attributeChangedCallback(e,r,i){var o;this.$$r||(e=this.$$g_p(e),this.$$d[e]=le(e,i,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(r=>this.$$p_d[r].attribute===e||!this.$$p_d[r].attribute&&r.toLowerCase()===e)||e}});function le(t,e,r,i){var l;const o=(l=r[t])==null?void 0:l.type;if(e=o==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!r[t])return e;if(i==="toAttribute")switch(o){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(o){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function wt(t,e,r,i,o,l){let s=class extends Le{constructor(){super(t,r,o),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(f=>(e[f].attribute||f).toLowerCase())}};return Object.keys(e).forEach(f=>{Object.defineProperty(s.prototype,f,{get(){return this.$$c&&f in this.$$c?this.$$c[f]:this.$$d[f]},set(a){var u;a=le(f,a,e),this.$$d[f]=a,(u=this.$$c)==null||u.$set({[f]:a})}})}),i.forEach(f=>{Object.defineProperty(s.prototype,f,{get(){var a;return(a=this.$$c)==null?void 0:a[f]}})}),l&&(s=l(s)),t.element=s,s}class _t{constructor(){T(this,"$$");T(this,"$$set")}$destroy(){bt(this,1),this.$destroy=re}$on(e,r){if(!ke(r))return re;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(r),()=>{const o=i.indexOf(r);o!==-1&&i.splice(o,1)}}$set(e){this.$$set&&!qe(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const pt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(pt);const kt=new TextEncoder;function xt(t){return[...new Uint8Array(t)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function Et(t,e="SHA-256",r=1e5){const i=Date.now().toString(16);t||(t=Math.round(Math.random()*r));const o=await Re(i,t,e);return{algorithm:e,challenge:o,salt:i,signature:""}}async function Re(t,e,r){return xt(await crypto.subtle.digest(r.toUpperCase(),kt.encode(t+e)))}function $t(t,e,r="SHA-256",i=1e6,o=0){const l=new AbortController,s=Date.now();return{promise:(async()=>{for(let a=o;a<=i;a+=1){if(l.signal.aborted)return null;if(await Re(e,a,r)===t)return{number:a,took:Date.now()-s}}return null})(),controller:l}}var g=(t=>(t.ERROR="error",t.VERIFIED="verified",t.VERIFYING="verifying",t.UNVERIFIED="unverified",t.EXPIRED="expired",t))(g||{});function Ct(t){et(t,"svelte-15co9zy",".altcha.svelte-15co9zy.svelte-15co9zy{background:var(--altcha-color-base, transparent);border:var(--altcha-border-width, 1px) solid var(--altcha-color-border, #a0a0a0);border-radius:var(--altcha-border-radius, 3px);color:var(--altcha-color-text, currentColor);display:flex;flex-direction:column;max-width:var(--altcha-max-width, 260px);overflow:hidden;position:relative;text-align:left}.altcha.svelte-15co9zy.svelte-15co9zy:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha-main.svelte-15co9zy.svelte-15co9zy{align-items:center;display:flex;gap:0.4rem;padding:0.7rem}.altcha-label.svelte-15co9zy.svelte-15co9zy{flex-grow:1}.altcha-label.svelte-15co9zy label.svelte-15co9zy{cursor:pointer}.altcha-logo.svelte-15co9zy.svelte-15co9zy{color:currentColor;opacity:0.3}.altcha-logo.svelte-15co9zy.svelte-15co9zy:hover{opacity:1}.altcha-error.svelte-15co9zy.svelte-15co9zy{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:0.85rem;gap:0.3rem;padding:0 0.7rem 0.7rem}.altcha-footer.svelte-15co9zy.svelte-15co9zy{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:0.75rem;opacity:0.4;padding:0.2rem 0.7rem;text-align:right}.altcha-footer.svelte-15co9zy.svelte-15co9zy:hover{opacity:1}.altcha-footer.svelte-15co9zy>.svelte-15co9zy:first-child{flex-grow:1}.altcha-footer.svelte-15co9zy a{color:currentColor}.altcha-checkbox.svelte-15co9zy.svelte-15co9zy{display:flex;align-items:center;height:24px;width:24px}.altcha-checkbox.svelte-15co9zy input.svelte-15co9zy{width:18px;height:18px;margin:0}.altcha-hidden.svelte-15co9zy.svelte-15co9zy{display:none}.altcha-spinner.svelte-15co9zy.svelte-15co9zy{animation:svelte-15co9zy-altcha-spinner 0.75s infinite linear;transform-origin:center}@keyframes svelte-15co9zy-altcha-spinner{100%{transform:rotate(360deg)}}")}function Ie(t){let e,r,i;return{c(){e=X("svg"),r=X("path"),i=X("path"),c(r,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),c(r,"fill","currentColor"),c(r,"opacity",".25"),c(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),c(i,"fill","currentColor"),c(i,"class","altcha-spinner svelte-15co9zy"),c(e,"width","24"),c(e,"height","24"),c(e,"viewBox","0 0 24 24"),c(e,"xmlns","http://www.w3.org/2000/svg")},m(o,l){S(o,e,l),v(e,r),v(e,i)},d(o){o&&z(e)}}}function Lt(t){let e,r=t[9].label+"",i;return{c(){e=C("label"),c(e,"for",i=t[3]+"_checkbox"),c(e,"class","svelte-15co9zy")},m(o,l){S(o,e,l),e.innerHTML=r},p(o,l){l[0]&512&&r!==(r=o[9].label+"")&&(e.innerHTML=r),l[0]&8&&i!==(i=o[3]+"_checkbox")&&c(e,"for",i)},d(o){o&&z(e)}}}function Rt(t){let e,r=t[9].verifying+"";return{c(){e=C("span")},m(i,o){S(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].verifying+"")&&(e.innerHTML=r)},d(i){i&&z(e)}}}function It(t){let e,r=t[9].verified+"",i,o;return{c(){e=C("span"),i=P(),o=C("input"),c(o,"type","hidden"),c(o,"name",t[3]),o.value=t[4]},m(l,s){S(l,e,s),e.innerHTML=r,S(l,i,s),S(l,o,s)},p(l,s){s[0]&512&&r!==(r=l[9].verified+"")&&(e.innerHTML=r),s[0]&8&&c(o,"name",l[3]),s[0]&16&&(o.value=l[4])},d(l){l&&(z(e),z(i),z(o))}}}function ze(t){let e,r,i,o,l,s,f;return{c(){e=C("div"),r=C("a"),i=X("svg"),o=X("path"),l=X("path"),s=X("path"),c(o,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),c(o,"fill","currentColor"),c(l,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),c(l,"fill","currentColor"),c(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),c(s,"fill","currentColor"),c(i,"width","22"),c(i,"height","22"),c(i,"viewBox","0 0 20 20"),c(i,"fill","none"),c(i,"xmlns","http://www.w3.org/2000/svg"),c(r,"href",je),c(r,"target","_blank"),c(r,"class","altcha-logo svelte-15co9zy"),c(r,"aria-label",f=t[9].ariaLinkLabel)},m(a,u){S(a,e,u),v(e,r),v(r,i),v(i,o),v(i,l),v(i,s)},p(a,u){u[0]&512&&f!==(f=a[9].ariaLinkLabel)&&c(r,"aria-label",f)},d(a){a&&z(e)}}}function Ne(t){let e,r,i,o;function l(a,u){return a[5]===g.EXPIRED?Nt:zt}let s=l(t),f=s(t);return{c(){e=C("div"),r=X("svg"),i=X("path"),o=P(),f.c(),c(i,"stroke-linecap","round"),c(i,"stroke-linejoin","round"),c(i,"d","M6 18L18 6M6 6l12 12"),c(r,"width","14"),c(r,"height","14"),c(r,"xmlns","http://www.w3.org/2000/svg"),c(r,"fill","none"),c(r,"viewBox","0 0 24 24"),c(r,"stroke-width","1.5"),c(r,"stroke","currentColor"),c(e,"class","altcha-error svelte-15co9zy")},m(a,u){S(a,e,u),v(e,r),v(r,i),v(e,o),f.m(e,null)},p(a,u){s===(s=l(a))&&f?f.p(a,u):(f.d(1),f=s(a),f&&(f.c(),f.m(e,null)))},d(a){a&&z(e),f.d()}}}function zt(t){let e,r=t[9].error+"";return{c(){e=C("div"),c(e,"title",t[8])},m(i,o){S(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].error+"")&&(e.innerHTML=r),o[0]&256&&c(e,"title",i[8])},d(i){i&&z(e)}}}function Nt(t){let e,r=t[9].expired+"";return{c(){e=C("div"),c(e,"title",t[8])},m(i,o){S(i,e,o),e.innerHTML=r},p(i,o){o[0]&512&&r!==(r=i[9].expired+"")&&(e.innerHTML=r),o[0]&256&&c(e,"title",i[8])},d(i){i&&z(e)}}}function Se(t){let e,r,i=t[9].footer+"";return{c(){e=C("div"),r=C("div"),c(r,"class","svelte-15co9zy"),c(e,"class","altcha-footer svelte-15co9zy")},m(o,l){S(o,e,l),v(e,r),r.innerHTML=i},p(o,l){l[0]&512&&i!==(i=o[9].footer+"")&&(r.innerHTML=i)},d(o){o&&z(e)}}}function St(t){let e,r,i,o,l,s,f,a,u,j,L,V,U,F,p=t[5]===g.VERIFYING&&Ie();function Y(d,I){return d[5]===g.VERIFIED?It:d[5]===g.VERIFYING?Rt:Lt}let H=Y(t),k=H(t),x=t[2]!==!0&&ze(t),m=(t[8]||t[5]===g.EXPIRED)&&Ne(t),y=t[9].footer&&t[1]!==!0&&Se(t);return{c(){e=C("div"),r=C("div"),p&&p.c(),i=P(),o=C("div"),l=C("input"),a=P(),u=C("div"),k.c(),j=P(),x&&x.c(),L=P(),m&&m.c(),V=P(),y&&y.c(),c(l,"type","checkbox"),c(l,"id",s=t[3]+"_checkbox"),l.required=f=t[0]!=="onsubmit",c(l,"class","svelte-15co9zy"),c(o,"class","altcha-checkbox svelte-15co9zy"),xe(o,"altcha-hidden",t[5]===g.VERIFYING),c(u,"class","altcha-label svelte-15co9zy"),c(r,"class","altcha-main svelte-15co9zy"),c(e,"class","altcha svelte-15co9zy"),c(e,"data-state",t[5])},m(d,I){S(d,e,I),v(e,r),p&&p.m(r,null),v(r,i),v(r,o),v(o,l),l.checked=t[6],v(r,a),v(r,u),k.m(u,null),v(r,j),x&&x.m(r,null),v(e,L),m&&m.m(e,null),v(e,V),y&&y.m(e,null),t[31](e),U||(F=[ue(l,"change",t[30]),ue(l,"change",t[10]),ue(l,"invalid",t[11])],U=!0)},p(d,I){d[5]===g.VERIFYING?p||(p=Ie(),p.c(),p.m(r,i)):p&&(p.d(1),p=null),I[0]&8&&s!==(s=d[3]+"_checkbox")&&c(l,"id",s),I[0]&1&&f!==(f=d[0]!=="onsubmit")&&(l.required=f),I[0]&64&&(l.checked=d[6]),I[0]&32&&xe(o,"altcha-hidden",d[5]===g.VERIFYING),H===(H=Y(d))&&k?k.p(d,I):(k.d(1),k=H(d),k&&(k.c(),k.m(u,null))),d[2]!==!0?x?x.p(d,I):(x=ze(d),x.c(),x.m(r,null)):x&&(x.d(1),x=null),d[8]||d[5]===g.EXPIRED?m?m.p(d,I):(m=Ne(d),m.c(),m.m(e,V)):m&&(m.d(1),m=null),d[9].footer&&d[1]!==!0?y?y.p(d,I):(y=Se(d),y.c(),y.m(e,null)):y&&(y.d(1),y=null),I[0]&32&&c(e,"data-state",d[5])},i:re,o:re,d(d){d&&z(e),p&&p.d(),k.d(),x&&x.d(),m&&m.d(),y&&y.d(),t[31](null),U=!1,ne(F)}}}const Ae="Visit Altcha.org",je="https://altcha.org/";function Ze(t){return JSON.parse(t)}function At(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function jt(t,e,r){var We,Pe;let i,o,l,{auto:s=void 0}=e,{blockspam:f=void 0}=e,{challengeurl:a=void 0}=e,{challengejson:u=void 0}=e,{debug:j=!1}=e,{expire:L=void 0}=e,{hidefooter:V=!1}=e,{hidelogo:U=!1}=e,{name:F="altcha"}=e,{maxnumber:p=1e6}=e,{mockerror:Y=!1}=e,{refetchonexpire:H=!0}=e,{spamfilter:k=!1}=e,{strings:x=void 0}=e,{test:m=!1}=e,{verifyurl:y=void 0}=e,{workers:d=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:I=void 0}=e;const ye=at(),Me=["SHA-256","SHA-384","SHA-512"],Ve=(Pe=(We=document.documentElement.lang)==null?void 0:We.split("-"))==null?void 0:Pe[0];let W=!1,se,b=null,ve=null,B=null,G=g.UNVERIFIED,D=null;ct(()=>{b&&(b.removeEventListener("submit",Ge),b.removeEventListener("reset",De),b.removeEventListener("focusin",Ue),b=null),D&&(clearTimeout(D),D=null)}),st(()=>{R("mounted","0.5.0"),R("workers",d),m&&R("using test mode"),L&&ce(L),s!==void 0&&R("auto",s),b=se.closest("form"),b&&(b.addEventListener("submit",Ge),b.addEventListener("reset",De),s==="onfocus"&&b.addEventListener("focusin",Ue)),s==="onload"&&K()});function R(...n){(j||n.some(h=>h instanceof Error))&&console[n[0]instanceof Error?"error":"log"]("ALTCHA",...n)}function Ue(n){G===g.UNVERIFIED&&K()}function Ge(n){b&&s==="onsubmit"&&G===g.UNVERIFIED&&(n.preventDefault(),n.stopPropagation(),K().then(()=>{b==null||b.requestSubmit()}))}function De(){ae()}function Oe(n,h){return btoa(JSON.stringify({algorithm:n.algorithm,challenge:n.challenge,number:h.number,salt:n.salt,signature:n.signature,test:m?!0:void 0,took:h.took}))}function Xe(n){if(!n.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(n.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!Me.includes(n.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${Me.join(", ")}`);if(!n.challenge||n.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!n.salt||n.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function Zt(){var n;if(Y)throw R("mocking error"),new Error("Mocked error.");if(i)return R("using provided json data"),i;if(m)return R("generating test challenge",{test:m}),Et(typeof m!="boolean"?+m:void 0);{if(!a)throw new Error("Attribute challengeurl not set.");R("fetching challenge from",a);const h=await fetch(a,{headers:{"x-altcha-spam-filter":k?"1":"0"}});if(h.status!==200)throw new Error(`Server responded with ${h.status}.`);const _=h.headers.get("Expires"),N=h.headers.get("X-Altcha-Config"),A=await h.json(),Z=new URLSearchParams((n=A.salt.split("?"))==null?void 0:n[1]),J=Z.get("expires")||Z.get("expire");if(J){const E=new Date(+J*1e3),$=isNaN(E.getTime())?0:E.getTime()-Date.now();$>0&&ce($)}if(N)try{const E=JSON.parse(N);E&&typeof E=="object"&&(E.verifyurl&&(E.verifyurl=new URL(E.verifyurl,new URL(a)).toString()),He(E))}catch(E){R("unable to configure from X-Altcha-Config",E)}if(!L&&(_!=null&&_.length)){const E=Date.parse(_);if(E){const $=E-Date.now();$>0&&ce($)}}return A}}function Fe(){a&&H&&G===g.VERIFIED?K():ae(g.EXPIRED,l.expired)}async function Tt(n){let h=null;if("Worker"in window){try{h=await Mt(n.challenge,n.salt,n.algorithm,n.maxnumber)}catch(_){R(_)}if((h==null?void 0:h.number)!==void 0)return{data:n,solution:h}}return{data:n,solution:await $t(n.challenge,n.salt,n.algorithm,n.maxnumber||p).promise}}async function Mt(n,h,_,N=typeof m=="number"?m:p,A=Math.ceil(d)){const Z=[];if(A<1)throw new Error("Wrong number of workers configured.");if(A>16)throw new Error("Too many workers. Max. 16 allowed workers.");for(let $=0;$<A;$++)Z.push(createAltchaWorker(I));const J=Math.ceil(N/A),E=await Promise.all(Z.map(($,fe)=>{const Ye=fe*J;return new Promise(Ht=>{$.addEventListener("message",Be=>{if(Be.data)for(const Ke of Z)Ke!==$&&Ke.postMessage({type:"abort"});Ht(Be.data)}),$.postMessage({payload:{alg:_,challenge:n,max:Ye+J,salt:h,start:Ye},type:"work"})})}));for(const $ of Z)$.terminate();return E.find($=>!!$)||null}function Vt(){[g.UNVERIFIED,g.ERROR,g.EXPIRED].includes(G)?k&&(b==null?void 0:b.reportValidity())===!1?r(6,W=!1):K():r(6,W=!0)}function Ut(){G===g.VERIFYING&&alert(l.waitAlert)}function ce(n){R("expire",n),D&&(clearTimeout(D),D=null),n<1?Fe():D=setTimeout(Fe,n)}function Gt(n){var _;const h=b==null?void 0:b.querySelector(typeof n=="string"?`input[name="${n}"]`:'input[type="email"]:not([data-no-spamfilter])');return((_=h==null?void 0:h.value)==null?void 0:_.slice(h.value.indexOf("@")))||void 0}function Dt(n){return[...(b==null?void 0:b.querySelectorAll(n!=null&&n.length?n.map(_=>`input[name="${_}"]`).join(", "):'input[type="email"]:not([data-no-spamfilter]), input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((_,N)=>{const A=N.name,Z=N.value.trim();return A&&Z&&(_[A]=Z),_},{})}async function Ot(n){if(!y)throw new Error("Attribute verifyurl not set.");R("requesting server verification from",y);const h={payload:n};if(k){const{email:A,expectedLanguages:Z,expectedCountries:J,fields:E,ipAddress:$,timeZone:fe}=typeof k=="object"?k:{email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,timeZone:void 0};h.ipAddress=$===!1?void 0:$||"auto",h.email=A===!1?void 0:Gt(A),h.fields=E===!1?void 0:Dt(E),h.timeZone=fe===!1?void 0:fe||At(),h.expectedCountries=J,h.expectedLanguages=Z||(Ve?[Ve]:void 0)}const _=await fetch(y,{body:JSON.stringify(h),headers:{"content-type":"application/json"},method:"POST"});if(_.status!==200)throw new Error(`Server responded with ${_.status}.`);const N=await _.json();if(N!=null&&N.payload&&r(4,B=N.payload),ye("serververification",N),f&&N.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function He(n){n.auto!==void 0&&(r(0,s=n.auto),s==="onload"&&K()),n.expire!==void 0&&(ce(n.expire),r(14,L=n.expire)),n.challenge&&(Xe(n.challenge),i=n.challenge),n.challengeurl!==void 0&&r(12,a=n.challengeurl),n.debug!==void 0&&r(13,j=!!n.debug),n.hidefooter!==void 0&&r(1,V=!!n.hidefooter),n.hidelogo!==void 0&&r(2,U=!!n.hidelogo),n.maxnumber!==void 0&&r(15,p=+n.maxnumber),n.mockerror!==void 0&&r(16,Y=!!n.mockerror),n.name!==void 0&&r(3,F=n.name),n.refetchonexpire!==void 0&&r(17,H=!!n.refetchonexpire),n.spamfilter!==void 0&&r(18,k=typeof n.spamfilter=="object"?n.spamfilter:!!n.spamfilter),n.strings&&r(29,o=n.strings),n.test!==void 0&&r(19,m=typeof n.test=="number"?n.test:!!n.test),n.verifyurl!==void 0&&r(20,y=n.verifyurl),n.workers!==void 0&&r(21,d=+n.workers)}function ae(n=g.UNVERIFIED,h=null){D&&(clearTimeout(D),D=null),r(6,W=!1),r(8,ve=h),r(4,B=null),r(5,G=n)}async function K(){return ae(g.VERIFYING),Zt().then(n=>(Xe(n),R("challenge",n),Tt(n))).then(({data:n,solution:h})=>{if(R("solution",h),(h==null?void 0:h.number)!==void 0){if(y)return Ot(Oe(n,h));r(4,B=Oe(n,h)),R("payload",B)}else throw R("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{ft().then(()=>{r(5,G=g.VERIFIED),r(6,W=!0),R("verified"),ye("verified",{payload:B})})}).catch(n=>{R(n),r(5,G=g.ERROR),r(6,W=!1),r(8,ve=n.message)})}function Xt(){W=this.checked,r(6,W)}function Ft(n){de[n?"unshift":"push"](()=>{se=n,r(7,se)})}return t.$$set=n=>{"auto"in n&&r(0,s=n.auto),"blockspam"in n&&r(22,f=n.blockspam),"challengeurl"in n&&r(12,a=n.challengeurl),"challengejson"in n&&r(23,u=n.challengejson),"debug"in n&&r(13,j=n.debug),"expire"in n&&r(14,L=n.expire),"hidefooter"in n&&r(1,V=n.hidefooter),"hidelogo"in n&&r(2,U=n.hidelogo),"name"in n&&r(3,F=n.name),"maxnumber"in n&&r(15,p=n.maxnumber),"mockerror"in n&&r(16,Y=n.mockerror),"refetchonexpire"in n&&r(17,H=n.refetchonexpire),"spamfilter"in n&&r(18,k=n.spamfilter),"strings"in n&&r(24,x=n.strings),"test"in n&&r(19,m=n.test),"verifyurl"in n&&r(20,y=n.verifyurl),"workers"in n&&r(21,d=n.workers),"workerurl"in n&&r(25,I=n.workerurl)},t.$$.update=()=>{t.$$.dirty[0]&8388608&&(i=u?Ze(u):void 0),t.$$.dirty[0]&16777216&&r(29,o=x?Ze(x):{}),t.$$.dirty[0]&536870912&&r(9,l={ariaLinkLabel:Ae,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by <a href="${je}" target="_blank" aria-label="${o.ariaLinkLabel||Ae}">ALTCHA</a>`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...o}),t.$$.dirty[0]&48&&ye("statechange",{payload:B,state:G})},[s,V,U,F,B,G,W,se,ve,l,Vt,Ut,a,j,L,p,Y,H,k,m,y,d,f,u,x,I,He,ae,K,o,Xt,Ft]}class Te extends _t{constructor(e){super(),vt(this,e,jt,St,Qe,{auto:0,blockspam:22,challengeurl:12,challengejson:23,debug:13,expire:14,hidefooter:1,hidelogo:2,name:3,maxnumber:15,mockerror:16,refetchonexpire:17,spamfilter:18,strings:24,test:19,verifyurl:20,workers:21,workerurl:25,configure:26,reset:27,verify:28},Ct,[-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),w()}get blockspam(){return this.$$.ctx[22]}set blockspam(e){this.$$set({blockspam:e}),w()}get challengeurl(){return this.$$.ctx[12]}set challengeurl(e){this.$$set({challengeurl:e}),w()}get challengejson(){return this.$$.ctx[23]}set challengejson(e){this.$$set({challengejson:e}),w()}get debug(){return this.$$.ctx[13]}set debug(e){this.$$set({debug:e}),w()}get expire(){return this.$$.ctx[14]}set expire(e){this.$$set({expire:e}),w()}get hidefooter(){return this.$$.ctx[1]}set hidefooter(e){this.$$set({hidefooter:e}),w()}get hidelogo(){return this.$$.ctx[2]}set hidelogo(e){this.$$set({hidelogo:e}),w()}get name(){return this.$$.ctx[3]}set name(e){this.$$set({name:e}),w()}get maxnumber(){return this.$$.ctx[15]}set maxnumber(e){this.$$set({maxnumber:e}),w()}get mockerror(){return this.$$.ctx[16]}set mockerror(e){this.$$set({mockerror:e}),w()}get refetchonexpire(){return this.$$.ctx[17]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),w()}get spamfilter(){return this.$$.ctx[18]}set spamfilter(e){this.$$set({spamfilter:e}),w()}get strings(){return this.$$.ctx[24]}set strings(e){this.$$set({strings:e}),w()}get test(){return this.$$.ctx[19]}set test(e){this.$$set({test:e}),w()}get verifyurl(){return this.$$.ctx[20]}set verifyurl(e){this.$$set({verifyurl:e}),w()}get workers(){return this.$$.ctx[21]}set workers(e){this.$$set({workers:e}),w()}get workerurl(){return this.$$.ctx[25]}set workerurl(e){this.$$set({workerurl:e}),w()}get configure(){return this.$$.ctx[26]}get reset(){return this.$$.ctx[27]}get verify(){return this.$$.ctx[28]}}return customElements.define("altcha-widget",wt(Te,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},expire:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},[],["configure","reset","verify"],!1)),globalThis.createAltchaWorker=t=>t?new Worker(new URL(t)):new Je,O.Altcha=Te,Object.defineProperty(O,Symbol.toStringTag,{value:"Module"}),O}({});
@@ -1 +0,0 @@
1
- var altcha=function(B){"use strict";var Pt=Object.defineProperty;var Ht=(B,V,O)=>V in B?Pt(B,V,{enumerable:!0,configurable:!0,writable:!0,value:O}):B[V]=O;var D=(B,V,O)=>Ht(B,typeof V!="symbol"?V+"":V,O);var V=typeof document<"u"?document.currentScript:null;function O(){}function we(r){return r()}function ye(){return Object.create(null)}function re(r){r.forEach(we)}function ve(r){return typeof r=="function"}function Je(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function We(r){return Object.keys(r).length===0}function w(r,e){r.appendChild(e)}function T(r,e,t){r.insertBefore(e,t||null)}function R(r){r.parentNode&&r.parentNode.removeChild(r)}function I(r){return document.createElement(r)}function Z(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function ze(r){return document.createTextNode(r)}function Y(){return ze(" ")}function ue(r,e,t,i){return r.addEventListener(e,t,i),()=>r.removeEventListener(e,t,i)}function c(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function Ke(r){return Array.from(r.childNodes)}function ke(r,e,t){r.classList.toggle(e,!!t)}function Qe(r,e,{bubbles:t=!1,cancelable:i=!1}={}){return new CustomEvent(r,{detail:e,bubbles:t,cancelable:i})}function et(r){const e={};return r.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let ne;function ie(r){ne=r}function ae(){if(!ne)throw new Error("Function called outside component initialization");return ne}function tt(r){ae().$$.on_mount.push(r)}function rt(r){ae().$$.on_destroy.push(r)}function nt(){const r=ae();return(e,t,{cancelable:i=!1}={})=>{const l=r.$$.callbacks[e];if(l){const o=Qe(e,t,{cancelable:i});return l.slice().forEach(s=>{s.call(r,o)}),!o.defaultPrevented}return!0}}const Q=[],he=[];let ee=[];const pe=[],Ee=Promise.resolve();let de=!1;function $e(){de||(de=!0,Ee.then(y))}function it(){return $e(),Ee}function ge(r){ee.push(r)}const me=new Set;let te=0;function y(){if(te!==0)return;const r=ne;do{try{for(;te<Q.length;){const e=Q[te];te++,ie(e),lt(e.$$)}}catch(e){throw Q.length=0,te=0,e}for(ie(null),Q.length=0,te=0;he.length;)he.pop()();for(let e=0;e<ee.length;e+=1){const t=ee[e];me.has(t)||(me.add(t),t())}ee.length=0}while(Q.length);for(;pe.length;)pe.pop()();de=!1,me.clear(),ie(r)}function lt(r){if(r.fragment!==null){r.update(),re(r.before_update);const e=r.dirty;r.dirty=[-1],r.fragment&&r.fragment.p(r.ctx,e),r.after_update.forEach(ge)}}function ot(r){const e=[],t=[];ee.forEach(i=>r.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),ee=e}const st=new Set;function ct(r,e){r&&r.i&&(st.delete(r),r.i(e))}function ft(r,e,t){const{fragment:i,after_update:l}=r.$$;i&&i.m(e,t),ge(()=>{const o=r.$$.on_mount.map(we).filter(ve);r.$$.on_destroy?r.$$.on_destroy.push(...o):re(o),r.$$.on_mount=[]}),l.forEach(ge)}function ut(r,e){const t=r.$$;t.fragment!==null&&(ot(t.after_update),re(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function at(r,e){r.$$.dirty[0]===-1&&(Q.push(r),$e(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<<e%31}function ht(r,e,t,i,l,o,s=null,u=[-1]){const f=ne;ie(r);const a=r.$$={fragment:null,ctx:[],props:o,update:O,not_equal:l,bound:ye(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(f?f.$$.context:[])),callbacks:ye(),dirty:u,skip_bound:!1,root:e.target||f.$$.root};s&&s(a.root);let j=!1;if(a.ctx=t?t(r,e.props||{},(C,P,...H)=>{const q=H.length?H[0]:P;return a.ctx&&l(a.ctx[C],a.ctx[C]=q)&&(!a.skip_bound&&a.bound[C]&&a.bound[C](q),j&&at(r,C)),P}):[],a.update(),j=!0,re(a.before_update),a.fragment=i?i(a.ctx):!1,e.target){if(e.hydrate){const C=Ke(e.target);a.fragment&&a.fragment.l(C),C.forEach(R)}else a.fragment&&a.fragment.c();e.intro&&ct(r.$$.fragment),ft(r,e.target,e.anchor),y()}ie(f)}let xe;typeof HTMLElement=="function"&&(xe=class extends HTMLElement{constructor(e,t,i){super();D(this,"$$ctor");D(this,"$$s");D(this,"$$c");D(this,"$$cn",!1);D(this,"$$d",{});D(this,"$$r",!1);D(this,"$$p_d",{});D(this,"$$l",{});D(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const l=this.$$c.$on(e,t);this.$$l_u.set(t,l)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){const l=this.$$l_u.get(t);l&&(l(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(o){return()=>{let s;return{c:function(){s=I("slot"),o!=="default"&&c(s,"name",o)},m:function(a,j){T(a,s,j)},d:function(a){a&&R(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},i=et(this);for(const o of this.$$s)o in i&&(t[o]=[e(o)]);for(const o of this.attributes){const s=this.$$g_p(o.name);s in this.$$d||(this.$$d[s]=le(s,o.value,this.$$p_d,"toProp"))}for(const o in this.$$p_d)!(o in this.$$d)&&this[o]!==void 0&&(this.$$d[o]=this[o],delete this[o]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const l=()=>{this.$$r=!0;for(const o in this.$$p_d)if(this.$$d[o]=this.$$c.$$.ctx[this.$$c.$$.props[o]],this.$$p_d[o].reflect){const s=le(o,this.$$d[o],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[o].attribute||o):this.setAttribute(this.$$p_d[o].attribute||o,s)}this.$$r=!1};this.$$c.$$.after_update.push(l),l();for(const o in this.$$l)for(const s of this.$$l[o]){const u=this.$$c.$on(o,s);this.$$l_u.set(s,u)}this.$$l={}}}attributeChangedCallback(e,t,i){var l;this.$$r||(e=this.$$g_p(e),this.$$d[e]=le(e,i,this.$$p_d,"toProp"),(l=this.$$c)==null||l.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function le(r,e,t,i){var o;const l=(o=t[r])==null?void 0:o.type;if(e=l==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[r])return e;if(i==="toAttribute")switch(l){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(l){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function dt(r,e,t,i,l,o){let s=class extends xe{constructor(){super(r,t,l),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(u=>(e[u].attribute||u).toLowerCase())}};return Object.keys(e).forEach(u=>{Object.defineProperty(s.prototype,u,{get(){return this.$$c&&u in this.$$c?this.$$c[u]:this.$$d[u]},set(f){var a;f=le(u,f,e),this.$$d[u]=f,(a=this.$$c)==null||a.$set({[u]:f})}})}),i.forEach(u=>{Object.defineProperty(s.prototype,u,{get(){var f;return(f=this.$$c)==null?void 0:f[u]}})}),o&&(s=o(s)),r.element=s,s}class gt{constructor(){D(this,"$$");D(this,"$$set")}$destroy(){ut(this,1),this.$destroy=O}$on(e,t){if(!ve(t))return O;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const l=i.indexOf(t);l!==-1&&i.splice(l,1)}}$set(e){this.$$set&&!We(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const mt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(mt);const bt=new TextEncoder;function _t(r){return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function wt(r,e="SHA-256",t=1e5){const i=Date.now().toString(16);r||(r=Math.round(Math.random()*t));const l=await Ce(i,r,e);return{algorithm:e,challenge:l,salt:i,signature:""}}async function Ce(r,e,t){return _t(await crypto.subtle.digest(t.toUpperCase(),bt.encode(r+e)))}function yt(r,e,t="SHA-256",i=1e6,l=0){const o=new AbortController,s=Date.now();return{promise:(async()=>{for(let f=l;f<=i;f+=1){if(o.signal.aborted)return null;if(await Ce(e,f,t)===r)return{number:f,took:Date.now()-s}}return null})(),controller:o}}var m=(r=>(r.ERROR="error",r.VERIFIED="verified",r.VERIFYING="verifying",r.UNVERIFIED="unverified",r.EXPIRED="expired",r))(m||{});function Le(r){let e,t,i;return{c(){e=Z("svg"),t=Z("path"),i=Z("path"),c(t,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),c(t,"fill","currentColor"),c(t,"opacity",".25"),c(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),c(i,"fill","currentColor"),c(i,"class","altcha-spinner"),c(e,"width","24"),c(e,"height","24"),c(e,"viewBox","0 0 24 24"),c(e,"xmlns","http://www.w3.org/2000/svg")},m(l,o){T(l,e,o),w(e,t),w(e,i)},d(l){l&&R(e)}}}function vt(r){let e,t=r[9].label+"",i;return{c(){e=I("label"),c(e,"for",i=r[3]+"_checkbox")},m(l,o){T(l,e,o),e.innerHTML=t},p(l,o){o[0]&512&&t!==(t=l[9].label+"")&&(e.innerHTML=t),o[0]&8&&i!==(i=l[3]+"_checkbox")&&c(e,"for",i)},d(l){l&&R(e)}}}function kt(r){let e,t=r[9].verifying+"";return{c(){e=I("span")},m(i,l){T(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].verifying+"")&&(e.innerHTML=t)},d(i){i&&R(e)}}}function pt(r){let e,t=r[9].verified+"",i,l;return{c(){e=I("span"),i=Y(),l=I("input"),c(l,"type","hidden"),c(l,"name",r[3]),l.value=r[4]},m(o,s){T(o,e,s),e.innerHTML=t,T(o,i,s),T(o,l,s)},p(o,s){s[0]&512&&t!==(t=o[9].verified+"")&&(e.innerHTML=t),s[0]&8&&c(l,"name",o[3]),s[0]&16&&(l.value=o[4])},d(o){o&&(R(e),R(i),R(l))}}}function Ie(r){let e,t,i,l,o,s,u;return{c(){e=I("div"),t=I("a"),i=Z("svg"),l=Z("path"),o=Z("path"),s=Z("path"),c(l,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),c(l,"fill","currentColor"),c(o,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),c(o,"fill","currentColor"),c(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),c(s,"fill","currentColor"),c(i,"width","22"),c(i,"height","22"),c(i,"viewBox","0 0 20 20"),c(i,"fill","none"),c(i,"xmlns","http://www.w3.org/2000/svg"),c(t,"href",Te),c(t,"target","_blank"),c(t,"class","altcha-logo"),c(t,"aria-label",u=r[9].ariaLinkLabel)},m(f,a){T(f,e,a),w(e,t),w(t,i),w(i,l),w(i,o),w(i,s)},p(f,a){a[0]&512&&u!==(u=f[9].ariaLinkLabel)&&c(t,"aria-label",u)},d(f){f&&R(e)}}}function Ae(r){let e,t,i,l;function o(f,a){return f[5]===m.EXPIRED?$t:Et}let s=o(r),u=s(r);return{c(){e=I("div"),t=Z("svg"),i=Z("path"),l=Y(),u.c(),c(i,"stroke-linecap","round"),c(i,"stroke-linejoin","round"),c(i,"d","M6 18L18 6M6 6l12 12"),c(t,"width","14"),c(t,"height","14"),c(t,"xmlns","http://www.w3.org/2000/svg"),c(t,"fill","none"),c(t,"viewBox","0 0 24 24"),c(t,"stroke-width","1.5"),c(t,"stroke","currentColor"),c(e,"class","altcha-error")},m(f,a){T(f,e,a),w(e,t),w(t,i),w(e,l),u.m(e,null)},p(f,a){s===(s=o(f))&&u?u.p(f,a):(u.d(1),u=s(f),u&&(u.c(),u.m(e,null)))},d(f){f&&R(e),u.d()}}}function Et(r){let e,t=r[9].error+"";return{c(){e=I("div"),c(e,"title",r[8])},m(i,l){T(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].error+"")&&(e.innerHTML=t),l[0]&256&&c(e,"title",i[8])},d(i){i&&R(e)}}}function $t(r){let e,t=r[9].expired+"";return{c(){e=I("div"),c(e,"title",r[8])},m(i,l){T(i,e,l),e.innerHTML=t},p(i,l){l[0]&512&&t!==(t=i[9].expired+"")&&(e.innerHTML=t),l[0]&256&&c(e,"title",i[8])},d(i){i&&R(e)}}}function Re(r){let e,t,i=r[9].footer+"";return{c(){e=I("div"),t=I("div"),c(e,"class","altcha-footer")},m(l,o){T(l,e,o),w(e,t),t.innerHTML=i},p(l,o){o[0]&512&&i!==(i=l[9].footer+"")&&(t.innerHTML=i)},d(l){l&&R(e)}}}function xt(r){let e,t,i,l,o,s,u,f,a,j,C,P,H,q,k=r[5]===m.VERIFYING&&Le();function J(d,A){return d[5]===m.VERIFIED?pt:d[5]===m.VERIFYING?kt:vt}let G=J(r),p=G(r),E=r[2]!==!0&&Ie(r),g=(r[8]||r[5]===m.EXPIRED)&&Ae(r),_=r[9].footer&&r[1]!==!0&&Re(r);return{c(){e=I("div"),t=I("div"),k&&k.c(),i=Y(),l=I("div"),o=I("input"),f=Y(),a=I("div"),p.c(),j=Y(),E&&E.c(),C=Y(),g&&g.c(),P=Y(),_&&_.c(),c(o,"type","checkbox"),c(o,"id",s=r[3]+"_checkbox"),o.required=u=r[0]!=="onsubmit",c(l,"class","altcha-checkbox"),ke(l,"altcha-hidden",r[5]===m.VERIFYING),c(a,"class","altcha-label"),c(t,"class","altcha-main"),c(e,"class","altcha"),c(e,"data-state",r[5])},m(d,A){T(d,e,A),w(e,t),k&&k.m(t,null),w(t,i),w(t,l),w(l,o),o.checked=r[6],w(t,f),w(t,a),p.m(a,null),w(t,j),E&&E.m(t,null),w(e,C),g&&g.m(e,null),w(e,P),_&&_.m(e,null),r[31](e),H||(q=[ue(o,"change",r[30]),ue(o,"change",r[10]),ue(o,"invalid",r[11])],H=!0)},p(d,A){d[5]===m.VERIFYING?k||(k=Le(),k.c(),k.m(t,i)):k&&(k.d(1),k=null),A[0]&8&&s!==(s=d[3]+"_checkbox")&&c(o,"id",s),A[0]&1&&u!==(u=d[0]!=="onsubmit")&&(o.required=u),A[0]&64&&(o.checked=d[6]),A[0]&32&&ke(l,"altcha-hidden",d[5]===m.VERIFYING),G===(G=J(d))&&p?p.p(d,A):(p.d(1),p=G(d),p&&(p.c(),p.m(a,null))),d[2]!==!0?E?E.p(d,A):(E=Ie(d),E.c(),E.m(t,null)):E&&(E.d(1),E=null),d[8]||d[5]===m.EXPIRED?g?g.p(d,A):(g=Ae(d),g.c(),g.m(e,P)):g&&(g.d(1),g=null),d[9].footer&&d[1]!==!0?_?_.p(d,A):(_=Re(d),_.c(),_.m(e,null)):_&&(_.d(1),_=null),A[0]&32&&c(e,"data-state",d[5])},i:O,o:O,d(d){d&&R(e),k&&k.d(),p.d(),E&&E.d(),g&&g.d(),_&&_.d(),r[31](null),H=!1,re(q)}}}const Me="Visit Altcha.org",Te="https://altcha.org/";function Se(r){return JSON.parse(r)}function Ct(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function Lt(r,e,t){var Ze,qe;let i,l,o,{auto:s=void 0}=e,{blockspam:u=void 0}=e,{challengeurl:f=void 0}=e,{challengejson:a=void 0}=e,{debug:j=!1}=e,{expire:C=void 0}=e,{hidefooter:P=!1}=e,{hidelogo:H=!1}=e,{name:q="altcha"}=e,{maxnumber:k=1e6}=e,{mockerror:J=!1}=e,{refetchonexpire:G=!0}=e,{spamfilter:p=!1}=e,{strings:E=void 0}=e,{test:g=!1}=e,{verifyurl:_=void 0}=e,{workers:d=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:A=void 0}=e;const be=nt(),Ne=["SHA-256","SHA-384","SHA-512"],De=(qe=(Ze=document.documentElement.lang)==null?void 0:Ze.split("-"))==null?void 0:qe[0];let X=!1,oe,b=null,_e=null,W=null,F=m.UNVERIFIED,U=null;rt(()=>{b&&(b.removeEventListener("submit",Oe),b.removeEventListener("reset",Pe),b.removeEventListener("focusin",Ve),b=null),U&&(clearTimeout(U),U=null)}),tt(()=>{L("mounted","0.5.0"),L("workers",d),g&&L("using test mode"),C&&se(C),s!==void 0&&L("auto",s),b=oe.closest("form"),b&&(b.addEventListener("submit",Oe),b.addEventListener("reset",Pe),s==="onfocus"&&b.addEventListener("focusin",Ve)),s==="onload"&&z()});function L(...n){(j||n.some(h=>h instanceof Error))&&console[n[0]instanceof Error?"error":"log"]("ALTCHA",...n)}function Ve(n){F===m.UNVERIFIED&&z()}function Oe(n){b&&s==="onsubmit"&&F===m.UNVERIFIED&&(n.preventDefault(),n.stopPropagation(),z().then(()=>{b==null||b.requestSubmit()}))}function Pe(){ce()}function He(n,h){return btoa(JSON.stringify({algorithm:n.algorithm,challenge:n.challenge,number:h.number,salt:n.salt,signature:n.signature,test:g?!0:void 0,took:h.took}))}function Fe(n){if(!n.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(n.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!Ne.includes(n.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${Ne.join(", ")}`);if(!n.challenge||n.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!n.salt||n.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function It(){var n;if(J)throw L("mocking error"),new Error("Mocked error.");if(i)return L("using provided json data"),i;if(g)return L("generating test challenge",{test:g}),wt(typeof g!="boolean"?+g:void 0);{if(!f)throw new Error("Attribute challengeurl not set.");L("fetching challenge from",f);const h=await fetch(f,{headers:{"x-altcha-spam-filter":p?"1":"0"}});if(h.status!==200)throw new Error(`Server responded with ${h.status}.`);const v=h.headers.get("Expires"),M=h.headers.get("X-Altcha-Config"),S=await h.json(),N=new URLSearchParams((n=S.salt.split("?"))==null?void 0:n[1]),K=N.get("expires")||N.get("expire");if(K){const $=new Date(+K*1e3),x=isNaN($.getTime())?0:$.getTime()-Date.now();x>0&&se(x)}if(M)try{const $=JSON.parse(M);$&&typeof $=="object"&&($.verifyurl&&($.verifyurl=new URL($.verifyurl,new URL(f)).toString()),Be($))}catch($){L("unable to configure from X-Altcha-Config",$)}if(!C&&(v!=null&&v.length)){const $=Date.parse(v);if($){const x=$-Date.now();x>0&&se(x)}}return S}}function Ue(){f&&G&&F===m.VERIFIED?z():ce(m.EXPIRED,o.expired)}async function At(n){let h=null;if("Worker"in window){try{h=await Rt(n.challenge,n.salt,n.algorithm,n.maxnumber)}catch(v){L(v)}if((h==null?void 0:h.number)!==void 0)return{data:n,solution:h}}return{data:n,solution:await yt(n.challenge,n.salt,n.algorithm,n.maxnumber||k).promise}}async function Rt(n,h,v,M=typeof g=="number"?g:k,S=Math.ceil(d)){const N=[];if(S<1)throw new Error("Wrong number of workers configured.");if(S>16)throw new Error("Too many workers. Max. 16 allowed workers.");for(let x=0;x<S;x++)N.push(createAltchaWorker(A));const K=Math.ceil(M/S),$=await Promise.all(N.map((x,fe)=>{const Ge=fe*K;return new Promise(Ot=>{x.addEventListener("message",Xe=>{if(Xe.data)for(const Ye of N)Ye!==x&&Ye.postMessage({type:"abort"});Ot(Xe.data)}),x.postMessage({payload:{alg:v,challenge:n,max:Ge+K,salt:h,start:Ge},type:"work"})})}));for(const x of N)x.terminate();return $.find(x=>!!x)||null}function Mt(){[m.UNVERIFIED,m.ERROR,m.EXPIRED].includes(F)?p&&(b==null?void 0:b.reportValidity())===!1?t(6,X=!1):z():t(6,X=!0)}function Tt(){F===m.VERIFYING&&alert(o.waitAlert)}function se(n){L("expire",n),U&&(clearTimeout(U),U=null),n<1?Ue():U=setTimeout(Ue,n)}function St(n){var v;const h=b==null?void 0:b.querySelector(typeof n=="string"?`input[name="${n}"]`:'input[type="email"]:not([data-no-spamfilter])');return((v=h==null?void 0:h.value)==null?void 0:v.slice(h.value.indexOf("@")))||void 0}function jt(n){return[...(b==null?void 0:b.querySelectorAll(n!=null&&n.length?n.map(v=>`input[name="${v}"]`).join(", "):'input[type="email"]:not([data-no-spamfilter]), input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((v,M)=>{const S=M.name,N=M.value.trim();return S&&N&&(v[S]=N),v},{})}async function Nt(n){if(!_)throw new Error("Attribute verifyurl not set.");L("requesting server verification from",_);const h={payload:n};if(p){const{email:S,expectedLanguages:N,expectedCountries:K,fields:$,ipAddress:x,timeZone:fe}=typeof p=="object"?p:{email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,timeZone:void 0};h.ipAddress=x===!1?void 0:x||"auto",h.email=S===!1?void 0:St(S),h.fields=$===!1?void 0:jt($),h.timeZone=fe===!1?void 0:fe||Ct(),h.expectedCountries=K,h.expectedLanguages=N||(De?[De]:void 0)}const v=await fetch(_,{body:JSON.stringify(h),headers:{"content-type":"application/json"},method:"POST"});if(v.status!==200)throw new Error(`Server responded with ${v.status}.`);const M=await v.json();if(M!=null&&M.payload&&t(4,W=M.payload),be("serververification",M),u&&M.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function Be(n){n.auto!==void 0&&(t(0,s=n.auto),s==="onload"&&z()),n.expire!==void 0&&(se(n.expire),t(14,C=n.expire)),n.challenge&&(Fe(n.challenge),i=n.challenge),n.challengeurl!==void 0&&t(12,f=n.challengeurl),n.debug!==void 0&&t(13,j=!!n.debug),n.hidefooter!==void 0&&t(1,P=!!n.hidefooter),n.hidelogo!==void 0&&t(2,H=!!n.hidelogo),n.maxnumber!==void 0&&t(15,k=+n.maxnumber),n.mockerror!==void 0&&t(16,J=!!n.mockerror),n.name!==void 0&&t(3,q=n.name),n.refetchonexpire!==void 0&&t(17,G=!!n.refetchonexpire),n.spamfilter!==void 0&&t(18,p=typeof n.spamfilter=="object"?n.spamfilter:!!n.spamfilter),n.strings&&t(29,l=n.strings),n.test!==void 0&&t(19,g=typeof n.test=="number"?n.test:!!n.test),n.verifyurl!==void 0&&t(20,_=n.verifyurl),n.workers!==void 0&&t(21,d=+n.workers)}function ce(n=m.UNVERIFIED,h=null){U&&(clearTimeout(U),U=null),t(6,X=!1),t(8,_e=h),t(4,W=null),t(5,F=n)}async function z(){return ce(m.VERIFYING),It().then(n=>(Fe(n),L("challenge",n),At(n))).then(({data:n,solution:h})=>{if(L("solution",h),(h==null?void 0:h.number)!==void 0){if(_)return Nt(He(n,h));t(4,W=He(n,h)),L("payload",W)}else throw L("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{it().then(()=>{t(5,F=m.VERIFIED),t(6,X=!0),L("verified"),be("verified",{payload:W})})}).catch(n=>{L(n),t(5,F=m.ERROR),t(6,X=!1),t(8,_e=n.message)})}function Dt(){X=this.checked,t(6,X)}function Vt(n){he[n?"unshift":"push"](()=>{oe=n,t(7,oe)})}return r.$$set=n=>{"auto"in n&&t(0,s=n.auto),"blockspam"in n&&t(22,u=n.blockspam),"challengeurl"in n&&t(12,f=n.challengeurl),"challengejson"in n&&t(23,a=n.challengejson),"debug"in n&&t(13,j=n.debug),"expire"in n&&t(14,C=n.expire),"hidefooter"in n&&t(1,P=n.hidefooter),"hidelogo"in n&&t(2,H=n.hidelogo),"name"in n&&t(3,q=n.name),"maxnumber"in n&&t(15,k=n.maxnumber),"mockerror"in n&&t(16,J=n.mockerror),"refetchonexpire"in n&&t(17,G=n.refetchonexpire),"spamfilter"in n&&t(18,p=n.spamfilter),"strings"in n&&t(24,E=n.strings),"test"in n&&t(19,g=n.test),"verifyurl"in n&&t(20,_=n.verifyurl),"workers"in n&&t(21,d=n.workers),"workerurl"in n&&t(25,A=n.workerurl)},r.$$.update=()=>{r.$$.dirty[0]&8388608&&(i=a?Se(a):void 0),r.$$.dirty[0]&16777216&&t(29,l=E?Se(E):{}),r.$$.dirty[0]&536870912&&t(9,o={ariaLinkLabel:Me,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by <a href="${Te}" target="_blank" aria-label="${l.ariaLinkLabel||Me}">ALTCHA</a>`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...l}),r.$$.dirty[0]&48&&be("statechange",{payload:W,state:F})},[s,P,H,q,W,F,X,oe,_e,o,Mt,Tt,f,j,C,k,J,G,p,g,_,d,u,a,E,A,Be,ce,z,l,Dt,Vt]}class je extends gt{constructor(e){super(),ht(this,e,Lt,xt,Je,{auto:0,blockspam:22,challengeurl:12,challengejson:23,debug:13,expire:14,hidefooter:1,hidelogo:2,name:3,maxnumber:15,mockerror:16,refetchonexpire:17,spamfilter:18,strings:24,test:19,verifyurl:20,workers:21,workerurl:25,configure:26,reset:27,verify:28},null,[-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),y()}get blockspam(){return this.$$.ctx[22]}set blockspam(e){this.$$set({blockspam:e}),y()}get challengeurl(){return this.$$.ctx[12]}set challengeurl(e){this.$$set({challengeurl:e}),y()}get challengejson(){return this.$$.ctx[23]}set challengejson(e){this.$$set({challengejson:e}),y()}get debug(){return this.$$.ctx[13]}set debug(e){this.$$set({debug:e}),y()}get expire(){return this.$$.ctx[14]}set expire(e){this.$$set({expire:e}),y()}get hidefooter(){return this.$$.ctx[1]}set hidefooter(e){this.$$set({hidefooter:e}),y()}get hidelogo(){return this.$$.ctx[2]}set hidelogo(e){this.$$set({hidelogo:e}),y()}get name(){return this.$$.ctx[3]}set name(e){this.$$set({name:e}),y()}get maxnumber(){return this.$$.ctx[15]}set maxnumber(e){this.$$set({maxnumber:e}),y()}get mockerror(){return this.$$.ctx[16]}set mockerror(e){this.$$set({mockerror:e}),y()}get refetchonexpire(){return this.$$.ctx[17]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),y()}get spamfilter(){return this.$$.ctx[18]}set spamfilter(e){this.$$set({spamfilter:e}),y()}get strings(){return this.$$.ctx[24]}set strings(e){this.$$set({strings:e}),y()}get test(){return this.$$.ctx[19]}set test(e){this.$$set({test:e}),y()}get verifyurl(){return this.$$.ctx[20]}set verifyurl(e){this.$$set({verifyurl:e}),y()}get workers(){return this.$$.ctx[21]}set workers(e){this.$$set({workers:e}),y()}get workerurl(){return this.$$.ctx[25]}set workerurl(e){this.$$set({workerurl:e}),y()}get configure(){return this.$$.ctx[26]}get reset(){return this.$$.ctx[27]}get verify(){return this.$$.ctx[28]}}return customElements.define("altcha-widget",dt(je,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},expire:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},[],["configure","reset","verify"],!1)),globalThis.createAltchaWorker=r=>new Worker(new URL(r||"./worker.js",V&&V.src||new URL("altcha.iife.js",document.baseURI).href)),B.Altcha=je,Object.defineProperty(B,Symbol.toStringTag,{value:"Module"}),B}({});