初始化环境文件

This commit is contained in:
CN-JS-HuiBai
2026-04-04 12:49:09 +08:00
parent 07742d2688
commit c607af6fac
5971 changed files with 515160 additions and 18 deletions

164
node_modules/@aws-crypto/sha256-js/src/RawSha256.ts generated vendored Normal file
View File

@@ -0,0 +1,164 @@
import {
BLOCK_SIZE,
DIGEST_LENGTH,
INIT,
KEY,
MAX_HASHABLE_LENGTH
} from "./constants";
/**
* @internal
*/
export class RawSha256 {
private state: Int32Array = Int32Array.from(INIT);
private temp: Int32Array = new Int32Array(64);
private buffer: Uint8Array = new Uint8Array(64);
private bufferLength: number = 0;
private bytesHashed: number = 0;
/**
* @internal
*/
finished: boolean = false;
update(data: Uint8Array): void {
if (this.finished) {
throw new Error("Attempted to update an already finished hash.");
}
let position = 0;
let { byteLength } = data;
this.bytesHashed += byteLength;
if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {
throw new Error("Cannot hash more than 2^53 - 1 bits");
}
while (byteLength > 0) {
this.buffer[this.bufferLength++] = data[position++];
byteLength--;
if (this.bufferLength === BLOCK_SIZE) {
this.hashBuffer();
this.bufferLength = 0;
}
}
}
digest(): Uint8Array {
if (!this.finished) {
const bitsHashed = this.bytesHashed * 8;
const bufferView = new DataView(
this.buffer.buffer,
this.buffer.byteOffset,
this.buffer.byteLength
);
const undecoratedLength = this.bufferLength;
bufferView.setUint8(this.bufferLength++, 0x80);
// Ensure the final block has enough room for the hashed length
if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {
for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {
bufferView.setUint8(i, 0);
}
this.hashBuffer();
this.bufferLength = 0;
}
for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {
bufferView.setUint8(i, 0);
}
bufferView.setUint32(
BLOCK_SIZE - 8,
Math.floor(bitsHashed / 0x100000000),
true
);
bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);
this.hashBuffer();
this.finished = true;
}
// The value in state is little-endian rather than big-endian, so flip
// each word into a new Uint8Array
const out = new Uint8Array(DIGEST_LENGTH);
for (let i = 0; i < 8; i++) {
out[i * 4] = (this.state[i] >>> 24) & 0xff;
out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;
out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;
out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;
}
return out;
}
private hashBuffer(): void {
const { buffer, state } = this;
let state0 = state[0],
state1 = state[1],
state2 = state[2],
state3 = state[3],
state4 = state[4],
state5 = state[5],
state6 = state[6],
state7 = state[7];
for (let i = 0; i < BLOCK_SIZE; i++) {
if (i < 16) {
this.temp[i] =
((buffer[i * 4] & 0xff) << 24) |
((buffer[i * 4 + 1] & 0xff) << 16) |
((buffer[i * 4 + 2] & 0xff) << 8) |
(buffer[i * 4 + 3] & 0xff);
} else {
let u = this.temp[i - 2];
const t1 =
((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);
u = this.temp[i - 15];
const t2 =
((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);
this.temp[i] =
((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);
}
const t1 =
((((((state4 >>> 6) | (state4 << 26)) ^
((state4 >>> 11) | (state4 << 21)) ^
((state4 >>> 25) | (state4 << 7))) +
((state4 & state5) ^ (~state4 & state6))) |
0) +
((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |
0;
const t2 =
((((state0 >>> 2) | (state0 << 30)) ^
((state0 >>> 13) | (state0 << 19)) ^
((state0 >>> 22) | (state0 << 10))) +
((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |
0;
state7 = state6;
state6 = state5;
state5 = state4;
state4 = (state3 + t1) | 0;
state3 = state2;
state2 = state1;
state1 = state0;
state0 = (t1 + t2) | 0;
}
state[0] += state0;
state[1] += state1;
state[2] += state2;
state[3] += state3;
state[4] += state4;
state[5] += state5;
state[6] += state6;
state[7] += state7;
}
}

98
node_modules/@aws-crypto/sha256-js/src/constants.ts generated vendored Normal file
View File

@@ -0,0 +1,98 @@
/**
* @internal
*/
export const BLOCK_SIZE: number = 64;
/**
* @internal
*/
export const DIGEST_LENGTH: number = 32;
/**
* @internal
*/
export const KEY = new Uint32Array([
0x428a2f98,
0x71374491,
0xb5c0fbcf,
0xe9b5dba5,
0x3956c25b,
0x59f111f1,
0x923f82a4,
0xab1c5ed5,
0xd807aa98,
0x12835b01,
0x243185be,
0x550c7dc3,
0x72be5d74,
0x80deb1fe,
0x9bdc06a7,
0xc19bf174,
0xe49b69c1,
0xefbe4786,
0x0fc19dc6,
0x240ca1cc,
0x2de92c6f,
0x4a7484aa,
0x5cb0a9dc,
0x76f988da,
0x983e5152,
0xa831c66d,
0xb00327c8,
0xbf597fc7,
0xc6e00bf3,
0xd5a79147,
0x06ca6351,
0x14292967,
0x27b70a85,
0x2e1b2138,
0x4d2c6dfc,
0x53380d13,
0x650a7354,
0x766a0abb,
0x81c2c92e,
0x92722c85,
0xa2bfe8a1,
0xa81a664b,
0xc24b8b70,
0xc76c51a3,
0xd192e819,
0xd6990624,
0xf40e3585,
0x106aa070,
0x19a4c116,
0x1e376c08,
0x2748774c,
0x34b0bcb5,
0x391c0cb3,
0x4ed8aa4a,
0x5b9cca4f,
0x682e6ff3,
0x748f82ee,
0x78a5636f,
0x84c87814,
0x8cc70208,
0x90befffa,
0xa4506ceb,
0xbef9a3f7,
0xc67178f2
]);
/**
* @internal
*/
export const INIT = [
0x6a09e667,
0xbb67ae85,
0x3c6ef372,
0xa54ff53a,
0x510e527f,
0x9b05688c,
0x1f83d9ab,
0x5be0cd19
];
/**
* @internal
*/
export const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;

1
node_modules/@aws-crypto/sha256-js/src/index.ts generated vendored Normal file
View File

@@ -0,0 +1 @@
export * from "./jsSha256";

94
node_modules/@aws-crypto/sha256-js/src/jsSha256.ts generated vendored Normal file
View File

@@ -0,0 +1,94 @@
import { BLOCK_SIZE } from "./constants";
import { RawSha256 } from "./RawSha256";
import { Checksum, SourceData } from "@aws-sdk/types";
import { isEmptyData, convertToBuffer } from "@aws-crypto/util";
export class Sha256 implements Checksum {
private readonly secret?: SourceData;
private hash: RawSha256;
private outer?: RawSha256;
private error: any;
constructor(secret?: SourceData) {
this.secret = secret;
this.hash = new RawSha256();
this.reset();
}
update(toHash: SourceData): void {
if (isEmptyData(toHash) || this.error) {
return;
}
try {
this.hash.update(convertToBuffer(toHash));
} catch (e) {
this.error = e;
}
}
/* This synchronous method keeps compatibility
* with the v2 aws-sdk.
*/
digestSync(): Uint8Array {
if (this.error) {
throw this.error;
}
if (this.outer) {
if (!this.outer.finished) {
this.outer.update(this.hash.digest());
}
return this.outer.digest();
}
return this.hash.digest();
}
/* The underlying digest method here is synchronous.
* To keep the same interface with the other hash functions
* the default is to expose this as an async method.
* However, it can sometimes be useful to have a sync method.
*/
async digest(): Promise<Uint8Array> {
return this.digestSync();
}
reset(): void {
this.hash = new RawSha256();
if (this.secret) {
this.outer = new RawSha256();
const inner = bufferFromSecret(this.secret);
const outer = new Uint8Array(BLOCK_SIZE);
outer.set(inner);
for (let i = 0; i < BLOCK_SIZE; i++) {
inner[i] ^= 0x36;
outer[i] ^= 0x5c;
}
this.hash.update(inner);
this.outer.update(outer);
// overwrite the copied key in memory
for (let i = 0; i < inner.byteLength; i++) {
inner[i] = 0;
}
}
}
}
function bufferFromSecret(secret: SourceData): Uint8Array {
let input = convertToBuffer(secret);
if (input.byteLength > BLOCK_SIZE) {
const bufferHash = new RawSha256();
bufferHash.update(input);
input = bufferHash.digest();
}
const buffer = new Uint8Array(BLOCK_SIZE);
buffer.set(input);
return buffer;
}

View File

@@ -0,0 +1,401 @@
import { fromHex } from "@aws-sdk/util-hex-encoding";
const millionChars = new Uint8Array(1000000);
for (let i = 0; i < 1000000; i++) {
millionChars[i] = 97;
}
export const hashTestVectors: Array<[Uint8Array, Uint8Array]> = [
[
Uint8Array.from([97, 98, 99]),
fromHex("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad")
],
[
new Uint8Array(0),
fromHex("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
],
[
fromHex("61"),
fromHex("ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb")
],
[
fromHex("6161"),
fromHex("961b6dd3ede3cb8ecbaacbd68de040cd78eb2ed5889130cceb4c49268ea4d506")
],
[
fromHex("616161"),
fromHex("9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0")
],
[
fromHex("61616161"),
fromHex("61be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b4")
],
[
fromHex("6161616161"),
fromHex("ed968e840d10d2d313a870bc131a4e2c311d7ad09bdf32b3418147221f51a6e2")
],
[
fromHex("616161616161"),
fromHex("ed02457b5c41d964dbd2f2a609d63fe1bb7528dbe55e1abf5b52c249cd735797")
],
[
fromHex("61616161616161"),
fromHex("e46240714b5db3a23eee60479a623efba4d633d27fe4f03c904b9e219a7fbe60")
],
[
fromHex("6161616161616161"),
fromHex("1f3ce40415a2081fa3eee75fc39fff8e56c22270d1a978a7249b592dcebd20b4")
],
[
fromHex("616161616161616161"),
fromHex("f2aca93b80cae681221f0445fa4e2cae8a1f9f8fa1e1741d9639caad222f537d")
],
[
fromHex("61616161616161616161"),
fromHex("bf2cb58a68f684d95a3b78ef8f661c9a4e5b09e82cc8f9cc88cce90528caeb27")
],
[
fromHex("6161616161616161616161"),
fromHex("28cb017dfc99073aa1b47c1b30f413e3ce774c4991eb4158de50f9dbb36d8043")
],
[
fromHex("616161616161616161616161"),
fromHex("f24abc34b13fade76e805799f71187da6cd90b9cac373ae65ed57f143bd664e5")
],
[
fromHex("61616161616161616161616161"),
fromHex("a689d786e81340e45511dec6c7ab2d978434e5db123362450fe10cfac70d19d0")
],
[
fromHex("6161616161616161616161616161"),
fromHex("82cab7df0abfb9d95dca4e5937ce2968c798c726fea48c016bf9763221efda13")
],
[
fromHex("616161616161616161616161616161"),
fromHex("ef2df0b539c6c23de0f4cbe42648c301ae0e22e887340a4599fb4ef4e2678e48")
],
[
fromHex("61616161616161616161616161616161"),
fromHex("0c0beacef8877bbf2416eb00f2b5dc96354e26dd1df5517320459b1236860f8c")
],
[
fromHex("6161616161616161616161616161616161"),
fromHex("b860666ee2966dd8f903be44ee605c6e1366f926d9f17a8f49937d11624eb99d")
],
[
fromHex("616161616161616161616161616161616161"),
fromHex("c926defaaa3d13eda2fc63a553bb7fb7326bece6e7cb67ca5296e4727d89bab4")
],
[
fromHex("61616161616161616161616161616161616161"),
fromHex("a0b4aaab8a966e2193ba172d68162c4656860197f256b5f45f0203397ff3f99c")
],
[
fromHex("6161616161616161616161616161616161616161"),
fromHex("42492da06234ad0ac76f5d5debdb6d1ae027cffbe746a1c13b89bb8bc0139137")
],
[
fromHex("616161616161616161616161616161616161616161"),
fromHex("7df8e299c834de198e264c3e374bc58ecd9382252a705c183beb02f275571e3b")
],
[
fromHex("61616161616161616161616161616161616161616161"),
fromHex("ec7c494df6d2a7ea36668d656e6b8979e33641bfea378c15038af3964db057a3")
],
[
fromHex("6161616161616161616161616161616161616161616161"),
fromHex("897d3e95b65f26676081f8b9f3a98b6ee4424566303e8d4e7c7522ebae219eab")
],
[
fromHex("616161616161616161616161616161616161616161616161"),
fromHex("09f61f8d9cd65e6a0c258087c485b6293541364e42bd97b2d7936580c8aa3c54")
],
[
fromHex("61616161616161616161616161616161616161616161616161"),
fromHex("2f521e2a7d0bd812cbc035f4ed6806eb8d851793b04ba147e8f66b72f5d1f20f")
],
[
fromHex("6161616161616161616161616161616161616161616161616161"),
fromHex("9976d549a25115dab4e36d0c1fb8f31cb07da87dd83275977360eb7dc09e88de")
],
[
fromHex("616161616161616161616161616161616161616161616161616161"),
fromHex("cc0616e61cbd6e8e5e34e9fb2d320f37de915820206f5696c31f1fbd24aa16de")
],
[
fromHex("61616161616161616161616161616161616161616161616161616161"),
fromHex("9c547cb8115a44883b9f70ba68f75117cd55359c92611875e386f8af98c172ab")
],
[
fromHex("6161616161616161616161616161616161616161616161616161616161"),
fromHex("6913c9c7fd42fe23df8b6bcd4dbaf1c17748948d97f2980b432319c39eddcf6c")
],
[
fromHex("616161616161616161616161616161616161616161616161616161616161"),
fromHex("3a54fc0cbc0b0ef48b6507b7788096235d10292dd3ae24e22f5aa062d4f9864a")
],
[
fromHex("61616161616161616161616161616161616161616161616161616161616161"),
fromHex("61c60b487d1a921e0bcc9bf853dda0fb159b30bf57b2e2d2c753b00be15b5a09")
],
[
fromHex("6161616161616161616161616161616161616161616161616161616161616161"),
fromHex("3ba3f5f43b92602683c19aee62a20342b084dd5971ddd33808d81a328879a547")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("852785c805c77e71a22340a54e9d95933ed49121e7d2bf3c2d358854bc1359ea")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("a27c896c4859204843166af66f0e902b9c3b3ed6d2fd13d435abc020065c526f")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("629362afc62c74497caed2272e30f8125ecd0965f8d8d7cfc4e260f7f8dd319d")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("22c1d24bcd03e9aee9832efccd6da613fc702793178e5f12c945c7b67ddda933")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("21ec055b38ce759cd4d0f477e9bdec2c5b8199945db4439bae334a964df6246c")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("365a9c3e2c2af0a56e47a9dac51c2c5381bf8f41273bad3175e0e619126ad087")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("b4d5e56e929ba4cda349e9274e3603d0be246b82016bca20f363963c5f2d6845")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("e33cdf9c7f7120b98e8c78408953e07f2ecd183006b5606df349b4c212acf43e")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("c0f8bd4dbc2b0c03107c1c37913f2a7501f521467f45dd0fef6958e9a4692719")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("7a538607fdaab9296995929f451565bbb8142e1844117322aafd2b3d76b01aff")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("66d34fba71f8f450f7e45598853e53bfc23bbd129027cbb131a2f4ffd7878cd0")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("16849877c6c21ef0bfa68e4f6747300ddb171b170b9f00e189edc4c2fc4db93e")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("52789e3423b72beeb898456a4f49662e46b0cbb960784c5ef4b1399d327e7c27")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("6643110c5628fff59edf76d82d5bf573bf800f16a4d65dfb1e5d6f1a46296d0b")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("11eaed932c6c6fddfc2efc394e609facf4abe814fc6180d03b14fce13a07d0e5")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("97daac0ee9998dfcad6c9c0970da5ca411c86233a944c25b47566f6a7bc1ddd5")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("8f9bec6a62dd28ebd36d1227745592de6658b36974a3bb98a4c582f683ea6c42")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("160b4e433e384e05e537dc59b467f7cb2403f0214db15c5db58862a3f1156d2e")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("bfc5fe0e360152ca98c50fab4ed7e3078c17debc2917740d5000913b686ca129")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("6c1b3dc7a706b9dc81352a6716b9c666c608d8626272c64b914ab05572fc6e84")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("abe346a7259fc90b4c27185419628e5e6af6466b1ae9b5446cac4bfc26cf05c4")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("a3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("9f4390f8d30c2dd92ec9f095b65e2b9ae9b0a925a5258e241c9f1e910f734318")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("b35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("f13b2d724659eb3bf47f2dd6af1accc87b81f09f59f2b75e5c0bed6589dfe8c6")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("d5c039b748aa64665782974ec3dc3025c042edf54dcdc2b5de31385b094cb678")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("111bb261277afd65f0744b247cd3e47d386d71563d0ed995517807d5ebd4fba3")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("11ee391211c6256460b6ed375957fadd8061cafbb31daf967db875aebd5aaad4")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("35d5fc17cfbbadd00f5e710ada39f194c5ad7c766ad67072245f1fad45f0f530")
],
[
fromHex(
"6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("f506898cc7c2e092f9eb9fadae7ba50383f5b46a2a4fe5597dbb553a78981268")
],
[
fromHex(
"616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("7d3e74a05d7db15bce4ad9ec0658ea98e3f06eeecf16b4c6fff2da457ddc2f34")
],
[
fromHex(
"61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161"
),
fromHex("ffe054fe7ae0cb6dc65c3af9b61d5209f439851db43d0ba5997337df154668eb")
],
[
fromHex(
"de188941a3375d3a8a061e67576e926dc71a7fa3f0cceb97452b4d3227965f9ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629e"
),
fromHex("038051e9c324393bd1ca1978dd0952c2aa3742ca4f1bd5cd4611cea83892d382")
],
[
millionChars,
fromHex("cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0")
],
[
fromHex(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
),
fromHex("45ad4b37c6e2fc0a2cfcc1b5da524132ec707615c2cae1dbbc43c97aa521db81")
]
];
/**
* @see https://tools.ietf.org/html/rfc4231
*/
export const hmacTestVectors: Array<[Uint8Array, Uint8Array, Uint8Array]> = [
[
fromHex("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
fromHex("4869205468657265"),
fromHex("b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7")
],
[
fromHex("4a656665"),
fromHex("7768617420646f2079612077616e7420666f72206e6f7468696e673f"),
fromHex("5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843")
],
[
fromHex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
fromHex(
"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
),
fromHex("773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe")
],
[
fromHex("0102030405060708090a0b0c0d0e0f10111213141516171819"),
fromHex(
"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
),
fromHex("82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b")
],
[
fromHex(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
),
fromHex(
"54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374"
),
fromHex("60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54")
],
[
fromHex(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
),
fromHex(
"5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2e"
),
fromHex("9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2")
]
];