velocious 1.0.643 → 1.0.644
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/README.md +10 -1
- package/build/src/sync/assets/cache.d.ts +288 -0
- package/build/src/sync/assets/cache.d.ts.map +1 -0
- package/build/src/sync/assets/cache.js +883 -0
- package/build/src/sync/assets/types.d.ts +199 -0
- package/build/src/sync/assets/types.d.ts.map +1 -0
- package/build/src/sync/assets/types.js +56 -0
- package/build/src/testing/test-runner.d.ts +8 -0
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +49 -548
- package/build/src/testing/velocious-attempt-executor.d.ts +69 -0
- package/build/src/testing/velocious-attempt-executor.d.ts.map +1 -0
- package/build/src/testing/velocious-attempt-executor.js +402 -0
- package/build/src/testing/velocious-runner-reporter.d.ts +72 -0
- package/build/src/testing/velocious-runner-reporter.d.ts.map +1 -0
- package/build/src/testing/velocious-runner-reporter.js +152 -0
- package/build/src/testing/velocious-suite-hook-executor.d.ts +37 -0
- package/build/src/testing/velocious-suite-hook-executor.d.ts.map +1 -0
- package/build/src/testing/velocious-suite-hook-executor.js +66 -0
- package/build/src/testing/velocious-test-arguments.d.ts +34 -0
- package/build/src/testing/velocious-test-arguments.d.ts.map +1 -0
- package/build/src/testing/velocious-test-arguments.js +47 -0
- package/build/src/utils/sha256-bytes-hex.d.ts +7 -0
- package/build/src/utils/sha256-bytes-hex.d.ts.map +1 -0
- package/build/src/utils/sha256-bytes-hex.js +117 -0
- package/build/src/utils/sha256-hex.d.ts +2 -4
- package/build/src/utils/sha256-hex.d.ts.map +1 -1
- package/build/src/utils/sha256-hex.js +6 -120
- package/build/sync/assets/cache.js +998 -0
- package/build/sync/assets/types.js +62 -0
- package/build/testing/test-runner.js +46 -584
- package/build/testing/velocious-attempt-executor.js +431 -0
- package/build/testing/velocious-runner-reporter.js +166 -0
- package/build/testing/velocious-suite-hook-executor.js +71 -0
- package/build/testing/velocious-test-arguments.js +55 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/utils/sha256-bytes-hex.js +132 -0
- package/build/utils/sha256-hex.js +7 -135
- package/package.json +1 -1
- package/src/sync/assets/cache.js +998 -0
- package/src/sync/assets/types.js +62 -0
- package/src/testing/test-runner.js +46 -584
- package/src/testing/velocious-attempt-executor.js +431 -0
- package/src/testing/velocious-runner-reporter.js +166 -0
- package/src/testing/velocious-suite-hook-executor.js +71 -0
- package/src/testing/velocious-test-arguments.js +55 -0
- package/src/utils/sha256-bytes-hex.js +132 -0
- package/src/utils/sha256-hex.js +7 -135
|
@@ -1,126 +1,12 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import sha256BytesHex from "./sha256-bytes-hex.js";
|
|
1
3
|
/**
|
|
2
4
|
* Computes SHA-256 without importing Node-only crypto modules, keeping this
|
|
3
|
-
* module safe for Expo/browser bundles.
|
|
4
|
-
* pure-JavaScript SHA-256 derived from FIPS 180-4, using only 32-bit unsigned
|
|
5
|
-
* integer arithmetic.
|
|
5
|
+
* module safe for Expo/browser bundles.
|
|
6
6
|
* @param {string} message - UTF-8 message.
|
|
7
|
-
* @returns {string}
|
|
7
|
+
* @returns {string} Hex digest.
|
|
8
8
|
*/
|
|
9
9
|
export default function sha256Hex(message) {
|
|
10
|
-
|
|
11
|
-
const padded = [...bytes];
|
|
12
|
-
const bitLength = bytes.length * 8;
|
|
13
|
-
const hash = [...SHA256_INITIAL_HASH];
|
|
14
|
-
/** @type {number[]} */
|
|
15
|
-
const words = new Array(64);
|
|
16
|
-
padded.push(0x80);
|
|
17
|
-
while (padded.length % 64 !== 56)
|
|
18
|
-
padded.push(0);
|
|
19
|
-
const highLength = Math.floor(bitLength / 0x100000000);
|
|
20
|
-
const lowLength = bitLength >>> 0;
|
|
21
|
-
for (const value of [highLength, lowLength]) {
|
|
22
|
-
padded.push((value >>> 24) & 0xff, (value >>> 16) & 0xff, (value >>> 8) & 0xff, value & 0xff);
|
|
23
|
-
}
|
|
24
|
-
for (let offset = 0; offset < padded.length; offset += 64) {
|
|
25
|
-
for (let i = 0; i < 16; i++) {
|
|
26
|
-
const index = offset + (i * 4);
|
|
27
|
-
words[i] = (((padded[index] || 0) << 24) | ((padded[index + 1] || 0) << 16) | ((padded[index + 2] || 0) << 8) | (padded[index + 3] || 0)) >>> 0;
|
|
28
|
-
}
|
|
29
|
-
for (let i = 16; i < 64; i++) {
|
|
30
|
-
const s0 = rotateRight(words[i - 15], 7) ^ rotateRight(words[i - 15], 18) ^ (words[i - 15] >>> 3);
|
|
31
|
-
const s1 = rotateRight(words[i - 2], 17) ^ rotateRight(words[i - 2], 19) ^ (words[i - 2] >>> 10);
|
|
32
|
-
words[i] = add32(words[i - 16], s0, words[i - 7], s1);
|
|
33
|
-
}
|
|
34
|
-
let [a, b, c, d, e, f, g, h] = hash;
|
|
35
|
-
for (let i = 0; i < 64; i++) {
|
|
36
|
-
const s1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);
|
|
37
|
-
const ch = (e & f) ^ ((~e) & g);
|
|
38
|
-
const temp1 = add32(h, s1, ch, SHA256_K[i], words[i]);
|
|
39
|
-
const s0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);
|
|
40
|
-
const maj = (a & b) ^ (a & c) ^ (b & c);
|
|
41
|
-
const temp2 = add32(s0, maj);
|
|
42
|
-
h = g;
|
|
43
|
-
g = f;
|
|
44
|
-
f = e;
|
|
45
|
-
e = add32(d, temp1);
|
|
46
|
-
d = c;
|
|
47
|
-
c = b;
|
|
48
|
-
b = a;
|
|
49
|
-
a = add32(temp1, temp2);
|
|
50
|
-
}
|
|
51
|
-
hash[0] = add32(hash[0], a);
|
|
52
|
-
hash[1] = add32(hash[1], b);
|
|
53
|
-
hash[2] = add32(hash[2], c);
|
|
54
|
-
hash[3] = add32(hash[3], d);
|
|
55
|
-
hash[4] = add32(hash[4], e);
|
|
56
|
-
hash[5] = add32(hash[5], f);
|
|
57
|
-
hash[6] = add32(hash[6], g);
|
|
58
|
-
hash[7] = add32(hash[7], h);
|
|
59
|
-
}
|
|
60
|
-
return hash.map((value) => value.toString(16).padStart(8, "0")).join("");
|
|
10
|
+
return sha256BytesHex(new TextEncoder().encode(message));
|
|
61
11
|
}
|
|
62
|
-
|
|
63
|
-
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
|
|
64
|
-
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
|
|
65
|
-
];
|
|
66
|
-
const SHA256_K = [
|
|
67
|
-
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
|
68
|
-
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
69
|
-
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
|
70
|
-
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
71
|
-
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
|
|
72
|
-
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
73
|
-
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
|
|
74
|
-
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
75
|
-
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
|
76
|
-
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
77
|
-
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
|
|
78
|
-
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
79
|
-
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
|
|
80
|
-
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
81
|
-
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
|
82
|
-
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
|
83
|
-
];
|
|
84
|
-
/**
|
|
85
|
-
* Converts a string to UTF-8 bytes.
|
|
86
|
-
* @param {string} value - String value.
|
|
87
|
-
* @returns {number[]} - UTF-8 bytes.
|
|
88
|
-
*/
|
|
89
|
-
function utf8Bytes(value) {
|
|
90
|
-
/** @type {number[]} */
|
|
91
|
-
const bytes = [];
|
|
92
|
-
for (const character of value) {
|
|
93
|
-
const codePoint = /** @type {number} */ (character.codePointAt(0));
|
|
94
|
-
if (codePoint <= 0x7f) {
|
|
95
|
-
bytes.push(codePoint);
|
|
96
|
-
}
|
|
97
|
-
else if (codePoint <= 0x7ff) {
|
|
98
|
-
bytes.push(0xc0 | (codePoint >>> 6), 0x80 | (codePoint & 0x3f));
|
|
99
|
-
}
|
|
100
|
-
else if (codePoint <= 0xffff) {
|
|
101
|
-
bytes.push(0xe0 | (codePoint >>> 12), 0x80 | ((codePoint >>> 6) & 0x3f), 0x80 | (codePoint & 0x3f));
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
bytes.push(0xf0 | (codePoint >>> 18), 0x80 | ((codePoint >>> 12) & 0x3f), 0x80 | ((codePoint >>> 6) & 0x3f), 0x80 | (codePoint & 0x3f));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return bytes;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Adds unsigned 32-bit integers.
|
|
111
|
-
* @param {...number} values - Values to add.
|
|
112
|
-
* @returns {number} - Unsigned 32-bit result.
|
|
113
|
-
*/
|
|
114
|
-
function add32(...values) {
|
|
115
|
-
return values.reduce((sum, value) => (sum + value) >>> 0, 0);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Rotates a 32-bit integer right.
|
|
119
|
-
* @param {number} value - Value to rotate.
|
|
120
|
-
* @param {number} bits - Bit count.
|
|
121
|
-
* @returns {number} - Rotated value.
|
|
122
|
-
*/
|
|
123
|
-
function rotateRight(value, bits) {
|
|
124
|
-
return (value >>> bits) | (value << (32 - bits));
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhMjU2LWhleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9zaGEyNTYtaGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsT0FBTyxVQUFVLFNBQVMsQ0FBQyxPQUFPO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7SUFDekIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDbEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUE7SUFDckMsdUJBQXVCO0lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRTNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakIsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFO1FBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQTtJQUN0RCxNQUFNLFNBQVMsR0FBRyxTQUFTLEtBQUssQ0FBQyxDQUFBO0lBRWpDLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQsS0FBSyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzFELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QixNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFFOUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakosQ0FBQztRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDakcsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBRWhHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN2RCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUE7UUFFbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ3RFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQy9CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDckQsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDdEUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDdkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUU1QixDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ0wsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNMLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDTCxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNuQixDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ0wsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNMLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDTCxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6QixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQzFFLENBQUM7QUFFRCxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtDQUMvQyxDQUFBO0FBRUQsTUFBTSxRQUFRLEdBQUc7SUFDZixVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0NBQy9DLENBQUE7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxTQUFTLENBQUMsS0FBSztJQUN0Qix1QkFBdUI7SUFDdkIsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFBO0lBRWhCLEtBQUssTUFBTSxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbEUsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN2QixDQUFDO2FBQU0sSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7WUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDakUsQ0FBQzthQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3JHLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDekksQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxLQUFLLENBQUMsR0FBRyxNQUFNO0lBQ3RCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUM5RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSTtJQUM5QixPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcHV0ZXMgU0hBLTI1NiB3aXRob3V0IGltcG9ydGluZyBOb2RlLW9ubHkgY3J5cHRvIG1vZHVsZXMsIGtlZXBpbmcgdGhpc1xuICogbW9kdWxlIHNhZmUgZm9yIEV4cG8vYnJvd3NlciBidW5kbGVzLiBJbXBsZW1lbnRhdGlvbiBpcyBhIHN0cmFpZ2h0Zm9yd2FyZFxuICogcHVyZS1KYXZhU2NyaXB0IFNIQS0yNTYgZGVyaXZlZCBmcm9tIEZJUFMgMTgwLTQsIHVzaW5nIG9ubHkgMzItYml0IHVuc2lnbmVkXG4gKiBpbnRlZ2VyIGFyaXRobWV0aWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFVURi04IG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIEhleCBkaWdlc3QuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNoYTI1NkhleChtZXNzYWdlKSB7XG4gIGNvbnN0IGJ5dGVzID0gdXRmOEJ5dGVzKG1lc3NhZ2UpXG4gIGNvbnN0IHBhZGRlZCA9IFsuLi5ieXRlc11cbiAgY29uc3QgYml0TGVuZ3RoID0gYnl0ZXMubGVuZ3RoICogOFxuICBjb25zdCBoYXNoID0gWy4uLlNIQTI1Nl9JTklUSUFMX0hBU0hdXG4gIC8qKiBAdHlwZSB7bnVtYmVyW119ICovXG4gIGNvbnN0IHdvcmRzID0gbmV3IEFycmF5KDY0KVxuXG4gIHBhZGRlZC5wdXNoKDB4ODApXG4gIHdoaWxlIChwYWRkZWQubGVuZ3RoICUgNjQgIT09IDU2KSBwYWRkZWQucHVzaCgwKVxuXG4gIGNvbnN0IGhpZ2hMZW5ndGggPSBNYXRoLmZsb29yKGJpdExlbmd0aCAvIDB4MTAwMDAwMDAwKVxuICBjb25zdCBsb3dMZW5ndGggPSBiaXRMZW5ndGggPj4+IDBcblxuICBmb3IgKGNvbnN0IHZhbHVlIG9mIFtoaWdoTGVuZ3RoLCBsb3dMZW5ndGhdKSB7XG4gICAgcGFkZGVkLnB1c2goKHZhbHVlID4+PiAyNCkgJiAweGZmLCAodmFsdWUgPj4+IDE2KSAmIDB4ZmYsICh2YWx1ZSA+Pj4gOCkgJiAweGZmLCB2YWx1ZSAmIDB4ZmYpXG4gIH1cblxuICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBwYWRkZWQubGVuZ3RoOyBvZmZzZXQgKz0gNjQpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gb2Zmc2V0ICsgKGkgKiA0KVxuXG4gICAgICB3b3Jkc1tpXSA9ICgoKHBhZGRlZFtpbmRleF0gfHwgMCkgPDwgMjQpIHwgKChwYWRkZWRbaW5kZXggKyAxXSB8fCAwKSA8PCAxNikgfCAoKHBhZGRlZFtpbmRleCArIDJdIHx8IDApIDw8IDgpIHwgKHBhZGRlZFtpbmRleCArIDNdIHx8IDApKSA+Pj4gMFxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAxNjsgaSA8IDY0OyBpKyspIHtcbiAgICAgIGNvbnN0IHMwID0gcm90YXRlUmlnaHQod29yZHNbaSAtIDE1XSwgNykgXiByb3RhdGVSaWdodCh3b3Jkc1tpIC0gMTVdLCAxOCkgXiAod29yZHNbaSAtIDE1XSA+Pj4gMylcbiAgICAgIGNvbnN0IHMxID0gcm90YXRlUmlnaHQod29yZHNbaSAtIDJdLCAxNykgXiByb3RhdGVSaWdodCh3b3Jkc1tpIC0gMl0sIDE5KSBeICh3b3Jkc1tpIC0gMl0gPj4+IDEwKVxuXG4gICAgICB3b3Jkc1tpXSA9IGFkZDMyKHdvcmRzW2kgLSAxNl0sIHMwLCB3b3Jkc1tpIC0gN10sIHMxKVxuICAgIH1cblxuICAgIGxldCBbYSwgYiwgYywgZCwgZSwgZiwgZywgaF0gPSBoYXNoXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDY0OyBpKyspIHtcbiAgICAgIGNvbnN0IHMxID0gcm90YXRlUmlnaHQoZSwgNikgXiByb3RhdGVSaWdodChlLCAxMSkgXiByb3RhdGVSaWdodChlLCAyNSlcbiAgICAgIGNvbnN0IGNoID0gKGUgJiBmKSBeICgofmUpICYgZylcbiAgICAgIGNvbnN0IHRlbXAxID0gYWRkMzIoaCwgczEsIGNoLCBTSEEyNTZfS1tpXSwgd29yZHNbaV0pXG4gICAgICBjb25zdCBzMCA9IHJvdGF0ZVJpZ2h0KGEsIDIpIF4gcm90YXRlUmlnaHQoYSwgMTMpIF4gcm90YXRlUmlnaHQoYSwgMjIpXG4gICAgICBjb25zdCBtYWogPSAoYSAmIGIpIF4gKGEgJiBjKSBeIChiICYgYylcbiAgICAgIGNvbnN0IHRlbXAyID0gYWRkMzIoczAsIG1hailcblxuICAgICAgaCA9IGdcbiAgICAgIGcgPSBmXG4gICAgICBmID0gZVxuICAgICAgZSA9IGFkZDMyKGQsIHRlbXAxKVxuICAgICAgZCA9IGNcbiAgICAgIGMgPSBiXG4gICAgICBiID0gYVxuICAgICAgYSA9IGFkZDMyKHRlbXAxLCB0ZW1wMilcbiAgICB9XG5cbiAgICBoYXNoWzBdID0gYWRkMzIoaGFzaFswXSwgYSlcbiAgICBoYXNoWzFdID0gYWRkMzIoaGFzaFsxXSwgYilcbiAgICBoYXNoWzJdID0gYWRkMzIoaGFzaFsyXSwgYylcbiAgICBoYXNoWzNdID0gYWRkMzIoaGFzaFszXSwgZClcbiAgICBoYXNoWzRdID0gYWRkMzIoaGFzaFs0XSwgZSlcbiAgICBoYXNoWzVdID0gYWRkMzIoaGFzaFs1XSwgZilcbiAgICBoYXNoWzZdID0gYWRkMzIoaGFzaFs2XSwgZylcbiAgICBoYXNoWzddID0gYWRkMzIoaGFzaFs3XSwgaClcbiAgfVxuXG4gIHJldHVybiBoYXNoLm1hcCgodmFsdWUpID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIikpLmpvaW4oXCJcIilcbn1cblxuY29uc3QgU0hBMjU2X0lOSVRJQUxfSEFTSCA9IFtcbiAgMHg2YTA5ZTY2NywgMHhiYjY3YWU4NSwgMHgzYzZlZjM3MiwgMHhhNTRmZjUzYSxcbiAgMHg1MTBlNTI3ZiwgMHg5YjA1Njg4YywgMHgxZjgzZDlhYiwgMHg1YmUwY2QxOVxuXVxuXG5jb25zdCBTSEEyNTZfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSxcbiAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSxcbiAgMHhkODA3YWE5OCwgMHgxMjgzNWIwMSwgMHgyNDMxODViZSwgMHg1NTBjN2RjMyxcbiAgMHg3MmJlNWQ3NCwgMHg4MGRlYjFmZSwgMHg5YmRjMDZhNywgMHhjMTliZjE3NCxcbiAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYyxcbiAgMHgyZGU5MmM2ZiwgMHg0YTc0ODRhYSwgMHg1Y2IwYTlkYywgMHg3NmY5ODhkYSxcbiAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNyxcbiAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN2I3MGE4NSwgMHgyZTFiMjEzOCwgMHg0ZDJjNmRmYywgMHg1MzM4MGQxMyxcbiAgMHg2NTBhNzM1NCwgMHg3NjZhMGFiYiwgMHg4MWMyYzkyZSwgMHg5MjcyMmM4NSxcbiAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMyxcbiAgMHhkMTkyZTgxOSwgMHhkNjk5MDYyNCwgMHhmNDBlMzU4NSwgMHgxMDZhYTA3MCxcbiAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSxcbiAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMyxcbiAgMHg3NDhmODJlZSwgMHg3OGE1NjM2ZiwgMHg4NGM4NzgxNCwgMHg4Y2M3MDIwOCxcbiAgMHg5MGJlZmZmYSwgMHhhNDUwNmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMlxuXVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIFVURi04IGJ5dGVzLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gU3RyaW5nIHZhbHVlLlxuICogQHJldHVybnMge251bWJlcltdfSAtIFVURi04IGJ5dGVzLlxuICovXG5mdW5jdGlvbiB1dGY4Qnl0ZXModmFsdWUpIHtcbiAgLyoqIEB0eXBlIHtudW1iZXJbXX0gKi9cbiAgY29uc3QgYnl0ZXMgPSBbXVxuXG4gIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mIHZhbHVlKSB7XG4gICAgY29uc3QgY29kZVBvaW50ID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChjaGFyYWN0ZXIuY29kZVBvaW50QXQoMCkpXG5cbiAgICBpZiAoY29kZVBvaW50IDw9IDB4N2YpIHtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDw9IDB4N2ZmKSB7XG4gICAgICBieXRlcy5wdXNoKDB4YzAgfCAoY29kZVBvaW50ID4+PiA2KSwgMHg4MCB8IChjb2RlUG9pbnQgJiAweDNmKSlcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8PSAweGZmZmYpIHtcbiAgICAgIGJ5dGVzLnB1c2goMHhlMCB8IChjb2RlUG9pbnQgPj4+IDEyKSwgMHg4MCB8ICgoY29kZVBvaW50ID4+PiA2KSAmIDB4M2YpLCAweDgwIHwgKGNvZGVQb2ludCAmIDB4M2YpKVxuICAgIH0gZWxzZSB7XG4gICAgICBieXRlcy5wdXNoKDB4ZjAgfCAoY29kZVBvaW50ID4+PiAxOCksIDB4ODAgfCAoKGNvZGVQb2ludCA+Pj4gMTIpICYgMHgzZiksIDB4ODAgfCAoKGNvZGVQb2ludCA+Pj4gNikgJiAweDNmKSwgMHg4MCB8IChjb2RlUG9pbnQgJiAweDNmKSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuLyoqXG4gKiBBZGRzIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2Vycy5cbiAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YWx1ZXMgLSBWYWx1ZXMgdG8gYWRkLlxuICogQHJldHVybnMge251bWJlcn0gLSBVbnNpZ25lZCAzMi1iaXQgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBhZGQzMiguLi52YWx1ZXMpIHtcbiAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoKHN1bSwgdmFsdWUpID0+IChzdW0gKyB2YWx1ZSkgPj4+IDAsIDApXG59XG5cbi8qKlxuICogUm90YXRlcyBhIDMyLWJpdCBpbnRlZ2VyIHJpZ2h0LlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gVmFsdWUgdG8gcm90YXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdHMgLSBCaXQgY291bnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIFJvdGF0ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHJvdGF0ZVJpZ2h0KHZhbHVlLCBiaXRzKSB7XG4gIHJldHVybiAodmFsdWUgPj4+IGJpdHMpIHwgKHZhbHVlIDw8ICgzMiAtIGJpdHMpKVxufVxuIl19
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhMjU2LWhleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9zaGEyNTYtaGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsU0FBUyxDQUFDLE9BQU87SUFDdkMsT0FBTyxjQUFjLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBzaGEyNTZCeXRlc0hleCBmcm9tIFwiLi9zaGEyNTYtYnl0ZXMtaGV4LmpzXCJcblxuLyoqXG4gKiBDb21wdXRlcyBTSEEtMjU2IHdpdGhvdXQgaW1wb3J0aW5nIE5vZGUtb25seSBjcnlwdG8gbW9kdWxlcywga2VlcGluZyB0aGlzXG4gKiBtb2R1bGUgc2FmZSBmb3IgRXhwby9icm93c2VyIGJ1bmRsZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFVURi04IG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBIZXggZGlnZXN0LlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzaGEyNTZIZXgobWVzc2FnZSkge1xuICByZXR1cm4gc2hhMjU2Qnl0ZXNIZXgobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKG1lc3NhZ2UpKVxufVxuIl19
|