@cap.js/widget 0.1.57 → 0.1.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cap-floating.min.js +1 -1
- package/cap.d.ts +11 -0
- package/cap.min.js +1 -1
- package/package.json +1 -1
- package/src/cap-floating.js +1 -3
- package/src/cap.js +630 -193
- package/src/i18n/translations.mjs +869 -0
- package/src/worker.js +300 -16
- package/cap.compat.min.js +0 -408
- package/src/i18n/translations.js +0 -87
package/cap.compat.min.js
DELETED
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
!(function () {
|
|
2
|
-
let e;
|
|
3
|
-
const t = "0.0.5",
|
|
4
|
-
r = function () {
|
|
5
|
-
return window?.CAP_CUSTOM_FETCH ? window.CAP_CUSTOM_FETCH(...arguments) : fetch(...arguments);
|
|
6
|
-
};
|
|
7
|
-
window.CAP_CUSTOM_WASM_URL ||
|
|
8
|
-
[
|
|
9
|
-
`https://cdn.jsdelivr.net/npm/@cap.js/wasm@${t}/browser/cap_wasm.min.js`,
|
|
10
|
-
`https://cdn.jsdelivr.net/npm/@cap.js/wasm@${t}/browser/cap_wasm_bg.wasm`,
|
|
11
|
-
].forEach((e) => {
|
|
12
|
-
const t = document.createElement("link");
|
|
13
|
-
((t.rel = "prefetch"),
|
|
14
|
-
(t.href = e),
|
|
15
|
-
(t.as = e.endsWith(".wasm") ? "fetch" : "script"),
|
|
16
|
-
document.head.appendChild(t));
|
|
17
|
-
});
|
|
18
|
-
class s extends HTMLElement {
|
|
19
|
-
#e = "";
|
|
20
|
-
#t = null;
|
|
21
|
-
#r = navigator.hardwareConcurrency || 8;
|
|
22
|
-
token = null;
|
|
23
|
-
#s;
|
|
24
|
-
#i;
|
|
25
|
-
#n;
|
|
26
|
-
#a = !1;
|
|
27
|
-
#o;
|
|
28
|
-
getI18nText(e, t) {
|
|
29
|
-
return this.getAttribute(`data-cap-i18n-${e}`) || t;
|
|
30
|
-
}
|
|
31
|
-
static get observedAttributes() {
|
|
32
|
-
return [
|
|
33
|
-
"onsolve",
|
|
34
|
-
"onprogress",
|
|
35
|
-
"onreset",
|
|
36
|
-
"onerror",
|
|
37
|
-
"data-cap-worker-count",
|
|
38
|
-
"data-cap-i18n-initial-state",
|
|
39
|
-
"[cap]",
|
|
40
|
-
];
|
|
41
|
-
}
|
|
42
|
-
constructor() {
|
|
43
|
-
(super(),
|
|
44
|
-
this.#o &&
|
|
45
|
-
this.#o.forEach((e, t) => {
|
|
46
|
-
this.removeEventListener(t.slice(2), e);
|
|
47
|
-
}),
|
|
48
|
-
(this.#o = new Map()),
|
|
49
|
-
(this.boundHandleProgress = this.handleProgress.bind(this)),
|
|
50
|
-
(this.boundHandleSolve = this.handleSolve.bind(this)),
|
|
51
|
-
(this.boundHandleError = this.handleError.bind(this)),
|
|
52
|
-
(this.boundHandleReset = this.handleReset.bind(this)));
|
|
53
|
-
}
|
|
54
|
-
initialize() {
|
|
55
|
-
this.#e = URL.createObjectURL(new Blob([e], { type: "application/javascript" }));
|
|
56
|
-
}
|
|
57
|
-
attributeChangedCallback(e, t, r) {
|
|
58
|
-
if (e.startsWith("on")) {
|
|
59
|
-
const t = e.slice(2),
|
|
60
|
-
s = this.#o.get(e);
|
|
61
|
-
if ((s && this.removeEventListener(t, s), r)) {
|
|
62
|
-
const r = (t) => {
|
|
63
|
-
const r = this.getAttribute(e);
|
|
64
|
-
"function" == typeof window[r] && window[r].call(this, t);
|
|
65
|
-
};
|
|
66
|
-
(this.#o.set(e, r), this.addEventListener(t, r));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
("data-cap-worker-count" === e && this.setWorkersCount(parseInt(r)),
|
|
70
|
-
"data-cap-i18n-initial-state" === e &&
|
|
71
|
-
this.#i &&
|
|
72
|
-
this.#i?.querySelector("p")?.innerText &&
|
|
73
|
-
(this.#i.querySelector("p").innerText = this.getI18nText(
|
|
74
|
-
"initial-state",
|
|
75
|
-
"I'm a human",
|
|
76
|
-
)));
|
|
77
|
-
}
|
|
78
|
-
async connectedCallback() {
|
|
79
|
-
((this.#n = this),
|
|
80
|
-
(this.#s = this.attachShadow({ mode: "open" })),
|
|
81
|
-
(this.#i = document.createElement("div")),
|
|
82
|
-
this.createUI(),
|
|
83
|
-
this.addEventListeners(),
|
|
84
|
-
await this.initialize(),
|
|
85
|
-
this.#i.removeAttribute("disabled"));
|
|
86
|
-
const e = this.getAttribute("data-cap-worker-count"),
|
|
87
|
-
t = e ? parseInt(e, 10) : null;
|
|
88
|
-
this.setWorkersCount(t || navigator.hardwareConcurrency || 8);
|
|
89
|
-
const r = this.getAttribute("data-cap-hidden-field-name") || "cap-token";
|
|
90
|
-
this.#n.innerHTML = `<input type="hidden" name="${r}">`;
|
|
91
|
-
}
|
|
92
|
-
async solve() {
|
|
93
|
-
if (!this.#a)
|
|
94
|
-
try {
|
|
95
|
-
((this.#a = !0),
|
|
96
|
-
this.updateUI("verifying", this.getI18nText("verifying-label", "Verifying..."), !0),
|
|
97
|
-
this.dispatchEvent("progress", { progress: 0 }));
|
|
98
|
-
try {
|
|
99
|
-
const e = this.getAttribute("data-cap-api-endpoint");
|
|
100
|
-
if (!e) throw new Error("Missing API endpoint");
|
|
101
|
-
const { challenge: t, token: s } = await (
|
|
102
|
-
await r(`${e}challenge`, { method: "POST" })
|
|
103
|
-
).json(),
|
|
104
|
-
i = await this.solveChallenges(t),
|
|
105
|
-
n = await (
|
|
106
|
-
await r(`${e}redeem`, {
|
|
107
|
-
method: "POST",
|
|
108
|
-
body: JSON.stringify({ token: s, solutions: i }),
|
|
109
|
-
headers: { "Content-Type": "application/json" },
|
|
110
|
-
})
|
|
111
|
-
).json();
|
|
112
|
-
if ((this.dispatchEvent("progress", { progress: 100 }), !n.success))
|
|
113
|
-
throw new Error("Invalid solution");
|
|
114
|
-
const a = this.getAttribute("data-cap-hidden-field-name") || "cap-token";
|
|
115
|
-
(this.querySelector(`input[name='${a}']`) &&
|
|
116
|
-
(this.querySelector(`input[name='${a}']`).value = n.token),
|
|
117
|
-
this.dispatchEvent("solve", { token: n.token }),
|
|
118
|
-
(this.token = n.token),
|
|
119
|
-
this.#t && clearTimeout(this.#t));
|
|
120
|
-
const o = new Date(n.expires).getTime() - Date.now();
|
|
121
|
-
return (
|
|
122
|
-
o > 0 && o < 864e5
|
|
123
|
-
? (this.#t = setTimeout(() => this.reset(), o))
|
|
124
|
-
: this.error("Invalid expiration time"),
|
|
125
|
-
{ success: !0, token: this.token }
|
|
126
|
-
);
|
|
127
|
-
} catch (e) {
|
|
128
|
-
throw (this.error(e.message), e);
|
|
129
|
-
}
|
|
130
|
-
} finally {
|
|
131
|
-
this.#a = !1;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
async solveChallenges(e) {
|
|
135
|
-
const r = e.length;
|
|
136
|
-
let s = 0;
|
|
137
|
-
const i = Array(this.#r)
|
|
138
|
-
.fill(null)
|
|
139
|
-
.map(() => {
|
|
140
|
-
try {
|
|
141
|
-
return new Worker(this.#e);
|
|
142
|
-
} catch (e) {
|
|
143
|
-
throw (
|
|
144
|
-
console.error("[cap] Failed to create worker:", e),
|
|
145
|
-
new Error("Worker creation failed")
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
}),
|
|
149
|
-
n = ([e, n], a) =>
|
|
150
|
-
new Promise((o, c) => {
|
|
151
|
-
const d = i[a];
|
|
152
|
-
if (!d) return void c(new Error("Worker not available"));
|
|
153
|
-
const h = setTimeout(
|
|
154
|
-
() => {
|
|
155
|
-
try {
|
|
156
|
-
(d.terminate(), (i[a] = new Worker(this.#e)));
|
|
157
|
-
} catch (e) {
|
|
158
|
-
console.error("[cap] Error terminating/recreating worker:", e);
|
|
159
|
-
}
|
|
160
|
-
c(new Error("Worker timeout"));
|
|
161
|
-
},
|
|
162
|
-
3e4,
|
|
163
|
-
);
|
|
164
|
-
((d.onmessage = ({ data: t }) => {
|
|
165
|
-
t.found &&
|
|
166
|
-
(clearTimeout(h),
|
|
167
|
-
s++,
|
|
168
|
-
this.dispatchEvent("progress", { progress: Math.round((s / r) * 100) }),
|
|
169
|
-
o([e, n, t.nonce]));
|
|
170
|
-
}),
|
|
171
|
-
(d.onerror = (e) => {
|
|
172
|
-
(clearTimeout(h), this.error(`Error in worker: ${e.message || e}`), c(e));
|
|
173
|
-
}),
|
|
174
|
-
d.postMessage({
|
|
175
|
-
salt: e,
|
|
176
|
-
target: n,
|
|
177
|
-
wasmUrl:
|
|
178
|
-
window.CAP_CUSTOM_WASM_URL ||
|
|
179
|
-
`https://cdn.jsdelivr.net/npm/@cap.js/wasm@${t}/browser/cap_wasm.min.js`,
|
|
180
|
-
}));
|
|
181
|
-
}),
|
|
182
|
-
a = [];
|
|
183
|
-
try {
|
|
184
|
-
for (let t = 0; t < e.length; t += this.#r) {
|
|
185
|
-
const r = e.slice(t, Math.min(t + this.#r, e.length)),
|
|
186
|
-
s = await Promise.all(r.map((e, t) => n(e, t)));
|
|
187
|
-
a.push(...s);
|
|
188
|
-
}
|
|
189
|
-
} finally {
|
|
190
|
-
i.forEach((e) => {
|
|
191
|
-
if (e)
|
|
192
|
-
try {
|
|
193
|
-
e.terminate();
|
|
194
|
-
} catch (e) {
|
|
195
|
-
console.error("[cap] Error terminating worker:", e);
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
return a;
|
|
200
|
-
}
|
|
201
|
-
setWorkersCount(e) {
|
|
202
|
-
const t = parseInt(e, 10),
|
|
203
|
-
r = Math.min(navigator.hardwareConcurrency || 8, 16);
|
|
204
|
-
this.#r = !isNaN(t) && t > 0 && t <= r ? t : navigator.hardwareConcurrency || 8;
|
|
205
|
-
}
|
|
206
|
-
createUI() {
|
|
207
|
-
(this.#i.classList.add("captcha"),
|
|
208
|
-
this.#i.setAttribute("role", "button"),
|
|
209
|
-
this.#i.setAttribute("tabindex", "0"),
|
|
210
|
-
this.#i.setAttribute("disabled", "true"),
|
|
211
|
-
(this.#i.innerHTML = `<div class="checkbox"></div><p>${this.getI18nText("initial-state", "I'm a human")}</p><a href="https://trycap.dev/" class="credits" target="_blank" rel="follow noopener"><span>Secured by </span>Cap</a>`),
|
|
212
|
-
(this.#s.innerHTML =
|
|
213
|
-
'<style>\n\n.captcha * {box-sizing:border-box;}\n\n.captcha{background-color:var(--cap-background,#fdfdfd);border:1px solid var(--cap-border-color,#dddddd8f);border-radius:var(--cap-border-radius,14px);\nuser-select:none;\n\nheight:var(--cap-widget-height, 30px);\n\nwidth:var(--cap-widget-width, 230px);display:flex;align-items:center;padding:var(--cap-widget-padding,14px);gap:var(--cap-gap,15px);cursor:pointer;transition:filter .2s,transform .2s;position:relative;-webkit-tap-highlight-color:rgba(255,255,255,0);overflow:hidden;color:var(--cap-color,#212121)}.captcha:hover{filter:brightness(98%)}\n\n.checkbox{width:var(--cap-checkbox-size,25px);height:var(--cap-checkbox-size,25px);border:var(--cap-checkbox-border,1px solid #aaaaaad1);border-radius:var(--cap-checkbox-border-radius,6px);background-color:var(--cap-checkbox-background,#fafafa91);transition:opacity .2s;margin-top:var(--cap-checkbox-margin,2px);margin-bottom:var(--cap-checkbox-margin,2px)}.captcha *{font-family:var(--cap-font,system,-apple-system,"BlinkMacSystemFont",".SFNSText-Regular","San Francisco","Roboto","Segoe UI","Helvetica Neue","Lucida Grande","Ubuntu","arial",sans-serif)}\n\n.captcha p{margin:0;font-weight:500;font-size:15px;user-select:none;transition:opacity .2s}.captcha[data-state=verifying] .checkbox{background: none;display:flex;align-items:center;justify-content:center;transform: scale(1.1);border: none;border-radius: 50%;background: conic-gradient(var(--cap-spinner-color,#000) 0%, var(--cap-spinner-color,#000) var(--progress, 0%), var(--cap-spinner-background-color,#eee) var(--progress, 0%), var(--cap-spinner-background-color,#eee) 100%);position: relative;}.captcha[data-state=verifying] .checkbox::after {content: "";background-color: var(--cap-background,#fdfdfd);width: calc(100% - var(--cap-spinner-thickness,5px));height: calc(100% - var(--cap-spinner-thickness,5px));border-radius: 50%;margin:calc(var(--cap-spinner-thickness,5px) / 2)}.captcha[data-state=done] .checkbox{border:1px solid transparent;background-image:var(--cap-checkmark,url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cstyle%3E%40keyframes%20anim%7B0%25%7Bstroke-dashoffset%3A23.21320343017578px%7Dto%7Bstroke-dashoffset%3A0%7D%7D%3C%2Fstyle%3E%3Cpath%20fill%3D%22none%22%20stroke%3D%22%2300a67d%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222%22%20d%3D%22m5%2012%205%205L20%207%22%20style%3D%22stroke-dashoffset%3A0%3Bstroke-dasharray%3A23.21320343017578px%3Banimation%3Aanim%20.5s%20ease%22%2F%3E%3C%2Fsvg%3E"));background-size:cover}.captcha[data-state=error] .checkbox{border:1px solid transparent;background-image:var(--cap-error-cross,url("data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'96\' height=\'96\' viewBox=\'0 0 24 24\'%3E%3Cpath fill=\'%23f55b50\' d=\'M11 15h2v2h-2zm0-8h2v6h-2zm1-5C6.47 2 2 6.5 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18a8 8 0 0 1-8-8a8 8 0 0 1 8-8a8 8 0 0 1 8 8a8 8 0 0 1-8 8\'/%3E%3C/svg%3E"));background-size:cover}.captcha[disabled]{cursor:not-allowed}.captcha[disabled][data-state=verifying]{cursor:progress}.captcha[disabled][data-state=done]{cursor:default}.captcha .credits{position:absolute;bottom:10px;right:10px;font-size:var(--cap-credits-font-size,12px);color:var(--cap-color,#212121);opacity:var(--cap-opacity-hover,0.8)}.captcha .credits span{display:none;text-decoration:underline}.captcha .credits:hover span{display:inline-block}</style>'),
|
|
214
|
-
this.#s.appendChild(this.#i));
|
|
215
|
-
}
|
|
216
|
-
addEventListeners() {
|
|
217
|
-
this.#i &&
|
|
218
|
-
(this.#i.querySelector("a").addEventListener("click", (e) => {
|
|
219
|
-
(e.stopPropagation(), e.preventDefault(), window.open("https://trycap.dev", "_blank"));
|
|
220
|
-
}),
|
|
221
|
-
this.#i.addEventListener("click", () => {
|
|
222
|
-
this.#i.hasAttribute("disabled") || this.solve();
|
|
223
|
-
}),
|
|
224
|
-
this.#i.addEventListener("keydown", (e) => {
|
|
225
|
-
("Enter" !== e.key && " " !== e.key) ||
|
|
226
|
-
this.#i.hasAttribute("disabled") ||
|
|
227
|
-
(e.preventDefault(), this.solve());
|
|
228
|
-
}),
|
|
229
|
-
this.addEventListener("progress", this.boundHandleProgress),
|
|
230
|
-
this.addEventListener("solve", this.boundHandleSolve),
|
|
231
|
-
this.addEventListener("error", this.boundHandleError),
|
|
232
|
-
this.addEventListener("reset", this.boundHandleReset));
|
|
233
|
-
}
|
|
234
|
-
updateUI(e, t, r = !1) {
|
|
235
|
-
this.#i &&
|
|
236
|
-
(this.#i.setAttribute("data-state", e),
|
|
237
|
-
(this.#i.querySelector("p").innerText = t),
|
|
238
|
-
r ? this.#i.setAttribute("disabled", "true") : this.#i.removeAttribute("disabled"));
|
|
239
|
-
}
|
|
240
|
-
handleProgress(e) {
|
|
241
|
-
if (!this.#i) return;
|
|
242
|
-
const t = this.#i.querySelector("p"),
|
|
243
|
-
r = this.#i.querySelector(".checkbox");
|
|
244
|
-
(t &&
|
|
245
|
-
r &&
|
|
246
|
-
(r.style.setProperty("--progress", `${e.detail.progress}%`),
|
|
247
|
-
(t.innerText = `${this.getI18nText("verifying-label", "Verifying...")} ${e.detail.progress}%`)),
|
|
248
|
-
this.executeAttributeCode("onprogress", e));
|
|
249
|
-
}
|
|
250
|
-
handleSolve(e) {
|
|
251
|
-
(this.updateUI("done", this.getI18nText("solved-label", "You're a human"), !0),
|
|
252
|
-
this.executeAttributeCode("onsolve", e));
|
|
253
|
-
}
|
|
254
|
-
handleError(e) {
|
|
255
|
-
(this.updateUI("error", this.getI18nText("error-label", "Error. Try again.")),
|
|
256
|
-
this.executeAttributeCode("onerror", e));
|
|
257
|
-
}
|
|
258
|
-
handleReset(e) {
|
|
259
|
-
(this.updateUI("", this.getI18nText("initial-state", "I'm a human")),
|
|
260
|
-
this.executeAttributeCode("onreset", e));
|
|
261
|
-
}
|
|
262
|
-
executeAttributeCode(e, t) {
|
|
263
|
-
const r = this.getAttribute(e);
|
|
264
|
-
if (r)
|
|
265
|
-
try {
|
|
266
|
-
new Function("event", r).call(this, t);
|
|
267
|
-
} catch (t) {
|
|
268
|
-
console.error(`[cap] Error executing ${e}:`, t);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
error(e = "Unknown error") {
|
|
272
|
-
(console.error("[cap] Error:", e), this.dispatchEvent("error", { isCap: !0, message: e }));
|
|
273
|
-
}
|
|
274
|
-
dispatchEvent(e, t = {}) {
|
|
275
|
-
const r = new CustomEvent(e, { bubbles: !0, composed: !0, detail: t });
|
|
276
|
-
super.dispatchEvent(r);
|
|
277
|
-
}
|
|
278
|
-
reset() {
|
|
279
|
-
(this.#t && (clearTimeout(this.#t), (this.#t = null)),
|
|
280
|
-
this.dispatchEvent("reset"),
|
|
281
|
-
(this.token = null));
|
|
282
|
-
const e = this.getAttribute("data-cap-hidden-field-name") || "cap-token";
|
|
283
|
-
this.querySelector(`input[name='${e}']`) &&
|
|
284
|
-
(this.querySelector(`input[name='${e}']`).value = "");
|
|
285
|
-
}
|
|
286
|
-
get tokenValue() {
|
|
287
|
-
return this.token;
|
|
288
|
-
}
|
|
289
|
-
disconnectedCallback() {
|
|
290
|
-
(this.removeEventListener("progress", this.boundHandleProgress),
|
|
291
|
-
this.removeEventListener("solve", this.boundHandleSolve),
|
|
292
|
-
this.removeEventListener("error", this.boundHandleError),
|
|
293
|
-
this.removeEventListener("reset", this.boundHandleReset),
|
|
294
|
-
this.#o.forEach((e, t) => {
|
|
295
|
-
this.removeEventListener(t.slice(2), e);
|
|
296
|
-
}),
|
|
297
|
-
this.#o.clear(),
|
|
298
|
-
this.#s && (this.#s.innerHTML = ""),
|
|
299
|
-
this.reset(),
|
|
300
|
-
this.cleanup());
|
|
301
|
-
}
|
|
302
|
-
cleanup() {
|
|
303
|
-
(this.#t && (clearTimeout(this.#t), (this.#t = null)),
|
|
304
|
-
this.#e && (URL.revokeObjectURL(this.#e), (this.#e = "")));
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
class i {
|
|
308
|
-
constructor(e = {}, t) {
|
|
309
|
-
let r = t || document.createElement("cap-widget");
|
|
310
|
-
if (
|
|
311
|
-
(Object.entries(e).forEach(([e, t]) => {
|
|
312
|
-
r.setAttribute(e, t);
|
|
313
|
-
}),
|
|
314
|
-
!e.apiEndpoint)
|
|
315
|
-
)
|
|
316
|
-
throw (r.remove(), new Error("Missing API endpoint"));
|
|
317
|
-
(r.setAttribute("data-cap-api-endpoint", e.apiEndpoint),
|
|
318
|
-
(this.widget = r),
|
|
319
|
-
(this.solve = this.widget.solve.bind(this.widget)),
|
|
320
|
-
(this.reset = this.widget.reset.bind(this.widget)),
|
|
321
|
-
(this.addEventListener = this.widget.addEventListener.bind(this.widget)),
|
|
322
|
-
Object.defineProperty(this, "token", {
|
|
323
|
-
get: () => r.token,
|
|
324
|
-
configurable: !0,
|
|
325
|
-
enumerable: !0,
|
|
326
|
-
}),
|
|
327
|
-
t || ((r.style.display = "none"), document.documentElement.appendChild(r)));
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
((e = `(() => {${function () {
|
|
331
|
-
if ("object" != typeof WebAssembly || "function" != typeof WebAssembly?.instantiate)
|
|
332
|
-
return (
|
|
333
|
-
(self.onmessage = async ({ data: { salt: e, target: t } }) => {
|
|
334
|
-
let r = 0;
|
|
335
|
-
let s = 0;
|
|
336
|
-
const i = new TextEncoder(),
|
|
337
|
-
n = new Uint8Array(t.length / 2);
|
|
338
|
-
for (let e = 0; e < n.length; e++) n[e] = parseInt(t.substring(2 * e, 2 * e + 2), 16);
|
|
339
|
-
const a = n.length;
|
|
340
|
-
for (;;)
|
|
341
|
-
try {
|
|
342
|
-
for (let t = 0; t < 5e4; t++) {
|
|
343
|
-
const t = e + r,
|
|
344
|
-
s = i.encode(t),
|
|
345
|
-
o = await crypto.subtle.digest("SHA-256", s),
|
|
346
|
-
c = new Uint8Array(o, 0, a);
|
|
347
|
-
let d = !0;
|
|
348
|
-
for (let e = 0; e < a; e++)
|
|
349
|
-
if (c[e] !== n[e]) {
|
|
350
|
-
d = !1;
|
|
351
|
-
break;
|
|
352
|
-
}
|
|
353
|
-
if (d) return void self.postMessage({ nonce: r, found: !0 });
|
|
354
|
-
r++;
|
|
355
|
-
}
|
|
356
|
-
s += 5e4;
|
|
357
|
-
} catch (e) {
|
|
358
|
-
return (
|
|
359
|
-
console.error("[cap] fallback worker error", e),
|
|
360
|
-
void self.postMessage({ found: !1, error: e.message })
|
|
361
|
-
);
|
|
362
|
-
}
|
|
363
|
-
}),
|
|
364
|
-
console.warn("[cap] WebAssembly is not supported, falling back to alternative solver.")
|
|
365
|
-
);
|
|
366
|
-
let e, t;
|
|
367
|
-
((self.onmessage = async ({ data: { salt: r, target: s, wasmUrl: i } }) => {
|
|
368
|
-
e !== i &&
|
|
369
|
-
((e = i),
|
|
370
|
-
await import(i)
|
|
371
|
-
.then((e) =>
|
|
372
|
-
e.default().then((r) => {
|
|
373
|
-
t = (r && r.exports ? r.exports : e).solve_pow;
|
|
374
|
-
}),
|
|
375
|
-
)
|
|
376
|
-
.catch((e) => {
|
|
377
|
-
console.error("[cap] using fallback solver due to error:", e);
|
|
378
|
-
}));
|
|
379
|
-
try {
|
|
380
|
-
const e = performance.now(),
|
|
381
|
-
i = t(r, s),
|
|
382
|
-
n = performance.now();
|
|
383
|
-
self.postMessage({ nonce: Number(i), found: !0, durationMs: (n - e).toFixed(2) });
|
|
384
|
-
} catch (e) {
|
|
385
|
-
(console.error("[cap] solver error", e),
|
|
386
|
-
self.postMessage({ found: !1, error: e.message || String(e) }));
|
|
387
|
-
}
|
|
388
|
-
}),
|
|
389
|
-
(self.onerror = (e) => {
|
|
390
|
-
self.postMessage({ found: !1, error: `Worker error: ${e.message || e}` });
|
|
391
|
-
}));
|
|
392
|
-
}
|
|
393
|
-
.toString()
|
|
394
|
-
.replace(/^function\s*\([^\)]*\)\s*{|\}$/g, "")
|
|
395
|
-
.trim()}})()`),
|
|
396
|
-
(window.Cap = i),
|
|
397
|
-
customElements.get("cap-widget")
|
|
398
|
-
? console.warn("The cap-widget element has already been defined. Skipping re-defining it.")
|
|
399
|
-
: customElements.define("cap-widget", s),
|
|
400
|
-
"object" == typeof exports && "undefined" != typeof module
|
|
401
|
-
? (module.exports = i)
|
|
402
|
-
: "function" == typeof define &&
|
|
403
|
-
define.amd &&
|
|
404
|
-
define([], function () {
|
|
405
|
-
return i;
|
|
406
|
-
}),
|
|
407
|
-
"undefined" != typeof exports && (exports.default = i));
|
|
408
|
-
})();
|
package/src/i18n/translations.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
export const shipped = [
|
|
2
|
-
"zh-cn", "es", "hi", "ar", "pt", "ru", "ja", "de", "fr",
|
|
3
|
-
];
|
|
4
|
-
|
|
5
|
-
export const shippedKeys = [
|
|
6
|
-
"initial-state", "verifying-label", "solved-label", "error-label",
|
|
7
|
-
"required-label", "troubleshooting-label", "group-aria-label",
|
|
8
|
-
"verify-aria-label", "verifying-aria-label", "verified-aria-label",
|
|
9
|
-
"error-aria-label",
|
|
10
|
-
];
|
|
11
|
-
|
|
12
|
-
export const keys = [
|
|
13
|
-
"initial-state", // Verify you're human
|
|
14
|
-
"verifying-label", // Verifying...
|
|
15
|
-
"solved-label", // You're a human
|
|
16
|
-
"error-label", // Error. Try again.
|
|
17
|
-
"required-label", // Please verify you're human
|
|
18
|
-
"troubleshooting-label", // Troubleshoot
|
|
19
|
-
"group-aria-label", // Cap verification
|
|
20
|
-
"verify-aria-label", // Click to verify you're a human
|
|
21
|
-
"verifying-aria-label", // Verifying you're a human, please wait
|
|
22
|
-
"verified-aria-label", // We have verified you're a human, you may now continue
|
|
23
|
-
"error-aria-label", // An error occurred, please try again
|
|
24
|
-
"wasm-disabled", // Enable WASM for significantly faster solving
|
|
25
|
-
];
|
|
26
|
-
|
|
27
|
-
export const translations = {
|
|
28
|
-
es: ["Verifica que eres humano","Verificando...","Eres humano","Error. Inténtalo de nuevo.","Verifica que eres humano","Solucionar problemas","Verificación de Cap","Haz clic para verificar que eres humano","Verificando que eres humano, espera","Hemos verificado que eres humano, ya puedes continuar","Se produjo un error, inténtalo de nuevo","Activa WASM para una resolución mucho más rápida"],
|
|
29
|
-
pt: ["Sou humano","Verificando...","Você é humano","Erro. Tente novamente.","Verifique que você é humano","Solução de problemas","Verificação Cap","Clique para verificar que você é humano","Verificando que você é humano, aguarde","Verificamos que você é humano, você pode continuar","Ocorreu um erro, tente novamente","Ative o WASM para resolver muito mais rápido"],
|
|
30
|
-
fr: ["Je suis humain","Vérification...","Vous êtes humain","Erreur. Réessayez.","Veuillez vérifier que vous êtes humain","Dépannage","Vérification Cap","Cliquez pour vérifier que vous êtes humain","Vérification que vous êtes humain, veuillez patienter","Nous avons vérifié que vous êtes humain, vous pouvez continuer","Une erreur s'est produite, veuillez réessayer","Activez WASM pour une résolution bien plus rapide"],
|
|
31
|
-
de: ["Ich bin ein Mensch","Wird überprüft...","Sie sind ein Mensch","Fehler. Erneut versuchen.","Bitte bestätigen Sie, dass Sie ein Mensch sind","Fehlerbehebung","Cap-Verifizierung","Klicken, um zu bestätigen, dass Sie ein Mensch sind","Überprüfung, ob Sie ein Mensch sind, bitte warten","Wir haben bestätigt, dass Sie ein Mensch sind, Sie können fortfahren","Ein Fehler ist aufgetreten, bitte erneut versuchen","Aktivieren Sie WASM für deutlich schnelleres Lösen"],
|
|
32
|
-
it: ["Verifica di essere umano","Verifica in corso...","Sei umano","Errore. Riprova.","Verifica di essere umano","Risoluzione dei problemi","Verifica Cap","Clicca per verificare di essere umano","Verifica che sei umano, attendi","Abbiamo verificato che sei umano, puoi continuare","Si è verificato un errore, riprova","Abilita WASM per una risoluzione molto più veloce"],
|
|
33
|
-
nl: ["Ik ben een mens","Verifiëren...","Je bent een mens","Fout. Probeer opnieuw.","Verifieer dat je een mens bent","Problemen oplossen","Cap-verificatie","Klik om te verifiëren dat je een mens bent","Verifiëren dat je een mens bent, even geduld","We hebben geverifieerd dat je een mens bent, je kunt doorgaan","Er is een fout opgetreden, probeer opnieuw","Schakel WASM in voor veel sneller oplossen"],
|
|
34
|
-
sv: ["Jag är människa","Verifierar...","Du är människa","Fel. Försök igen.","Verifiera att du är människa","Felsökning","Cap-verifiering","Klicka för att verifiera att du är människa","Verifierar att du är människa, vänta","Vi har verifierat att du är människa, du kan fortsätta","Ett fel uppstod, försök igen","Aktivera WASM för betydligt snabbare lösning"],
|
|
35
|
-
da: ["Jeg er et menneske","Bekræfter...","Du er et menneske","Fejl. Prøv igen.","Bekræft, at du er et menneske","Fejlfinding","Cap-bekræftelse","Klik for at bekræfte, at du er et menneske","Bekræfter, at du er et menneske, vent","Vi har bekræftet, at du er et menneske, du kan fortsætte","Der opstod en fejl, prøv igen","Aktivér WASM for betydeligt hurtigere løsning"],
|
|
36
|
-
nb: ["Jeg er et menneske","Bekrefter...","Du er et menneske","Feil. Prøv igjen.","Bekreft at du er et menneske","Feilsøking","Cap-bekreftelse","Klikk for å bekrefte at du er et menneske","Bekrefter at du er et menneske, vent","Vi har bekreftet at du er et menneske, du kan fortsette","Det oppstod en feil, prøv igjen","Aktiver WASM for betydelig raskere løsning"],
|
|
37
|
-
fi: ["Vahvista, että olet ihminen","Vahvistetaan...","Olet ihminen","Virhe. Yritä uudelleen.","Vahvista, että olet ihminen","Vianmääritys","Cap-vahvistus","Napsauta vahvistaaksesi, että olet ihminen","Vahvistetaan, että olet ihminen, odota","Olemme vahvistaneet, että olet ihminen, voit jatkaa","Tapahtui virhe, yritä uudelleen","Ota WASM käyttöön huomattavasti nopeampaa ratkaisua varten"],
|
|
38
|
-
pl: ["Jestem człowiekiem","Weryfikacja...","Jesteś człowiekiem","Błąd. Spróbuj ponownie.","Potwierdź, że jesteś człowiekiem","Rozwiązywanie problemów","Weryfikacja Cap","Kliknij, aby potwierdzić, że jesteś człowiekiem","Weryfikacja, że jesteś człowiekiem, czekaj","Potwierdziliśmy, że jesteś człowiekiem, możesz kontynuować","Wystąpił błąd, spróbuj ponownie","Włącz WASM, aby rozwiązywać znacznie szybciej"],
|
|
39
|
-
cs: ["Ověřte, že jste člověk","Ověřování...","Jste člověk","Chyba. Zkuste to znovu.","Ověřte, že jste člověk","Řešení potíží","Ověření Cap","Kliknutím ověřte, že jste člověk","Ověřujeme, že jste člověk, čekejte","Ověřili jsme, že jste člověk, můžete pokračovat","Došlo k chybě, zkuste to znovu","Povolte WASM pro výrazně rychlejší řešení"],
|
|
40
|
-
sk: ["Overte, že ste človek","Overovanie...","Ste človek","Chyba. Skúste znova.","Overte, že ste človek","Riešenie problémov","Overenie Cap","Kliknutím overte, že ste človek","Overujeme, že ste človek, čakajte","Overili sme, že ste človek, môžete pokračovať","Vyskytla sa chyba, skúste znova","Povoľte WASM pre výrazne rýchlejšie riešenie"],
|
|
41
|
-
ru: ["Я человек","Проверка...","Вы человек","Ошибка. Повторите.","Подтвердите, что вы человек","Устранение неполадок","Проверка Cap","Нажмите, чтобы подтвердить, что вы человек","Проверяем, что вы человек, подождите","Мы подтвердили, что вы человек, можете продолжить","Произошла ошибка, повторите попытку","Включите WASM для значительно более быстрого решения"],
|
|
42
|
-
uk: ["Я людина","Перевірка...","Ви людина","Помилка. Спробуйте.","Підтвердьте, що ви людина","Усунення несправностей","Перевірка Cap","Натисніть, щоб підтвердити, що ви людина","Перевіряємо, що ви людина, зачекайте","Ми підтвердили, що ви людина, можете продовжити","Сталася помилка, спробуйте ще раз","Увімкніть WASM для значно швидшого розв’язання"],
|
|
43
|
-
ca: ["Verifica que ets humà","Verificant...","Ets humà","Error. Torna-ho a provar.","Verifica que ets humà","Resolució de problemes","Verificació de Cap","Fes clic per verificar que ets humà","Verificant que ets humà, espera","Hem verificat que ets humà, ja pots continuar","S'ha produït un error, torna-ho a provar","Activa WASM per resoldre molt més ràpid"],
|
|
44
|
-
gl: ["Verifica que es humano","Verificando...","Es humano","Erro. Téntao de novo.","Verifica que es humano","Resolución de problemas","Verificación de Cap","Fai clic para verificar que es humano","Verificando que es humano, agarda","Verificamos que es humano, xa podes continuar","Produciuse un erro, téntao de novo","Activa WASM para resolver moito máis rápido"],
|
|
45
|
-
af: ["Bevestig dat jy 'n mens is","Verifieer tans...","Jy is 'n mens","Fout. Probeer weer.","Bevestig asseblief dat jy 'n mens is","Probleemoplossing","Cap-verifikasie","Klik om te bevestig dat jy 'n mens is","Bevestig tans dat jy 'n mens is, wag asseblief","Ons het bevestig dat jy 'n mens is, jy kan voortgaan","'n Fout het voorgekom, probeer weer","Aktiveer WASM vir aansienlik vinniger oplossing"],
|
|
46
|
-
id: ["Verifikasi Anda manusia","Memverifikasi...","Anda manusia","Kesalahan. Coba lagi.","Harap verifikasi Anda manusia","Pemecahan masalah","Verifikasi Cap","Klik untuk memverifikasi Anda manusia","Memverifikasi Anda manusia, harap tunggu","Kami telah memverifikasi Anda manusia, Anda dapat melanjutkan","Terjadi kesalahan, coba lagi","Aktifkan WASM untuk penyelesaian yang jauh lebih cepat"],
|
|
47
|
-
ms: ["Sahkan anda manusia","Mengesahkan...","Anda manusia","Ralat. Cuba lagi.","Sila sahkan anda manusia","Penyelesaian masalah","Pengesahan Cap","Klik untuk mengesahkan anda manusia","Mengesahkan anda manusia, sila tunggu","Kami telah mengesahkan anda manusia, anda boleh teruskan","Ralat berlaku, sila cuba lagi","Dayakan WASM untuk penyelesaian yang jauh lebih pantas"],
|
|
48
|
-
ro: ["Verificați că sunteți om","Se verifică...","Sunteți om","Eroare. Încercați din nou.","Verificați că sunteți om","Depanare","Verificare Cap","Faceți clic pentru a verifica că sunteți om","Verificăm că sunteți om, așteptați","Am verificat că sunteți om, puteți continua","A apărut o eroare, încercați din nou","Activați WASM pentru o rezolvare mult mai rapidă"],
|
|
49
|
-
hu: ["Igazolja, hogy ember","Ellenőrzés...","Ön ember","Hiba. Próbálja újra.","Igazolja, hogy ember","Hibaelhárítás","Cap-ellenőrzés","Kattintson az emberi voltának igazolásához","Ellenőrizzük, hogy ember-e, kérjük várjon","Igazoltuk, hogy ember, folytathatja","Hiba történt, próbálja újra","Engedélyezze a WASM-ot a sokkal gyorsabb megoldásért"],
|
|
50
|
-
el: ["Είμαι άνθρωπος","Επαλήθευση...","Είστε άνθρωπος","Σφάλμα. Δοκιμάστε ξανά.","Επιβεβαιώστε ότι είστε άνθρωπος","Αντιμετώπιση προβλημάτων","Επαλήθευση Cap","Κάντε κλικ για να επιβεβαιώσετε ότι είστε άνθρωπος","Επαληθεύουμε ότι είστε άνθρωπος, περιμένετε","Επιβεβαιώσαμε ότι είστε άνθρωπος, μπορείτε να συνεχίσετε","Παρουσιάστηκε σφάλμα, δοκιμάστε ξανά","Ενεργοποιήστε το WASM για πολύ ταχύτερη επίλυση"],
|
|
51
|
-
bg: ["Потвърдете, че сте човек","Проверка...","Вие сте човек","Грешка. Опитайте пак.","Потвърдете, че сте човек","Отстраняване на неизправности","Проверка Cap","Щракнете, за да потвърдите, че сте човек","Проверяваме, че сте човек, изчакайте","Потвърдихме, че сте човек, можете да продължите","Възникна грешка, опитайте отново","Активирайте WASM за значително по-бързо решаване"],
|
|
52
|
-
sr: ["Потврдите да сте човек","Провера...","Ви сте човек","Грешка. Покушајте опет.","Потврдите да сте човек","Решавање проблема","Cap провера","Кликните да потврдите да сте човек","Проверавамо да сте човек, сачекајте","Потврдили смо да сте човек, можете наставити","Дошло је до грешке, покушајте поново","Омогућите WASM за знатно брже решавање"],
|
|
53
|
-
hr: ["Potvrdite da ste čovjek","Provjera...","Vi ste čovjek","Greška. Pokušajte opet.","Potvrdite da ste čovjek","Rješavanje problema","Cap provjera","Kliknite da potvrdite da ste čovjek","Provjeravamo da ste čovjek, pričekajte","Potvrdili smo da ste čovjek, možete nastaviti","Došlo je do pogreške, pokušajte ponovno","Omogućite WASM za znatno brže rješavanje"],
|
|
54
|
-
sl: ["Potrdite, da ste človek","Preverjanje...","Ste človek","Napaka. Poskusite znova.","Potrdite, da ste človek","Odpravljanje težav","Preverjanje Cap","Kliknite za potrditev, da ste človek","Preverjamo, da ste človek, počakajte","Potrdili smo, da ste človek, lahko nadaljujete","Prišlo je do napake, poskusite znova","Omogočite WASM za bistveno hitrejše reševanje"],
|
|
55
|
-
et: ["Kinnitage, et olete inimene","Kontrollimine...","Olete inimene","Viga. Proovige uuesti.","Kinnitage, et olete inimene","Tõrkeotsing","Cap kontroll","Klõpsake, et kinnitada, et olete inimene","Kontrollime, et olete inimene, oodake","Kinnitasime, et olete inimene, võite jätkata","Ilmnes viga, proovige uuesti","Lubage WASM oluliselt kiiremaks lahendamiseks"],
|
|
56
|
-
lv: ["Esmu cilvēks","Pārbauda...","Jūs esat cilvēks","Kļūda. Mēģiniet vēlreiz.","Apstipriniet, ka esat cilvēks","Problēmu novēršana","Cap pārbaude","Noklikšķiniet, lai apstiprinātu, ka esat cilvēks","Pārbaudām, ka esat cilvēks, uzgaidiet","Mēs apstiprinājām, ka esat cilvēks, varat turpināt","Radās kļūda, mēģiniet vēlreiz","Iespējojiet WASM ievērojami ātrākai risināšanai"],
|
|
57
|
-
lt: ["Esu žmogus","Tikrinama...","Jūs esate žmogus","Klaida. Bandykite vėl.","Patvirtinkite, kad esate žmogus","Trikčių šalinimas","Cap patvirtinimas","Spustelėkite, kad patvirtintumėte, jog esate žmogus","Tikriname, ar esate žmogus, palaukite","Patvirtinome, kad esate žmogus, galite tęsti","Įvyko klaida, bandykite dar kartą","Įjunkite WASM, kad išspręstumėte daug greičiau"],
|
|
58
|
-
tr: ["Ben insanım","Doğrulanıyor...","İnsansınız","Hata. Tekrar deneyin.","Lütfen insan olduğunuzu doğrulayın","Sorun giderme","Cap doğrulaması","İnsan olduğunuzu doğrulamak için tıklayın","İnsan olduğunuz doğrulanıyor, lütfen bekleyin","İnsan olduğunuzu doğruladık, devam edebilirsiniz","Bir hata oluştu, tekrar deneyin","Çok daha hızlı çözüm için WASM'ı etkinleştirin"],
|
|
59
|
-
vi: ["Xác minh bạn là con người","Đang xác minh...","Bạn là con người","Lỗi. Thử lại.","Vui lòng xác minh bạn là con người","Khắc phục sự cố","Xác minh Cap","Nhấp để xác minh bạn là con người","Đang xác minh bạn là con người, vui lòng đợi","Chúng tôi đã xác minh bạn là con người, bạn có thể tiếp tục","Đã xảy ra lỗi, vui lòng thử lại","Bật WASM để giải nhanh hơn đáng kể"],
|
|
60
|
-
tl: ["Patunayan na ikaw ay tao","Bineberipika...","Ikaw ay tao","Error. Subukan ulit.","Pakipatunayan na ikaw ay tao","Pag-troubleshoot","Pagpapatunay ng Cap","I-click para patunayan na ikaw ay tao","Pinapatunayan na ikaw ay tao, maghintay","Napatunayan namin na ikaw ay tao, maaari nang magpatuloy","May naganap na error, subukan ulit","I-enable ang WASM para sa mas mabilis na paglutas"],
|
|
61
|
-
ar: ["تحقق من أنك إنسان","جارٍ التحقق...","أنت إنسان","خطأ. حاول مرة أخرى.","يرجى التحقق من أنك إنسان","استكشاف الأخطاء وإصلاحها","تحقق Cap","انقر للتحقق من أنك إنسان","جارٍ التحقق من أنك إنسان، يرجى الانتظار","لقد تحققنا من أنك إنسان، يمكنك المتابعة الآن","حدث خطأ، يرجى المحاولة مرة أخرى","فعّل WASM لحل أسرع بكثير"],
|
|
62
|
-
he: ["אמת שאתה אנושי","מאמת...","אתה אנושי","שגיאה. נסה שוב.","נא לאמת שאתה אנושי","פתרון בעיות","אימות Cap","לחץ כדי לאמת שאתה אנושי","מאמת שאתה אנושי, אנא המתן","אימתנו שאתה אנושי, אפשר להמשיך","אירעה שגיאה, נסה שוב","הפעל את WASM לפתרון מהיר בהרבה"],
|
|
63
|
-
fa: ["تأیید کنید که انسان هستید","در حال تأیید...","شما انسان هستید","خطا. دوباره تلاش کنید.","لطفاً تأیید کنید که انسان هستید","عیبیابی","تأیید Cap","برای تأیید اینکه انسان هستید کلیک کنید","در حال تأیید اینکه انسان هستید، لطفاً صبر کنید","تأیید کردیم که انسان هستید، میتوانید ادامه دهید","خطایی رخ داد، دوباره تلاش کنید","برای حل بسیار سریعتر، WASM را فعال کنید"],
|
|
64
|
-
"zh-cn": ["确认你是真人","正在验证...","你是真人","出错了。请重试。","请确认你是真人","故障排除","Cap 验证","点击以确认你是真人","正在验证你是真人,请稍候","我们已确认你是真人,你可以继续了","发生错误,请重试","启用 WASM 可大幅加快求解速度"],
|
|
65
|
-
"zh-tw": ["確認你是真人","正在驗證...","你是真人","發生錯誤。請重試。","請確認你是真人","疑難排解","Cap 驗證","點擊以確認你是真人","正在驗證你是真人,請稍候","我們已確認你是真人,你可以繼續了","發生錯誤,請重試","啟用 WASM 可大幅加快解算速度"],
|
|
66
|
-
ja: ["私は人間です","確認中...","あなたは人間です","エラー。再試行を。","あなたが人間であることを確認してください","トラブルシューティング","Cap 認証","クリックして人間であることを確認","あなたが人間であることを確認しています。お待ちください","あなたが人間であることを確認しました。続行できます","エラーが発生しました。もう一度お試しください","WASM を有効にすると大幅に高速化されます"],
|
|
67
|
-
ko: ["사람인지 확인하세요","확인 중...","당신은 사람입니다","오류. 다시 시도하세요.","사람인지 확인해 주세요","문제 해결","Cap 인증","클릭하여 사람인지 확인하세요","사람인지 확인 중입니다. 잠시 기다려 주세요","사람임을 확인했습니다. 계속할 수 있습니다","오류가 발생했습니다. 다시 시도하세요","훨씬 빠른 처리를 위해 WASM을 활성화하세요"],
|
|
68
|
-
az: ["Mən insanam","Yoxlanılır...","Siz insansınız","Xəta. Yenidən cəhd edin.","İnsan olduğunuzu təsdiqləyin","Problemlərin həlli","Cap yoxlaması","İnsan olduğunuzu təsdiqləmək üçün klikləyin","İnsan olduğunuz yoxlanılır, gözləyin","İnsan olduğunuzu təsdiqlədik, davam edə bilərsiniz","Xəta baş verdi, yenidən cəhd edin","Daha sürətli həll üçün WASM-ı aktivləşdirin"],
|
|
69
|
-
kk: ["Адам екеніңізді растаңыз","Тексерілуде...","Сіз адамсыз","Қате. Қайталап көріңіз.","Адам екеніңізді растаңыз","Ақаулықтарды жою","Cap растауы","Адам екеніңізді растау үшін басыңыз","Адам екеніңізді тексерудеміз, күтіңіз","Адам екеніңізді растадық, жалғастыра аласыз","Қате орын алды, қайталап көріңіз","Әлдеқайда жылдам шешу үшін WASM қосыңыз"],
|
|
70
|
-
ka: ["მე ადამიანი ვარ","მოწმდება...","თქვენ ადამიანი ხართ","შეცდომა. სცადეთ.","დაადასტურეთ, რომ ადამიანი ხართ","პრობლემის გადაჭრა","Cap-ის დადასტურება","დააწკაპუნეთ, რომ დაადასტუროთ, რომ ადამიანი ხართ","ვამოწმებთ, რომ ადამიანი ხართ, დაელოდეთ","დავადასტურეთ, რომ ადამიანი ხართ, შეგიძლიათ გააგრძელოთ","მოხდა შეცდომა, სცადეთ ხელახლა","ჩართეთ WASM მნიშვნელოვნად სწრაფი ამოხსნისთვის"],
|
|
71
|
-
hy: ["Հաստատեք, որ մարդ եք","Ստուգվում է...","Դուք մարդ եք","Սխալ. Կրկին փորձեք։","Հաստատեք, որ մարդ եք","Անսարքությունների վերացում","Cap ստուգում","Սեղմեք՝ հաստատելու, որ մարդ եք","Ստուգում ենք, որ մարդ եք, սպասեք","Մենք հաստատեցինք, որ մարդ եք, կարող եք շարունակել","Սխալ տեղի ունեցավ, կրկին փորձեք","Միացրեք WASM-ը զգալիորեն ավելի արագ լուծման համար"],
|
|
72
|
-
ur: ["تصدیق کریں کہ آپ انسان ہیں","تصدیق ہو رہی ہے...","آپ انسان ہیں","خرابی۔ دوبارہ کوشش کریں۔","براہ کرم تصدیق کریں کہ آپ انسان ہیں","مسئلہ حل کریں","Cap تصدیق","تصدیق کے لیے کلک کریں کہ آپ انسان ہیں","تصدیق ہو رہی ہے کہ آپ انسان ہیں، انتظار کریں","ہم نے تصدیق کر لی کہ آپ انسان ہیں، اب آپ جاری رکھ سکتے ہیں","ایک خرابی پیش آئی، دوبارہ کوشش کریں","نمایاں طور پر تیز حل کے لیے WASM فعال کریں"],
|
|
73
|
-
hi: ["पुष्टि करें कि आप मानव हैं","सत्यापित हो रहा है...","आप मानव हैं","त्रुटि। पुनः प्रयास करें।","कृपया पुष्टि करें कि आप मानव हैं","समस्या निवारण","Cap सत्यापन","पुष्टि करने के लिए क्लिक करें कि आप मानव हैं","सत्यापित किया जा रहा है कि आप मानव हैं, प्रतीक्षा करें","हमने पुष्टि कर दी है कि आप मानव हैं, अब आप जारी रख सकते हैं","एक त्रुटि हुई, पुनः प्रयास करें","काफी तेज़ समाधान के लिए WASM सक्षम करें"],
|
|
74
|
-
bn: ["আপনি মানুষ তা যাচাই করুন","যাচাই করা হচ্ছে...","আপনি মানুষ","ত্রুটি। আবার চেষ্টা করুন।","অনুগ্রহ করে যাচাই করুন যে আপনি মানুষ","সমস্যা সমাধান","Cap যাচাই","আপনি মানুষ তা যাচাই করতে ক্লিক করুন","আপনি মানুষ তা যাচাই করা হচ্ছে, অপেক্ষা করুন","আমরা যাচাই করেছি যে আপনি মানুষ, এখন চালিয়ে যেতে পারেন","একটি ত্রুটি ঘটেছে, আবার চেষ্টা করুন","অনেক দ্রুত সমাধানের জন্য WASM সক্ষম করুন"],
|
|
75
|
-
ta: ["நான் மனிதர்","சரிபார்க்கிறது...","நீங்கள் மனிதர்","பிழை. மீண்டும் முயலவும்.","நீங்கள் மனிதர் என்பதை உறுதிப்படுத்தவும்","சிக்கல் தீர்வு","Cap சரிபார்ப்பு","நீங்கள் மனிதர் என உறுதிப்படுத்த கிளிக் செய்யவும்","நீங்கள் மனிதர் என சரிபார்க்கிறது, காத்திருக்கவும்","நீங்கள் மனிதர் என உறுதிப்படுத்தினோம், தொடரலாம்","பிழை ஏற்பட்டது, மீண்டும் முயற்சிக்கவும்","மிக வேகமான தீர்வுக்கு WASM ஐ இயக்கவும்"],
|
|
76
|
-
te: ["నేను మనిషిని","ధృవీకరిస్తోంది...","మీరు మనిషి","లోపం. మళ్లీ ప్రయత్నించండి.","దయచేసి మీరు మనిషి అని ధృవీకరించండి","సమస్య పరిష్కారం","Cap ధృవీకరణ","మీరు మనిషి అని ధృవీకరించడానికి క్లిక్ చేయండి","మీరు మనిషి అని ధృవీకరిస్తోంది, వేచి ఉండండి","మీరు మనిషి అని మేము ధృవీకరించాము, ఇప్పుడు కొనసాగవచ్చు","లోపం సంభవించింది, మళ్లీ ప్రయత్నించండి","చాలా వేగవంతమైన పరిష్కారం కోసం WASM ప్రారంభించండి"],
|
|
77
|
-
mr: ["मी मानव आहे","पडताळणी होत आहे...","तुम्ही मानव आहात","त्रुटी. पुन्हा प्रयत्न करा.","कृपया तुम्ही मानव आहात याची पुष्टी करा","समस्यानिवारण","Cap पडताळणी","तुम्ही मानव आहात याची पुष्टी करण्यासाठी क्लिक करा","तुम्ही मानव आहात याची पडताळणी होत आहे, प्रतीक्षा करा","आम्ही पुष्टी केली की तुम्ही मानव आहात, आता पुढे जाऊ शकता","त्रुटी आली, पुन्हा प्रयत्न करा","खूप जलद सोडवण्यासाठी WASM सक्षम करा"],
|
|
78
|
-
gu: ["તમે માનવ છો તેની ખાતરી કરો","ચકાસણી થઈ રહી છે...","તમે માનવ છો","ભૂલ. ફરી પ્રયાસ કરો.","કૃપા કરીને ખાતરી કરો કે તમે માનવ છો","સમસ્યાનિવારણ","Cap ચકાસણી","તમે માનવ છો તેની ખાતરી કરવા ક્લિક કરો","તમે માનવ છો તેની ચકાસણી થઈ રહી છે, રાહ જુઓ","અમે ખાતરી કરી કે તમે માનવ છો, હવે ચાલુ રાખી શકો છો","ભૂલ આવી, ફરી પ્રયાસ કરો","ઘણા ઝડપી ઉકેલ માટે WASM સક્ષમ કરો"],
|
|
79
|
-
kn: ["ನಾನು ಮನುಷ್ಯ","ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ...","ನೀವು ಮನುಷ್ಯ","ದೋಷ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.","ದಯವಿಟ್ಟು ನೀವು ಮನುಷ್ಯ ಎಂದು ದೃಢೀಕರಿಸಿ","ಸಮಸ್ಯೆ ಪರಿಹಾರ","Cap ಪರಿಶೀಲನೆ","ನೀವು ಮನುಷ್ಯ ಎಂದು ದೃಢೀಕರಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ","ನೀವು ಮನುಷ್ಯ ಎಂದು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ, ನಿರೀಕ್ಷಿಸಿ","ನೀವು ಮನುಷ್ಯ ಎಂದು ದೃಢೀಕರಿಸಿದ್ದೇವೆ, ಮುಂದುವರಿಯಬಹುದು","ದೋಷ ಸಂಭವಿಸಿದೆ, ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ","ಬಹಳ ವೇಗದ ಪರಿಹಾರಕ್ಕಾಗಿ WASM ಸಕ್ರಿಯಗೊಳಿಸಿ"],
|
|
80
|
-
ml: ["ഞാൻ മനുഷ്യനാണ്","പരിശോധിക്കുന്നു...","നിങ്ങൾ മനുഷ്യനാണ്","പിശക്. വീണ്ടും ശ്രമിക്കുക.","ദയവായി നിങ്ങൾ മനുഷ്യനാണെന്ന് സ്ഥിരീകരിക്കുക","പ്രശ്നപരിഹാരം","Cap പരിശോധന","നിങ്ങൾ മനുഷ്യനാണെന്ന് സ്ഥിരീകരിക്കാൻ ക്ലിക്ക് ചെയ്യുക","നിങ്ങൾ മനുഷ്യനാണെന്ന് പരിശോധിക്കുന്നു, കാത്തിരിക്കുക","നിങ്ങൾ മനുഷ്യനാണെന്ന് ഞങ്ങൾ സ്ഥിരീകരിച്ചു, തുടരാം","ഒരു പിശക് സംഭവിച്ചു, വീണ്ടും ശ്രമിക്കുക","വളരെ വേഗത്തിലുള്ള പരിഹാരത്തിന് WASM പ്രവർത്തനക്ഷമമാക്കുക"],
|
|
81
|
-
pa: ["ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਤੁਸੀਂ ਮਨੁੱਖ ਹੋ","ਪੁਸ਼ਟੀ ਹੋ ਰਹੀ ਹੈ...","ਤੁਸੀਂ ਮਨੁੱਖ ਹੋ","ਗਲਤੀ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।","ਕਿਰਪਾ ਕਰਕੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਤੁਸੀਂ ਮਨੁੱਖ ਹੋ","ਸਮੱਸਿਆ ਹੱਲ","Cap ਪੁਸ਼ਟੀ","ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ ਕਿ ਤੁਸੀਂ ਮਨੁੱਖ ਹੋ","ਪੁਸ਼ਟੀ ਹੋ ਰਹੀ ਹੈ ਕਿ ਤੁਸੀਂ ਮਨੁੱਖ ਹੋ, ਉਡੀਕ ਕਰੋ","ਅਸੀਂ ਪੁਸ਼ਟੀ ਕਰ ਲਈ ਹੈ ਕਿ ਤੁਸੀਂ ਮਨੁੱਖ ਹੋ, ਹੁਣ ਜਾਰੀ ਰੱਖ ਸਕਦੇ ਹੋ","ਇੱਕ ਗਲਤੀ ਆਈ, ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ","ਬਹੁਤ ਤੇਜ਼ ਹੱਲ ਲਈ WASM ਚਾਲੂ ਕਰੋ"],
|
|
82
|
-
th: ["ยืนยันว่าคุณเป็นมนุษย์","กำลังยืนยัน...","คุณเป็นมนุษย์","ข้อผิดพลาด ลองอีกครั้ง","โปรดยืนยันว่าคุณเป็นมนุษย์","การแก้ไขปัญหา","การยืนยัน Cap","คลิกเพื่อยืนยันว่าคุณเป็นมนุษย์","กำลังยืนยันว่าคุณเป็นมนุษย์ โปรดรอ","เรายืนยันแล้วว่าคุณเป็นมนุษย์ คุณดำเนินการต่อได้","เกิดข้อผิดพลาด โปรดลองอีกครั้ง","เปิดใช้งาน WASM เพื่อการแก้ปัญหาที่เร็วขึ้นมาก"],
|
|
83
|
-
sw: ["Mimi ni binadamu","Inathibitisha...","Wewe ni binadamu","Hitilafu. Jaribu tena.","Tafadhali thibitisha kuwa wewe ni binadamu","Utatuzi wa matatizo","Uthibitisho wa Cap","Bofya ili kuthibitisha kuwa wewe ni binadamu","Inathibitisha kuwa wewe ni binadamu, tafadhali subiri","Tumethibitisha kuwa wewe ni binadamu, unaweza kuendelea","Hitilafu imetokea, tafadhali jaribu tena","Washa WASM kwa utatuzi wa haraka zaidi"],
|
|
84
|
-
am: ["ሰው መሆንዎን ያረጋግጡ","በማረጋገጥ ላይ...","እርስዎ ሰው ነዎት","ስህተት። እንደገና ይሞክሩ።","እባክዎ ሰው መሆንዎን ያረጋግጡ","ችግር መፍታት","የCap ማረጋገጫ","ሰው መሆንዎን ለማረጋገጥ ጠቅ ያድርጉ","ሰው መሆንዎን በማረጋገጥ ላይ፣ እባክዎ ይጠብቁ","ሰው መሆንዎን አረጋግጠናል፣ መቀጠል ይችላሉ","ስህተት ተከስቷል፣ እባክዎ እንደገና ይሞክሩ","በጣም ፈጣን መፍትሄ ለማግኘት WASM ን ያንቁ"],
|
|
85
|
-
my: ["ကျွန်ုပ် လူသားဖြစ်သည်","အတည်ပြုနေသည်...","သင်သည် လူသားဖြစ်သည်","အမှား။ ထပ်ကြိုးစားပါ။","သင်သည် လူသားဖြစ်ကြောင်း အတည်ပြုပါ","ပြဿနာဖြေရှင်းခြင်း","Cap အတည်ပြုခြင်း","သင်သည် လူသားဖြစ်ကြောင်း အတည်ပြုရန် နှိပ်ပါ","သင်သည် လူသားဖြစ်ကြောင်း အတည်ပြုနေသည်၊ စောင့်ပါ","သင်သည် လူသားဖြစ်ကြောင်း ကျွန်ုပ်တို့ အတည်ပြုပြီးပါပြီ၊ ဆက်လက်လုပ်ဆောင်နိုင်ပါသည်","အမှားဖြစ်ပွားခဲ့သည်၊ ထပ်ကြိုးစားပါ","များစွာပိုမြန်သော ဖြေရှင်းမှုအတွက် WASM ကိုဖွင့်ပါ"],
|
|
86
|
-
km: ["បញ្ជាក់ថាអ្នកជាមនុស្ស","កំពុងផ្ទៀងផ្ទាត់...","អ្នកជាមនុស្ស","កំហុស។ សាកល្បងម្តងទៀត។","សូមបញ្ជាក់ថាអ្នកជាមនុស្ស","ការដោះស្រាយបញ្ហា","ការផ្ទៀងផ្ទាត់ Cap","ចុចដើម្បីបញ្ជាក់ថាអ្នកជាមនុស្ស","កំពុងផ្ទៀងផ្ទាត់ថាអ្នកជាមនុស្ស សូមរង់ចាំ","យើងបានផ្ទៀងផ្ទាត់ថាអ្នកជាមនុស្ស អ្នកអាចបន្តបាន","មានកំហុសកើតឡើង សូមសាកល្បងម្តងទៀត","បើក WASM សម្រាប់ការដោះស្រាយលឿនជាងមុនច្រើន"],
|
|
87
|
-
};
|