(()=>{if("undefined"==typeof gfZeroSpamConfig)return;const e=gfZeroSpamConfig.forms,o=!!gfZeroSpamConfig.debug;if(e&&e.length){if("undefined"!=typeof gform&&gform.utils&&gform.utils.addAsyncFilter){const o={};return e.forEach(e=>{o[e.formId]=e}),void gform.utils.addAsyncFilter("gform/submission/pre_submission",e=>{const t=parseInt(e.form.dataset.formid,10),f=o[t];return f?n(f).then(o=>(r(e.form,o),e)):Promise.resolve(e)})}e.forEach(e=>{const o=document.getElementById("gform_"+e.formId);o&&!o.dataset.gfzsBound&&(o.dataset.gfzsBound="1",o.addEventListener("submit",function(o){o.preventDefault(),n(e).then(e=>{r(this,e),this.submit()})}))})}function t(e){o&&console.warn("[GF Zero Spam] "+e)}function n(e){const o=new FormData;o.append("action","gf_zero_spam_token"),o.append("form_id",e.formId);const n={method:"POST",body:o};let r;"undefined"!=typeof AbortSignal&&AbortSignal.timeout&&(n.signal=AbortSignal.timeout(e.timeout));try{r=fetch(e.ajaxUrl,n)}catch(o){return t("Token fetch failed for form "+e.formId+": "+o.message+". Using fallback token."),Promise.resolve(e.fallbackToken)}return r&&"function"==typeof r.then?Promise.resolve(r).then(e=>{if(!e.ok)throw new Error("AJAX "+e.status);return e.json()}).then(e=>e.token).catch(o=>(t("Token fetch failed for form "+e.formId+": "+o.message+". Using fallback token."),e.fallbackToken)):(t("Token fetch failed for form "+e.formId+": fetch returned non-thenable. Using fallback token."),Promise.resolve(e.fallbackToken))}function r(e,o){const t=e.querySelector('input[name="gf_zero_spam_token"]');t&&t.remove();const n=document.createElement("input");n.type="hidden",n.name="gf_zero_spam_token",n.value=o,n.setAttribute("autocomplete","new-password"),e.appendChild(n)}})();