PageSourceSearch

https://www.hogapage.de/static/js/friendly-captcha/widget.module.min.js

js hogapage.de collected 2026-10-02 04:51:20 UTC 59,083 bytes, 926 lines download raw bytes

1const t =
2        '<circle cx="12" cy="12" r="8" stroke-width="3" stroke-dasharray="15 10" fill="none" stroke-linecap="round" transform="rotate(0 12 12)"><animateTransform attributeName="transform" type="rotate" repeatCount="indefinite" dur="0.9s" values="0 12 12;360 12 12"/></circle>',
3    e = '<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/>';
4function r(t, e, r, i, o, n, a, s = !1, A, l) {
5    return `<div class="frc-container${l ? " " + l : ""}${e ? " frc-rtl" : ""}">\n<svg class="frc-icon"${i ? ' aria-hidden="true"' : ""} role="img" xmlns="http://www.w3.org/2000/svg" height="32" width="32" viewBox="0 0 24 24">${r}</svg>\n<div class="frc-content">\n    <span class="frc-text" ${A ? `data-debug="${A}"` : ""}>${o}</span>\n    ${a ? `<button type="button" class="frc-button">${a}</button>` : ""}\n    ${s ? '<progress class="frc-progress" value="0">0%</progress>' : ""}\n</div>\n</div><span class="frc-banner${e ? " frc-rtl" : ""}"><a lang="en" href="https://friendlycaptcha.com/" rel="noopener" target="_blank"><b>Friendly</b>Captcha ⇗</a></span>\n${"-" === t ? "" : `<input name="${t}" class="frc-captcha-solution" type="hidden" value="${n}">`}`;
6}
7function i(t, i, o, n = !0, a = !1) {
8    return r(t, i.rtl, e, !0, `<b>${i.text_error}</b><br>${o}`, a ? ".HEADLESS_ERROR" : ".ERROR", n ? i.button_retry : void 0);
9}
10const o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
11    n = "=".charCodeAt(0),
12    a = new Uint8Array(256);
13for (let t = 0; t < 64; t++) a[o.charCodeAt(t)] = t;
14function s(t) {
15    const e = t.length;
16    let r = "";
17    for (let i = 0; i < e; i += 3) {
18        const e = t[i + 0],
19            n = t[i + 1],
20            a = t[i + 2];
21        let s = "";
22        ((s += o.charAt(e >>> 2)), (s += o.charAt(((3 & e) << 4) | (n >>> 4))), (s += o.charAt(((15 & n) << 2) | (a >>> 6))), (s += o.charAt(63 & a)), (r += s));
23    }
24    return (e % 3 == 2 ? (r = r.substring(0, r.length - 1) + "=") : e % 3 == 1 && (r = r.substring(0, r.length - 2) + "=="), r);
25}
26let A, l;
27"undefined" != typeof navigator && "string" == typeof navigator.userAgent && ((A = navigator), (l = A.userAgent.toLowerCase()));
28class c extends Error {
29    constructor(t) {
30        (super(t), (this.name = "UserFacingError"), (this.rawError = this));
31    }
32}
33async function g(t, e, r) {
34    let i = 1e3;
35    return fetch(t, e).catch(async (o) => {
36        if (0 === r) throw o;
37        return (await new Promise((t) => setTimeout(t, i)), (i *= 4), g(t, e, r - 1));
38    });
39}
40const u = {
41        text_init: " Aktiverer...",
42        text_ready: "Jeg er ikke en robot",
43        button_start: "Klikk for å starte verifiseringen",
44        text_fetching: "Henter data",
45        text_solving: "Sjekker at du er et menneske...",
46        text_completed: "Jeg er et menneske",
47        text_completed_sr: "Automatisk spam-sjekk fullført",
48        text_expired: "Verifisering kunne ikke fullføres",
49        button_restart: "Omstart",
50        text_error: "Bekreftelsen mislyktes",
51        button_retry: "Prøv på nytt",
52        text_fetch_error: "Tilkoblingen mislyktes",
53    },
54    h = {
55        en: {
56            text_init: "Initializing...",
57            text_ready: "Anti-Robot Verification",
58            button_start: "Click to start verification",
59            text_fetching: "Fetching Challenge",
60            text_solving: "Verifying you are human...",
61            text_completed: "I am human",
62            text_completed_sr: "Automatic spam check completed",
63            text_expired: "Anti-Robot verification expired",
64            button_restart: "Restart",
65            text_error: "Verification failed",
66            button_retry: "Retry",
67            text_fetch_error: "Failed to connect to",
68        },
69        de: {
70            text_init: "Initialisierung...",
71            text_ready: "Anti-Roboter-Verifizierung",
72            button_start: "Hier klicken",
73            text_fetching: "Herausforderung laden...",
74            text_solving: "Verifizierung, dass Sie ein Mensch sind...",
75            text_completed: "Ich bin ein Mensch",
76            text_completed_sr: "Automatische Spamprüfung abgeschlossen",
77            text_expired: "Verifizierung abgelaufen",
78            button_restart: "Erneut starten",
79            text_error: "Verifizierung fehlgeschlagen",
80            button_retry: "Erneut versuchen",
81            text_fetch_error: "Verbindungsproblem mit",
82        },
83        nl: {
84            text_init: "Initializeren...",
85            text_ready: "Anti-robotverificatie",
86            button_start: "Klik om te starten",
87            text_fetching: "Aan het laden...",
88            text_solving: "Anti-robotverificatie bezig...",
89            text_completed: "Ik ben een mens",
90            text_completed_sr: "Automatische anti-spamcheck voltooid",
91            text_expired: "Verificatie verlopen",
92            button_restart: "Opnieuw starten",
93            text_error: "Verificatie mislukt",
94            button_retry: "Opnieuw proberen",
95            text_fetch_error: "Verbinding mislukt met",
96        },
97        fr: {
98            text_init: "Chargement...",
99            text_ready: "Vérification Anti-Robot",
100            button_start: "Clique ici pour vérifier",
101            text_fetching: "Chargement du défi",
102            text_solving: "Nous vérifions que vous n'êtes pas un robot...",
103            text_completed: "Je ne suis pas un robot",
104            text_completed_sr: "Vérification automatique des spams terminée",
105            text_expired: "Vérification anti-robot expirée",
106            button_restart: "Redémarrer",
107            text_error: "Échec de la vérification",
108            button_retry: "Recommencer",
109            text_fetch_error: "Problème de connexion avec",
110        },
111        it: {
112            text_init: "Inizializzazione...",
113            text_ready: "Verifica Anti-Robot",
114            button_start: "Clicca per iniziare",
115            text_fetching: "Caricamento...",
116            text_solving: "Verificando che sei umano...",
117            text_completed: "Non sono un robot",
118            text_completed_sr: "Controllo automatico dello spam completato",
119            text_expired: "Verifica Anti-Robot scaduta",
120            button_restart: "Ricomincia",
121            text_error: "Verifica fallita",
122            button_retry: "Riprova",
123            text_fetch_error: "Problema di connessione con",
124        },
125        pt: {
126            text_init: "Inicializando...",
127            text_ready: "Verificação Anti-Robô",
128            button_start: "Clique para iniciar verificação",
129            text_fetching: "Carregando...",
130            text_solving: "Verificando se você é humano...",
131            text_completed: "Eu sou humano",
132            text_completed_sr: "Verificação automática de spam concluída",
133            text_expired: "Verificação Anti-Robô expirada",
134            button_restart: "Reiniciar",
135            text_error: "Verificação falhou",
136            button_retry: "Tentar novamente",
137            text_fetch_error: "Falha de conexão com",
138        },
139        es: {
140            text_init: "Inicializando...",
141            text_ready: "Verificación Anti-Robot",
142            button_start: "Haga clic para iniciar la verificación",
143            text_fetching: "Cargando desafío",
144            text_solving: "Verificando que eres humano...",
145            text_completed: "Soy humano",
146            text_completed_sr: "Verificación automática de spam completada",
147            text_expired: "Verificación Anti-Robot expirada",
148            button_restart: "Reiniciar",
149            text_error: "Ha fallado la verificación",
150            button_retry: "Intentar de nuevo",
151            text_fetch_error: "Error al conectarse a",
152        },
153        ca: {
154            text_init: "Inicialitzant...",
155            text_ready: "Verificació Anti-Robot",
156            button_start: "Fes clic per començar la verificació",
157            text_fetching: "Carregant repte",
158            text_solving: "Verificant que ets humà...",
159            text_completed: "Soc humà",
160            text_completed_sr: "Verificació automàtica de correu brossa completada",
161            text_expired: "La verificació Anti-Robot ha expirat",
162            button_restart: "Reiniciar",
163            text_error: "Ha fallat la verificació",
164            button_retry: "Tornar a provar",
165            text_fetch_error: "Error connectant a",
166        },
167        ja: {
168            text_init: "開始しています...",
169            text_ready: "アンチロボット認証",
170            button_start: "クリックして認証を開始",
171            text_fetching: "ロードしています",
172            text_solving: "認証中...",
173            text_completed: "私はロボットではありません",
174            text_completed_sr: "自動スパムチェックが完了しました",
175            text_expired: "認証の期限が切れています",
176            button_restart: "再度認証を行う",
177            text_error: "認証にエラーが発生しました",
178            button_retry: "再度認証を行う",
179            text_fetch_error: "接続ができませんでした",
180        },
181        da: {
182            text_init: "Aktiverer...",
183            text_ready: "Jeg er ikke en robot",
184            button_start: "Klik for at starte verifikationen",
185            text_fetching: "Henter data",
186            text_solving: "Kontrollerer at du er et menneske...",
187            text_completed: "Jeg er et menneske.",
188            text_completed_sr: "Automatisk spamkontrol gennemført",
189            text_expired: "Verifikationen kunne ikke fuldføres",
190            button_restart: "Genstart",
191            text_error: "Bekræftelse mislykkedes",
192            button_retry: "Prøv igen",
193            text_fetch_error: "Forbindelsen mislykkedes",
194        },
195        ru: {
196            text_init: "Инициализация...",
197            text_ready: "АнтиРобот проверка",
198            button_start: "Нажмите, чтобы начать проверку",
199            text_fetching: "Получаю задачу",
200            text_solving: "Проверяю, что вы человек...",
201            text_completed: "Я человек",
202            text_completed_sr: "Aвтоматическая проверка на спам завершена",
203            text_expired: "Срок АнтиРоботной проверки истёк",
204            button_restart: "Начать заново",
205            text_error: "Ошибка проверки",
206            button_retry: "Повторить ещё раз",
207            text_fetch_error: "Ошибка подключения",
208        },
209        sv: {
210            text_init: "Aktiverar...",
211            text_ready: "Jag är inte en robot",
212            button_start: "Klicka för att verifiera",
213            text_fetching: "Hämtar data",
214            text_solving: "Kontrollerar att du är människa...",
215            text_completed: "Jag är en människa",
216            text_completed_sr: "Automatisk spamkontroll slutförd",
217            text_expired: "Anti-robot-verifieringen har löpt ut",
218            button_restart: "Börja om",
219            text_error: "Verifiering kunde inte slutföras",
220            button_retry: "Omstart",
221            text_fetch_error: "Verifiering misslyckades",
222        },
223        tr: {
224            text_init: "Başlatılıyor...",
225            text_ready: "Anti-Robot Doğrulaması",
226            button_start: "Doğrulamayı başlatmak için tıklayın",
227            text_fetching: "Yükleniyor",
228            text_solving: "Robot olmadığınız doğrulanıyor...",
229            text_completed: "Ben bir insanım",
230            text_completed_sr: "Otomatik spam kontrolü tamamlandı",
231            text_expired: "Anti-Robot doğrulamasının süresi doldu",
232            button_restart: "Yeniden başlat",
233            text_error: "Doğrulama başarısız oldu",
234            button_retry: "Tekrar dene",
235            text_fetch_error: "Bağlantı başarısız oldu",
236        },
237        el: {
238            text_init: "Προετοιμασία...",
239            text_ready: "Anti-Robot Επαλήθευση",
240            button_start: " Κάντε κλικ για να ξεκινήσει η επαλήθευση",
241            text_fetching: " Λήψη πρόκλησης",
242            text_solving: " Επιβεβαίωση ανθρώπου...",
243            text_completed: "Είμαι άνθρωπος",
244            text_completed_sr: " Ο αυτόματος έλεγχος ανεπιθύμητου περιεÏ
244‡Î¿Î¼Î­Î½Î¿Ï… ολοκληρώθηκε",
245            text_expired: " Η επαλήθευση Anti-Robot έληξε",
246            button_restart: " Επανεκκίνηση",
247            text_error: " Η επαλήθευση απέτυχε",
248            button_retry: " Δοκιμάστε ξανά",
249            text_fetch_error: " Αποτυχία σύνδεσης με",
250        },
251        uk: {
252            text_init: "Ініціалізація...",
253            text_ready: "Антиробот верифікація",
254            button_start: "Натисніть, щоб розпочати верифікацію",
255            text_fetching: "З’єднання",
256            text_solving: "Перевірка, що ви не робот...",
257            text_completed: "Я не робот",
258            text_completed_sr: "Автоматична перевірка спаму завершена",
259            text_expired: "Час вичерпано",
260            button_restart: "Почати знову",
261            text_error: "Верифікація не вдалась",
262            button_retry: "Спробувати знову",
263            text_fetch_error: "Не вдалось з’єднатись",
264        },
265        bg: {
266            text_init: "Инициализиране...",
267            text_ready: "Анти-робот проверка",
268            button_start: "Щракнете, за да започнете проверката",
269            text_fetching: "Предизвикателство",
270            text_solving: "Проверяваме дали си човек...",
271            text_completed: "Аз съм човек",
272            text_completed_sr: "Автоматичната проверка за спам е завършена",
273            text_expired: "Анти-Робот проверката изтече",
274            button_restart: "Рестартирайте",
275            text_error: "Неуспешна проверка",
276            button_retry: "Опитайте пак",
277            text_fetch_error: "Неуспешно свързване с",
278        },
279        cs: {
280            text_init: "Inicializace...",
281            text_ready: "Ověření proti robotům",
282            button_start: "Klikněte pro ověření",
283            text_fetching: "Problém při načítání",
284            text_solving: "Ověření, že jste člověk...",
285            text_completed: "Jsem člověk",
286            text_completed_sr: "Automatická kontrola spamu dokončena",
287            text_expired: "Ověření proti robotům vypršelo",
288            button_restart: "Restartovat",
289            text_error: "Ověření se nezdařilo",
290            button_retry: "Zkusit znovu",
291            text_fetch_error: "Připojení se nezdařilo",
292        },
293        sk: {
294            text_init: "Inicializácia...",
295            text_ready: "Overenie proti robotom",
296            button_start: "Kliknite pre overenie",
297            text_fetching: "Problém pri načítaní",
298            text_solving: "Overenie, že ste človek...",
299            text_completed: "Som človek",
300            text_completed_sr: "Automatická kontrola spamu dokončená",
301            text_expired: "Overenie proti robotom vypršalo",
302            button_restart: "Reštartovať",
303            text_error: "Overenie sa nepodarilo",
304            button_retry: "Skúsiť znova",
305            text_fetch_error: "Pripojenie sa nepodarilo",
306        },
307        no: u,
308        fi: {
309            text_init: "Aktivoidaan...",
310            text_ready: "En ole robotti",
311            button_start: "Aloita vahvistus klikkaamalla",
312            text_fetching: "Haetaan tietoja",
313            text_solving: "Tarkistaa, että olet ihminen...",
314            text_completed: "Olen ihminen",
315            text_completed_sr: "Automaattinen roskapostin tarkistus suoritettu",
316            text_expired: "Vahvistusta ei voitu suorittaa loppuun",
317            button_restart: "Uudelleenkäynnistys",
318            text_error: "Vahvistus epäonnistui",
319            button_retry: "Yritä uudelleen",
320            text_fetch_error: "Yhteys epäonnistui",
321        },
322        lv: {
323            text_init: "Notiek inicializēšana...",
324            text_ready: "Verifikācija, ka neesat robots",
325            button_start: "Noklikšķiniet, lai sāktu verifikāciju",
326            text_fetching: "Notiek drošības uzdevuma izgūšana",
327            text_solving: "Notiek pārbaude, vai esat cilvēks...",
328            text_completed: "Es esmu cilvēks",
329            text_completed_sr: "Automātiska surogātpasta pārbaude pabeigta",
330            text_expired: "Verifikācijas, ka neesat robots, derīgums beidzies",
331            button_restart: "Restartēt",
332            text_error: "Verifikācija neizdevās",
333            button_retry: "Mēģināt vēlreiz",
334            text_fetch_error: "Neizdevās izveidot savienojumu ar",
335        },
336        lt: {
337            text_init: "Inicijuojama...",
338            text_ready: "Patikrinimas, ar nesate robotas",
339            button_start: "Spustelėkite patikrinimui pradėti",
340            text_fetching: "Gavimo iššūkis",
341            text_solving: "Tikrinama, ar esate žmogus...",
342            text_completed: "Esu žmogus",
343            text_completed_sr: "Automatinė patikra dėl pašto šiukšlių atlikta",
344            text_expired: "Patikrinimas, ar nesate robotas, baigė galioti",
345            button_restart: "Pradėti iš naujo",
346            text_error: "Patikrinimas nepavyko",
347            button_retry: "Kartoti",
348            text_fetch_error: "Nepavyko prisijungti prie",
349        },
350        pl: {
351            text_init: "Inicjowanie...",
352            text_ready: "Weryfikacja antybotowa",
353            button_start: "Kliknij, aby rozpocząć weryfikację",
354            text_fetching: "Pobieranie",
355            text_solving: "Weryfikacja, czy nie jesteś robotem...",
356            text_completed: "Nie jestem robotem",
357            text_completed_sr: "Zakończono automatyczne sprawdzanie spamu",
358            text_expired: "Weryfikacja antybotowa wygasła",
359            button_restart: "Uruchom ponownie",
360            text_error: "Weryfikacja nie powiodła się",
361            button_retry: "Spróbuj ponownie",
362            text_fetch_error: "Nie udało się połączyć z",
363        },
364        et: {
365            text_init: "Initsialiseerimine...",
366            text_ready: "Robotivastane kinnitus",
367            button_start: "Kinnitamisega alustamiseks klõpsake",
368            text_fetching: "Väljakutse toomine",
369            text_solving: "Kinnitatakse, et sa oled inimene...",
370            text_completed: "Ma olen inimene",
371            text_completed_sr: "Automaatne rämpsposti kontroll on lõpetatud",
372            text_expired: "Robotivastane kinnitus aegus",
373            button_restart: "Taaskäivita",
374            text_error: "Kinnitamine nurjus",
375            button_retry: "Proovi uuesti",
376            text_fetch_error: "Ühenduse loomine nurjus",
377        },
378        hr: {
379            text_init: "Početno postavljanje...",
380            text_ready: "Provjera protiv robota",
381            button_start: "Kliknite za početak provjere",
382            text_fetching: "Dohvaćanje izazova",
383            text_solving: "Provjeravamo jeste li čovjek...",
384            text_completed: "Nisam robot",
385            text_completed_sr: "Automatska provjera je završena",
386            text_expired: "Vrijeme za provjeru protiv robota je isteklo",
387            button_restart: "Osvježi",
388            text_error: "Provjera nije uspjlela",
389            button_retry: " Ponovo pokreni",
390            text_fetch_error: "Nije moguće uspostaviti vezu",
391        },
392        sr: {
393            text_init: "Pokretanje...",
394            text_ready: "Anti-Robot Verifikacija",
395            button_start: "Kliknite da biste započeli verifikaciju",
396            text_fetching: "Učitavanje izazova",
397            text_solving: "Verifikacija da ste čovek...",
398            text_completed: "Ja sam čovek",
399            text_completed_sr: "Automatska provera neželjene pošte je završena",
400            text_expired: "Anti-Robot verifikacija je istekla",
401            button_restart: "Ponovo pokrenuti",
402            text_error: "Verifikacija nije uspela",
403            button_retry: "Pokušajte ponovo",
404            text_fetch_error: "Neuspelo povezivanje sa...",
405        },
406        sl: {
407            text_init: "Inicializiranje...",
408            text_ready: "Preverjanje robotov",
409            button_start: "Kliknite za začetek preverjanja",
410            text_fetching: "Prenašanje izziva",
411            text_solving: "Preverjamo, ali ste človek",
412            text_completed: "Nisem robot",
413            text_completed_sr: "Avtomatsko preverjanje je zaključeno",
414            text_expired: "Preverjanje robotov je poteklo",
415            button_restart: "Osveži",
416            text_error: "Preverjanje ni uspelo",
417            button_retry: "Poskusi ponovno",
418            text_fetch_error: "Povezave ni bilo mogoče vzpostaviti",
419        },
420        hu: {
421            text_init: "Inicializálás...",
422            text_ready: "Robotellenes ellenőrzés",
423            button_start: "Kattintson az ellenőrzés megkezdéséhez",
424            text_fetching: "Feladvány lekérése",
425            text_solving: "Annak igazolása, hogy Ön nem robot...",
426            text_completed: "Nem vagyok robot",
427            text_completed_sr: "Automatikus spam ellenőrzés befejeződött",
428            text_expired: "Robotellenes ellenőrzés lejárt",
429            button_restart: "Újraindítás",
430            text_error: "Az ellenőrzés nem sikerült",
431            button_retry: "Próbálja újra",
432            text_fetch_error: "Nem sikerült csatlakozni",
433        },
434        ro: {
435            text_init: "Se inițializează...",
436            text_ready: "Verificare anti-robot",
437            button_start: "Click pentru a începe verificarea",
438            text_fetching: "Downloading",
439            text_solving: "Verificare că ești om...",
440            text_completed: "Sunt om",
441            text_completed_sr: "Verificarea automată a spam-ului a fost finalizată",
442            text_expired: "Verificarea anti-robot a expirat",
443            button_restart: "Restart",
444            text_error: "Verificare eșuată",
445            button_retry: "Reîncearcă",
446            text_fetch_error: "Nu s-a putut conecta",
447        },
448        zh: {
449            text_init: "初始化中……",
450            text_ready: "人机验证",
451            button_start: "点击开始",
452            text_fetching: "正在加载",
453            text_solving: "人机校验中……",
454            text_completed: "我不是机器人",
455            text_completed_sr: "人机验证完成",
456            text_expired: "验证已过期",
457            button_restart: "重新开始",
458            text_error: "校验失败",
459            button_retry: "重试",
460            text_fetch_error: "无法连接到",
461        },
462        zh_tw: {
463            text_init: "正在初始化……",
464            text_ready: "反機器人驗證",
465            button_start: "點擊開始驗證",
466            text_fetching: "載入中",
467            text_solving: "反機器人驗證中……",
468            text_completed: "我不是機器人",
469            text_completed_sr: "驗證完成",
470            text_expired: "驗證超時",
471            button_restart: "重新開始",
472            text_error: "驗證失敗",
473            button_retry: "重試",
474            text_fetch_error: "無法連線到",
475        },
476        vi: {
477            text_init: "Đang khởi tạo...",
478            text_ready: "Xác minh chống Robot",
479            button_start: "Bấm vào đây để xác minh",
480            text_fetching: "Tìm nạp và xử lý thử thách",
481            text_solving: "Xác minh bạn là người...",
482            text_completed: "Bạn là con người",
483            text_completed_sr: "Xác minh hoàn tất",
484            text_expired: "Xác minh đã hết hạn",
485            button_restart: "Khởi động lại",
486            text_error: "Xác minh thất bại",
487            button_retry: "Thử lại",
488            text_fetch_error: "Không kết nối được",
489        },
490        he: {
491            text_init: "בביצוע...",
492            text_ready: "אימות אנוש",
493            button_start: "צריך ללחוץ להתחלת האימות",
494            text_fetching: "אתגר המענה בהכנה",
495            text_solving: "מתבצע אימות אנוש...",
496            text_completed: "אני לא רובוט",
497            text_completed_sr: "בדיקת הספאם האוטומטית הסתיימה",
498            text_expired: "פג תוקף אימות האנוש",
499            button_restart: "להתחיל שוב",
500            text_error: "אימות האנוש נכשל",
501            button_retry: "לנסות שוב",
502            text_fetch_error: "נכשל החיבור אל",
503            rtl: !0,
504        },
505        th: {
506            text_init: "การเริ่มต้น...",
507            text_ready: " การตรวจสอบต่อต้านหุ่นยนต์",
508            button_start: "คลิกเพื่อเริ่มการตรวจสอบ",
509            text_fetching: "การดึงความท้าทาย",
510            text_solving: "ยืนยันว่าคุณเป็นมนุษย์...",
511            text_completed: "ฉันเป็นมนุษย์",
512            text_completed_sr: "การตรวจสอบสแปมอัตโนมัติเสร็จสมบูรณ์",
513            text_expired: "การตรวจสอบ ต่อต้านหุ่นยนต์ หมดอายุ",
514            button_restart: "รีสตาร์ท",
515            text_error: "การยืนยันล้มเหลว",
516            button_retry: "ลองใหม่",
517            text_fetch_error: "ไม่สามารถเชื่อมต่อได้",
518        },
519        kr: {
520            text_init: "초기화 중",
521            text_ready: "Anti-Robot 검증",
522            button_start: "검증을 위해 클릭해 주세요",
523            text_fetching: "검증 준비 중",
524            text_solving: "검증 중",
525            text_completed: "검증이 완료되었습니다",
526            text_completed_sr: "자동 스팸 확인 완료",
527            text_expired: "Anti-Robot 검증 만료",
528            button_restart: "다시 시작합니다",
529            text_error: "검증 실패",
530            button_retry: "다시 시도해 주세요",
531            text_fetch_error: "연결하지 못했습니다",
532        },
533        ar: {
534            text_init: "...التهيئة",
535            text_ready: "يتم التحقيق",
536            button_start: "إضغط هنا للتحقيق",
537            text_fetching: "تهيئة التحدي",
538            text_solving: "نتحقق من أنك لست روبوتًا...",
539            text_completed: "أنا لست روبوتًا",
540            text_completed_sr: "تم الانتهاء من التحقق التلقائي من البريد العشوائي",
541            text_expired: "انتهت صلاحية التحقق",
542            button_restart: "إعادة تشغيل",
543            text_error: "فشل التحقق",
544            button_retry: "ابدأ مرة أخرى",
545            text_fetch_error: "مشكلة في الاتصال مع",
546        },
547        nb: u,
548    };
549function d(t, e) {
550    const r = new Uint8Array(3),
551        i = new DataView(r.buffer);
552    return (i.setUint8(0, t), i.setUint16(1, e), r);
553}
554let p;
555"undefined" != typeof window && (p = window.URL || window.webkitURL);
556class _ {
557    constructor() {
558        ((this.workers = []),
559            (this.puzzleNumber = 0),
560            (this.numPuzzles = 0),
561            (this.threshold = 0),
562            (this.startTime = 0),
563            (this.progress = 0),
564            (this.totalHashes = 0),
565            (this.puzzleSolverInputs = []),
566            (this.puzzleIndex = 0),
567            (this.solutionBuffer = new Uint8Array(0)),
568            (this.solverType = 1),
569            (this.readyPromise = new Promise(() => {})),
570            (this.readyCount = 0),
571            (this.startCount = 0),
572            (this.progressCallback = () => 0),
573            (this.readyCallback = ()
573 => 0),
574            (this.startedCallback = () => 0),
575            (this.doneCallback = () => 0),
576            (this.errorCallback = () => 0));
577    }
578    init() {
579        let t;
580        (this.terminateWorkers(),
581            (this.progress = 0),
582            (this.totalHashes = 0),
583            (this.readyPromise = new Promise((e) => (t = e))),
584            (this.readyCount = 0),
585            (this.startCount = 0),
586            (this.workers = new Array(4)));
587        const e = new Blob(
588            [
589                '
vendor: 9,941 bytes, line 589
589!function(){"use strict";const A="=".charCodeAt(0),I=new Uint8Array(256);for(let A=0;A<64;A++)I["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(A)]=A;function g(A){const I={},g=A.exports,C=g.memory,Q=g.__alloc,t=g.__retain,B=g.__rtti_base||-1;return I.__allocArray=(A,I)=>{const g=function(A){return new Uint32Array(C.buffer)[(B+4>>>2)+2*A]}(A),e=31-Math.clz32(g>>>6&31),o=I.length,i=Q(o<<e,0),r=Q(12,A),n=new Uint32Array(C.buffer);n[r+0>>>2]=t(i),n[r+4>>>2]=i,n[r+8>>>2]=o<<e;const E=C.buffer,s=new Uint8Array(E);if(16384&g)for(let A=0;A<o;++A)s[(i>>>e)+A]=t(I[A]);else s.set(I,i>>>e);return r},I.__getUint8Array=A=>{const I=new Uint32Array(C.buffer),g=I[A+4>>>2];return new Uint8Array(C.buffer,g,I[g-4>>>2]>>>0)},function(A,I={}){const g=A.__argumentsLength?I=>{A.__argumentsLength.value=I}:A.__setArgumentsLength||A.__setargc||(()=>({}));for(const C in A){if(!Object.prototype.hasOwnProperty.call(A,C))continue;const Q=A[C],t=C.split(".")[0];"function"==typeof Q&&Q!==g?(I[t]=(...A)=>(g(A.length),Q(...A))).original=Q:I[t]=Q}return I}(g,I)}class C{constructor(A){this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.v=new Uint32Array(32),this.m=new Uint32Array(32),this.outlen=A}}function Q(A,I){return A[I]^A[I+1]<<8^A[I+2]<<16^A[I+3]<<24}function t(A,I,g,C,Q,t,B,e){const o=I[B],i=I[B+1],r=I[e],n=I[e+1];let E,s,w,a,c=A[g],D=A[g+1],f=A[C],h=A[C+1],y=A[Q],l=A[Q+1],u=A[t],N=A[t+1];E=c+f,s=(c&f|(c|f)&~E)>>>31,c=E,D=D+h+s,E=c+o,s=(c&o|(c|o)&~E)>>>31,c=E,D=D+i+s,w=u^c,a=N^D,u=a,N=w,E=y+u,s=(y&u|(y|u)&~E)>>>31,y=E,l=l+N+s,w=f^y,a=h^l,f=w>>>24^a<<8,h=a>>>24^w<<8,E=c+f,s=(c&f|(c|f)&~E)>>>31,c=E,D=D+h+s,E=c+r,s=(c&r|(c|r)&~E)>>>31,c=E,D=D+n+s,w=u^c,a=N^D,u=w>>>16^a<<16,N=a>>>16^w<<16,E=y+u,s=(y&u|(y|u)&~E)>>>31,y=E,l=l+N+s,w=f^y,a=h^l,f=a>>>31^w<<1,h=w>>>31^a<<1,A[g]=c,A[g+1]=D,A[C]=f,A[C+1]=h,A[Q]=y,A[Q+1]=l,A[t]=u,A[t+1]=N}const B=[4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225],e=[0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6,22,16,24,0,10,4,30,26,20,28,6,12,14,2,18,8,14,18,6,2,26,24,22,28,4,12,10,20,8,0,30,16,18,0,10,14,4,8,20,30,28,2,22,24,12,16,6,26,4,24,12,20,0,22,16,6,8,26,14,10,30,28,2,18,24,10,2,30,28,26,8,20,0,14,12,6,18,4,16,22,26,22,14,28,24,2,6,18,10,0,30,8,16,12,4,20,12,30,28,18,22,6,0,16,24,4,26,14,2,8,20,10,20,4,16,8,14,12,2,10,30,22,18,28,6,24,26,0,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,28,20,8,16,18,30,26,12,2,24,0,4,22,14,10,6];function o(A,I){const g=A.v,C=A.m;for(let I=0;I<16;I++)g[I]=A.h[I],g[I+16]=B[I];g[24]=g[24]^A.t,g[25]=g[25]^A.t/4294967296,I&&(g[28]=~g[28],g[29]=~g[29]);for(let I=0;I<32;I++)C[I]=Q(A.b,4*I);for(let A=0;A<12;A++)t(g,C,0,8,16,24,e[16*A+0],e[16*A+1]),t(g,C,2,10,18,26,e[16*A+2],e[16*A+3]),t(g,C,4,12,20,28,e[16*A+4],e[16*A+5]),t(g,C,6,14,22,30,e[16*A+6],e[16*A+7]),t(g,C,0,10,20,30,e[16*A+8],e[16*A+9]),t(g,C,2,12,22,24,e[16*A+10],e[16*A+11]),t(g,C,4,14,16,26,e[16*A+12],e[16*A+13]),t(g,C,6,8,18,28,e[16*A+14],e[16*A+15]);for(let I=0;I<16;I++)A.h[I]=A.h[I]^g[I]^g[I+16]}function i(A,I){for(let I=0;I<16;I++)A.h[I]=B[I];A.b.set(I),A.h[0]^=16842752^A.outlen}async function r(){return(A,I,g=4294967295)=>{const Q=function(A,I,g){if(128!=A.length)throw Error("Invalid input");const Q=A.buffer,t=new DataView(Q),B=new C(32);B.t=128;const e=t.getUint32(124,!0),r=e+g;for(let g=e;g<r;g++)if(t.setUint32(124,g,!0),i(B,A),o(B,!0),B.h[0]<I)return 0==ASC_TARGET?new Uint8Array(B.h.buffer):Uint8Array.wrap(B.h.buffer);return new Uint8Array(0)}(A,I,g);return[A,Q]}}let n,E;Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(A,I){return new Uint8Array(Array.prototype.slice.call(this,A,I))}}),self.ASC_TARGET=0;const s=new Promise((A=>E=A));self.onerror=A=>{self.postMessage({type:"error",message:JSON.stringify(A)})},self.onmessage=async C=>{const Q=C.data;try{if("solver"===Q.type){if(Q.forceJS){n=1;const A=await r();E(A)}else try{n=2;const C=WebAssembly.compile(function(g){let C=3285;g.charCodeAt(4379)===A&&C--,g.charCodeAt(4378)===A&&C--;const Q=new Uint8Array(C);for(let A=0,C=0;A<4380;A+=4){const t=I[g.charCodeAt(A+0)],B=I[g.charCodeAt(A+1)],e=I[g.charCodeAt(A+2)],o=I[g.charCodeAt(A+3)];Q[C++]=t<<2|B>>4,Q[C++]=(15&B)<<4|e>>2,Q[C++]=(3&e)<<6|63&o}return Q}("AGFzbQEAAAABKghgAABgAn9/AGADf39/AX9gAX8AYAR/f39/AGAAAX9gAX8Bf2ACf38BfwINAQNlbnYFYWJvcnQABAMMCwcGAwAAAQIFAQIABQMBAAEGFgR/AUEAC38BQQALfwBBAwt/AEHgDAsHbgkGbWVtb3J5AgAHX19hbGxvYwABCF9fcmV0YWluAAIJX19yZWxlYXNlAAMJX19jb2xsZWN0AAQHX19yZXNldAAFC19fcnR0aV9iYXNlAwMNVWludDhBcnJheV9JRAMCDHNvbHZlQmxha2UyYgAKCAELCvQSC5IBAQV/IABB8P///wNLBEAACyMBQRBqIgQgAEEPakFwcSICQRAgAkEQSxsiBmoiAj8AIgVBEHQiA0sEQCAFIAIgA2tB//8DakGAgHxxQRB2IgMgBSADShtAAEEASARAIANAAEEASARAAAsLCyACJAEgBEEQayICIAY2AgAgAkEBNgIEIAIgATYCCCACIAA2AgwgBAsEACAACwMAAQsDAAELBgAjACQBC7sCAQF/AkAgAUUNACAAQQA6AAAgACABakEEayICQQA6AAMgAUECTQ0AIABBADoAASAAQQA6AAIgAkEAOgACIAJBADoAASABQQZNDQAgAEEAOgADIAJBADoAACABQQhNDQAgAEEAIABrQQNxIgJqIgBBADYCACAAIAEgAmtBfHEiAmpBHGsiAUEANgIYIAJBCE0NACAAQQA2AgQgAEEANgIIIAFBADYCECABQQA2AhQgAkEYTQ0AIABBADYCDCAAQQA2AhAgAEEANgIUIABBADYCGCABQQA2AgAgAUEANgIEIAFBADYCCCABQQA2AgwgACAAQQRxQRhqIgFqIQAgAiABayEBA0AgAUEgTwRAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCABQSBrIQEgAEEgaiEADAELCwsLcgACfyAARQRAQQxBAhABIQALIAALQQA2AgAgAEEANgIEIABBADYCCCABQfD///8DIAJ2SwRAQcAKQfAKQRJBORAAAAsgASACdCIBQQAQASICIAEQBiAAKAIAGiAAIAI2AgAgACACNgIEIAAgATYCCCAAC88BAQJ/QaABQQAQASIAQQxBAxABQYABQQAQBzYCACAAQQxBBBABQQhBAxAHNgIEIABCADcDCCAAQQA2AhAgAEIANwMYIABC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")),Q=await async function(A){const I=await async function(A){const I={env:{abort(){throw Error("Wasm aborted")}}};return{exports:g(await WebAssembly.instantiate(A,I))}}(A),C=I.exports.__retain(I.exports.__allocArray(I.exports.Uint8Array_ID,new Uint8Array(128)));let Q=I.exports.__getUint8Array(C);return(A,g,t=4294967295)=>{Q.set(A);const B=I.exports.solveBlake2b(C,g,t);Q=I.exports.__getUint8Array(C);const e=I.exports.__getUint8Array(B);return I.exports.__release(B),[Q,e]}}(await C);E(Q)}catch(A){console.log("FriendlyCaptcha failed to initialize WebAssembly, falling back to Javascript solver: "+A.toString()),n=1;const I=await r();E(I)}self.postMessage({type:"ready",solver:n})}else if("start"===Q.type){const A=await s;self.postMessage({type:"started"});let I,g=0;for(let C=0;C<256;C++){Q.puzzleSolverInput[123]=C;const[t,B]=A(Q.puzzleSolverInput,Q.threshold);if(0!==B.length){I=t;break}console.warn("FC: Internal error or no solution found"),g+=Math.pow(2,32)-1}g+=new DataView(I.slice(-4).buffer).getUint32(0,!0),self.postMessage({type:"done",solution:I.slice(-8),h:g,puzzleIndex:Q.puzzleIndex,puzzleNumber:Q.puzzleNumber})}}catch(A){setTimeout((()=>{throw A}))}}}();
589',
590            ],
591            { type: "text/javascript" },
592        );
593        for (let r = 0; r < this.workers.length; r++)
594            ((this.workers[r] = new Worker(p.createObjectURL(e))),
595                (this.workers[r].onerror = (t) => this.errorCallback(t)),
596                (this.workers[r].onmessage = (e) => {
597                    const i = e.data;
598                    if (i)
599                        if ("ready" === i.type) (this.readyCount++, (this.solverType = i.solver), this.readyCount == this.workers.length && (t(), this.readyCallback()));
600                        else if ("started" === i.type) (this.startCount++, 1 == this.startCount && ((this.startTime = Date.now()), this.startedCallback()));
601                        else if ("done" === i.type) {
602                            if (i.puzzleNumber !== this.puzzleNumber) return;
603                            if (
604                                (this.puzzleIndex < this.puzzleSolverInputs.length &&
605                                    (this.workers[r].postMessage({
606                                        type: "start",
607                                        puzzleSolverInput: this.puzzleSolverInputs[this.puzzleIndex],
608                                        threshold: this.threshold,
609                                        puzzleIndex: this.puzzleIndex,
610                                        puzzleNumber: this.puzzleNumber,
611                                    }),
612                                    this.puzzleIndex++),
613                                this.progress++,
614                                (this.totalHashes += i.h),
615                                this.progressCallback({ n: this.numPuzzles, h: this.totalHashes, t: (Date.now() - this.startTime) / 1e3, i: this.progress }),
616                                this.solutionBuffer.set(i.solution, 8 * i.puzzleIndex),
617                                this.progress == this.numPuzzles)
618                            ) {
619                                const t = (Date.now() - this.startTime) / 1e3;
620                                this.doneCallback({ solution: this.solutionBuffer, h: this.totalHashes, t, diagnostics: d(this.solverType, t), solver: this.solverType });
621                            }
622                        } else "error" === i.type && this.errorCallback(i);
623                }));
624    }
625    setupSolver(t = !1) {
626        const e = { type: "solver", forceJS: t };
627        for (let t = 0; t < this.workers.length; t++) this.workers[t].postMessage(e);
628    }
629    async start(t) {
630        (await this.readyPromise,
631            (this.puzzleSolverInputs = (function (t, e) {
632                const r = [];
633                for (let i = 0; i < e; i++) {
634                    const e = new Uint8Array(128);
635                    (e.set(t), (e[120] = i), r.push(e));
636                }
637                return r;
638            })(t.buffer, t.n)),
639            (this.solutionBuffer = new Uint8Array(8 * t.n)),
640            (this.numPuzzles = t.n),
641            (this.threshold = t.threshold),
642            (this.puzzleIndex = 0),
643            this.puzzleNumber++);
644        for (let t = 0; t < this.workers.length && this.puzzleIndex !== this.puzzleSolverInputs.length; t++)
645            (this.workers[t].postMessage({
646                type: "start",
647                puzzleSolverInput: this.puzzleSolverInputs[t],
648                threshold: this.threshold,
649                puzzleIndex: this.puzzleIndex,
650                puzzleNumber: this.puzzleNumber,
651            }),
652                this.puzzleIndex++);
653    }
654    terminateWorkers() {
655        if (0 != this.workers.length) {
656            for (let t = 0; t < this.workers.length; t++) this.workers[t].terminate();
657            this.workers = [];
658        }
659    }
660}
661class x {
662    constructor(t, e = {}) {
663        ((this.workerGroup = new _()),
664            (this.valid = !1),
665            (this.needsReInit = !1),
666            (this.hasBeenStarted = !1),
667            (this.hasBeenDestroyed = !1),
668            (this.opts = Object.assign(
669                {
670                    forceJSFallback: !1,
671                    skipStyleInjection: !1,
672                    startMode: "focus",
673                    puzzleEndpoint: t.dataset.puzzleEndpoint || "https://api.friendlycaptcha.com/api/v1/puzzle",
674                    startedCallback: () => 0,
675                    readyCallback: () => 0,
676                    doneCallback: () => 0,
677                    errorCallback: () => 0,
678                    sitekey: t.dataset.sitekey || "",
679                    language: t.dataset.lang || "en",
680                    solutionFieldName: t.dataset.solutionFieldName || "frc-captcha-solution",
681                    styleNonce: null,
682                },
683                e,
684            )),
685            (this.e = t),
686            (this.e.friendlyChallengeWidget = this),
687            this.loadLanguage(),
688            (t.innerText = this.lang.text_init),
689            this.opts.skipStyleInjection ||
690                (function (t = null) {
691                    if (!document.querySelector("#frc-style")) {
692                        const e = document.createElement("style");
693                        ((e.id = "frc-style"),
694                            (e.innerHTML =
695                                ".frc-captcha *{margin:0;padding:0;border:0;text-align:initial;border-radius:0;filter:none!important;transition:none!important;font-weight:400;font-size:14px;line-height:1.2;text-decoration:none;background-color:initial;color:#222}.frc-captcha{position:relative;min-width:250px;max-width:312px;border:1px solid #f4f4f4;padding-bottom:12px;background-color:#fff}.frc-captcha b{font-weight:700}.frc-container{display:flex;align-items:center;min-height:52px}.frc-icon{fill:#222;stroke:#222;flex-shrink:0;margin:8px 8px 0}.frc-icon.frc-warning{fill:#c00}.frc-success .frc-icon{animation:1s ease-in both frc-fade-in}.frc-content{white-space:nowrap;display:flex;flex-direction:column;margin:4px 6px 0 0;overflow-x:auto;flex-grow:1}.frc-banner{position:absolute;bottom:0;right:6px;line-height:1}.frc-banner *{font-size:10px;opacity:.8;text-decoration:none}.frc-progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:3px 0;height:4px;border:none;background-color:#eee;color:#222;width:100%;transition:.5s linear}.frc-progress::-webkit-progress-bar{background:#eee}.frc-progress::-webkit-progress-value{background:#222}.frc-progress::-moz-progress-bar{background:#222}
695.frc-button{cursor:pointer;padding:2px 6px;background-color:#f1f1f1;border:1px solid transparent;text-align:center;font-weight:600;text-transform:none}.frc-button:focus{border:1px solid #333}.frc-button:hover{background-color:#ddd}.frc-captcha-solution{display:none}.frc-err-url{text-decoration:underline;font-size:.9em}.frc-rtl{direction:rtl}.frc-rtl .frc-content{margin:4px 0 0 6px}.frc-banner.frc-rtl{left:6px;right:auto}.dark.frc-captcha{color:#fff;background-color:#222;border-color:#333}.dark.frc-captcha *{color:#fff}.dark.frc-captcha button{background-color:#444}.dark .frc-icon{fill:#fff;stroke:#fff}.dark .frc-progress{background-color:#444}.dark .frc-progress::-webkit-progress-bar{background:#444}.dark .frc-progress::-webkit-progress-value{background:#ddd}.dark .frc-progress::-moz-progress-bar{background:#ddd}@keyframes frc-fade-in{from{opacity:0}to{opacity:1}}"),
696                            t && e.setAttribute("nonce", t),
697                            document.head.appendChild(e));
698                    }
699                })(this.opts.styleNonce),
700            this.init("auto" === this.opts.startMode || "auto" === this.e.dataset.start));
701    }
702    init(t) {
703        var e;
704        if (this.hasBeenDestroyed) console.error("FriendlyCaptcha widget has been destroyed using destroy(), it can not be used anymore.");
705        else if ((this.initWorkerGroup(), t)) this.start();
706        else if ("none" !== this.e.dataset.start && ("focus" === this.opts.startMode || "focus" === this.e.dataset.start)) {
707            const t = (function (t) {
708                for (; "FORM" !== t.tagName; ) if (!(t = t.parentElement)) return null;
709                return t;
710            })(this.e);
711            t
712                ? ((e = () => this.start()), t.addEventListener("focusin", e, { once: !0, passive: !0 }))
713                : console.log("FriendlyCaptcha div seems not to be contained in a form, autostart will not work");
714        }
715    }
716    loadLanguage(t) {
717        if ((void 0 !== t ? (this.opts.language = t) : this.e.dataset.lang && (this.opts.language = this.e.dataset.lang), "string" == typeof this.opts.language)) {
718            let t = this.opts.language.toLowerCase(),
719                e = h[t];
720            (void 0 === e && "-" === t[2] && ((t = t.substring(0, 2)), (e = h[t])),
721                void 0 === e && (console.error('FriendlyCaptcha: language "' + this.opts.language + '" not found.'), (e = h.en)),
722                (this.lang = e));
723        } else this.lang = Object.assign(Object.assign({}, h.en), this.opts.language);
724    }
725    makeButtonStart() {
726        const t = this.e.querySelector("button");
727        t && (t.addEventListener("click", () => this.start(), { once: !0, passive: !0 }), t.addEventListener("touchstart", () => this.start(), { once: !0, passive: !0 }));
728    }
729    onWorkerError(t) {
730        ((this.hasBeenStarted = !1),
731            (this.needsReInit = !0),
732            this.expiryTimeout && clearTimeout(this.expiryTimeout),
733            console.error("[FRC]", t),
734            (this.e.innerHTML = i(this.opts.solutionFieldName, this.lang, "Background worker error " + t.message)),
735            this.makeButtonStart(),
736            (this.opts.forceJSFallback = !0));
737    }
738    initWorkerGroup() {
739        ((this.workerGroup.progressCallback = (t) => {
740            !(function (t, e) {
741                const r = t.querySelector(".frc-progress"),
742                    i = (e.i + 1) / e.n;
743                r && ((r.value = i), (r.innerText = (100 * i).toFixed(1) + "%"), (r.title = e.i + 1 + "/" + e.n + " (" + ((e.h / e.t) * 0.001).toFixed(0) + "K/s)"));
744            })(this.e, t);
745        }),
746            (this.workerGroup.readyCallback = () => {
747                var t;
748                ((this.e.innerHTML = r(
749                    this.opts.solutionFieldName,
750                    (t = this.lang).rtl,
751                    '<path d="M17,11c0.34,0,0.67,0.04,1,0.09V6.27L10.5,3L3,6.27v4.91c0,4.54,3.2,8.79,7.5,9.82c0.55-0.13,1.08-0.32,1.6-0.55 C11.41,19.47,11,18.28,11,17C11,13.69,13.69,11,17,11z"/><path d="M17,13c-2.21,0-4,1.79-4,4c0,2.21,1.79,4,4,4s4-1.79,4-4C21,14.79,19.21,13,17,13z M17,14.38"/>',
752                    !0,
753                    t.text_ready,
754                    ".UNSTARTED",
755                    t.button_start,
756                    !1,
757                )),
758                    this.makeButtonStart(),
759                    this.opts.readyCallback());
760            }),
761            (this.workerGroup.startedCallback = () => {
762                var e;
763                ((this.e.innerHTML = r(this.opts.solutionFieldName, (e = this.lang).rtl, t, !0, e.text_solving, ".UNFINISHED", void 0, !0)), this.opts.startedCallback());
764            }),
765            (this.workerGroup.doneCallback = (t) => {
766                const e = this.handleDone(t);
767                this.opts.doneCallback(e);
768                const r = this.e.dataset.callback;
769                r && window[r](e);
770            }),
771            (this.workerGroup.errorCallback = (t) => {
772                this.onWorkerError(t);
773            }),
774            this.workerGroup.init(),
775            this.workerGroup.setupSolver(this.opts.forceJSFallback));
776    }
777    expire() {
778        var t;
779        ((this.hasBeenStarted = !1),
780            !1 !== this.e.isConnected &&
781                ((this.e.innerHTML = r(this.opts.solutionFieldName, (t = this.lang).rtl, e, !0, t.text_expired, ".EXPIRED", t.button_restart)), this.makeButtonStart()));
782    }
783    async start() {
784        if (this.hasBeenDestroyed) return void console.error("Can not start FriendlyCaptcha widget which has been destroyed");
785        if (this.hasBeenStarted) return void console.warn("Can not start FriendlyCaptcha widget which has already been started");
786        const e = this.opts.sitekey || this.e.dataset.sitekey;
787        if (!e)
788            return (
789                console.error("FriendlyCaptcha: sitekey not set on frc-captcha element"),
790                void (this.e.innerHTML = i(this.opts.solutionFieldName, this.lang, "Website problem: sitekey not set", !1))
791            );
792        if (
793            -1 === l.indexOf("headless") &&
794            -1 === A.appVersion.indexOf("Headless") &&
795            -1 === l.indexOf("bot") &&
796            -1 === l.indexOf("crawl") &&
797            !0 !== A.webdriver &&
798            A.language &&
799            (void 0 === A.languages || A.languages.length)
800        ) {
801            if (this.needsReInit) return ((this.needsReInit = !1), void this.init(!0));
802            this.hasBeenStarted = !0;
803            try {
804                ((this.e.innerHTML = r(this.opts.solutionFieldName, (o = this.lang).rtl, t, !0, o.text_fetching, ".FETCHING", void 0, !0)),
805                    (this.puzzle = (function (t) {
806                        const e = t.split("."),
807                            r = e[1],
808                            i = (function (t) {
809                                const e = t.length;
810                                let r = (3 * e) >>> 2;
811                                (t.charCodeAt(e - 1) === n && r--, t.charCodeAt(e - 2) === n && r--);
812                                const i = new Uint8Array(r);
813                                for (let r = 0, o = 0; r < e; r += 4) {
814                                    const e = a[t.charCodeAt(r + 0)],
815                                        n = a[t.charCodeAt(r + 1)],
816                                        s = a[t.charCodeAt(r + 2)],
817                                        A = a[t.charCodeAt(r + 3)];
818                                    ((i[o++] = (e << 2) | (n >> 4)), (i[o++] = ((15 & n) << 4) | (s >> 2)), (i[o++] = ((3 & s) << 6) | (63 & A)));
819                                }
820                                return i;
821                            })(r);
822                        return {
823                            signature: e[0],
824                            base64: r,
825                            buffer: i,
826                            n: i[14],
827                            threshold: ((o = i[15]), o > 255 ? (o = 255) : o < 0 && (o = 0), Math.pow(2, (255.999 - o) / 8) >>> 0),
828                            expiry: 3e5 * i[13],
829                        };
830                        var o;
831                    })(
832                        await (async function (t, e, r) {
833                            const i = t.split(",");
834                            for (let t = 0; t < i.length; t++)
835                                try {
836                                    const r = await g(i[t] + "?sitekey=" + e, { headers: [["x-frc-client", "js-0.9.20"]], mode: "cors" }, 2);
837                                    if (r.ok) return (await r.json()).data.puzzle;
838                                    {
839                                        let e;
840                                        try {
841                                            e = await r.json();
842                                        } catch (t) {}
843                                        if (e && e.errors && "endpoint_not_enabled" === e.errors[0]) throw new c(`Endpoint not allowed (${r.status})`);
844                                        if (e && e.errors && "account_usage_limit_reached" === e.errors[0]) throw new c("Usage limit reached");
845                                        if (t === i.length - 1) throw Error(`Response status ${r.status} ${r.statusText} ${e ? e.errors : ""}`);
846                                    }
847                                } catch (e) {
848                                    if (e instanceof c) throw e;
849                                    console.error("[FRC Fetch]:", e);
850                                    const o = new Error(`${r.text_fetch_error} <a class="frc-err-url" href="${i[t]}">${i[t]}</a>`);
851                                    throw ((o.rawError = e), o);
852                                }
853                            throw Error("Internal error");
854                        })(this.opts.puzzleEndpoint, e, this.lang),
855                    )),
856                    this.expiryTimeout && clearTimeout(this.expiryTimeout),
857                    (this.expiryTimeout = setTimeout(() => this.expire(), this.puzzle.expiry - 3e4)));
858            } catch (t) {
859                (console.error("[FRC]", t),
860                    (this.hasBeenStarted = !1),
861                    this.expiryTimeout && clearTimeout(this.expiryTimeout),
862                    (this.e.innerHTML = i(this.opts.solutionFieldName, this.lang, t.message)),
863                    this.makeButtonStart());
864                const e = "error_getting_puzzle";
865                this.opts.errorCallback({ code: e, description: t.toString(), error: t });
866                const r = this.e.dataset["callback-error"];
867                return void (r && window[r](this));
868            }
869            var o;
870            await this.workerGroup.start(this.puzzle);
871        } else this.e.innerHTML = i(this.opts.solutionFieldName, this.lang, "Browser check failed, try a different browser", !1, !0);
872    }
873    handleDone(t) {
874        this.valid = !0;
875        const e = `${this.puzzle.signature}.${this.puzzle.base64}.${s(t.solution)}.${s(t.diagnostics)}`;
876        return (
877            (this.e.innerHTML = (function (t, e, i, o) {
878                const n = `${o.t.toFixed(0)}s (${((o.h / o.t) * 0.001).toFixed(0)}K/s)${1 === o.solver ? " JS Fallback" : ""}`;
879                return r(
880                    t,
881                    e.rtl,
882                    `<title>${e.text_completed_sr}</title>
882<path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-4-4 1.41-1.41L10 14.17l6.59-6.59L18 9l-8 8z"></path>`,
883                    !1,
884                    e.text_completed,
885                    i,
886                    void 0,
887                    !1,
888                    n,
889                    "frc-success",
890                );
891            })(this.opts.solutionFieldName, this.lang, e, t)),
892            (this.needsReInit = !0),
893            e
894        );
895    }
896    destroy() {
897        (this.workerGroup.terminateWorkers(),
898            (this.needsReInit = !1),
899            (this.hasBeenStarted = !1),
900            this.expiryTimeout && clearTimeout(this.expiryTimeout),
901            this.e && (this.e.remove(), delete this.e),
902            (this.hasBeenDestroyed = !0));
903    }
904    reset() {
905        this.hasBeenDestroyed
906            ? console.error("FriendlyCaptcha widget has been destroyed, it can not be used anymore")
907            : (this.workerGroup.terminateWorkers(),
908              (this.needsReInit = !1),
909              (this.hasBeenStarted = !1),
910              this.expiryTimeout && clearTimeout(this.expiryTimeout),
911              this.init("auto" === this.opts.startMode || "auto" === this.e.dataset.start));
912    }
913}
914function f() {
915    let t = window.friendlyChallenge.autoWidget;
916    const e = (function () {
917        const t = document.querySelectorAll(".frc-captcha");
918        return (0 === t.length && console.warn("FriendlyCaptcha: No div was found with .frc-captcha class"), t);
919    })();
920    for (let r = 0; r < e.length; r++) {
921        const i = e[r];
922        i && !i.dataset.attached && ((t = new x(i)), (i.dataset.attached = "1"));
923    }
924    window.friendlyChallenge.autoWidget = t;
925}
926((window.friendlyChallenge = { WidgetInstance: x }), "loading" !== document.readyState ? f() : document.addEventListener("DOMContentLoaded", f));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.