diff --git a/README.md b/README.md index a4a7fe3..42e39f3 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,10 @@ class MyForm(forms.Form): URL location of the Altcha JavaScript file. Default to the django-altcha embedded file. +### ALTCHA_INCLUDE_TRANSLATIONS + +Include Altcha [translations](https://altcha.org/docs/v2/widget-integration/#internationalization-i18n). `False` by default. + ### ALTCHA_VERIFICATION_ENABLED Set to `False` to skip Altcha validation altogether. diff --git a/django_altcha/__init__.py b/django_altcha/__init__.py index b6b811a..fba7665 100644 --- a/django_altcha/__init__.py +++ b/django_altcha/__init__.py @@ -46,6 +46,8 @@ ALTCHA_HMAC_KEY = secrets.token_hex(32) ALTCHA_JS_URL = getattr(settings, "ALTCHA_JS_URL", "/static/altcha/altcha.min.js") +ALTCHA_INCLUDE_TRANSLATIONS = getattr(settings, "ALTCHA_INCLUDE_TRANSLATIONS", False) +ALTCHA_JS_TRANSLATIONS = "/static/altcha/dist_i18n/all.min.js" # Challenge expiration duration in milliseconds. # Default to 20 minutes as per Altcha security recommendations. @@ -123,6 +125,8 @@ def get_context(self, name, value, attrs): """Generate the widget context, including ALTCHA JS URL and challenge.""" context = super().get_context(name, value, attrs) context["js_src_url"] = ALTCHA_JS_URL + context["include_trans"] = ALTCHA_INCLUDE_TRANSLATIONS + context["js_trans"] = ALTCHA_JS_TRANSLATIONS # If a `challengeurl` is provided, the challenge will be fetched from this URL. # This can be a local Django view or an external API endpoint. diff --git a/django_altcha/static/altcha/dist_i18n/all.min.js b/django_altcha/static/altcha/dist_i18n/all.min.js new file mode 100644 index 0000000..9d233c5 --- /dev/null +++ b/django_altcha/static/altcha/dist_i18n/all.min.js @@ -0,0 +1,4 @@ +/** + * Original file: /gh/altcha-org/altcha@2.2.4/dist/altcha.i18n.js + */ +var Ua=Array.isArray,Vn=Array.prototype.indexOf,jn=Array.from,ir=Object.keys,Dt=Object.defineProperty,rt=Object.getOwnPropertyDescriptor,Rn=Object.getOwnPropertyDescriptors,$n=Object.prototype,Sn=Array.prototype,Ga=Object.getPrototypeOf,ja=Object.isExtensible;const yt=()=>{};function Wa(e){for(var t=0;t"u"?e=>setTimeout(e,1):requestIdleCallback;let qt=[],Ht=[];function Ja(){var e=qt;qt=[],Wa(e)}function Xa(){var e=Ht;Ht=[],Wa(e)}function Hr(e){0===qt.length&&queueMicrotask(Ja),qt.push(e)}function Hn(e){0===Ht.length&&qn(Xa),Ht.push(e)}function On(){qt.length>0&&Ja(),Ht.length>0&&Xa()}function Qa(e){return e===this.v}function ei(e,t){return e!=e?t==t:e!==t||null!==e&&"object"==typeof e||"function"==typeof e}function Or(e){return!ei(e,this.v)}function Fn(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Mn(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Bn(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Un(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Gn(){throw new Error("https://svelte.dev/e/hydration_failed")}function Wn(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Zn(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Yn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Kn(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}const Jn=1,Xn=4,Qn=8,eo=16,to=1,ro=2,Fr="[",ti="[!",ri="]",At={},oe=Symbol(),ao="http://www.w3.org/1999/xhtml";function ai(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}let ae=null;function Ra(e){ae=e}function ii(e,t=!1,r){var a=ae={p:ae,c:null,d:!1,e:null,m:!1,s:e,x:null,l:null};Ur((()=>{a.d=!0}))}function ni(e){const t=ae;if(null!==t){void 0!==e&&(t.x=e);const o=t.e;if(null!==o){var r=V,a=I;t.e=null;try{for(var i=0;i{var t=I;Ee(o);var r=e();return Ee(t),r};return a&&r.set("length",$(e.length)),new Proxy(e,{defineProperty(e,t,a){(!("value"in a)||!1===a.configurable||!1===a.enumerable||!1===a.writable)&&Zn();var i=r.get(t);return void 0===i?(i=l((()=>$(a.value))),r.set(t,i)):y(i,l((()=>De(a.value)))),!0},deleteProperty(e,t){var n=r.get(t);if(void 0===n)t in e&&(r.set(t,l((()=>$(oe)))),Er(i));else{if(a&&"string"==typeof t){var o=r.get("length"),s=Number(t);Number.isInteger(s)&&s$(De(s?t[a]:oe)))),r.set(a,o)),void 0!==o){var c=n(o);return c===oe?void 0:c}return Reflect.get(t,a,i)},getOwnPropertyDescriptor(e,t){var a=Reflect.getOwnPropertyDescriptor(e,t);if(a&&"value"in a){var i=r.get(t);i&&(a.value=n(i))}else if(void 0===a){var o=r.get(t),l=o?.v;if(void 0!==o&&l!==oe)return{enumerable:!0,configurable:!0,value:l,writable:!0}}return a},has(e,t){if(t===zt)return!0;var a=r.get(t),i=void 0!==a&&a.v!==oe||Reflect.has(e,t);if((void 0!==a||null!==V&&(!i||rt(e,t)?.writable))&&(void 0===a&&(a=l((()=>$(i?De(e[t]):oe))),r.set(t,a)),n(a)===oe))return!1;return i},set(e,t,n,o){var s=r.get(t),c=t in e;if(a&&"length"===t)for(var u=n;u$(oe))),r.set(u+"",d))}void 0===s?(!c||rt(e,t)?.writable)&&(y(s=l((()=>$(void 0))),l((()=>De(n)))),r.set(t,s)):(c=s.v!==oe,y(s,l((()=>De(n)))));var f=Reflect.getOwnPropertyDescriptor(e,t);if(f?.set&&f.set.call(o,n),!c){if(a&&"string"==typeof t){var h=r.get("length"),g=Number(t);Number.isInteger(g)&&g>=h.v&&y(h,g+1)}Er(i)}return!0},ownKeys(e){n(i);var t=Reflect.ownKeys(e).filter((e=>{var t=r.get(e);return void 0===t||t.v!==oe}));for(var[a,o]of r)o.v!==oe&&!(a in e)&&t.push(a);return t},setPrototypeOf(){Yn()}})}function Er(e,t=1){y(e,e.v+t)}function hr(e){var t=pe|je,r=null!==I&&0!=(I.f&pe)?I:null;return null===V||null!==r&&0!=(r.f&fe)?t|=fe:V.f|=Ya,{ctx:ae,deps:null,effects:null,equals:Qa,f:t,fn:e,reactions:null,rv:0,v:null,wv:0,parent:r??V}}function $t(e){const t=hr(e);return vi(t),t}function io(e){const t=hr(e);return t.equals=Or,t}function li(e){var t=e.effects;if(null!==t){e.effects=null;for(var r=0;re.wv)return!0}(!a||null!==V&&!qe)&&me(e,le)}return!1}function uo(e,t){for(var r=t;null!==r;){if(0!=(r.f&nr))try{return void r.fn(e)}catch{r.f^=nr}r=r.parent}throw tr=!1,e}function Pa(e){return 0==(e.f&dr)&&(null===e.parent||0==(e.parent.f&nr))}function br(e,t,r,a){if(tr){if(null===r&&(tr=!1),Pa(t))throw e}else if(null!==r&&(tr=!0),uo(e,t),Pa(t))throw e}function mi(e,t,r=!0){var a=e.reactions;if(null!==a)for(var i=0;i0)for(d.length=ue+re.length,f=0;f0;){t++>1e3&&ho();var r=Nt,a=r.length;Nt=[];for(var i=0;i{Fe(t)}}function Ao(e){const t=lt(nt,e,!0);return(e={})=>new Promise((r=>{e.outro?Sr(t,(()=>{Fe(t),r(void 0)})):(Fe(t),r(void 0))}))}function Gr(e){return lt(Za,e,!1)}function Wr(e){return lt(fr,e,!0)}function Ce(e,t=[],r=hr){const a=t.map(r);return ki((()=>e(...a.map(n))))}function ki(e,t=0){return lt(fr|Dr|t,e,!0)}function $r(e,t=!0){return lt(fr|Re,e,!0,t)}function _i(e){var t=e.teardown;if(null!==t){const e=Ft,r=I;Sa(!0),Ee(null);try{t.call(null)}finally{Sa(e),Ee(r)}}}function wi(e,t=!1){var r=e.first;for(e.first=e.last=null;null!==r;){var a=r.next;0!=(r.f&nt)?r.parent=null:Fe(r,t),r=a}}function ko(e){for(var t=e.first;null!==t;){var r=t.next;0==(t.f&Re)&&Fe(t),t=r}}function Fe(e,t=!0){var r=!1;(t||0!=(e.f&Nn))&&null!==e.nodes_start&&(Ci(e.nodes_start,e.nodes_end),r=!0),wi(e,t&&!r),ur(e,0),me(e,dr);var a=e.transitions;if(null!==a)for(const e of a)e.stop();_i(e);var i=e.parent;null!==i&&null!==i.first&&Li(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=null}function Ci(e,t){for(;null!==e;){var r=e===t?null:Me(e);e.remove(),e=r}}function Li(e){var t=e.parent,r=e.prev,a=e.next;null!==r&&(r.next=a),null!==a&&(a.prev=r),null!==t&&(t.first===e&&(t.first=a),t.last===e&&(t.last=r))}function Sr(e,t){var r=[];xi(e,r,!0),_o(r,(()=>{Fe(e),t&&t()}))}function _o(e,t){var r=e.length;if(r>0){var a=()=>--r||t();for(var i of e)i.out(a)}else t()}function xi(e,t,r){if(0==(e.f&kt)){if(e.f^=kt,null!==e.transitions)for(const a of e.transitions)(a.is_global||r)&&t.push(a);for(var a=e.first;null!==a;){var i=a.next;xi(a,t,!!(0!=(a.f&qr)||0!=(a.f&Re))&&r),a=i}}}function za(e){Ei(e,!0)}function Ei(e,t){if(0!=(e.f&kt)){e.f^=kt,0==(e.f&le)&&(e.f^=le),Mt(e)&&(me(e,je),pr(e));for(var r=e.first;null!==r;){var a=r.next;Ei(r,!!(0!=(r.f&qr)||0!=(r.f&Re))&&t),r=a}if(null!==e.transitions)for(const r of e.transitions)(r.is_global||t)&&r.in()}}const wo=["touchstart","touchmove"];function Co(e){return wo.includes(e)}function Lo(e,t){if(t){const t=document.body;e.autofocus=!0,Hr((()=>{document.activeElement===t&&e.focus()}))}}let Na=!1;function Ti(){Na||(Na=!0,document.addEventListener("reset",(e=>{Promise.resolve().then((()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()}))}),{capture:!0}))}function Ii(e){var t=I,r=V;Ee(null),Oe(null);try{return e()}finally{Ee(t),Oe(r)}}function xo(e,t,r,a=r){e.addEventListener(t,(()=>Ii(r)));const i=e.__on_r;e.__on_r=i?()=>{i(),a(!0)}:()=>a(!0),Ti()}const Vi=new Set,Pr=new Set;function Eo(e,t,r,a={}){function i(e){if(a.capture||Pt.call(t,e),!e.cancelBubble)return Ii((()=>r?.call(this,e)))}return e.startsWith("pointer")||e.startsWith("touch")||"wheel"===e?Hr((()=>{t.addEventListener(e,i,a)})):t.addEventListener(e,i,a),i}function Ne(e,t,r,a,i){var n={capture:a,passive:i},o=Eo(e,t,r,n);(t===document.body||t===window||t===document)&&Ur((()=>{t.removeEventListener(e,o,n)}))}function To(e){for(var t=0;tn||r});var u=I,d=V;Ee(null),Oe(null);try{for(var f,h=[];null!==n;){var g=n.assignedSlot||n.parentNode||n.host||null;try{var v=n["__"+a];if(null!=v&&(!n.disabled||e.target===n))if(Ua(v)){var[p,...b]=v;p.apply(n,[e,...b])}else v.call(n,e)}catch(e){f?h.push(e):f=e}if(e.cancelBubble||g===t||null===g)break;n=g}if(f){for(let e of h)queueMicrotask((()=>{throw e}));throw f}}finally{e.__root=t,delete e.currentTarget,Ee(u),Oe(d)}}}function Zr(e){var t=document.createElement("template");return t.innerHTML=e,t.content}function xe(e,t){var r=V;null===r.nodes_start&&(r.nodes_start=e,r.nodes_end=t)}function ye(e,t){var r,a=0!=(1&t),i=0!=(2&t),n=!e.startsWith("");return()=>{if(z)return xe(P,null),P;void 0===r&&(r=Zr(n?e:""+e),a||(r=ge(r)));var t=i||di?document.importNode(r,!0):r.cloneNode(!0);a?xe(ge(t),t.lastChild):xe(t,t);return t}}function mr(e,t,r="svg"){var a,i=`<${r}>${!e.startsWith("")?e:""+e}`;return()=>{if(z)return xe(P,null),P;if(!a){var e=Zr(i);a=ge(ge(e))}var t=a.cloneNode(!0);return xe(t,t),t}}function Xt(){if(z)return xe(P,null),P;var e=document.createDocumentFragment(),t=document.createComment(""),r=vr();return e.append(t,r),xe(t,r),e}function M(e,t){if(z)return V.nodes_end=P,void _t();null!==e&&e.before(t)}function Io(e,t){var r=null==t?"":"object"==typeof t?t+"":t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=r+"")}function ji(e,t){return Ri(e,t)}function Vo(e,t){jr(),t.intro=t.intro??!1;const r=t.target,a=z,i=P;try{for(var n=ge(r);n&&(8!==n.nodeType||n.data!==Fr);)n=Me(n);if(!n)throw At;mt(!0),He(n),_t();const a=Ri(e,{...t,anchor:n});if(null===P||8!==P.nodeType||P.data!==ri)throw gr(),At;return mt(!1),a}catch(a){if(a===At)return!1===t.recover&&Gn(),jr(),so(r),mt(!1),ji(e,t);throw a}finally{mt(a),He(i)}}const bt=new Map;function Ri(e,{target:t,anchor:r,props:a={},events:i,context:n,intro:o=!0}){jr();var l=new Set,s=e=>{for(var r=0;r{var o=r??t.appendChild(vr());return $r((()=>{n&&(ii({}),ae.c=n);i&&(a.$$events=i),z&&xe(o,null),c=e(o,a)||{},z&&(V.nodes_end=P),n&&ni()})),()=>{for(var e of l){t.removeEventListener(e,Pt);var a=bt.get(e);0==--a?(document.removeEventListener(e,Pt),bt.delete(e)):bt.set(e,a)}Pr.delete(s),o!==r&&o.parentNode?.removeChild(o)}}));return zr.set(c,u),c}let zr=new WeakMap;function jo(e,t){const r=zr.get(e);return r?(zr.delete(e),r(t)):Promise.resolve()}function J(e,t,[r,a]=[0,0]){z&&0===r&&_t();var i=e,n=null,o=null,l=oe,s=!1;const c=(e,t=!0)=>{s=!0,u(t,e)},u=(e,t)=>{if(l===(l=e))return;let s=!1;if(z&&-1!==a){if(0===r){const e=i.data;e===Fr?a=0:e===ti?a=1/0:(a=parseInt(e.substring(1)))!=a&&(a=l?1/0:-1)}!!l===a>r&&(He(i=lo()),mt(!1),s=!0,a=-1)}l?(n?za(n):t&&(n=$r((()=>t(i)))),o&&Sr(o,(()=>{o=null}))):(o?za(o):t&&(o=$r((()=>t(i,[r+1,a])))),n&&Sr(n,(()=>{n=null}))),s&&mt(!0)};ki((()=>{s=!1,t(c),s||u(null,null)}),r>0?qr:0),z&&(i=P)}function tt(e,t,r=!1,a=!1,i=!1){var n=e,o="";Ce((()=>{var e=V;if(o!==(o=t()??"")){if(null!==e.nodes_start&&(Ci(e.nodes_start,e.nodes_end),e.nodes_start=e.nodes_end=null),""!==o){if(z){P.data;for(var i=_t(),l=i;null!==i&&(8!==i.nodeType||""!==i.data);)l=i,i=Me(i);if(null===i)throw gr(),At;return xe(P,l),void(n=He(i))}var s=o+"";r?s=`${s}`:a&&(s=`${s}`);var c=Zr(s);if((r||a)&&(c=ge(c)),xe(ge(c),c.lastChild),r||a)for(;ge(c);)n.before(ge(c));else n.before(c)}}else z&&_t()}))}function Ro(e,t,r,a,i){z&&_t();var n=t.$$slots?.[r],o=!1;!0===n&&(n=t.children,o=!0),void 0===n||n(e,o?()=>a:a)}const Da=[..." \t\n\r\f \v\ufeff"];function $o(e,t,r){var a=""+e;if(r)for(var i in r)if(r[i])a=a?a+" "+i:i;else if(a.length)for(var n=i.length,o=0;(o=a.indexOf(i,o))>=0;){var l=o+n;0!==o&&!Da.includes(a[o-1])||l!==a.length&&!Da.includes(a[l])?o=l:a=(0===o?"":a.substring(0,o))+a.substring(l+1)}return""===a?null:a}function So(e,t,r,a,i,n){var o=e.__className;if(z||o!==r||void 0===o){var l=$o(r,a,n);(!z||l!==e.getAttribute("class"))&&(null==l?e.removeAttribute("class"):e.className=l),e.__className=r}else if(n&&i!==n)for(var s in n){var c=!!n[s];(null==i||c!==!!i[s])&&e.classList.toggle(s,c)}return n}const Po=Symbol("is custom element"),zo=Symbol("is html");function qa(e){if(z){var t=!1,r=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var r=e.value;T(e,"value",null),e.value=r}if(e.hasAttribute("checked")){var a=e.checked;T(e,"checked",null),e.checked=a}}};e.__on_r=r,Hn(r),Ti()}}function No(e,t){var r=$i(e);r.value===(r.value=t??void 0)||e.value===t&&(0!==t||"PROGRESS"!==e.nodeName)||(e.value=t??"")}function T(e,t,r,a){var i=$i(e);z&&(i[t]=e.getAttribute(t),"src"===t||"srcset"===t||"href"===t&&"LINK"===e.nodeName)||i[t]!==(i[t]=r)&&("loading"===t&&(e[Dn]=r),null==r?e.removeAttribute(t):"string"!=typeof r&&Do(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function $i(e){return e.__attributes??={[Po]:e.nodeName.includes("-"),[zo]:e.namespaceURI===ao}}var Ha=new Map;function Do(e){var t=Ha.get(e.nodeName);if(t)return t;Ha.set(e.nodeName,t=[]);for(var r,a=e,i=Element.prototype;i!==a;){for(var n in r=Rn(a))r[n].set&&t.push(n);a=Ga(a)}return t}function qo(e,t,r=t){xo(e,"change",(t=>{var a=t?e.defaultChecked:e.checked;r(a)})),(z&&e.defaultChecked!==e.checked||null==it(t))&&r(e.checked),Wr((()=>{var r=t();e.checked=!!r}))}function Oa(e,t){return e===t||e?.[zt]===t}function Qt(e={},t,r,a){return Gr((()=>{var a,i;return Wr((()=>{a=i,i=[],it((()=>{e!==r(...i)&&(t(e,...i),a&&Oa(r(...a),e)&&t(null,...a))}))})),()=>{Hr((()=>{i&&Oa(r(...i),e)&&t(null,...i)}))}})),e}let Si,er=!1,Nr=Symbol();function Ho(e,t,r){const a=r[t]??={store:null,source:Mr(void 0),unsubscribe:yt};if(a.store!==e&&!(Nr in r))if(a.unsubscribe(),a.store=e??null,null==e)a.source.v=void 0,a.unsubscribe=yt;else{var i=!0;a.unsubscribe=zi(e,(e=>{i?a.source.v=e:y(a.source,e)})),i=!1}return e&&Nr in r?ar(e):n(a.source)}function Oo(){const e={};return[e,function(){Ur((()=>{for(var t in e)e[t].unsubscribe();Dt(e,Nr,{enumerable:!1,value:!0})}))}]}function Fo(e){var t=er;try{return er=!1,[e(),er]}finally{er=t}}function Fa(e){return e.ctx?.d??!1}function w(e,t,r,a){var i,o=0!=(r&Jn),l=0!=(r&Qn),s=0!=(r&eo),c=!1;l?[i,c]=Fo((()=>e[t])):i=e[t];var u,d=zt in e||Ka in e,f=l&&(rt(e,t)?.set??(d&&t in e&&(r=>e[t]=r)))||void 0,h=a,g=!0,v=!1,p=()=>(v=!0,g&&(g=!1,h=s?it(a):a),h);if(void 0===i&&void 0!==a&&(f&&Wn(),i=p(),f&&f(i)),u=()=>{var r=e[t];return void 0===r?p():(g=!0,v=!1,r)},0==(r&Xn))return u;if(f){var b=e.$$legacy;return function(e,t){return arguments.length>0?((!t||b||c)&&f(t?u():e),e):u()}}var m=!1,A=Mr(i),k=hr((()=>{var e=u(),t=n(A);return m?(m=!1,t):A.v=e}));return l&&n(k),o||(k.equals=Or),function(e,t){if(arguments.length>0){const r=t?n(k):l?De(e):e;if(!k.equals(r)){if(m=!0,y(A,r),v&&void 0!==h&&(h=r),Fa(k))return e;it((()=>n(k)))}return e}return Fa(k)?k.v:n(k)}}function Mo(e){return new Bo(e)}class Bo{#e;#t;constructor(e){var t=new Map,r=(e,r)=>{var a=Mr(r);return t.set(e,a),a};const a=new Proxy({...e.props||{},$$events:{}},{get:(e,a)=>n(t.get(a)??r(a,Reflect.get(e,a))),has:(e,a)=>a===Ka||(n(t.get(a)??r(a,Reflect.get(e,a))),Reflect.has(e,a)),set:(e,a,i)=>(y(t.get(a)??r(a,i),i),Reflect.set(e,a,i))});this.#t=(e.hydrate?Vo:ji)(e.component,{target:e.target,anchor:e.anchor,props:a,context:e.context,intro:e.intro??!1,recover:e.recover}),(!e?.props?.$$host||!1===e.sync)&&_(),this.#e=a.$$events;for(const e of Object.keys(this.#t))"$set"===e||"$destroy"===e||"$on"===e||Dt(this,e,{get(){return this.#t[e]},set(t){this.#t[e]=t},enumerable:!0});this.#t.$set=e=>{Object.assign(a,e)},this.#t.$destroy=()=>{jo(this.#t)}}$set(e){this.#t.$set(e)}$on(e,t){this.#e[e]=this.#e[e]||[];const r=(...e)=>t.call(this,...e);return this.#e[e].push(r),()=>{this.#e[e]=this.#e[e].filter((e=>e!==r))}}$destroy(){this.#t.$destroy()}}function rr(e,t,r,a){const i=r[e]?.type;if(t="Boolean"===i&&"boolean"!=typeof t?null!=t:t,!a||!r[e])return t;if("toAttribute"===a)switch(i){case"Object":case"Array":return null==t?null:JSON.stringify(t);case"Boolean":return t?"":null;case"Number":return t??null;default:return t}else switch(i){case"Object":case"Array":return t&&JSON.parse(t);case"Boolean":default:return t;case"Number":return null!=t?+t:t}}function Uo(e){const t={};return e.childNodes.forEach((e=>{t[e.slot||"default"]=!0})),t}function Go(e,t,r,a,i,n){let o=class extends Si{constructor(){super(e,r,i),this.$$p_d=t}static get observedAttributes(){return ir(t).map((e=>(t[e].attribute||e).toLowerCase()))}};return ir(t).forEach((e=>{Dt(o.prototype,e,{get(){return this.$$c&&e in this.$$c?this.$$c[e]:this.$$d[e]},set(r){r=rr(e,r,t),this.$$d[e]=r;var a=this.$$c;if(a){var i=rt(a,e)?.get;i?a[e]=r:a.$set({[e]:r})}}})})),a.forEach((e=>{Dt(o.prototype,e,{get(){return this.$$c?.[e]}})})),e.element=o,o}function Pi(e){null===ae&&ai(),Rr((()=>{const t=it(e);if("function"==typeof t)return t}))}function Wo(e){null===ae&&ai(),Pi((()=>()=>it(e)))}function zi(e,t,r){if(null==e)return t(void 0),yt;const a=it((()=>e.subscribe(t,r)));return a.unsubscribe?()=>a.unsubscribe():a}"function"==typeof HTMLElement&&(Si=class extends HTMLElement{$$ctor;$$s;$$c;$$cn=!1;$$d={};$$r=!1;$$p_d={};$$l={};$$l_u=new Map;$$me;constructor(e,t,r){super(),this.$$ctor=e,this.$$s=t,r&&this.attachShadow({mode:"open"})}addEventListener(e,t,r){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const r=this.$$c.$on(e,t);this.$$l_u.set(t,r)}super.addEventListener(e,t,r)}removeEventListener(e,t,r){if(super.removeEventListener(e,t,r),this.$$c){const e=this.$$l_u.get(t);e&&(e(),this.$$l_u.delete(t))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(e){return t=>{const r=document.createElement("slot");"default"!==e&&(r.name=e),M(t,r)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},r=Uo(this);for(const a of this.$$s)a in r&&("default"!==a||this.$$d.children?t[a]=e(a):(this.$$d.children=e(a),t.default=!0));for(const e of this.attributes){const t=this.$$g_p(e.name);t in this.$$d||(this.$$d[t]=rr(t,e.value,this.$$p_d,"toProp"))}for(const e in this.$$p_d)!(e in this.$$d)&&void 0!==this[e]&&(this.$$d[e]=this[e],delete this[e]);this.$$c=Mo({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$host:this}}),this.$$me=yo((()=>{Wr((()=>{this.$$r=!0;for(const e of ir(this.$$c)){if(!this.$$p_d[e]?.reflect)continue;this.$$d[e]=this.$$c[e];const t=rr(e,this.$$d[e],this.$$p_d,"toAttribute");null==t?this.removeAttribute(this.$$p_d[e].attribute||e):this.setAttribute(this.$$p_d[e].attribute||e,t)}this.$$r=!1}))}));for(const e in this.$$l)for(const t of this.$$l[e]){const r=this.$$c.$on(e,t);this.$$l_u.set(t,r)}this.$$l={}}}attributeChangedCallback(e,t,r){this.$$r||(e=this.$$g_p(e),this.$$d[e]=rr(e,r,this.$$p_d,"toProp"),this.$$c?.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then((()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)}))}$$g_p(e){return ir(this.$$p_d).find((t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e))||e}});const pt=[];function Zo(e,t=yt){let r=null;const a=new Set;function i(t){if(ei(e,t)&&(e=t,r)){const t=!pt.length;for(const t of a)t[1](),pt.push(t,e);if(t){for(let e=0;e{a.delete(s),0===a.size&&r&&(r(),r=null)}}}}function ar(e){let t;return zi(e,(e=>t=e))(),t}globalThis.altchaPlugins=globalThis.altchaPlugins||[],globalThis.altchaI18n=globalThis.altchaI18n||{get:e=>ar(globalThis.altchaI18n.store)[e],set:(e,t)=>{Object.assign(ar(globalThis.altchaI18n.store),{[e]:t}),globalThis.altchaI18n.store.set(ar(globalThis.altchaI18n.store))},store:Zo({})};const Yo={ariaLinkLabel:"زور Altcha.org",enterCode:"أدخل الرمز",enterCodeAria:"أدخل الرمز الذي تسمعه. اضغط على المسافة لتشغيل الصوت.",error:"فشل التحقق. حاول مرة أخرى لاحقاً.",expired:"انتهت صلاحية التحقق. حاول مرة أخرى.",verificationRequired:"مطلوب التحقق!",footer:'محمي بواسطة ALTCHA',getAudioChallenge:"احصل على تحدي صوتي",label:"أنا لست روبوتاً",loading:"جارٍ التحميل...",reload:"إعادة تحميل",verify:"تحقق",verified:"تم التحقق",verifying:"جارٍ التحقق...",waitAlert:"جارٍ التحقق... يرجى الانتظار."};globalThis.altchaI18n.set("ar",Yo);const Ko={ariaLinkLabel:"Посетете Altcha.org",enterCode:"Въведете код",enterCodeAria:"Въведете кода, който чувате. Натиснете Space за възпроизвеждане на аудио.",error:"Проверката неуспешна. Моля, опитайте по-късно.",expired:"Времето за проверка изтече. Моля, опитайте отново.",verificationRequired:"Изисква се проверка!",footer:'Защитено от ALTCHA',getAudioChallenge:"Аудио проверка",label:"Аз не съм робот",loading:"Зареждане...",reload:"Презареди",verify:"Провери",verified:"Проверено",verifying:"Проверява се...",waitAlert:"Проверката е в процес... моля изчакайте."};globalThis.altchaI18n.set("bg",Ko);const Jo={ariaLinkLabel:"Наведаць Altcha.org",enterCode:"Увядзіце код",enterCodeAria:"Увядзіце код, які вы чуеце. Націсніце прабел, каб прайграць аўдыё.",error:"Праверка не прайшла. Паспрабуйце пазней.",expired:"Тэрмін праверкі скончыўся. Паспрабуйце зноў.",footer:'Абаронена ALTCHA',getAudioChallenge:"Атрымаць аўдыё выклік",label:"Я не робат",loading:"Загрузка...",reload:"Перазагрузіць",verify:"Праверыць",verificationRequired:"Патрабуецца праверка!",verified:"Праверана",verifying:"Правяраем...",waitAlert:"Праверка... калі ласка, пачакайце."};globalThis.altchaI18n.set("be",Jo);const Xo={ariaLinkLabel:"Posjetite Altcha.org",enterCode:"Unesite kod",enterCodeAria:"Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",error:"Verifikacija nije uspjela. Pokušajte ponovo kasnije.",expired:"Verifikacija je istekla. Pokušajte ponovo.",footer:'Zaštićeno od strane ALTCHA',getAudioChallenge:"Dohvatite audio izazov",label:"Nisam robot",loading:"Učitavanje...",reload:"Ponovno učitaj",verify:"Verifikuj",verificationRequired:"Verifikacija je obavezna!",verified:"Verifikovano",verifying:"Verifikacija u toku...",waitAlert:"Verifikacija u toku... molimo vas da sačekate."};globalThis.altchaI18n.set("bs",Xo);const Qo={ariaLinkLabel:"Visita Altcha.org",enterCode:"Introdueix el codi",enterCodeAria:"Introdueix el codi que escoltes. Prem Espai per reproduir l’àudio.",error:"Verificació fallida. Torna-ho a provar més tard.",expired:"Verificació expirada. Torna-ho a provar.",footer:'Protegit per ALTCHA',getAudioChallenge:"Obtenir un desafiament d’àudio",label:"No sóc un robot",loading:"Carregant...",reload:"Torna a carregar",verify:"Verificar",verificationRequired:"Es requereix verificació!",verified:"Verificat",verifying:"Verificant...",waitAlert:"Verificant... si us plau, espera."};globalThis.altchaI18n.set("ca",Qo);const el={ariaLinkLabel:"Navštivte Altcha.org",enterCode:"Zadejte kód",enterCodeAria:"Zadejte kód, který slyšíte. Stisknutím mezerníku přehrajete zvuk.",error:"Ověření selhalo. Zkuste to prosím později.",expired:"Ověření vypršelo. Zkuste to prosím znovu.",verificationRequired:"Vyžaduje se ověření!",footer:'Chráněno pomocí ALTCHA',getAudioChallenge:"Získat audio výzvu",label:"Nejsem robot",loading:"Načítání...",reload:"Znovu načíst",verify:"Ověřit",verified:"Ověřeno",verifying:"Ověřování...",waitAlert:"Probíhá ověření... prosím počkejte."};globalThis.altchaI18n.set("cs",el);const tl={ariaLinkLabel:"Besøg Altcha.org",enterCode:"Indtast kode",enterCodeAria:"Indtast den kode, du hører. Tryk på mellemrumstasten for at afspille lyd.",error:"Verificering mislykkedes. Prøv venligst igen senere.",expired:"Verificering udløbet. Prøv venligst igen.",verificationRequired:"Verificering kræves!",footer:'Beskyttet af ALTCHA',getAudioChallenge:"Hent lydudfordring",label:"Jeg er ikke en robot",loading:"Indlæser...",reload:"Genindlæs",verify:"Verificer",verified:"Verificeret",verifying:"Verificerer...",waitAlert:"Verificerer... vent venligst."};globalThis.altchaI18n.set("da",tl);const rl={ariaLinkLabel:"Besuche Altcha.org",enterCode:"Code eingeben",enterCodeAria:"Geben Sie den Code ein, den Sie hören. Drücken Sie die Leertaste, um die Audio abzuspielen.",error:"Überprüfung fehlgeschlagen. Bitte versuchen Sie es später erneut.",expired:"Überprüfung abgelaufen. Bitte versuchen Sie es erneut.",verificationRequired:"Überprüfung erforderlich!",footer:'Geschützt durch ALTCHA',getAudioChallenge:"Audio-Herausforderung anfordern",label:"Ich bin kein Roboter",loading:"Lade...",reload:"Neu laden",verify:"Überprüfen",verified:"Überprüft",verifying:"Wird überprüft...",waitAlert:"Überprüfung läuft... bitte warten."};globalThis.altchaI18n.set("de",rl);const al={ariaLinkLabel:"Επισκεφθείτε το Altcha.org",enterCode:"Εισαγάγετε κωδικό",enterCodeAria:"Εισαγάγετε τον κωδικό που ακούτε. Πατήστε Space για να παίξετε τον ήχο.",error:"Η επαλήθευση απέτυχε. Δοκιμάστε ξανά αργότερα.",expired:"Η επαλήθευση έληξε. Δοκιμάστε ξανά.",verificationRequired:"Απαιτείται έλεγχος!",footer:'Προστατεύεται από το ALTCHA',getAudioChallenge:"Λήψη ηχητικής δοκιμασίας",label:"Δεν είμαι ρομπότ",loading:"Φόρτωση...",reload:"Επαναφόρτωση",verify:"Επαλήθευση",verified:"Επαληθεύτηκε",verifying:"Γίνεται επαλήθευση...",waitAlert:"Γίνεται επαλήθευση... παρακαλώ περιμένετε."};globalThis.altchaI18n.set("el",al);const il={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Introduce el código",enterCodeAria:"Introduce el código que escuchas. Pulsa Espacio para reproducir el audio.",error:"Falló la verificación. Por favor intente nuevamente más tarde.",expired:"Verificación expirada. Por favor intente nuevamente.",verificationRequired:"¡Verificación requerida!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obtener un desafío de audio",label:"No soy un robot",loading:"Cargando...",reload:"Recargar",verify:"Verificar",verified:"Verificado",verifying:"Verificando...",waitAlert:"Verificando... por favor espere."};globalThis.altchaI18n.set("es-es",il);const nl={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Ingresa el código",enterCodeAria:"Ingresa el código que escuchas. Presiona Espacio para reproducir el audio.",error:"Falló la verificación. Por favor vuelve a intentarlo más tarde.",expired:"La verificación expiró. Por favor inténtalo de nuevo.",verificationRequired:"¡Verificación requerida!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obtener un reto de audio",label:"No soy un robot",loading:"Cargando...",reload:"Volver a cargar",verify:"Verificar",verified:"Verificado",verifying:"Verificando...",waitAlert:"Verificando... por favor espera."};globalThis.altchaI18n.set("es-419",nl);const ol={ariaLinkLabel:"Külasta Altcha.org",enterCode:"Sisesta kood",enterCodeAria:"Sisestage kuuldu kood. Vajutage tühikut, et esitada heli.",error:"Kinnitamine ebaõnnestus. Proovi hiljem uuesti.",expired:"Kinnitamine aegus. Proovi uuesti.",verificationRequired:"Kontroll on vajalik!",footer:'Kaitstud ALTCHA poolt',getAudioChallenge:"Hangi heliülesanne",label:"Ma ei ole robot",loading:"Laadimine...",reload:"Laadi uuesti",verify:"Kinnita",verified:"Kinnitatud",verifying:"Kinnitamine...",waitAlert:"Kinnitamine... palun oota."};globalThis.altchaI18n.set("et",ol);const ll={ariaLinkLabel:"Bisitatu Altcha.org",enterCode:"Sartu kodea",enterCodeAria:"Sartu entzun duzun kodea. Sakatu Espazioa audioa erreproduzitzeko.",error:"Egiaztatzeak huts egin du. Saiatu berriro geroago.",expired:"Egiaztatzea iraungi da. Saiatu berriro.",verificationRequired:"Egiaztatzea beharrezkoa da!",footer:'ALTCHAk babestuta',getAudioChallenge:"Jaso audio-erronka bat",label:"Ez naiz robot bat",loading:"Kargatzen...",reload:"Birkargatu",verify:"Egiaztatu",verified:"Egiaztatuta",verifying:"Egiaztatzen...",waitAlert:"Egiaztatzen... itxaron mesedez."};globalThis.altchaI18n.set("eu",ll);const sl={ariaLinkLabel:"بازدید از Altcha.org",enterCode:"کد را وارد کنید",enterCodeAria:"کدی که می‌شنوید را وارد کنید. برای پخش صدا Space را فشار دهید.",error:"احراز هویت ناموفق بود. بعداً دوباره تلاش کنید.",expired:"احراز هویت منقضی شد. دوباره تلاش کنید.",footer:'محافظت شده توسط ALTCHA',getAudioChallenge:"دریافت چالش صوتی",label:"من ربات نیستم",loading:"در حال بارگذاری...",reload:"بارگذاری مجدد",verify:"تایید",verificationRequired:"احراز هویت لازم است!",verified:"تایید شد",verifying:"در حال تایید...",waitAlert:"در حال تایید... لطفا منتظر بمانید."};globalThis.altchaI18n.set("fa",sl);const cl={ariaLinkLabel:"Besicht Altcha.org",enterCode:"Code aginn",enterCodeAria:"Gitt de Code an deen dir héiert. Dréckt op d'Weltraumtast fir Audio ofzespillen.",error:"Verifikatioun ass feelgeschloen. Probéiert méi spéit nach emol.",expired:"Verifikatioun ofgelaf. Probéiert nach emol.",footer:'Geschützt vun ALTCHA',getAudioChallenge:"Kritt eng Audio-Herausfuerderung",label:"Ech sinn keen Robot",loading:"Lueden...",reload:"Nei lueden",verify:"Verifizéieren",verificationRequired:"Verifikatioun néideg!",verified:"Verifizéiert",verifying:"Verifizéieren...",waitAlert:"Verifizéieren... waart wgl."};globalThis.altchaI18n.set("lb",cl);const ul={ariaLinkLabel:"Vieraile sivulla Altcha.org",enterCode:"Syötä koodi",enterCodeAria:"Kirjoita kuulemasi koodi. Paina välilyöntiä toistaaksesi äänen.",error:"Varmennus epäonnistui. Yritä myöhemmin uudelleen.",expired:"Varmennus vanhentui. Yritä uudelleen.",verificationRequired:"Vahvistus vaaditaan!",footer:'Suojattu ALTCHA:lla',getAudioChallenge:"Hae äänitehtävä",label:"En ole robotti",loading:"Ladataan...",reload:"Lataa uudelleen",verify:"Vahvista",verified:"Vahvistettu",verifying:"Vahvistetaan...",waitAlert:"Vahvistetaan... odota hetki."};globalThis.altchaI18n.set("fi",ul);const fl={ariaLinkLabel:"Visitez Altcha.org",enterCode:"Entrez le code",enterCodeAria:"Entrez le code que vous entendez. Appuyez sur la barre d'espace pour écouter l'audio.",error:"Échec de la vérification. Réessayez plus tard.",expired:"La vérification a expiré. Réessayez.",verificationRequired:"Vérification requise !",footer:'Protégé par ALTCHA',getAudioChallenge:"Obtenir un défi audio",label:"Pas un robot",loading:"Chargement...",reload:"Recharger",verify:"Vérifier",verified:"Vérifié",verifying:"Vérification en cours...",waitAlert:"Vérification en cours... veuillez patienter."};globalThis.altchaI18n.set("fr-ca",fl);const dl={ariaLinkLabel:"Visitez Altcha.org",enterCode:"Entrez le code",enterCodeAria:"Entrez le code que vous entendez. Appuyez sur Espace pour écouter l'audio.",error:"Échec de la vérification. Essayez à nouveau plus tard.",expired:"La vérification a expiré. Essayez à nouveau.",verificationRequired:"Vérification requise !",footer:'Protégé par ALTCHA',getAudioChallenge:"Obtenir un défi audio",label:"Pas un robot",loading:"Chargement...",reload:"Recharger",verify:"Vérifier",verified:"Vérifié",verifying:"Vérification en cours...",waitAlert:"Vérification en cours... veuillez patienter."};globalThis.altchaI18n.set("fr-fr",dl);const hl={ariaLinkLabel:"Tabhair cuairt ar Altcha.org",enterCode:"Iontráil cód",enterCodeAria:"Cuir isteach an cód a chloiseann tú. Brúigh Spás chun an fuaime a sheinm.",error:"Theip ar an bhfíorú. Bain triail eile as níos déanaí.",expired:"Tá an fíorú as feidhm. Bain triail eile as.",verificationRequired:"Fíorú riachtanach!",footer:'Cosanta ag ALTCHA',getAudioChallenge:"Faigh dúshlán fuaime",label:"Níl mé i mo róbat",loading:"Á luchtú...",reload:"Athluchtaigh",verify:"Fíoraigh",verified:"Fíoraithe",verifying:"Fíorú ar siúl...",waitAlert:"Fíorú ar siúl... fan go fóill."};globalThis.altchaI18n.set("ga",hl);const gl={ariaLinkLabel:"Posjetite Altcha.org",enterCode:"Unesite kod",enterCodeAria:"Unesite kod koji čujete. Pritisnite razmaknicu za reprodukciju zvuka.",error:"Provjera nije uspjela. Molimo pokušajte kasnije.",expired:"Provjera je istekla. Molimo pokušajte ponovo.",verificationRequired:"Potrebna je provjera!",footer:'Zaštićeno od strane ALTCHA',getAudioChallenge:"Audio provjera",label:"Ja nisam robot",loading:"Učitavanje...",reload:"Ponovno učitaj",verify:"Provjeri",verified:"Provjereno",verifying:"Provjeravanje...",waitAlert:"Provjera je u tijeku... molimo pričekajte."};globalThis.altchaI18n.set("hr",gl);const vl={ariaLinkLabel:"Látogass el az Altcha.org oldalra",enterCode:"Írja be a kódot",enterCodeAria:"Írja be a hallott kódot. Nyomja meg a Szóköz billentyűt a hang lejátszásához.",error:"A hitelesítés nem sikerült. Próbáld meg később újra.",expired:"A hitelesítés lejárt. Próbáld újra.",verificationRequired:"Ellenőrzés szükséges!",footer:'Védve a következő által: ALTCHA',getAudioChallenge:"Hangalapú kihívás kérése",label:"Nem vagyok robot",loading:"Betöltés...",reload:"Újratöltés",verify:"Ellenőrzés",verified:"Ellenőrizve",verifying:"Ellenőrzés folyamatban...",waitAlert:"Ellenőrzés folyamatban... kérlek várj."};globalThis.altchaI18n.set("hu",vl);const bl={ariaLinkLabel:"Heimsækja Altcha.org",enterCode:"Sláðu inn kóða",enterCodeAria:"Sláðu inn kóðann sem þú heyrir. Ýttu á Space til að spila hljóðið.",error:"Staðfesting mistókst. Reyndu aftur síðar.",expired:"Staðfesting er útrunnin. Reyndu aftur.",footer:'Verndað af ALTCHA',getAudioChallenge:"Fá hljóðáskorun",label:"Ég er ekki robot",loading:"Hleður...",reload:"Hleð aftur",verify:"Staðfesta",verificationRequired:"Staðfesting er nauðsynleg!",verified:"Staðfest",verifying:"Að staðfesta...",waitAlert:"Að staðfesta... vinsamlegast bíða."};globalThis.altchaI18n.set("is",bl);const pl={ariaLinkLabel:"Visita Altcha.org",enterCode:"Inserisci il codice",enterCodeAria:"Inserisci il codice che senti. Premi Spazio per riprodurre l'audio.",error:"Verifica fallita. Riprova più tardi.",expired:"Verifica scaduta. Riprova.",verificationRequired:"Verifica richiesta!",footer:'Protetto da ALTCHA',getAudioChallenge:"Ottieni una sfida audio",label:"Non sono un robot",loading:"Caricamento...",reload:"Ricarica",verify:"Verifica",verified:"Verificato",verifying:"Verifica in corso...",waitAlert:"Verifica in corso... attendere."};globalThis.altchaI18n.set("it",pl);const ml={ariaLinkLabel:"Apsilankykite Altcha.org",enterCode:"Įveskite kodą",enterCodeAria:"Įveskite girdimą kodą. Paspauskite tarpo klavišą, kad grotumėte garso įrašą.",error:"Patvirtinimas nepavyko. Bandykite vėliau.",expired:"Patvirtinimo laikas baigėsi. Bandykite dar kartą.",verificationRequired:"Reikalingas patvirtinimas!",footer:'Apsaugota ALTCHA',getAudioChallenge:"Gauti garso užduotį",label:"Aš nesu robotas",loading:"Įkeliama...",reload:"Įkelti iš naujo",verify:"Patvirtinti",verified:"Patvirtinta",verifying:"Tikrinama...",waitAlert:"Tikrinama... prašome palaukti."};globalThis.altchaI18n.set("lt",ml);const yl={ariaLinkLabel:"Apmeklējiet Altcha.org",enterCode:"Ievadiet kodu",enterCodeAria:"Ievadiet dzirdamo kodu. Nospiediet atstarpes taustiņu, lai atskaņotu audio.",error:"Verifikācija neizdevās. Mēģiniet vēlāk vēlreiz.",expired:"Verifikācijas laiks ir beidzies. Mēģiniet vēlreiz.",verificationRequired:"Nepieciešama verifikācija!",footer:'Aizsargāts ar ALTCHA',getAudioChallenge:"Saņemt audio izaicinājumu",label:"Es neesmu robots",loading:"Notiek ielāde...",reload:"Pārlādēt",verify:"Verificēt",verified:"Verificēts",verifying:"Notiek verifikācija...",waitAlert:"Notiek verifikācija... lūdzu, uzgaidiet."};globalThis.altchaI18n.set("lv",yl);const Al={ariaLinkLabel:"Żur Altcha.org",enterCode:"Idħol il-kodiċi",enterCodeAria:"Idħol il-kodiċi li tisma'. Agħfas Spazju biex tindaqq l-awdjo.",error:"Il-verifika falliet. Erġa’ pprova aktar tard.",expired:"Il-verifika skadiet. Erġa’ pprova.",verificationRequired:"Verifika meħtieġa!",footer:'Protett minn ALTCHA',getAudioChallenge:"Ikseb sfida bl-awdjo",label:"M’inix robot",loading:"Qed jitgħabba...",reload:"Ittella’ mill-ġdid",verify:"Ivverifika",verified:"Ivverifikat",verifying:"Verifika għaddejja...",waitAlert:"Verifika għaddejja... stenna ftit."};globalThis.altchaI18n.set("mt",Al);const Ni={ariaLinkLabel:"Besøk Altcha.org",enterCode:"Skriv inn kode",enterCodeAria:"Skriv inn koden du hører. Trykk på Space for å spille av lyden.",error:"Verifisering mislyktes. Prøv igjen senere.",expired:"Verifiseringen utløp. Prøv igjen.",footer:'Beskyttet av ALTCHA',getAudioChallenge:"Få en lydutfordring",label:"Jeg er ikke en robot",loading:"Laster...",reload:"Last på nytt",verify:"Verifiser",verificationRequired:"Verifisering kreves!",verified:"Verifisert",verifying:"Verifiserer...",waitAlert:"Verifiserer... vennligst vent."};globalThis.altchaI18n.set("nb",Ni),globalThis.altchaI18n.set("no",Ni);const kl={ariaLinkLabel:"Bezoek Altcha.org",enterCode:"Voer code in",enterCodeAria:"Voer de code in die je hoort. Druk op Spatie om de audio af te spelen.",error:"Verificatie mislukt. Probeer het later opnieuw.",expired:"Verificatie verlopen. Probeer het opnieuw.",verificationRequired:"Verificatie vereist!",footer:'Beschermd door ALTCHA',getAudioChallenge:"Audio-uitdaging ontvangen",label:"Ik ben geen robot",loading:"Laden...",reload:"Herladen",verify:"Verifiëren",verified:"Geverifieerd",verifying:"Bezig met verifiëren...",waitAlert:"Bezig met verifiëren... even geduld a.u.b."};globalThis.altchaI18n.set("nl",kl);const _l={ariaLinkLabel:"Odwiedź Altcha.org",enterCode:"Wprowadź kod",enterCodeAria:"Wpisz kod, który słyszysz. Naciśnij Spację, aby odtworzyć dźwięk.",error:"Weryfikacja nie powiodła się. Spróbuj ponownie później.",expired:"Weryfikacja wygasła. Spróbuj ponownie.",verificationRequired:"Wymagana weryfikacja!",footer:'Chronione przez ALTCHA',getAudioChallenge:"Pobierz zadanie dźwiękowe",label:"Nie jestem robotem",loading:"Ładowanie...",reload:"Odśwież",verify:"Zweryfikuj",verified:"Zweryfikowano",verifying:"Weryfikacja...",waitAlert:"Trwa weryfikacja... proszę czekać."};globalThis.altchaI18n.set("pl",_l);const wl={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Introduza o código",enterCodeAria:"Introduza o código que ouve. Prima Espaço para reproduzir o áudio.",error:"A verificação falhou. Por favor, tente novamente mais tarde.",expired:"Verificação expirada. Por favor, tente novamente.",verificationRequired:"Verificação necessária!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obter desafio de áudio",label:"Não sou um robô",loading:"A carregar...",reload:"Recarregar",verify:"Verificar",verified:"Verificado",verifying:"A verificar...",waitAlert:"A verificar... por favor aguarde."};globalThis.altchaI18n.set("pt-pt",wl);const Cl={ariaLinkLabel:"Visitar Altcha.org",enterCode:"Digite o código",enterCodeAria:"Digite o código que você ouve. Pressione Espaço para reproduzir o áudio.",error:"Falha na verificação. Por favor, tente novamente mais tarde.",expired:"Verificação expirada. Por favor, tente novamente.",verificationRequired:"Verificação necessária!",footer:'Protegido por ALTCHA',getAudioChallenge:"Obter desafio de áudio",label:"Eu não sou um robô",loading:"Carregando...",reload:"Recarregar",verify:"Verificar",verified:"Verificado",verifying:"Verificando...",waitAlert:"Verificando... por favor aguarde."};globalThis.altchaI18n.set("pt-br",Cl);const Ll={ariaLinkLabel:"Vizitează Altcha.org",enterCode:"Introduceți codul",enterCodeAria:"Introduceți codul pe care îl auziți. Apăsați Spațiu pentru a reda audio.",error:"Verificarea a eșuat. Încearcă din nou mai târziu.",expired:"Verificarea a expirat. Încearcă din nou.",verificationRequired:"Verificare necesară!",footer:'Protejat de ALTCHA',getAudioChallenge:"Obține o provocare audio",label:"Nu sunt un robot",loading:"Se încarcă...",reload:"Reîncarcă",verify:"Verifică",verified:"Verificat",verifying:"Se verifică...",waitAlert:"Se verifică... te rugăm să aștepți."};globalThis.altchaI18n.set("ro",Ll);const xl={ariaLinkLabel:"Перейти на Altcha.org",enterCode:"Введите код",enterCodeAria:"Введите код, который слышите. Нажмите пробел для воспроизведения аудио.",error:"Ошибка верификации. Попробуйте позже.",expired:"Срок действия верификации истек. Попробуйте снова.",verificationRequired:"Требуется проверка!",footer:'Защищено ALTCHA',getAudioChallenge:"Получить аудио задачу",label:"Я не робот",loading:"Загрузка...",reload:"Перезагрузить",verify:"Проверить",verified:"Проверено",verifying:"Идет проверка...",waitAlert:"Идет проверка... Пожалуйста, подождите."};globalThis.altchaI18n.set("ru",xl);const El={ariaLinkLabel:"Navštívte Altcha.org",enterCode:"Zadajte kód",enterCodeAria:"Zadajte kód, ktorý počujete. Stlačením medzerníka prehráte zvuk.",error:"Verifikácia zlyhala. Skúste to znova neskôr.",expired:"Verifikácia vypršala. Skúste to znova.",verificationRequired:"Vyžaduje sa overenie!",footer:'Chránené ALTCHA',getAudioChallenge:"Získať audio výzvu",label:"Nie som robot",loading:"Načítava sa...",reload:"Obnoviť",verify:"Verifikovať",verified:"Verifikované",verifying:"Prebieha verifikácia...",waitAlert:"Prebieha verifikácia... prosím čakajte."};globalThis.altchaI18n.set("sk",El);const Tl={ariaLinkLabel:"Obiščite Altcha.org",enterCode:"Vnesite kodo",enterCodeAria:"Vnesite kodo, ki jo slišite. Pritisnite preslednico za predvajanje zvoka.",error:"Preverjanje ni uspelo. Poskusite znova kasneje.",expired:"Preverjanje je poteklo. Poskusite znova.",verificationRequired:"Potrebna je preveritev!",footer:'Zaščiteno z ALTCHA',getAudioChallenge:"Pridobite zvočni izziv",label:"Nisem robot",loading:"Nalagam...",reload:"Ponovno naloži",verify:"Preveri",verified:"Preverjeno",verifying:"Preverjanje...",waitAlert:"Preverjanje... prosim počakajte."};globalThis.altchaI18n.set("sl",Tl);const Il={ariaLinkLabel:"Vizitoni Altcha.org",enterCode:"Fut kodin",enterCodeAria:"Fut kodin që dëgjon. Shtypni Hapësirë për të luajtur audio.",error:"Verifikimi dështoi. Provoni përsëri më vonë.",expired:"Verifikimi ka skaduar. Provoni përsëri.",footer:'I mbrojtur nga ALTCHA',getAudioChallenge:"Merr një sfidë audio",label:"Unë nuk jam një robot",loading:"Duke u ngarkuar...",reload:"Ringarko",verify:"Verifiko",verificationRequired:"Kërkohet verifikimi!",verified:"I verifikuar",verifying:"Duke verifikuar...",waitAlert:"Duke verifikuar... ju lutem prisni."};globalThis.altchaI18n.set("sq",Il);const Vl={ariaLinkLabel:"Posetite Altcha.org",enterCode:"Unesite kod",enterCodeAria:"Unesite kod koji čujete. Pritisnite Space da biste pustili zvuk.",error:"Verifikacija nije uspela. Pokušajte ponovo kasnije.",expired:"Verifikacija je istekla. Pokušajte ponovo.",footer:'Zaštićeno od strane ALTCHA',getAudioChallenge:"Dohvatite audio izazov",label:"Nisam robot",loading:"Učitavanje...",reload:"Ponovo učitaj",verify:"Verifikuj",verificationRequired:"Verifikacija je obavezna!",verified:"Verifikovano",verifying:"Verifikacija u toku...",waitAlert:"Verifikacija u toku... molimo vas da sačekate."};globalThis.altchaI18n.set("sr",Vl);const jl={ariaLinkLabel:"Besök Altcha.org",enterCode:"Ange kod",enterCodeAria:"Ange koden du hör. Tryck på mellanslag för att spela upp ljudet.",error:"Verifiering misslyckades. Försök igen senare.",expired:"Verifieringen har gått ut. Försök igen.",verificationRequired:"Verifiering krävs!",footer:'Skyddad av ALTCHA',getAudioChallenge:"Få ljudutmaning",label:"Jag är inte en robot",loading:"Laddar...",reload:"Ladda om",verify:"Verifiera",verified:"Verifierad",verifying:"Verifierar...",waitAlert:"Verifierar... vänligen vänta."};globalThis.altchaI18n.set("sv",jl);const Rl={ariaLinkLabel:"Altcha.org'yu ziyaret edin",enterCode:"Kodu girin",enterCodeAria:"Duyduğunuz kodu girin. Ses dosyasını oynatmak için Boşluk tuşuna basın.",error:"Doğrulama başarısız oldu. Lütfen daha sonra tekrar deneyin.",expired:"Doğrulama süresi doldu. Lütfen tekrar deneyin.",verificationRequired:"Doğrulama gerekli!",footer:'ALTCHA tarafından korunuyor ALTCHA',getAudioChallenge:"Sesli doğrulama al",label:"Ben robot değilim",loading:"Yükleniyor...",reload:"Yeniden yükle",verify:"Doğrula",verified:"Doğrulandı",verifying:"Doğrulama yapılıyor...",waitAlert:"Doğrulama yapılıyor... lütfen bekleyin."};globalThis.altchaI18n.set("tr",Rl);const $l={ariaLinkLabel:"Відвідати Altcha.org",enterCode:"Введіть код",enterCodeAria:"Введіть код, який ви чуєте. Натисніть пробіл, щоб відтворити аудіо.",error:"Перевірка не вдалася. Спробуйте пізніше.",expired:"Перевірка прострочена. Спробуйте знову.",verificationRequired:"Потрібна перевірка!",footer:'Захищено ALTCHA',getAudioChallenge:"Отримати аудіо-челлендж",label:"Я не робот",loading:"Завантаження...",reload:"Перезавантажити",verify:"Перевірити",verified:"Перевірено",verifying:"Перевіряється...",waitAlert:"Перевірка... будь ласка, зачекайте."};globalThis.altchaI18n.set("uk",$l);const Sl={ariaLinkLabel:"Besoek Altcha.org",enterCode:"Voer kode in",enterCodeAria:"Voer die kode in wat jy hoor. Druk Spasie om die klank af te speel.",error:"Verifikasie het misluk. Probeer later weer.",expired:"Verifikasie het verval. Probeer weer.",footer:'Beskerm deur ALTCHA',getAudioChallenge:"Kry 'n klankuitdaging",label:"Ek is nie 'n robot nie",loading:"Laai...",reload:"Laai weer",verify:"Verifieer",verificationRequired:"Verifikasie is vereis!",verified:"Geverifieer",verifying:"Verifieer...",waitAlert:"Verifieer... wag asseblief."};globalThis.altchaI18n.set("af",Sl);const Pl={ariaLinkLabel:"Altcha.org ይጎብኙ",enterCode:"ኮድ አስገባ",enterCodeAria:"የሚሰማዎትን ኮድ ያስገቡ። ድምጽ ለመጫወት Space ን ይጫኑ።",error:"ማረጋገጫ አልተሳካም። በኋላ ላይ እንደገና ይሞክሩ።",expired:"ማረጋገጫው ጊዜው አልፏል። እንደገና ይሞክሩ።",footer:'በ ALTCHA የተጠበቀ',getAudioChallenge:"የድምጽ ፈተና ያግኙ",label:"እኔ ሮቦት አይደለሁም",loading:"በመጫን ላይ...",reload:"እንደገና ጫን",verify:"አረጋግጥ",verificationRequired:"ማረጋገጫ ያስፈልጋል!",verified:"ተረጋግጧል",verifying:"በማረጋገጥ ላይ...",waitAlert:"በማረጋገጥ ላይ... እባክዎ ይጠብቁ።"};globalThis.altchaI18n.set("am",Pl);const zl={ariaLinkLabel:"Tembelea Altcha.org",enterCode:"Weka nambari",enterCodeAria:"Weka nambari unayosikia. Bonyeza Space kucheza sauti.",error:"Uthibitishaji umeshindwa. Jaribu tena baadaye.",expired:"Uthibitishaji umeisha. Jaribu tena.",footer:'Imealindwa na ALTCHA',getAudioChallenge:"Pata changamoto ya sauti",label:"Mimi sio roboti",loading:"Inapakia...",reload:"Pakia tena",verify:"Thibitisha",verificationRequired:"Uthibitishaji unahitajika!",verified:"Imethibitishwa",verifying:"Inathibitisha...",waitAlert:"Inathibitisha... tafadhali subiri."};globalThis.altchaI18n.set("sw",zl);const Nl={ariaLinkLabel:"Ṣe abẹwo si Altcha.org",enterCode:"Tẹ koodu sii",enterCodeAria:"Tẹ koodu ti o ngbọ sii. Tẹ Space lati ṣe ohun orin.",error:"Ìdájọ́kòwò kò ṣẹ́ṣe. Gbiyanju lẹẹkansi ni ọjọ́ iwájú.",expired:"Ìdájọ́kòwò ti pari. Gbiyanju lẹẹkansi.",footer:'Ti wa ni ààbò nipasẹ ALTCHA',getAudioChallenge:"Gba ìjàdú ohùn",label:"Emi kii ṣe ẹrọ",loading:"Ó ń gbé sílẹ̀...",reload:"Tún gbé wọlé",verify:"Ṣàdájọ́",verificationRequired:"Ìdájọ́kòwò ni a nílò!",verified:"A ti dájọ́",verifying:"Ó ń ṣàdájọ́...",waitAlert:"Ó ń ṣàdájọ́... ẹ jọ̀ọ́ ẹ duro."};globalThis.altchaI18n.set("yo",Nl);const Dl={ariaLinkLabel:"Altcha.org পরিদর্শন করুন",enterCode:"কোড লিখুন",enterCodeAria:"আপনি যে কোড শুনতে পান তা লিখুন। অডিও প্লে করতে স্পেস বাটন টিপুন।",error:"যাচাইকরণ ব্যর্থ হয়েছে। পরে আবার চেষ্টা করুন।",expired:"যাচাইকরণ সময়সীমা শেষ হয়েছে। আবার চেষ্টা করুন।",verificationRequired:"যাচাই প্রয়োজন!",footer:'দ্বারা সুরক্ষিত ALTCHA',getAudioChallenge:"অডিও চ্যালেঞ্জ নিন",label:"আমি রোবট নই",loading:"লোড হচ্ছে...",reload:"পুনরায় লোড করুন",verify:"যাচাই করুন",verified:"যাচাই করা হয়েছে",verifying:"যাচাই করা হচ্ছে...",waitAlert:"যাচাই করা হচ্ছে... দয়া করে অপেক্ষা করুন।"};globalThis.altchaI18n.set("bn",Dl);const ql={ariaLinkLabel:"בקר באתר Altcha.org",enterCode:"הזן קוד",enterCodeAria:"הזן את הקוד שאתה שומע. לחץ על רווח להפעלת השמע.",error:"האימות נכשל. נסה שוב מאוחר יותר.",expired:"תוקף האימות פג. נסה שוב.",verificationRequired:"נדרש אימות!",footer:'מוגן על ידי ALTCHA',getAudioChallenge:"קבל אתגר שמע",label:"אני לא רובוט",loading:"טוען...",reload:"טען מחדש",verify:"אמת",verified:"אומת",verifying:"מאמת...",waitAlert:"מבצע אימות... אנא המתן."};globalThis.altchaI18n.set("he",ql);const Hl={ariaLinkLabel:"Altcha.org पर जाएं",enterCode:"कोड दर्ज करेंं",enterCodeAria:"आप जो कोड सुनते हैं उसे दर्ज करें। ऑडियो चलाने के लिए स्पेस दबाएं।",error:"सत्यापन विफल। कृपया बाद में फिर से प्रयास करें।",expired:"सत्यापन समाप्त हो गया है। कृपया पुनः प्रयास करें।",verificationRequired:"सत्यापन आवश्यक है!",footer:'द्वारा संरक्षित ALTCHA',getAudioChallenge:"ऑडियो चुनौती प्राप्त करें",label:"मैं रोबोट नहीं हूँ",loading:"लोड हो रहा है...",reload:"पुनः लोड करें",verify:"सत्यापित करें",verified:"सत्यापित",verifying:"सत्यापित कर रहे हैं...",waitAlert:"सत्यापित किया जा रहा है... कृपया प्रतीक्षा करें।"};globalThis.altchaI18n.set("hi",Hl);const Ol={ariaLinkLabel:"Kunjungi Altcha.org",enterCode:"Masukkan kode",enterCodeAria:"Masukkan kode yang Anda dengar. Tekan Spasi untuk memutar audio.",error:"Verifikasi gagal. Coba lagi nanti.",expired:"Verifikasi telah kedaluwarsa. Coba lagi.",verificationRequired:"Verifikasi diperlukan!",footer:'Dilindungi oleh ALTCHA',getAudioChallenge:"Dapatkan tantangan audio",label:"Saya bukan robot",loading:"Memuat...",reload:"Muat ulang",verify:"Verifikasi",verified:"Terverifikasi",verifying:"Memverifikasi...",waitAlert:"Memverifikasi... harap tunggu."};globalThis.altchaI18n.set("id",Ol);const Fl={ariaLinkLabel:"Altcha.orgを訪問",enterCode:"コードを入力",enterCodeAria:"聞こえるコードを入力してください。スペースキーを押して音声を再生します。",error:"認証に失敗しました。後でもう一度試してください。",expired:"認証が期限切れです。再試行してください。",verificationRequired:"認証が必要です!",footer:'保護されています ALTCHA',getAudioChallenge:"音声チャレンジを取得",label:"私はロボットではありません",loading:"読み込み中...",reload:"再読み込み",verify:"確認",verified:"確認済み",verifying:"確認中...",waitAlert:"確認中...少々お待ちください。"};globalThis.altchaI18n.set("ja",Fl);const Ml={ariaLinkLabel:"Altcha.org 방문하기",enterCode:"코드 입력",enterCodeAria:"들리는 코드를 입력하세요. 스페이스 바를 눌러 오디오를 재생합니다.",error:"인증 실패. 나중에 다시 시도해주세요.",expired:"인증이 만료되었습니다. 다시 시도해주세요.",verificationRequired:"인증이 필요합니다!",footer:'ALTCHA에서 보호됨 ALTCHA',getAudioChallenge:"오디오 챌린지 받기",label:"저는 로봇이 아닙니다",loading:"로딩 중...",reload:"새로 고침",verify:"확인",verified:"확인됨",verifying:"확인 중...",waitAlert:"확인 중... 잠시만 기다려주세요."};globalThis.altchaI18n.set("ko",Ml);const Bl={ariaLinkLabel:"Altcha.org сайтына кіру",enterCode:"Кодты енгізіңіз",enterCodeAria:"Естіген кодыңызды енгізіңіз. Аудионы ойнату үшін Бос орынды басыңыз.",error:"Тексеру сәтсіз аяқталды. Кейінірек қайталаңыз.",expired:"Тексеру мерзімі аяқталды. Қайталаңыз.",footer:'ALTCHA қорғайды',getAudioChallenge:"Аудио сынақ алу",label:"Мен робот емеспін",loading:"Жүктелуде...",reload:"Қайта жүктеу",verify:"Тексеру",verificationRequired:"Тексеру талап етіледі!",verified:"Тексерілді",verifying:"Тексеруде...",waitAlert:"Тексерілуде... күте тұрыңыз."};globalThis.altchaI18n.set("kk",Bl);const Ul={ariaLinkLabel:"Altcha.org भेट द्या",enterCode:"कोड टाकाा",enterCodeAria:"तुम्ही ऐकत असलेला कोड टाका. ऑडिओ प्ले करण्यासाठी स्पेस दाबा.",error:"पुष्टीकरण अयशस्वी झाले. कृपया नंतर पुन्हा प्रयत्न करा.",expired:"पुष्टीकरण कालबाह्य झाले आहे. कृपया पुन्हा प्रयत्न करा.",verificationRequired:"पडताळणी आवश्यक आहे!",footer:'द्वारे संरक्षित ALTCHA',getAudioChallenge:"ऑडिओ चॅलेंज मिळवा",label:"मी रोबोट नाही",loading:"लोड होत आहे...",reload:"पुन्हा लोड करा",verify:"पुष्टीकरण करा",verified:"पुष्टीकरण झाले",verifying:"पुष्टीकरण करत आहे...",waitAlert:"पुष्टीकरण करत आहे... कृपया थोडा वेळ थांबा."};globalThis.altchaI18n.set("mr",Ul);const Gl={ariaLinkLabel:"Altcha.org ஐ பார்வையிடவும்",enterCode:"குறியீட்டை உள்ளிடவும்",enterCodeAria:"நீங்கள் கேட்கும் குறியீட்டை உள்ளிடவும். ஆடியோவை இயக்க Space ஐ அழுத்தவும்.",error:"சரிபார்ப்பு தோல்வி. பிறகு மீண்டும் முயற்சிக்கவும்.",expired:"சரிபார்ப்பு காலாவதியானது. மீண்டும் முயற்சிக்கவும்.",verificationRequired:"சரிபார்ப்பு தேவை!",footer:'மூலமாக பாதுகாக்கப்பட்டவை ALTCHA',getAudioChallenge:"ஒலி சவாலை பெறவும்",label:"நான் ரோபோடான அல்ல",loading:"செயலாக்கம்...",reload:"மீண்டும் புதுப்பிக்கவும்",verify:"சரிபார்க்கவும்",verified:"சரிபார்க்கப்பட்டது",verifying:"சரிபார்க்கப்படுகிறது...",waitAlert:"சரிபார்க்கப்படுகிறது... தயவுசெய்து காத்திருக்கவும்."};globalThis.altchaI18n.set("ta",Gl);const Wl={ariaLinkLabel:"Altcha.org సందర్శించండి",enterCode:"కోడ్‌ని నమోదు చేయండి",enterCodeAria:"మీరు విన్న కోడ్‌ని నమోదు చేయండి. ఆడియో ప్లే చేయడానికి స్పేస్‌ను నొక్కండి.",error:"చెకింగ్ విఫలమైంది. దయచేసి మరల ప్రయత్నించండి.",expired:"చెకింగ్ కాలం ముగిసింది. దయచేసి మరల ప్రయత్నించండి.",verificationRequired:"ధృవీకరణ అవసరం!",footer:'ఈ సైట్ రక్షించబడింది ALTCHA',getAudioChallenge:"ఆడియో ఛాలెంజ్ పొందండి",label:"నేను రోబోట్ కాదు",loading:"లోడ్ అవుతోంది...",reload:"మళ్ళీ లోడ్ చేయండి",verify:"ధ్రువీకరించు",verified:"ధ్రువీకరించబడింది",verifying:"ధ్రువీకరణ జరుగుతుంది...",waitAlert:"ధ్రువీకరణ జరుగుతుంది... దయచేసి వేచి ఉండండి."};globalThis.altchaI18n.set("te",Wl);const Zl={ariaLinkLabel:"เยี่ยมชม Altcha.org",enterCode:"ป้อนรหัส",enterCodeAria:"ป้อนรหัสที่คุณได้ยิน กด Space เพื่อเล่นเสียง",error:"การตรวจสอบล้มเหลว กรุณาลองอีกครั้งภายหลัง",expired:"การตรวจสอบหมดอายุ กรุณาลองใหม่",verificationRequired:"จำเป็นต้องตรวจสอบ!",footer:'ป้องกันโดย ALTCHA',getAudioChallenge:"รับการท้าทายเสียง",label:"ฉันไม่ใช่บอท",loading:"กำลังโหลด...",reload:"โหลดใหม่",verify:"ตรวจสอบ",verified:"ตรวจสอบแล้ว",verifying:"กำลังตรวจสอบ...",waitAlert:"กำลังตรวจสอบ... กรุณารอ"};globalThis.altchaI18n.set("th",Zl);const Yl={ariaLinkLabel:"Altcha.org پر جائیں",enterCode:"کوڈ درج کریں",enterCodeAria:"جو کوڈ آپ سنتے ہیں وہ درج کریں۔ آڈیو چلانے کے لیے اسپیس دبائیں۔",error:"توثیق ناکام ہو گئی۔ براہ کرم بعد میں دوبارہ کوشش کریں۔",expired:"توثیق کی مدت ختم ہو گئی ہے۔ براہ کرم دوبارہ کوشش کریں۔",verificationRequired:"تصدیق ضروری ہے!",footer:'کے ذریعے محفوظ ALTCHA',getAudioChallenge:"آڈیو چیلنج حاصل کریں",label:"میں روبوٹ نہیں ہوں",loading:"لوڈ ہو رہا ہے...",reload:"دوبارہ لوڈ کریں",verify:"توثیق کریں",verified:"توثیق شدہ",verifying:"توثیق ہو رہی ہے...",waitAlert:"توثیق ہو رہی ہے... براہ کرم انتظار کریں۔"};globalThis.altchaI18n.set("ur",Yl);const Kl={ariaLinkLabel:"Altcha.org saytiga tashrif buyuring",enterCode:"Kodni kiriting",enterCodeAria:"Eshitgan kodingizni kiriting. Audioni ijro etish uchun Bo'sh joy tugmasini bosing.",error:"Tekshiruv muvaffaqiyatsiz tugadi. Keyinroq qayta urinib ko'ring.",expired:"Tekshiruv muddati tugadi. Qayta urinib ko'ring.",footer:'ALTCHA tomonidan himoyalangan',getAudioChallenge:"Audio sinovni olish",label:"Men robot emasman",loading:"Yuklanmoqda...",reload:"Qayta yuklash",verify:"Tekshirish",verificationRequired:"Tekshiruv talab qilinadi!",verified:"Tekshirildi",verifying:"Tekshirilmoqda...",waitAlert:"Tekshirilmoqda... iltimos kuting."};globalThis.altchaI18n.set("uz",Kl);const Jl={ariaLinkLabel:"Truy cập Altcha.org",enterCode:"Nhập mã",enterCodeAria:"Nhập mã bạn nghe được. Nhấn Phím cách để phát âm thanh.",error:"Xác minh thất bại. Vui lòng thử lại sau.",expired:"Xác minh đã hết hạn. Vui lòng thử lại.",verificationRequired:"Yêu cầu xác minh!",footer:'Được bảo vệ bởi ALTCHA',getAudioChallenge:"Nhận thử thách âm thanh",label:"Tôi không phải là robot",loading:"Đang tải...",reload:"Tải lại",verify:"Xác minh",verified:"Đã xác minh",verifying:"Đang xác minh...",waitAlert:"Đang xác minh... vui lòng chờ."};globalThis.altchaI18n.set("vi",Jl);const Xl={ariaLinkLabel:"访问 Altcha.org",enterCode:"输入代码",enterCodeAria:"输入您听到的代码。按空格键播放音频。",error:"验证失败。稍后再试。",expired:"验证已过期。请重试。",verificationRequired:"需要验证!",footer:'由 ALTCHA 保护',getAudioChallenge:"获取音频挑战",label:"我不是机器人",loading:"加载中...",reload:"重新加载",verify:"验证",verified:"已验证",verifying:"正在验证...",waitAlert:"正在验证... 请稍等。"};globalThis.altchaI18n.set("zh-cn",Xl);const Ql={ariaLinkLabel:"訪問 Altcha.org",enterCode:"輸入代碼",enterCodeAria:"輸入您聽到的代碼。按空格鍵播放音頻。",error:"驗證失敗。稍後再試。",expired:"驗證已過期。請重試。",verificationRequired:"需要驗證!",footer:'由 ALTCHA 保護',getAudioChallenge:"獲取音頻挑戰",label:"我不是機器人",loading:"載入中...",reload:"重新載入",verify:"驗證",verified:"已驗證",verifying:"正在驗證...",waitAlert:"正在驗證... 請稍等。"};globalThis.altchaI18n.set("zh-tw",Ql);const Di='(function(){"use strict";const d=new TextEncoder;function p(e){return[...new Uint8Array(e)].map(t=>t.toString(16).padStart(2,"0")).join("")}async function b(e,t,r){if(typeof crypto>"u"||!("subtle"in crypto)||!("digest"in crypto.subtle))throw new Error("Web Crypto is not available. Secure context is required (https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts).");return p(await crypto.subtle.digest(r.toUpperCase(),d.encode(e+t)))}function w(e,t,r="SHA-256",n=1e6,l=0){const o=new AbortController,a=Date.now();return{promise:(async()=>{for(let c=l;c<=n;c+=1){if(o.signal.aborted)return null;if(await b(t,c,r)===e)return{number:c,took:Date.now()-a}}return null})(),controller:o}}function h(e){const t=atob(e),r=new Uint8Array(t.length);for(let n=0;n{for(let i=n;i<=r;i+=1){if(o.signal.aborted||!c||!u)return null;try{const f=await crypto.subtle.decrypt({name:l,iv:g(i)},c,u);if(f)return{clearText:new TextDecoder().decode(f),took:Date.now()-a}}catch{}}return null};let c=null,u=null;try{u=h(e);const i=await crypto.subtle.digest("SHA-256",d.encode(t));c=await crypto.subtle.importKey("raw",i,l,!1,["decrypt"])}catch{return{promise:Promise.reject(),controller:o}}return{promise:s(),controller:o}}let y;onmessage=async e=>{const{type:t,payload:r,start:n,max:l}=e.data;let o=null;if(t==="abort")y?.abort(),y=void 0;else if(t==="work"){if("obfuscated"in r){const{key:a,obfuscated:s}=r||{};o=await m(s,a,l,n)}else{const{algorithm:a,challenge:s,salt:c}=r||{};o=w(s,c,a,l,n)}y=o.controller,o.promise.then(a=>{self.postMessage(a&&{...a,worker:!0})})}}})();\n',Ma=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",Di],{type:"text/javascript;charset=utf-8"});function es(e){let t;try{if(t=Ma&&(self.URL||self.webkitURL).createObjectURL(Ma),!t)throw"";const r=new Worker(t,{name:e?.name});return r.addEventListener("error",(()=>{(self.URL||self.webkitURL).revokeObjectURL(t)})),r}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(Di),{name:e?.name})}}const ts="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(ts);const qi=new TextEncoder;function rs(e){return[...new Uint8Array(e)].map((e=>e.toString(16).padStart(2,"0"))).join("")}async function as(e,t="SHA-256",r=1e5){const a=Date.now().toString(16);e||(e=Math.round(Math.random()*r));return{algorithm:t,challenge:await Hi(a,e,t),salt:a,signature:""}}async function Hi(e,t,r){if(typeof crypto>"u"||!("subtle"in crypto)||!("digest"in crypto.subtle))throw new Error("Web Crypto is not available. Secure context is required (https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts).");return rs(await crypto.subtle.digest(r.toUpperCase(),qi.encode(e+t)))}function is(e,t,r="SHA-256",a=1e6,i=0){const n=new AbortController,o=Date.now();return{promise:(async()=>{for(let l=i;l<=a;l+=1){if(n.signal.aborted)return null;if(await Hi(t,l,r)===e)return{number:l,took:Date.now()-o}}return null})(),controller:n}}function Ba(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function ns(e){const t=atob(e),r=new Uint8Array(t.length);for(let e=0;e{for(let e=a;e<=r;e+=1){if(n.signal.aborted||!l||!s)return null;try{const t=await crypto.subtle.decrypt({name:i,iv:os(e)},l,s);if(t)return{clearText:(new TextDecoder).decode(t),took:Date.now()-o}}catch{}}return null})(),controller:n}}var A=(e=>(e.CODE="code",e.ERROR="error",e.VERIFIED="verified",e.VERIFYING="verifying",e.UNVERIFIED="unverified",e.EXPIRED="expired",e))(A||{}),Q=(e=>(e.ERROR="error",e.LOADING="loading",e.PLAYING="playing",e.PAUSED="paused",e.READY="ready",e))(Q||{});const ss={ariaLinkLabel:"Visit Altcha.org",enterCode:"Enter code",enterCodeAria:"Enter code you hear. Press Space to play audio.",error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:'Protected by ALTCHA',getAudioChallenge:"Get an audio challenge",label:"I'm not a robot",loading:"Loading...",reload:"Reload",verify:"Verify",verificationRequired:"Verification required!",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait."};globalThis.altchaI18n.set("en",ss);const Ir=(e,t)=>{let r=io((()=>Pn(t?.(),24)));var a=ds();Ce((()=>{T(a,"width",n(r)),T(a,"height",n(r))})),M(e,a)};function cs(e,t){"Space"===e.code&&(e.preventDefault(),e.stopImmediatePropagation(),t())}function us(e,t){e.preventDefault(),t()}function fs(e,t,r,a,i,o,l,s){[A.UNVERIFIED,A.ERROR,A.EXPIRED,A.CODE].includes(n(t))?!1!==r()&&!1===n(a)?.reportValidity()?y(i,!1):o()?l():s():y(i,!0)}var ds=mr(''),hs=ye(''),gs=ye('
'),vs=mr(''),bs=mr(''),ps=mr(''),ms=ye(''),ys=ye(""),As=ye(''),ks=ye("
"),_s=ye("
"),ws=ye('
'),Cs=ye(''),Ls=ye('
'),xs=ye('
',1);function Es(e,t){ii(t,!0);const[r,a]=Oo(),i=()=>Ho(X,"$altchaI18nStore",r);let o=w(t,"auto",7,void 0),l=w(t,"blockspam",7,void 0),s=w(t,"challengeurl",7,void 0),c=w(t,"challengejson",7,void 0),u=w(t,"credentials",7,void 0),d=w(t,"customfetch",7,void 0),f=w(t,"debug",7,!1),h=w(t,"delay",7,0),g=w(t,"disableautofocus",7,!1),v=w(t,"refetchonexpire",7,!0),p=w(t,"disablerefetchonexpire",23,(()=>!v())),b=w(t,"expire",7,void 0),m=w(t,"floating",7,void 0),k=w(t,"floatinganchor",7,void 0),C=w(t,"floatingoffset",7,void 0),x=w(t,"floatingpersist",7,!1),L=w(t,"hidefooter",7,!1),V=w(t,"hidelogo",7,!1),E=w(t,"id",7,void 0),j=w(t,"language",7,void 0),I=w(t,"name",7,"altcha"),R=w(t,"maxnumber",7,1e6),z=w(t,"mockerror",7,!1),P=w(t,"obfuscated",7,void 0),S=w(t,"overlay",7,void 0),q=w(t,"overlaycontent",7,void 0),N=w(t,"plugins",7,void 0),H=w(t,"sentinel",7,void 0),D=w(t,"spamfilter",7,!1),O=w(t,"strings",7,void 0),F=w(t,"test",7,!1),B=w(t,"verifyurl",7,void 0),U=w(t,"workers",23,(()=>Math.min(16,navigator.hardwareConcurrency||8))),G=w(t,"workerurl",7,void 0);const{altchaI18n:W}=globalThis,X=W.store,ee=["SHA-256","SHA-384","SHA-512"],te=(e,r)=>{t.$$host.dispatchEvent(new CustomEvent(e,{detail:r}))},re=document.documentElement.lang?.split("-")?.[0],ae=$t((()=>s()&&new URL(s(),location.origin).host.endsWith(".altcha.org")&&!!s()?.includes("apiKey=ckey_"))),ie=$t((()=>c()?Qe(c()):void 0)),ne=$t((()=>O()?Qe(O()):{})),oe=$t((()=>({...Ie(i()),...n(ne)}))),le=$t((()=>`${E()||I()}_checkbox_${Math.round(1e8*Math.random())}`));let se=$(null),ce=$(!1),ue=$(null),de=$(De(A.UNVERIFIED)),fe=$(void 0),he=$(null),ge=$(null),ve=$(null),pe=$(null),be=$(null),ye=$(null),me=$(null),Ae=$(null),ke=null,we=$(null),xe=$(!1),Le=[],Ve=$(!1),$e=$(null);function Te(e,t){return btoa(JSON.stringify({algorithm:e.algorithm,challenge:e.challenge,number:t.number,salt:e.salt,signature:e.signature,test:!!F()||void 0,took:t.took}))}function Ee(){s()&&!p()&&n(de)===A.VERIFIED?At():pt(A.EXPIRED,n(oe).expired)}function je(){let e=fetch;if(d())if(ze("using customfetch"),"string"==typeof d()){if(e=globalThis[d()]||null,!e)throw new Error(`Custom fetch function not found: ${d()}`)}else e=d();return e}function Ie(e,t=[j()||"",document.documentElement.lang||"",...navigator.languages]){const r=Object.keys(e).map((e=>e.toLowerCase())),a=t.reduce(((t,a)=>(a=a.toLowerCase(),t||(e[a]?a:null)||r.find((e=>a.split("-")[0]===e.split("-")[0]))||null)),null);return e[a||"en"]}function _e(e){return[...n(ye)?.querySelectorAll(e?.length?e.map((e=>`input[name="${e}"]`)).join(", "):'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')||[]].reduce(((e,t)=>{const r=t.name,a=t.value;return r&&a&&(e[r]=/\n/.test(a)?a.replace(new RegExp("(?e instanceof Error)))&&console[e[0]instanceof Error?"error":"log"]("ALTCHA",`[name=${I()}]`,...e)}function Pe(){y(we,Q.PAUSED,!0)}function Se(e){y(we,Q.ERROR,!0)}function qe(){y(we,Q.READY,!0)}function He(){y(we,Q.LOADING,!0)}function Me(){y(we,Q.PLAYING,!0)}function Oe(){y(we,Q.PAUSED,!0)}function Fe(e){if(e.preventDefault(),e.stopPropagation(),n(ue)){const t=new FormData(e.target),r=String(t.get("code"));if(B()?.startsWith("fn:")){const e=B().replace(/^fn:/,"");if(ze(`calling ${e} function instead of verifyurl`),!(e in globalThis))throw new Error(`Global function "${e}" is undefined.`);return globalThis[e]({challenge:n(ue).challenge,code:r,solution:n(ue).solution})}y(xe,!0),rt(Te(n(ue).challenge,n(ue).solution),r).then((({reason:e,verified:t})=>{t?(y(ue,null),yt(A.VERIFIED),ze("verified"),Tr().then((()=>{n(pe)?.focus(),te("verified",{payload:n($e)}),"onsubmit"===o()?at(n(me)):S()&>()}))):(pt(),y(Ae,e||"Verification failed",!0))})).catch((e=>{y(ue,null),yt(A.ERROR,e),ze("sentinel verification failed:",e)})).finally((()=>{y(xe,!1)}))}}function Be(e){const t=e.target;m()&&t&&!n(fe).contains(t)&&(n(de)===A.VERIFIED&&!1===x()||n(de)===A.VERIFIED&&"focus"===x()&&!n(ye)?.matches(":focus-within")||"off"===o()&&n(de)===A.UNVERIFIED)&>()}function Ue(){m()&&n(de)!==A.UNVERIFIED&&vt()}function Ze(e){n(de)===A.UNVERIFIED?At():m()&&"focus"===x()&&n(de)===A.VERIFIED&&mt()}function Ke(e){e.target?.hasAttribute("data-code-challenge-form")||(y(me,e.submitter,!0),n(ye)&&"onsubmit"===o()?(n(me)?.blur(),n(de)===A.UNVERIFIED?(e.preventDefault(),e.stopPropagation(),At().then((()=>{at(n(me))}))):n(de)!==A.VERIFIED&&(e.preventDefault(),e.stopPropagation(),n(de)===A.VERIFYING&&Ye())):n(ye)&&m()&&"off"===o()&&n(de)===A.UNVERIFIED&&(e.preventDefault(),e.stopPropagation(),mt()))}function Ge(){pt()}function Ye(){n(de)===A.VERIFYING&&n(oe).waitAlert&&alert(n(oe).waitAlert)}function We(){n(ge)?n(ge).paused?(n(ge).currentTime=0,n(ge).play()):n(ge).pause():(y(Ve,!0),requestAnimationFrame((()=>{n(ge)?.play()})))}function Je(){m()&&vt()}function Qe(e){return JSON.parse(e)}function Xe(e){const t=new URLSearchParams(e.split("?")?.[1]),r=t.get("expires")||t.get("expire");if(r){const e=new Date(1e3*+r),t=isNaN(e.getTime())?0:e.getTime()-Date.now();t>0&&it(t)}else ke&&(clearTimeout(ke),ke=null)}async function et(e){if(!B())throw new Error("Attribute verifyurl not set.");ze("requesting server verification from",B());const t={payload:e};if(!1!==D()){const{blockedCountries:e,classifier:r,disableRules:a,email:i,expectedLanguages:o,expectedCountries:l,fields:s,ipAddress:c,text:u,timeZone:d}="ipAddress"===D()?{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:!1,expectedCountries:void 0,expectedLanguages:void 0,fields:!1,ipAddress:void 0,text:void 0,timeZone:void 0}:"object"==typeof D()?D():{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,text:void 0,timeZone:void 0};t.blockedCountries=e,t.classifier=r,t.disableRules=a,t.email=!1===i?void 0:function(e){const t=n(ye)?.querySelector("string"==typeof e?`input[name="${e}"]`:'input[type="email"]:not([data-no-spamfilter])');return t?.value?.slice(t.value.indexOf("@"))||void 0}(i),t.expectedCountries=l,t.expectedLanguages=o||(re?[re]:void 0),t.fields=!1===s?void 0:_e(s),t.ipAddress=!1===c?void 0:c||"auto",t.text=u,t.timeZone=!1===d?void 0:d||Ba()}const r=await je()(B(),{body:JSON.stringify(t),headers:{"content-type":"application/json"},method:"POST"});if(!(r&&r instanceof Response))throw new Error("Custom fetch function did not return a response.");if(200!==r.status)throw new Error(`Server responded with ${r.status}.`);const a=await r.json();if(a?.payload&&y($e,a.payload,!0),te("serververification",a),l()&&"BAD"===a.classification)throw new Error("SpamFilter returned negative classification.")}async function rt(e,t){if(!B())throw new Error("Attribute verifyurl not set.");ze("requesting sentinel verification from",B());const r={code:t,payload:e};H()&&(r.fields=H().fields?_e():void 0,r.timeZone=H().timeZone?Ba():void 0);const a=await je()(B(),{body:JSON.stringify(r),headers:{"content-type":"application/json"},method:"POST"});if(!(a&&a instanceof Response))throw new Error("Fetch function did not return a response.");if(200!==a.status)throw new Error(`Server responded with ${a.status}.`);const i=await a.json();return i?.payload&&y($e,i.payload,!0),te("sentinelverification",i),i}function at(e){n(ye)&&"requestSubmit"in n(ye)?n(ye).requestSubmit(e):n(ye)?.reportValidity()&&(e?e.click():n(ye).submit())}function it(e){ze("expire",e),ke&&(clearTimeout(ke),ke=null),e<1?Ee():ke=setTimeout(Ee,e)}function nt(e){ze("floating",e),m()!==e&&(n(fe).style.left="",n(fe).style.top=""),m(!0===e||""===e?"auto":!1===e||"false"===e?void 0:m()),m()?(o()||o("onsubmit"),document.addEventListener("scroll",Ue),document.addEventListener("click",Be),window.addEventListener("resize",Je)):"onsubmit"===o()&&o(void 0)}function ot(e){if(ze("overlay",e),S(e),e){if(o()||o("onsubmit"),n(ve)&&n(fe).parentElement&&n(ve).replaceWith(n(fe).parentElement),n(fe)?.parentElement?.parentElement){y(ve,document.createElement("div"),!0),n(fe).parentElement.parentElement.appendChild(n(ve));const e=document.createElement("div"),t=document.createElement("button");t.type="button",t.innerHTML="×",t.addEventListener("click",(e=>{e.preventDefault(),pt()})),n(ve).classList.add("altcha-overlay-backdrop"),t.classList.add("altcha-overlay-close-button"),e.classList.add("altcha-overlay"),n(ve).append(e),e.append(t),q()&&e.append(...document.querySelectorAll(q())),e.append(n(fe).parentElement)}}else n(ve)&&n(fe).parentElement&&(n(ve).replaceWith(n(fe).parentElement),n(fe).style.display="block")}function lt(e){if(!e.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(void 0===e.signature)throw new Error("Invalid challenge. Property signature is missing.");if(!ee.includes(e.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${ee.join(", ")}`);if(!e.challenge||e.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!e.salt||e.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function st(e){let t=null,r=null;if("Worker"in window){try{t=function(e,t=("number"==typeof F()?F():e.maxNumber||e.maxnumber||R()),r=Math.ceil(U())){const a=new AbortController,i=[];r=Math.min(16,t,Math.max(1,r));for(let e=0;e{const t=await Promise.all(i.map(((t,r)=>{const o=r*n;return a.signal.addEventListener("abort",(()=>{t.postMessage({type:"abort"})})),new Promise((r=>{t.addEventListener("message",(e=>{if(e.data)for(const e of i)e!==t&&e.postMessage({type:"abort"});r(e.data)})),t.postMessage({payload:e,max:o+n,start:o,type:"work"})}))})));for(const e of i)e.terminate();return t.find((e=>!!e))||null})(),controller:a}}(e,e.maxNumber||e.maxnumber||R()),y(se,t.controller,!0),r=await t.promise}catch(e){ze(e)}finally{y(se,null)}if(null===r||void 0!==r?.number||"obfuscated"in e)return{data:e,solution:r}}if("obfuscated"in e){const t=await ls(e.obfuscated,e.key,e.maxNumber||e.maxnumber);return{data:e,solution:await t.promise}}t=is(e.challenge,e.salt,e.algorithm,e.maxNumber||e.maxnumber||R()),y(se,t.controller,!0);try{r=await t.promise}catch(e){ze(e)}finally{y(se,null)}return{data:e,solution:r}}async function ct(){if(!P())return void yt(A.ERROR);const e=Le.find((e=>"obfuscation"===e.constructor.pluginName));return e&&"clarify"in e?"clarify"in e&&"function"==typeof e.clarify?e.clarify():void 0:(yt(A.ERROR),void ze("Plugin `obfuscation` not found. Import `altcha/plugins/obfuscation` to load it."))}function ut(e){void 0!==e.obfuscated&&P(e.obfuscated),void 0!==e.auto&&(o(e.auto),"onload"===o()&&(P()?ct():At())),void 0!==e.blockspam&&l(!!e.blockspam),void 0!==e.customfetch&&d(e.customfetch),void 0!==e.floatinganchor&&k(e.floatinganchor),void 0!==e.delay&&h(e.delay),void 0!==e.floatingoffset&&C(e.floatingoffset),void 0!==e.floating&&nt(e.floating),void 0!==e.expire&&(it(e.expire),b(e.expire)),e.challenge&&(c("string"==typeof e.challenge?e.challenge:JSON.stringify(e.challenge)),lt(n(ie))),void 0!==e.challengeurl&&s(e.challengeurl),void 0!==e.debug&&f(!!e.debug),void 0!==e.hidefooter&&L(!!e.hidefooter),void 0!==e.hidelogo&&V(!!e.hidelogo),void 0!==e.language&&O(Ie(i(),[e.language])),void 0!==e.maxnumber&&R(+e.maxnumber),void 0!==e.mockerror&&z(!!e.mockerror),void 0!==e.name&&I(e.name),void 0!==e.overlaycontent&&q(e.overlaycontent),void 0!==e.overlay&&ot(e.overlay),void 0!==e.refetchonexpire&&p(!e.refetchonexpire),void 0!==e.disablerefetchonexpire&&p(!e.disablerefetchonexpire),void 0!==e.sentinel&&"object"==typeof e.sentinel&&H(e.sentinel),void 0!==e.spamfilter&&D("object"==typeof e.spamfilter?e.spamfilter:!!e.spamfilter),e.strings&&O("string"==typeof e.strings?e.strings:JSON.stringify(e.strings)),void 0!==e.test&&F("number"==typeof e.test?e.test:!!e.test),void 0!==e.verifyurl&&B(e.verifyurl),void 0!==e.workers&&U(+e.workers),void 0!==e.workerurl&&G(e.workerurl)}function dt(){return{auto:o(),blockspam:l(),challengeurl:s(),debug:f(),delay:h(),disableautofocus:g(),disablerefetchonexpire:p(),expire:b(),floating:m(),floatinganchor:k(),floatingoffset:C(),hidefooter:L(),hidelogo:V(),name:I(),maxnumber:R(),mockerror:z(),obfuscated:P(),overlay:S(),refetchonexpire:!p(),spamfilter:D(),strings:n(oe),test:F(),verifyurl:B(),workers:U(),workerurl:G()}}function ft(){return n(be)}function ht(){return n(de)}function gt(){n(fe).style.display="none",S()&&n(ve)&&(n(ve).style.display="none")}function vt(e=20){if(n(fe))if(n(be)||y(be,(k()?document.querySelector(k()):n(ye)?.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])'))||n(ye),!0),n(be)){const t=parseInt(C(),10)||12,r=n(be).getBoundingClientRect(),a=n(fe).getBoundingClientRect(),i=document.documentElement.clientHeight,o=document.documentElement.clientWidth,l="auto"===m()?r.bottom+a.height+t+e>i:"top"===m(),s=Math.max(e,Math.min(o-e-a.width,r.left+r.width/2-a.width/2));if(n(fe).style.top=l?r.top-(a.height+t)+"px":`${r.bottom+t}px`,n(fe).style.left=`${s}px`,n(fe).setAttribute("data-floating",l?"top":"bottom"),n(he)){const e=n(he).getBoundingClientRect();n(he).style.left=r.left-s+r.width/2-e.width/2+"px"}}else ze("unable to find floating anchor element")}function pt(e=A.UNVERIFIED,t=null){n(se)&&(n(se).abort(),y(se,null)),y(ce,!1),y($e,null),y(ue,null),y(Ve,!1),y(we,null),yt(e,t)}function bt(e){y(be,e,!0)}function yt(e,t=null){y(de,e,!0),y(Ae,t,!0),te("statechange",{payload:n($e),state:n(de)})}function mt(){n(fe).style.display="block",m()&&vt(),S()&&n(ve)&&(n(ve).style.display="flex")}async function At(){return pt(A.VERIFYING),await new Promise((e=>setTimeout(e,h()||0))),async function(){if(z())throw ze("mocking error"),new Error("Mocked error.");if(n(ie))return ze("using provided json data"),Xe(n(ie).salt),n(ie);if(F())return ze("generating test challenge",{test:F()}),as("boolean"!=typeof F()?+F():void 0);{if(!s()&&n(ye)){const e=n(ye).getAttribute("action");e?.includes("/form/")&&s(e+"/altcha")}if(!s())throw new Error("Attribute challengeurl not set.");ze("fetching challenge from",s());const e={credentials:"boolean"==typeof u()?"include":u(),headers:!1!==D()?{"x-altcha-spam-filter":"1"}:{}},t=await je()(s(),e);if(!(t&&t instanceof Response))throw new Error("Custom fetch function did not return a response.");if(200!==t.status)throw new Error(`Server responded with ${t.status}.`);const r=t.headers.get("X-Altcha-Config"),a=await t.json();if(Xe(a.salt),r)try{const e=JSON.parse(r);e&&"object"==typeof e&&(e.verifyurl&&!e.verifyurl.startsWith("fn:")&&(e.verifyurl=Re(e.verifyurl)),ut(e))}catch(e){ze("unable to configure from X-Altcha-Config",e)}return a}}().then((e=>(lt(e),ze("challenge",e),st(e)))).then((({data:e,solution:t})=>{if(ze("solution",t),!t||e&&"challenge"in e&&!("clearText"in t))if(void 0!==t?.number&&"challenge"in e)if(B()&&"codeChallenge"in e)["INPUT","BUTTON","SELECT","TEXTAREA"].includes(document.activeElement?.tagName||"")&&!1===g()&&document.activeElement.blur(),y(ue,{challenge:e,solution:t},!0);else{if(B()&&void 0!==H())return rt(Te(e,t));if(B())return et(Te(e,t));y($e,Te(e,t),!0),ze("payload",n($e))}else if(n(de)!==A.EXPIRED)throw ze("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")})).then((()=>{n(ue)?(yt(A.CODE),Tr().then((()=>{te("code",{codeChallenge:n(ue)})}))):n($e)&&(yt(A.VERIFIED),ze("verified"),Tr().then((()=>{te("verified",{payload:n($e)}),S()&>()})))})).catch((e=>{ze(e),yt(A.ERROR,e.message)}))}Rr((()=>{!function(e){for(const e of Le)"function"==typeof e.onErrorChange&&e.onErrorChange(n(Ae))}(n(Ae))})),Rr((()=>{!function(e){for(const e of Le)"function"==typeof e.onStateChange&&e.onStateChange(n(de));m()&&n(de)!==A.UNVERIFIED&&requestAnimationFrame((()=>{vt()})),y(ce,n(de)===A.VERIFIED),S()&&n(ve)&&(n(de)!==A.UNVERIFIED?mt():gt())}(n(de))})),Wo((()=>{(function(){for(const e of Le)e.destroy()})(),y(me,null),n(ye)&&(n(ye).removeEventListener("submit",Ke),n(ye).removeEventListener("reset",Ge),n(ye).removeEventListener("focusin",Ze),y(ye,null)),ke&&(clearTimeout(ke),ke=null),document.removeEventListener("click",Be),document.removeEventListener("scroll",Ue),window.removeEventListener("resize",Je)})),Pi((()=>{ze("mounted","2.2.4"),ze("workers",U()),function(){const e=void 0!==N()?N().split(","):void 0;for(const t of globalThis.altchaPlugins)(!e||e.includes(t.pluginName))&&Le.push(new t({el:n(fe),clarify:ct,dispatch:te,getConfiguration:dt,getFloatingAnchor:ft,getState:ht,log:ze,reset:pt,solve:st,setState:yt,setFloatingAnchor:bt,verify:At}))}(),ze("plugins",Le.length?Le.map((e=>e.constructor.pluginName)).join(", "):"none"),F()&&ze("using test mode"),b()&&it(b()),void 0!==o()&&ze("auto",o()),void 0!==m()&&nt(m()),y(ye,n(fe)?.closest("form"),!0),n(ye)&&(n(ye).addEventListener("submit",Ke,{capture:!0}),n(ye).addEventListener("reset",Ge),("onfocus"===o()||"focus"===x())&&n(ye).addEventListener("focusin",Ze)),S()&&ot(!0),"onload"===o()&&(P()?ct():At()),n(ae)&&(L()||V())&&ze("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."),requestAnimationFrame((()=>{te("load")}))}));var kt=xs(),wt=St(kt);Ro(wt,t,"default",{});var Ct=K(wt,2),xt=Y(Ct),Lt=Y(xt);let Vt;var Tt=Y(Lt),Et=e=>{Ir(e)};J(Tt,(e=>{n(de)===A.VERIFYING&&e(Et)}));var jt=K(Tt,2);qa(jt),jt.__change=[fs,de,D,ye,ce,P,ct,At],Qt(jt,(e=>y(pe,e)),(()=>n(pe))),Z(Lt);var It=K(Lt,2),_t=Y(It),Rt=e=>{var t=Xt();tt(St(t),(()=>n(oe).verified)),M(e,t)},zt=(e,t)=>{var r=e=>{var t=Xt();tt(St(t),(()=>n(oe).verifying)),M(e,t)},a=(e,t)=>{var r=e=>{var t=Xt();tt(St(t),(()=>n(oe).verificationRequired)),M(e,t)},a=e=>{var t=Xt();tt(St(t),(()=>n(oe).label)),M(e,t)};J(e,(e=>{n(de)===A.CODE?e(r):e(a,!1)}),t)};J(e,(e=>{n(de)===A.VERIFYING?e(r):e(a,!1)}),t)};J(_t,(e=>{n(de)===A.VERIFIED?e(Rt):e(zt,!1)})),Z(It);var Pt=K(It,2),qt=e=>{var t=hs();qa(t),Ce((()=>{T(t,"name",I()),No(t,n($e))})),M(e,t)};J(Pt,(e=>{n(de)===A.VERIFIED&&e(qt)}));var Nt=K(Pt,2),Ht=e=>{var t=gs(),r=Y(t);T(r,"href","https://altcha.org/"),Z(t),Ce((()=>T(r,"aria-label",n(oe).ariaLinkLabel))),M(e,t)};J(Nt,(e=>{(!0!==V()||n(ae))&&e(Ht)}));var Dt=K(Nt,2),Mt=e=>{var t=As(),r=K(Y(t),2),a=Y(r),i=K(a,2);Lo(i,!g()),i.__keydown=[cs,We];var o=K(i,2),l=Y(o),s=Y(l),c=e=>{var t=ms();t.__click=We;var r=Y(t),a=e=>{Ir(e,(()=>20))},i=(e,t)=>{var r=e=>{M(e,vs())},a=(e,t)=>{var r=e=>{M(e,bs())},a=e=>{M(e,ps())};J(e,(e=>{n(we)===Q.PLAYING?e(r):e(a,!1)}),t)};J(e,(e=>{n(we)===Q.ERROR?e(r):e(a,!1)}),t)};J(r,(e=>{n(we)===Q.LOADING?e(a):e(i,!1)})),Z(t),Ce((()=>{T(t,"title",n(oe).getAudioChallenge),t.disabled=n(we)===Q.LOADING||n(we)===Q.ERROR||n(xe),T(t,"aria-label",n(we)===Q.LOADING?n(oe).loading:n(oe).getAudioChallenge)})),M(e,t)};J(s,(e=>{n(ue).challenge.codeChallenge.audio&&e(c)}));var u=K(s,2);u.__click=[us,At],Z(l);var d=K(l,2),f=Y(d),h=e=>{Ir(e,(()=>16))};J(f,(e=>{n(xe)&&e(h)}));var v=K(f);Z(d),Z(o);var p=K(o,2),b=e=>{var t=ys(),r=Y(t);Z(t),Qt(t,(e=>y(ge,e)),(()=>n(ge))),Ce((e=>T(r,"src",e)),[()=>Re(n(ue).challenge.codeChallenge.audio,{language:j()})]),Ne("loadstart",t,He),Ne("canplay",t,qe),Ne("pause",t,Oe),Ne("playing",t,Me),Ne("ended",t,Pe),Ne("error",r,Se),M(e,t)};J(p,(e=>{n(ue).challenge.codeChallenge.audio&&n(Ve)&&e(b)})),Z(r),Z(t),Ce((()=>{T(t,"aria-label",n(oe).verificationRequired),T(a,"src",n(ue).challenge.codeChallenge.image),T(i,"minlength",n(ue).challenge.codeChallenge.length||1),T(i,"maxlength",n(ue).challenge.codeChallenge.length),T(i,"placeholder",n(oe).enterCode),T(i,"aria-label",n(we)===Q.LOADING?n(oe).loading:n(we)===Q.PLAYING?"":n(oe).enterCodeAria),T(i,"aria-live",n(we)?"assertive":"polite"),T(i,"aria-busy",n(we)===Q.LOADING),i.disabled=n(xe),T(u,"aria-label",n(oe).reload),T(u,"title",n(oe).reload),u.disabled=n(xe),d.disabled=n(xe),T(d,"aria-label",n(oe).verify),Io(v,` ${n(oe).verify??""}`)})),Ne("submit",r,Fe,!0),M(e,t)};J(Dt,(e=>{n(ue)?.challenge.codeChallenge&&e(Mt)})),Z(xt);var Ot=K(xt,2),Ft=e=>{var t=ws(),r=K(Y(t),2),a=e=>{var t=ks();tt(Y(t),(()=>n(oe).expired)),Z(t),Ce((()=>T(t,"title",n(Ae)))),M(e,t)},i=e=>{var t=_s();tt(Y(t),(()=>n(oe).error)),Z(t),Ce((()=>T(t,"title",n(Ae)))),M(e,t)};J(r,(e=>{n(de)===A.EXPIRED?e(a):e(i,!1)})),Z(t),M(e,t)};J(Ot,(e=>{(n(Ae)||n(de)===A.EXPIRED)&&e(Ft)}));var Bt=K(Ot,2),Ut=e=>{var t=Cs(),r=Y(t);tt(Y(r),(()=>n(oe).footer)),Z(r),Z(t),M(e,t)};J(Bt,(e=>{n(oe).footer&&(!0!==L()||n(ae))&&e(Ut)}));var Zt=K(Bt,2),Kt=e=>{var t=Ls();Qt(t,(e=>y(he,e)),(()=>n(he))),M(e,t)};J(Zt,(e=>{m()&&e(Kt)})),Z(Ct),Qt(Ct,(e=>y(fe,e)),(()=>n(fe))),Ce((e=>{T(Ct,"data-state",n(de)),T(Ct,"data-floating",m()),T(Ct,"data-overlay",S()),Vt=So(Lt,1,"altcha-checkbox",null,Vt,e),T(jt,"id",n(le)),jt.required="onsubmit"!==o()&&(!m()||"off"!==o()),T(It,"for",n(le))}),[()=>({"altcha-checkbox-verifying":n(de)===A.VERIFYING})]),Ne("invalid",jt,Ye),qo(jt,(()=>n(ce)),(e=>y(ce,e))),M(e,kt);var Gt=ni({clarify:ct,configure:ut,getConfiguration:dt,getFloatingAnchor:ft,getPlugin:function(e){return Le.find((t=>t.constructor.pluginName===e))},getState:ht,hide:gt,repositionFloating:vt,reset:pt,setFloatingAnchor:bt,setState:yt,show:mt,verify:At,get auto(){return o()},set auto(e=void 0){o(e),_()},get blockspam(){return l()},set blockspam(e=void 0){l(e),_()},get challengeurl(){return s()},set challengeurl(e=void 0){s(e),_()},get challengejson(){return c()},set challengejson(e=void 0){c(e),_()},get credentials(){return u()},set credentials(e=void 0){u(e),_()},get customfetch(){return d()},set customfetch(e=void 0){d(e),_()},get debug(){return f()},set debug(e=!1){f(e),_()},get delay(){return h()},set delay(e=0){h(e),_()},get disableautofocus(){return g()},set disableautofocus(e=!1){g(e),_()},get refetchonexpire(){return v()},set refetchonexpire(e=!0){v(e),_()},get disablerefetchonexpire(){return p()},set disablerefetchonexpire(e=!v){p(e),_()},get expire(){return b()},set expire(e=void 0){b(e),_()},get floating(){return m()},set floating(e=void 0){m(e),_()},get floatinganchor(){return k()},set floatinganchor(e=void 0){k(e),_()},get floatingoffset(){return C()},set floatingoffset(e=void 0){C(e),_()},get floatingpersist(){return x()},set floatingpersist(e=!1){x(e),_()},get hidefooter(){return L()},set hidefooter(e=!1){L(e),_()},get hidelogo(){return V()},set hidelogo(e=!1){V(e),_()},get id(){return E()},set id(e=void 0){E(e),_()},get language(){return j()},set language(e=void 0){j(e),_()},get name(){return I()},set name(e="altcha"){I(e),_()},get maxnumber(){return R()},set maxnumber(e=1e6){R(e),_()},get mockerror(){return z()},set mockerror(e=!1){z(e),_()},get obfuscated(){return P()},set obfuscated(e=void 0){P(e),_()},get overlay(){return S()},set overlay(e=void 0){S(e),_()},get overlaycontent(){return q()},set overlaycontent(e=void 0){q(e),_()},get plugins(){return N()},set plugins(e=void 0){N(e),_()},get sentinel(){return H()},set sentinel(e=void 0){H(e),_()},get spamfilter(){return D()},set spamfilter(e=!1){D(e),_()},get strings(){return O()},set strings(e=void 0){O(e),_()},get test(){return F()},set test(e=!1){F(e),_()},get verifyurl(){return B()},set verifyurl(e=void 0){B(e),_()},get workers(){return U()},set workers(e=Math.min(16,navigator.hardwareConcurrency||8)){U(e),_()},get workerurl(){return G()},set workerurl(e=void 0){G(e),_()}});return a(),Gt}To(["change","keydown","click"]),customElements.define("altcha-widget",Go(Es,{blockspam:{type:"Boolean"},debug:{type:"Boolean"},delay:{type:"Number"},disableautofocus:{type:"Boolean"},disablerefetchonexpire:{type:"Boolean"},expire:{type:"Number"},floatingoffset:{type:"Number"},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},maxnumber:{type:"Number"},mockerror:{type:"Boolean"},refetchonexpire:{type:"Boolean"},test:{type:"Boolean"},workers:{type:"Number"},auto:{},challengeurl:{},challengejson:{},credentials:{},customfetch:{},floating:{},floatinganchor:{},floatingpersist:{},id:{},language:{},name:{},obfuscated:{},overlay:{},overlaycontent:{},plugins:{},sentinel:{},spamfilter:{},strings:{},verifyurl:{},workerurl:{}},["default"],["clarify","configure","getConfiguration","getFloatingAnchor","getPlugin","getState","hide","repositionFloating","reset","setFloatingAnchor","setState","show","verify"],!1));const Ts='@keyframes overlay-slidein{to{opacity:1;top:50%}}@keyframes altcha-spinner{to{transform:rotate(360deg)}}.altcha{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);position:relative}.altcha:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating]{background:var(--altcha-color-base, white);display:none;filter:drop-shadow(3px 3px 6px rgba(0,0,0,.2));left:-100%;position:fixed;top:-100%;width:var(--altcha-max-width, 260px);z-index:999999}.altcha[data-floating=top] .altcha-anchor-arrow{border-bottom-color:transparent;border-top-color:var(--altcha-color-border, #a0a0a0);bottom:-12px;top:auto}.altcha[data-floating=bottom]:focus-within::after{border-bottom-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating=top]:focus-within::after{border-top-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating]:not([data-state=unverified]){display:block}.altcha-anchor-arrow{border:6px solid transparent;border-bottom-color:var(--altcha-color-border, #a0a0a0);content:"";height:0;left:12px;position:absolute;top:-12px;width:0}.altcha-main{align-items:center;display:flex;gap:.4rem;padding:.7rem;position:relative}.altcha-code-challenge{background:var(--altcha-color-base, white);border:1px solid var(--altcha-color-border-focus, currentColor);border-radius:var(--altcha-border-radius, 3px);filter:drop-shadow(3px 3px 6px rgba(0,0,0,.2));padding:.5rem;position:absolute;top:2.5rem;z-index:9999999}.altcha-code-challenge>form{display:flex;flex-direction:column;gap:.5rem}.altcha-code-challenge-input{border:1px solid currentColor;border-radius:3px;box-sizing:border-box;outline:0;font-size:16px;padding:.35rem;width:220px}.altcha-code-challenge-input:focus{outline:2px solid color-mix(in srgb,var(--altcha-color-active, #1D1DC9) 20%,transparent)}.altcha-code-challenge-input:disabled{opacity:.7}.altcha-code-challenge-image{background-color:#fff;border:1px solid currentColor;border-radius:3px;box-sizing:border-box;object-fit:contain;height:50px;width:220px}.altcha-code-challenge-audio,.altcha-code-challenge-reload{background:color-mix(in srgb,var(--altcha-color-text, currentColor) 10%,transparent);border:0;border-radius:3px;color:var(--altcha-color-text, currentColor);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.35rem}.altcha-code-challenge-audio:disabled,.altcha-code-challenge-reload:disabled,.altcha-code-challenge-verify:disabled{opacity:.7;pointer-events:none}.altcha-code-challenge-audio>*,.altcha-code-challenge-reload>*{height:20px;width:20px}.altcha-code-challenge-buttons{display:flex;justify-content:space-between}.altcha-code-challenge-buttons-left{display:flex;gap:.25rem}.altcha-code-challenge-verify{align-items:center;background:var(--altcha-color-active, #1D1DC9);border:0;border-radius:3px;color:#fff;cursor:pointer;display:flex;gap:.5rem;font-size:100%;padding:.35rem 1rem}.altcha-code-challenge-arrow{border:6px solid transparent;border-bottom-color:var(--altcha-color-border, currentColor);content:"";height:0;left:.15rem;position:absolute;top:-12px;width:0}.altcha[data-floating=top] .altcha-code-challenge{top:-150px}.altcha[data-floating=top] .altcha-code-challenge-arrow{border-bottom-color:transparent;border-top-color:var(--altcha-color-border, currentColor);bottom:-12px;top:auto}.altcha-label{cursor:pointer;flex-grow:1}.altcha-logo{color:currentColor!important;opacity:.7}.altcha-footer:hover,.altcha-logo:hover{opacity:1}.altcha-error{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:.85rem;gap:.3rem;padding:0 .7rem .7rem}.altcha-footer{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:.75rem;opacity:.7;justify-content:end;padding:.2rem .7rem}.altcha-footer a{color:currentColor}.altcha-checkbox{display:flex;align-items:center;justify-content:center;height:24px;position:relative;width:24px}.altcha-checkbox .altcha-spinner{bottom:0;left:0;position:absolute;right:0;top:0}.altcha-checkbox input{width:18px;height:18px;margin:0}.altcha-checkbox-verifying input{appearance:none;opacity:0;pointer-events:none}.altcha-spinner{animation:altcha-spinner .75s infinite linear;transform-origin:center}.altcha-overlay{--altcha-color-base:#fff;--altcha-color-text:#000;animation:overlay-slidein .5s forwards;display:flex;flex-direction:column;gap:.5rem;left:50%;width:260px;opacity:0;position:fixed;top:45%;transform:translate(-50%,-50%)}.altcha-overlay-backdrop{background:rgba(0,0,0,.5);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:99999999}.altcha-overlay-close-button{align-self:flex-end;background:0 0;border:0;padding:.25rem;cursor:pointer;color:currentColor;font-size:130%;line-height:1;opacity:.7}@media (max-height:450px){.altcha-overlay{top:10%!important;transform:translate(-50%,0)}}';function Is(e,t="__altcha-css"){if(!document.getElementById(t)){const r=document.createElement("style");r.id=t,r.textContent=e,document.head.appendChild(r)}}globalThis.altchaCreateWorker=e=>e?new Worker(new URL(e)):new es,Is(Ts);export{Es as Altcha}; \ No newline at end of file diff --git a/django_altcha/templates/altcha_widget.html b/django_altcha/templates/altcha_widget.html index a4cc7b8..3013ec9 100644 --- a/django_altcha/templates/altcha_widget.html +++ b/django_altcha/templates/altcha_widget.html @@ -1,4 +1,5 @@ +{% if include_trans %}{% endif %} {% include "django/forms/widgets/input.html" %}