nano-pow 5.0.5 → 5.1.0
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/dist/bin/cli.js +32 -9
- package/dist/bin/server.js +27 -12
- package/dist/main.min.js +53 -18
- package/docs/blake2.md +26 -0
- package/package.json +5 -8
package/dist/bin/cli.js
CHANGED
|
@@ -133,6 +133,10 @@ Object.defineProperty(webgpu, "isSupported", {
|
|
|
133
133
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
134
134
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
135
135
|
|
|
136
|
+
// src/utils/cache.ts
|
|
137
|
+
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
138
|
+
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
139
|
+
|
|
136
140
|
// src/utils/logger.ts
|
|
137
141
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
138
142
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
@@ -180,6 +184,19 @@ var Logger = class {
|
|
|
180
184
|
// src/utils/index.ts
|
|
181
185
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
182
186
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
187
|
+
function isHexN(value, byteLength) {
|
|
188
|
+
if (typeof value !== "string") return false;
|
|
189
|
+
const v = value.replace(/^0[Xx]/, "");
|
|
190
|
+
const length = byteLength === null ? "+" : `{${2 * byteLength}}`;
|
|
191
|
+
const r = new RegExp(`^[A-Fa-f\\d]${length}$`);
|
|
192
|
+
return r.test(v);
|
|
193
|
+
}
|
|
194
|
+
function isHex8(value) {
|
|
195
|
+
return isHexN(value, 8);
|
|
196
|
+
}
|
|
197
|
+
function isHex32(value) {
|
|
198
|
+
return isHexN(value, 32);
|
|
199
|
+
}
|
|
183
200
|
function stats(times) {
|
|
184
201
|
if (times == null || times.length === 0) return null;
|
|
185
202
|
const count = times.length;
|
|
@@ -249,7 +266,7 @@ if (!process.stdin.isTTY) {
|
|
|
249
266
|
let i = 0;
|
|
250
267
|
for await (const line of stdin) {
|
|
251
268
|
i++;
|
|
252
|
-
if (
|
|
269
|
+
if (isHex32(line)) {
|
|
253
270
|
hashes.push(line);
|
|
254
271
|
} else {
|
|
255
272
|
stdinErrors.push(`Skipping invalid stdin input line ${i}`);
|
|
@@ -287,7 +304,7 @@ Full documentation: <https://www.npmjs.com/package/nano-pow>
|
|
|
287
304
|
var inArgs = [];
|
|
288
305
|
var isParsingHash = true;
|
|
289
306
|
while (isParsingHash) {
|
|
290
|
-
if (
|
|
307
|
+
if (!isHex8(args[args.length - 1])) break;
|
|
291
308
|
try {
|
|
292
309
|
inArgs.unshift(args.pop());
|
|
293
310
|
} catch {
|
|
@@ -313,11 +330,7 @@ for (let i = 0; i < args.length; i++) {
|
|
|
313
330
|
if (b == null) throw new Error("Missing argument for benchmark");
|
|
314
331
|
const count = +b;
|
|
315
332
|
if (count < 1) throw new Error("Invalid benchmark count");
|
|
316
|
-
|
|
317
|
-
while (hashes.length < count) {
|
|
318
|
-
getRandomValues(random);
|
|
319
|
-
hashes.push(Buffer.from(random).toString("hex"));
|
|
320
|
-
}
|
|
333
|
+
generateHashes(count);
|
|
321
334
|
isBenchmark = true;
|
|
322
335
|
break;
|
|
323
336
|
}
|
|
@@ -330,7 +343,7 @@ for (let i = 0; i < args.length; i++) {
|
|
|
330
343
|
case "-d": {
|
|
331
344
|
const d = args[i + 1];
|
|
332
345
|
if (d == null) throw new Error("Missing argument for difficulty");
|
|
333
|
-
if (
|
|
346
|
+
if (!isHex8(d)) throw new Error("Invalid argument for difficulty");
|
|
334
347
|
body.difficulty = d;
|
|
335
348
|
break;
|
|
336
349
|
}
|
|
@@ -354,7 +367,7 @@ for (let i = 0; i < args.length; i++) {
|
|
|
354
367
|
case "-v": {
|
|
355
368
|
const v = args[i + 1];
|
|
356
369
|
if (v == null) throw new Error("Missing argument for work validation");
|
|
357
|
-
if (
|
|
370
|
+
if (!isHex8(v)) throw new Error("Invalid argument for work validation");
|
|
358
371
|
if (hashes.length !== 1) throw new Error("Validate accepts exactly one hash");
|
|
359
372
|
body.action = "work_validate";
|
|
360
373
|
body.work = v;
|
|
@@ -456,6 +469,13 @@ async function execute() {
|
|
|
456
469
|
}
|
|
457
470
|
if (isBatch) console.log(results);
|
|
458
471
|
}
|
|
472
|
+
function generateHashes(count) {
|
|
473
|
+
const random = new Uint8Array(32);
|
|
474
|
+
while (hashes.length < count) {
|
|
475
|
+
getRandomValues(random);
|
|
476
|
+
hashes.push(Buffer.from(random).toString("hex"));
|
|
477
|
+
}
|
|
478
|
+
}
|
|
459
479
|
async function request(body2) {
|
|
460
480
|
return new Promise((resolve, reject) => {
|
|
461
481
|
const listener = async (msg) => {
|
|
@@ -478,6 +498,9 @@ async function score() {
|
|
|
478
498
|
const result = await benchmark();
|
|
479
499
|
logger.log(result);
|
|
480
500
|
if (result != null) rates.push(result.truncatedRate);
|
|
501
|
+
const count = hashes.length;
|
|
502
|
+
hashes.splice(0, hashes.length);
|
|
503
|
+
generateHashes(count);
|
|
481
504
|
} catch (err) {
|
|
482
505
|
logger.log(err);
|
|
483
506
|
}
|
package/dist/bin/server.js
CHANGED
|
@@ -136,6 +136,10 @@ Object.defineProperty(webgpu, "isSupported", {
|
|
|
136
136
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
137
137
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
138
138
|
|
|
139
|
+
// src/utils/cache.ts
|
|
140
|
+
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
141
|
+
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
142
|
+
|
|
139
143
|
// src/utils/logger.ts
|
|
140
144
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
141
145
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
@@ -183,6 +187,19 @@ var Logger = class {
|
|
|
183
187
|
// src/utils/index.ts
|
|
184
188
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
185
189
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
190
|
+
function isHexN(value, byteLength) {
|
|
191
|
+
if (typeof value !== "string") return false;
|
|
192
|
+
const v = value.replace(/^0[Xx]/, "");
|
|
193
|
+
const length = byteLength === null ? "+" : `{${2 * byteLength}}`;
|
|
194
|
+
const r = new RegExp(`^[A-Fa-f\\d]${length}$`);
|
|
195
|
+
return r.test(v);
|
|
196
|
+
}
|
|
197
|
+
function isHex8(value) {
|
|
198
|
+
return isHexN(value, 8);
|
|
199
|
+
}
|
|
200
|
+
function isHex32(value) {
|
|
201
|
+
return isHexN(value, 32);
|
|
202
|
+
}
|
|
186
203
|
|
|
187
204
|
// src/bin/server.ts
|
|
188
205
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
@@ -307,16 +324,16 @@ async function work(data) {
|
|
|
307
324
|
throw new Error(resBody);
|
|
308
325
|
}
|
|
309
326
|
resBody = `${action} failed`;
|
|
310
|
-
if (
|
|
327
|
+
if (!isHex32(hash2)) {
|
|
311
328
|
LOG: logger.log("Hash must be hex char(64)");
|
|
312
329
|
throw new Error(resBody);
|
|
313
330
|
}
|
|
314
|
-
if (difficulty !== void 0 && (
|
|
331
|
+
if (difficulty !== void 0 && !isHex8(difficulty)) {
|
|
315
332
|
LOG: logger.log("Difficulty must be hex char(16).");
|
|
316
333
|
throw new Error(resBody);
|
|
317
334
|
}
|
|
318
335
|
if (action === "work_validate") {
|
|
319
|
-
if (
|
|
336
|
+
if (!isHex8(work2)) {
|
|
320
337
|
LOG: logger.log("Work must be hex char(16).");
|
|
321
338
|
throw new Error(resBody);
|
|
322
339
|
}
|
|
@@ -349,23 +366,21 @@ async function work(data) {
|
|
|
349
366
|
}
|
|
350
367
|
}
|
|
351
368
|
function get(res) {
|
|
352
|
-
res.writeHead(200, { "Content-Type": "text/plain" }).end(
|
|
353
|
-
`Usage: Send POST request to server URL to generate or validate Nano proof-of-work
|
|
369
|
+
res.writeHead(200, { "Content-Type": "text/plain" }).end(`Usage: Send POST request to server URL to generate or validate Nano proof-of-work
|
|
354
370
|
|
|
355
|
-
Generate work for a
|
|
356
|
-
curl -d '{ action: "work_generate", hash:
|
|
371
|
+
Generate work for a HASH with an optional DIFFICULTY:
|
|
372
|
+
curl -d '{ action: "work_generate", hash: HASH, difficulty?: DIFFICULTY }'
|
|
357
373
|
|
|
358
|
-
Validate WORK previously calculated for a
|
|
359
|
-
curl -d '{ action: "work_validate", work: WORK, hash:
|
|
374
|
+
Validate WORK previously calculated for a HASH with an optional DIFFICULTY:
|
|
375
|
+
curl -d '{ action: "work_validate", work: WORK, hash: HASH, difficulty?: DIFFICULTY }'
|
|
360
376
|
|
|
361
|
-
|
|
377
|
+
HASH is a big-endian 64-character hexadecimal string.
|
|
362
378
|
WORK is little-endian 16-character hexadecimal string.
|
|
363
379
|
DIFFICULTY is an optional 16-character hexadecimal string (default: FFFFFFF800000000)
|
|
364
380
|
|
|
365
381
|
Report bugs: <bug-nano-pow@zoso.dev>
|
|
366
382
|
Full documentation: <https://www.npmjs.com/package/nano-pow>
|
|
367
|
-
`
|
|
368
|
-
);
|
|
383
|
+
`);
|
|
369
384
|
}
|
|
370
385
|
async function post(res, reqData) {
|
|
371
386
|
const resHeaders = { "Content-Type": "application/json" };
|
package/dist/main.min.js
CHANGED
|
@@ -224,6 +224,41 @@ function bigintToHex(int, length = 0) {
|
|
|
224
224
|
return int.toString(16).padStart(length, "0");
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
+
// src/utils/cache.ts
|
|
228
|
+
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
229
|
+
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
230
|
+
var Cache = class {
|
|
231
|
+
static #storage = {};
|
|
232
|
+
static #getItem(key) {
|
|
233
|
+
if (globalThis?.localStorage) return globalThis.localStorage.getItem(key);
|
|
234
|
+
return this.#storage[key];
|
|
235
|
+
}
|
|
236
|
+
static #setItem(key, item) {
|
|
237
|
+
if (globalThis?.localStorage) return globalThis.localStorage.setItem(key, item);
|
|
238
|
+
this.#storage[key] = item;
|
|
239
|
+
}
|
|
240
|
+
static search(hash, difficulty) {
|
|
241
|
+
const bigintHash = bigintFrom(hash, "hex");
|
|
242
|
+
const item = this.#getItem("NanoPowCache");
|
|
243
|
+
if (item) {
|
|
244
|
+
const cache = JSON.parse(item);
|
|
245
|
+
for (const c of cache) {
|
|
246
|
+
if (bigintFrom(c.hash, "hex") === bigintHash && bigintFrom(c.difficulty, "hex") >= difficulty) {
|
|
247
|
+
return c;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
static store(result2) {
|
|
254
|
+
const item = this.#getItem("NanoPowCache");
|
|
255
|
+
const cache = JSON.parse(item ?? "[]");
|
|
256
|
+
if (cache.push(result2) > 1e3) cache.shift();
|
|
257
|
+
this.#setItem("NanoPowCache", JSON.stringify(cache));
|
|
258
|
+
return result2;
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
227
262
|
// src/utils/logger.ts
|
|
228
263
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
229
264
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
@@ -479,8 +514,8 @@ async function generate(hash, difficulty, debug) {
|
|
|
479
514
|
});
|
|
480
515
|
}
|
|
481
516
|
|
|
482
|
-
// src/lib/generate/wasm/asm/
|
|
483
|
-
var compute_default = __toBinary("AGFzbQEAAAABCwFgBn5+fn5+fgF+AwIBAAUDAQAABxECBG1haW4AAAZtZW1vcnkCAAqlfAGifAIWewN+IAD9EiEGIAH9EiEHIAL9EiEJIAP9EiEKIAT9EiEIA0AgHEKAgIAIVARAAkD9DNGC5q1/Ug5R0YLmrX9SDlH9DAjJvPNn5glqCMm882fmCWr9DPmC5q1/Ug5R+YLmrX9SDlH9DNFLpKDnOBi70UukoOc4GLsgACAcfCIB/RIgAUIBfP0eASIG/c4BIgv9USIMIAz9DQQFBgcAAQIDDA0ODwgJCgsiDP3OASIN/VEiDiAO/Q0DBAUGBwABAgsMDQ4PCAkKIg4gDSAMIAsgDv3OASAH/c4BIgv9USIMIAz9DQIDBAUGBwABCgsMDQ4PCAkiDP3OASIN/VEiDkE//c0BIA5BAf3LAf1QIQ79DGu9Qfur2YMfa71B+6vZgx/9DCv4lP5y8248K/iU/nLzbjz9DJRCvgRUJnzglEK+BFQmfOD9DJa11vkezfJblrXW+R7N8lsgCP3OASIP/VEiECAQ/Q0EBQYHAAECAwwNDg8ICQoLIhD9zgEiEf1RIhIgEv0NAwQFBgcAAQILDA0ODwgJCiISIBEgECAPIBL9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhAgEP0NAgMEBQYHAAEKCwwNDg8ICSIQ/c4BIhH9USISQT/9zQEgEkEB/csB/VAhEiAR/QzuEqN9ffVeou4So3199V6iIAv9DB9sPiuMaAWbH2w+K4xoBZv9DDunyoSFrme7O6fKhIWuZ7v9DB9sPiuMaAWbH2w+K4xoBZv9DFoTCbARF21WWhMJsBEXbVYgCf3OASIL/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiE/1RIhQgFP0NAwQFBgcAAQILDA0ODwgJCiIUIBMgESALIBT9zgEgCv3OASIL/VEiESAR/Q0CAwQFBgcAAQoLDA0ODwgJIhH9zgEiE/1RIhRBP/3NASAUQQH9ywH9UCIU/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhX9USIWIBb9DQQFBgcAAQIDDA0ODwgJCgsiFv3OASIXIBYgFSAUIBf9USIUIBT9DQMEBQYHAAECCwwNDg8ICQoiFP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIV/VEiFiAW/Q0CAwQFBgcAAQoLDA0ODwgJIhb9zgEhFyAS/QwpWZA3y2OUqSlZkDfLY5SpIAwgCyAS/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIgv9USIMIAz9DQQFBgcAAQIDDA0ODwgJCgsiDP3OASIS/VEiGCAY/Q0DBAUGBwABAgsMDQ4PCAkKIhggEiAMIAsgGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIL/VEiDCAM/Q0CAwQFBgcAAQoLDA0ODwgJIgz9zgEiEv1RIhhBP/3NASAYQQH9ywH9UCEY/QwGG2bEL0PmdQYbZsQvQ+Z1IA0gESAP/QwGG2bEL0PmdQYbZsQvQ+Z1/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIPIA/9DQQFBgcAAQIDDA0ODwgJCgsiD/3OASIR/VEiGSAZ/Q0DBAUGBwABAgsMDQ4PCAkKIhkgESAPIA0gGf3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiDyAP/Q0CAwQFBgcAAQoLDA0ODwgJIg/9zgEiEf1RIhlBP/3NASAZQQH9ywH9UCEZIBEgDCAVIA4gEyAQ/QwUrT5IsASYlBStPkiwBJiUIA79zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDP1RIg4gDv0NBAUGBwABAgMMDQ4PCAkKCyIO/c4BIhD9USIRIBH9DQMEBQYHAAECCwwNDg8ICQoiESAQIA4gDCAR/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIgz9USIOIA79DQIDBAUGBwABCgsMDQ4PCAkiDv3OASIQ/VEiEUE//c0BIBFBAf3LAf1QIhH9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiE/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhogFSATIBEgGv1RIhEgEf0NAwQFBgcAAQILDA0ODwgJCiIR/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhP9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASEaIBAgDyALIBQgF/1RIgtBP/3NASALQQH9ywH9UCIL/c4BIAj9zgEiD/1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhQgECAPIAsgFP1RIgsgC/0NAwQFBgcAAQILDA0ODwgJCiIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASEUIBggFyAOIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiDiAO/Q0EBQYHAAECAwwNDg8ICQoLIg79zgEiF/1RIhggGP0NAwQFBgcAAQILDA0ODwgJCiIYIBcgDiANIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIg4gDv0NAgMEBQYHAAEKCwwNDg8ICSIO/c4BIhf9USIYQT/9zQEgGEEB/csB/VAhGCAZIBIgFiAMIBn9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDP1RIhIgEv0NBAUGBwABAgMMDQ4PCAkKCyIS/c4BIhb9USIZIBn9DQMEBQYHAAECCwwNDg8ICQoiGSAWIBIgDCAZ/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIgz9USISIBL9DQIDBAUGBwABCgsMDQ4PCAkiEv3OASIW/VEiGUE//c0BIBlBAf3LAf1QIRkgFyASIBMgCyAU/VEiC0E//c0BIAtBAf3LAf1QIgv9zgEgB/3OASIS/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFyATIBIgCyAX/VEiCyAL/Q0DBAUGBwABAgsMDQ4PCAkKIgv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIRcgGCAWIBUgDyAY/c4BIAb9zgEiD/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhb9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAWIBUgDyAY/c4BIAn9zgEiD/1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIhb9USIYQT/9zQEgGEEB/csB/VAhGCAZIBogECANIBn9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhn9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAZIBAgDSAb/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASIZ/VEiG0E//c0BIBtBAf3LAf1QIRsgFCAOIAwgESAa/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NBAUGBwABAgMMDQ4PCAkKCyIR/c4BIhQgESAOIAwgFP1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4BIAr9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGSAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASEZIBQgECAPIAsgF/1RIgtBP/3NASALQQH9ywH9UCIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIQIBD9DQQFBgcAAQIDDA0ODwgJCgsiEP3OASIUIBAgDyALIBT9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OASAG/c4BIg/9USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASEUIBggFyARIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiF/1RIhggGP0NAwQFBgcAAQILDA0ODwgJCiIYIBcgESANIBj9zgEgCf3OASIN/VEiESAR/Q0CAwQFBgcAAQoLDA0ODwgJIhH9zgEiF/1RIhhBP/3NASAYQQH9ywH9UCEYIBsgFiATIA4gG/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFv1RIhogGv0NAwQFBgcAAQILDA0ODwgJCiIaIBYgEyAOIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIhb9USIaQT/9zQEgGkEB/csB/VAhGiAXIBMgEiALIBT9USILQT/9zQEgC0EB/csB/VAiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIS/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFyATIBIgCyAX/VEiCyAL/Q0DBAUGBwABAgsMDQ4PCAkKIgv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIRcgGCAWIBUgDyAY/c4BIAr9zgEiD/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhb9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAWIBUgDyAY/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASIW/VEiGEE//c0BIBhBAf3LAf1QIRggGiAZIBAgDSAa/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIQIBD9DQQFBgcAAQIDDA0ODwgJCgsiEP3OASIa/VEiGyAb/Q0DBAUGBwABAgsMDQ4PCAkKIhsgGiAQIA0gG/3OASAH/c4BIg39USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASIa/VEiG0E//c0BIBtBAf3LAf1QIRsgFCARIA4gDCAZ/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NBAUGBwABAgMMDQ4PCAkKCyIR/c4BIhQgESAOIAwgFP1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4BIAj9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASEZIBQgECAPIAsgF/1RIgtBP/3NASALQQH9ywH9UCIL/c4BIAr9zgEiD/1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhQgECAPIAsgFP1RIgsgC/0NAwQFBgcAAQILDA0ODwgJCiIL/c4BIAf9zgEiD/1RIhAgEP0NAgMEBQYHAAEKCwwNDg8ICSIQ/c4BIRQgGCAXIBEgDSAY/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIRIBH9DQQFBgcAAQIDDA0ODwgJCgsiEf3OASIX/VEiGCAY/Q0DBAUGBwABAgsMDQ4PCAkKIhggFyARIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiESAR/Q0CAwQFBgcAAQoLDA0ODwgJIhH9zgEiF/1RIhhBP/3NASAYQQH9ywH9UCEYIBsgFiATIA4gG/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFv1RIhogGv0NAwQFBgcAAQILDA0ODwgJCiIaIBYgEyAOIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIhb9USIaQT/9zQEgGkEB/csB/VAhGiAXIBMgEiALIBT9USILQT/9zQEgC0EB/csB/VAiC/3OASAJ/c4BIhL9USITIBP9DQQFBgcAAQIDDA0ODwgJCgsiE/3OASIXIBMgEiALIBf9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIS/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEhFyAYIBYgFSAPIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhb9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAWIBUgDyAY/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASIW/VEiGEE//c0BIBhBAf3LAf1QIRggGiAZIBAgDSAa/c4BIAj9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhr9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAaIBAgDSAb/c4BIAb9zgEiDf1RIhAgEP0NAgMEBQYHAAEKCwwNDg8ICSIQ/c4BIhr9USIbQT/9zQEgG0EB/csB/VAhGyAUIBEgDiAMIBn9USIMQT/9zQEgDEEB/csB/VAiDP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiFCARIA4gDCAU/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4BIAb9zgEiEv1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIRkgFCAQIA8gCyAX/VEiC0E//c0BIAtBAf3LAf1QIgv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhQgECAPIAsgFP1RIgsgC/0NAwQFBgcAAQILDA0ODwgJCiIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASEUIBggFyARIA0gGP3OASAJ/c4BIg39USIRIBH9DQQFBgcAAQIDDA0ODwgJCgsiEf3OASIX/VEiGCAY/Q0DBAUGBwABAgsMDQ4PCAkKIhggFyARIA0gGP3OASAI/c4BIg39USIRIBH9DQIDBAUGBwABCgsMDQ4PCAkiEf3OASIX/VEiGEE//c0BIBhBAf3LAf1QIRggGyAWIBMgDiAb/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg79USITIBP9DQQFBgcAAQIDDA0ODwgJCgsiE/3OASIW/VEiGiAa/Q0DBAUGBwABAgsMDQ4PCAkKIhogFiATIA4gGv3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEiFv1RIhpBP/3NASAaQQH9ywH9UCEaIBcgEyASIAsgFP1RIgtBP/3NASALQQH9ywH9UCIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USITIBP9DQQFBgcAAQIDDA0ODwgJCgsiE/3OASIXIBMgEiALIBf9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OASAH/c4BIhL9USITIBP9DQIDBAUGBwABCgsMDQ4PCAkiE/3OASEXIBggFiAVIA8gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIP/VEiFSAV/Q0EBQYHAAECAwwNDg8ICQoLIhX9zgEiFv1RIhggGP0NAwQFBgcAAQILDA0ODwgJCiIYIBYgFSAPIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIhb9USIYQT/9zQEgGEEB/csB/VAhGCAaIBkgECANIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhr9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAaIBAgDSAb/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASIa/VEiG0E//c0BIBtBAf3LAf1QIRsgFCARIA4gDCAZ/VEiDEE//c0BIAxBAf3LAf1QIgz9zgEgCv3OASIO/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiFCARIA4gDCAU/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgEgCf3OASIS/VEiFSAV/Q0EBQYHAAECAwwNDg8ICQoLIhX9zgEiGSAVIBIgDCAZ/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIRkgFCAQIA8gCyAX/VEiC0E//c0BIAtBAf3LAf1QIgv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhQgECAPIAsgFP1RIgsgC/0NAwQFBgcAAQILDA0ODwgJCiIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASEUIBggFyARIA0gGP3OASAG/c4BIg39USIRIBH9DQQFBgcAAQIDDA0ODwgJCgsiEf3OASIX/VEiGCAY/Q0DBAUGBwABAgsMDQ4PCAkKIhggFyARIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiESAR/Q0CAwQFBgcAAQoLDA0ODwgJIhH9zgEiF/1RIhhBP/3NASAYQQH9ywH9UCEYIBsgFiATIA4gG/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFv1RIhogGv0NAwQFBgcAAQILDA0ODwgJCiIaIBYgEyAOIBr9zgEgCv3OASIO/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEiFv1RIhpBP/3NASAaQQH9ywH9UCEaIBcgEyASIAsgFP1RIgtBP/3NASALQQH9ywH9UCIL/c4BIAj9zgEiEv1RIhMgE/0NBAUGBwABAgMMDQ4PCAkKCyIT/c4BIhcgEyASIAsgF/1RIgsgC/0NAwQFBgcAAQILDA0ODwgJCiIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USITIBP9DQIDBAUGBwABCgsMDQ4PCAkiE/3OASEXIBggFiAVIA8gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIP/VEiFSAV/Q0EBQYHAAECAwwNDg8ICQoLIhX9zgEiFv1RIhggGP0NAwQFBgcAAQILDA0ODwgJCiIYIBYgFSAPIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIhb9USIYQT/9zQEgGEEB/csB/VAhGCAaIBkgECANIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhr9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAaIBAgDSAb/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASIa/VEiG0E//c0BIBtBAf3LAf1QIRsgFCARIA4gDCAZ/VEiDEE//c0BIAxBAf3LAf1QIgz9zgEgB/3OASIO/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiFCARIA4gDCAU/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASEZIBQgECAPIAsgF/1RIgtBP/3NASALQQH9ywH9UCIL/c4BIAf9zgEiD/1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhQgECAPIAsgFP1RIgsgC/0NAwQFBgcAAQILDA0ODwgJCiIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASEUIBggFyARIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiF/1RIhggGP0NAwQFBgcAAQILDA0ODwgJCiIYIBcgESANIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIhf9USIYQT/9zQEgGEEB/csB/VAhGCAbIBYgEyAOIBv9zgEgCP3OASIO/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFv1RIhogGv0NAwQFBgcAAQILDA0ODwgJCiIaIBYgEyAOIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIhb9USIaQT/9zQEgGkEB/csB/VAhGiAXIBMgEiALIBT9USILQT/9zQEgC0EB/csB/VAiC/3OASAG/c4BIhL9USITIBP9DQQFBgcAAQIDDA0ODwgJCgsiE/3OASIXIBMgEiALIBf9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIS/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEhFyAYIBYgFSAPIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhb9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAWIBUgDyAY/c4BIAr9zgEiD/1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIhb9USIYQT/9zQEgGEEB/csB/VAhGCAaIBkgECANIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhr9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAaIBAgDSAb/c4BIAn9zgEiDf1RIhAgEP0NAgMEBQYHAAEKCwwNDg8ICSIQ/c4BIhr9USIbQT/9zQEgG0EB/csB/VAhGyAUIBEgDiAMIBn9USIMQT/9zQEgDEEB/csB/VAiDP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiFCARIA4gDCAU/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASEZIBQgECAPIAsgF/1RIgtBP/3NASALQQH9ywH9UCIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIQIBD9DQQFBgcAAQIDDA0ODwgJCgsiEP3OASIUIBAgDyALIBT9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIP/VEiECAQ/Q0CAwQFBgcAAQoLDA0ODwgJIhD9zgEhFCAYIBcgESANIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhEgEf0NBAUGBwABAgMMDQ4PCAkKCyIR/c4BIhf9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAXIBEgDSAY/c4BIAf9zgEiDf1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIhf9USIYQT/9zQEgGEEB/csB/VAhGCAbIBYgEyAOIBv9zgEgCv3OASIO/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFv1RIhogGv0NAwQFBgcAAQILDA0ODwgJCiIaIBYgEyAOIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIhb9USIaQT/9zQEgGkEB/csB/VAhGiAXIBMgEiALIBT9USILQT/9zQEgC0EB/csB/VAiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIS/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFyATIBIgCyAX/VEiCyAL/Q0DBAUGBwABAgsMDQ4PCAkKIgv9zgEgBv3OASIS/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEhFyAYIBYgFSAPIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhb9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAWIBUgDyAY/c4BIAj9zgEiD/1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIhb9USIYQT/9zQEgGEEB/csB/VAhGCAaIBkgECANIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhr9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAaIBAgDSAb/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASIa/VEiG0E//c0BIBtBAf3LAf1QIRsgFCARIA4gDCAZ/VEiDEE//c0BIAxBAf3LAf1QIgz9zgEgCf3OASIO/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiFCARIA4gDCAU/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASEZIBQgECAPIAsgF/1RIgtBP/3NASALQQH9ywH9UCIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIQIBD9DQQFBgcAAQIDDA0ODwgJCgsiEP3OASIUIBAgDyALIBT9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIP/VEiECAQ/Q0CAwQFBgcAAQoLDA0ODwgJIhD9zgEhFCAYIBcgESANIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhEgEf0NBAUGBwABAgMMDQ4PCAkKCyIR/c4BIhf9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAXIBEgDSAY/c4BIAr9zgEiDf1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIhf9USIYQT/9zQEgGEEB/csB/VAhGCAbIBYgEyAOIBv9zgEgBv3OASIO/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFv1RIhogGv0NAwQFBgcAAQILDA0ODwgJCiIaIBYgEyAOIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIhb9USIaQT/9zQEgGkEB/csB/VAhGiAXIBMgEiALIBT9USILQT/9zQEgC0EB/csB/VAiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIS/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFyATIBIgCyAX/VEiCyAL/Q0DBAUGBwABAgsMDQ4PCAkKIgv9zgEgCf3OASIS/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEhFyAYIBYgFSAPIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhb9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAWIBUgDyAY/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASIW/VEiGEE//c0BIBhBAf3LAf1QIRggGiAZIBAgDSAa/c4BIAf9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhr9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAaIBAgDSAb/c4BIAj9zgEiDf1RIhAgEP0NAgMEBQYHAAEKCwwNDg8ICSIQ/c4BIhr9USIbQT/9zQEgG0EB/csB/VAhGyAUIBEgDiAMIBn9USIMQT/9zQEgDEEB/csB/VAiDP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiFCARIA4gDCAU/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4BIAn9zgEiEv1RIhUgFf0NAgMEBQYHAAEKCwwNDg8ICSIV/c4BIRkgFCAQIA8gCyAX/VEiC0E//c0BIAtBAf3LAf1QIgv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhQgECAPIAsgFP1RIgsgC/0NAwQFBgcAAQILDA0ODwgJCiIL/c4BIAj9zgEiD/1RIhAgEP0NAgMEBQYHAAEKCwwNDg8ICSIQ/c4BIRQgGCAXIBEgDSAY/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIRIBH9DQQFBgcAAQIDDA0ODwgJCgsiEf3OASIX/VEiGCAY/Q0DBAUGBwABAgsMDQ4PCAkKIhggFyARIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiESAR/Q0CAwQFBgcAAQoLDA0ODwgJIhH9zgEiF/1RIhhBP/3NASAYQQH9ywH9UCEYIBsgFiATIA4gG/3OASAH/c4BIg79USITIBP9DQQFBgcAAQIDDA0ODwgJCgsiE/3OASIW/VEiGiAa/Q0DBAUGBwABAgsMDQ4PCAkKIhogFiATIA4gGv3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEiFv1RIhpBP/3NASAaQQH9ywH9UCEaIBcgEyASIAsgFP1RIgtBP/3NASALQQH9ywH9UCIL/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIhL9USITIBP9DQQFBgcAAQIDDA0ODwgJCgsiE/3OASIXIBMgEiALIBf9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIS/VEiEyAT/Q0CAwQFBgcAAQoLDA0ODwgJIhP9zgEhFyAYIBYgFSAPIBj9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiD/1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIhb9USIYIBj9DQMEBQYHAAECCwwNDg8ICQoiGCAWIBUgDyAY/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIVIBX9DQIDBAUGBwABCgsMDQ4PCAkiFf3OASIW/VEiGEE//c0BIBhBAf3LAf1QIRggGiAZIBAgDSAa/c4BIAr9zgEiDf1RIhAgEP0NBAUGBwABAgMMDQ4PCAkKCyIQ/c4BIhr9USIbIBv9DQMEBQYHAAECCwwNDg8ICQoiGyAaIBAgDSAb/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg39USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASIa/VEiG0E//c0BIBtBAf3LAf1QIRsgFCARIA4gDCAZ/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NBAUGBwABAgMMDQ4PCAkKCyIR/c4BIhQgESAOIAwgFP1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCiIM/c4BIAb9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgEgBv3OASIS/VEiFSAV/Q0EBQYHAAECAwwNDg8ICQoLIhX9zgEiGSAVIBIgDCAZ/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgEgB/3OASIS/VEiFSAV/Q0CAwQFBgcAAQoLDA0ODwgJIhX9zgEhGSAUIBAgDyALIBf9USILQT/9zQEgC0EB/csB/VAiC/3OASAJ/c4BIg/9USIQIBD9DQQFBgcAAQIDDA0ODwgJCgsiEP3OASIUIBAgDyALIBT9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OASAK/c4BIg/9USIQIBD9DQIDBAUGBwABCgsMDQ4PCAkiEP3OASEUIBggFyARIA0gGP3OASAI/c4BIg39USIRIBH9DQQFBgcAAQIDDA0ODwgJCgsiEf3OASIX/VEiGCAY/Q0DBAUGBwABAgsMDQ4PCAkKIhggFyARIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiESAR/Q0CAwQFBgcAAQoLDA0ODwgJIhH9zgEiF/1RIhhBP/3NASAYQQH9ywH9UCEYIBsgFiATIA4gG/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFv1RIhogGv0NAwQFBgcAAQILDA0ODwgJCiIaIBYgEyAOIBr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIhb9USIaQT/9zQEgGkEB/csB/VAhGiAXIBMgEiALIBT9USILQT/9zQEgC0EB/csB/VAiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIS/VEiEyAT/Q0EBQYHAAECAwwNDg8ICQoLIhP9zgEiFyATIBIgCyAX/VEiCyAL/Q0DBAUGBwABAgsMDQ4PCAkKIgv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhMgE/0NAgMEBQYHAAEKCwwNDg8ICSIT/c4BIRcgGCAWIBUgDyAY/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4BIg/9USIVIBX9DQQFBgcAAQIDDA0ODwgJCgsiFf3OASIW/VEiGCAY/Q0DBAUGBwABAgsMDQ4PCAkKIhggFiAVIA8gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIP/VEiFSAV/Q0CAwQFBgcAAQoLDA0ODwgJIhX9zgEiFv1RIhhBP/3NASAYQQH9ywH9UCEYIBogGSAQIA0gGv3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiECAQ/Q0EBQYHAAECAwwNDg8ICQoLIhD9zgEiGv1RIhsgG/0NAwQFBgcAAQILDA0ODwgJCiIbIBogECANIBv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIhAgEP0NAgMEBQYHAAEKCwwNDg8ICSIQ/c4BIhr9USIbQT/9zQEgG0EB/csB/VAhGyAUIBEgDiAMIBn9USIMQT/9zQEgDEEB/csB/VAiDP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIO/VEiESAR/Q0EBQYHAAECAwwNDg8ICQoLIhH9zgEiFCARIA4gDCAU/VEiDCAM/Q0DBAUGBwABAgsMDQ4PCAkKIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhEgEf0NAgMEBQYHAAEKCwwNDg8ICSIR/c4BIRQgGiAVIBIgDCAU/VEiDEE//c0BIAxBAf3LAf1QIgz9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiEv1RIhUgFf0NBAUGBwABAgMMDQ4PCAkKCyIV/c4BIRkgFSASIAwgGf1RIgwgDP0NAwQFBgcAAQILDA0ODwgJCv3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIM/VEhEiAUIBAgDyALIBf9USILQT/9zQEgC0EB/csB/VAiC/3OASAI/c4BIg/9USIQIBD9DQQFBgcAAQIDDA0ODwgJCgsiEP3OASEUIBAgDyALIBT9USILIAv9DQMEBQYHAAECCwwNDg8ICQoiC/3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OAf1RIg8gD/0NAgMEBQYHAAEKCwwNDg8ICSEPIBggFyARIA0gGP3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEiECAQ/Q0EBQYHAAECAwwNDg8ICQoLIhD9zgEiEf1RIRUgECANIBUgFf0NAwQFBgcAAQILDA0ODwgJCv3OAf0MAAAAAAAAAAAAAAAAAAAAAP3OASIN/VEhECAbIBYgEyAOIBv9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDv1RIhMgE/0NBAUGBwABAgMMDQ4PCAkKCyIT/c4BIhX9USIWIBb9DQMEBQYHAAECCwwNDg8ICQoiFiAVIBMgDiAW/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4B/VEiDiAO/Q0CAwQFBgcAAQoLDA0ODwgJIg79zgH9USITQT/9zQEgE0EB/csB/VAhEyAOIAwgCyAUIA/9zgH9USILQT/9zQEgC0EB/csB/VAiC/3OASAH/c4BIgz9USEOIBMgGSASIBL9DQIDBAUGBwABCgsMDQ4PCAn9zgEgDyANIBP9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEiDf1RIg8gD/0NBAUGBwABAgMMDQ4PCAkKCyIP/c4BIhL9USET/QwAyb3yZ+YJagDJvfJn5glqIAwgCyARIBAgEP0NAgMEBQYHAAEKCwwNDg8ICf3OASAOIA79DQQFBgcAAQIDDA0ODwgJCgv9zgH9USILIAv9DQMEBQYHAAECCwwNDg8ICQr9zgH9DAAAAAAAAAAAAAAAAAAAAAD9zgEgEiAPIA0gEyAT/Q0DBAUGBwABAgsMDQ4PCAkK/c4B/QwAAAAAAAAAAAAAAAAAAAAA/c4B/VEiCyAL/Q0CAwQFBgcAAQoLDA0ODwgJ/c4B/VH9USIL/R0AIh0gBVogC/0dASIeIAVacg0AIBxCA3whHAwCCwsLIAUgHlYgBSAdVnEEQEIBQgCADwsgBv0dACAG/R0BIAUgHVgbCw==");
|
|
517
|
+
// src/lib/generate/wasm/asm/compute.wasm
|
|
518
|
+
var compute_default = __toBinary("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");
|
|
484
519
|
|
|
485
520
|
// src/lib/generate/wasm/worker.ts
|
|
486
521
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
@@ -705,18 +740,13 @@ precision mediump float;
|
|
|
705
740
|
#endif
|
|
706
741
|
precision highp int;out uvec4 nonce;uniform highp usampler2D src;void main(){nonce=uvec4(0u);vec2 inputSize=vec2(textureSize(src,0));vec2 texel=vec2(1.0)/inputSize;vec2 blockCoord=(floor(gl_FragCoord.xy)*2.0+vec2(0.5))/inputSize;uvec4 pixel=texture(src,blockCoord);nonce=pixel.x==0u?nonce:pixel;pixel=texture(src,blockCoord+vec2(texel.x,0.0));nonce=pixel.x==0u?nonce:pixel;pixel=texture(src,blockCoord+vec2(0.0,texel.y));nonce=pixel.x==0u?nonce:pixel;pixel=texture(src,blockCoord+vec2(texel.x,texel.y));nonce=pixel.x==0u?nonce:pixel;}`;
|
|
707
742
|
|
|
708
|
-
// src/lib/generate/webgl/shaders/
|
|
743
|
+
// src/lib/generate/webgl/shaders/draw.frag
|
|
709
744
|
var draw_default = `#version 300 es
|
|
710
745
|
#pragma vscode_glsllint_stage: frag
|
|
711
746
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
712
747
|
//! SPDX-FileContributor: Ben Green <ben@latenightsketches.com>
|
|
713
748
|
//! SPDX-License-Identifier: GPL-3.0-or-later AND MIT
|
|
714
|
-
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
715
|
-
precision highp float;
|
|
716
|
-
#else
|
|
717
|
-
precision mediump float;
|
|
718
|
-
#endif
|
|
719
|
-
layout(std140)uniform INPUT{uint hash[8];uvec2 difficulty;uvec2 seed;};out uvec4 work;void main(){work=uvec4(0u);uvec2 m0=seed ^ uvec2(gl_FragCoord);uvec2 m1=uvec2(hash[0u],hash[1u]);uvec2 m2=uvec2(hash[2u],hash[3u]);uvec2 m3=uvec2(hash[4u],hash[5u]);uvec2 m4=uvec2(hash[6u],hash[7u]);uvec2 v0=uvec2(0xF3BCC908u,0x6A09E667u);uvec2 v8=uvec2(0xF3BCC908u,0x6A09E667u);uvec2 v1=uvec2(0x84CAA73Bu,0xBB67AE85u);uvec2 v9=uvec2(0x84CAA73Bu,0xBB67AE85u);uvec2 v2=uvec2(0xFE94F82Bu,0x3C6EF372u);uvec2 v10=uvec2(0xFE94F82Bu,0x3C6EF372u);uvec2 v3=uvec2(0x5F1D36F1u,0xA54FF53Au);uvec2 v11=uvec2(0x5F1D36F1u,0xA54FF53Au);uvec2 v4=uvec2(0xADE682D1u,0x510E527Fu);uvec2 v12=uvec2(0xADE682D1u,0x510E527Fu);uvec2 v5=uvec2(0x2B3E6C1Fu,0x9B05688Cu);uvec2 v13=uvec2(0x2B3E6C1Fu,0x9B05688Cu);uvec2 v6=uvec2(0xFB41BD6Bu,0x1F83D9ABu);uvec2 v14=uvec2(0xFB41BD6Bu,0x1F83D9ABu);uvec2 v7=uvec2(0x137E2179u,0x5BE0CD19u);uvec2 v15=uvec2(0x137E2179u,0x5BE0CD19u);v0 ^=uvec2(0x01010008u,0u);v12 ^=uvec2(40u,0u);v14=~v14;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m4;v0.y+=uint(v0.x<m4.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m2;v3.y+=uint(v3.x<m2.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));uvec2 result=uvec2(0xF3BCC908u,0x6A09E667u)^ uvec2(0x01010008u,0u)^ v0 ^ v8;if(result.y>difficulty.y||(result.y==difficulty.y&&result.x>=difficulty.x)){work=uvec4(m0,result);}if(work.x==0u){discard;}}`;
|
|
749
|
+
layout(std140)uniform INPUT{uint hash[8];uvec2 difficulty;uvec2 seed;};out uvec4 work;void main(){work=uvec4(0u);uvec2 m0=seed ^ uvec2(gl_FragCoord);uvec2 m1=uvec2(hash[0u],hash[1u]);uvec2 m2=uvec2(hash[2u],hash[3u]);uvec2 m3=uvec2(hash[4u],hash[5u]);uvec2 m4=uvec2(hash[6u],hash[7u]);uvec2 v0=uvec2(0xf3bcc908u,0x6a09e667u);uvec2 v8=uvec2(0xf3bcc908u,0x6a09e667u);uvec2 v1=uvec2(0x84caa73bu,0xbb67ae85u);uvec2 v9=uvec2(0x84caa73bu,0xbb67ae85u);uvec2 v2=uvec2(0xfe94f82bu,0x3c6ef372u);uvec2 v10=uvec2(0xfe94f82bu,0x3c6ef372u);uvec2 v3=uvec2(0x5f1d36f1u,0xa54ff53au);uvec2 v11=uvec2(0x5f1d36f1u,0xa54ff53au);uvec2 v4=uvec2(0xade682d1u,0x510e527fu);uvec2 v12=uvec2(0xade682d1u,0x510e527fu);uvec2 v5=uvec2(0x2b3e6c1fu,0x9b05688cu);uvec2 v13=uvec2(0x2b3e6c1fu,0x9b05688cu);uvec2 v6=uvec2(0xfb41bd6bu,0x1f83d9abu);uvec2 v14=uvec2(0xfb41bd6bu,0x1f83d9abu);uvec2 v7=uvec2(0x137e2179u,0x5be0cd19u);uvec2 v15=uvec2(0x137e2179u,0x5be0cd19u);v0 ^=uvec2(0x01010008u,0x0u);v12 ^=uvec2(0x28u,0x0u);v14 ^=uvec2(~0x0u);v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m0;v1.y+=uint(v1.x<m0.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m0;v2.y+=uint(v2.x<m0.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m4;v0.y+=uint(v0.x<m4.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m1;v1.y+=uint(v1.x<m1.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m4;v3.y+=uint(v3.x<m4.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m2;v2.y+=uint(v2.x<m2.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m3;v3.y+=uint(v3.x<m3.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m2;v3.y+=uint(v3.x<m2.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m1;v2.y+=uint(v2.x<m1.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m2;v0.y+=uint(v0.x<m2.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v3+=m1;v3.y+=uint(v3.x<m1.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v2+=m3;v2.y+=uint(v2.x<m3.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v3+=m0;v3.y+=uint(v3.x<m0.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m0;v0.y+=uint(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m2;v1.y+=uint(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m3;v1.y+=uint(v1.x<m3.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v2+=m4;v2.y+=uint(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v1+=v6;v1.y+=uint(v1.x<v6.x);v12 ^=v1;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v11+=v12;v11.y+=uint(v11.x<v12.x);v6 ^=v11;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v3+=v4;v3.y+=uint(v3.x<v4.x);v14 ^=v3;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v9+=v14;v9.y+=uint(v9.x<v14.x);v4 ^=v9;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(24u))|(v4<<uvec2(8u)).yx;v0+=v4;v0.y+=uint(v0.x<v4.x);v12 ^=v0;v12=(v12>>uvec2(16u))|(v12<<uvec2(16u)).yx;v8+=v12;v8.y+=uint(v8.x<v12.x);v4 ^=v8;v4=(v4>>uvec2(31u)).yx|(v4<<uvec2(1u));v1+=v5;v1.y+=uint(v1.x<v5.x);v1+=m4;v1.y+=uint(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v1+=v5;v1.y+=uint(v1.x<v5.x);v13 ^=v1;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v9+=v13;v9.y+=uint(v9.x<v13.x);v5 ^=v9;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(24u))|(v6<<uvec2(8u)).yx;v2+=v6;v2.y+=uint(v2.x<v6.x);v14 ^=v2;v14=(v14>>uvec2(16u))|(v14<<uvec2(16u)).yx;v10+=v14;v10.y+=uint(v10.x<v14.x);v6 ^=v10;v6=(v6>>uvec2(31u)).yx|(v6<<uvec2(1u));v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v3+=v7;v3.y+=uint(v3.x<v7.x);v15 ^=v3;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v11+=v15;v11.y+=uint(v11.x<v15.x);v7 ^=v11;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));v0+=v5;v0.y+=uint(v0.x<v5.x);v0+=m1;v0.y+=uint(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(24u))|(v5<<uvec2(8u)).yx;v0+=v5;v0.y+=uint(v0.x<v5.x);v15 ^=v0;v15=(v15>>uvec2(16u))|(v15<<uvec2(16u)).yx;v10+=v15;v10.y+=uint(v10.x<v15.x);v5 ^=v10;v5=(v5>>uvec2(31u)).yx|(v5<<uvec2(1u));v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(24u))|(v7<<uvec2(8u)).yx;v2+=v7;v2.y+=uint(v2.x<v7.x);v13 ^=v2;v13=(v13>>uvec2(16u))|(v13<<uvec2(16u)).yx;v8+=v13;v8.y+=uint(v8.x<v13.x);v7 ^=v8;v7=(v7>>uvec2(31u)).yx|(v7<<uvec2(1u));uvec2 result=uvec2(0xf3bcc908u,0x6a09e667u)^ uvec2(0x01010008u,0x0u)^ v0 ^ v8;if(result.y>difficulty.y||(result.y==difficulty.y&&result.x>=difficulty.x)){work=uvec4(m0,result);}if(work.x==0u){discard;}}`;
|
|
720
750
|
|
|
721
751
|
// src/lib/generate/webgl/shaders/quad.vert
|
|
722
752
|
var quad_default = `#version 300 es
|
|
@@ -1079,10 +1109,8 @@ async function generate3(hash, difficulty, effort, debug) {
|
|
|
1079
1109
|
};
|
|
1080
1110
|
}
|
|
1081
1111
|
|
|
1082
|
-
// src/lib/generate/webgpu/shaders/
|
|
1083
|
-
var compute_default2 = `//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
1084
|
-
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
1085
|
-
struct INPUT{hash:array<vec4<u32>,2>,difficulty:vec2<u32>,seed:vec2<u32>};@group(0)@binding(0)var<uniform> input:INPUT;struct OUTPUT{found:atomic<u32>,work:vec2<u32>,difficulty:vec2<u32>};@group(0)@binding(1)var<storage,read_write>output:OUTPUT;const mZ=vec2(0u);var<workgroup> found:bool;var<workgroup> m1:vec2<u32>;var<workgroup> m2:vec2<u32>;var<workgroup> m3:vec2<u32>;var<workgroup> m4:vec2<u32>;var<workgroup> d:vec2<u32>;var<workgroup> seed:vec2<u32>;@compute @workgroup_size(64)fn main(@builtin(global_invocation_id)global_id:vec3<u32>,@builtin(local_invocation_id)local_id:vec3<u32>){if(local_id.x==0u){found=atomicLoad(&output.found)!=0u;seed=input.seed;m1=input.hash[0u].xy;m2=input.hash[0u].zw;m3=input.hash[1u].xy;m4=input.hash[1u].zw;d=input.difficulty;}workgroupBarrier();if(found){return;}let m0:vec2<u32>=seed ^ global_id.xy;var v0:vec2<u32>=vec2<u32>(0xF3BCC908u,0x6A09E667u);var v8:vec2<u32>=vec2<u32>(0xF3BCC908u,0x6A09E667u);var v1:vec2<u32>=vec2<u32>(0x84CAA73Bu,0xBB67AE85u);var v9:vec2<u32>=vec2<u32>(0x84CAA73Bu,0xBB67AE85u);var v2:vec2<u32>=vec2<u32>(0xFE94F82Bu,0x3C6EF372u);var v10:vec2<u32>=vec2<u32>(0xFE94F82Bu,0x3C6EF372u);var v3:vec2<u32>=vec2<u32>(0x5F1D36F1u,0xA54FF53Au);var v11:vec2<u32>=vec2<u32>(0x5F1D36F1u,0xA54FF53Au);var v4:vec2<u32>=vec2<u32>(0xADE682D1u,0x510E527Fu);var v12:vec2<u32>=vec2<u32>(0xADE682D1u,0x510E527Fu);var v5:vec2<u32>=vec2<u32>(0x2B3E6C1Fu,0x9B05688Cu);var v13:vec2<u32>=vec2<u32>(0x2B3E6C1Fu,0x9B05688Cu);var v6:vec2<u32>=vec2<u32>(0xFB41BD6Bu,0x1F83D9ABu);var v14:vec2<u32>=vec2<u32>(0xFB41BD6Bu,0x1F83D9ABu);var v7:vec2<u32>=vec2<u32>(0x137E2179u,0x5BE0CD19u);var v15:vec2<u32>=vec2<u32>(0x137E2179u,0x5BE0CD19u);v0 ^=vec2(0x01010008u,0u);v12 ^=vec2(40u,0u);v14=~v14;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m4;v0.y+=u32(v0.x<m4.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m2;v3.y+=u32(v3.x<m2.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12=(v12 ^ v1).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14=(v14 ^ v3).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12=(v12 ^ v0).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(24u))|(v4<<vec2(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2(16u))|(v12<<vec2(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2(31u)).yx|(v4<<vec2(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13=(v13 ^ v1).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14=(v14 ^ v2).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(24u))|(v6<<vec2(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2(16u))|(v14<<vec2(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2(31u)).yx|(v6<<vec2(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15=(v15 ^ v3).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15=(v15 ^ v0).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(24u))|(v5<<vec2(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2(16u))|(v15<<vec2(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2(31u)).yx|(v5<<vec2(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13=(v13 ^ v2).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(24u))|(v7<<vec2(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2(16u))|(v13<<vec2(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2(31u)).yx|(v7<<vec2(1u));let result=vec2<u32>(0xF3BCC908u,0x6A09E667u)^ vec2<u32>(0x01010008u,0u)^ v0 ^ v8;if(result.y>input.difficulty.y||(result.y==input.difficulty.y&&result.x>=input.difficulty.x)){loop{let swap=atomicCompareExchangeWeak(&output.found,0u,1u);if(swap.exchanged){output.work=m0;output.difficulty=result;break;}if(swap.old_value!=0u){break;}}return;}}`;
|
|
1112
|
+
// src/lib/generate/webgpu/shaders/compute.wgsl
|
|
1113
|
+
var compute_default2 = `struct INPUT{hash:array<vec4<u32>,2>,difficulty:vec2<u32>,seed:vec2<u32>};@group(0)@binding(0)var<uniform> input:INPUT;struct OUTPUT{found:atomic<u32>,work:vec2<u32>,difficulty:vec2<u32>};@group(0)@binding(1)var<storage,read_write>output:OUTPUT;var<workgroup> found:bool;var<workgroup> m1:vec2<u32>;var<workgroup> m2:vec2<u32>;var<workgroup> m3:vec2<u32>;var<workgroup> m4:vec2<u32>;var<workgroup> d:vec2<u32>;var<workgroup> seed:vec2<u32>;@compute @workgroup_size(64)fn main(@builtin(global_invocation_id)global_id:vec3<u32>,@builtin(local_invocation_id)local_id:vec3<u32>){if(local_id.x==0u){found=atomicLoad(&output.found)!=0u;seed=input.seed;m1=input.hash[0u].xy;m2=input.hash[0u].zw;m3=input.hash[1u].xy;m4=input.hash[1u].zw;d=input.difficulty;}workgroupBarrier();if(found){return;}let m0:vec2<u32>=seed ^ global_id.xy;var v0=vec2<u32>(0xf3bcc908u,0x6a09e667u);var v8=vec2<u32>(0xf3bcc908u,0x6a09e667u);var v1=vec2<u32>(0x84caa73bu,0xbb67ae85u);var v9=vec2<u32>(0x84caa73bu,0xbb67ae85u);var v2=vec2<u32>(0xfe94f82bu,0x3c6ef372u);var v10=vec2<u32>(0xfe94f82bu,0x3c6ef372u);var v3=vec2<u32>(0x5f1d36f1u,0xa54ff53au);var v11=vec2<u32>(0x5f1d36f1u,0xa54ff53au);var v4=vec2<u32>(0xade682d1u,0x510e527fu);var v12=vec2<u32>(0xade682d1u,0x510e527fu);var v5=vec2<u32>(0x2b3e6c1fu,0x9b05688cu);var v13=vec2<u32>(0x2b3e6c1fu,0x9b05688cu);var v6=vec2<u32>(0xfb41bd6bu,0x1f83d9abu);var v14=vec2<u32>(0xfb41bd6bu,0x1f83d9abu);var v7=vec2<u32>(0x137e2179u,0x5be0cd19u);var v15=vec2<u32>(0x137e2179u,0x5be0cd19u);v0 ^=vec2<u32>(0x01010008u,0x0u);v12 ^=vec2<u32>(0x28u,0x0u);v14 ^=vec2<u32>(~0x0u);v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m0;v1.y+=u32(v1.x<m0.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m0;v2.y+=u32(v2.x<m0.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m4;v0.y+=u32(v0.x<m4.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m1;v1.y+=u32(v1.x<m1.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m4;v3.y+=u32(v3.x<m4.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m2;v2.y+=u32(v2.x<m2.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m3;v3.y+=u32(v3.x<m3.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m2;v3.y+=u32(v3.x<m2.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m1;v2.y+=u32(v2.x<m1.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m2;v0.y+=u32(v0.x<m2.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v3+=m1;v3.y+=u32(v3.x<m1.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v2+=m3;v2.y+=u32(v2.x<m3.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v3+=m0;v3.y+=u32(v3.x<m0.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m0;v0.y+=u32(v0.x<m0.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m2;v1.y+=u32(v1.x<m2.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m3;v1.y+=u32(v1.x<m3.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v2+=m4;v2.y+=u32(v2.x<m4.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=v12.yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v1+=v6;v1.y+=u32(v1.x<v6.x);v12 ^=v1;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v11+=v12;v11.y+=u32(v11.x<v12.x);v6 ^=v11;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=v14.yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v3+=v4;v3.y+=u32(v3.x<v4.x);v14 ^=v3;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v9+=v14;v9.y+=u32(v9.x<v14.x);v4 ^=v9;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=v12.yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(24u))|(v4<<vec2<u32>(8u)).yx;v0+=v4;v0.y+=u32(v0.x<v4.x);v12 ^=v0;v12=(v12>>vec2<u32>(16u))|(v12<<vec2<u32>(16u)).yx;v8+=v12;v8.y+=u32(v8.x<v12.x);v4 ^=v8;v4=(v4>>vec2<u32>(31u)).yx|(v4<<vec2<u32>(1u));v1+=v5;v1.y+=u32(v1.x<v5.x);v1+=m4;v1.y+=u32(v1.x<m4.x);v13 ^=v1;v13=v13.yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v1+=v5;v1.y+=u32(v1.x<v5.x);v13 ^=v1;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v9+=v13;v9.y+=u32(v9.x<v13.x);v5 ^=v9;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=v14.yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(24u))|(v6<<vec2<u32>(8u)).yx;v2+=v6;v2.y+=u32(v2.x<v6.x);v14 ^=v2;v14=(v14>>vec2<u32>(16u))|(v14<<vec2<u32>(16u)).yx;v10+=v14;v10.y+=u32(v10.x<v14.x);v6 ^=v10;v6=(v6>>vec2<u32>(31u)).yx|(v6<<vec2<u32>(1u));v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=v15.yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v3+=v7;v3.y+=u32(v3.x<v7.x);v15 ^=v3;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v11+=v15;v11.y+=u32(v11.x<v15.x);v7 ^=v11;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));v0+=v5;v0.y+=u32(v0.x<v5.x);v0+=m1;v0.y+=u32(v0.x<m1.x);v15 ^=v0;v15=v15.yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(24u))|(v5<<vec2<u32>(8u)).yx;v0+=v5;v0.y+=u32(v0.x<v5.x);v15 ^=v0;v15=(v15>>vec2<u32>(16u))|(v15<<vec2<u32>(16u)).yx;v10+=v15;v10.y+=u32(v10.x<v15.x);v5 ^=v10;v5=(v5>>vec2<u32>(31u)).yx|(v5<<vec2<u32>(1u));v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=v13.yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(24u))|(v7<<vec2<u32>(8u)).yx;v2+=v7;v2.y+=u32(v2.x<v7.x);v13 ^=v2;v13=(v13>>vec2<u32>(16u))|(v13<<vec2<u32>(16u)).yx;v8+=v13;v8.y+=u32(v8.x<v13.x);v7 ^=v8;v7=(v7>>vec2<u32>(31u)).yx|(v7<<vec2<u32>(1u));let result=vec2<u32>(0xf3bcc908u,0x6a09e667u)^ vec2<u32>(0x01010008u,0x0u)^ v0 ^ v8;if(result.y>input.difficulty.y||(result.y==input.difficulty.y&&result.x>=input.difficulty.x)){loop{let swap=atomicCompareExchangeWeak(&output.found,0u,1u);if(swap.exchanged){output.work=m0;output.difficulty=result;break;}if(swap.old_value!=0u){break;}}return;}}`;
|
|
1086
1114
|
|
|
1087
1115
|
// src/lib/generate/webgpu/index.ts
|
|
1088
1116
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
@@ -1470,23 +1498,28 @@ var NanoPowConfig = (options) => {
|
|
|
1470
1498
|
// src/lib/index.ts
|
|
1471
1499
|
//! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
|
|
1472
1500
|
//! SPDX-License-Identifier: GPL-3.0-or-later
|
|
1501
|
+
var logger6 = new Logger();
|
|
1473
1502
|
var q2 = new Queue();
|
|
1474
1503
|
async function work_generate(hash, options) {
|
|
1475
1504
|
return q2.add(async () => {
|
|
1476
1505
|
try {
|
|
1477
1506
|
const { api, debug, difficulty, effort } = await NanoPowConfig(options);
|
|
1507
|
+
const cached = Cache.search(hash, difficulty);
|
|
1508
|
+
if (cached) {
|
|
1509
|
+
return cached;
|
|
1510
|
+
}
|
|
1478
1511
|
switch (api) {
|
|
1479
1512
|
case "webgpu": {
|
|
1480
|
-
return generate4(bigintFrom(hash, "hex"), difficulty, effort, debug);
|
|
1513
|
+
return Cache.store(await generate4(bigintFrom(hash, "hex"), difficulty, effort, debug));
|
|
1481
1514
|
}
|
|
1482
1515
|
case "webgl": {
|
|
1483
|
-
return generate3(bigintFrom(hash, "hex"), difficulty, effort, debug);
|
|
1516
|
+
return Cache.store(await generate3(bigintFrom(hash, "hex"), difficulty, effort, debug));
|
|
1484
1517
|
}
|
|
1485
1518
|
case "wasm": {
|
|
1486
|
-
return generate2(bigintFrom(hash, "hex"), difficulty, effort, debug);
|
|
1519
|
+
return Cache.store(await generate2(bigintFrom(hash, "hex"), difficulty, effort, debug));
|
|
1487
1520
|
}
|
|
1488
1521
|
default: {
|
|
1489
|
-
return generate(bigintFrom(hash, "hex"), difficulty, debug);
|
|
1522
|
+
return Cache.store(await generate(bigintFrom(hash, "hex"), difficulty, debug));
|
|
1490
1523
|
}
|
|
1491
1524
|
}
|
|
1492
1525
|
} catch (e) {
|
|
@@ -1496,8 +1529,10 @@ async function work_generate(hash, options) {
|
|
|
1496
1529
|
}
|
|
1497
1530
|
async function work_validate(work, hash, options) {
|
|
1498
1531
|
try {
|
|
1532
|
+
const bigintHash = bigintFrom(hash, "hex");
|
|
1533
|
+
const bigintWork = bigintFrom(work, "hex");
|
|
1499
1534
|
const { debug, difficulty } = await NanoPowConfig(options);
|
|
1500
|
-
const result2 = await validate(
|
|
1535
|
+
const result2 = await validate(bigintWork, bigintHash, difficulty, debug);
|
|
1501
1536
|
return result2;
|
|
1502
1537
|
} catch (e) {
|
|
1503
1538
|
return { error: typeof e === "string" ? e : e?.message ?? "" };
|
package/docs/blake2.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Twelve rounds of G mixing as part of BLAKE2b compression step, each divided into eight subprocesses. Each subprocess applies transformations to `m` and `v` variables based on a defined set of index inputs. The algorithm for each subprocess is defined as ollows:
|
|
2
|
+
|
|
3
|
+
* r is the current round
|
|
4
|
+
* i is the current subprocess within that round
|
|
5
|
+
* a, b, c, d are elements of `v` at specific indexes
|
|
6
|
+
* sigma is a defined set of array indexes for `m`
|
|
7
|
+
* rotr64 is a right-hand bit rotation function
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
a = a + b
|
|
11
|
+
a = a + m[sigma[r][2*i+0]]
|
|
12
|
+
d = rotr64(d ^ a, 32)
|
|
13
|
+
c = c + d
|
|
14
|
+
b = rotr64(b ^ c, 24)
|
|
15
|
+
a = a + b
|
|
16
|
+
a = a + m[sigma[r][2*i+1]]
|
|
17
|
+
d = rotr64(d ^ a, 16)
|
|
18
|
+
c = c + d
|
|
19
|
+
b = rotr64(b ^ c, 63)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Each sum step has an extra carry addition. Note that the m[sigma] sum is skipped if m[sigma] is zero since it effectively does nothing. Also note that rotations must be applied differently from the reference implementation due to the lack of both a native rotate function and 64-bit support in WGSL.
|
|
23
|
+
|
|
24
|
+
Subprocesses 1-4 are entirely independent of each other, as are subprocesses 5-8, and so an opportunity to compute in parallel presents itself. However, testing showed this to be ineffective at improving performance.
|
|
25
|
+
|
|
26
|
+
These subprocesses could also be parallelized by pairing variables of two different hash processes and packing them into vectors (i.e. a uvec2 for high and low bits of a u64 into a uvec4). Think of it as a two lane highway where traffic in one lane has entirely different cars than the other, but they both are travelling toward the same destination. Once again, however, testing showed this to have a neglible effect.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nano-pow",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Proof-of-work generation and validation with WebGPU/WebGL/WASM for Nano cryptocurrency.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nemo",
|
|
@@ -47,17 +47,14 @@
|
|
|
47
47
|
"url": "git+https://zoso.dev/nano-pow.git"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
|
-
"asgenerate": "cd src/lib/generate/wasm/asm && rm -rf build && tsc && node build/generate.js > build/index.ts && cp tsconfig.json* build",
|
|
51
50
|
"benchmark": "npm run build && ./dist/bin/nano-pow.sh --benchmark 10 --debug",
|
|
52
|
-
"build": "rm -rf {dist,types} && tsc && npm run generate &&
|
|
51
|
+
"build": "rm -rf {dist,types} && tsc && npm run generate && node esbuild.mjs && cp -p src/bin/nano-pow.sh dist/bin",
|
|
53
52
|
"build:dev": "NODE_ENV=development npm run build",
|
|
54
|
-
"generate": "
|
|
55
|
-
"glgenerate": "cd src/lib/generate/webgl/shaders && rm -rf build && tsc && node build/generate.js > build/draw.frag && cp tsconfig.json* build",
|
|
56
|
-
"gpugenerate": "cd src/lib/generate/webgpu/shaders && rm -rf build && tsc && node build/generate.js > build/compute.wgsl && cp tsconfig.json* build",
|
|
53
|
+
"generate": "node ./scripts/blake2b-gen.js && asc src/lib/generate/wasm/asm/index.ts",
|
|
57
54
|
"prepare": "npm run build",
|
|
58
|
-
"score": "npm run build && ./dist/bin/nano-pow.sh --effort 4 --benchmark
|
|
55
|
+
"score": "npm run build && ./dist/bin/nano-pow.sh --effort 4 --benchmark 10 --score 10",
|
|
59
56
|
"start": "node --max-http-header-size=1024 --max-old-space-size=256 ./dist/bin/server.js",
|
|
60
|
-
"test": "npm run build && ./test/script.sh"
|
|
57
|
+
"test": "npm run build:dev && ./test/script.sh"
|
|
61
58
|
},
|
|
62
59
|
"devDependencies": {
|
|
63
60
|
"@types/node": "^24.0.3",
|