@cardanowall/crypto-core 0.3.0 → 0.4.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/cbor.d.cts +6 -2
- package/dist/cbor.d.ts +6 -2
- package/dist/hash.cjs +10 -1
- package/dist/hash.cjs.map +1 -1
- package/dist/hash.d.cts +8 -1
- package/dist/hash.d.ts +8 -1
- package/dist/hash.js +10 -2
- package/dist/hash.js.map +1 -1
- package/dist/index.cjs +2123 -409
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.js +2098 -400
- package/dist/index.js.map +1 -1
- package/dist/sealed-poe.cjs +1959 -332
- package/dist/sealed-poe.cjs.map +1 -1
- package/dist/sealed-poe.d.cts +141 -62
- package/dist/sealed-poe.d.ts +141 -62
- package/dist/sealed-poe.js +1940 -324
- package/dist/sealed-poe.js.map +1 -1
- package/dist/seed-derive.cjs +195 -0
- package/dist/seed-derive.cjs.map +1 -1
- package/dist/seed-derive.d.cts +12 -1
- package/dist/seed-derive.d.ts +12 -1
- package/dist/seed-derive.js +192 -1
- package/dist/seed-derive.js.map +1 -1
- package/package.json +1 -1
- package/dist/canonical-DHeJLYDR.d.cts +0 -7
- package/dist/canonical-DHeJLYDR.d.ts +0 -7
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var hashWasm = require('hash-wasm');
|
|
3
4
|
var sha2_js = require('@noble/hashes/sha2.js');
|
|
4
5
|
var blake2_js = require('@noble/hashes/blake2.js');
|
|
5
|
-
var hashWasm = require('hash-wasm');
|
|
6
6
|
var hkdf_js = require('@noble/hashes/hkdf.js');
|
|
7
7
|
var ed = require('@noble/ed25519');
|
|
8
8
|
var ed25519_js = require('@noble/curves/ed25519.js');
|
|
@@ -37,6 +37,14 @@ var ed__namespace = /*#__PURE__*/_interopNamespace(ed);
|
|
|
37
37
|
function sha256(input) {
|
|
38
38
|
return sha2_js.sha256(input);
|
|
39
39
|
}
|
|
40
|
+
async function sha256Stream(source) {
|
|
41
|
+
const hasher = await hashWasm.createSHA256();
|
|
42
|
+
hasher.init();
|
|
43
|
+
for await (const chunk of source) {
|
|
44
|
+
hasher.update(chunk);
|
|
45
|
+
}
|
|
46
|
+
return hasher.digest("binary");
|
|
47
|
+
}
|
|
40
48
|
function blake2b256(input) {
|
|
41
49
|
return blake2_js.blake2b(input, { dkLen: 32 });
|
|
42
50
|
}
|
|
@@ -704,6 +712,14 @@ var SeedDeriveError = class extends Error {
|
|
|
704
712
|
this.code = code;
|
|
705
713
|
}
|
|
706
714
|
};
|
|
715
|
+
var SeedEncodingError = class extends Error {
|
|
716
|
+
code;
|
|
717
|
+
constructor(code, message, options) {
|
|
718
|
+
super(message, options);
|
|
719
|
+
this.name = "SeedEncodingError";
|
|
720
|
+
this.code = code;
|
|
721
|
+
}
|
|
722
|
+
};
|
|
707
723
|
|
|
708
724
|
// src/seed-derive/derive.ts
|
|
709
725
|
var INFO_ED25519 = new TextEncoder().encode("cardano-poe-ed25519-v1");
|
|
@@ -764,6 +780,167 @@ function deriveMlKem768X25519KeypairFromSeed(seed) {
|
|
|
764
780
|
return mlkem768x25519Keygen(xwingSeed);
|
|
765
781
|
}
|
|
766
782
|
|
|
783
|
+
// src/recipient/bech32.ts
|
|
784
|
+
var BECH32_ALPHABET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
|
|
785
|
+
var POLYMOD_GENERATORS = [996825010, 642813549, 513874426, 1027748829, 705979059];
|
|
786
|
+
var ENCODING_CONST = 1;
|
|
787
|
+
function polymodStep(pre) {
|
|
788
|
+
const b = pre >> 25;
|
|
789
|
+
let chk = (pre & 33554431) << 5;
|
|
790
|
+
for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {
|
|
791
|
+
if ((b >> i & 1) === 1) chk ^= POLYMOD_GENERATORS[i];
|
|
792
|
+
}
|
|
793
|
+
return chk;
|
|
794
|
+
}
|
|
795
|
+
function bytesToWords(bytes) {
|
|
796
|
+
const words = [];
|
|
797
|
+
let carry = 0;
|
|
798
|
+
let pos = 0;
|
|
799
|
+
const mask = (1 << 5) - 1;
|
|
800
|
+
for (const n of bytes) {
|
|
801
|
+
carry = carry << 8 | n;
|
|
802
|
+
pos += 8;
|
|
803
|
+
for (; pos >= 5; pos -= 5) words.push(carry >> pos - 5 & mask);
|
|
804
|
+
carry &= (1 << pos) - 1;
|
|
805
|
+
}
|
|
806
|
+
if (pos > 0) words.push(carry << 5 - pos & mask);
|
|
807
|
+
return words;
|
|
808
|
+
}
|
|
809
|
+
function checksum(prefix, words) {
|
|
810
|
+
let chk = 1;
|
|
811
|
+
for (let i = 0; i < prefix.length; i++) {
|
|
812
|
+
const c = prefix.charCodeAt(i);
|
|
813
|
+
if (c < 33 || c > 126) throw new Error(`bech32: invalid prefix (${prefix})`);
|
|
814
|
+
chk = polymodStep(chk) ^ c >> 5;
|
|
815
|
+
}
|
|
816
|
+
chk = polymodStep(chk);
|
|
817
|
+
for (let i = 0; i < prefix.length; i++) chk = polymodStep(chk) ^ prefix.charCodeAt(i) & 31;
|
|
818
|
+
for (const v of words) chk = polymodStep(chk) ^ v;
|
|
819
|
+
for (let i = 0; i < 6; i++) chk = polymodStep(chk);
|
|
820
|
+
chk ^= ENCODING_CONST;
|
|
821
|
+
let out = "";
|
|
822
|
+
for (let i = 0; i < 6; i++) out += BECH32_ALPHABET[chk >> 5 * (5 - i) & 31];
|
|
823
|
+
return out;
|
|
824
|
+
}
|
|
825
|
+
function bech32EncodeNoLimit(prefix, bytes) {
|
|
826
|
+
if (prefix.length === 0) throw new Error("bech32: empty prefix");
|
|
827
|
+
const words = bytesToWords(bytes);
|
|
828
|
+
let payload = "";
|
|
829
|
+
for (const w of words) payload += BECH32_ALPHABET[w];
|
|
830
|
+
const lowered = prefix.toLowerCase();
|
|
831
|
+
return `${lowered}1${payload}${checksum(lowered, words)}`;
|
|
832
|
+
}
|
|
833
|
+
function checksumValid(prefix, words) {
|
|
834
|
+
let chk = 1;
|
|
835
|
+
for (let i = 0; i < prefix.length; i++) chk = polymodStep(chk) ^ prefix.charCodeAt(i) >> 5;
|
|
836
|
+
chk = polymodStep(chk);
|
|
837
|
+
for (let i = 0; i < prefix.length; i++) chk = polymodStep(chk) ^ prefix.charCodeAt(i) & 31;
|
|
838
|
+
for (const v of words) chk = polymodStep(chk) ^ v;
|
|
839
|
+
return chk === ENCODING_CONST;
|
|
840
|
+
}
|
|
841
|
+
function wordsToBytes(words) {
|
|
842
|
+
const out = [];
|
|
843
|
+
let carry = 0;
|
|
844
|
+
let pos = 0;
|
|
845
|
+
for (const w of words) {
|
|
846
|
+
carry = carry << 5 | w;
|
|
847
|
+
pos += 5;
|
|
848
|
+
for (; pos >= 8; pos -= 8) out.push(carry >> pos - 8 & 255);
|
|
849
|
+
carry &= (1 << pos) - 1;
|
|
850
|
+
}
|
|
851
|
+
if (pos >= 5 || carry !== 0) throw new Error("bech32: non-canonical padding");
|
|
852
|
+
return Uint8Array.from(out);
|
|
853
|
+
}
|
|
854
|
+
function bech32DecodeNoLimit(input) {
|
|
855
|
+
if (input.length === 0) throw new Error("bech32: empty string");
|
|
856
|
+
const hasLower = input !== input.toUpperCase();
|
|
857
|
+
const hasUpper = input !== input.toLowerCase();
|
|
858
|
+
if (hasLower && hasUpper) throw new Error("bech32: mixed-case string");
|
|
859
|
+
const s = input.toLowerCase();
|
|
860
|
+
const sep = s.lastIndexOf("1");
|
|
861
|
+
if (sep < 1) throw new Error("bech32: missing human-readable prefix");
|
|
862
|
+
if (s.length - sep - 1 < 6) throw new Error("bech32: data too short for checksum");
|
|
863
|
+
const hrp = s.slice(0, sep);
|
|
864
|
+
for (let i = 0; i < hrp.length; i++) {
|
|
865
|
+
const c = hrp.charCodeAt(i);
|
|
866
|
+
if (c < 33 || c > 126) throw new Error("bech32: invalid prefix character");
|
|
867
|
+
}
|
|
868
|
+
const words = [];
|
|
869
|
+
for (let i = sep + 1; i < s.length; i++) {
|
|
870
|
+
const v = BECH32_ALPHABET.indexOf(s[i]);
|
|
871
|
+
if (v === -1) throw new Error("bech32: invalid data character");
|
|
872
|
+
words.push(v);
|
|
873
|
+
}
|
|
874
|
+
if (!checksumValid(hrp, words)) throw new Error("bech32: bad checksum");
|
|
875
|
+
return { hrp, bytes: wordsToBytes(words.slice(0, words.length - 6)) };
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
// src/seed-derive/encoding.ts
|
|
879
|
+
var IDENTITY_SEED_HRP = "l309-seed-";
|
|
880
|
+
var SEED_LENGTH2 = 32;
|
|
881
|
+
var SEED_HEX_DIGITS = 64;
|
|
882
|
+
var CLAIMS_SEED_PREFIX = /^l309-seed-1/i;
|
|
883
|
+
function encodeIdentitySeed(seed) {
|
|
884
|
+
if (seed.length !== SEED_LENGTH2) {
|
|
885
|
+
throw new SeedEncodingError(
|
|
886
|
+
"INVALID_SEED_LENGTH",
|
|
887
|
+
`seed must be exactly 32 bytes, got ${seed.length}`
|
|
888
|
+
);
|
|
889
|
+
}
|
|
890
|
+
return bech32EncodeNoLimit(IDENTITY_SEED_HRP, seed).toUpperCase();
|
|
891
|
+
}
|
|
892
|
+
function parseIdentitySeed(input) {
|
|
893
|
+
const compact = input.replace(/\s+/g, "");
|
|
894
|
+
const hexBody = compact.startsWith("0x") || compact.startsWith("0X") ? compact.slice(2) : compact;
|
|
895
|
+
if (hexBody.length > 0 && /^[0-9a-fA-F]+$/.test(hexBody)) {
|
|
896
|
+
if (hexBody.length !== SEED_HEX_DIGITS) {
|
|
897
|
+
throw new SeedEncodingError(
|
|
898
|
+
"SEED_STRING_WRONG_LENGTH",
|
|
899
|
+
`hex seed must be exactly 64 hex digits, got ${hexBody.length}`
|
|
900
|
+
);
|
|
901
|
+
}
|
|
902
|
+
return hexToBytes(hexBody.toLowerCase());
|
|
903
|
+
}
|
|
904
|
+
const candidate = input.trim();
|
|
905
|
+
const claimed = CLAIMS_SEED_PREFIX.test(candidate);
|
|
906
|
+
if (claimed && /[a-z]/.test(candidate) && /[A-Z]/.test(candidate)) {
|
|
907
|
+
throw new SeedEncodingError(
|
|
908
|
+
"SEED_STRING_MIXED_CASE",
|
|
909
|
+
"identity-seed string mixes upper and lower case; use one case only"
|
|
910
|
+
);
|
|
911
|
+
}
|
|
912
|
+
let decoded;
|
|
913
|
+
try {
|
|
914
|
+
decoded = bech32DecodeNoLimit(candidate);
|
|
915
|
+
} catch (cause) {
|
|
916
|
+
if (claimed) {
|
|
917
|
+
throw new SeedEncodingError(
|
|
918
|
+
"SEED_STRING_BAD_CHECKSUM",
|
|
919
|
+
"identity-seed string failed bech32 decoding (checksum, character set, or structure)",
|
|
920
|
+
{ cause }
|
|
921
|
+
);
|
|
922
|
+
}
|
|
923
|
+
throw new SeedEncodingError(
|
|
924
|
+
"SEED_STRING_UNRECOGNIZED",
|
|
925
|
+
"expected a 64-hex-digit seed or an L309-SEED-1\u2026 string",
|
|
926
|
+
{ cause }
|
|
927
|
+
);
|
|
928
|
+
}
|
|
929
|
+
if (decoded.hrp !== IDENTITY_SEED_HRP) {
|
|
930
|
+
throw new SeedEncodingError(
|
|
931
|
+
"SEED_STRING_WRONG_HRP",
|
|
932
|
+
`expected the bech32 prefix "${IDENTITY_SEED_HRP}", got "${decoded.hrp}"`
|
|
933
|
+
);
|
|
934
|
+
}
|
|
935
|
+
if (decoded.bytes.length !== SEED_LENGTH2) {
|
|
936
|
+
throw new SeedEncodingError(
|
|
937
|
+
"SEED_STRING_WRONG_LENGTH",
|
|
938
|
+
`identity-seed payload must be exactly 32 bytes, got ${decoded.bytes.length}`
|
|
939
|
+
);
|
|
940
|
+
}
|
|
941
|
+
return decoded.bytes;
|
|
942
|
+
}
|
|
943
|
+
|
|
767
944
|
// src/sealed-poe/errors.ts
|
|
768
945
|
var EciesSealedPoeError = class extends Error {
|
|
769
946
|
code;
|
|
@@ -774,55 +951,240 @@ var EciesSealedPoeError = class extends Error {
|
|
|
774
951
|
}
|
|
775
952
|
};
|
|
776
953
|
|
|
777
|
-
// src/sealed-poe/
|
|
778
|
-
var
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
954
|
+
// src/sealed-poe/stream.ts
|
|
955
|
+
var CHUNK_SIZE = 65536;
|
|
956
|
+
var TAG_SIZE = 16;
|
|
957
|
+
var NONCE_LENGTH = 12;
|
|
958
|
+
var COUNTER_LENGTH = 11;
|
|
959
|
+
var SEALED_CHUNK_SIZE = CHUNK_SIZE + TAG_SIZE;
|
|
960
|
+
var PAYLOAD_KEY_LENGTH = 32;
|
|
961
|
+
var EMPTY_AAD = new Uint8Array(0);
|
|
962
|
+
var StreamTamperedError = class extends Error {
|
|
963
|
+
code = "TAMPERED_CIPHERTEXT";
|
|
964
|
+
constructor(message, options) {
|
|
965
|
+
super(message, options);
|
|
966
|
+
this.name = "StreamTamperedError";
|
|
967
|
+
}
|
|
968
|
+
};
|
|
969
|
+
var ChunkNonce = class {
|
|
970
|
+
nonce = new Uint8Array(NONCE_LENGTH);
|
|
971
|
+
finished = false;
|
|
972
|
+
next(final) {
|
|
973
|
+
if (this.finished) {
|
|
974
|
+
throw new Error("STREAM: no chunks may follow the final chunk");
|
|
975
|
+
}
|
|
976
|
+
if (final) {
|
|
977
|
+
this.finished = true;
|
|
978
|
+
this.nonce[COUNTER_LENGTH] = 1;
|
|
979
|
+
}
|
|
980
|
+
const out = this.nonce.slice();
|
|
981
|
+
this.increment();
|
|
982
|
+
return out;
|
|
983
|
+
}
|
|
984
|
+
get done() {
|
|
985
|
+
return this.finished;
|
|
986
|
+
}
|
|
987
|
+
increment() {
|
|
988
|
+
for (let i = COUNTER_LENGTH - 1; i >= 0; i--) {
|
|
989
|
+
const v = this.nonce[i] + 1 & 255;
|
|
990
|
+
this.nonce[i] = v;
|
|
991
|
+
if (v !== 0) return;
|
|
992
|
+
}
|
|
993
|
+
throw new Error("STREAM: chunk counter overflow");
|
|
782
994
|
}
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
995
|
+
};
|
|
996
|
+
function assertPayloadKey(payloadKey) {
|
|
997
|
+
if (payloadKey.length !== PAYLOAD_KEY_LENGTH) {
|
|
998
|
+
throw new Error(
|
|
999
|
+
`STREAM: payloadKey MUST be exactly ${PAYLOAD_KEY_LENGTH} bytes, got ${payloadKey.length}`
|
|
1000
|
+
);
|
|
786
1001
|
}
|
|
787
|
-
return chunks;
|
|
788
1002
|
}
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
1003
|
+
var StreamSealer = class {
|
|
1004
|
+
payloadKey;
|
|
1005
|
+
nonce = new ChunkNonce();
|
|
1006
|
+
chunkIndex = 0;
|
|
1007
|
+
constructor(payloadKey) {
|
|
1008
|
+
assertPayloadKey(payloadKey);
|
|
1009
|
+
this.payloadKey = payloadKey;
|
|
1010
|
+
}
|
|
1011
|
+
sealChunk(plaintext, final) {
|
|
1012
|
+
if (!final && plaintext.length !== CHUNK_SIZE) {
|
|
1013
|
+
throw new Error(
|
|
1014
|
+
`STREAM: non-final chunk MUST carry exactly ${CHUNK_SIZE} plaintext bytes, got ${plaintext.length}`
|
|
1015
|
+
);
|
|
1016
|
+
}
|
|
1017
|
+
if (final && plaintext.length > CHUNK_SIZE) {
|
|
1018
|
+
throw new Error(
|
|
1019
|
+
`STREAM: final chunk MUST carry at most ${CHUNK_SIZE} plaintext bytes, got ${plaintext.length}`
|
|
1020
|
+
);
|
|
1021
|
+
}
|
|
1022
|
+
if (final && plaintext.length === 0 && this.chunkIndex > 0) {
|
|
1023
|
+
throw new Error(
|
|
1024
|
+
"STREAM: a zero-length final chunk is admissible only for an empty plaintext"
|
|
1025
|
+
);
|
|
1026
|
+
}
|
|
1027
|
+
const sealed = chacha20Poly1305Encrypt({
|
|
1028
|
+
key: this.payloadKey,
|
|
1029
|
+
nonce: this.nonce.next(final),
|
|
1030
|
+
aad: EMPTY_AAD,
|
|
1031
|
+
plaintext
|
|
1032
|
+
});
|
|
1033
|
+
this.chunkIndex += 1;
|
|
1034
|
+
return sealed;
|
|
1035
|
+
}
|
|
1036
|
+
};
|
|
1037
|
+
var StreamOpener = class {
|
|
1038
|
+
payloadKey;
|
|
1039
|
+
nonce = new ChunkNonce();
|
|
1040
|
+
chunkIndex = 0;
|
|
1041
|
+
constructor(payloadKey) {
|
|
1042
|
+
assertPayloadKey(payloadKey);
|
|
1043
|
+
this.payloadKey = payloadKey;
|
|
1044
|
+
}
|
|
1045
|
+
openChunk(sealedChunk, final) {
|
|
1046
|
+
if (sealedChunk.length < TAG_SIZE) {
|
|
1047
|
+
throw new StreamTamperedError(
|
|
1048
|
+
`STREAM: sealed chunk shorter than the ${TAG_SIZE}-byte tag floor`
|
|
1049
|
+
);
|
|
1050
|
+
}
|
|
1051
|
+
if (!final && sealedChunk.length !== SEALED_CHUNK_SIZE) {
|
|
1052
|
+
throw new StreamTamperedError(
|
|
1053
|
+
`STREAM: non-final sealed chunk MUST be exactly ${SEALED_CHUNK_SIZE} bytes, got ${sealedChunk.length}`
|
|
1054
|
+
);
|
|
1055
|
+
}
|
|
1056
|
+
if (final && sealedChunk.length > SEALED_CHUNK_SIZE) {
|
|
1057
|
+
throw new StreamTamperedError(
|
|
1058
|
+
`STREAM: final sealed chunk MUST be at most ${SEALED_CHUNK_SIZE} bytes, got ${sealedChunk.length}`
|
|
1059
|
+
);
|
|
1060
|
+
}
|
|
1061
|
+
if (final && sealedChunk.length === TAG_SIZE && this.chunkIndex > 0) {
|
|
1062
|
+
throw new StreamTamperedError("STREAM: zero-length final chunk on a non-empty stream");
|
|
1063
|
+
}
|
|
1064
|
+
let plaintext;
|
|
1065
|
+
try {
|
|
1066
|
+
plaintext = chacha20Poly1305Decrypt({
|
|
1067
|
+
key: this.payloadKey,
|
|
1068
|
+
nonce: this.nonce.next(final),
|
|
1069
|
+
aad: EMPTY_AAD,
|
|
1070
|
+
ciphertext: sealedChunk
|
|
1071
|
+
});
|
|
1072
|
+
} catch (e) {
|
|
1073
|
+
if (!(e instanceof AeadVerificationError)) throw e;
|
|
1074
|
+
throw new StreamTamperedError(`STREAM: chunk ${this.chunkIndex} tag verification failed`, {
|
|
1075
|
+
cause: e
|
|
1076
|
+
});
|
|
1077
|
+
}
|
|
1078
|
+
this.chunkIndex += 1;
|
|
1079
|
+
return plaintext;
|
|
1080
|
+
}
|
|
1081
|
+
};
|
|
1082
|
+
function streamSeal(args) {
|
|
1083
|
+
const { plaintext } = args;
|
|
1084
|
+
const sealer = new StreamSealer(args.payloadKey);
|
|
1085
|
+
const chunkCount = Math.max(1, Math.ceil(plaintext.length / CHUNK_SIZE));
|
|
1086
|
+
const out = new Uint8Array(plaintext.length + chunkCount * TAG_SIZE);
|
|
793
1087
|
let offset = 0;
|
|
794
|
-
for (
|
|
795
|
-
|
|
796
|
-
|
|
1088
|
+
for (let i = 0; i < chunkCount; i++) {
|
|
1089
|
+
const final = i === chunkCount - 1;
|
|
1090
|
+
const chunk = plaintext.subarray(
|
|
1091
|
+
i * CHUNK_SIZE,
|
|
1092
|
+
Math.min((i + 1) * CHUNK_SIZE, plaintext.length)
|
|
1093
|
+
);
|
|
1094
|
+
const sealed = sealer.sealChunk(chunk, final);
|
|
1095
|
+
out.set(sealed, offset);
|
|
1096
|
+
offset += sealed.length;
|
|
797
1097
|
}
|
|
798
1098
|
return out;
|
|
799
1099
|
}
|
|
800
|
-
function
|
|
801
|
-
|
|
802
|
-
|
|
1100
|
+
function streamOpen(args) {
|
|
1101
|
+
const { ciphertext } = args;
|
|
1102
|
+
const total = ciphertext.length;
|
|
1103
|
+
if (total < TAG_SIZE) {
|
|
1104
|
+
throw new StreamTamperedError(
|
|
1105
|
+
`STREAM: ciphertext shorter than the ${TAG_SIZE}-byte single-tag floor`
|
|
1106
|
+
);
|
|
803
1107
|
}
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
1108
|
+
const rem = total % SEALED_CHUNK_SIZE;
|
|
1109
|
+
let nonFinalCount;
|
|
1110
|
+
let finalSealedLength;
|
|
1111
|
+
if (rem === 0) {
|
|
1112
|
+
nonFinalCount = total / SEALED_CHUNK_SIZE - 1;
|
|
1113
|
+
finalSealedLength = SEALED_CHUNK_SIZE;
|
|
1114
|
+
} else if (rem >= TAG_SIZE) {
|
|
1115
|
+
nonFinalCount = (total - rem) / SEALED_CHUNK_SIZE;
|
|
1116
|
+
finalSealedLength = rem;
|
|
1117
|
+
} else {
|
|
1118
|
+
throw new StreamTamperedError("STREAM: trailing bytes cannot form a well-formed final chunk");
|
|
1119
|
+
}
|
|
1120
|
+
if (nonFinalCount > 0 && finalSealedLength === TAG_SIZE) {
|
|
1121
|
+
throw new StreamTamperedError("STREAM: zero-length final chunk on a non-empty stream");
|
|
1122
|
+
}
|
|
1123
|
+
const opener = new StreamOpener(args.payloadKey);
|
|
1124
|
+
const out = new Uint8Array(nonFinalCount * CHUNK_SIZE + finalSealedLength - TAG_SIZE);
|
|
1125
|
+
let readOffset = 0;
|
|
1126
|
+
let writeOffset = 0;
|
|
1127
|
+
for (let i = 0; i < nonFinalCount; i++) {
|
|
1128
|
+
const plaintext = opener.openChunk(
|
|
1129
|
+
ciphertext.subarray(readOffset, readOffset + SEALED_CHUNK_SIZE),
|
|
1130
|
+
false
|
|
1131
|
+
);
|
|
1132
|
+
out.set(plaintext, writeOffset);
|
|
1133
|
+
readOffset += SEALED_CHUNK_SIZE;
|
|
1134
|
+
writeOffset += CHUNK_SIZE;
|
|
1135
|
+
}
|
|
1136
|
+
const finalPlaintext = opener.openChunk(ciphertext.subarray(readOffset), true);
|
|
1137
|
+
out.set(finalPlaintext, writeOffset);
|
|
1138
|
+
return out;
|
|
808
1139
|
}
|
|
1140
|
+
var CARDANO_POE_ITEM_HASHES_PREFIX = new TextEncoder().encode(
|
|
1141
|
+
"cardano-poe-item-hashes-v1"
|
|
1142
|
+
);
|
|
809
1143
|
var CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX = new TextEncoder().encode(
|
|
810
1144
|
"cardano-poe-slots-transcript-v1"
|
|
811
1145
|
);
|
|
1146
|
+
var CARDANO_POE_PASSPHRASE_TRANSCRIPT_PREFIX = new TextEncoder().encode(
|
|
1147
|
+
"cardano-poe-passphrase-transcript-v1"
|
|
1148
|
+
);
|
|
1149
|
+
var CARDANO_POE_HKDF_INFO_SLOTS_MAC = new TextEncoder().encode(
|
|
1150
|
+
"cardano-poe-slots-mac-v1"
|
|
1151
|
+
);
|
|
1152
|
+
var CARDANO_POE_HKDF_INFO_PASSPHRASE_MAC = new TextEncoder().encode(
|
|
1153
|
+
"cardano-poe-passphrase-mac-v1"
|
|
1154
|
+
);
|
|
812
1155
|
var CARDANO_POE_HKDF_INFO_PAYLOAD = new TextEncoder().encode(
|
|
813
1156
|
"cardano-poe-payload-v1"
|
|
814
1157
|
);
|
|
815
1158
|
var CARDANO_POE_HKDF_INFO_PAYLOAD_PASSPHRASE = new TextEncoder().encode(
|
|
816
1159
|
"cardano-poe-payload-passphrase-v1"
|
|
817
1160
|
);
|
|
1161
|
+
var CARDANO_POE_X25519_KEK_SALT_PREFIX = new TextEncoder().encode(
|
|
1162
|
+
"cardano-poe-x25519-kek-salt-v1"
|
|
1163
|
+
);
|
|
818
1164
|
var CARDANO_POE_XWING_KEK_SALT_PREFIX = new TextEncoder().encode(
|
|
819
1165
|
"cardano-poe-xwing-kek-salt-v1"
|
|
820
1166
|
);
|
|
1167
|
+
if (CARDANO_POE_ITEM_HASHES_PREFIX.length !== 26) {
|
|
1168
|
+
throw new Error("CARDANO_POE_ITEM_HASHES_PREFIX byte-length invariant violated (expected 26)");
|
|
1169
|
+
}
|
|
821
1170
|
if (CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX.length !== 31) {
|
|
822
1171
|
throw new Error(
|
|
823
1172
|
"CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX byte-length invariant violated (expected 31)"
|
|
824
1173
|
);
|
|
825
1174
|
}
|
|
1175
|
+
if (CARDANO_POE_PASSPHRASE_TRANSCRIPT_PREFIX.length !== 36) {
|
|
1176
|
+
throw new Error(
|
|
1177
|
+
"CARDANO_POE_PASSPHRASE_TRANSCRIPT_PREFIX byte-length invariant violated (expected 36)"
|
|
1178
|
+
);
|
|
1179
|
+
}
|
|
1180
|
+
if (CARDANO_POE_HKDF_INFO_SLOTS_MAC.length !== 24) {
|
|
1181
|
+
throw new Error("CARDANO_POE_HKDF_INFO_SLOTS_MAC byte-length invariant violated (expected 24)");
|
|
1182
|
+
}
|
|
1183
|
+
if (CARDANO_POE_HKDF_INFO_PASSPHRASE_MAC.length !== 29) {
|
|
1184
|
+
throw new Error(
|
|
1185
|
+
"CARDANO_POE_HKDF_INFO_PASSPHRASE_MAC byte-length invariant violated (expected 29)"
|
|
1186
|
+
);
|
|
1187
|
+
}
|
|
826
1188
|
if (CARDANO_POE_HKDF_INFO_PAYLOAD.length !== 22) {
|
|
827
1189
|
throw new Error("CARDANO_POE_HKDF_INFO_PAYLOAD byte-length invariant violated (expected 22)");
|
|
828
1190
|
}
|
|
@@ -831,79 +1193,88 @@ if (CARDANO_POE_HKDF_INFO_PAYLOAD_PASSPHRASE.length !== 33) {
|
|
|
831
1193
|
"CARDANO_POE_HKDF_INFO_PAYLOAD_PASSPHRASE byte-length invariant violated (expected 33)"
|
|
832
1194
|
);
|
|
833
1195
|
}
|
|
1196
|
+
if (CARDANO_POE_X25519_KEK_SALT_PREFIX.length !== 30) {
|
|
1197
|
+
throw new Error(
|
|
1198
|
+
"CARDANO_POE_X25519_KEK_SALT_PREFIX byte-length invariant violated (expected 30)"
|
|
1199
|
+
);
|
|
1200
|
+
}
|
|
834
1201
|
if (CARDANO_POE_XWING_KEK_SALT_PREFIX.length !== 29) {
|
|
835
1202
|
throw new Error("CARDANO_POE_XWING_KEK_SALT_PREFIX byte-length invariant violated (expected 29)");
|
|
836
1203
|
}
|
|
837
1204
|
var CARDANO_POE_PW_NORM_PROFILE = "cardano-poe-pw-norm-v1";
|
|
838
1205
|
var MAX_SLOTS = 1024;
|
|
839
1206
|
var MAX_DECODED_ENVELOPE_BYTES = 65536;
|
|
840
|
-
var
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
1207
|
+
var EMPTY_SALT2 = new Uint8Array(0);
|
|
1208
|
+
function labelledSha256(prefix, ...parts) {
|
|
1209
|
+
let total = prefix.length;
|
|
1210
|
+
for (const p of parts) total += p.length;
|
|
1211
|
+
const message = new Uint8Array(total);
|
|
1212
|
+
message.set(prefix, 0);
|
|
1213
|
+
let offset = prefix.length;
|
|
1214
|
+
for (const p of parts) {
|
|
1215
|
+
message.set(p, offset);
|
|
1216
|
+
offset += p.length;
|
|
847
1217
|
}
|
|
1218
|
+
return sha2_js.sha256(message);
|
|
848
1219
|
}
|
|
849
|
-
function
|
|
850
|
-
if (
|
|
851
|
-
throw new
|
|
852
|
-
|
|
1220
|
+
function itemHashesHash(hashes2) {
|
|
1221
|
+
if (Object.keys(hashes2).length === 0) {
|
|
1222
|
+
throw new EciesSealedPoeError(
|
|
1223
|
+
"ENC_REQUIRES_CONTENT_HASH",
|
|
1224
|
+
"hashes MUST carry at least one content-hash entry"
|
|
853
1225
|
);
|
|
854
1226
|
}
|
|
1227
|
+
return labelledSha256(CARDANO_POE_ITEM_HASHES_PREFIX, encodeCanonicalCbor(hashes2));
|
|
855
1228
|
}
|
|
856
|
-
var SealedPayloadTooLargeError = class extends Error {
|
|
857
|
-
constructor(message) {
|
|
858
|
-
super(message);
|
|
859
|
-
this.name = "SealedPayloadTooLargeError";
|
|
860
|
-
}
|
|
861
|
-
};
|
|
862
1229
|
function computeSlotsHash(args) {
|
|
1230
|
+
const slots = args.kem === "x25519" ? args.slots.map((s) => ({ epk: s.epk, wrap: s.wrap })) : args.slots.map((s) => ({
|
|
1231
|
+
kem_ct: s.kem_ct,
|
|
1232
|
+
wrap: s.wrap
|
|
1233
|
+
}));
|
|
863
1234
|
const transcript = {
|
|
864
1235
|
scheme: 1,
|
|
865
1236
|
path: "slots",
|
|
866
|
-
aead:
|
|
867
|
-
kem: args.kem,
|
|
868
|
-
nonce: args.nonce,
|
|
869
|
-
slots: canonicalizeSlots(args.slots, args.kem)
|
|
870
|
-
};
|
|
871
|
-
const encoded = encodeCanonicalCbor(transcript);
|
|
872
|
-
const message = new Uint8Array(CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX.length + encoded.length);
|
|
873
|
-
message.set(CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX, 0);
|
|
874
|
-
message.set(encoded, CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX.length);
|
|
875
|
-
return sha2_js.sha256(message);
|
|
876
|
-
}
|
|
877
|
-
function adContentSlots(args) {
|
|
878
|
-
const ad = {
|
|
879
|
-
scheme: 1,
|
|
880
|
-
path: "slots",
|
|
881
|
-
aead: "xchacha20-poly1305",
|
|
1237
|
+
aead: args.aead,
|
|
882
1238
|
kem: args.kem,
|
|
883
1239
|
nonce: args.nonce,
|
|
884
|
-
|
|
885
|
-
|
|
1240
|
+
slots,
|
|
1241
|
+
hashes_hash: args.hashesHash
|
|
886
1242
|
};
|
|
887
|
-
return encodeCanonicalCbor(
|
|
1243
|
+
return labelledSha256(CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX, encodeCanonicalCbor(transcript));
|
|
888
1244
|
}
|
|
889
|
-
function
|
|
890
|
-
const
|
|
1245
|
+
function computePassphraseHash(args) {
|
|
1246
|
+
const transcript = {
|
|
891
1247
|
scheme: 1,
|
|
892
1248
|
path: "passphrase",
|
|
893
|
-
aead:
|
|
1249
|
+
aead: args.aead,
|
|
894
1250
|
nonce: args.nonce,
|
|
1251
|
+
hashes_hash: args.hashesHash,
|
|
895
1252
|
passphrase: {
|
|
896
|
-
alg:
|
|
897
|
-
salt: args.
|
|
898
|
-
params: {
|
|
899
|
-
m: args.passphrase.params.m,
|
|
900
|
-
t: args.passphrase.params.t,
|
|
901
|
-
p: args.passphrase.params.p
|
|
902
|
-
},
|
|
1253
|
+
alg: "argon2id",
|
|
1254
|
+
salt: args.salt,
|
|
1255
|
+
params: { m: args.params.m, t: args.params.t, p: args.params.p },
|
|
903
1256
|
normalization: CARDANO_POE_PW_NORM_PROFILE
|
|
904
1257
|
}
|
|
905
1258
|
};
|
|
906
|
-
return encodeCanonicalCbor(
|
|
1259
|
+
return labelledSha256(CARDANO_POE_PASSPHRASE_TRANSCRIPT_PREFIX, encodeCanonicalCbor(transcript));
|
|
1260
|
+
}
|
|
1261
|
+
function computeSlotsMac(args) {
|
|
1262
|
+
const macKey = hkdfSha256({
|
|
1263
|
+
ikm: args.cek,
|
|
1264
|
+
salt: EMPTY_SALT2,
|
|
1265
|
+
info: CARDANO_POE_HKDF_INFO_SLOTS_MAC,
|
|
1266
|
+
length: 32
|
|
1267
|
+
});
|
|
1268
|
+
return hmac_js.hmac(sha2_js.sha256, macKey, args.slotsHash);
|
|
1269
|
+
}
|
|
1270
|
+
function computePassphraseCommitment(args) {
|
|
1271
|
+
const macKey = hkdfSha256({
|
|
1272
|
+
ikm: args.cek,
|
|
1273
|
+
salt: EMPTY_SALT2,
|
|
1274
|
+
info: CARDANO_POE_HKDF_INFO_PASSPHRASE_MAC,
|
|
1275
|
+
length: 32
|
|
1276
|
+
});
|
|
1277
|
+
return hmac_js.hmac(sha2_js.sha256, macKey, args.pwHash);
|
|
907
1278
|
}
|
|
908
1279
|
function slotsPayloadKey(args) {
|
|
909
1280
|
return hkdfSha256({
|
|
@@ -921,33 +1292,24 @@ function passphrasePayloadKey(args) {
|
|
|
921
1292
|
length: 32
|
|
922
1293
|
});
|
|
923
1294
|
}
|
|
1295
|
+
function x25519KekSalt(args) {
|
|
1296
|
+
return labelledSha256(CARDANO_POE_X25519_KEK_SALT_PREFIX, args.nonce, args.epk, args.pubR);
|
|
1297
|
+
}
|
|
924
1298
|
function xwingKekSalt(args) {
|
|
925
|
-
|
|
926
|
-
CARDANO_POE_XWING_KEK_SALT_PREFIX.length + args.kemCt.length + args.pubR.length
|
|
927
|
-
);
|
|
928
|
-
let offset = 0;
|
|
929
|
-
message.set(CARDANO_POE_XWING_KEK_SALT_PREFIX, offset);
|
|
930
|
-
offset += CARDANO_POE_XWING_KEK_SALT_PREFIX.length;
|
|
931
|
-
message.set(args.kemCt, offset);
|
|
932
|
-
offset += args.kemCt.length;
|
|
933
|
-
message.set(args.pubR, offset);
|
|
934
|
-
return sha2_js.sha256(message);
|
|
1299
|
+
return labelledSha256(CARDANO_POE_XWING_KEK_SALT_PREFIX, args.nonce, args.kemCt, args.pubR);
|
|
935
1300
|
}
|
|
936
1301
|
|
|
937
1302
|
// src/sealed-poe/wrap.ts
|
|
1303
|
+
var SEALED_POE_AEAD = "chacha20-poly1305-stream64k";
|
|
938
1304
|
var CARDANO_POE_HKDF_INFO_KEK = new TextEncoder().encode("cardano-poe-kek-v1");
|
|
939
1305
|
var CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519 = new TextEncoder().encode(
|
|
940
1306
|
"cardano-poe-kek-mlkem768x25519-v1"
|
|
941
1307
|
);
|
|
942
|
-
var CARDANO_POE_HKDF_INFO_SLOTS_MAC = new TextEncoder().encode(
|
|
943
|
-
"cardano-poe-slots-mac-v1"
|
|
944
|
-
);
|
|
945
1308
|
var ZERO_NONCE_12 = new Uint8Array(12);
|
|
946
|
-
var EMPTY_SALT2 = new Uint8Array(0);
|
|
947
1309
|
var X25519_PUBLIC_KEY_LENGTH = 32;
|
|
948
1310
|
var X25519_SECRET_KEY_LENGTH = 32;
|
|
949
1311
|
var CEK_LENGTH = 32;
|
|
950
|
-
var
|
|
1312
|
+
var NONCE_LENGTH2 = 24;
|
|
951
1313
|
var WRAP_LENGTH = 48;
|
|
952
1314
|
var SLOTS_MAC_LENGTH = 32;
|
|
953
1315
|
if (CARDANO_POE_HKDF_INFO_KEK.length !== 18) {
|
|
@@ -958,18 +1320,9 @@ if (CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519.length !== 33) {
|
|
|
958
1320
|
"CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519 byte-length invariant violated (expected 33)"
|
|
959
1321
|
);
|
|
960
1322
|
}
|
|
961
|
-
if (CARDANO_POE_HKDF_INFO_SLOTS_MAC.length !== 24) {
|
|
962
|
-
throw new Error("CARDANO_POE_HKDF_INFO_SLOTS_MAC byte-length invariant violated (expected 24)");
|
|
963
|
-
}
|
|
964
1323
|
if (ZERO_NONCE_12.length !== 12) {
|
|
965
1324
|
throw new Error("ZERO_NONCE_12 byte-length invariant violated (expected 12)");
|
|
966
1325
|
}
|
|
967
|
-
function concat(a, b) {
|
|
968
|
-
const out = new Uint8Array(a.length + b.length);
|
|
969
|
-
out.set(a, 0);
|
|
970
|
-
out.set(b, a.length);
|
|
971
|
-
return out;
|
|
972
|
-
}
|
|
973
1326
|
function uniformIndexBelow(m) {
|
|
974
1327
|
const limit = 4294967296 - 4294967296 % m;
|
|
975
1328
|
const buf = new Uint32Array(1);
|
|
@@ -1000,7 +1353,7 @@ function wrapSlotX25519(args) {
|
|
|
1000
1353
|
const shared = x25519Ecdh({ secretKey: privEph, theirPublicKey: args.pubR });
|
|
1001
1354
|
const kek = hkdfSha256({
|
|
1002
1355
|
ikm: shared,
|
|
1003
|
-
salt:
|
|
1356
|
+
salt: x25519KekSalt({ nonce: args.nonce, epk, pubR: args.pubR }),
|
|
1004
1357
|
info: CARDANO_POE_HKDF_INFO_KEK,
|
|
1005
1358
|
length: 32
|
|
1006
1359
|
});
|
|
@@ -1025,7 +1378,7 @@ function wrapSlotMlkem768X25519(args) {
|
|
|
1025
1378
|
}
|
|
1026
1379
|
const kek = hkdfSha256({
|
|
1027
1380
|
ikm: ss,
|
|
1028
|
-
salt: xwingKekSalt({ kemCt: enc, pubR: args.pubR }),
|
|
1381
|
+
salt: xwingKekSalt({ nonce: args.nonce, kemCt: enc, pubR: args.pubR }),
|
|
1029
1382
|
info: CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519,
|
|
1030
1383
|
length: 32
|
|
1031
1384
|
});
|
|
@@ -1038,13 +1391,13 @@ function wrapSlotMlkem768X25519(args) {
|
|
|
1038
1391
|
if (wrap.length !== WRAP_LENGTH) {
|
|
1039
1392
|
throw new Error(`internal: wrap.length=${wrap.length}, expected ${WRAP_LENGTH}`);
|
|
1040
1393
|
}
|
|
1041
|
-
return { kem_ct:
|
|
1394
|
+
return { kem_ct: enc, wrap };
|
|
1042
1395
|
}
|
|
1043
1396
|
function eciesSealedPoeWrap(args) {
|
|
1044
1397
|
const { plaintext, recipientPublicKeys } = args;
|
|
1045
1398
|
const kem = args.kem ?? "x25519";
|
|
1046
1399
|
const n = recipientPublicKeys.length;
|
|
1047
|
-
|
|
1400
|
+
const hashesHash = itemHashesHash(args.hashes);
|
|
1048
1401
|
if (n < 1) {
|
|
1049
1402
|
throw new EciesSealedPoeError(
|
|
1050
1403
|
"ENC_SLOTS_EMPTY",
|
|
@@ -1100,21 +1453,20 @@ function eciesSealedPoeWrap(args) {
|
|
|
1100
1453
|
}
|
|
1101
1454
|
}
|
|
1102
1455
|
const cek = args.cek ?? utils_js.randomBytes(CEK_LENGTH);
|
|
1103
|
-
const nonce = args.nonce ?? utils_js.randomBytes(
|
|
1456
|
+
const nonce = args.nonce ?? utils_js.randomBytes(NONCE_LENGTH2);
|
|
1104
1457
|
if (cek.length !== CEK_LENGTH) {
|
|
1105
1458
|
throw new EciesSealedPoeError(
|
|
1106
1459
|
"INVALID_CEK_LENGTH",
|
|
1107
1460
|
`cek MUST be exactly ${CEK_LENGTH} bytes, got ${cek.length}`
|
|
1108
1461
|
);
|
|
1109
1462
|
}
|
|
1110
|
-
if (nonce.length !==
|
|
1463
|
+
if (nonce.length !== NONCE_LENGTH2) {
|
|
1111
1464
|
throw new EciesSealedPoeError(
|
|
1112
1465
|
"NONCE_LENGTH_MISMATCH",
|
|
1113
|
-
`nonce MUST be exactly ${
|
|
1466
|
+
`nonce MUST be exactly ${NONCE_LENGTH2} bytes, got ${nonce.length}`
|
|
1114
1467
|
);
|
|
1115
1468
|
}
|
|
1116
1469
|
let envelope;
|
|
1117
|
-
let slotsHash;
|
|
1118
1470
|
if (kem === "x25519") {
|
|
1119
1471
|
const slots = [];
|
|
1120
1472
|
for (let i = 0; i < n; i++) {
|
|
@@ -1123,6 +1475,7 @@ function eciesSealedPoeWrap(args) {
|
|
|
1123
1475
|
pubR: recipientPublicKeys[i],
|
|
1124
1476
|
privEph: args.ephemeralSecrets ? args.ephemeralSecrets[i] : void 0,
|
|
1125
1477
|
cek,
|
|
1478
|
+
nonce,
|
|
1126
1479
|
slotIdx: i
|
|
1127
1480
|
})
|
|
1128
1481
|
);
|
|
@@ -1130,14 +1483,20 @@ function eciesSealedPoeWrap(args) {
|
|
|
1130
1483
|
if (args.skipShuffle !== true) {
|
|
1131
1484
|
csprngShuffle(slots);
|
|
1132
1485
|
}
|
|
1133
|
-
slotsHash = computeSlotsHash({
|
|
1486
|
+
const slotsHash = computeSlotsHash({
|
|
1487
|
+
aead: SEALED_POE_AEAD,
|
|
1488
|
+
kem: "x25519",
|
|
1489
|
+
nonce,
|
|
1490
|
+
slots,
|
|
1491
|
+
hashesHash
|
|
1492
|
+
});
|
|
1134
1493
|
envelope = {
|
|
1135
1494
|
scheme: 1,
|
|
1136
|
-
aead:
|
|
1495
|
+
aead: SEALED_POE_AEAD,
|
|
1137
1496
|
kem: "x25519",
|
|
1138
1497
|
nonce,
|
|
1139
1498
|
slots,
|
|
1140
|
-
slots_mac:
|
|
1499
|
+
slots_mac: sizedSlotsMac(cek, slotsHash)
|
|
1141
1500
|
};
|
|
1142
1501
|
} else {
|
|
1143
1502
|
const slots = [];
|
|
@@ -1146,67 +1505,97 @@ function eciesSealedPoeWrap(args) {
|
|
|
1146
1505
|
wrapSlotMlkem768X25519({
|
|
1147
1506
|
pubR: recipientPublicKeys[i],
|
|
1148
1507
|
eseed: args.eseeds ? args.eseeds[i] : void 0,
|
|
1149
|
-
cek
|
|
1508
|
+
cek,
|
|
1509
|
+
nonce
|
|
1150
1510
|
})
|
|
1151
1511
|
);
|
|
1152
1512
|
}
|
|
1153
1513
|
if (args.skipShuffle !== true) {
|
|
1154
1514
|
csprngShuffle(slots);
|
|
1155
1515
|
}
|
|
1156
|
-
slotsHash = computeSlotsHash({
|
|
1516
|
+
const slotsHash = computeSlotsHash({
|
|
1517
|
+
aead: SEALED_POE_AEAD,
|
|
1518
|
+
kem: "mlkem768x25519",
|
|
1519
|
+
nonce,
|
|
1520
|
+
slots,
|
|
1521
|
+
hashesHash
|
|
1522
|
+
});
|
|
1157
1523
|
envelope = {
|
|
1158
1524
|
scheme: 1,
|
|
1159
|
-
aead:
|
|
1525
|
+
aead: SEALED_POE_AEAD,
|
|
1160
1526
|
kem: "mlkem768x25519",
|
|
1161
1527
|
nonce,
|
|
1162
1528
|
slots,
|
|
1163
|
-
slots_mac:
|
|
1529
|
+
slots_mac: sizedSlotsMac(cek, slotsHash)
|
|
1164
1530
|
};
|
|
1165
1531
|
}
|
|
1166
|
-
const
|
|
1167
|
-
|
|
1168
|
-
kem: envelope.kem,
|
|
1169
|
-
nonce,
|
|
1170
|
-
slotsHash,
|
|
1171
|
-
slotsMac: envelope.slots_mac
|
|
1172
|
-
});
|
|
1173
|
-
const ciphertext = xchacha20Poly1305Encrypt({
|
|
1174
|
-
key: payloadKey,
|
|
1175
|
-
nonce,
|
|
1176
|
-
aad: adContent,
|
|
1532
|
+
const ciphertext = streamSeal({
|
|
1533
|
+
payloadKey: slotsPayloadKey({ cek, nonce }),
|
|
1177
1534
|
plaintext
|
|
1178
1535
|
});
|
|
1179
1536
|
return { envelope, ciphertext };
|
|
1180
1537
|
}
|
|
1181
|
-
function
|
|
1182
|
-
const
|
|
1183
|
-
ikm: cek,
|
|
1184
|
-
salt: EMPTY_SALT2,
|
|
1185
|
-
info: CARDANO_POE_HKDF_INFO_SLOTS_MAC,
|
|
1186
|
-
length: 32
|
|
1187
|
-
});
|
|
1188
|
-
const slotsMac = hmac_js.hmac(sha2_js.sha256, hmacKey, slotsHash);
|
|
1538
|
+
function sizedSlotsMac(cek, slotsHash) {
|
|
1539
|
+
const slotsMac = computeSlotsMac({ cek, slotsHash });
|
|
1189
1540
|
if (slotsMac.length !== SLOTS_MAC_LENGTH) {
|
|
1190
1541
|
throw new Error(`internal: slots_mac.length=${slotsMac.length}, expected ${SLOTS_MAC_LENGTH}`);
|
|
1191
1542
|
}
|
|
1192
1543
|
return slotsMac;
|
|
1193
1544
|
}
|
|
1545
|
+
|
|
1546
|
+
// src/sealed-poe/slot-acceptance.ts
|
|
1547
|
+
var CEK_LENGTH2 = 32;
|
|
1548
|
+
function newSlotAcceptanceState() {
|
|
1549
|
+
return {
|
|
1550
|
+
foundBit: 0,
|
|
1551
|
+
conflictBit: 0,
|
|
1552
|
+
selectedCek: new Uint8Array(CEK_LENGTH2),
|
|
1553
|
+
selectedSlotIdx: -1
|
|
1554
|
+
};
|
|
1555
|
+
}
|
|
1556
|
+
function foldSlotAcceptance(state, ok, candidateCek, slotIdx) {
|
|
1557
|
+
if (candidateCek.length !== CEK_LENGTH2) {
|
|
1558
|
+
throw new Error(
|
|
1559
|
+
`candidate CEK MUST be exactly ${CEK_LENGTH2} bytes, got ${candidateCek.length}`
|
|
1560
|
+
);
|
|
1561
|
+
}
|
|
1562
|
+
const okBit = ok & 1;
|
|
1563
|
+
const firstBit = okBit & (state.foundBit ^ 1);
|
|
1564
|
+
const firstByteMask = -firstBit & 255;
|
|
1565
|
+
const firstWordMask = -firstBit | 0;
|
|
1566
|
+
let diff = 0;
|
|
1567
|
+
for (let i = 0; i < CEK_LENGTH2; i++) {
|
|
1568
|
+
diff |= candidateCek[i] ^ state.selectedCek[i];
|
|
1569
|
+
}
|
|
1570
|
+
const neqBit = (diff | -diff) >>> 31 & 1;
|
|
1571
|
+
state.conflictBit |= okBit & state.foundBit & neqBit;
|
|
1572
|
+
for (let i = 0; i < CEK_LENGTH2; i++) {
|
|
1573
|
+
state.selectedCek[i] = candidateCek[i] & firstByteMask | state.selectedCek[i] & ~firstByteMask & 255;
|
|
1574
|
+
}
|
|
1575
|
+
state.selectedSlotIdx = slotIdx & firstWordMask | state.selectedSlotIdx & ~firstWordMask;
|
|
1576
|
+
state.foundBit |= okBit;
|
|
1577
|
+
}
|
|
1578
|
+
function finishSlotAcceptance(state) {
|
|
1579
|
+
const found = state.foundBit === 1;
|
|
1580
|
+
return {
|
|
1581
|
+
found,
|
|
1582
|
+
cekConflict: state.conflictBit === 1,
|
|
1583
|
+
selectedCek: found ? state.selectedCek : null,
|
|
1584
|
+
selectedSlotIdx: state.selectedSlotIdx
|
|
1585
|
+
};
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
// src/sealed-poe/unwrap.ts
|
|
1194
1589
|
function selectBundleSecrets(envelope, bundle) {
|
|
1195
1590
|
return envelope.kem === "x25519" ? bundle.x25519PrivateKeys : bundle.mlkem768x25519SecretSeeds;
|
|
1196
1591
|
}
|
|
1197
1592
|
var ZERO_NONCE_122 = new Uint8Array(12);
|
|
1198
|
-
var
|
|
1593
|
+
var CEK_LENGTH3 = 32;
|
|
1199
1594
|
var X25519_SECRET_KEY_LENGTH2 = 32;
|
|
1200
1595
|
var X25519_PUBLIC_KEY_LENGTH2 = 32;
|
|
1201
|
-
var
|
|
1596
|
+
var NONCE_LENGTH3 = 24;
|
|
1202
1597
|
var WRAP_LENGTH2 = 48;
|
|
1203
1598
|
var SLOTS_MAC_LENGTH2 = 32;
|
|
1204
|
-
function concat2(a, b) {
|
|
1205
|
-
const out = new Uint8Array(a.length + b.length);
|
|
1206
|
-
out.set(a, 0);
|
|
1207
|
-
out.set(b, a.length);
|
|
1208
|
-
return out;
|
|
1209
|
-
}
|
|
1210
1599
|
function bytesKey(bytes) {
|
|
1211
1600
|
let s = "";
|
|
1212
1601
|
for (let i = 0; i < bytes.length; i++) {
|
|
@@ -1217,14 +1606,14 @@ function bytesKey(bytes) {
|
|
|
1217
1606
|
function assertEnvelopeStructure(envelope, multiPrivKeys, singlePrivKey) {
|
|
1218
1607
|
if (envelope.scheme !== 1) {
|
|
1219
1608
|
throw new EciesSealedPoeError(
|
|
1220
|
-
"
|
|
1609
|
+
"UNSUPPORTED_ENVELOPE_SCHEME",
|
|
1221
1610
|
`envelope.scheme=${String(envelope.scheme)} unsupported (expected 1)`
|
|
1222
1611
|
);
|
|
1223
1612
|
}
|
|
1224
|
-
if (envelope.aead !==
|
|
1613
|
+
if (envelope.aead !== SEALED_POE_AEAD) {
|
|
1225
1614
|
throw new EciesSealedPoeError(
|
|
1226
1615
|
"UNSUPPORTED_AEAD_ALG",
|
|
1227
|
-
`envelope.aead=${String(envelope.aead)} unsupported (expected '
|
|
1616
|
+
`envelope.aead=${String(envelope.aead)} unsupported (expected '${SEALED_POE_AEAD}')`
|
|
1228
1617
|
);
|
|
1229
1618
|
}
|
|
1230
1619
|
if (envelope.kem !== "x25519" && envelope.kem !== "mlkem768x25519") {
|
|
@@ -1243,10 +1632,10 @@ function assertEnvelopeStructure(envelope, multiPrivKeys, singlePrivKey) {
|
|
|
1243
1632
|
`envelope.slots.length=${n} exceeds MAX_SLOTS=${MAX_SLOTS}`
|
|
1244
1633
|
);
|
|
1245
1634
|
}
|
|
1246
|
-
if (envelope.nonce.length !==
|
|
1635
|
+
if (envelope.nonce.length !== NONCE_LENGTH3) {
|
|
1247
1636
|
throw new EciesSealedPoeError(
|
|
1248
1637
|
"NONCE_LENGTH_MISMATCH",
|
|
1249
|
-
`envelope.nonce MUST be exactly ${
|
|
1638
|
+
`envelope.nonce MUST be exactly ${NONCE_LENGTH3} bytes, got ${envelope.nonce.length}`
|
|
1250
1639
|
);
|
|
1251
1640
|
}
|
|
1252
1641
|
if (envelope.slots_mac.length !== SLOTS_MAC_LENGTH2) {
|
|
@@ -1283,11 +1672,10 @@ function assertEnvelopeStructure(envelope, multiPrivKeys, singlePrivKey) {
|
|
|
1283
1672
|
} else {
|
|
1284
1673
|
for (let i = 0; i < n; i++) {
|
|
1285
1674
|
const slot = envelope.slots[i];
|
|
1286
|
-
|
|
1287
|
-
if (enc.length !== MLKEM768X25519_ENC_LENGTH) {
|
|
1675
|
+
if (slot.kem_ct.length !== MLKEM768X25519_ENC_LENGTH) {
|
|
1288
1676
|
throw new EciesSealedPoeError(
|
|
1289
1677
|
"KEM_CT_LENGTH_MISMATCH",
|
|
1290
|
-
`envelope.slots[${i}].kem_ct MUST
|
|
1678
|
+
`envelope.slots[${i}].kem_ct MUST be exactly ${MLKEM768X25519_ENC_LENGTH} bytes, got ${slot.kem_ct.length}`
|
|
1291
1679
|
);
|
|
1292
1680
|
}
|
|
1293
1681
|
if (slot.wrap.length !== WRAP_LENGTH2) {
|
|
@@ -1296,7 +1684,7 @@ function assertEnvelopeStructure(envelope, multiPrivKeys, singlePrivKey) {
|
|
|
1296
1684
|
`envelope.slots[${i}].wrap MUST be exactly ${WRAP_LENGTH2} bytes, got ${slot.wrap.length}`
|
|
1297
1685
|
);
|
|
1298
1686
|
}
|
|
1299
|
-
const key = bytesKey(
|
|
1687
|
+
const key = bytesKey(slot.kem_ct);
|
|
1300
1688
|
if (seenKemMaterial.has(key)) {
|
|
1301
1689
|
throw new EciesSealedPoeError(
|
|
1302
1690
|
"ENC_SLOTS_DUPLICATE_KEM_MATERIAL",
|
|
@@ -1307,7 +1695,7 @@ function assertEnvelopeStructure(envelope, multiPrivKeys, singlePrivKey) {
|
|
|
1307
1695
|
}
|
|
1308
1696
|
}
|
|
1309
1697
|
const perSlotBytes = envelope.kem === "x25519" ? X25519_PUBLIC_KEY_LENGTH2 + WRAP_LENGTH2 : MLKEM768X25519_ENC_LENGTH + WRAP_LENGTH2;
|
|
1310
|
-
const decodedEnvelopeBytes =
|
|
1698
|
+
const decodedEnvelopeBytes = NONCE_LENGTH3 + SLOTS_MAC_LENGTH2 + n * perSlotBytes;
|
|
1311
1699
|
if (decodedEnvelopeBytes > MAX_DECODED_ENVELOPE_BYTES) {
|
|
1312
1700
|
throw new EciesSealedPoeError(
|
|
1313
1701
|
"ENC_ENVELOPE_TOO_LARGE",
|
|
@@ -1333,66 +1721,63 @@ function assertEnvelopeStructure(envelope, multiPrivKeys, singlePrivKey) {
|
|
|
1333
1721
|
}
|
|
1334
1722
|
}
|
|
1335
1723
|
var ZERO_IKM_32 = new Uint8Array(32);
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
let shared;
|
|
1724
|
+
var DUMMY_CEK_32 = new Uint8Array(32);
|
|
1725
|
+
function wrapOpenOrDummy(kek, aad, wrap) {
|
|
1339
1726
|
try {
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1727
|
+
const plaintext = chacha20Poly1305Decrypt({
|
|
1728
|
+
key: kek,
|
|
1729
|
+
nonce: ZERO_NONCE_122,
|
|
1730
|
+
aad,
|
|
1731
|
+
ciphertext: wrap
|
|
1343
1732
|
});
|
|
1733
|
+
if (plaintext.length === CEK_LENGTH3) {
|
|
1734
|
+
return { ok: 1, candidate: plaintext };
|
|
1735
|
+
}
|
|
1736
|
+
return { ok: 0, candidate: DUMMY_CEK_32 };
|
|
1344
1737
|
} catch (e) {
|
|
1345
|
-
if (!(e instanceof
|
|
1346
|
-
|
|
1347
|
-
return null;
|
|
1738
|
+
if (!(e instanceof AeadVerificationError)) throw e;
|
|
1739
|
+
return { ok: 0, candidate: DUMMY_CEK_32 };
|
|
1348
1740
|
}
|
|
1349
|
-
|
|
1741
|
+
}
|
|
1742
|
+
function tryX25519Slot(args) {
|
|
1743
|
+
const salt = x25519KekSalt({ nonce: args.nonce, epk: args.slot.epk, pubR: args.pubRLocal });
|
|
1744
|
+
let kemOk = 1;
|
|
1745
|
+
let kek;
|
|
1350
1746
|
try {
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
aad: CARDANO_POE_HKDF_INFO_KEK,
|
|
1355
|
-
ciphertext: args.slot.wrap
|
|
1747
|
+
const shared = x25519Ecdh({
|
|
1748
|
+
secretKey: args.recipientSecretKey,
|
|
1749
|
+
theirPublicKey: args.slot.epk
|
|
1356
1750
|
});
|
|
1751
|
+
kek = hkdfSha256({ ikm: shared, salt, info: CARDANO_POE_HKDF_INFO_KEK, length: 32 });
|
|
1357
1752
|
} catch (e) {
|
|
1358
|
-
if (!(e instanceof
|
|
1359
|
-
|
|
1753
|
+
if (!(e instanceof X25519LowOrderPointError)) throw e;
|
|
1754
|
+
kemOk = 0;
|
|
1755
|
+
kek = hkdfSha256({ ikm: ZERO_IKM_32, salt, info: CARDANO_POE_HKDF_INFO_KEK, length: 32 });
|
|
1360
1756
|
}
|
|
1757
|
+
const opened = wrapOpenOrDummy(kek, CARDANO_POE_HKDF_INFO_KEK, args.slot.wrap);
|
|
1758
|
+
return { ok: kemOk & opened.ok, candidate: opened.candidate };
|
|
1361
1759
|
}
|
|
1362
1760
|
function tryMlkem768X25519Slot(args) {
|
|
1363
|
-
const
|
|
1364
|
-
|
|
1761
|
+
const ss = mlkem768x25519Decapsulate({
|
|
1762
|
+
secretSeed: args.recipientSecretKey,
|
|
1763
|
+
enc: args.slot.kem_ct
|
|
1764
|
+
});
|
|
1365
1765
|
const kek = hkdfSha256({
|
|
1366
1766
|
ikm: ss,
|
|
1367
|
-
salt: xwingKekSalt({ kemCt:
|
|
1767
|
+
salt: xwingKekSalt({ nonce: args.nonce, kemCt: args.slot.kem_ct, pubR: args.pubR }),
|
|
1368
1768
|
info: CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519,
|
|
1369
1769
|
length: 32
|
|
1370
1770
|
});
|
|
1371
|
-
|
|
1372
|
-
return chacha20Poly1305Decrypt({
|
|
1373
|
-
key: kek,
|
|
1374
|
-
nonce: ZERO_NONCE_122,
|
|
1375
|
-
aad: CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519,
|
|
1376
|
-
ciphertext: args.slot.wrap
|
|
1377
|
-
});
|
|
1378
|
-
} catch (e) {
|
|
1379
|
-
if (!(e instanceof AeadVerificationError)) throw e;
|
|
1380
|
-
return null;
|
|
1381
|
-
}
|
|
1771
|
+
return wrapOpenOrDummy(kek, CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519, args.slot.wrap);
|
|
1382
1772
|
}
|
|
1383
|
-
function
|
|
1773
|
+
function runPrivPass(envelope, recipientSecretKey, slotsHash, slotsAttemptedOut) {
|
|
1384
1774
|
const n = envelope.slots.length;
|
|
1385
|
-
|
|
1386
|
-
let
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
cek = candidate;
|
|
1392
|
-
matchedSlotIdx = i;
|
|
1393
|
-
} else if (!compareCt(candidate, cek)) {
|
|
1394
|
-
cekConflict = true;
|
|
1395
|
-
}
|
|
1775
|
+
const state = newSlotAcceptanceState();
|
|
1776
|
+
let anyOpenedBit = 0;
|
|
1777
|
+
const acceptSlot = (slot, i) => {
|
|
1778
|
+
anyOpenedBit |= slot.ok;
|
|
1779
|
+
const macOk = Number(compareCt(computeSlotsMac({ cek: slot.candidate, slotsHash }), envelope.slots_mac)) & 1;
|
|
1780
|
+
foldSlotAcceptance(state, slot.ok & macOk, slot.candidate, i);
|
|
1396
1781
|
};
|
|
1397
1782
|
if (envelope.kem === "x25519") {
|
|
1398
1783
|
const pubRLocal = x25519PublicKey({ secretKey: recipientSecretKey });
|
|
@@ -1400,8 +1785,15 @@ function tryRecipientUnwrapWithIdx(envelope, recipientSecretKey, constantTimeN,
|
|
|
1400
1785
|
if (slotsAttemptedOut !== void 0) {
|
|
1401
1786
|
slotsAttemptedOut.count = i + 1;
|
|
1402
1787
|
}
|
|
1403
|
-
|
|
1404
|
-
|
|
1788
|
+
acceptSlot(
|
|
1789
|
+
tryX25519Slot({
|
|
1790
|
+
slot: envelope.slots[i],
|
|
1791
|
+
nonce: envelope.nonce,
|
|
1792
|
+
recipientSecretKey,
|
|
1793
|
+
pubRLocal
|
|
1794
|
+
}),
|
|
1795
|
+
i
|
|
1796
|
+
);
|
|
1405
1797
|
}
|
|
1406
1798
|
} else {
|
|
1407
1799
|
const pubR = mlkem768x25519Keygen(recipientSecretKey).publicKey;
|
|
@@ -1409,22 +1801,37 @@ function tryRecipientUnwrapWithIdx(envelope, recipientSecretKey, constantTimeN,
|
|
|
1409
1801
|
if (slotsAttemptedOut !== void 0) {
|
|
1410
1802
|
slotsAttemptedOut.count = i + 1;
|
|
1411
1803
|
}
|
|
1412
|
-
|
|
1413
|
-
|
|
1804
|
+
acceptSlot(
|
|
1805
|
+
tryMlkem768X25519Slot({
|
|
1806
|
+
slot: envelope.slots[i],
|
|
1807
|
+
nonce: envelope.nonce,
|
|
1808
|
+
recipientSecretKey,
|
|
1809
|
+
pubR
|
|
1810
|
+
}),
|
|
1811
|
+
i
|
|
1812
|
+
);
|
|
1414
1813
|
}
|
|
1415
1814
|
}
|
|
1416
|
-
|
|
1815
|
+
const outcome = finishSlotAcceptance(state);
|
|
1816
|
+
return {
|
|
1817
|
+
found: outcome.found,
|
|
1818
|
+
selectedCek: outcome.selectedCek,
|
|
1819
|
+
selectedSlotIdx: outcome.selectedSlotIdx,
|
|
1820
|
+
cekConflict: outcome.cekConflict,
|
|
1821
|
+
anyOpened: anyOpenedBit === 1
|
|
1822
|
+
};
|
|
1417
1823
|
}
|
|
1418
|
-
function slotsHashBytes(envelope) {
|
|
1824
|
+
function slotsHashBytes(envelope, hashes2) {
|
|
1419
1825
|
return computeSlotsHash({
|
|
1826
|
+
aead: envelope.aead,
|
|
1420
1827
|
kem: envelope.kem,
|
|
1421
1828
|
nonce: envelope.nonce,
|
|
1422
|
-
slots: envelope.slots
|
|
1829
|
+
slots: envelope.slots,
|
|
1830
|
+
hashesHash: itemHashesHash(hashes2)
|
|
1423
1831
|
});
|
|
1424
1832
|
}
|
|
1425
1833
|
function eciesSealedPoeUnwrap(args) {
|
|
1426
1834
|
const { envelope, ciphertext } = args;
|
|
1427
|
-
const constantTimeN = args.constantTimeN ?? true;
|
|
1428
1835
|
const hasSingle = "recipientSecretKey" in args;
|
|
1429
1836
|
const hasBundle = "recipientKeyBundle" in args;
|
|
1430
1837
|
const multiPrivKeys = hasBundle ? selectBundleSecrets(envelope, args.recipientKeyBundle) : "recipientSecretKeys" in args ? args.recipientSecretKeys : void 0;
|
|
@@ -1449,108 +1856,53 @@ function eciesSealedPoeUnwrap(args) {
|
|
|
1449
1856
|
} else {
|
|
1450
1857
|
assertEnvelopeStructure(envelope, void 0, args.recipientSecretKey);
|
|
1451
1858
|
}
|
|
1452
|
-
|
|
1453
|
-
const slotsHash = slotsHashBytes(envelope);
|
|
1859
|
+
const slotsHash = slotsHashBytes(envelope, args.hashes);
|
|
1454
1860
|
let matchedCek = null;
|
|
1455
|
-
let
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
recipientSecretKey,
|
|
1461
|
-
constantTimeN,
|
|
1462
|
-
args._slotsAttemptedOut
|
|
1463
|
-
);
|
|
1464
|
-
if (candidate === null) {
|
|
1465
|
-
return { matched: false, reason: "WRONG_RECIPIENT_KEY" };
|
|
1466
|
-
}
|
|
1467
|
-
if (candidate.cekConflict) {
|
|
1468
|
-
return { matched: false, reason: "TAMPERED_HEADER" };
|
|
1861
|
+
let anyOpenedAcrossPrivs = false;
|
|
1862
|
+
const privKeys = hasMulti ? multiPrivKeys : [args.recipientSecretKey];
|
|
1863
|
+
for (let k = 0; k < privKeys.length; k++) {
|
|
1864
|
+
if (args._privsAttemptedOut !== void 0) {
|
|
1865
|
+
args._privsAttemptedOut.count = k + 1;
|
|
1469
1866
|
}
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
salt: EMPTY_SALT3,
|
|
1473
|
-
info: CARDANO_POE_HKDF_INFO_SLOTS_MAC,
|
|
1474
|
-
length: 32
|
|
1475
|
-
});
|
|
1476
|
-
const slotsMacCalc = hmac_js.hmac(sha2_js.sha256, hmacKey, slotsHash);
|
|
1477
|
-
if (!compareCt(slotsMacCalc, envelope.slots_mac)) {
|
|
1478
|
-
return { matched: false, reason: "TAMPERED_HEADER" };
|
|
1867
|
+
if (args._slotsAttemptedOut !== void 0) {
|
|
1868
|
+
args._slotsAttemptedOut.count = 0;
|
|
1479
1869
|
}
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
let cekConflict = false;
|
|
1484
|
-
for (let k = 0; k < recipientSecretKeys.length; k++) {
|
|
1485
|
-
if (args._privsAttemptedOut !== void 0) {
|
|
1486
|
-
args._privsAttemptedOut.count = k + 1;
|
|
1487
|
-
}
|
|
1488
|
-
if (args._slotsAttemptedOut !== void 0) {
|
|
1489
|
-
args._slotsAttemptedOut.count = 0;
|
|
1490
|
-
}
|
|
1491
|
-
const candidate = tryRecipientUnwrapWithIdx(
|
|
1492
|
-
envelope,
|
|
1493
|
-
recipientSecretKeys[k],
|
|
1494
|
-
constantTimeN,
|
|
1495
|
-
args._slotsAttemptedOut
|
|
1496
|
-
);
|
|
1497
|
-
if (args._slotsAttemptedOut?.perPrivCounts !== void 0) {
|
|
1498
|
-
args._slotsAttemptedOut.perPrivCounts.push(args._slotsAttemptedOut.count);
|
|
1499
|
-
}
|
|
1500
|
-
if (candidate === null) continue;
|
|
1501
|
-
if (candidate.cekConflict) cekConflict = true;
|
|
1502
|
-
const cek = candidate.cek;
|
|
1503
|
-
const hmacKey = hkdfSha256({
|
|
1504
|
-
ikm: cek,
|
|
1505
|
-
salt: EMPTY_SALT3,
|
|
1506
|
-
info: CARDANO_POE_HKDF_INFO_SLOTS_MAC,
|
|
1507
|
-
length: 32
|
|
1508
|
-
});
|
|
1509
|
-
const slotsMacCalc = hmac_js.hmac(sha2_js.sha256, hmacKey, slotsHash);
|
|
1510
|
-
if (compareCt(slotsMacCalc, envelope.slots_mac)) {
|
|
1511
|
-
matchedCek = cek;
|
|
1512
|
-
break;
|
|
1513
|
-
}
|
|
1514
|
-
anyCandidateRecovered = true;
|
|
1870
|
+
const pass = runPrivPass(envelope, privKeys[k], slotsHash, args._slotsAttemptedOut);
|
|
1871
|
+
if (args._slotsAttemptedOut?.perPrivCounts !== void 0) {
|
|
1872
|
+
args._slotsAttemptedOut.perPrivCounts.push(args._slotsAttemptedOut.count);
|
|
1515
1873
|
}
|
|
1516
|
-
|
|
1874
|
+
anyOpenedAcrossPrivs = anyOpenedAcrossPrivs || pass.anyOpened;
|
|
1875
|
+
if (!pass.found) continue;
|
|
1876
|
+
if (pass.cekConflict) {
|
|
1517
1877
|
return { matched: false, reason: "TAMPERED_HEADER" };
|
|
1518
1878
|
}
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1879
|
+
matchedCek = pass.selectedCek;
|
|
1880
|
+
break;
|
|
1881
|
+
}
|
|
1882
|
+
if (matchedCek === null) {
|
|
1883
|
+
return {
|
|
1884
|
+
matched: false,
|
|
1885
|
+
reason: anyOpenedAcrossPrivs ? "TAMPERED_HEADER" : "WRONG_RECIPIENT_KEY"
|
|
1886
|
+
};
|
|
1525
1887
|
}
|
|
1526
|
-
const payloadKey = slotsPayloadKey({ cek: matchedCek, nonce: envelope.nonce });
|
|
1527
|
-
const adContent = adContentSlots({
|
|
1528
|
-
kem: envelope.kem,
|
|
1529
|
-
nonce: envelope.nonce,
|
|
1530
|
-
slotsHash,
|
|
1531
|
-
slotsMac: envelope.slots_mac
|
|
1532
|
-
});
|
|
1533
1888
|
try {
|
|
1534
|
-
const plaintext =
|
|
1535
|
-
|
|
1536
|
-
nonce: envelope.nonce,
|
|
1537
|
-
aad: adContent,
|
|
1889
|
+
const plaintext = streamOpen({
|
|
1890
|
+
payloadKey: slotsPayloadKey({ cek: matchedCek, nonce: envelope.nonce }),
|
|
1538
1891
|
ciphertext
|
|
1539
1892
|
});
|
|
1540
1893
|
return { matched: true, plaintext };
|
|
1541
1894
|
} catch (e) {
|
|
1542
|
-
if (!(e instanceof
|
|
1895
|
+
if (!(e instanceof StreamTamperedError)) throw e;
|
|
1543
1896
|
return { matched: false, reason: "TAMPERED_CIPHERTEXT" };
|
|
1544
1897
|
}
|
|
1545
1898
|
}
|
|
1546
1899
|
function eciesSealedPoeTrialDecrypt(args) {
|
|
1547
1900
|
const { envelope } = args;
|
|
1548
|
-
const constantTimeN = args.constantTimeN ?? true;
|
|
1549
1901
|
const hasBundle = "recipientKeyBundle" in args;
|
|
1550
1902
|
const recipientSecretKeys = hasBundle ? selectBundleSecrets(envelope, args.recipientKeyBundle) : args.recipientSecretKeys;
|
|
1551
1903
|
if (recipientSecretKeys.length === 0) {
|
|
1552
1904
|
if (hasBundle) {
|
|
1553
|
-
return { kind: "
|
|
1905
|
+
return { kind: "no_match" };
|
|
1554
1906
|
}
|
|
1555
1907
|
throw new EciesSealedPoeError(
|
|
1556
1908
|
"INVALID_RECIPIENT_KEY",
|
|
@@ -1558,8 +1910,7 @@ function eciesSealedPoeTrialDecrypt(args) {
|
|
|
1558
1910
|
);
|
|
1559
1911
|
}
|
|
1560
1912
|
assertEnvelopeStructure(envelope, recipientSecretKeys, void 0);
|
|
1561
|
-
const slotsHash = slotsHashBytes(envelope);
|
|
1562
|
-
let anyCandidateRecovered = false;
|
|
1913
|
+
const slotsHash = slotsHashBytes(envelope, args.hashes);
|
|
1563
1914
|
for (let k = 0; k < recipientSecretKeys.length; k++) {
|
|
1564
1915
|
if (args._privsAttemptedOut !== void 0) {
|
|
1565
1916
|
args._privsAttemptedOut.count = k + 1;
|
|
@@ -1567,38 +1918,1480 @@ function eciesSealedPoeTrialDecrypt(args) {
|
|
|
1567
1918
|
if (args._slotsAttemptedOut !== void 0) {
|
|
1568
1919
|
args._slotsAttemptedOut.count = 0;
|
|
1569
1920
|
}
|
|
1570
|
-
const
|
|
1571
|
-
envelope,
|
|
1572
|
-
recipientSecretKeys[k],
|
|
1573
|
-
constantTimeN,
|
|
1574
|
-
args._slotsAttemptedOut
|
|
1575
|
-
);
|
|
1921
|
+
const pass = runPrivPass(envelope, recipientSecretKeys[k], slotsHash, args._slotsAttemptedOut);
|
|
1576
1922
|
if (args._slotsAttemptedOut?.perPrivCounts !== void 0) {
|
|
1577
1923
|
args._slotsAttemptedOut.perPrivCounts.push(args._slotsAttemptedOut.count);
|
|
1578
1924
|
}
|
|
1579
|
-
if (
|
|
1580
|
-
if (
|
|
1581
|
-
|
|
1925
|
+
if (!pass.found) continue;
|
|
1926
|
+
if (pass.cekConflict) {
|
|
1927
|
+
return { kind: "no_match" };
|
|
1928
|
+
}
|
|
1929
|
+
return {
|
|
1930
|
+
kind: "match",
|
|
1931
|
+
slotIdx: pass.selectedSlotIdx,
|
|
1932
|
+
cek: pass.selectedCek
|
|
1933
|
+
};
|
|
1934
|
+
}
|
|
1935
|
+
return { kind: "no_match" };
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
// src/unicode/nfkc16-data.ts
|
|
1939
|
+
var NFKC16_DECOMPOSITION_PACKED = [
|
|
1940
|
+
"A0=20;A8=20 308;AA=61;AF=20 304;B2=32;B3=33;B4=20 301;B5=3BC;B8=20 327;B9=31;BA=6F;BC=31",
|
|
1941
|
+
" 2044 34;BD=31 2044 32;BE=33 2044 34;C0=41 300;C1=41 301;C2=41 302;C3=41 303;C4=41 308;C",
|
|
1942
|
+
"5=41 30A;C7=43 327;C8=45 300;C9=45 301;CA=45 302;CB=45 308;CC=49 300;CD=49 301;CE=49 302",
|
|
1943
|
+
";CF=49 308;D1=4E 303;D2=4F 300;D3=4F 301;D4=4F 302;D5=4F 303;D6=4F 308;D9=55 300;DA=55 3",
|
|
1944
|
+
"01;DB=55 302;DC=55 308;DD=59 301;E0=61 300;E1=61 301;E2=61 302;E3=61 303;E4=61 308;E5=61",
|
|
1945
|
+
" 30A;E7=63 327;E8=65 300;E9=65 301;EA=65 302;EB=65 308;EC=69 300;ED=69 301;EE=69 302;EF=",
|
|
1946
|
+
"69 308;F1=6E 303;F2=6F 300;F3=6F 301;F4=6F 302;F5=6F 303;F6=6F 308;F9=75 300;FA=75 301;F",
|
|
1947
|
+
"B=75 302;FC=75 308;FD=79 301;FF=79 308;100=41 304;101=61 304;102=41 306;103=61 306;104=4",
|
|
1948
|
+
"1 328;105=61 328;106=43 301;107=63 301;108=43 302;109=63 302;10A=43 307;10B=63 307;10C=4",
|
|
1949
|
+
"3 30C;10D=63 30C;10E=44 30C;10F=64 30C;112=45 304;113=65 304;114=45 306;115=65 306;116=4",
|
|
1950
|
+
"5 307;117=65 307;118=45 328;119=65 328;11A=45 30C;11B=65 30C;11C=47 302;11D=67 302;11E=4",
|
|
1951
|
+
"7 306;11F=67 306;120=47 307;121=67 307;122=47 327;123=67 327;124=48 302;125=68 302;128=4",
|
|
1952
|
+
"9 303;129=69 303;12A=49 304;12B=69 304;12C=49 306;12D=69 306;12E=49 328;12F=69 328;130=4",
|
|
1953
|
+
"9 307;132=49 4A;133=69 6A;134=4A 302;135=6A 302;136=4B 327;137=6B 327;139=4C 301;13A=6C ",
|
|
1954
|
+
"301;13B=4C 327;13C=6C 327;13D=4C 30C;13E=6C 30C;13F=4C B7;140=6C B7;143=4E 301;144=6E 30",
|
|
1955
|
+
"1;145=4E 327;146=6E 327;147=4E 30C;148=6E 30C;149=2BC 6E;14C=4F 304;14D=6F 304;14E=4F 30",
|
|
1956
|
+
"6;14F=6F 306;150=4F 30B;151=6F 30B;154=52 301;155=72 301;156=52 327;157=72 327;158=52 30",
|
|
1957
|
+
"C;159=72 30C;15A=53 301;15B=73 301;15C=53 302;15D=73 302;15E=53 327;15F=73 327;160=53 30",
|
|
1958
|
+
"C;161=73 30C;162=54 327;163=74 327;164=54 30C;165=74 30C;168=55 303;169=75 303;16A=55 30",
|
|
1959
|
+
"4;16B=75 304;16C=55 306;16D=75 306;16E=55 30A;16F=75 30A;170=55 30B;171=75 30B;172=55 32",
|
|
1960
|
+
"8;173=75 328;174=57 302;175=77 302;176=59 302;177=79 302;178=59 308;179=5A 301;17A=7A 30",
|
|
1961
|
+
"1;17B=5A 307;17C=7A 307;17D=5A 30C;17E=7A 30C;17F=73;1A0=4F 31B;1A1=6F 31B;1AF=55 31B;1B",
|
|
1962
|
+
"0=75 31B;1C4=44 5A 30C;1C5=44 7A 30C;1C6=64 7A 30C;1C7=4C 4A;1C8=4C 6A;1C9=6C 6A;1CA=4E ",
|
|
1963
|
+
"4A;1CB=4E 6A;1CC=6E 6A;1CD=41 30C;1CE=61 30C;1CF=49 30C;1D0=69 30C;1D1=4F 30C;1D2=6F 30C",
|
|
1964
|
+
";1D3=55 30C;1D4=75 30C;1D5=55 308 304;1D6=75 308 304;1D7=55 308 301;1D8=75 308 301;1D9=5",
|
|
1965
|
+
"5 308 30C;1DA=75 308 30C;1DB=55 308 300;1DC=75 308 300;1DE=41 308 304;1DF=61 308 304;1E0",
|
|
1966
|
+
"=41 307 304;1E1=61 307 304;1E2=C6 304;1E3=E6 304;1E6=47 30C;1E7=67 30C;1E8=4B 30C;1E9=6B",
|
|
1967
|
+
" 30C;1EA=4F 328;1EB=6F 328;1EC=4F 328 304;1ED=6F 328 304;1EE=1B7 30C;1EF=292 30C;1F0=6A ",
|
|
1968
|
+
"30C;1F1=44 5A;1F2=44 7A;1F3=64 7A;1F4=47 301;1F5=67 301;1F8=4E 300;1F9=6E 300;1FA=41 30A",
|
|
1969
|
+
" 301;1FB=61 30A 301;1FC=C6 301;1FD=E6 301;1FE=D8 301;1FF=F8 301;200=41 30F;201=61 30F;20",
|
|
1970
|
+
"2=41 311;203=61 311;204=45 30F;205=65 30F;206=45 311;207=65 311;208=49 30F;209=69 30F;20",
|
|
1971
|
+
"A=49 311;20B=69 311;20C=4F 30F;20D=6F 30F;20E=4F 311;20F=6F 311;210=52 30F;211=72 30F;21",
|
|
1972
|
+
"2=52 311;213=72 311;214=55 30F;215=75 30F;216=55 311;217=75 311;218=53 326;219=73 326;21",
|
|
1973
|
+
"A=54 326;21B=74 326;21E=48 30C;21F=68 30C;226=41 307;227=61 307;228=45 327;229=65 327;22",
|
|
1974
|
+
"A=4F 308 304;22B=6F 308 304;22C=4F 303 304;22D=6F 303 304;22E=4F 307;22F=6F 307;230=4F 3",
|
|
1975
|
+
"07 304;231=6F 307 304;232=59 304;233=79 304;2B0=68;2B1=266;2B2=6A;2B3=72;2B4=279;2B5=27B",
|
|
1976
|
+
";2B6=281;2B7=77;2B8=79;2D8=20 306;2D9=20 307;2DA=20 30A;2DB=20 328;2DC=20 303;2DD=20 30B",
|
|
1977
|
+
";2E0=263;2E1=6C;2E2=73;2E3=78;2E4=295;340=300;341=301;343=313;344=308 301;374=2B9;37A=20",
|
|
1978
|
+
" 345;37E=3B;384=20 301;385=20 308 301;386=391 301;387=B7;388=395 301;389=397 301;38A=399",
|
|
1979
|
+
" 301;38C=39F 301;38E=3A5 301;38F=3A9 301;390=3B9 308 301;3AA=399 308;3AB=3A5 308;3AC=3B1",
|
|
1980
|
+
" 301;3AD=3B5 301;3AE=3B7 301;3AF=3B9 301;3B0=3C5 308 301;3CA=3B9 308;3CB=3C5 308;3CC=3BF",
|
|
1981
|
+
" 301;3CD=3C5 301;3CE=3C9 301;3D0=3B2;3D1=3B8;3D2=3A5;3D3=3A5 301;3D4=3A5 308;3D5=3C6;3D6",
|
|
1982
|
+
"=3C0;3F0=3BA;3F1=3C1;3F2=3C2;3F4=398;3F5=3B5;3F9=3A3;400=415 300;401=415 308;403=413 301",
|
|
1983
|
+
";407=406 308;40C=41A 301;40D=418 300;40E=423 306;419=418 306;439=438 306;450=435 300;451",
|
|
1984
|
+
"=435 308;453=433 301;457=456 308;45C=43A 301;45D=438 300;45E=443 306;476=474 30F;477=475",
|
|
1985
|
+
" 30F;4C1=416 306;4C2=436 306;4D0=410 306;4D1=430 306;4D2=410 308;4D3=430 308;4D6=415 306",
|
|
1986
|
+
";4D7=435 306;4DA=4D8 308;4DB=4D9 308;4DC=416 308;4DD=436 308;4DE=417 308;4DF=437 308;4E2",
|
|
1987
|
+
"=418 304;4E3=438 304;4E4=418 308;4E5=438 308;4E6=41E 308;4E7=43E 308;4EA=4E8 308;4EB=4E9",
|
|
1988
|
+
" 308;4EC=42D 308;4ED=44D 308;4EE=423 304;4EF=443 304;4F0=423 308;4F1=443 308;4F2=423 30B",
|
|
1989
|
+
";4F3=443 30B;4F4=427 308;4F5=447 308;4F8=42B 308;4F9=44B 308;587=565 582;622=627 653;623",
|
|
1990
|
+
"=627 654;624=648 654;625=627 655;626=64A 654;675=627 674;676=648 674;677=6C7 674;678=64A",
|
|
1991
|
+
" 674;6C0=6D5 654;6C2=6C1 654;6D3=6D2 654;929=928 93C;931=930 93C;934=933 93C;958=915 93C",
|
|
1992
|
+
";959=916 93C;95A=917 93C;95B=91C 93C;95C=921 93C;95D=922 93C;95E=92B 93C;95F=92F 93C;9CB",
|
|
1993
|
+
"=9C7 9BE;9CC=9C7 9D7;9DC=9A1 9BC;9DD=9A2 9BC;9DF=9AF 9BC;A33=A32 A3C;A36=A38 A3C;A59=A16",
|
|
1994
|
+
" A3C;A5A=A17 A3C;A5B=A1C A3C;A5E=A2B A3C;B48=B47 B56;B4B=B47 B3E;B4C=B47 B57;B5C=B21 B3C",
|
|
1995
|
+
";B5D=B22 B3C;B94=B92 BD7;BCA=BC6 BBE;BCB=BC7 BBE;BCC=BC6 BD7;C48=C46 C56;CC0=CBF CD5;CC7",
|
|
1996
|
+
"=CC6 CD5;CC8=CC6 CD6;CCA=CC6 CC2;CCB=CC6 CC2 CD5;D4A=D46 D3E;D4B=D47 D3E;D4C=D46 D57;DDA",
|
|
1997
|
+
"=DD9 DCA;DDC=DD9 DCF;DDD=DD9 DCF DCA;DDE=DD9 DDF;E33=E4D E32;EB3=ECD EB2;EDC=EAB E99;EDD",
|
|
1998
|
+
"=EAB EA1;F0C=F0B;F43=F42 FB7;F4D=F4C FB7;F52=F51 FB7;F57=F56 FB7;F5C=F5B FB7;F69=F40 FB5",
|
|
1999
|
+
";F73=F71 F72;F75=F71 F74;F76=FB2 F80;F77=FB2 F71 F80;F78=FB3 F80;F79=FB3 F71 F80;F81=F71",
|
|
2000
|
+
" F80;F93=F92 FB7;F9D=F9C FB7;FA2=FA1 FB7;FA7=FA6 FB7;FAC=FAB FB7;FB9=F90 FB5;1026=1025 1",
|
|
2001
|
+
"02E;10FC=10DC;1B06=1B05 1B35;1B08=1B07 1B35;1B0A=1B09 1B35;1B0C=1B0B 1B35;1B0E=1B0D 1B35",
|
|
2002
|
+
";1B12=1B11 1B35;1B3B=1B3A 1B35;1B3D=1B3C 1B35;1B40=1B3E 1B35;1B41=1B3F 1B35;1B43=1B42 1B",
|
|
2003
|
+
"35;1D2C=41;1D2D=C6;1D2E=42;1D30=44;1D31=45;1D32=18E;1D33=47;1D34=48;1D35=49;1D36=4A;1D37",
|
|
2004
|
+
"=4B;1D38=4C;1D39=4D;1D3A=4E;1D3C=4F;1D3D=222;1D3E=50;1D3F=52;1D40=54;1D41=55;1D42=57;1D4",
|
|
2005
|
+
"3=61;1D44=250;1D45=251;1D46=1D02;1D47=62;1D48=64;1D49=65;1D4A=259;1D4B=25B;1D4C=25C;1D4D",
|
|
2006
|
+
"=67;1D4F=6B;1D50=6D;1D51=14B;1D52=6F;1D53=254;1D54=1D16;1D55=1D17;1D56=70;1D57=74;1D58=7",
|
|
2007
|
+
"5;1D59=1D1D;1D5A=26F;1D5B=76;1D5C=1D25;1D5D=3B2;1D5E=3B3;1D5F=3B4;1D60=3C6;1D61=3C7;1D62",
|
|
2008
|
+
"=69;1D63=72;1D64=75;1D65=76;1D66=3B2;1D67=3B3;1D68=3C1;1D69=3C6;1D6A=3C7;1D78=43D;1D9B=2",
|
|
2009
|
+
"52;1D9C=63;1D9D=255;1D9E=F0;1D9F=25C;1DA0=66;1DA1=25F;1DA2=261;1DA3=265;1DA4=268;1DA5=26",
|
|
2010
|
+
"9;1DA6=26A;1DA7=1D7B;1DA8=29D;1DA9=26D;1DAA=1D85;1DAB=29F;1DAC=271;1DAD=270;1DAE=272;1DA",
|
|
2011
|
+
"F=273;1DB0=274;1DB1=275;1DB2=278;1DB3=282;1DB4=283;1DB5=1AB;1DB6=289;1DB7=28A;1DB8=1D1C;",
|
|
2012
|
+
"1DB9=28B;1DBA=28C;1DBB=7A;1DBC=290;1DBD=291;1DBE=292;1DBF=3B8;1E00=41 325;1E01=61 325;1E",
|
|
2013
|
+
"02=42 307;1E03=62 307;1E04=42 323;1E05=62 323;1E06=42 331;1E07=62 331;1E08=43 327 301;1E",
|
|
2014
|
+
"09=63 327 301;1E0A=44 307;1E0B=64 307;1E0C=44 323;1E0D=64 323;1E0E=44 331;1E0F=64 331;1E",
|
|
2015
|
+
"10=44 327;1E11=64 327;1E12=44 32D;1E13=64 32D;1E14=45 304 300;1E15=65 304 300;1E16=45 30",
|
|
2016
|
+
"4 301;1E17=65 304 301;1E18=45 32D;1E19=65 32D;1E1A=45 330;1E1B=65 330;1E1C=45 327 306;1E",
|
|
2017
|
+
"1D=65 327 306;1E1E=46 307;1E1F=66 307;1E20=47 304;1E21=67 304;1E22=48 307;1E23=68 307;1E",
|
|
2018
|
+
"24=48 323;1E25=68 323;1E26=48 308;1E27=68 308;1E28=48 327;1E29=68 327;1E2A=48 32E;1E2B=6",
|
|
2019
|
+
"8 32E;1E2C=49 330;1E2D=69 330;1E2E=49 308 301;1E2F=69 308 301;1E30=4B 301;1E31=6B 301;1E",
|
|
2020
|
+
"32=4B 323;1E33=6B 323;1E34=4B 331;1E35=6B 331;1E36=4C 323;1E37=6C 323;1E38=4C 323 304;1E",
|
|
2021
|
+
"39=6C 323 304;1E3A=4C 331;1E3B=6C 331;1E3C=4C 32D;1E3D=6C 32D;1E3E=4D 301;1E3F=6D 301;1E",
|
|
2022
|
+
"40=4D 307;1E41=6D 307;1E42=4D 323;1E43=6D 323;1E44=4E 307;1E45=6E 307;1E46=4E 323;1E47=6",
|
|
2023
|
+
"E 323;1E48=4E 331;1E49=6E 331;1E4A=4E 32D;1E4B=6E 32D;1E4C=4F 303 301;1E4D=6F 303 301;1E",
|
|
2024
|
+
"4E=4F 303 308;1E4F=6F 303 308;1E50=4F 304 300;1E51=6F 304 300;1E52=4F 304 301;1E53=6F 30",
|
|
2025
|
+
"4 301;1E54=50 301;1E55=70 301;1E56=50 307;1E57=70 307;1E58=52 307;1E59=72 307;1E5A=52 32",
|
|
2026
|
+
"3;1E5B=72 323;1E5C=52 323 304;1E5D=72 323 304;1E5E=52 331;1E5F=72 331;1E60=53 307;1E61=7",
|
|
2027
|
+
"3 307;1E62=53 323;1E63=73 323;1E64=53 301 307;1E65=73 301 307;1E66=53 30C 307;1E67=73 30",
|
|
2028
|
+
"C 307;1E68=53 323 307;1E69=73 323 307;1E6A=54 307;1E6B=74 307;1E6C=54 323;1E6D=74 323;1E",
|
|
2029
|
+
"6E=54 331;1E6F=74 331;1E70=54 32D;1E71=74 32D;1E72=55 324;1E73=75 324;1E74=55 330;1E75=7",
|
|
2030
|
+
"5 330;1E76=55 32D;1E77=75 32D;1E78=55 303 301;1E79=75 303 301;1E7A=55 304 308;1E7B=75 30",
|
|
2031
|
+
"4 308;1E7C=56 303;1E7D=76 303;1E7E=56 323;1E7F=76 323;1E80=57 300;1E81=77 300;1E82=57 30",
|
|
2032
|
+
"1;1E83=77 301;1E84=57 308;1E85=77 308;1E86=57 307;1E87=77 307;1E88=57 323;1E89=77 323;1E",
|
|
2033
|
+
"8A=58 307;1E8B=78 307;1E8C=58 308;1E8D=78 308;1E8E=59 307;1E8F=79 307;1E90=5A 302;1E91=7",
|
|
2034
|
+
"A 302;1E92=5A 323;1E93=7A 323;1E94=5A 331;1E95=7A 331;1E96=68 331;1E97=74 308;1E98=77 30",
|
|
2035
|
+
"A;1E99=79 30A;1E9A=61 2BE;1E9B=73 307;1EA0=41 323;1EA1=61 323;1EA2=41 309;1EA3=61 309;1E",
|
|
2036
|
+
"A4=41 302 301;1EA5=61 302 301;1EA6=41 302 300;1EA7=61 302 300;1EA8=41 302 309;1EA9=61 30",
|
|
2037
|
+
"2 309;1EAA=41 302 303;1EAB=61 302 303;1EAC=41 323 302;1EAD=61 323 302;1EAE=41 306 301;1E",
|
|
2038
|
+
"AF=61 306 301;1EB0=41 306 300;1EB1=61 306 300;1EB2=41 306 309;1EB3=61 306 309;1EB4=41 30",
|
|
2039
|
+
"6 303;1EB5=61 306 303;1EB6=41 323 306;1EB7=61 323 306;1EB8=45 323;1EB9=65 323;1EBA=45 30",
|
|
2040
|
+
"9;1EBB=65 309;1EBC=45 303;1EBD=65 303;1EBE=45 302 301;1EBF=65 302 301;1EC0=45 302 300;1E",
|
|
2041
|
+
"C1=65 302 300;1EC2=45 302 309;1EC3=65 302 309;1EC4=45 302 303;1EC5=65 302 303;1EC6=45 32",
|
|
2042
|
+
"3 302;1EC7=65 323 302;1EC8=49 309;1EC9=69 309;1ECA=49 323;1ECB=69 323;1ECC=4F 323;1ECD=6",
|
|
2043
|
+
"F 323;1ECE=4F 309;1ECF=6F 309;1ED0=4F 302 301;1ED1=6F 302 301;1ED2=4F 302 300;1ED3=6F 30",
|
|
2044
|
+
"2 300;1ED4=4F 302 309;1ED5=6F 302 309;1ED6=4F 302 303;1ED7=6F 302 303;1ED8=4F 323 302;1E",
|
|
2045
|
+
"D9=6F 323 302;1EDA=4F 31B 301;1EDB=6F 31B 301;1EDC=4F 31B 300;1EDD=6F 31B 300;1EDE=4F 31",
|
|
2046
|
+
"B 309;1EDF=6F 31B 309;1EE0=4F 31B 303;1EE1=6F 31B 303;1EE2=4F 31B 323;1EE3=6F 31B 323;1E",
|
|
2047
|
+
"E4=55 323;1EE5=75 323;1EE6=55 309;1EE7=75 309;1EE8=55 31B 301;1EE9=75 31B 301;1EEA=55 31",
|
|
2048
|
+
"B 300;1EEB=75 31B 300;1EEC=55 31B 309;1EED=75 31B 309;1EEE=55 31B 303;1EEF=75 31B 303;1E",
|
|
2049
|
+
"F0=55 31B 323;1EF1=75 31B 323;1EF2=59 300;1EF3=79 300;1EF4=59 323;1EF5=79 323;1EF6=59 30",
|
|
2050
|
+
"9;1EF7=79 309;1EF8=59 303;1EF9=79 303;1F00=3B1 313;1F01=3B1 314;1F02=3B1 313 300;1F03=3B",
|
|
2051
|
+
"1 314 300;1F04=3B1 313 301;1F05=3B1 314 301;1F06=3B1 313 342;1F07=3B1 314 342;1F08=391 3",
|
|
2052
|
+
"13;1F09=391 314;1F0A=391 313 300;1F0B=391 314 300;1F0C=391 313 301;1F0D=391 314 301;1F0E",
|
|
2053
|
+
"=391 313 342;1F0F=391 314 342;1F10=3B5 313;1F11=3B5 314;1F12=3B5 313 300;1F13=3B5 314 30",
|
|
2054
|
+
"0;1F14=3B5 313 301;1F15=3B5 314 301;1F18=395 313;1F19=395 314;1F1A=395 313 300;1F1B=395 ",
|
|
2055
|
+
"314 300;1F1C=395 313 301;1F1D=395 314 301;1F20=3B7 313;1F21=3B7 314;1F22=3B7 313 300;1F2",
|
|
2056
|
+
"3=3B7 314 300;1F24=3B7 313 301;1F25=3B7 314 301;1F26=3B7 313 342;1F27=3B7 314 342;1F28=3",
|
|
2057
|
+
"97 313;1F29=397 314;1F2A=397 313 300;1F2B=397 314 300;1F2C=397 313 301;1F2D=397 314 301;",
|
|
2058
|
+
"1F2E=397 313 342;1F2F=397 314 342;1F30=3B9 313;1F31=3B9 314;1F32=3B9 313 300;1F33=3B9 31",
|
|
2059
|
+
"4 300;1F34=3B9 313 301;1F35=3B9 314 301;1F36=3B9 313 342;1F37=3B9 314 342;1F38=399 313;1",
|
|
2060
|
+
"F39=399 314;1F3A=399 313 300;1F3B=399 314 300;1F3C=399 313 301;1F3D=399 314 301;1F3E=399",
|
|
2061
|
+
" 313 342;1F3F=399 314 342;1F40=3BF 313;1F41=3BF 314;1F42=3BF 313 300;1F43=3BF 314 300;1F",
|
|
2062
|
+
"44=3BF 313 301;1F45=3BF 314 301;1F48=39F 313;1F49=39F 314;1F4A=39F 313 300;1F4B=39F 314 ",
|
|
2063
|
+
"300;1F4C=39F 313 301;1F4D=39F 314 301;1F50=3C5 313;1F51=3C5 314;1F52=3C5 313 300;1F53=3C",
|
|
2064
|
+
"5 314 300;1F54=3C5 313 301;1F55=3C5 314 301;1F56=3C5 313 342;1F57=3C5 314 342;1F59=3A5 3",
|
|
2065
|
+
"14;1F5B=3A5 314 300;1F5D=3A5 314 301;1F5F=3A5 314 342;1F60=3C9 313;1F61=3C9 314;1F62=3C9",
|
|
2066
|
+
" 313 300;1F63=3C9 314 300;1F64=3C9 313 301;1F65=3C9 314 301;1F66=3C9 313 342;1F67=3C9 31",
|
|
2067
|
+
"4 342;1F68=3A9 313;1F69=3A9 314;1F6A=3A9 313 300;1F6B=3A9 314 300;1F6C=3A9 313 301;1F6D=",
|
|
2068
|
+
"3A9 314 301;1F6E=3A9 313 342;1F6F=3A9 314 342;1F70=3B1 300;1F71=3B1 301;1F72=3B5 300;1F7",
|
|
2069
|
+
"3=3B5 301;1F74=3B7 300;1F75=3B7 301;1F76=3B9 300;1F77=3B9 301;1F78=3BF 300;1F79=3BF 301;",
|
|
2070
|
+
"1F7A=3C5 300;1F7B=3C5 301;1F7C=3C9 300;1F7D=3C9 301;1F80=3B1 313 345;1F81=3B1 314 345;1F",
|
|
2071
|
+
"82=3B1 313 300 345;1F83=3B1 314 300 345;1F84=3B1 313 301 345;1F85=3B1 314 301 345;1F86=3",
|
|
2072
|
+
"B1 313 342 345;1F87=3B1 314 342 345;1F88=391 313 345;1F89=391 314 345;1F8A=391 313 300 3",
|
|
2073
|
+
"45;1F8B=391 314 300 345;1F8C=391 313 301 345;1F8D=391 314 301 345;1F8E=391 313 342 345;1",
|
|
2074
|
+
"F8F=391 314 342 345;1F90=3B7 313 345;1F91=3B7 314 345;1F92=3B7 313 300 345;1F93=3B7 314 ",
|
|
2075
|
+
"300 345;1F94=3B7 313 301 345;1F95=3B7 314 301 345;1F96=3B7 313 342 345;1F97=3B7 314 342 ",
|
|
2076
|
+
"345;1F98=397 313 345;1F99=397 314 345;1F9A=397 313 300 345;1F9B=397 314 300 345;1F9C=397",
|
|
2077
|
+
" 313 301 345;1F9D=397 314 301 345;1F9E=397 313 342 345;1F9F=397 314 342 345;1FA0=3C9 313",
|
|
2078
|
+
" 345;1FA1=3C9 314 345;1FA2=3C9 313 300 345;1FA3=3C9 314 300 345;1FA4=3C9 313 301 345;1FA",
|
|
2079
|
+
"5=3C9 314 301 345;1FA6=3C9 313 342 345;1FA7=3C9 314 342 345;1FA8=3A9 313 345;1FA9=3A9 31",
|
|
2080
|
+
"4 345;1FAA=3A9 313 300 345;1FAB=3A9 314 300 345;1FAC=3A9 313 301 345;1FAD=3A9 314 301 34",
|
|
2081
|
+
"5;1FAE=3A9 313 342 345;1FAF=3A9 314 342 345;1FB0=3B1 306;1FB1=3B1 304;1FB2=3B1 300 345;1",
|
|
2082
|
+
"FB3=3B1 345;1FB4=3B1 301 345;1FB6=3B1 342;1FB7=3B1 342 345;1FB8=391 306;1FB9=391 304;1FB",
|
|
2083
|
+
"A=391 300;1FBB=391 301;1FBC=391 345;1FBD=20 313;1FBE=3B9;1FBF=20 313;1FC0=20 342;1FC1=20",
|
|
2084
|
+
" 308 342;1FC2=3B7 300 345;1FC3=3B7 345;1FC4=3B7 301 345;1FC6=3B7 342;1FC7=3B7 342 345;1F",
|
|
2085
|
+
"C8=395 300;1FC9=395 301;1FCA=397 300;1FCB=397 301;1FCC=397 345;1FCD=20 313 300;1FCE=20 3",
|
|
2086
|
+
"13 301;1FCF=20 313 342;1FD0=3B9 306;1FD1=3B9 304;1FD2=3B9 308 300;1FD3=3B9 308 301;1FD6=",
|
|
2087
|
+
"3B9 342;1FD7=3B9 308 342;1FD8=399 306;1FD9=399 304;1FDA=399 300;1FDB=399 301;1FDD=20 314",
|
|
2088
|
+
" 300;1FDE=20 314 301;1FDF=20 314 342;1FE0=3C5 306;1FE1=3C5 304;1FE2=3C5 308 300;1FE3=3C5",
|
|
2089
|
+
" 308 301;1FE4=3C1 313;1FE5=3C1 314;1FE6=3C5 342;1FE7=3C5 308 342;1FE8=3A5 306;1FE9=3A5 3",
|
|
2090
|
+
"04;1FEA=3A5 300;1FEB=3A5 301;1FEC=3A1 314;1FED=20 308 300;1FEE=20 308 301;1FEF=60;1FF2=3",
|
|
2091
|
+
"C9 300 345;1FF3=3C9 345;1FF4=3C9 301 345;1FF6=3C9 342;1FF7=3C9 342 345;1FF8=39F 300;1FF9",
|
|
2092
|
+
"=39F 301;1FFA=3A9 300;1FFB=3A9 301;1FFC=3A9 345;1FFD=20 301;1FFE=20 314;2000=20;2001=20;",
|
|
2093
|
+
"2002=20;2003=20;2004=20;2005=20;2006=20;2007=20;2008=20;2009=20;200A=20;2011=2010;2017=2",
|
|
2094
|
+
"0 333;2024=2E;2025=2E 2E;2026=2E 2E 2E;202F=20;2033=2032 2032;2034=2032 2032 2032;2036=2",
|
|
2095
|
+
"035 2035;2037=2035 2035 2035;203C=21 21;203E=20 305;2047=3F 3F;2048=3F 21;2049=21 3F;205",
|
|
2096
|
+
"7=2032 2032 2032 2032;205F=20;2070=30;2071=69;2074=34;2075=35;2076=36;2077=37;2078=38;20",
|
|
2097
|
+
"79=39;207A=2B;207B=2212;207C=3D;207D=28;207E=29;207F=6E;2080=30;2081=31;2082=32;2083=33;",
|
|
2098
|
+
"2084=34;2085=35;2086=36;2087=37;2088=38;2089=39;208A=2B;208B=2212;208C=3D;208D=28;208E=2",
|
|
2099
|
+
"9;2090=61;2091=65;2092=6F;2093=78;2094=259;2095=68;2096=6B;2097=6C;2098=6D;2099=6E;209A=",
|
|
2100
|
+
"70;209B=73;209C=74;20A8=52 73;2100=61 2F 63;2101=61 2F 73;2102=43;2103=B0 43;2105=63 2F ",
|
|
2101
|
+
"6F;2106=63 2F 75;2107=190;2109=B0 46;210A=67;210B=48;210C=48;210D=48;210E=68;210F=127;21",
|
|
2102
|
+
"10=49;2111=49;2112=4C;2113=6C;2115=4E;2116=4E 6F;2119=50;211A=51;211B=52;211C=52;211D=52",
|
|
2103
|
+
";2120=53 4D;2121=54 45 4C;2122=54 4D;2124=5A;2126=3A9;2128=5A;212A=4B;212B=41 30A;212C=4",
|
|
2104
|
+
"2;212D=43;212F=65;2130=45;2131=46;2133=4D;2134=6F;2135=5D0;2136=5D1;2137=5D2;2138=5D3;21",
|
|
2105
|
+
"39=69;213B=46 41 58;213C=3C0;213D=3B3;213E=393;213F=3A0;2140=2211;2145=44;2146=64;2147=6",
|
|
2106
|
+
"5;2148=69;2149=6A;2150=31 2044 37;2151=31 2044 39;2152=31 2044 31 30;2153=31 2044 33;215",
|
|
2107
|
+
"4=32 2044 33;2155=31 2044 35;2156=32 2044 35;2157=33 2044 35;2158=34 2044 35;2159=31 204",
|
|
2108
|
+
"4 36;215A=35 2044 36;215B=31 2044 38;215C=33 2044 38;215D=35 2044 38;215E=37 2044 38;215",
|
|
2109
|
+
"F=31 2044;2160=49;2161=49 49;2162=49 49 49;2163=49 56;2164=56;2165=56 49;2166=56 49 49;2",
|
|
2110
|
+
"167=56 49 49 49;2168=49 58;2169=58;216A=58 49;216B=58 49 49;216C=4C;216D=43;216E=44;216F",
|
|
2111
|
+
"=4D;2170=69;2171=69 69;2172=69 69 69;2173=69 76;2174=76;2175=76 69;2176=76 69 69;2177=76",
|
|
2112
|
+
" 69 69 69;2178=69 78;2179=78;217A=78 69;217B=78 69 69;217C=6C;217D=63;217E=64;217F=6D;21",
|
|
2113
|
+
"89=30 2044 33;219A=2190 338;219B=2192 338;21AE=2194 338;21CD=21D0 338;21CE=21D4 338;21CF",
|
|
2114
|
+
"=21D2 338;2204=2203 338;2209=2208 338;220C=220B 338;2224=2223 338;2226=2225 338;222C=222",
|
|
2115
|
+
"B 222B;222D=222B 222B 222B;222F=222E 222E;2230=222E 222E 222E;2241=223C 338;2244=2243 33",
|
|
2116
|
+
"8;2247=2245 338;2249=2248 338;2260=3D 338;2262=2261 338;226D=224D 338;226E=3C 338;226F=3",
|
|
2117
|
+
"E 338;2270=2264 338;2271=2265 338;2274=2272 338;2275=2273 338;2278=2276 338;2279=2277 33",
|
|
2118
|
+
"8;2280=227A 338;2281=227B 338;2284=2282 338;2285=2283 338;2288=2286 338;2289=2287 338;22",
|
|
2119
|
+
"AC=22A2 338;22AD=22A8 338;22AE=22A9 338;22AF=22AB 338;22E0=227C 338;22E1=227D 338;22E2=2",
|
|
2120
|
+
"291 338;22E3=2292 338;22EA=22B2 338;22EB=22B3 338;22EC=22B4 338;22ED=22B5 338;2329=3008;",
|
|
2121
|
+
"232A=3009;2460=31;2461=32;2462=33;2463=34;2464=35;2465=36;2466=37;2467=38;2468=39;2469=3",
|
|
2122
|
+
"1 30;246A=31 31;246B=31 32;246C=31 33;246D=31 34;246E=31 35;246F=31 36;2470=31 37;2471=3",
|
|
2123
|
+
"1 38;2472=31 39;2473=32 30;2474=28 31 29;2475=28 32 29;2476=28 33 29;2477=28 34 29;2478=",
|
|
2124
|
+
"28 35 29;2479=28 36 29;247A=28 37 29;247B=28 38 29;247C=28 39 29;247D=28 31 30 29;247E=2",
|
|
2125
|
+
"8 31 31 29;247F=28 31 32 29;2480=28 31 33 29;2481=28 31 34 29;2482=28 31 35 29;2483=28 3",
|
|
2126
|
+
"1 36 29;2484=28 31 37 29;2485=28 31 38 29;2486=28 31 39 29;2487=28 32 30 29;2488=31 2E;2",
|
|
2127
|
+
"489=32 2E;248A=33 2E;248B=34 2E;248C=35 2E;248D=36 2E;248E=37 2E;248F=38 2E;2490=39 2E;2",
|
|
2128
|
+
"491=31 30 2E;2492=31 31 2E;2493=31 32 2E;2494=31 33 2E;2495=31 34 2E;2496=31 35 2E;2497=",
|
|
2129
|
+
"31 36 2E;2498=31 37 2E;2499=31 38 2E;249A=31 39 2E;249B=32 30 2E;249C=28 61 29;249D=28 6",
|
|
2130
|
+
"2 29;249E=28 63 29;249F=28 64 29;24A0=28 65 29;24A1=28 66 29;24A2=28 67 29;24A3=28 68 29",
|
|
2131
|
+
";24A4=28 69 29;24A5=28 6A 29;24A6=28 6B 29;24A7=28 6C 29;24A8=28 6D 29;24A9=28 6E 29;24A",
|
|
2132
|
+
"A=28 6F 29;24AB=28 70 29;24AC=28 71 29;24AD=28 72 29;24AE=28 73 29;24AF=28 74 29;24B0=28",
|
|
2133
|
+
" 75 29;24B1=28 76 29;24B2=28 77 29;24B3=28 78 29;24B4=28 79 29;24B5=28 7A 29;24B6=41;24B",
|
|
2134
|
+
"7=42;24B8=43;24B9=44;24BA=45;24BB=46;24BC=47;24BD=48;24BE=49;24BF=4A;24C0=4B;24C1=4C;24C",
|
|
2135
|
+
"2=4D;24C3=4E;24C4=4F;24C5=50;24C6=51;24C7=52;24C8=53;24C9=54;24CA=55;24CB=56;24CC=57;24C",
|
|
2136
|
+
"D=58;24CE=59;24CF=5A;24D0=61;24D1=62;24D2=63;24D3=64;24D4=65;24D5=66;24D6=67;24D7=68;24D",
|
|
2137
|
+
"8=69;24D9=6A;24DA=6B;24DB=6C;24DC=6D;24DD=6E;24DE=6F;24DF=70;24E0=71;24E1=72;24E2=73;24E",
|
|
2138
|
+
"3=74;24E4=75;24E5=76;24E6=77;24E7=78;24E8=79;24E9=7A;24EA=30;2A0C=222B 222B 222B 222B;2A",
|
|
2139
|
+
"74=3A 3A 3D;2A75=3D 3D;2A76=3D 3D 3D;2ADC=2ADD 338;2C7C=6A;2C7D=56;2D6F=2D61;2E9F=6BCD;2",
|
|
2140
|
+
"EF3=9F9F;2F00=4E00;2F01=4E28;2F02=4E36;2F03=4E3F;2F04=4E59;2F05=4E85;2F06=4E8C;2F07=4EA0",
|
|
2141
|
+
";2F08=4EBA;2F09=513F;2F0A=5165;2F0B=516B;2F0C=5182;2F0D=5196;2F0E=51AB;2F0F=51E0;2F10=51",
|
|
2142
|
+
"F5;2F11=5200;2F12=529B;2F13=52F9;2F14=5315;2F15=531A;2F16=5338;2F17=5341;2F18=535C;2F19=",
|
|
2143
|
+
"5369;2F1A=5382;2F1B=53B6;2F1C=53C8;2F1D=53E3;2F1E=56D7;2F1F=571F;2F20=58EB;2F21=5902;2F2",
|
|
2144
|
+
"2=590A;2F23=5915;2F24=5927;2F25=5973;2F26=5B50;2F27=5B80;2F28=5BF8;2F29=5C0F;2F2A=5C22;2",
|
|
2145
|
+
"F2B=5C38;2F2C=5C6E;2F2D=5C71;2F2E=5DDB;2F2F=5DE5;2F30=5DF1;2F31=5DFE;2F32=5E72;2F33=5E7A",
|
|
2146
|
+
";2F34=5E7F;2F35=5EF4;2F36=5EFE;2F37=5F0B;2F38=5F13;2F39=5F50;2F3A=5F61;2F3B=5F73;2F3C=5F",
|
|
2147
|
+
"C3;2F3D=6208;2F3E=6236;2F3F=624B;2F40=652F;2F41=6534;2F42=6587;2F43=6597;2F44=65A4;2F45=",
|
|
2148
|
+
"65B9;2F46=65E0;2F47=65E5;2F48=66F0;2F49=6708;2F4A=6728;2F4B=6B20;2F4C=6B62;2F4D=6B79;2F4",
|
|
2149
|
+
"E=6BB3;2F4F=6BCB;2F50=6BD4;2F51=6BDB;2F52=6C0F;2F53=6C14;2F54=6C34;2F55=706B;2F56=722A;2",
|
|
2150
|
+
"F57=7236;2F58=723B;2F59=723F;2F5A=7247;2F5B=7259;2F5C=725B;2F5D=72AC;2F5E=7384;2F5F=7389",
|
|
2151
|
+
";2F60=74DC;2F61=74E6;2F62=7518;2F63=751F;2F64=7528;2F65=7530;2F66=758B;2F67=7592;2F68=76",
|
|
2152
|
+
"76;2F69=767D;2F6A=76AE;2F6B=76BF;2F6C=76EE;2F6D=77DB;2F6E=77E2;2F6F=77F3;2F70=793A;2F71=",
|
|
2153
|
+
"79B8;2F72=79BE;2F73=7A74;2F74=7ACB;2F75=7AF9;2F76=7C73;2F77=7CF8;2F78=7F36;2F79=7F51;2F7",
|
|
2154
|
+
"A=7F8A;2F7B=7FBD;2F7C=8001;2F7D=800C;2F7E=8012;2F7F=8033;2F80=807F;2F81=8089;2F82=81E3;2",
|
|
2155
|
+
"F83=81EA;2F84=81F3;2F85=81FC;2F86=820C;2F87=821B;2F88=821F;2F89=826E;2F8A=8272;2F8B=8278",
|
|
2156
|
+
";2F8C=864D;2F8D=866B;2F8E=8840;2F8F=884C;2F90=8863;2F91=897E;2F92=898B;2F93=89D2;2F94=8A",
|
|
2157
|
+
"00;2F95=8C37;2F96=8C46;2F97=8C55;2F98=8C78;2F99=8C9D;2F9A=8D64;2F9B=8D70;2F9C=8DB3;2F9D=",
|
|
2158
|
+
"8EAB;2F9E=8ECA;2F9F=8F9B;2FA0=8FB0;2FA1=8FB5;2FA2=9091;2FA3=9149;2FA4=91C6;2FA5=91CC;2FA",
|
|
2159
|
+
"6=91D1;2FA7=9577;2FA8=9580;2FA9=961C;2FAA=96B6;2FAB=96B9;2FAC=96E8;2FAD=9751;2FAE=975E;2",
|
|
2160
|
+
"FAF=9762;2FB0=9769;2FB1=97CB;2FB2=97ED;2FB3=97F3;2FB4=9801;2FB5=98A8;2FB6=98DB;2FB7=98DF",
|
|
2161
|
+
";2FB8=9996;2FB9=9999;2FBA=99AC;2FBB=9AA8;2FBC=9AD8;2FBD=9ADF;2FBE=9B25;2FBF=9B2F;2FC0=9B",
|
|
2162
|
+
"32;2FC1=9B3C;2FC2=9B5A;2FC3=9CE5;2FC4=9E75;2FC5=9E7F;2FC6=9EA5;2FC7=9EBB;2FC8=9EC3;2FC9=",
|
|
2163
|
+
"9ECD;2FCA=9ED1;2FCB=9EF9;2FCC=9EFD;2FCD=9F0E;2FCE=9F13;2FCF=9F20;2FD0=9F3B;2FD1=9F4A;2FD",
|
|
2164
|
+
"2=9F52;2FD3=9F8D;2FD4=9F9C;2FD5=9FA0;3000=20;3036=3012;3038=5341;3039=5344;303A=5345;304",
|
|
2165
|
+
"C=304B 3099;304E=304D 3099;3050=304F 3099;3052=3051 3099;3054=3053 3099;3056=3055 3099;3",
|
|
2166
|
+
"058=3057 3099;305A=3059 3099;305C=305B 3099;305E=305D 3099;3060=305F 3099;3062=3061 3099",
|
|
2167
|
+
";3065=3064 3099;3067=3066 3099;3069=3068 3099;3070=306F 3099;3071=306F 309A;3073=3072 30",
|
|
2168
|
+
"99;3074=3072 309A;3076=3075 3099;3077=3075 309A;3079=3078 3099;307A=3078 309A;307C=307B ",
|
|
2169
|
+
"3099;307D=307B 309A;3094=3046 3099;309B=20 3099;309C=20 309A;309E=309D 3099;309F=3088 30",
|
|
2170
|
+
"8A;30AC=30AB 3099;30AE=30AD 3099;30B0=30AF 3099;30B2=30B1 3099;30B4=30B3 3099;30B6=30B5 ",
|
|
2171
|
+
"3099;30B8=30B7 3099;30BA=30B9 3099;30BC=30BB 3099;30BE=30BD 3099;30C0=30BF 3099;30C2=30C",
|
|
2172
|
+
"1 3099;30C5=30C4 3099;30C7=30C6 3099;30C9=30C8 3099;30D0=30CF 3099;30D1=30CF 309A;30D3=3",
|
|
2173
|
+
"0D2 3099;30D4=30D2 309A;30D6=30D5 3099;30D7=30D5 309A;30D9=30D8 3099;30DA=30D8 309A;30DC",
|
|
2174
|
+
"=30DB 3099;30DD=30DB 309A;30F4=30A6 3099;30F7=30EF 3099;30F8=30F0 3099;30F9=30F1 3099;30",
|
|
2175
|
+
"FA=30F2 3099;30FE=30FD 3099;30FF=30B3 30C8;3131=1100;3132=1101;3133=11AA;3134=1102;3135=",
|
|
2176
|
+
"11AC;3136=11AD;3137=1103;3138=1104;3139=1105;313A=11B0;313B=11B1;313C=11B2;313D=11B3;313",
|
|
2177
|
+
"E=11B4;313F=11B5;3140=111A;3141=1106;3142=1107;3143=1108;3144=1121;3145=1109;3146=110A;3",
|
|
2178
|
+
"147=110B;3148=110C;3149=110D;314A=110E;314B=110F;314C=1110;314D=1111;314E=1112;314F=1161",
|
|
2179
|
+
";3150=1162;3151=1163;3152=1164;3153=1165;3154=1166;3155=1167;3156=1168;3157=1169;3158=11",
|
|
2180
|
+
"6A;3159=116B;315A=116C;315B=116D;315C=116E;315D=116F;315E=1170;315F=1171;3160=1172;3161=",
|
|
2181
|
+
"1173;3162=1174;3163=1175;3164=1160;3165=1114;3166=1115;3167=11C7;3168=11C8;3169=11CC;316",
|
|
2182
|
+
"A=11CE;316B=11D3;316C=11D7;316D=11D9;316E=111C;316F=11DD;3170=11DF;3171=111D;3172=111E;3",
|
|
2183
|
+
"173=1120;3174=1122;3175=1123;3176=1127;3177=1129;3178=112B;3179=112C;317A=112D;317B=112E",
|
|
2184
|
+
";317C=112F;317D=1132;317E=1136;317F=1140;3180=1147;3181=114C;3182=11F1;3183=11F2;3184=11",
|
|
2185
|
+
"57;3185=1158;3186=1159;3187=1184;3188=1185;3189=1188;318A=1191;318B=1192;318C=1194;318D=",
|
|
2186
|
+
"119E;318E=11A1;3192=4E00;3193=4E8C;3194=4E09;3195=56DB;3196=4E0A;3197=4E2D;3198=4E0B;319",
|
|
2187
|
+
"9=7532;319A=4E59;319B=4E19;319C=4E01;319D=5929;319E=5730;319F=4EBA;3200=28 1100 29;3201=",
|
|
2188
|
+
"28 1102 29;3202=28 1103 29;3203=28 1105 29;3204=28 1106 29;3205=28 1107 29;3206=28 1109 ",
|
|
2189
|
+
"29;3207=28 110B 29;3208=28 110C 29;3209=28 110E 29;320A=28 110F 29;320B=28 1110 29;320C=",
|
|
2190
|
+
"28 1111 29;320D=28 1112 29;320E=28 1100 1161 29;320F=28 1102 1161 29;3210=28 1103 1161 2",
|
|
2191
|
+
"9;3211=28 1105 1161 29;3212=28 1106 1161 29;3213=28 1107 1161 29;3214=28 1109 1161 29;32",
|
|
2192
|
+
"15=28 110B 1161 29;3216=28 110C 1161 29;3217=28 110E 1161 29;3218=28 110F 1161 29;3219=2",
|
|
2193
|
+
"8 1110 1161 29;321A=28 1111 1161 29;321B=28 1112 1161 29;321C=28 110C 116E 29;321D=28 11",
|
|
2194
|
+
"0B 1169 110C 1165 11AB 29;321E=28 110B 1169 1112 116E 29;3220=28 4E00 29;3221=28 4E8C 29",
|
|
2195
|
+
";3222=28 4E09 29;3223=28 56DB 29;3224=28 4E94 29;3225=28 516D 29;3226=28 4E03 29;3227=28",
|
|
2196
|
+
" 516B 29;3228=28 4E5D 29;3229=28 5341 29;322A=28 6708 29;322B=28 706B 29;322C=28 6C34 29",
|
|
2197
|
+
";322D=28 6728 29;322E=28 91D1 29;322F=28 571F 29;3230=28 65E5 29;3231=28 682A 29;3232=28",
|
|
2198
|
+
" 6709 29;3233=28 793E 29;3234=28 540D 29;3235=28 7279 29;3236=28 8CA1 29;3237=28 795D 29",
|
|
2199
|
+
";3238=28 52B4 29;3239=28 4EE3 29;323A=28 547C 29;323B=28 5B66 29;323C=28 76E3 29;323D=28",
|
|
2200
|
+
" 4F01 29;323E=28 8CC7 29;323F=28 5354 29;3240=28 796D 29;3241=28 4F11 29;3242=28 81EA 29",
|
|
2201
|
+
";3243=28 81F3 29;3244=554F;3245=5E7C;3246=6587;3247=7B8F;3250=50 54 45;3251=32 31;3252=3",
|
|
2202
|
+
"2 32;3253=32 33;3254=32 34;3255=32 35;3256=32 36;3257=32 37;3258=32 38;3259=32 39;325A=3",
|
|
2203
|
+
"3 30;325B=33 31;325C=33 32;325D=33 33;325E=33 34;325F=33 35;3260=1100;3261=1102;3262=110",
|
|
2204
|
+
"3;3263=1105;3264=1106;3265=1107;3266=1109;3267=110B;3268=110C;3269=110E;326A=110F;326B=1",
|
|
2205
|
+
"110;326C=1111;326D=1112;326E=1100 1161;326F=1102 1161;3270=1103 1161;3271=1105 1161;3272",
|
|
2206
|
+
"=1106 1161;3273=1107 1161;3274=1109 1161;3275=110B 1161;3276=110C 1161;3277=110E 1161;32",
|
|
2207
|
+
"78=110F 1161;3279=1110 1161;327A=1111 1161;327B=1112 1161;327C=110E 1161 11B7 1100 1169;",
|
|
2208
|
+
"327D=110C 116E 110B 1174;327E=110B 116E;3280=4E00;3281=4E8C;3282=4E09;3283=56DB;3284=4E9",
|
|
2209
|
+
"4;3285=516D;3286=4E03;3287=516B;3288=4E5D;3289=5341;328A=6708;328B=706B;328C=6C34;328D=6",
|
|
2210
|
+
"728;328E=91D1;328F=571F;3290=65E5;3291=682A;3292=6709;3293=793E;3294=540D;3295=7279;3296",
|
|
2211
|
+
"=8CA1;3297=795D;3298=52B4;3299=79D8;329A=7537;329B=5973;329C=9069;329D=512A;329E=5370;32",
|
|
2212
|
+
"9F=6CE8;32A0=9805;32A1=4F11;32A2=5199;32A3=6B63;32A4=4E0A;32A5=4E2D;32A6=4E0B;32A7=5DE6;",
|
|
2213
|
+
"32A8=53F3;32A9=533B;32AA=5B97;32AB=5B66;32AC=76E3;32AD=4F01;32AE=8CC7;32AF=5354;32B0=591",
|
|
2214
|
+
"C;32B1=33 36;32B2=33 37;32B3=33 38;32B4=33 39;32B5=34 30;32B6=34 31;32B7=34 32;32B8=34 3",
|
|
2215
|
+
"3;32B9=34 34;32BA=34 35;32BB=34 36;32BC=34 37;32BD=34 38;32BE=34 39;32BF=35 30;32C0=31 6",
|
|
2216
|
+
"708;32C1=32 6708;32C2=33 6708;32C3=34 6708;32C4=35 6708;32C5=36 6708;32C6=37 6708;32C7=3",
|
|
2217
|
+
"8 6708;32C8=39 6708;32C9=31 30 6708;32CA=31 31 6708;32CB=31 32 6708;32CC=48 67;32CD=65 7",
|
|
2218
|
+
"2 67;32CE=65 56;32CF=4C 54 44;32D0=30A2;32D1=30A4;32D2=30A6;32D3=30A8;32D4=30AA;32D5=30A",
|
|
2219
|
+
"B;32D6=30AD;32D7=30AF;32D8=30B1;32D9=30B3;32DA=30B5;32DB=30B7;32DC=30B9;32DD=30BB;32DE=3",
|
|
2220
|
+
"0BD;32DF=30BF;32E0=30C1;32E1=30C4;32E2=30C6;32E3=30C8;32E4=30CA;32E5=30CB;32E6=30CC;32E7",
|
|
2221
|
+
"=30CD;32E8=30CE;32E9=30CF;32EA=30D2;32EB=30D5;32EC=30D8;32ED=30DB;32EE=30DE;32EF=30DF;32",
|
|
2222
|
+
"F0=30E0;32F1=30E1;32F2=30E2;32F3=30E4;32F4=30E6;32F5=30E8;32F6=30E9;32F7=30EA;32F8=30EB;",
|
|
2223
|
+
"32F9=30EC;32FA=30ED;32FB=30EF;32FC=30F0;32FD=30F1;32FE=30F2;32FF=4EE4 548C;3300=30A2 30C",
|
|
2224
|
+
"F 309A 30FC 30C8;3301=30A2 30EB 30D5 30A1;3302=30A2 30F3 30D8 309A 30A2;3303=30A2 30FC 3",
|
|
2225
|
+
"0EB;3304=30A4 30CB 30F3 30AF 3099;3305=30A4 30F3 30C1;3306=30A6 30A9 30F3;3307=30A8 30B9",
|
|
2226
|
+
" 30AF 30FC 30C8 3099;3308=30A8 30FC 30AB 30FC;3309=30AA 30F3 30B9;330A=30AA 30FC 30E0;33",
|
|
2227
|
+
"0B=30AB 30A4 30EA;330C=30AB 30E9 30C3 30C8;330D=30AB 30ED 30EA 30FC;330E=30AB 3099 30ED ",
|
|
2228
|
+
"30F3;330F=30AB 3099 30F3 30DE;3310=30AD 3099 30AB 3099;3311=30AD 3099 30CB 30FC;3312=30A",
|
|
2229
|
+
"D 30E5 30EA 30FC;3313=30AD 3099 30EB 30BF 3099 30FC;3314=30AD 30ED;3315=30AD 30ED 30AF 3",
|
|
2230
|
+
"099 30E9 30E0;3316=30AD 30ED 30E1 30FC 30C8 30EB;3317=30AD 30ED 30EF 30C3 30C8;3318=30AF",
|
|
2231
|
+
" 3099 30E9 30E0;3319=30AF 3099 30E9 30E0 30C8 30F3;331A=30AF 30EB 30BB 3099 30A4 30ED;33",
|
|
2232
|
+
"1B=30AF 30ED 30FC 30CD;331C=30B1 30FC 30B9;331D=30B3 30EB 30CA;331E=30B3 30FC 30DB 309A;",
|
|
2233
|
+
"331F=30B5 30A4 30AF 30EB;3320=30B5 30F3 30C1 30FC 30E0;3321=30B7 30EA 30F3 30AF 3099;332",
|
|
2234
|
+
"2=30BB 30F3 30C1;3323=30BB 30F3 30C8;3324=30BF 3099 30FC 30B9;3325=30C6 3099 30B7;3326=3",
|
|
2235
|
+
"0C8 3099 30EB;3327=30C8 30F3;3328=30CA 30CE;3329=30CE 30C3 30C8;332A=30CF 30A4 30C4;332B",
|
|
2236
|
+
"=30CF 309A 30FC 30BB 30F3 30C8;332C=30CF 309A 30FC 30C4;332D=30CF 3099 30FC 30EC 30EB;33",
|
|
2237
|
+
"2E=30D2 309A 30A2 30B9 30C8 30EB;332F=30D2 309A 30AF 30EB;3330=30D2 309A 30B3;3331=30D2 ",
|
|
2238
|
+
"3099 30EB;3332=30D5 30A1 30E9 30C3 30C8 3099;3333=30D5 30A3 30FC 30C8;3334=30D5 3099 30C",
|
|
2239
|
+
"3 30B7 30A7 30EB;3335=30D5 30E9 30F3;3336=30D8 30AF 30BF 30FC 30EB;3337=30D8 309A 30BD;3",
|
|
2240
|
+
"338=30D8 309A 30CB 30D2;3339=30D8 30EB 30C4;333A=30D8 309A 30F3 30B9;333B=30D8 309A 30FC",
|
|
2241
|
+
" 30B7 3099;333C=30D8 3099 30FC 30BF;333D=30DB 309A 30A4 30F3 30C8;333E=30DB 3099 30EB 30",
|
|
2242
|
+
"C8;333F=30DB 30F3;3340=30DB 309A 30F3 30C8 3099;3341=30DB 30FC 30EB;3342=30DB 30FC 30F3;",
|
|
2243
|
+
"3343=30DE 30A4 30AF 30ED;3344=30DE 30A4 30EB;3345=30DE 30C3 30CF;3346=30DE 30EB 30AF;334",
|
|
2244
|
+
"7=30DE 30F3 30B7 30E7 30F3;3348=30DF 30AF 30ED 30F3;3349=30DF 30EA;334A=30DF 30EA 30CF 3",
|
|
2245
|
+
"099 30FC 30EB;334B=30E1 30AB 3099;334C=30E1 30AB 3099 30C8 30F3;334D=30E1 30FC 30C8 30EB",
|
|
2246
|
+
";334E=30E4 30FC 30C8 3099;334F=30E4 30FC 30EB;3350=30E6 30A2 30F3;3351=30EA 30C3 30C8 30",
|
|
2247
|
+
"EB;3352=30EA 30E9;3353=30EB 30D2 309A 30FC;3354=30EB 30FC 30D5 3099 30EB;3355=30EC 30E0;",
|
|
2248
|
+
"3356=30EC 30F3 30C8 30B1 3099 30F3;3357=30EF 30C3 30C8;3358=30 70B9;3359=31 70B9;335A=32",
|
|
2249
|
+
" 70B9;335B=33 70B9;335C=34 70B9;335D=35 70B9;335E=36 70B9;335F=37 70B9;3360=38 70B9;3361",
|
|
2250
|
+
"=39 70B9;3362=31 30 70B9;3363=31 31 70B9;3364=31 32 70B9;3365=31 33 70B9;3366=31 34 70B9",
|
|
2251
|
+
";3367=31 35 70B9;3368=31 36 70B9;3369=31 37 70B9;336A=31 38 70B9;336B=31 39 70B9;336C=32",
|
|
2252
|
+
" 30 70B9;336D=32 31 70B9;336E=32 32 70B9;336F=32 33 70B9;3370=32 34 70B9;3371=68 50 61;3",
|
|
2253
|
+
"372=64 61;3373=41 55;3374=62 61 72;3375=6F 56;3376=70 63;3377=64 6D;3378=64 6D 32;3379=6",
|
|
2254
|
+
"4 6D 33;337A=49 55;337B=5E73 6210;337C=662D 548C;337D=5927 6B63;337E=660E 6CBB;337F=682A",
|
|
2255
|
+
" 5F0F 4F1A 793E;3380=70 41;3381=6E 41;3382=3BC 41;3383=6D 41;3384=6B 41;3385=4B 42;3386=",
|
|
2256
|
+
"4D 42;3387=47 42;3388=63 61 6C;3389=6B 63 61 6C;338A=70 46;338B=6E 46;338C=3BC 46;338D=3",
|
|
2257
|
+
"BC 67;338E=6D 67;338F=6B 67;3390=48 7A;3391=6B 48 7A;3392=4D 48 7A;3393=47 48 7A;3394=54",
|
|
2258
|
+
" 48 7A;3395=3BC 6C;3396=6D 6C;3397=64 6C;3398=6B 6C;3399=66 6D;339A=6E 6D;339B=3BC 6D;33",
|
|
2259
|
+
"9C=6D 6D;339D=63 6D;339E=6B 6D;339F=6D 6D 32;33A0=63 6D 32;33A1=6D 32;33A2=6B 6D 32;33A3",
|
|
2260
|
+
"=6D 6D 33;33A4=63 6D 33;33A5=6D 33;33A6=6B 6D 33;33A7=6D 2215 73;33A8=6D 2215 73 32;33A9",
|
|
2261
|
+
"=50 61;33AA=6B 50 61;33AB=4D 50 61;33AC=47 50 61;33AD=72 61 64;33AE=72 61 64 2215 73;33A",
|
|
2262
|
+
"F=72 61 64 2215 73 32;33B0=70 73;33B1=6E 73;33B2=3BC 73;33B3=6D 73;33B4=70 56;33B5=6E 56",
|
|
2263
|
+
";33B6=3BC 56;33B7=6D 56;33B8=6B 56;33B9=4D 56;33BA=70 57;33BB=6E 57;33BC=3BC 57;33BD=6D ",
|
|
2264
|
+
"57;33BE=6B 57;33BF=4D 57;33C0=6B 3A9;33C1=4D 3A9;33C2=61 2E 6D 2E;33C3=42 71;33C4=63 63;",
|
|
2265
|
+
"33C5=63 64;33C6=43 2215 6B 67;33C7=43 6F 2E;33C8=64 42;33C9=47 79;33CA=68 61;33CB=48 50;",
|
|
2266
|
+
"33CC=69 6E;33CD=4B 4B;33CE=4B 4D;33CF=6B 74;33D0=6C 6D;33D1=6C 6E;33D2=6C 6F 67;33D3=6C ",
|
|
2267
|
+
"78;33D4=6D 62;33D5=6D 69 6C;33D6=6D 6F 6C;33D7=50 48;33D8=70 2E 6D 2E;33D9=50 50 4D;33DA",
|
|
2268
|
+
"=50 52;33DB=73 72;33DC=53 76;33DD=57 62;33DE=56 2215 6D;33DF=41 2215 6D;33E0=31 65E5;33E",
|
|
2269
|
+
"1=32 65E5;33E2=33 65E5;33E3=34 65E5;33E4=35 65E5;33E5=36 65E5;33E6=37 65E5;33E7=38 65E5;",
|
|
2270
|
+
"33E8=39 65E5;33E9=31 30 65E5;33EA=31 31 65E5;33EB=31 32 65E5;33EC=31 33 65E5;33ED=31 34 ",
|
|
2271
|
+
"65E5;33EE=31 35 65E5;33EF=31 36 65E5;33F0=31 37 65E5;33F1=31 38 65E5;33F2=31 39 65E5;33F",
|
|
2272
|
+
"3=32 30 65E5;33F4=32 31 65E5;33F5=32 32 65E5;33F6=32 33 65E5;33F7=32 34 65E5;33F8=32 35 ",
|
|
2273
|
+
"65E5;33F9=32 36 65E5;33FA=32 37 65E5;33FB=32 38 65E5;33FC=32 39 65E5;33FD=33 30 65E5;33F",
|
|
2274
|
+
"E=33 31 65E5;33FF=67 61 6C;A69C=44A;A69D=44C;A770=A76F;A7F2=43;A7F3=46;A7F4=51;A7F8=126;",
|
|
2275
|
+
"A7F9=153;AB5C=A727;AB5D=AB37;AB5E=26B;AB5F=AB52;AB69=28D;F900=8C48;F901=66F4;F902=8ECA;F",
|
|
2276
|
+
"903=8CC8;F904=6ED1;F905=4E32;F906=53E5;F907=9F9C;F908=9F9C;F909=5951;F90A=91D1;F90B=5587",
|
|
2277
|
+
";F90C=5948;F90D=61F6;F90E=7669;F90F=7F85;F910=863F;F911=87BA;F912=88F8;F913=908F;F914=6A",
|
|
2278
|
+
"02;F915=6D1B;F916=70D9;F917=73DE;F918=843D;F919=916A;F91A=99F1;F91B=4E82;F91C=5375;F91D=",
|
|
2279
|
+
"6B04;F91E=721B;F91F=862D;F920=9E1E;F921=5D50;F922=6FEB;F923=85CD;F924=8964;F925=62C9;F92",
|
|
2280
|
+
"6=81D8;F927=881F;F928=5ECA;F929=6717;F92A=6D6A;F92B=72FC;F92C=90CE;F92D=4F86;F92E=51B7;F",
|
|
2281
|
+
"92F=52DE;F930=64C4;F931=6AD3;F932=7210;F933=76E7;F934=8001;F935=8606;F936=865C;F937=8DEF",
|
|
2282
|
+
";F938=9732;F939=9B6F;F93A=9DFA;F93B=788C;F93C=797F;F93D=7DA0;F93E=83C9;F93F=9304;F940=9E",
|
|
2283
|
+
"7F;F941=8AD6;F942=58DF;F943=5F04;F944=7C60;F945=807E;F946=7262;F947=78CA;F948=8CC2;F949=",
|
|
2284
|
+
"96F7;F94A=58D8;F94B=5C62;F94C=6A13;F94D=6DDA;F94E=6F0F;F94F=7D2F;F950=7E37;F951=964B;F95",
|
|
2285
|
+
"2=52D2;F953=808B;F954=51DC;F955=51CC;F956=7A1C;F957=7DBE;F958=83F1;F959=9675;F95A=8B80;F",
|
|
2286
|
+
"95B=62CF;F95C=6A02;F95D=8AFE;F95E=4E39;F95F=5BE7;F960=6012;F961=7387;F962=7570;F963=5317",
|
|
2287
|
+
";F964=78FB;F965=4FBF;F966=5FA9;F967=4E0D;F968=6CCC;F969=6578;F96A=7D22;F96B=53C3;F96C=58",
|
|
2288
|
+
"5E;F96D=7701;F96E=8449;F96F=8AAA;F970=6BBA;F971=8FB0;F972=6C88;F973=62FE;F974=82E5;F975=",
|
|
2289
|
+
"63A0;F976=7565;F977=4EAE;F978=5169;F979=51C9;F97A=6881;F97B=7CE7;F97C=826F;F97D=8AD2;F97",
|
|
2290
|
+
"E=91CF;F97F=52F5;F980=5442;F981=5973;F982=5EEC;F983=65C5;F984=6FFE;F985=792A;F986=95AD;F",
|
|
2291
|
+
"987=9A6A;F988=9E97;F989=9ECE;F98A=529B;F98B=66C6;F98C=6B77;F98D=8F62;F98E=5E74;F98F=6190",
|
|
2292
|
+
";F990=6200;F991=649A;F992=6F23;F993=7149;F994=7489;F995=79CA;F996=7DF4;F997=806F;F998=8F",
|
|
2293
|
+
"26;F999=84EE;F99A=9023;F99B=934A;F99C=5217;F99D=52A3;F99E=54BD;F99F=70C8;F9A0=88C2;F9A1=",
|
|
2294
|
+
"8AAA;F9A2=5EC9;F9A3=5FF5;F9A4=637B;F9A5=6BAE;F9A6=7C3E;F9A7=7375;F9A8=4EE4;F9A9=56F9;F9A",
|
|
2295
|
+
"A=5BE7;F9AB=5DBA;F9AC=601C;F9AD=73B2;F9AE=7469;F9AF=7F9A;F9B0=8046;F9B1=9234;F9B2=96F6;F",
|
|
2296
|
+
"9B3=9748;F9B4=9818;F9B5=4F8B;F9B6=79AE;F9B7=91B4;F9B8=96B8;F9B9=60E1;F9BA=4E86;F9BB=50DA",
|
|
2297
|
+
";F9BC=5BEE;F9BD=5C3F;F9BE=6599;F9BF=6A02;F9C0=71CE;F9C1=7642;F9C2=84FC;F9C3=907C;F9C4=9F",
|
|
2298
|
+
"8D;F9C5=6688;F9C6=962E;F9C7=5289;F9C8=677B;F9C9=67F3;F9CA=6D41;F9CB=6E9C;F9CC=7409;F9CD=",
|
|
2299
|
+
"7559;F9CE=786B;F9CF=7D10;F9D0=985E;F9D1=516D;F9D2=622E;F9D3=9678;F9D4=502B;F9D5=5D19;F9D",
|
|
2300
|
+
"6=6DEA;F9D7=8F2A;F9D8=5F8B;F9D9=6144;F9DA=6817;F9DB=7387;F9DC=9686;F9DD=5229;F9DE=540F;F",
|
|
2301
|
+
"9DF=5C65;F9E0=6613;F9E1=674E;F9E2=68A8;F9E3=6CE5;F9E4=7406;F9E5=75E2;F9E6=7F79;F9E7=88CF",
|
|
2302
|
+
";F9E8=88E1;F9E9=91CC;F9EA=96E2;F9EB=533F;F9EC=6EBA;F9ED=541D;F9EE=71D0;F9EF=7498;F9F0=85",
|
|
2303
|
+
"FA;F9F1=96A3;F9F2=9C57;F9F3=9E9F;F9F4=6797;F9F5=6DCB;F9F6=81E8;F9F7=7ACB;F9F8=7B20;F9F9=",
|
|
2304
|
+
"7C92;F9FA=72C0;F9FB=7099;F9FC=8B58;F9FD=4EC0;F9FE=8336;F9FF=523A;FA00=5207;FA01=5EA6;FA0",
|
|
2305
|
+
"2=62D3;FA03=7CD6;FA04=5B85;FA05=6D1E;FA06=66B4;FA07=8F3B;FA08=884C;FA09=964D;FA0A=898B;F",
|
|
2306
|
+
"A0B=5ED3;FA0C=5140;FA0D=55C0;FA10=585A;FA12=6674;FA15=51DE;FA16=732A;FA17=76CA;FA18=793C",
|
|
2307
|
+
";FA19=795E;FA1A=7965;FA1B=798F;FA1C=9756;FA1D=7CBE;FA1E=7FBD;FA20=8612;FA22=8AF8;FA25=90",
|
|
2308
|
+
"38;FA26=90FD;FA2A=98EF;FA2B=98FC;FA2C=9928;FA2D=9DB4;FA2E=90DE;FA2F=96B7;FA30=4FAE;FA31=",
|
|
2309
|
+
"50E7;FA32=514D;FA33=52C9;FA34=52E4;FA35=5351;FA36=559D;FA37=5606;FA38=5668;FA39=5840;FA3",
|
|
2310
|
+
"A=58A8;FA3B=5C64;FA3C=5C6E;FA3D=6094;FA3E=6168;FA3F=618E;FA40=61F2;FA41=654F;FA42=65E2;F",
|
|
2311
|
+
"A43=6691;FA44=6885;FA45=6D77;FA46=6E1A;FA47=6F22;FA48=716E;FA49=722B;FA4A=7422;FA4B=7891",
|
|
2312
|
+
";FA4C=793E;FA4D=7949;FA4E=7948;FA4F=7950;FA50=7956;FA51=795D;FA52=798D;FA53=798E;FA54=7A",
|
|
2313
|
+
"40;FA55=7A81;FA56=7BC0;FA57=7DF4;FA58=7E09;FA59=7E41;FA5A=7F72;FA5B=8005;FA5C=81ED;FA5D=",
|
|
2314
|
+
"8279;FA5E=8279;FA5F=8457;FA60=8910;FA61=8996;FA62=8B01;FA63=8B39;FA64=8CD3;FA65=8D08;FA6",
|
|
2315
|
+
"6=8FB6;FA67=9038;FA68=96E3;FA69=97FF;FA6A=983B;FA6B=6075;FA6C=242EE;FA6D=8218;FA70=4E26;",
|
|
2316
|
+
"FA71=51B5;FA72=5168;FA73=4F80;FA74=5145;FA75=5180;FA76=52C7;FA77=52FA;FA78=559D;FA79=555",
|
|
2317
|
+
"5;FA7A=5599;FA7B=55E2;FA7C=585A;FA7D=58B3;FA7E=5944;FA7F=5954;FA80=5A62;FA81=5B28;FA82=5",
|
|
2318
|
+
"ED2;FA83=5ED9;FA84=5F69;FA85=5FAD;FA86=60D8;FA87=614E;FA88=6108;FA89=618E;FA8A=6160;FA8B",
|
|
2319
|
+
"=61F2;FA8C=6234;FA8D=63C4;FA8E=641C;FA8F=6452;FA90=6556;FA91=6674;FA92=6717;FA93=671B;FA",
|
|
2320
|
+
"94=6756;FA95=6B79;FA96=6BBA;FA97=6D41;FA98=6EDB;FA99=6ECB;FA9A=6F22;FA9B=701E;FA9C=716E;",
|
|
2321
|
+
"FA9D=77A7;FA9E=7235;FA9F=72AF;FAA0=732A;FAA1=7471;FAA2=7506;FAA3=753B;FAA4=761D;FAA5=761",
|
|
2322
|
+
"F;FAA6=76CA;FAA7=76DB;FAA8=76F4;FAA9=774A;FAAA=7740;FAAB=78CC;FAAC=7AB1;FAAD=7BC0;FAAE=7",
|
|
2323
|
+
"C7B;FAAF=7D5B;FAB0=7DF4;FAB1=7F3E;FAB2=8005;FAB3=8352;FAB4=83EF;FAB5=8779;FAB6=8941;FAB7",
|
|
2324
|
+
"=8986;FAB8=8996;FAB9=8ABF;FABA=8AF8;FABB=8ACB;FABC=8B01;FABD=8AFE;FABE=8AED;FABF=8B39;FA",
|
|
2325
|
+
"C0=8B8A;FAC1=8D08;FAC2=8F38;FAC3=9072;FAC4=9199;FAC5=9276;FAC6=967C;FAC7=96E3;FAC8=9756;",
|
|
2326
|
+
"FAC9=97DB;FACA=97FF;FACB=980B;FACC=983B;FACD=9B12;FACE=9F9C;FACF=2284A;FAD0=22844;FAD1=2",
|
|
2327
|
+
"33D5;FAD2=3B9D;FAD3=4018;FAD4=4039;FAD5=25249;FAD6=25CD0;FAD7=27ED3;FAD8=9F43;FAD9=9F8E;",
|
|
2328
|
+
"FB00=66 66;FB01=66 69;FB02=66 6C;FB03=66 66 69;FB04=66 66 6C;FB05=73 74;FB06=73 74;FB13=",
|
|
2329
|
+
"574 576;FB14=574 565;FB15=574 56B;FB16=57E 576;FB17=574 56D;FB1D=5D9 5B4;FB1F=5F2 5B7;FB",
|
|
2330
|
+
"20=5E2;FB21=5D0;FB22=5D3;FB23=5D4;FB24=5DB;FB25=5DC;FB26=5DD;FB27=5E8;FB28=5EA;FB29=2B;F",
|
|
2331
|
+
"B2A=5E9 5C1;FB2B=5E9 5C2;FB2C=5E9 5BC 5C1;FB2D=5E9 5BC 5C2;FB2E=5D0 5B7;FB2F=5D0 5B8;FB3",
|
|
2332
|
+
"0=5D0 5BC;FB31=5D1 5BC;FB32=5D2 5BC;FB33=5D3 5BC;FB34=5D4 5BC;FB35=5D5 5BC;FB36=5D6 5BC;",
|
|
2333
|
+
"FB38=5D8 5BC;FB39=5D9 5BC;FB3A=5DA 5BC;FB3B=5DB 5BC;FB3C=5DC 5BC;FB3E=5DE 5BC;FB40=5E0 5",
|
|
2334
|
+
"BC;FB41=5E1 5BC;FB43=5E3 5BC;FB44=5E4 5BC;FB46=5E6 5BC;FB47=5E7 5BC;FB48=5E8 5BC;FB49=5E",
|
|
2335
|
+
"9 5BC;FB4A=5EA 5BC;FB4B=5D5 5B9;FB4C=5D1 5BF;FB4D=5DB 5BF;FB4E=5E4 5BF;FB4F=5D0 5DC;FB50",
|
|
2336
|
+
"=671;FB51=671;FB52=67B;FB53=67B;FB54=67B;FB55=67B;FB56=67E;FB57=67E;FB58=67E;FB59=67E;FB",
|
|
2337
|
+
"5A=680;FB5B=680;FB5C=680;FB5D=680;FB5E=67A;FB5F=67A;FB60=67A;FB61=67A;FB62=67F;FB63=67F;",
|
|
2338
|
+
"FB64=67F;FB65=67F;FB66=679;FB67=679;FB68=679;FB69=679;FB6A=6A4;FB6B=6A4;FB6C=6A4;FB6D=6A",
|
|
2339
|
+
"4;FB6E=6A6;FB6F=6A6;FB70=6A6;FB71=6A6;FB72=684;FB73=684;FB74=684;FB75=684;FB76=683;FB77=",
|
|
2340
|
+
"683;FB78=683;FB79=683;FB7A=686;FB7B=686;FB7C=686;FB7D=686;FB7E=687;FB7F=687;FB80=687;FB8",
|
|
2341
|
+
"1=687;FB82=68D;FB83=68D;FB84=68C;FB85=68C;FB86=68E;FB87=68E;FB88=688;FB89=688;FB8A=698;F",
|
|
2342
|
+
"B8B=698;FB8C=691;FB8D=691;FB8E=6A9;FB8F=6A9;FB90=6A9;FB91=6A9;FB92=6AF;FB93=6AF;FB94=6AF",
|
|
2343
|
+
";FB95=6AF;FB96=6B3;FB97=6B3;FB98=6B3;FB99=6B3;FB9A=6B1;FB9B=6B1;FB9C=6B1;FB9D=6B1;FB9E=6",
|
|
2344
|
+
"BA;FB9F=6BA;FBA0=6BB;FBA1=6BB;FBA2=6BB;FBA3=6BB;FBA4=6D5 654;FBA5=6D5 654;FBA6=6C1;FBA7=",
|
|
2345
|
+
"6C1;FBA8=6C1;FBA9=6C1;FBAA=6BE;FBAB=6BE;FBAC=6BE;FBAD=6BE;FBAE=6D2;FBAF=6D2;FBB0=6D2 654",
|
|
2346
|
+
";FBB1=6D2 654;FBD3=6AD;FBD4=6AD;FBD5=6AD;FBD6=6AD;FBD7=6C7;FBD8=6C7;FBD9=6C6;FBDA=6C6;FB",
|
|
2347
|
+
"DB=6C8;FBDC=6C8;FBDD=6C7 674;FBDE=6CB;FBDF=6CB;FBE0=6C5;FBE1=6C5;FBE2=6C9;FBE3=6C9;FBE4=",
|
|
2348
|
+
"6D0;FBE5=6D0;FBE6=6D0;FBE7=6D0;FBE8=649;FBE9=649;FBEA=64A 654 627;FBEB=64A 654 627;FBEC=",
|
|
2349
|
+
"64A 654 6D5;FBED=64A 654 6D5;FBEE=64A 654 648;FBEF=64A 654 648;FBF0=64A 654 6C7;FBF1=64A",
|
|
2350
|
+
" 654 6C7;FBF2=64A 654 6C6;FBF3=64A 654 6C6;FBF4=64A 654 6C8;FBF5=64A 654 6C8;FBF6=64A 65",
|
|
2351
|
+
"4 6D0;FBF7=64A 654 6D0;FBF8=64A 654 6D0;FBF9=64A 654 649;FBFA=64A 654 649;FBFB=64A 654 6",
|
|
2352
|
+
"49;FBFC=6CC;FBFD=6CC;FBFE=6CC;FBFF=6CC;FC00=64A 654 62C;FC01=64A 654 62D;FC02=64A 654 64",
|
|
2353
|
+
"5;FC03=64A 654 649;FC04=64A 654 64A;FC05=628 62C;FC06=628 62D;FC07=628 62E;FC08=628 645;",
|
|
2354
|
+
"FC09=628 649;FC0A=628 64A;FC0B=62A 62C;FC0C=62A 62D;FC0D=62A 62E;FC0E=62A 645;FC0F=62A 6",
|
|
2355
|
+
"49;FC10=62A 64A;FC11=62B 62C;FC12=62B 645;FC13=62B 649;FC14=62B 64A;FC15=62C 62D;FC16=62",
|
|
2356
|
+
"C 645;FC17=62D 62C;FC18=62D 645;FC19=62E 62C;FC1A=62E 62D;FC1B=62E 645;FC1C=633 62C;FC1D",
|
|
2357
|
+
"=633 62D;FC1E=633 62E;FC1F=633 645;FC20=635 62D;FC21=635 645;FC22=636 62C;FC23=636 62D;F",
|
|
2358
|
+
"C24=636 62E;FC25=636 645;FC26=637 62D;FC27=637 645;FC28=638 645;FC29=639 62C;FC2A=639 64",
|
|
2359
|
+
"5;FC2B=63A 62C;FC2C=63A 645;FC2D=641 62C;FC2E=641 62D;FC2F=641 62E;FC30=641 645;FC31=641",
|
|
2360
|
+
" 649;FC32=641 64A;FC33=642 62D;FC34=642 645;FC35=642 649;FC36=642 64A;FC37=643 627;FC38=",
|
|
2361
|
+
"643 62C;FC39=643 62D;FC3A=643 62E;FC3B=643 644;FC3C=643 645;FC3D=643 649;FC3E=643 64A;FC",
|
|
2362
|
+
"3F=644 62C;FC40=644 62D;FC41=644 62E;FC42=644 645;FC43=644 649;FC44=644 64A;FC45=645 62C",
|
|
2363
|
+
";FC46=645 62D;FC47=645 62E;FC48=645 645;FC49=645 649;FC4A=645 64A;FC4B=646 62C;FC4C=646 ",
|
|
2364
|
+
"62D;FC4D=646 62E;FC4E=646 645;FC4F=646 649;FC50=646 64A;FC51=647 62C;FC52=647 645;FC53=6",
|
|
2365
|
+
"47 649;FC54=647 64A;FC55=64A 62C;FC56=64A 62D;FC57=64A 62E;FC58=64A 645;FC59=64A 649;FC5",
|
|
2366
|
+
"A=64A 64A;FC5B=630 670;FC5C=631 670;FC5D=649 670;FC5E=20 64C 651;FC5F=20 64D 651;FC60=20",
|
|
2367
|
+
" 64E 651;FC61=20 64F 651;FC62=20 650 651;FC63=20 651 670;FC64=64A 654 631;FC65=64A 654 6",
|
|
2368
|
+
"32;FC66=64A 654 645;FC67=64A 654 646;FC68=64A 654 649;FC69=64A 654 64A;FC6A=628 631;FC6B",
|
|
2369
|
+
"=628 632;FC6C=628 645;FC6D=628 646;FC6E=628 649;FC6F=628 64A;FC70=62A 631;FC71=62A 632;F",
|
|
2370
|
+
"C72=62A 645;FC73=62A 646;FC74=62A 649;FC75=62A 64A;FC76=62B 631;FC77=62B 632;FC78=62B 64",
|
|
2371
|
+
"5;FC79=62B 646;FC7A=62B 649;FC7B=62B 64A;FC7C=641 649;FC7D=641 64A;FC7E=642 649;FC7F=642",
|
|
2372
|
+
" 64A;FC80=643 627;FC81=643 644;FC82=643 645;FC83=643 649;FC84=643 64A;FC85=644 645;FC86=",
|
|
2373
|
+
"644 649;FC87=644 64A;FC88=645 627;FC89=645 645;FC8A=646 631;FC8B=646 632;FC8C=646 645;FC",
|
|
2374
|
+
"8D=646 646;FC8E=646 649;FC8F=646 64A;FC90=649 670;FC91=64A 631;FC92=64A 632;FC93=64A 645",
|
|
2375
|
+
";FC94=64A 646;FC95=64A 649;FC96=64A 64A;FC97=64A 654 62C;FC98=64A 654 62D;FC99=64A 654 6",
|
|
2376
|
+
"2E;FC9A=64A 654 645;FC9B=64A 654 647;FC9C=628 62C;FC9D=628 62D;FC9E=628 62E;FC9F=628 645",
|
|
2377
|
+
";FCA0=628 647;FCA1=62A 62C;FCA2=62A 62D;FCA3=62A 62E;FCA4=62A 645;FCA5=62A 647;FCA6=62B ",
|
|
2378
|
+
"645;FCA7=62C 62D;FCA8=62C 645;FCA9=62D 62C;FCAA=62D 645;FCAB=62E 62C;FCAC=62E 645;FCAD=6",
|
|
2379
|
+
"33 62C;FCAE=633 62D;FCAF=633 62E;FCB0=633 645;FCB1=635 62D;FCB2=635 62E;FCB3=635 645;FCB",
|
|
2380
|
+
"4=636 62C;FCB5=636 62D;FCB6=636 62E;FCB7=636 645;FCB8=637 62D;FCB9=638 645;FCBA=639 62C;",
|
|
2381
|
+
"FCBB=639 645;FCBC=63A 62C;FCBD=63A 645;FCBE=641 62C;FCBF=641 62D;FCC0=641 62E;FCC1=641 6",
|
|
2382
|
+
"45;FCC2=642 62D;FCC3=642 645;FCC4=643 62C;FCC5=643 62D;FCC6=643 62E;FCC7=643 644;FCC8=64",
|
|
2383
|
+
"3 645;FCC9=644 62C;FCCA=644 62D;FCCB=644 62E;FCCC=644 645;FCCD=644 647;FCCE=645 62C;FCCF",
|
|
2384
|
+
"=645 62D;FCD0=645 62E;FCD1=645 645;FCD2=646 62C;FCD3=646 62D;FCD4=646 62E;FCD5=646 645;F",
|
|
2385
|
+
"CD6=646 647;FCD7=647 62C;FCD8=647 645;FCD9=647 670;FCDA=64A 62C;FCDB=64A 62D;FCDC=64A 62",
|
|
2386
|
+
"E;FCDD=64A 645;FCDE=64A 647;FCDF=64A 654 645;FCE0=64A 654 647;FCE1=628 645;FCE2=628 647;",
|
|
2387
|
+
"FCE3=62A 645;FCE4=62A 647;FCE5=62B 645;FCE6=62B 647;FCE7=633 645;FCE8=633 647;FCE9=634 6",
|
|
2388
|
+
"45;FCEA=634 647;FCEB=643 644;FCEC=643 645;FCED=644 645;FCEE=646 645;FCEF=646 647;FCF0=64",
|
|
2389
|
+
"A 645;FCF1=64A 647;FCF2=640 64E 651;FCF3=640 64F 651;FCF4=640 650 651;FCF5=637 649;FCF6=",
|
|
2390
|
+
"637 64A;FCF7=639 649;FCF8=639 64A;FCF9=63A 649;FCFA=63A 64A;FCFB=633 649;FCFC=633 64A;FC",
|
|
2391
|
+
"FD=634 649;FCFE=634 64A;FCFF=62D 649;FD00=62D 64A;FD01=62C 649;FD02=62C 64A;FD03=62E 649",
|
|
2392
|
+
";FD04=62E 64A;FD05=635 649;FD06=635 64A;FD07=636 649;FD08=636 64A;FD09=634 62C;FD0A=634 ",
|
|
2393
|
+
"62D;FD0B=634 62E;FD0C=634 645;FD0D=634 631;FD0E=633 631;FD0F=635 631;FD10=636 631;FD11=6",
|
|
2394
|
+
"37 649;FD12=637 64A;FD13=639 649;FD14=639 64A;FD15=63A 649;FD16=63A 64A;FD17=633 649;FD1",
|
|
2395
|
+
"8=633 64A;FD19=634 649;FD1A=634 64A;FD1B=62D 649;FD1C=62D 64A;FD1D=62C 649;FD1E=62C 64A;",
|
|
2396
|
+
"FD1F=62E 649;FD20=62E 64A;FD21=635 649;FD22=635 64A;FD23=636 649;FD24=636 64A;FD25=634 6",
|
|
2397
|
+
"2C;FD26=634 62D;FD27=634 62E;FD28=634 645;FD29=634 631;FD2A=633 631;FD2B=635 631;FD2C=63",
|
|
2398
|
+
"6 631;FD2D=634 62C;FD2E=634 62D;FD2F=634 62E;FD30=634 645;FD31=633 647;FD32=634 647;FD33",
|
|
2399
|
+
"=637 645;FD34=633 62C;FD35=633 62D;FD36=633 62E;FD37=634 62C;FD38=634 62D;FD39=634 62E;F",
|
|
2400
|
+
"D3A=637 645;FD3B=638 645;FD3C=627 64B;FD3D=627 64B;FD50=62A 62C 645;FD51=62A 62D 62C;FD5",
|
|
2401
|
+
"2=62A 62D 62C;FD53=62A 62D 645;FD54=62A 62E 645;FD55=62A 645 62C;FD56=62A 645 62D;FD57=6",
|
|
2402
|
+
"2A 645 62E;FD58=62C 645 62D;FD59=62C 645 62D;FD5A=62D 645 64A;FD5B=62D 645 649;FD5C=633 ",
|
|
2403
|
+
"62D 62C;FD5D=633 62C 62D;FD5E=633 62C 649;FD5F=633 645 62D;FD60=633 645 62D;FD61=633 645",
|
|
2404
|
+
" 62C;FD62=633 645 645;FD63=633 645 645;FD64=635 62D 62D;FD65=635 62D 62D;FD66=635 645 64",
|
|
2405
|
+
"5;FD67=634 62D 645;FD68=634 62D 645;FD69=634 62C 64A;FD6A=634 645 62E;FD6B=634 645 62E;F",
|
|
2406
|
+
"D6C=634 645 645;FD6D=634 645 645;FD6E=636 62D 649;FD6F=636 62E 645;FD70=636 62E 645;FD71",
|
|
2407
|
+
"=637 645 62D;FD72=637 645 62D;FD73=637 645 645;FD74=637 645 64A;FD75=639 62C 645;FD76=63",
|
|
2408
|
+
"9 645 645;FD77=639 645 645;FD78=639 645 649;FD79=63A 645 645;FD7A=63A 645 64A;FD7B=63A 6",
|
|
2409
|
+
"45 649;FD7C=641 62E 645;FD7D=641 62E 645;FD7E=642 645 62D;FD7F=642 645 645;FD80=644 62D ",
|
|
2410
|
+
"645;FD81=644 62D 64A;FD82=644 62D 649;FD83=644 62C 62C;FD84=644 62C 62C;FD85=644 62E 645",
|
|
2411
|
+
";FD86=644 62E 645;FD87=644 645 62D;FD88=644 645 62D;FD89=645 62D 62C;FD8A=645 62D 645;FD",
|
|
2412
|
+
"8B=645 62D 64A;FD8C=645 62C 62D;FD8D=645 62C 645;FD8E=645 62E 62C;FD8F=645 62E 645;FD92=",
|
|
2413
|
+
"645 62C 62E;FD93=647 645 62C;FD94=647 645 645;FD95=646 62D 645;FD96=646 62D 649;FD97=646",
|
|
2414
|
+
" 62C 645;FD98=646 62C 645;FD99=646 62C 649;FD9A=646 645 64A;FD9B=646 645 649;FD9C=64A 64",
|
|
2415
|
+
"5 645;FD9D=64A 645 645;FD9E=628 62E 64A;FD9F=62A 62C 64A;FDA0=62A 62C 649;FDA1=62A 62E 6",
|
|
2416
|
+
"4A;FDA2=62A 62E 649;FDA3=62A 645 64A;FDA4=62A 645 649;FDA5=62C 645 64A;FDA6=62C 62D 649;",
|
|
2417
|
+
"FDA7=62C 645 649;FDA8=633 62E 649;FDA9=635 62D 64A;FDAA=634 62D 64A;FDAB=636 62D 64A;FDA",
|
|
2418
|
+
"C=644 62C 64A;FDAD=644 645 64A;FDAE=64A 62D 64A;FDAF=64A 62C 64A;FDB0=64A 645 64A;FDB1=6",
|
|
2419
|
+
"45 645 64A;FDB2=642 645 64A;FDB3=646 62D 64A;FDB4=642 645 62D;FDB5=644 62D 645;FDB6=639 ",
|
|
2420
|
+
"645 64A;FDB7=643 645 64A;FDB8=646 62C 62D;FDB9=645 62E 64A;FDBA=644 62C 645;FDBB=643 645",
|
|
2421
|
+
" 645;FDBC=644 62C 645;FDBD=646 62C 62D;FDBE=62C 62D 64A;FDBF=62D 62C 64A;FDC0=645 62C 64",
|
|
2422
|
+
"A;FDC1=641 645 64A;FDC2=628 62D 64A;FDC3=643 645 645;FDC4=639 62C 645;FDC5=635 645 645;F",
|
|
2423
|
+
"DC6=633 62E 64A;FDC7=646 62C 64A;FDF0=635 644 6D2;FDF1=642 644 6D2;FDF2=627 644 644 647;",
|
|
2424
|
+
"FDF3=627 643 628 631;FDF4=645 62D 645 62F;FDF5=635 644 639 645;FDF6=631 633 648 644;FDF7",
|
|
2425
|
+
"=639 644 64A 647;FDF8=648 633 644 645;FDF9=635 644 649;FDFA=635 644 649 20 627 644 644 6",
|
|
2426
|
+
"47 20 639 644 64A 647 20 648 633 644 645;FDFB=62C 644 20 62C 644 627 644 647;FDFC=631 6C",
|
|
2427
|
+
"C 627 644;FE10=2C;FE11=3001;FE12=3002;FE13=3A;FE14=3B;FE15=21;FE16=3F;FE17=3016;FE18=301",
|
|
2428
|
+
"7;FE19=2E 2E 2E;FE30=2E 2E;FE31=2014;FE32=2013;FE33=5F;FE34=5F;FE35=28;FE36=29;FE37=7B;F",
|
|
2429
|
+
"E38=7D;FE39=3014;FE3A=3015;FE3B=3010;FE3C=3011;FE3D=300A;FE3E=300B;FE3F=3008;FE40=3009;F",
|
|
2430
|
+
"E41=300C;FE42=300D;FE43=300E;FE44=300F;FE47=5B;FE48=5D;FE49=20 305;FE4A=20 305;FE4B=20 3",
|
|
2431
|
+
"05;FE4C=20 305;FE4D=5F;FE4E=5F;FE4F=5F;FE50=2C;FE51=3001;FE52=2E;FE54=3B;FE55=3A;FE56=3F",
|
|
2432
|
+
";FE57=21;FE58=2014;FE59=28;FE5A=29;FE5B=7B;FE5C=7D;FE5D=3014;FE5E=3015;FE5F=23;FE60=26;F",
|
|
2433
|
+
"E61=2A;FE62=2B;FE63=2D;FE64=3C;FE65=3E;FE66=3D;FE68=5C;FE69=24;FE6A=25;FE6B=40;FE70=20 6",
|
|
2434
|
+
"4B;FE71=640 64B;FE72=20 64C;FE74=20 64D;FE76=20 64E;FE77=640 64E;FE78=20 64F;FE79=640 64",
|
|
2435
|
+
"F;FE7A=20 650;FE7B=640 650;FE7C=20 651;FE7D=640 651;FE7E=20 652;FE7F=640 652;FE80=621;FE",
|
|
2436
|
+
"81=627 653;FE82=627 653;FE83=627 654;FE84=627 654;FE85=648 654;FE86=648 654;FE87=627 655",
|
|
2437
|
+
";FE88=627 655;FE89=64A 654;FE8A=64A 654;FE8B=64A 654;FE8C=64A 654;FE8D=627;FE8E=627;FE8F",
|
|
2438
|
+
"=628;FE90=628;FE91=628;FE92=628;FE93=629;FE94=629;FE95=62A;FE96=62A;FE97=62A;FE98=62A;FE",
|
|
2439
|
+
"99=62B;FE9A=62B;FE9B=62B;FE9C=62B;FE9D=62C;FE9E=62C;FE9F=62C;FEA0=62C;FEA1=62D;FEA2=62D;",
|
|
2440
|
+
"FEA3=62D;FEA4=62D;FEA5=62E;FEA6=62E;FEA7=62E;FEA8=62E;FEA9=62F;FEAA=62F;FEAB=630;FEAC=63",
|
|
2441
|
+
"0;FEAD=631;FEAE=631;FEAF=632;FEB0=632;FEB1=633;FEB2=633;FEB3=633;FEB4=633;FEB5=634;FEB6=",
|
|
2442
|
+
"634;FEB7=634;FEB8=634;FEB9=635;FEBA=635;FEBB=635;FEBC=635;FEBD=636;FEBE=636;FEBF=636;FEC",
|
|
2443
|
+
"0=636;FEC1=637;FEC2=637;FEC3=637;FEC4=637;FEC5=638;FEC6=638;FEC7=638;FEC8=638;FEC9=639;F",
|
|
2444
|
+
"ECA=639;FECB=639;FECC=639;FECD=63A;FECE=63A;FECF=63A;FED0=63A;FED1=641;FED2=641;FED3=641",
|
|
2445
|
+
";FED4=641;FED5=642;FED6=642;FED7=642;FED8=642;FED9=643;FEDA=643;FEDB=643;FEDC=643;FEDD=6",
|
|
2446
|
+
"44;FEDE=644;FEDF=644;FEE0=644;FEE1=645;FEE2=645;FEE3=645;FEE4=645;FEE5=646;FEE6=646;FEE7",
|
|
2447
|
+
"=646;FEE8=646;FEE9=647;FEEA=647;FEEB=647;FEEC=647;FEED=648;FEEE=648;FEEF=649;FEF0=649;FE",
|
|
2448
|
+
"F1=64A;FEF2=64A;FEF3=64A;FEF4=64A;FEF5=644 627 653;FEF6=644 627 653;FEF7=644 627 654;FEF",
|
|
2449
|
+
"8=644 627 654;FEF9=644 627 655;FEFA=644 627 655;FEFB=644 627;FEFC=644 627;FF01=21;FF02=2",
|
|
2450
|
+
"2;FF03=23;FF04=24;FF05=25;FF06=26;FF07=27;FF08=28;FF09=29;FF0A=2A;FF0B=2B;FF0C=2C;FF0D=2",
|
|
2451
|
+
"D;FF0E=2E;FF0F=2F;FF10=30;FF11=31;FF12=32;FF13=33;FF14=34;FF15=35;FF16=36;FF17=37;FF18=3",
|
|
2452
|
+
"8;FF19=39;FF1A=3A;FF1B=3B;FF1C=3C;FF1D=3D;FF1E=3E;FF1F=3F;FF20=40;FF21=41;FF22=42;FF23=4",
|
|
2453
|
+
"3;FF24=44;FF25=45;FF26=46;FF27=47;FF28=48;FF29=49;FF2A=4A;FF2B=4B;FF2C=4C;FF2D=4D;FF2E=4",
|
|
2454
|
+
"E;FF2F=4F;FF30=50;FF31=51;FF32=52;FF33=53;FF34=54;FF35=55;FF36=56;FF37=57;FF38=58;FF39=5",
|
|
2455
|
+
"9;FF3A=5A;FF3B=5B;FF3C=5C;FF3D=5D;FF3E=5E;FF3F=5F;FF40=60;FF41=61;FF42=62;FF43=63;FF44=6",
|
|
2456
|
+
"4;FF45=65;FF46=66;FF47=67;FF48=68;FF49=69;FF4A=6A;FF4B=6B;FF4C=6C;FF4D=6D;FF4E=6E;FF4F=6",
|
|
2457
|
+
"F;FF50=70;FF51=71;FF52=72;FF53=73;FF54=74;FF55=75;FF56=76;FF57=77;FF58=78;FF59=79;FF5A=7",
|
|
2458
|
+
"A;FF5B=7B;FF5C=7C;FF5D=7D;FF5E=7E;FF5F=2985;FF60=2986;FF61=3002;FF62=300C;FF63=300D;FF64",
|
|
2459
|
+
"=3001;FF65=30FB;FF66=30F2;FF67=30A1;FF68=30A3;FF69=30A5;FF6A=30A7;FF6B=30A9;FF6C=30E3;FF",
|
|
2460
|
+
"6D=30E5;FF6E=30E7;FF6F=30C3;FF70=30FC;FF71=30A2;FF72=30A4;FF73=30A6;FF74=30A8;FF75=30AA;",
|
|
2461
|
+
"FF76=30AB;FF77=30AD;FF78=30AF;FF79=30B1;FF7A=30B3;FF7B=30B5;FF7C=30B7;FF7D=30B9;FF7E=30B",
|
|
2462
|
+
"B;FF7F=30BD;FF80=30BF;FF81=30C1;FF82=30C4;FF83=30C6;FF84=30C8;FF85=30CA;FF86=30CB;FF87=3",
|
|
2463
|
+
"0CC;FF88=30CD;FF89=30CE;FF8A=30CF;FF8B=30D2;FF8C=30D5;FF8D=30D8;FF8E=30DB;FF8F=30DE;FF90",
|
|
2464
|
+
"=30DF;FF91=30E0;FF92=30E1;FF93=30E2;FF94=30E4;FF95=30E6;FF96=30E8;FF97=30E9;FF98=30EA;FF",
|
|
2465
|
+
"99=30EB;FF9A=30EC;FF9B=30ED;FF9C=30EF;FF9D=30F3;FF9E=3099;FF9F=309A;FFA0=1160;FFA1=1100;",
|
|
2466
|
+
"FFA2=1101;FFA3=11AA;FFA4=1102;FFA5=11AC;FFA6=11AD;FFA7=1103;FFA8=1104;FFA9=1105;FFAA=11B",
|
|
2467
|
+
"0;FFAB=11B1;FFAC=11B2;FFAD=11B3;FFAE=11B4;FFAF=11B5;FFB0=111A;FFB1=1106;FFB2=1107;FFB3=1",
|
|
2468
|
+
"108;FFB4=1121;FFB5=1109;FFB6=110A;FFB7=110B;FFB8=110C;FFB9=110D;FFBA=110E;FFBB=110F;FFBC",
|
|
2469
|
+
"=1110;FFBD=1111;FFBE=1112;FFC2=1161;FFC3=1162;FFC4=1163;FFC5=1164;FFC6=1165;FFC7=1166;FF",
|
|
2470
|
+
"CA=1167;FFCB=1168;FFCC=1169;FFCD=116A;FFCE=116B;FFCF=116C;FFD2=116D;FFD3=116E;FFD4=116F;",
|
|
2471
|
+
"FFD5=1170;FFD6=1171;FFD7=1172;FFDA=1173;FFDB=1174;FFDC=1175;FFE0=A2;FFE1=A3;FFE2=AC;FFE3",
|
|
2472
|
+
"=20 304;FFE4=A6;FFE5=A5;FFE6=20A9;FFE8=2502;FFE9=2190;FFEA=2191;FFEB=2192;FFEC=2193;FFED",
|
|
2473
|
+
"=25A0;FFEE=25CB;105C9=105D2 307;105E4=105DA 307;10781=2D0;10782=2D1;10783=E6;10784=299;1",
|
|
2474
|
+
"0785=253;10787=2A3;10788=AB66;10789=2A5;1078A=2A4;1078B=256;1078C=257;1078D=1D91;1078E=2",
|
|
2475
|
+
"58;1078F=25E;10790=2A9;10791=264;10792=262;10793=260;10794=29B;10795=127;10796=29C;10797",
|
|
2476
|
+
"=267;10798=284;10799=2AA;1079A=2AB;1079B=26C;1079C=1DF04;1079D=A78E;1079E=26E;1079F=1DF0",
|
|
2477
|
+
"5;107A0=28E;107A1=1DF06;107A2=F8;107A3=276;107A4=277;107A5=71;107A6=27A;107A7=1DF08;107A",
|
|
2478
|
+
"8=27D;107A9=27E;107AA=280;107AB=2A8;107AC=2A6;107AD=AB67;107AE=2A7;107AF=288;107B0=2C71;",
|
|
2479
|
+
"107B2=28F;107B3=2A1;107B4=2A2;107B5=298;107B6=1C0;107B7=1C1;107B8=1C2;107B9=1DF0A;107BA=",
|
|
2480
|
+
"1DF1E;1109A=11099 110BA;1109C=1109B 110BA;110AB=110A5 110BA;1112E=11131 11127;1112F=1113",
|
|
2481
|
+
"2 11127;1134B=11347 1133E;1134C=11347 11357;11383=11382 113C9;11385=11384 113BB;1138E=11",
|
|
2482
|
+
"38B 113C2;11391=11390 113C9;113C5=113C2 113C2;113C7=113C2 113B8;113C8=113C2 113C9;114BB=",
|
|
2483
|
+
"114B9 114BA;114BC=114B9 114B0;114BE=114B9 114BD;115BA=115B8 115AF;115BB=115B9 115AF;1193",
|
|
2484
|
+
"8=11935 11930;16121=1611E 1611E;16122=1611E 16129;16123=1611E 1611F;16124=16129 1611F;16",
|
|
2485
|
+
"125=1611E 16120;16126=1611E 1611E 1611F;16127=1611E 16129 1611F;16128=1611E 1611E 16120;",
|
|
2486
|
+
"16D68=16D67 16D67;16D69=16D63 16D67;16D6A=16D63 16D67 16D67;1CCD6=41;1CCD7=42;1CCD8=43;1",
|
|
2487
|
+
"CCD9=44;1CCDA=45;1CCDB=46;1CCDC=47;1CCDD=48;1CCDE=49;1CCDF=4A;1CCE0=4B;1CCE1=4C;1CCE2=4D",
|
|
2488
|
+
";1CCE3=4E;1CCE4=4F;1CCE5=50;1CCE6=51;1CCE7=52;1CCE8=53;1CCE9=54;1CCEA=55;1CCEB=56;1CCEC=",
|
|
2489
|
+
"57;1CCED=58;1CCEE=59;1CCEF=5A;1CCF0=30;1CCF1=31;1CCF2=32;1CCF3=33;1CCF4=34;1CCF5=35;1CCF",
|
|
2490
|
+
"6=36;1CCF7=37;1CCF8=38;1CCF9=39;1D15E=1D157 1D165;1D15F=1D158 1D165;1D160=1D158 1D165 1D",
|
|
2491
|
+
"16E;1D161=1D158 1D165 1D16F;1D162=1D158 1D165 1D170;1D163=1D158 1D165 1D171;1D164=1D158 ",
|
|
2492
|
+
"1D165 1D172;1D1BB=1D1B9 1D165;1D1BC=1D1BA 1D165;1D1BD=1D1B9 1D165 1D16E;1D1BE=1D1BA 1D16",
|
|
2493
|
+
"5 1D16E;1D1BF=1D1B9 1D165 1D16F;1D1C0=1D1BA 1D165 1D16F;1D400=41;1D401=42;1D402=43;1D403",
|
|
2494
|
+
"=44;1D404=45;1D405=46;1D406=47;1D407=48;1D408=49;1D409=4A;1D40A=4B;1D40B=4C;1D40C=4D;1D4",
|
|
2495
|
+
"0D=4E;1D40E=4F;1D40F=50;1D410=51;1D411=52;1D412=53;1D413=54;1D414=55;1D415=56;1D416=57;1",
|
|
2496
|
+
"D417=58;1D418=59;1D419=5A;1D41A=61;1D41B=62;1D41C=63;1D41D=64;1D41E=65;1D41F=66;1D420=67",
|
|
2497
|
+
";1D421=68;1D422=69;1D423=6A;1D424=6B;1D425=6C;1D426=6D;1D427=6E;1D428=6F;1D429=70;1D42A=",
|
|
2498
|
+
"71;1D42B=72;1D42C=73;1D42D=74;1D42E=75;1D42F=76;1D430=77;1D431=78;1D432=79;1D433=7A;1D43",
|
|
2499
|
+
"4=41;1D435=42;1D436=43;1D437=44;1D438=45;1D439=46;1D43A=47;1D43B=48;1D43C=49;1D43D=4A;1D",
|
|
2500
|
+
"43E=4B;1D43F=4C;1D440=4D;1D441=4E;1D442=4F;1D443=50;1D444=51;1D445=52;1D446=53;1D447=54;",
|
|
2501
|
+
"1D448=55;1D449=56;1D44A=57;1D44B=58;1D44C=59;1D44D=5A;1D44E=61;1D44F=62;1D450=63;1D451=6",
|
|
2502
|
+
"4;1D452=65;1D453=66;1D454=67;1D456=69;1D457=6A;1D458=6B;1D459=6C;1D45A=6D;1D45B=6E;1D45C",
|
|
2503
|
+
"=6F;1D45D=70;1D45E=71;1D45F=72;1D460=73;1D461=74;1D462=75;1D463=76;1D464=77;1D465=78;1D4",
|
|
2504
|
+
"66=79;1D467=7A;1D468=41;1D469=42;1D46A=43;1D46B=44;1D46C=45;1D46D=46;1D46E=47;1D46F=48;1",
|
|
2505
|
+
"D470=49;1D471=4A;1D472=4B;1D473=4C;1D474=4D;1D475=4E;1D476=4F;1D477=50;1D478=51;1D479=52",
|
|
2506
|
+
";1D47A=53;1D47B=54;1D47C=55;1D47D=56;1D47E=57;1D47F=58;1D480=59;1D481=5A;1D482=61;1D483=",
|
|
2507
|
+
"62;1D484=63;1D485=64;1D486=65;1D487=66;1D488=67;1D489=68;1D48A=69;1D48B=6A;1D48C=6B;1D48",
|
|
2508
|
+
"D=6C;1D48E=6D;1D48F=6E;1D490=6F;1D491=70;1D492=71;1D493=72;1D494=73;1D495=74;1D496=75;1D",
|
|
2509
|
+
"497=76;1D498=77;1D499=78;1D49A=79;1D49B=7A;1D49C=41;1D49E=43;1D49F=44;1D4A2=47;1D4A5=4A;",
|
|
2510
|
+
"1D4A6=4B;1D4A9=4E;1D4AA=4F;1D4AB=50;1D4AC=51;1D4AE=53;1D4AF=54;1D4B0=55;1D4B1=56;1D4B2=5",
|
|
2511
|
+
"7;1D4B3=58;1D4B4=59;1D4B5=5A;1D4B6=61;1D4B7=62;1D4B8=63;1D4B9=64;1D4BB=66;1D4BD=68;1D4BE",
|
|
2512
|
+
"=69;1D4BF=6A;1D4C0=6B;1D4C1=6C;1D4C2=6D;1D4C3=6E;1D4C5=70;1D4C6=71;1D4C7=72;1D4C8=73;1D4",
|
|
2513
|
+
"C9=74;1D4CA=75;1D4CB=76;1D4CC=77;1D4CD=78;1D4CE=79;1D4CF=7A;1D4D0=41;1D4D1=42;1D4D2=43;1",
|
|
2514
|
+
"D4D3=44;1D4D4=45;1D4D5=46;1D4D6=47;1D4D7=48;1D4D8=49;1D4D9=4A;1D4DA=4B;1D4DB=4C;1D4DC=4D",
|
|
2515
|
+
";1D4DD=4E;1D4DE=4F;1D4DF=50;1D4E0=51;1D4E1=52;1D4E2=53;1D4E3=54;1D4E4=55;1D4E5=56;1D4E6=",
|
|
2516
|
+
"57;1D4E7=58;1D4E8=59;1D4E9=5A;1D4EA=61;1D4EB=62;1D4EC=63;1D4ED=64;1D4EE=65;1D4EF=66;1D4F",
|
|
2517
|
+
"0=67;1D4F1=68;1D4F2=69;1D4F3=6A;1D4F4=6B;1D4F5=6C;1D4F6=6D;1D4F7=6E;1D4F8=6F;1D4F9=70;1D",
|
|
2518
|
+
"4FA=71;1D4FB=72;1D4FC=73;1D4FD=74;1D4FE=75;1D4FF=76;1D500=77;1D501=78;1D502=79;1D503=7A;",
|
|
2519
|
+
"1D504=41;1D505=42;1D507=44;1D508=45;1D509=46;1D50A=47;1D50D=4A;1D50E=4B;1D50F=4C;1D510=4",
|
|
2520
|
+
"D;1D511=4E;1D512=4F;1D513=50;1D514=51;1D516=53;1D517=54;1D518=55;1D519=56;1D51A=57;1D51B",
|
|
2521
|
+
"=58;1D51C=59;1D51E=61;1D51F=62;1D520=63;1D521=64;1D522=65;1D523=66;1D524=67;1D525=68;1D5",
|
|
2522
|
+
"26=69;1D527=6A;1D528=6B;1D529=6C;1D52A=6D;1D52B=6E;1D52C=6F;1D52D=70;1D52E=71;1D52F=72;1",
|
|
2523
|
+
"D530=73;1D531=74;1D532=75;1D533=76;1D534=77;1D535=78;1D536=79;1D537=7A;1D538=41;1D539=42",
|
|
2524
|
+
";1D53B=44;1D53C=45;1D53D=46;1D53E=47;1D540=49;1D541=4A;1D542=4B;1D543=4C;1D544=4D;1D546=",
|
|
2525
|
+
"4F;1D54A=53;1D54B=54;1D54C=55;1D54D=56;1D54E=57;1D54F=58;1D550=59;1D552=61;1D553=62;1D55",
|
|
2526
|
+
"4=63;1D555=64;1D556=65;1D557=66;1D558=67;1D559=68;1D55A=69;1D55B=6A;1D55C=6B;1D55D=6C;1D",
|
|
2527
|
+
"55E=6D;1D55F=6E;1D560=6F;1D561=70;1D562=71;1D563=72;1D564=73;1D565=74;1D566=75;1D567=76;",
|
|
2528
|
+
"1D568=77;1D569=78;1D56A=79;1D56B=7A;1D56C=41;1D56D=42;1D56E=43;1D56F=44;1D570=45;1D571=4",
|
|
2529
|
+
"6;1D572=47;1D573=48;1D574=49;1D575=4A;1D576=4B;1D577=4C;1D578=4D;1D579=4E;1D57A=4F;1D57B",
|
|
2530
|
+
"=50;1D57C=51;1D57D=52;1D57E=53;1D57F=54;1D580=55;1D581=56;1D582=57;1D583=58;1D584=59;1D5",
|
|
2531
|
+
"85=5A;1D586=61;1D587=62;1D588=63;1D589=64;1D58A=65;1D58B=66;1D58C=67;1D58D=68;1D58E=69;1",
|
|
2532
|
+
"D58F=6A;1D590=6B;1D591=6C;1D592=6D;1D593=6E;1D594=6F;1D595=70;1D596=71;1D597=72;1D598=73",
|
|
2533
|
+
";1D599=74;1D59A=75;1D59B=76;1D59C=77;1D59D=78;1D59E=79;1D59F=7A;1D5A0=41;1D5A1=42;1D5A2=",
|
|
2534
|
+
"43;1D5A3=44;1D5A4=45;1D5A5=46;1D5A6=47;1D5A7=48;1D5A8=49;1D5A9=4A;1D5AA=4B;1D5AB=4C;1D5A",
|
|
2535
|
+
"C=4D;1D5AD=4E;1D5AE=4F;1D5AF=50;1D5B0=51;1D5B1=52;1D5B2=53;1D5B3=54;1D5B4=55;1D5B5=56;1D",
|
|
2536
|
+
"5B6=57;1D5B7=58;1D5B8=59;1D5B9=5A;1D5BA=61;1D5BB=62;1D5BC=63;1D5BD=64;1D5BE=65;1D5BF=66;",
|
|
2537
|
+
"1D5C0=67;1D5C1=68;1D5C2=69;1D5C3=6A;1D5C4=6B;1D5C5=6C;1D5C6=6D;1D5C7=6E;1D5C8=6F;1D5C9=7",
|
|
2538
|
+
"0;1D5CA=71;1D5CB=72;1D5CC=73;1D5CD=74;1D5CE=75;1D5CF=76;1D5D0=77;1D5D1=78;1D5D2=79;1D5D3",
|
|
2539
|
+
"=7A;1D5D4=41;1D5D5=42;1D5D6=43;1D5D7=44;1D5D8=45;1D5D9=46;1D5DA=47;1D5DB=48;1D5DC=49;1D5",
|
|
2540
|
+
"DD=4A;1D5DE=4B;1D5DF=4C;1D5E0=4D;1D5E1=4E;1D5E2=4F;1D5E3=50;1D5E4=51;1D5E5=52;1D5E6=53;1",
|
|
2541
|
+
"D5E7=54;1D5E8=55;1D5E9=56;1D5EA=57;1D5EB=58;1D5EC=59;1D5ED=5A;1D5EE=61;1D5EF=62;1D5F0=63",
|
|
2542
|
+
";1D5F1=64;1D5F2=65;1D5F3=66;1D5F4=67;1D5F5=68;1D5F6=69;1D5F7=6A;1D5F8=6B;1D5F9=6C;1D5FA=",
|
|
2543
|
+
"6D;1D5FB=6E;1D5FC=6F;1D5FD=70;1D5FE=71;1D5FF=72;1D600=73;1D601=74;1D602=75;1D603=76;1D60",
|
|
2544
|
+
"4=77;1D605=78;1D606=79;1D607=7A;1D608=41;1D609=42;1D60A=43;1D60B=44;1D60C=45;1D60D=46;1D",
|
|
2545
|
+
"60E=47;1D60F=48;1D610=49;1D611=4A;1D612=4B;1D613=4C;1D614=4D;1D615=4E;1D616=4F;1D617=50;",
|
|
2546
|
+
"1D618=51;1D619=52;1D61A=53;1D61B=54;1D61C=55;1D61D=56;1D61E=57;1D61F=58;1D620=59;1D621=5",
|
|
2547
|
+
"A;1D622=61;1D623=62;1D624=63;1D625=64;1D626=65;1D627=66;1D628=67;1D629=68;1D62A=69;1D62B",
|
|
2548
|
+
"=6A;1D62C=6B;1D62D=6C;1D62E=6D;1D62F=6E;1D630=6F;1D631=70;1D632=71;1D633=72;1D634=73;1D6",
|
|
2549
|
+
"35=74;1D636=75;1D637=76;1D638=77;1D639=78;1D63A=79;1D63B=7A;1D63C=41;1D63D=42;1D63E=43;1",
|
|
2550
|
+
"D63F=44;1D640=45;1D641=46;1D642=47;1D643=48;1D644=49;1D645=4A;1D646=4B;1D647=4C;1D648=4D",
|
|
2551
|
+
";1D649=4E;1D64A=4F;1D64B=50;1D64C=51;1D64D=52;1D64E=53;1D64F=54;1D650=55;1D651=56;1D652=",
|
|
2552
|
+
"57;1D653=58;1D654=59;1D655=5A;1D656=61;1D657=62;1D658=63;1D659=64;1D65A=65;1D65B=66;1D65",
|
|
2553
|
+
"C=67;1D65D=68;1D65E=69;1D65F=6A;1D660=6B;1D661=6C;1D662=6D;1D663=6E;1D664=6F;1D665=70;1D",
|
|
2554
|
+
"666=71;1D667=72;1D668=73;1D669=74;1D66A=75;1D66B=76;1D66C=77;1D66D=78;1D66E=79;1D66F=7A;",
|
|
2555
|
+
"1D670=41;1D671=42;1D672=43;1D673=44;1D674=45;1D675=46;1D676=47;1D677=48;1D678=49;1D679=4",
|
|
2556
|
+
"A;1D67A=4B;1D67B=4C;1D67C=4D;1D67D=4E;1D67E=4F;1D67F=50;1D680=51;1D681=52;1D682=53;1D683",
|
|
2557
|
+
"=54;1D684=55;1D685=56;1D686=57;1D687=58;1D688=59;1D689=5A;1D68A=61;1D68B=62;1D68C=63;1D6",
|
|
2558
|
+
"8D=64;1D68E=65;1D68F=66;1D690=67;1D691=68;1D692=69;1D693=6A;1D694=6B;1D695=6C;1D696=6D;1",
|
|
2559
|
+
"D697=6E;1D698=6F;1D699=70;1D69A=71;1D69B=72;1D69C=73;1D69D=74;1D69E=75;1D69F=76;1D6A0=77",
|
|
2560
|
+
";1D6A1=78;1D6A2=79;1D6A3=7A;1D6A4=131;1D6A5=237;1D6A8=391;1D6A9=392;1D6AA=393;1D6AB=394;",
|
|
2561
|
+
"1D6AC=395;1D6AD=396;1D6AE=397;1D6AF=398;1D6B0=399;1D6B1=39A;1D6B2=39B;1D6B3=39C;1D6B4=39",
|
|
2562
|
+
"D;1D6B5=39E;1D6B6=39F;1D6B7=3A0;1D6B8=3A1;1D6B9=398;1D6BA=3A3;1D6BB=3A4;1D6BC=3A5;1D6BD=",
|
|
2563
|
+
"3A6;1D6BE=3A7;1D6BF=3A8;1D6C0=3A9;1D6C1=2207;1D6C2=3B1;1D6C3=3B2;1D6C4=3B3;1D6C5=3B4;1D6",
|
|
2564
|
+
"C6=3B5;1D6C7=3B6;1D6C8=3B7;1D6C9=3B8;1D6CA=3B9;1D6CB=3BA;1D6CC=3BB;1D6CD=3BC;1D6CE=3BD;1",
|
|
2565
|
+
"D6CF=3BE;1D6D0=3BF;1D6D1=3C0;1D6D2=3C1;1D6D3=3C2;1D6D4=3C3;1D6D5=3C4;1D6D6=3C5;1D6D7=3C6",
|
|
2566
|
+
";1D6D8=3C7;1D6D9=3C8;1D6DA=3C9;1D6DB=2202;1D6DC=3B5;1D6DD=3B8;1D6DE=3BA;1D6DF=3C6;1D6E0=",
|
|
2567
|
+
"3C1;1D6E1=3C0;1D6E2=391;1D6E3=392;1D6E4=393;1D6E5=394;1D6E6=395;1D6E7=396;1D6E8=397;1D6E",
|
|
2568
|
+
"9=398;1D6EA=399;1D6EB=39A;1D6EC=39B;1D6ED=39C;1D6EE=39D;1D6EF=39E;1D6F0=39F;1D6F1=3A0;1D",
|
|
2569
|
+
"6F2=3A1;1D6F3=398;1D6F4=3A3;1D6F5=3A4;1D6F6=3A5;1D6F7=3A6;1D6F8=3A7;1D6F9=3A8;1D6FA=3A9;",
|
|
2570
|
+
"1D6FB=2207;1D6FC=3B1;1D6FD=3B2;1D6FE=3B3;1D6FF=3B4;1D700=3B5;1D701=3B6;1D702=3B7;1D703=3",
|
|
2571
|
+
"B8;1D704=3B9;1D705=3BA;1D706=3BB;1D707=3BC;1D708=3BD;1D709=3BE;1D70A=3BF;1D70B=3C0;1D70C",
|
|
2572
|
+
"=3C1;1D70D=3C2;1D70E=3C3;1D70F=3C4;1D710=3C5;1D711=3C6;1D712=3C7;1D713=3C8;1D714=3C9;1D7",
|
|
2573
|
+
"15=2202;1D716=3B5;1D717=3B8;1D718=3BA;1D719=3C6;1D71A=3C1;1D71B=3C0;1D71C=391;1D71D=392;",
|
|
2574
|
+
"1D71E=393;1D71F=394;1D720=395;1D721=396;1D722=397;1D723=398;1D724=399;1D725=39A;1D726=39",
|
|
2575
|
+
"B;1D727=39C;1D728=39D;1D729=39E;1D72A=39F;1D72B=3A0;1D72C=3A1;1D72D=398;1D72E=3A3;1D72F=",
|
|
2576
|
+
"3A4;1D730=3A5;1D731=3A6;1D732=3A7;1D733=3A8;1D734=3A9;1D735=2207;1D736=3B1;1D737=3B2;1D7",
|
|
2577
|
+
"38=3B3;1D739=3B4;1D73A=3B5;1D73B=3B6;1D73C=3B7;1D73D=3B8;1D73E=3B9;1D73F=3BA;1D740=3BB;1",
|
|
2578
|
+
"D741=3BC;1D742=3BD;1D743=3BE;1D744=3BF;1D745=3C0;1D746=3C1;1D747=3C2;1D748=3C3;1D749=3C4",
|
|
2579
|
+
";1D74A=3C5;1D74B=3C6;1D74C=3C7;1D74D=3C8;1D74E=3C9;1D74F=2202;1D750=3B5;1D751=3B8;1D752=",
|
|
2580
|
+
"3BA;1D753=3C6;1D754=3C1;1D755=3C0;1D756=391;1D757=392;1D758=393;1D759=394;1D75A=395;1D75",
|
|
2581
|
+
"B=396;1D75C=397;1D75D=398;1D75E=399;1D75F=39A;1D760=39B;1D761=39C;1D762=39D;1D763=39E;1D",
|
|
2582
|
+
"764=39F;1D765=3A0;1D766=3A1;1D767=398;1D768=3A3;1D769=3A4;1D76A=3A5;1D76B=3A6;1D76C=3A7;",
|
|
2583
|
+
"1D76D=3A8;1D76E=3A9;1D76F=2207;1D770=3B1;1D771=3B2;1D772=3B3;1D773=3B4;1D774=3B5;1D775=3",
|
|
2584
|
+
"B6;1D776=3B7;1D777=3B8;1D778=3B9;1D779=3BA;1D77A=3BB;1D77B=3BC;1D77C=3BD;1D77D=3BE;1D77E",
|
|
2585
|
+
"=3BF;1D77F=3C0;1D780=3C1;1D781=3C2;1D782=3C3;1D783=3C4;1D784=3C5;1D785=3C6;1D786=3C7;1D7",
|
|
2586
|
+
"87=3C8;1D788=3C9;1D789=2202;1D78A=3B5;1D78B=3B8;1D78C=3BA;1D78D=3C6;1D78E=3C1;1D78F=3C0;",
|
|
2587
|
+
"1D790=391;1D791=392;1D792=393;1D793=394;1D794=395;1D795=396;1D796=397;1D797=398;1D798=39",
|
|
2588
|
+
"9;1D799=39A;1D79A=39B;1D79B=39C;1D79C=39D;1D79D=39E;1D79E=39F;1D79F=3A0;1D7A0=3A1;1D7A1=",
|
|
2589
|
+
"398;1D7A2=3A3;1D7A3=3A4;1D7A4=3A5;1D7A5=3A6;1D7A6=3A7;1D7A7=3A8;1D7A8=3A9;1D7A9=2207;1D7",
|
|
2590
|
+
"AA=3B1;1D7AB=3B2;1D7AC=3B3;1D7AD=3B4;1D7AE=3B5;1D7AF=3B6;1D7B0=3B7;1D7B1=3B8;1D7B2=3B9;1",
|
|
2591
|
+
"D7B3=3BA;1D7B4=3BB;1D7B5=3BC;1D7B6=3BD;1D7B7=3BE;1D7B8=3BF;1D7B9=3C0;1D7BA=3C1;1D7BB=3C2",
|
|
2592
|
+
";1D7BC=3C3;1D7BD=3C4;1D7BE=3C5;1D7BF=3C6;1D7C0=3C7;1D7C1=3C8;1D7C2=3C9;1D7C3=2202;1D7C4=",
|
|
2593
|
+
"3B5;1D7C5=3B8;1D7C6=3BA;1D7C7=3C6;1D7C8=3C1;1D7C9=3C0;1D7CA=3DC;1D7CB=3DD;1D7CE=30;1D7CF",
|
|
2594
|
+
"=31;1D7D0=32;1D7D1=33;1D7D2=34;1D7D3=35;1D7D4=36;1D7D5=37;1D7D6=38;1D7D7=39;1D7D8=30;1D7",
|
|
2595
|
+
"D9=31;1D7DA=32;1D7DB=33;1D7DC=34;1D7DD=35;1D7DE=36;1D7DF=37;1D7E0=38;1D7E1=39;1D7E2=30;1",
|
|
2596
|
+
"D7E3=31;1D7E4=32;1D7E5=33;1D7E6=34;1D7E7=35;1D7E8=36;1D7E9=37;1D7EA=38;1D7EB=39;1D7EC=30",
|
|
2597
|
+
";1D7ED=31;1D7EE=32;1D7EF=33;1D7F0=34;1D7F1=35;1D7F2=36;1D7F3=37;1D7F4=38;1D7F5=39;1D7F6=",
|
|
2598
|
+
"30;1D7F7=31;1D7F8=32;1D7F9=33;1D7FA=34;1D7FB=35;1D7FC=36;1D7FD=37;1D7FE=38;1D7FF=39;1E03",
|
|
2599
|
+
"0=430;1E031=431;1E032=432;1E033=433;1E034=434;1E035=435;1E036=436;1E037=437;1E038=438;1E",
|
|
2600
|
+
"039=43A;1E03A=43B;1E03B=43C;1E03C=43E;1E03D=43F;1E03E=440;1E03F=441;1E040=442;1E041=443;",
|
|
2601
|
+
"1E042=444;1E043=445;1E044=446;1E045=447;1E046=448;1E047=44B;1E048=44D;1E049=44E;1E04A=A6",
|
|
2602
|
+
"89;1E04B=4D9;1E04C=456;1E04D=458;1E04E=4E9;1E04F=4AF;1E050=4CF;1E051=430;1E052=431;1E053",
|
|
2603
|
+
"=432;1E054=433;1E055=434;1E056=435;1E057=436;1E058=437;1E059=438;1E05A=43A;1E05B=43B;1E0",
|
|
2604
|
+
"5C=43E;1E05D=43F;1E05E=441;1E05F=443;1E060=444;1E061=445;1E062=446;1E063=447;1E064=448;1",
|
|
2605
|
+
"E065=44A;1E066=44B;1E067=491;1E068=456;1E069=455;1E06A=45F;1E06B=4AB;1E06C=A651;1E06D=4B",
|
|
2606
|
+
"1;1EE00=627;1EE01=628;1EE02=62C;1EE03=62F;1EE05=648;1EE06=632;1EE07=62D;1EE08=637;1EE09=",
|
|
2607
|
+
"64A;1EE0A=643;1EE0B=644;1EE0C=645;1EE0D=646;1EE0E=633;1EE0F=639;1EE10=641;1EE11=635;1EE1",
|
|
2608
|
+
"2=642;1EE13=631;1EE14=634;1EE15=62A;1EE16=62B;1EE17=62E;1EE18=630;1EE19=636;1EE1A=638;1E",
|
|
2609
|
+
"E1B=63A;1EE1C=66E;1EE1D=6BA;1EE1E=6A1;1EE1F=66F;1EE21=628;1EE22=62C;1EE24=647;1EE27=62D;",
|
|
2610
|
+
"1EE29=64A;1EE2A=643;1EE2B=644;1EE2C=645;1EE2D=646;1EE2E=633;1EE2F=639;1EE30=641;1EE31=63",
|
|
2611
|
+
"5;1EE32=642;1EE34=634;1EE35=62A;1EE36=62B;1EE37=62E;1EE39=636;1EE3B=63A;1EE42=62C;1EE47=",
|
|
2612
|
+
"62D;1EE49=64A;1EE4B=644;1EE4D=646;1EE4E=633;1EE4F=639;1EE51=635;1EE52=642;1EE54=634;1EE5",
|
|
2613
|
+
"7=62E;1EE59=636;1EE5B=63A;1EE5D=6BA;1EE5F=66F;1EE61=628;1EE62=62C;1EE64=647;1EE67=62D;1E",
|
|
2614
|
+
"E68=637;1EE69=64A;1EE6A=643;1EE6C=645;1EE6D=646;1EE6E=633;1EE6F=639;1EE70=641;1EE71=635;",
|
|
2615
|
+
"1EE72=642;1EE74=634;1EE75=62A;1EE76=62B;1EE77=62E;1EE79=636;1EE7A=638;1EE7B=63A;1EE7C=66",
|
|
2616
|
+
"E;1EE7E=6A1;1EE80=627;1EE81=628;1EE82=62C;1EE83=62F;1EE84=647;1EE85=648;1EE86=632;1EE87=",
|
|
2617
|
+
"62D;1EE88=637;1EE89=64A;1EE8B=644;1EE8C=645;1EE8D=646;1EE8E=633;1EE8F=639;1EE90=641;1EE9",
|
|
2618
|
+
"1=635;1EE92=642;1EE93=631;1EE94=634;1EE95=62A;1EE96=62B;1EE97=62E;1EE98=630;1EE99=636;1E",
|
|
2619
|
+
"E9A=638;1EE9B=63A;1EEA1=628;1EEA2=62C;1EEA3=62F;1EEA5=648;1EEA6=632;1EEA7=62D;1EEA8=637;",
|
|
2620
|
+
"1EEA9=64A;1EEAB=644;1EEAC=645;1EEAD=646;1EEAE=633;1EEAF=639;1EEB0=641;1EEB1=635;1EEB2=64",
|
|
2621
|
+
"2;1EEB3=631;1EEB4=634;1EEB5=62A;1EEB6=62B;1EEB7=62E;1EEB8=630;1EEB9=636;1EEBA=638;1EEBB=",
|
|
2622
|
+
"63A;1F100=30 2E;1F101=30 2C;1F102=31 2C;1F103=32 2C;1F104=33 2C;1F105=34 2C;1F106=35 2C;",
|
|
2623
|
+
"1F107=36 2C;1F108=37 2C;1F109=38 2C;1F10A=39 2C;1F110=28 41 29;1F111=28 42 29;1F112=28 4",
|
|
2624
|
+
"3 29;1F113=28 44 29;1F114=28 45 29;1F115=28 46 29;1F116=28 47 29;1F117=28 48 29;1F118=28",
|
|
2625
|
+
" 49 29;1F119=28 4A 29;1F11A=28 4B 29;1F11B=28 4C 29;1F11C=28 4D 29;1F11D=28 4E 29;1F11E=",
|
|
2626
|
+
"28 4F 29;1F11F=28 50 29;1F120=28 51 29;1F121=28 52 29;1F122=28 53 29;1F123=28 54 29;1F12",
|
|
2627
|
+
"4=28 55 29;1F125=28 56 29;1F126=28 57 29;1F127=28 58 29;1F128=28 59 29;1F129=28 5A 29;1F",
|
|
2628
|
+
"12A=3014 53 3015;1F12B=43;1F12C=52;1F12D=43 44;1F12E=57 5A;1F130=41;1F131=42;1F132=43;1F",
|
|
2629
|
+
"133=44;1F134=45;1F135=46;1F136=47;1F137=48;1F138=49;1F139=4A;1F13A=4B;1F13B=4C;1F13C=4D;",
|
|
2630
|
+
"1F13D=4E;1F13E=4F;1F13F=50;1F140=51;1F141=52;1F142=53;1F143=54;1F144=55;1F145=56;1F146=5",
|
|
2631
|
+
"7;1F147=58;1F148=59;1F149=5A;1F14A=48 56;1F14B=4D 56;1F14C=53 44;1F14D=53 53;1F14E=50 50",
|
|
2632
|
+
" 56;1F14F=57 43;1F16A=4D 43;1F16B=4D 44;1F16C=4D 52;1F190=44 4A;1F200=307B 304B;1F201=30",
|
|
2633
|
+
"B3 30B3;1F202=30B5;1F210=624B;1F211=5B57;1F212=53CC;1F213=30C6 3099;1F214=4E8C;1F215=591",
|
|
2634
|
+
"A;1F216=89E3;1F217=5929;1F218=4EA4;1F219=6620;1F21A=7121;1F21B=6599;1F21C=524D;1F21D=5F8",
|
|
2635
|
+
"C;1F21E=518D;1F21F=65B0;1F220=521D;1F221=7D42;1F222=751F;1F223=8CA9;1F224=58F0;1F225=543",
|
|
2636
|
+
"9;1F226=6F14;1F227=6295;1F228=6355;1F229=4E00;1F22A=4E09;1F22B=904A;1F22C=5DE6;1F22D=4E2",
|
|
2637
|
+
"D;1F22E=53F3;1F22F=6307;1F230=8D70;1F231=6253;1F232=7981;1F233=7A7A;1F234=5408;1F235=6E8",
|
|
2638
|
+
"0;1F236=6709;1F237=6708;1F238=7533;1F239=5272;1F23A=55B6;1F23B=914D;1F240=3014 672C 3015",
|
|
2639
|
+
";1F241=3014 4E09 3015;1F242=3014 4E8C 3015;1F243=3014 5B89 3015;1F244=3014 70B9 3015;1F2",
|
|
2640
|
+
"45=3014 6253 3015;1F246=3014 76D7 3015;1F247=3014 52DD 3015;1F248=3014 6557 3015;1F250=5",
|
|
2641
|
+
"F97;1F251=53EF;1FBF0=30;1FBF1=31;1FBF2=32;1FBF3=33;1FBF4=34;1FBF5=35;1FBF6=36;1FBF7=37;1",
|
|
2642
|
+
"FBF8=38;1FBF9=39;2F800=4E3D;2F801=4E38;2F802=4E41;2F803=20122;2F804=4F60;2F805=4FAE;2F80",
|
|
2643
|
+
"6=4FBB;2F807=5002;2F808=507A;2F809=5099;2F80A=50E7;2F80B=50CF;2F80C=349E;2F80D=2063A;2F8",
|
|
2644
|
+
"0E=514D;2F80F=5154;2F810=5164;2F811=5177;2F812=2051C;2F813=34B9;2F814=5167;2F815=518D;2F",
|
|
2645
|
+
"816=2054B;2F817=5197;2F818=51A4;2F819=4ECC;2F81A=51AC;2F81B=51B5;2F81C=291DF;2F81D=51F5;",
|
|
2646
|
+
"2F81E=5203;2F81F=34DF;2F820=523B;2F821=5246;2F822=5272;2F823=5277;2F824=3515;2F825=52C7;",
|
|
2647
|
+
"2F826=52C9;2F827=52E4;2F828=52FA;2F829=5305;2F82A=5306;2F82B=5317;2F82C=5349;2F82D=5351;",
|
|
2648
|
+
"2F82E=535A;2F82F=5373;2F830=537D;2F831=537F;2F832=537F;2F833=537F;2F834=20A2C;2F835=7070",
|
|
2649
|
+
";2F836=53CA;2F837=53DF;2F838=20B63;2F839=53EB;2F83A=53F1;2F83B=5406;2F83C=549E;2F83D=543",
|
|
2650
|
+
"8;2F83E=5448;2F83F=5468;2F840=54A2;2F841=54F6;2F842=5510;2F843=5553;2F844=5563;2F845=558",
|
|
2651
|
+
"4;2F846=5584;2F847=5599;2F848=55AB;2F849=55B3;2F84A=55C2;2F84B=5716;2F84C=5606;2F84D=571",
|
|
2652
|
+
"7;2F84E=5651;2F84F=5674;2F850=5207;2F851=58EE;2F852=57CE;2F853=57F4;2F854=580D;2F855=578",
|
|
2653
|
+
"B;2F856=5832;2F857=5831;2F858=58AC;2F859=214E4;2F85A=58F2;2F85B=58F7;2F85C=5906;2F85D=59",
|
|
2654
|
+
"1A;2F85E=5922;2F85F=5962;2F860=216A8;2F861=216EA;2F862=59EC;2F863=5A1B;2F864=5A27;2F865=",
|
|
2655
|
+
"59D8;2F866=5A66;2F867=36EE;2F868=36FC;2F869=5B08;2F86A=5B3E;2F86B=5B3E;2F86C=219C8;2F86D",
|
|
2656
|
+
"=5BC3;2F86E=5BD8;2F86F=5BE7;2F870=5BF3;2F871=21B18;2F872=5BFF;2F873=5C06;2F874=5F53;2F87",
|
|
2657
|
+
"5=5C22;2F876=3781;2F877=5C60;2F878=5C6E;2F879=5CC0;2F87A=5C8D;2F87B=21DE4;2F87C=5D43;2F8",
|
|
2658
|
+
"7D=21DE6;2F87E=5D6E;2F87F=5D6B;2F880=5D7C;2F881=5DE1;2F882=5DE2;2F883=382F;2F884=5DFD;2F",
|
|
2659
|
+
"885=5E28;2F886=5E3D;2F887=5E69;2F888=3862;2F889=22183;2F88A=387C;2F88B=5EB0;2F88C=5EB3;2",
|
|
2660
|
+
"F88D=5EB6;2F88E=5ECA;2F88F=2A392;2F890=5EFE;2F891=22331;2F892=22331;2F893=8201;2F894=5F2",
|
|
2661
|
+
"2;2F895=5F22;2F896=38C7;2F897=232B8;2F898=261DA;2F899=5F62;2F89A=5F6B;2F89B=38E3;2F89C=5",
|
|
2662
|
+
"F9A;2F89D=5FCD;2F89E=5FD7;2F89F=5FF9;2F8A0=6081;2F8A1=393A;2F8A2=391C;2F8A3=6094;2F8A4=2",
|
|
2663
|
+
"26D4;2F8A5=60C7;2F8A6=6148;2F8A7=614C;2F8A8=614E;2F8A9=614C;2F8AA=617A;2F8AB=618E;2F8AC=",
|
|
2664
|
+
"61B2;2F8AD=61A4;2F8AE=61AF;2F8AF=61DE;2F8B0=61F2;2F8B1=61F6;2F8B2=6210;2F8B3=621B;2F8B4=",
|
|
2665
|
+
"625D;2F8B5=62B1;2F8B6=62D4;2F8B7=6350;2F8B8=22B0C;2F8B9=633D;2F8BA=62FC;2F8BB=6368;2F8BC",
|
|
2666
|
+
"=6383;2F8BD=63E4;2F8BE=22BF1;2F8BF=6422;2F8C0=63C5;2F8C1=63A9;2F8C2=3A2E;2F8C3=6469;2F8C",
|
|
2667
|
+
"4=647E;2F8C5=649D;2F8C6=6477;2F8C7=3A6C;2F8C8=654F;2F8C9=656C;2F8CA=2300A;2F8CB=65E3;2F8",
|
|
2668
|
+
"CC=66F8;2F8CD=6649;2F8CE=3B19;2F8CF=6691;2F8D0=3B08;2F8D1=3AE4;2F8D2=5192;2F8D3=5195;2F8",
|
|
2669
|
+
"D4=6700;2F8D5=669C;2F8D6=80AD;2F8D7=43D9;2F8D8=6717;2F8D9=671B;2F8DA=6721;2F8DB=675E;2F8",
|
|
2670
|
+
"DC=6753;2F8DD=233C3;2F8DE=3B49;2F8DF=67FA;2F8E0=6785;2F8E1=6852;2F8E2=6885;2F8E3=2346D;2",
|
|
2671
|
+
"F8E4=688E;2F8E5=681F;2F8E6=6914;2F8E7=3B9D;2F8E8=6942;2F8E9=69A3;2F8EA=69EA;2F8EB=6AA8;2",
|
|
2672
|
+
"F8EC=236A3;2F8ED=6ADB;2F8EE=3C18;2F8EF=6B21;2F8F0=238A7;2F8F1=6B54;2F8F2=3C4E;2F8F3=6B72",
|
|
2673
|
+
";2F8F4=6B9F;2F8F5=6BBA;2F8F6=6BBB;2F8F7=23A8D;2F8F8=21D0B;2F8F9=23AFA;2F8FA=6C4E;2F8FB=2",
|
|
2674
|
+
"3CBC;2F8FC=6CBF;2F8FD=6CCD;2F8FE=6C67;2F8FF=6D16;2F900=6D3E;2F901=6D77;2F902=6D41;2F903=",
|
|
2675
|
+
"6D69;2F904=6D78;2F905=6D85;2F906=23D1E;2F907=6D34;2F908=6E2F;2F909=6E6E;2F90A=3D33;2F90B",
|
|
2676
|
+
"=6ECB;2F90C=6EC7;2F90D=23ED1;2F90E=6DF9;2F90F=6F6E;2F910=23F5E;2F911=23F8E;2F912=6FC6;2F",
|
|
2677
|
+
"913=7039;2F914=701E;2F915=701B;2F916=3D96;2F917=704A;2F918=707D;2F919=7077;2F91A=70AD;2F",
|
|
2678
|
+
"91B=20525;2F91C=7145;2F91D=24263;2F91E=719C;2F91F=243AB;2F920=7228;2F921=7235;2F922=7250",
|
|
2679
|
+
";2F923=24608;2F924=7280;2F925=7295;2F926=24735;2F927=24814;2F928=737A;2F929=738B;2F92A=3",
|
|
2680
|
+
"EAC;2F92B=73A5;2F92C=3EB8;2F92D=3EB8;2F92E=7447;2F92F=745C;2F930=7471;2F931=7485;2F932=7",
|
|
2681
|
+
"4CA;2F933=3F1B;2F934=7524;2F935=24C36;2F936=753E;2F937=24C92;2F938=7570;2F939=2219F;2F93",
|
|
2682
|
+
"A=7610;2F93B=24FA1;2F93C=24FB8;2F93D=25044;2F93E=3FFC;2F93F=4008;2F940=76F4;2F941=250F3;",
|
|
2683
|
+
"2F942=250F2;2F943=25119;2F944=25133;2F945=771E;2F946=771F;2F947=771F;2F948=774A;2F949=40",
|
|
2684
|
+
"39;2F94A=778B;2F94B=4046;2F94C=4096;2F94D=2541D;2F94E=784E;2F94F=788C;2F950=78CC;2F951=4",
|
|
2685
|
+
"0E3;2F952=25626;2F953=7956;2F954=2569A;2F955=256C5;2F956=798F;2F957=79EB;2F958=412F;2F95",
|
|
2686
|
+
"9=7A40;2F95A=7A4A;2F95B=7A4F;2F95C=2597C;2F95D=25AA7;2F95E=25AA7;2F95F=7AEE;2F960=4202;2",
|
|
2687
|
+
"F961=25BAB;2F962=7BC6;2F963=7BC9;2F964=4227;2F965=25C80;2F966=7CD2;2F967=42A0;2F968=7CE8",
|
|
2688
|
+
";2F969=7CE3;2F96A=7D00;2F96B=25F86;2F96C=7D63;2F96D=4301;2F96E=7DC7;2F96F=7E02;2F970=7E4",
|
|
2689
|
+
"5;2F971=4334;2F972=26228;2F973=26247;2F974=4359;2F975=262D9;2F976=7F7A;2F977=2633E;2F978",
|
|
2690
|
+
"=7F95;2F979=7FFA;2F97A=8005;2F97B=264DA;2F97C=26523;2F97D=8060;2F97E=265A8;2F97F=8070;2F",
|
|
2691
|
+
"980=2335F;2F981=43D5;2F982=80B2;2F983=8103;2F984=440B;2F985=813E;2F986=5AB5;2F987=267A7;",
|
|
2692
|
+
"2F988=267B5;2F989=23393;2F98A=2339C;2F98B=8201;2F98C=8204;2F98D=8F9E;2F98E=446B;2F98F=82",
|
|
2693
|
+
"91;2F990=828B;2F991=829D;2F992=52B3;2F993=82B1;2F994=82B3;2F995=82BD;2F996=82E6;2F997=26",
|
|
2694
|
+
"B3C;2F998=82E5;2F999=831D;2F99A=8363;2F99B=83AD;2F99C=8323;2F99D=83BD;2F99E=83E7;2F99F=8",
|
|
2695
|
+
"457;2F9A0=8353;2F9A1=83CA;2F9A2=83CC;2F9A3=83DC;2F9A4=26C36;2F9A5=26D6B;2F9A6=26CD5;2F9A",
|
|
2696
|
+
"7=452B;2F9A8=84F1;2F9A9=84F3;2F9AA=8516;2F9AB=273CA;2F9AC=8564;2F9AD=26F2C;2F9AE=455D;2F",
|
|
2697
|
+
"9AF=4561;2F9B0=26FB1;2F9B1=270D2;2F9B2=456B;2F9B3=8650;2F9B4=865C;2F9B5=8667;2F9B6=8669;",
|
|
2698
|
+
"2F9B7=86A9;2F9B8=8688;2F9B9=870E;2F9BA=86E2;2F9BB=8779;2F9BC=8728;2F9BD=876B;2F9BE=8786;",
|
|
2699
|
+
"2F9BF=45D7;2F9C0=87E1;2F9C1=8801;2F9C2=45F9;2F9C3=8860;2F9C4=8863;2F9C5=27667;2F9C6=88D7",
|
|
2700
|
+
";2F9C7=88DE;2F9C8=4635;2F9C9=88FA;2F9CA=34BB;2F9CB=278AE;2F9CC=27966;2F9CD=46BE;2F9CE=46",
|
|
2701
|
+
"C7;2F9CF=8AA0;2F9D0=8AED;2F9D1=8B8A;2F9D2=8C55;2F9D3=27CA8;2F9D4=8CAB;2F9D5=8CC1;2F9D6=8",
|
|
2702
|
+
"D1B;2F9D7=8D77;2F9D8=27F2F;2F9D9=20804;2F9DA=8DCB;2F9DB=8DBC;2F9DC=8DF0;2F9DD=208DE;2F9D",
|
|
2703
|
+
"E=8ED4;2F9DF=8F38;2F9E0=285D2;2F9E1=285ED;2F9E2=9094;2F9E3=90F1;2F9E4=9111;2F9E5=2872E;2",
|
|
2704
|
+
"F9E6=911B;2F9E7=9238;2F9E8=92D7;2F9E9=92D8;2F9EA=927C;2F9EB=93F9;2F9EC=9415;2F9ED=28BFA;",
|
|
2705
|
+
"2F9EE=958B;2F9EF=4995;2F9F0=95B7;2F9F1=28D77;2F9F2=49E6;2F9F3=96C3;2F9F4=5DB2;2F9F5=9723",
|
|
2706
|
+
";2F9F6=29145;2F9F7=2921A;2F9F8=4A6E;2F9F9=4A76;2F9FA=97E0;2F9FB=2940A;2F9FC=4AB2;2F9FD=2",
|
|
2707
|
+
"9496;2F9FE=980B;2F9FF=980B;2FA00=9829;2FA01=295B6;2FA02=98E2;2FA03=4B33;2FA04=9929;2FA05",
|
|
2708
|
+
"=99A7;2FA06=99C2;2FA07=99FE;2FA08=4BCE;2FA09=29B30;2FA0A=9B12;2FA0B=9C40;2FA0C=9CFD;2FA0",
|
|
2709
|
+
"D=4CCE;2FA0E=4CED;2FA0F=9D67;2FA10=2A0CE;2FA11=4CF8;2FA12=2A105;2FA13=2A20E;2FA14=2A291;",
|
|
2710
|
+
"2FA15=9EBB;2FA16=4D56;2FA17=9EF9;2FA18=9EFE;2FA19=9F05;2FA1A=9F0F;2FA1B=9F16;2FA1C=9F3B;",
|
|
2711
|
+
"2FA1D=2A600"
|
|
2712
|
+
].join("");
|
|
2713
|
+
var NFKC16_CCC_PACKED = [
|
|
2714
|
+
"300-314:E6;315:E8;316-319:DC;31A:E8;31B:D8;31C-320:DC;321-322:CA;323-326:DC;327-328:CA;3",
|
|
2715
|
+
"29-333:DC;334-338:1;339-33C:DC;33D-344:E6;345:F0;346:E6;347-349:DC;34A-34C:E6;34D-34E:DC",
|
|
2716
|
+
";350-352:E6;353-356:DC;357:E6;358:E8;359-35A:DC;35B:E6;35C:E9;35D-35E:EA;35F:E9;360-361:",
|
|
2717
|
+
"EA;362:E9;363-36F:E6;483-487:E6;591:DC;592-595:E6;596:DC;597-599:E6;59A:DE;59B:DC;59C-5A",
|
|
2718
|
+
"1:E6;5A2-5A7:DC;5A8-5A9:E6;5AA:DC;5AB-5AC:E6;5AD:DE;5AE:E4;5AF:E6;5B0:A;5B1:B;5B2:C;5B3:",
|
|
2719
|
+
"D;5B4:E;5B5:F;5B6:10;5B7:11;5B8:12;5B9-5BA:13;5BB:14;5BC:15;5BD:16;5BF:17;5C1:18;5C2:19;",
|
|
2720
|
+
"5C4:E6;5C5:DC;5C7:12;610-617:E6;618:1E;619:1F;61A:20;64B:1B;64C:1C;64D:1D;64E:1E;64F:1F;",
|
|
2721
|
+
"650:20;651:21;652:22;653-654:E6;655-656:DC;657-65B:E6;65C:DC;65D-65E:E6;65F:DC;670:23;6D",
|
|
2722
|
+
"6-6DC:E6;6DF-6E2:E6;6E3:DC;6E4:E6;6E7-6E8:E6;6EA:DC;6EB-6EC:E6;6ED:DC;711:24;730:E6;731:",
|
|
2723
|
+
"DC;732-733:E6;734:DC;735-736:E6;737-739:DC;73A:E6;73B-73C:DC;73D:E6;73E:DC;73F-741:E6;74",
|
|
2724
|
+
"2:DC;743:E6;744:DC;745:E6;746:DC;747:E6;748:DC;749-74A:E6;7EB-7F1:E6;7F2:DC;7F3:E6;7FD:D",
|
|
2725
|
+
"C;816-819:E6;81B-823:E6;825-827:E6;829-82D:E6;859-85B:DC;897-898:E6;899-89B:DC;89C-89F:E",
|
|
2726
|
+
"6;8CA-8CE:E6;8CF-8D3:DC;8D4-8E1:E6;8E3:DC;8E4-8E5:E6;8E6:DC;8E7-8E8:E6;8E9:DC;8EA-8EC:E6",
|
|
2727
|
+
";8ED-8EF:DC;8F0:1B;8F1:1C;8F2:1D;8F3-8F5:E6;8F6:DC;8F7-8F8:E6;8F9-8FA:DC;8FB-8FF:E6;93C:",
|
|
2728
|
+
"7;94D:9;951:E6;952:DC;953-954:E6;9BC:7;9CD:9;9FE:E6;A3C:7;A4D:9;ABC:7;ACD:9;B3C:7;B4D:9;",
|
|
2729
|
+
"BCD:9;C3C:7;C4D:9;C55:54;C56:5B;CBC:7;CCD:9;D3B-D3C:9;D4D:9;DCA:9;E38-E39:67;E3A:9;E48-E",
|
|
2730
|
+
"4B:6B;EB8-EB9:76;EBA:9;EC8-ECB:7A;F18-F19:DC;F35:DC;F37:DC;F39:D8;F71:81;F72:82;F74:84;F",
|
|
2731
|
+
"7A-F7D:82;F80:82;F82-F83:E6;F84:9;F86-F87:E6;FC6:DC;1037:7;1039-103A:9;108D:DC;135D-135F",
|
|
2732
|
+
":E6;1714-1715:9;1734:9;17D2:9;17DD:E6;18A9:E4;1939:DE;193A:E6;193B:DC;1A17:E6;1A18:DC;1A",
|
|
2733
|
+
"60:9;1A75-1A7C:E6;1A7F:DC;1AB0-1AB4:E6;1AB5-1ABA:DC;1ABB-1ABC:E6;1ABD:DC;1ABF-1AC0:DC;1A",
|
|
2734
|
+
"C1-1AC2:E6;1AC3-1AC4:DC;1AC5-1AC9:E6;1ACA:DC;1ACB-1ACE:E6;1B34:7;1B44:9;1B6B:E6;1B6C:DC;",
|
|
2735
|
+
"1B6D-1B73:E6;1BAA-1BAB:9;1BE6:7;1BF2-1BF3:9;1C37:7;1CD0-1CD2:E6;1CD4:1;1CD5-1CD9:DC;1CDA",
|
|
2736
|
+
"-1CDB:E6;1CDC-1CDF:DC;1CE0:E6;1CE2-1CE8:1;1CED:DC;1CF4:E6;1CF8-1CF9:E6;1DC0-1DC1:E6;1DC2",
|
|
2737
|
+
":DC;1DC3-1DC9:E6;1DCA:DC;1DCB-1DCC:E6;1DCD:EA;1DCE:D6;1DCF:DC;1DD0:CA;1DD1-1DF5:E6;1DF6:",
|
|
2738
|
+
"E8;1DF7-1DF8:E4;1DF9:DC;1DFA:DA;1DFB:E6;1DFC:E9;1DFD:DC;1DFE:E6;1DFF:DC;20D0-20D1:E6;20D",
|
|
2739
|
+
"2-20D3:1;20D4-20D7:E6;20D8-20DA:1;20DB-20DC:E6;20E1:E6;20E5-20E6:1;20E7:E6;20E8:DC;20E9:",
|
|
2740
|
+
"E6;20EA-20EB:1;20EC-20EF:DC;20F0:E6;2CEF-2CF1:E6;2D7F:9;2DE0-2DFF:E6;302A:DA;302B:E4;302",
|
|
2741
|
+
"C:E8;302D:DE;302E-302F:E0;3099-309A:8;A66F:E6;A674-A67D:E6;A69E-A69F:E6;A6F0-A6F1:E6;A80",
|
|
2742
|
+
"6:9;A82C:9;A8C4:9;A8E0-A8F1:E6;A92B-A92D:DC;A953:9;A9B3:7;A9C0:9;AAB0:E6;AAB2-AAB3:E6;AA",
|
|
2743
|
+
"B4:DC;AAB7-AAB8:E6;AABE-AABF:E6;AAC1:E6;AAF6:9;ABED:9;FB1E:1A;FE20-FE26:E6;FE27-FE2D:DC;",
|
|
2744
|
+
"FE2E-FE2F:E6;101FD:DC;102E0:DC;10376-1037A:E6;10A0D:DC;10A0F:E6;10A38:E6;10A39:1;10A3A:D",
|
|
2745
|
+
"C;10A3F:9;10AE5:E6;10AE6:DC;10D24-10D27:E6;10D69-10D6D:E6;10EAB-10EAC:E6;10EFD-10EFF:DC;",
|
|
2746
|
+
"10F46-10F47:DC;10F48-10F4A:E6;10F4B:DC;10F4C:E6;10F4D-10F50:DC;10F82:E6;10F83:DC;10F84:E",
|
|
2747
|
+
"6;10F85:DC;11046:9;11070:9;1107F:9;110B9:9;110BA:7;11100-11102:E6;11133-11134:9;11173:7;",
|
|
2748
|
+
"111C0:9;111CA:7;11235:9;11236:7;112E9:7;112EA:9;1133B-1133C:7;1134D:9;11366-1136C:E6;113",
|
|
2749
|
+
"70-11374:E6;113CE-113D0:9;11442:9;11446:7;1145E:E6;114C2:9;114C3:7;115BF:9;115C0:7;1163F",
|
|
2750
|
+
":9;116B6:9;116B7:7;1172B:9;11839:9;1183A:7;1193D-1193E:9;11943:7;119E0:9;11A34:9;11A47:9",
|
|
2751
|
+
";11A99:9;11C3F:9;11D42:7;11D44-11D45:9;11D97:9;11F41-11F42:9;1612F:9;16AF0-16AF4:1;16B30",
|
|
2752
|
+
"-16B36:E6;16FF0-16FF1:6;1BC9E:1;1D165-1D166:D8;1D167-1D169:1;1D16D:E2;1D16E-1D172:D8;1D1",
|
|
2753
|
+
"7B-1D182:DC;1D185-1D189:E6;1D18A-1D18B:DC;1D1AA-1D1AD:E6;1D242-1D244:E6;1E000-1E006:E6;1",
|
|
2754
|
+
"E008-1E018:E6;1E01B-1E021:E6;1E023-1E024:E6;1E026-1E02A:E6;1E08F:E6;1E130-1E136:E6;1E2AE",
|
|
2755
|
+
":E6;1E2EC-1E2EF:E6;1E4EC-1E4ED:E8;1E4EE:DC;1E4EF:E6;1E5EE:E6;1E5EF:DC;1E8D0-1E8D6:DC;1E9",
|
|
2756
|
+
"44-1E949:E6;1E94A:7"
|
|
2757
|
+
].join("");
|
|
2758
|
+
var NFKC16_COMPOSITION_PACKED = [
|
|
2759
|
+
"3C 338=226E;3D 338=2260;3E 338=226F;41 300=C0;41 301=C1;41 302=C2;41 303=C3;41 304=100;4",
|
|
2760
|
+
"1 306=102;41 307=226;41 308=C4;41 309=1EA2;41 30A=C5;41 30C=1CD;41 30F=200;41 311=202;41",
|
|
2761
|
+
" 323=1EA0;41 325=1E00;41 328=104;42 307=1E02;42 323=1E04;42 331=1E06;43 301=106;43 302=1",
|
|
2762
|
+
"08;43 307=10A;43 30C=10C;43 327=C7;44 307=1E0A;44 30C=10E;44 323=1E0C;44 327=1E10;44 32D",
|
|
2763
|
+
"=1E12;44 331=1E0E;45 300=C8;45 301=C9;45 302=CA;45 303=1EBC;45 304=112;45 306=114;45 307",
|
|
2764
|
+
"=116;45 308=CB;45 309=1EBA;45 30C=11A;45 30F=204;45 311=206;45 323=1EB8;45 327=228;45 32",
|
|
2765
|
+
"8=118;45 32D=1E18;45 330=1E1A;46 307=1E1E;47 301=1F4;47 302=11C;47 304=1E20;47 306=11E;4",
|
|
2766
|
+
"7 307=120;47 30C=1E6;47 327=122;48 302=124;48 307=1E22;48 308=1E26;48 30C=21E;48 323=1E2",
|
|
2767
|
+
"4;48 327=1E28;48 32E=1E2A;49 300=CC;49 301=CD;49 302=CE;49 303=128;49 304=12A;49 306=12C",
|
|
2768
|
+
";49 307=130;49 308=CF;49 309=1EC8;49 30C=1CF;49 30F=208;49 311=20A;49 323=1ECA;49 328=12",
|
|
2769
|
+
"E;49 330=1E2C;4A 302=134;4B 301=1E30;4B 30C=1E8;4B 323=1E32;4B 327=136;4B 331=1E34;4C 30",
|
|
2770
|
+
"1=139;4C 30C=13D;4C 323=1E36;4C 327=13B;4C 32D=1E3C;4C 331=1E3A;4D 301=1E3E;4D 307=1E40;",
|
|
2771
|
+
"4D 323=1E42;4E 300=1F8;4E 301=143;4E 303=D1;4E 307=1E44;4E 30C=147;4E 323=1E46;4E 327=14",
|
|
2772
|
+
"5;4E 32D=1E4A;4E 331=1E48;4F 300=D2;4F 301=D3;4F 302=D4;4F 303=D5;4F 304=14C;4F 306=14E;",
|
|
2773
|
+
"4F 307=22E;4F 308=D6;4F 309=1ECE;4F 30B=150;4F 30C=1D1;4F 30F=20C;4F 311=20E;4F 31B=1A0;",
|
|
2774
|
+
"4F 323=1ECC;4F 328=1EA;50 301=1E54;50 307=1E56;52 301=154;52 307=1E58;52 30C=158;52 30F=",
|
|
2775
|
+
"210;52 311=212;52 323=1E5A;52 327=156;52 331=1E5E;53 301=15A;53 302=15C;53 307=1E60;53 3",
|
|
2776
|
+
"0C=160;53 323=1E62;53 326=218;53 327=15E;54 307=1E6A;54 30C=164;54 323=1E6C;54 326=21A;5",
|
|
2777
|
+
"4 327=162;54 32D=1E70;54 331=1E6E;55 300=D9;55 301=DA;55 302=DB;55 303=168;55 304=16A;55",
|
|
2778
|
+
" 306=16C;55 308=DC;55 309=1EE6;55 30A=16E;55 30B=170;55 30C=1D3;55 30F=214;55 311=216;55",
|
|
2779
|
+
" 31B=1AF;55 323=1EE4;55 324=1E72;55 328=172;55 32D=1E76;55 330=1E74;56 303=1E7C;56 323=1",
|
|
2780
|
+
"E7E;57 300=1E80;57 301=1E82;57 302=174;57 307=1E86;57 308=1E84;57 323=1E88;58 307=1E8A;5",
|
|
2781
|
+
"8 308=1E8C;59 300=1EF2;59 301=DD;59 302=176;59 303=1EF8;59 304=232;59 307=1E8E;59 308=17",
|
|
2782
|
+
"8;59 309=1EF6;59 323=1EF4;5A 301=179;5A 302=1E90;5A 307=17B;5A 30C=17D;5A 323=1E92;5A 33",
|
|
2783
|
+
"1=1E94;61 300=E0;61 301=E1;61 302=E2;61 303=E3;61 304=101;61 306=103;61 307=227;61 308=E",
|
|
2784
|
+
"4;61 309=1EA3;61 30A=E5;61 30C=1CE;61 30F=201;61 311=203;61 323=1EA1;61 325=1E01;61 328=",
|
|
2785
|
+
"105;62 307=1E03;62 323=1E05;62 331=1E07;63 301=107;63 302=109;63 307=10B;63 30C=10D;63 3",
|
|
2786
|
+
"27=E7;64 307=1E0B;64 30C=10F;64 323=1E0D;64 327=1E11;64 32D=1E13;64 331=1E0F;65 300=E8;6",
|
|
2787
|
+
"5 301=E9;65 302=EA;65 303=1EBD;65 304=113;65 306=115;65 307=117;65 308=EB;65 309=1EBB;65",
|
|
2788
|
+
" 30C=11B;65 30F=205;65 311=207;65 323=1EB9;65 327=229;65 328=119;65 32D=1E19;65 330=1E1B",
|
|
2789
|
+
";66 307=1E1F;67 301=1F5;67 302=11D;67 304=1E21;67 306=11F;67 307=121;67 30C=1E7;67 327=1",
|
|
2790
|
+
"23;68 302=125;68 307=1E23;68 308=1E27;68 30C=21F;68 323=1E25;68 327=1E29;68 32E=1E2B;68 ",
|
|
2791
|
+
"331=1E96;69 300=EC;69 301=ED;69 302=EE;69 303=129;69 304=12B;69 306=12D;69 308=EF;69 309",
|
|
2792
|
+
"=1EC9;69 30C=1D0;69 30F=209;69 311=20B;69 323=1ECB;69 328=12F;69 330=1E2D;6A 302=135;6A ",
|
|
2793
|
+
"30C=1F0;6B 301=1E31;6B 30C=1E9;6B 323=1E33;6B 327=137;6B 331=1E35;6C 301=13A;6C 30C=13E;",
|
|
2794
|
+
"6C 323=1E37;6C 327=13C;6C 32D=1E3D;6C 331=1E3B;6D 301=1E3F;6D 307=1E41;6D 323=1E43;6E 30",
|
|
2795
|
+
"0=1F9;6E 301=144;6E 303=F1;6E 307=1E45;6E 30C=148;6E 323=1E47;6E 327=146;6E 32D=1E4B;6E ",
|
|
2796
|
+
"331=1E49;6F 300=F2;6F 301=F3;6F 302=F4;6F 303=F5;6F 304=14D;6F 306=14F;6F 307=22F;6F 308",
|
|
2797
|
+
"=F6;6F 309=1ECF;6F 30B=151;6F 30C=1D2;6F 30F=20D;6F 311=20F;6F 31B=1A1;6F 323=1ECD;6F 32",
|
|
2798
|
+
"8=1EB;70 301=1E55;70 307=1E57;72 301=155;72 307=1E59;72 30C=159;72 30F=211;72 311=213;72",
|
|
2799
|
+
" 323=1E5B;72 327=157;72 331=1E5F;73 301=15B;73 302=15D;73 307=1E61;73 30C=161;73 323=1E6",
|
|
2800
|
+
"3;73 326=219;73 327=15F;74 307=1E6B;74 308=1E97;74 30C=165;74 323=1E6D;74 326=21B;74 327",
|
|
2801
|
+
"=163;74 32D=1E71;74 331=1E6F;75 300=F9;75 301=FA;75 302=FB;75 303=169;75 304=16B;75 306=",
|
|
2802
|
+
"16D;75 308=FC;75 309=1EE7;75 30A=16F;75 30B=171;75 30C=1D4;75 30F=215;75 311=217;75 31B=",
|
|
2803
|
+
"1B0;75 323=1EE5;75 324=1E73;75 328=173;75 32D=1E77;75 330=1E75;76 303=1E7D;76 323=1E7F;7",
|
|
2804
|
+
"7 300=1E81;77 301=1E83;77 302=175;77 307=1E87;77 308=1E85;77 30A=1E98;77 323=1E89;78 307",
|
|
2805
|
+
"=1E8B;78 308=1E8D;79 300=1EF3;79 301=FD;79 302=177;79 303=1EF9;79 304=233;79 307=1E8F;79",
|
|
2806
|
+
" 308=FF;79 309=1EF7;79 30A=1E99;79 323=1EF5;7A 301=17A;7A 302=1E91;7A 307=17C;7A 30C=17E",
|
|
2807
|
+
";7A 323=1E93;7A 331=1E95;A8 300=1FED;A8 301=385;A8 342=1FC1;C2 300=1EA6;C2 301=1EA4;C2 3",
|
|
2808
|
+
"03=1EAA;C2 309=1EA8;C4 304=1DE;C5 301=1FA;C6 301=1FC;C6 304=1E2;C7 301=1E08;CA 300=1EC0;",
|
|
2809
|
+
"CA 301=1EBE;CA 303=1EC4;CA 309=1EC2;CF 301=1E2E;D4 300=1ED2;D4 301=1ED0;D4 303=1ED6;D4 3",
|
|
2810
|
+
"09=1ED4;D5 301=1E4C;D5 304=22C;D5 308=1E4E;D6 304=22A;D8 301=1FE;DC 300=1DB;DC 301=1D7;D",
|
|
2811
|
+
"C 304=1D5;DC 30C=1D9;E2 300=1EA7;E2 301=1EA5;E2 303=1EAB;E2 309=1EA9;E4 304=1DF;E5 301=1",
|
|
2812
|
+
"FB;E6 301=1FD;E6 304=1E3;E7 301=1E09;EA 300=1EC1;EA 301=1EBF;EA 303=1EC5;EA 309=1EC3;EF ",
|
|
2813
|
+
"301=1E2F;F4 300=1ED3;F4 301=1ED1;F4 303=1ED7;F4 309=1ED5;F5 301=1E4D;F5 304=22D;F5 308=1",
|
|
2814
|
+
"E4F;F6 304=22B;F8 301=1FF;FC 300=1DC;FC 301=1D8;FC 304=1D6;FC 30C=1DA;102 300=1EB0;102 3",
|
|
2815
|
+
"01=1EAE;102 303=1EB4;102 309=1EB2;103 300=1EB1;103 301=1EAF;103 303=1EB5;103 309=1EB3;11",
|
|
2816
|
+
"2 300=1E14;112 301=1E16;113 300=1E15;113 301=1E17;14C 300=1E50;14C 301=1E52;14D 300=1E51",
|
|
2817
|
+
";14D 301=1E53;15A 307=1E64;15B 307=1E65;160 307=1E66;161 307=1E67;168 301=1E78;169 301=1",
|
|
2818
|
+
"E79;16A 308=1E7A;16B 308=1E7B;17F 307=1E9B;1A0 300=1EDC;1A0 301=1EDA;1A0 303=1EE0;1A0 30",
|
|
2819
|
+
"9=1EDE;1A0 323=1EE2;1A1 300=1EDD;1A1 301=1EDB;1A1 303=1EE1;1A1 309=1EDF;1A1 323=1EE3;1AF",
|
|
2820
|
+
" 300=1EEA;1AF 301=1EE8;1AF 303=1EEE;1AF 309=1EEC;1AF 323=1EF0;1B0 300=1EEB;1B0 301=1EE9;",
|
|
2821
|
+
"1B0 303=1EEF;1B0 309=1EED;1B0 323=1EF1;1B7 30C=1EE;1EA 304=1EC;1EB 304=1ED;226 304=1E0;2",
|
|
2822
|
+
"27 304=1E1;228 306=1E1C;229 306=1E1D;22E 304=230;22F 304=231;292 30C=1EF;391 300=1FBA;39",
|
|
2823
|
+
"1 301=386;391 304=1FB9;391 306=1FB8;391 313=1F08;391 314=1F09;391 345=1FBC;395 300=1FC8;",
|
|
2824
|
+
"395 301=388;395 313=1F18;395 314=1F19;397 300=1FCA;397 301=389;397 313=1F28;397 314=1F29",
|
|
2825
|
+
";397 345=1FCC;399 300=1FDA;399 301=38A;399 304=1FD9;399 306=1FD8;399 308=3AA;399 313=1F3",
|
|
2826
|
+
"8;399 314=1F39;39F 300=1FF8;39F 301=38C;39F 313=1F48;39F 314=1F49;3A1 314=1FEC;3A5 300=1",
|
|
2827
|
+
"FEA;3A5 301=38E;3A5 304=1FE9;3A5 306=1FE8;3A5 308=3AB;3A5 314=1F59;3A9 300=1FFA;3A9 301=",
|
|
2828
|
+
"38F;3A9 313=1F68;3A9 314=1F69;3A9 345=1FFC;3AC 345=1FB4;3AE 345=1FC4;3B1 300=1F70;3B1 30",
|
|
2829
|
+
"1=3AC;3B1 304=1FB1;3B1 306=1FB0;3B1 313=1F00;3B1 314=1F01;3B1 342=1FB6;3B1 345=1FB3;3B5 ",
|
|
2830
|
+
"300=1F72;3B5 301=3AD;3B5 313=1F10;3B5 314=1F11;3B7 300=1F74;3B7 301=3AE;3B7 313=1F20;3B7",
|
|
2831
|
+
" 314=1F21;3B7 342=1FC6;3B7 345=1FC3;3B9 300=1F76;3B9 301=3AF;3B9 304=1FD1;3B9 306=1FD0;3",
|
|
2832
|
+
"B9 308=3CA;3B9 313=1F30;3B9 314=1F31;3B9 342=1FD6;3BF 300=1F78;3BF 301=3CC;3BF 313=1F40;",
|
|
2833
|
+
"3BF 314=1F41;3C1 313=1FE4;3C1 314=1FE5;3C5 300=1F7A;3C5 301=3CD;3C5 304=1FE1;3C5 306=1FE",
|
|
2834
|
+
"0;3C5 308=3CB;3C5 313=1F50;3C5 314=1F51;3C5 342=1FE6;3C9 300=1F7C;3C9 301=3CE;3C9 313=1F",
|
|
2835
|
+
"60;3C9 314=1F61;3C9 342=1FF6;3C9 345=1FF3;3CA 300=1FD2;3CA 301=390;3CA 342=1FD7;3CB 300=",
|
|
2836
|
+
"1FE2;3CB 301=3B0;3CB 342=1FE7;3CE 345=1FF4;3D2 301=3D3;3D2 308=3D4;406 308=407;410 306=4",
|
|
2837
|
+
"D0;410 308=4D2;413 301=403;415 300=400;415 306=4D6;415 308=401;416 306=4C1;416 308=4DC;4",
|
|
2838
|
+
"17 308=4DE;418 300=40D;418 304=4E2;418 306=419;418 308=4E4;41A 301=40C;41E 308=4E6;423 3",
|
|
2839
|
+
"04=4EE;423 306=40E;423 308=4F0;423 30B=4F2;427 308=4F4;42B 308=4F8;42D 308=4EC;430 306=4",
|
|
2840
|
+
"D1;430 308=4D3;433 301=453;435 300=450;435 306=4D7;435 308=451;436 306=4C2;436 308=4DD;4",
|
|
2841
|
+
"37 308=4DF;438 300=45D;438 304=4E3;438 306=439;438 308=4E5;43A 301=45C;43E 308=4E7;443 3",
|
|
2842
|
+
"04=4EF;443 306=45E;443 308=4F1;443 30B=4F3;447 308=4F5;44B 308=4F9;44D 308=4ED;456 308=4",
|
|
2843
|
+
"57;474 30F=476;475 30F=477;4D8 308=4DA;4D9 308=4DB;4E8 308=4EA;4E9 308=4EB;627 653=622;6",
|
|
2844
|
+
"27 654=623;627 655=625;648 654=624;64A 654=626;6C1 654=6C2;6D2 654=6D3;6D5 654=6C0;928 9",
|
|
2845
|
+
"3C=929;930 93C=931;933 93C=934;9C7 9BE=9CB;9C7 9D7=9CC;B47 B3E=B4B;B47 B56=B48;B47 B57=B",
|
|
2846
|
+
"4C;B92 BD7=B94;BC6 BBE=BCA;BC6 BD7=BCC;BC7 BBE=BCB;C46 C56=C48;CBF CD5=CC0;CC6 CC2=CCA;C",
|
|
2847
|
+
"C6 CD5=CC7;CC6 CD6=CC8;CCA CD5=CCB;D46 D3E=D4A;D46 D57=D4C;D47 D3E=D4B;DD9 DCA=DDA;DD9 D",
|
|
2848
|
+
"CF=DDC;DD9 DDF=DDE;DDC DCA=DDD;1025 102E=1026;1B05 1B35=1B06;1B07 1B35=1B08;1B09 1B35=1B",
|
|
2849
|
+
"0A;1B0B 1B35=1B0C;1B0D 1B35=1B0E;1B11 1B35=1B12;1B3A 1B35=1B3B;1B3C 1B35=1B3D;1B3E 1B35=",
|
|
2850
|
+
"1B40;1B3F 1B35=1B41;1B42 1B35=1B43;1E36 304=1E38;1E37 304=1E39;1E5A 304=1E5C;1E5B 304=1E",
|
|
2851
|
+
"5D;1E62 307=1E68;1E63 307=1E69;1EA0 302=1EAC;1EA0 306=1EB6;1EA1 302=1EAD;1EA1 306=1EB7;1",
|
|
2852
|
+
"EB8 302=1EC6;1EB9 302=1EC7;1ECC 302=1ED8;1ECD 302=1ED9;1F00 300=1F02;1F00 301=1F04;1F00 ",
|
|
2853
|
+
"342=1F06;1F00 345=1F80;1F01 300=1F03;1F01 301=1F05;1F01 342=1F07;1F01 345=1F81;1F02 345=",
|
|
2854
|
+
"1F82;1F03 345=1F83;1F04 345=1F84;1F05 345=1F85;1F06 345=1F86;1F07 345=1F87;1F08 300=1F0A",
|
|
2855
|
+
";1F08 301=1F0C;1F08 342=1F0E;1F08 345=1F88;1F09 300=1F0B;1F09 301=1F0D;1F09 342=1F0F;1F0",
|
|
2856
|
+
"9 345=1F89;1F0A 345=1F8A;1F0B 345=1F8B;1F0C 345=1F8C;1F0D 345=1F8D;1F0E 345=1F8E;1F0F 34",
|
|
2857
|
+
"5=1F8F;1F10 300=1F12;1F10 301=1F14;1F11 300=1F13;1F11 301=1F15;1F18 300=1F1A;1F18 301=1F",
|
|
2858
|
+
"1C;1F19 300=1F1B;1F19 301=1F1D;1F20 300=1F22;1F20 301=1F24;1F20 342=1F26;1F20 345=1F90;1",
|
|
2859
|
+
"F21 300=1F23;1F21 301=1F25;1F21 342=1F27;1F21 345=1F91;1F22 345=1F92;1F23 345=1F93;1F24 ",
|
|
2860
|
+
"345=1F94;1F25 345=1F95;1F26 345=1F96;1F27 345=1F97;1F28 300=1F2A;1F28 301=1F2C;1F28 342=",
|
|
2861
|
+
"1F2E;1F28 345=1F98;1F29 300=1F2B;1F29 301=1F2D;1F29 342=1F2F;1F29 345=1F99;1F2A 345=1F9A",
|
|
2862
|
+
";1F2B 345=1F9B;1F2C 345=1F9C;1F2D 345=1F9D;1F2E 345=1F9E;1F2F 345=1F9F;1F30 300=1F32;1F3",
|
|
2863
|
+
"0 301=1F34;1F30 342=1F36;1F31 300=1F33;1F31 301=1F35;1F31 342=1F37;1F38 300=1F3A;1F38 30",
|
|
2864
|
+
"1=1F3C;1F38 342=1F3E;1F39 300=1F3B;1F39 301=1F3D;1F39 342=1F3F;1F40 300=1F42;1F40 301=1F",
|
|
2865
|
+
"44;1F41 300=1F43;1F41 301=1F45;1F48 300=1F4A;1F48 301=1F4C;1F49 300=1F4B;1F49 301=1F4D;1",
|
|
2866
|
+
"F50 300=1F52;1F50 301=1F54;1F50 342=1F56;1F51 300=1F53;1F51 301=1F55;1F51 342=1F57;1F59 ",
|
|
2867
|
+
"300=1F5B;1F59 301=1F5D;1F59 342=1F5F;1F60 300=1F62;1F60 301=1F64;1F60 342=1F66;1F60 345=",
|
|
2868
|
+
"1FA0;1F61 300=1F63;1F61 301=1F65;1F61 342=1F67;1F61 345=1FA1;1F62 345=1FA2;1F63 345=1FA3",
|
|
2869
|
+
";1F64 345=1FA4;1F65 345=1FA5;1F66 345=1FA6;1F67 345=1FA7;1F68 300=1F6A;1F68 301=1F6C;1F6",
|
|
2870
|
+
"8 342=1F6E;1F68 345=1FA8;1F69 300=1F6B;1F69 301=1F6D;1F69 342=1F6F;1F69 345=1FA9;1F6A 34",
|
|
2871
|
+
"5=1FAA;1F6B 345=1FAB;1F6C 345=1FAC;1F6D 345=1FAD;1F6E 345=1FAE;1F6F 345=1FAF;1F70 345=1F",
|
|
2872
|
+
"B2;1F74 345=1FC2;1F7C 345=1FF2;1FB6 345=1FB7;1FBF 300=1FCD;1FBF 301=1FCE;1FBF 342=1FCF;1",
|
|
2873
|
+
"FC6 345=1FC7;1FF6 345=1FF7;1FFE 300=1FDD;1FFE 301=1FDE;1FFE 342=1FDF;2190 338=219A;2192 ",
|
|
2874
|
+
"338=219B;2194 338=21AE;21D0 338=21CD;21D2 338=21CF;21D4 338=21CE;2203 338=2204;2208 338=",
|
|
2875
|
+
"2209;220B 338=220C;2223 338=2224;2225 338=2226;223C 338=2241;2243 338=2244;2245 338=2247",
|
|
2876
|
+
";2248 338=2249;224D 338=226D;2261 338=2262;2264 338=2270;2265 338=2271;2272 338=2274;227",
|
|
2877
|
+
"3 338=2275;2276 338=2278;2277 338=2279;227A 338=2280;227B 338=2281;227C 338=22E0;227D 33",
|
|
2878
|
+
"8=22E1;2282 338=2284;2283 338=2285;2286 338=2288;2287 338=2289;2291 338=22E2;2292 338=22",
|
|
2879
|
+
"E3;22A2 338=22AC;22A8 338=22AD;22A9 338=22AE;22AB 338=22AF;22B2 338=22EA;22B3 338=22EB;2",
|
|
2880
|
+
"2B4 338=22EC;22B5 338=22ED;3046 3099=3094;304B 3099=304C;304D 3099=304E;304F 3099=3050;3",
|
|
2881
|
+
"051 3099=3052;3053 3099=3054;3055 3099=3056;3057 3099=3058;3059 3099=305A;305B 3099=305C",
|
|
2882
|
+
";305D 3099=305E;305F 3099=3060;3061 3099=3062;3064 3099=3065;3066 3099=3067;3068 3099=30",
|
|
2883
|
+
"69;306F 3099=3070;306F 309A=3071;3072 3099=3073;3072 309A=3074;3075 3099=3076;3075 309A=",
|
|
2884
|
+
"3077;3078 3099=3079;3078 309A=307A;307B 3099=307C;307B 309A=307D;309D 3099=309E;30A6 309",
|
|
2885
|
+
"9=30F4;30AB 3099=30AC;30AD 3099=30AE;30AF 3099=30B0;30B1 3099=30B2;30B3 3099=30B4;30B5 3",
|
|
2886
|
+
"099=30B6;30B7 3099=30B8;30B9 3099=30BA;30BB 3099=30BC;30BD 3099=30BE;30BF 3099=30C0;30C1",
|
|
2887
|
+
" 3099=30C2;30C4 3099=30C5;30C6 3099=30C7;30C8 3099=30C9;30CF 3099=30D0;30CF 309A=30D1;30",
|
|
2888
|
+
"D2 3099=30D3;30D2 309A=30D4;30D5 3099=30D6;30D5 309A=30D7;30D8 3099=30D9;30D8 309A=30DA;",
|
|
2889
|
+
"30DB 3099=30DC;30DB 309A=30DD;30EF 3099=30F7;30F0 3099=30F8;30F1 3099=30F9;30F2 3099=30F",
|
|
2890
|
+
"A;30FD 3099=30FE;105D2 307=105C9;105DA 307=105E4;11099 110BA=1109A;1109B 110BA=1109C;110",
|
|
2891
|
+
"A5 110BA=110AB;11131 11127=1112E;11132 11127=1112F;11347 1133E=1134B;11347 11357=1134C;1",
|
|
2892
|
+
"1382 113C9=11383;11384 113BB=11385;1138B 113C2=1138E;11390 113C9=11391;113C2 113B8=113C7",
|
|
2893
|
+
";113C2 113C2=113C5;113C2 113C9=113C8;114B9 114B0=114BC;114B9 114BA=114BB;114B9 114BD=114",
|
|
2894
|
+
"BE;115B8 115AF=115BA;115B9 115AF=115BB;11935 11930=11938;1611E 1611E=16121;1611E 1611F=1",
|
|
2895
|
+
"6123;1611E 16120=16125;1611E 16129=16122;16121 1611F=16126;16121 16120=16128;16122 1611F",
|
|
2896
|
+
"=16127;16129 1611F=16124;16D63 16D67=16D69;16D67 16D67=16D68;16D69 16D67=16D6A"
|
|
2897
|
+
].join("");
|
|
2898
|
+
var NFKC16_ASSIGNED_RANGES_PACKED = [
|
|
2899
|
+
"0-377;37A-37F;384-38A;38C;38E-3A1;3A3-52F;531-556;559-58A;58D-58F;591-5C7;5D0-5EA;5EF-5F",
|
|
2900
|
+
"4;600-70D;70F-74A;74D-7B1;7C0-7FA;7FD-82D;830-83E;840-85B;85E;860-86A;870-88E;890-891;89",
|
|
2901
|
+
"7-983;985-98C;98F-990;993-9A8;9AA-9B0;9B2;9B6-9B9;9BC-9C4;9C7-9C8;9CB-9CE;9D7;9DC-9DD;9D",
|
|
2902
|
+
"F-9E3;9E6-9FE;A01-A03;A05-A0A;A0F-A10;A13-A28;A2A-A30;A32-A33;A35-A36;A38-A39;A3C;A3E-A4",
|
|
2903
|
+
"2;A47-A48;A4B-A4D;A51;A59-A5C;A5E;A66-A76;A81-A83;A85-A8D;A8F-A91;A93-AA8;AAA-AB0;AB2-AB",
|
|
2904
|
+
"3;AB5-AB9;ABC-AC5;AC7-AC9;ACB-ACD;AD0;AE0-AE3;AE6-AF1;AF9-AFF;B01-B03;B05-B0C;B0F-B10;B1",
|
|
2905
|
+
"3-B28;B2A-B30;B32-B33;B35-B39;B3C-B44;B47-B48;B4B-B4D;B55-B57;B5C-B5D;B5F-B63;B66-B77;B8",
|
|
2906
|
+
"2-B83;B85-B8A;B8E-B90;B92-B95;B99-B9A;B9C;B9E-B9F;BA3-BA4;BA8-BAA;BAE-BB9;BBE-BC2;BC6-BC",
|
|
2907
|
+
"8;BCA-BCD;BD0;BD7;BE6-BFA;C00-C0C;C0E-C10;C12-C28;C2A-C39;C3C-C44;C46-C48;C4A-C4D;C55-C5",
|
|
2908
|
+
"6;C58-C5A;C5D;C60-C63;C66-C6F;C77-C8C;C8E-C90;C92-CA8;CAA-CB3;CB5-CB9;CBC-CC4;CC6-CC8;CC",
|
|
2909
|
+
"A-CCD;CD5-CD6;CDD-CDE;CE0-CE3;CE6-CEF;CF1-CF3;D00-D0C;D0E-D10;D12-D44;D46-D48;D4A-D4F;D5",
|
|
2910
|
+
"4-D63;D66-D7F;D81-D83;D85-D96;D9A-DB1;DB3-DBB;DBD;DC0-DC6;DCA;DCF-DD4;DD6;DD8-DDF;DE6-DE",
|
|
2911
|
+
"F;DF2-DF4;E01-E3A;E3F-E5B;E81-E82;E84;E86-E8A;E8C-EA3;EA5;EA7-EBD;EC0-EC4;EC6;EC8-ECE;ED",
|
|
2912
|
+
"0-ED9;EDC-EDF;F00-F47;F49-F6C;F71-F97;F99-FBC;FBE-FCC;FCE-FDA;1000-10C5;10C7;10CD;10D0-1",
|
|
2913
|
+
"248;124A-124D;1250-1256;1258;125A-125D;1260-1288;128A-128D;1290-12B0;12B2-12B5;12B8-12BE",
|
|
2914
|
+
";12C0;12C2-12C5;12C8-12D6;12D8-1310;1312-1315;1318-135A;135D-137C;1380-1399;13A0-13F5;13",
|
|
2915
|
+
"F8-13FD;1400-169C;16A0-16F8;1700-1715;171F-1736;1740-1753;1760-176C;176E-1770;1772-1773;",
|
|
2916
|
+
"1780-17DD;17E0-17E9;17F0-17F9;1800-1819;1820-1878;1880-18AA;18B0-18F5;1900-191E;1920-192",
|
|
2917
|
+
"B;1930-193B;1940;1944-196D;1970-1974;1980-19AB;19B0-19C9;19D0-19DA;19DE-1A1B;1A1E-1A5E;1",
|
|
2918
|
+
"A60-1A7C;1A7F-1A89;1A90-1A99;1AA0-1AAD;1AB0-1ACE;1B00-1B4C;1B4E-1BF3;1BFC-1C37;1C3B-1C49",
|
|
2919
|
+
";1C4D-1C8A;1C90-1CBA;1CBD-1CC7;1CD0-1CFA;1D00-1F15;1F18-1F1D;1F20-1F45;1F48-1F4D;1F50-1F",
|
|
2920
|
+
"57;1F59;1F5B;1F5D;1F5F-1F7D;1F80-1FB4;1FB6-1FC4;1FC6-1FD3;1FD6-1FDB;1FDD-1FEF;1FF2-1FF4;",
|
|
2921
|
+
"1FF6-1FFE;2000-2064;2066-2071;2074-208E;2090-209C;20A0-20C0;20D0-20F0;2100-218B;2190-242",
|
|
2922
|
+
"9;2440-244A;2460-2B73;2B76-2B95;2B97-2CF3;2CF9-2D25;2D27;2D2D;2D30-2D67;2D6F-2D70;2D7F-2",
|
|
2923
|
+
"D96;2DA0-2DA6;2DA8-2DAE;2DB0-2DB6;2DB8-2DBE;2DC0-2DC6;2DC8-2DCE;2DD0-2DD6;2DD8-2DDE;2DE0",
|
|
2924
|
+
"-2E5D;2E80-2E99;2E9B-2EF3;2F00-2FD5;2FF0-303F;3041-3096;3099-30FF;3105-312F;3131-318E;31",
|
|
2925
|
+
"90-31E5;31EF-321E;3220-A48C;A490-A4C6;A4D0-A62B;A640-A6F7;A700-A7CD;A7D0-A7D1;A7D3;A7D5-",
|
|
2926
|
+
"A7DC;A7F2-A82C;A830-A839;A840-A877;A880-A8C5;A8CE-A8D9;A8E0-A953;A95F-A97C;A980-A9CD;A9C",
|
|
2927
|
+
"F-A9D9;A9DE-A9FE;AA00-AA36;AA40-AA4D;AA50-AA59;AA5C-AAC2;AADB-AAF6;AB01-AB06;AB09-AB0E;A",
|
|
2928
|
+
"B11-AB16;AB20-AB26;AB28-AB2E;AB30-AB6B;AB70-ABED;ABF0-ABF9;AC00-D7A3;D7B0-D7C6;D7CB-D7FB",
|
|
2929
|
+
";D800-FA6D;FA70-FAD9;FB00-FB06;FB13-FB17;FB1D-FB36;FB38-FB3C;FB3E;FB40-FB41;FB43-FB44;FB",
|
|
2930
|
+
"46-FBC2;FBD3-FD8F;FD92-FDC7;FDCF;FDF0-FE19;FE20-FE52;FE54-FE66;FE68-FE6B;FE70-FE74;FE76-",
|
|
2931
|
+
"FEFC;FEFF;FF01-FFBE;FFC2-FFC7;FFCA-FFCF;FFD2-FFD7;FFDA-FFDC;FFE0-FFE6;FFE8-FFEE;FFF9-FFF",
|
|
2932
|
+
"D;10000-1000B;1000D-10026;10028-1003A;1003C-1003D;1003F-1004D;10050-1005D;10080-100FA;10",
|
|
2933
|
+
"100-10102;10107-10133;10137-1018E;10190-1019C;101A0;101D0-101FD;10280-1029C;102A0-102D0;",
|
|
2934
|
+
"102E0-102FB;10300-10323;1032D-1034A;10350-1037A;10380-1039D;1039F-103C3;103C8-103D5;1040",
|
|
2935
|
+
"0-1049D;104A0-104A9;104B0-104D3;104D8-104FB;10500-10527;10530-10563;1056F-1057A;1057C-10",
|
|
2936
|
+
"58A;1058C-10592;10594-10595;10597-105A1;105A3-105B1;105B3-105B9;105BB-105BC;105C0-105F3;",
|
|
2937
|
+
"10600-10736;10740-10755;10760-10767;10780-10785;10787-107B0;107B2-107BA;10800-10805;1080",
|
|
2938
|
+
"8;1080A-10835;10837-10838;1083C;1083F-10855;10857-1089E;108A7-108AF;108E0-108F2;108F4-10",
|
|
2939
|
+
"8F5;108FB-1091B;1091F-10939;1093F;10980-109B7;109BC-109CF;109D2-10A03;10A05-10A06;10A0C-",
|
|
2940
|
+
"10A13;10A15-10A17;10A19-10A35;10A38-10A3A;10A3F-10A48;10A50-10A58;10A60-10A9F;10AC0-10AE",
|
|
2941
|
+
"6;10AEB-10AF6;10B00-10B35;10B39-10B55;10B58-10B72;10B78-10B91;10B99-10B9C;10BA9-10BAF;10",
|
|
2942
|
+
"C00-10C48;10C80-10CB2;10CC0-10CF2;10CFA-10D27;10D30-10D39;10D40-10D65;10D69-10D85;10D8E-",
|
|
2943
|
+
"10D8F;10E60-10E7E;10E80-10EA9;10EAB-10EAD;10EB0-10EB1;10EC2-10EC4;10EFC-10F27;10F30-10F5",
|
|
2944
|
+
"9;10F70-10F89;10FB0-10FCB;10FE0-10FF6;11000-1104D;11052-11075;1107F-110C2;110CD;110D0-11",
|
|
2945
|
+
"0E8;110F0-110F9;11100-11134;11136-11147;11150-11176;11180-111DF;111E1-111F4;11200-11211;",
|
|
2946
|
+
"11213-11241;11280-11286;11288;1128A-1128D;1128F-1129D;1129F-112A9;112B0-112EA;112F0-112F",
|
|
2947
|
+
"9;11300-11303;11305-1130C;1130F-11310;11313-11328;1132A-11330;11332-11333;11335-11339;11",
|
|
2948
|
+
"33B-11344;11347-11348;1134B-1134D;11350;11357;1135D-11363;11366-1136C;11370-11374;11380-",
|
|
2949
|
+
"11389;1138B;1138E;11390-113B5;113B7-113C0;113C2;113C5;113C7-113CA;113CC-113D5;113D7-113D",
|
|
2950
|
+
"8;113E1-113E2;11400-1145B;1145D-11461;11480-114C7;114D0-114D9;11580-115B5;115B8-115DD;11",
|
|
2951
|
+
"600-11644;11650-11659;11660-1166C;11680-116B9;116C0-116C9;116D0-116E3;11700-1171A;1171D-",
|
|
2952
|
+
"1172B;11730-11746;11800-1183B;118A0-118F2;118FF-11906;11909;1190C-11913;11915-11916;1191",
|
|
2953
|
+
"8-11935;11937-11938;1193B-11946;11950-11959;119A0-119A7;119AA-119D7;119DA-119E4;11A00-11",
|
|
2954
|
+
"A47;11A50-11AA2;11AB0-11AF8;11B00-11B09;11BC0-11BE1;11BF0-11BF9;11C00-11C08;11C0A-11C36;",
|
|
2955
|
+
"11C38-11C45;11C50-11C6C;11C70-11C8F;11C92-11CA7;11CA9-11CB6;11D00-11D06;11D08-11D09;11D0",
|
|
2956
|
+
"B-11D36;11D3A;11D3C-11D3D;11D3F-11D47;11D50-11D59;11D60-11D65;11D67-11D68;11D6A-11D8E;11",
|
|
2957
|
+
"D90-11D91;11D93-11D98;11DA0-11DA9;11EE0-11EF8;11F00-11F10;11F12-11F3A;11F3E-11F5A;11FB0;",
|
|
2958
|
+
"11FC0-11FF1;11FFF-12399;12400-1246E;12470-12474;12480-12543;12F90-12FF2;13000-13455;1346",
|
|
2959
|
+
"0-143FA;14400-14646;16100-16139;16800-16A38;16A40-16A5E;16A60-16A69;16A6E-16ABE;16AC0-16",
|
|
2960
|
+
"AC9;16AD0-16AED;16AF0-16AF5;16B00-16B45;16B50-16B59;16B5B-16B61;16B63-16B77;16B7D-16B8F;",
|
|
2961
|
+
"16D40-16D79;16E40-16E9A;16F00-16F4A;16F4F-16F87;16F8F-16F9F;16FE0-16FE4;16FF0-16FF1;1700",
|
|
2962
|
+
"0-187F7;18800-18CD5;18CFF-18D08;1AFF0-1AFF3;1AFF5-1AFFB;1AFFD-1AFFE;1B000-1B122;1B132;1B",
|
|
2963
|
+
"150-1B152;1B155;1B164-1B167;1B170-1B2FB;1BC00-1BC6A;1BC70-1BC7C;1BC80-1BC88;1BC90-1BC99;",
|
|
2964
|
+
"1BC9C-1BCA3;1CC00-1CCF9;1CD00-1CEB3;1CF00-1CF2D;1CF30-1CF46;1CF50-1CFC3;1D000-1D0F5;1D10",
|
|
2965
|
+
"0-1D126;1D129-1D1EA;1D200-1D245;1D2C0-1D2D3;1D2E0-1D2F3;1D300-1D356;1D360-1D378;1D400-1D",
|
|
2966
|
+
"454;1D456-1D49C;1D49E-1D49F;1D4A2;1D4A5-1D4A6;1D4A9-1D4AC;1D4AE-1D4B9;1D4BB;1D4BD-1D4C3;",
|
|
2967
|
+
"1D4C5-1D505;1D507-1D50A;1D50D-1D514;1D516-1D51C;1D51E-1D539;1D53B-1D53E;1D540-1D544;1D54",
|
|
2968
|
+
"6;1D54A-1D550;1D552-1D6A5;1D6A8-1D7CB;1D7CE-1DA8B;1DA9B-1DA9F;1DAA1-1DAAF;1DF00-1DF1E;1D",
|
|
2969
|
+
"F25-1DF2A;1E000-1E006;1E008-1E018;1E01B-1E021;1E023-1E024;1E026-1E02A;1E030-1E06D;1E08F;",
|
|
2970
|
+
"1E100-1E12C;1E130-1E13D;1E140-1E149;1E14E-1E14F;1E290-1E2AE;1E2C0-1E2F9;1E2FF;1E4D0-1E4F",
|
|
2971
|
+
"9;1E5D0-1E5FA;1E5FF;1E7E0-1E7E6;1E7E8-1E7EB;1E7ED-1E7EE;1E7F0-1E7FE;1E800-1E8C4;1E8C7-1E",
|
|
2972
|
+
"8D6;1E900-1E94B;1E950-1E959;1E95E-1E95F;1EC71-1ECB4;1ED01-1ED3D;1EE00-1EE03;1EE05-1EE1F;",
|
|
2973
|
+
"1EE21-1EE22;1EE24;1EE27;1EE29-1EE32;1EE34-1EE37;1EE39;1EE3B;1EE42;1EE47;1EE49;1EE4B;1EE4",
|
|
2974
|
+
"D-1EE4F;1EE51-1EE52;1EE54;1EE57;1EE59;1EE5B;1EE5D;1EE5F;1EE61-1EE62;1EE64;1EE67-1EE6A;1E",
|
|
2975
|
+
"E6C-1EE72;1EE74-1EE77;1EE79-1EE7C;1EE7E;1EE80-1EE89;1EE8B-1EE9B;1EEA1-1EEA3;1EEA5-1EEA9;",
|
|
2976
|
+
"1EEAB-1EEBB;1EEF0-1EEF1;1F000-1F02B;1F030-1F093;1F0A0-1F0AE;1F0B1-1F0BF;1F0C1-1F0CF;1F0D",
|
|
2977
|
+
"1-1F0F5;1F100-1F1AD;1F1E6-1F202;1F210-1F23B;1F240-1F248;1F250-1F251;1F260-1F265;1F300-1F",
|
|
2978
|
+
"6D7;1F6DC-1F6EC;1F6F0-1F6FC;1F700-1F776;1F77B-1F7D9;1F7E0-1F7EB;1F7F0;1F800-1F80B;1F810-",
|
|
2979
|
+
"1F847;1F850-1F859;1F860-1F887;1F890-1F8AD;1F8B0-1F8BB;1F8C0-1F8C1;1F900-1FA53;1FA60-1FA6",
|
|
2980
|
+
"D;1FA70-1FA7C;1FA80-1FA89;1FA8F-1FAC6;1FACE-1FADC;1FADF-1FAE9;1FAF0-1FAF8;1FB00-1FB92;1F",
|
|
2981
|
+
"B94-1FBF9;20000-2A6DF;2A700-2B739;2B740-2B81D;2B820-2CEA1;2CEB0-2EBE0;2EBF0-2EE5D;2F800-",
|
|
2982
|
+
"2FA1D;30000-3134A;31350-323AF;E0001;E0020-E007F;E0100-E01EF;F0000-FFFFD;100000-10FFFD"
|
|
2983
|
+
].join("");
|
|
2984
|
+
var NFKC16_WHITE_SPACE_RANGES_PACKED = [
|
|
2985
|
+
"9-D;20;85;A0;1680;2000-200A;2028-2029;202F;205F;3000"
|
|
2986
|
+
].join("");
|
|
2987
|
+
|
|
2988
|
+
// src/unicode/nfkc16.ts
|
|
2989
|
+
var Nfkc16Error = class extends Error {
|
|
2990
|
+
code;
|
|
2991
|
+
/** The offending code point (for UNPAIRED_SURROGATE, the lone surrogate code unit). */
|
|
2992
|
+
codePoint;
|
|
2993
|
+
constructor(code, message, codePoint) {
|
|
2994
|
+
super(message);
|
|
2995
|
+
this.name = "Nfkc16Error";
|
|
2996
|
+
this.code = code;
|
|
2997
|
+
this.codePoint = codePoint;
|
|
2998
|
+
}
|
|
2999
|
+
};
|
|
3000
|
+
var HANGUL_S_BASE = 44032;
|
|
3001
|
+
var HANGUL_L_BASE = 4352;
|
|
3002
|
+
var HANGUL_V_BASE = 4449;
|
|
3003
|
+
var HANGUL_T_BASE = 4519;
|
|
3004
|
+
var HANGUL_L_COUNT = 19;
|
|
3005
|
+
var HANGUL_V_COUNT = 21;
|
|
3006
|
+
var HANGUL_T_COUNT = 28;
|
|
3007
|
+
var HANGUL_N_COUNT = HANGUL_V_COUNT * HANGUL_T_COUNT;
|
|
3008
|
+
var HANGUL_S_COUNT = HANGUL_L_COUNT * HANGUL_N_COUNT;
|
|
3009
|
+
var MAX_CODE_POINT = 1114111;
|
|
3010
|
+
var COMPOSITION_KEY_SHIFT = 2097152;
|
|
3011
|
+
function parseDecomposition(packed) {
|
|
3012
|
+
const out = /* @__PURE__ */ new Map();
|
|
3013
|
+
for (const entry of packed.split(";")) {
|
|
3014
|
+
const eq = entry.indexOf("=");
|
|
3015
|
+
const cp = parseInt(entry.slice(0, eq), 16);
|
|
3016
|
+
const targets = entry.slice(eq + 1).split(" ").map((token) => parseInt(token, 16));
|
|
3017
|
+
out.set(cp, targets);
|
|
3018
|
+
}
|
|
3019
|
+
return out;
|
|
3020
|
+
}
|
|
3021
|
+
function parseCcc(packed) {
|
|
3022
|
+
const out = /* @__PURE__ */ new Map();
|
|
3023
|
+
for (const entry of packed.split(";")) {
|
|
3024
|
+
const colon = entry.indexOf(":");
|
|
3025
|
+
const value = parseInt(entry.slice(colon + 1), 16);
|
|
3026
|
+
const span = entry.slice(0, colon);
|
|
3027
|
+
const dash = span.indexOf("-");
|
|
3028
|
+
const first = parseInt(dash < 0 ? span : span.slice(0, dash), 16);
|
|
3029
|
+
const last = dash < 0 ? first : parseInt(span.slice(dash + 1), 16);
|
|
3030
|
+
for (let cp = first; cp <= last; cp++) out.set(cp, value);
|
|
3031
|
+
}
|
|
3032
|
+
return out;
|
|
3033
|
+
}
|
|
3034
|
+
function parseComposition(packed) {
|
|
3035
|
+
const out = /* @__PURE__ */ new Map();
|
|
3036
|
+
for (const entry of packed.split(";")) {
|
|
3037
|
+
const eq = entry.indexOf("=");
|
|
3038
|
+
const space = entry.indexOf(" ");
|
|
3039
|
+
const starter = parseInt(entry.slice(0, space), 16);
|
|
3040
|
+
const combining = parseInt(entry.slice(space + 1, eq), 16);
|
|
3041
|
+
out.set(starter * COMPOSITION_KEY_SHIFT + combining, parseInt(entry.slice(eq + 1), 16));
|
|
3042
|
+
}
|
|
3043
|
+
return out;
|
|
3044
|
+
}
|
|
3045
|
+
function parseRanges(packed) {
|
|
3046
|
+
const entries = packed.split(";");
|
|
3047
|
+
const out = new Uint32Array(entries.length * 2);
|
|
3048
|
+
for (let i = 0; i < entries.length; i++) {
|
|
3049
|
+
const entry = entries[i] ?? "";
|
|
3050
|
+
const dash = entry.indexOf("-");
|
|
3051
|
+
const first = parseInt(dash < 0 ? entry : entry.slice(0, dash), 16);
|
|
3052
|
+
const last = dash < 0 ? first : parseInt(entry.slice(dash + 1), 16);
|
|
3053
|
+
out[i * 2] = first;
|
|
3054
|
+
out[i * 2 + 1] = last;
|
|
3055
|
+
}
|
|
3056
|
+
return out;
|
|
3057
|
+
}
|
|
3058
|
+
var cachedTables;
|
|
3059
|
+
function tables() {
|
|
3060
|
+
cachedTables ??= {
|
|
3061
|
+
decomposition: parseDecomposition(NFKC16_DECOMPOSITION_PACKED),
|
|
3062
|
+
ccc: parseCcc(NFKC16_CCC_PACKED),
|
|
3063
|
+
composition: parseComposition(NFKC16_COMPOSITION_PACKED),
|
|
3064
|
+
assignedRanges: parseRanges(NFKC16_ASSIGNED_RANGES_PACKED),
|
|
3065
|
+
whiteSpaceRanges: parseRanges(NFKC16_WHITE_SPACE_RANGES_PACKED)
|
|
3066
|
+
};
|
|
3067
|
+
return cachedTables;
|
|
3068
|
+
}
|
|
3069
|
+
function inRanges(ranges, codePoint) {
|
|
3070
|
+
let lo = 0;
|
|
3071
|
+
let hi = ranges.length / 2 - 1;
|
|
3072
|
+
while (lo <= hi) {
|
|
3073
|
+
const mid = lo + hi >> 1;
|
|
3074
|
+
const start = ranges[mid * 2] ?? Number.MAX_SAFE_INTEGER;
|
|
3075
|
+
const end = ranges[mid * 2 + 1] ?? -1;
|
|
3076
|
+
if (codePoint < start) hi = mid - 1;
|
|
3077
|
+
else if (codePoint > end) lo = mid + 1;
|
|
3078
|
+
else return true;
|
|
3079
|
+
}
|
|
3080
|
+
return false;
|
|
3081
|
+
}
|
|
3082
|
+
function isWhiteSpace16(codePoint) {
|
|
3083
|
+
if (!Number.isInteger(codePoint) || codePoint < 0 || codePoint > MAX_CODE_POINT) return false;
|
|
3084
|
+
return inRanges(tables().whiteSpaceRanges, codePoint);
|
|
3085
|
+
}
|
|
3086
|
+
function unpairedSurrogate(unit, index) {
|
|
3087
|
+
return new Nfkc16Error(
|
|
3088
|
+
"UNPAIRED_SURROGATE",
|
|
3089
|
+
`unpaired surrogate 0x${unit.toString(16).toUpperCase()} at UTF-16 index ${index}`,
|
|
3090
|
+
unit
|
|
3091
|
+
);
|
|
3092
|
+
}
|
|
3093
|
+
function validatedScalarValues(input, t) {
|
|
3094
|
+
const codePoints = [];
|
|
3095
|
+
for (let i = 0; i < input.length; i++) {
|
|
3096
|
+
const unit = input.charCodeAt(i);
|
|
3097
|
+
let codePoint = unit;
|
|
3098
|
+
if (unit >= 55296 && unit <= 56319) {
|
|
3099
|
+
const next = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
|
|
3100
|
+
if (next < 56320 || next > 57343) throw unpairedSurrogate(unit, i);
|
|
3101
|
+
codePoint = 65536 + (unit - 55296 << 10) + (next - 56320);
|
|
3102
|
+
i++;
|
|
3103
|
+
} else if (unit >= 56320 && unit <= 57343) {
|
|
3104
|
+
throw unpairedSurrogate(unit, i);
|
|
3105
|
+
}
|
|
3106
|
+
if (!inRanges(t.assignedRanges, codePoint)) {
|
|
3107
|
+
throw new Nfkc16Error(
|
|
3108
|
+
"UNASSIGNED_CODEPOINT",
|
|
3109
|
+
`code point U+${codePoint.toString(16).toUpperCase().padStart(4, "0")} is not assigned in Unicode 16.0.0`,
|
|
3110
|
+
codePoint
|
|
3111
|
+
);
|
|
3112
|
+
}
|
|
3113
|
+
codePoints.push(codePoint);
|
|
3114
|
+
}
|
|
3115
|
+
return codePoints;
|
|
3116
|
+
}
|
|
3117
|
+
function cccOf(t, codePoint) {
|
|
3118
|
+
return t.ccc.get(codePoint) ?? 0;
|
|
3119
|
+
}
|
|
3120
|
+
function decompose(t, codePoints) {
|
|
3121
|
+
const out = [];
|
|
3122
|
+
for (const cp of codePoints) {
|
|
3123
|
+
if (cp >= HANGUL_S_BASE && cp < HANGUL_S_BASE + HANGUL_S_COUNT) {
|
|
3124
|
+
const sIndex = cp - HANGUL_S_BASE;
|
|
3125
|
+
out.push(HANGUL_L_BASE + Math.floor(sIndex / HANGUL_N_COUNT));
|
|
3126
|
+
out.push(HANGUL_V_BASE + Math.floor(sIndex % HANGUL_N_COUNT / HANGUL_T_COUNT));
|
|
3127
|
+
const trailing = sIndex % HANGUL_T_COUNT;
|
|
3128
|
+
if (trailing !== 0) out.push(HANGUL_T_BASE + trailing);
|
|
3129
|
+
continue;
|
|
3130
|
+
}
|
|
3131
|
+
const mapped = t.decomposition.get(cp);
|
|
3132
|
+
if (mapped !== void 0) {
|
|
3133
|
+
for (const target of mapped) out.push(target);
|
|
3134
|
+
} else {
|
|
3135
|
+
out.push(cp);
|
|
3136
|
+
}
|
|
3137
|
+
}
|
|
3138
|
+
return out;
|
|
3139
|
+
}
|
|
3140
|
+
function canonicalReorder(t, codePoints) {
|
|
3141
|
+
for (let i = 1; i < codePoints.length; i++) {
|
|
3142
|
+
const cp = codePoints[i];
|
|
3143
|
+
if (cp === void 0) break;
|
|
3144
|
+
const combining = cccOf(t, cp);
|
|
3145
|
+
if (combining === 0) continue;
|
|
3146
|
+
let j = i;
|
|
3147
|
+
while (j > 0) {
|
|
3148
|
+
const prev = codePoints[j - 1];
|
|
3149
|
+
if (prev === void 0 || cccOf(t, prev) <= combining) break;
|
|
3150
|
+
codePoints[j] = prev;
|
|
3151
|
+
j--;
|
|
3152
|
+
}
|
|
3153
|
+
codePoints[j] = cp;
|
|
3154
|
+
}
|
|
3155
|
+
}
|
|
3156
|
+
function composePair(t, a, b) {
|
|
3157
|
+
if (a >= HANGUL_L_BASE && a < HANGUL_L_BASE + HANGUL_L_COUNT && b >= HANGUL_V_BASE && b < HANGUL_V_BASE + HANGUL_V_COUNT) {
|
|
3158
|
+
return HANGUL_S_BASE + ((a - HANGUL_L_BASE) * HANGUL_V_COUNT + (b - HANGUL_V_BASE)) * HANGUL_T_COUNT;
|
|
3159
|
+
}
|
|
3160
|
+
if (a >= HANGUL_S_BASE && a < HANGUL_S_BASE + HANGUL_S_COUNT && (a - HANGUL_S_BASE) % HANGUL_T_COUNT === 0 && b > HANGUL_T_BASE && b < HANGUL_T_BASE + HANGUL_T_COUNT) {
|
|
3161
|
+
return a + (b - HANGUL_T_BASE);
|
|
3162
|
+
}
|
|
3163
|
+
return t.composition.get(a * COMPOSITION_KEY_SHIFT + b);
|
|
3164
|
+
}
|
|
3165
|
+
function compose(t, codePoints) {
|
|
3166
|
+
const out = [];
|
|
3167
|
+
let starterIdx = -1;
|
|
3168
|
+
let lastCcc = 0;
|
|
3169
|
+
for (const cp of codePoints) {
|
|
3170
|
+
const combining = cccOf(t, cp);
|
|
3171
|
+
if (starterIdx >= 0 && (starterIdx === out.length - 1 || lastCcc < combining)) {
|
|
3172
|
+
const starter = out[starterIdx];
|
|
3173
|
+
const composed = starter === void 0 ? void 0 : composePair(t, starter, cp);
|
|
3174
|
+
if (composed !== void 0) {
|
|
3175
|
+
out[starterIdx] = composed;
|
|
3176
|
+
continue;
|
|
3177
|
+
}
|
|
3178
|
+
}
|
|
3179
|
+
out.push(cp);
|
|
3180
|
+
lastCcc = combining;
|
|
3181
|
+
if (combining === 0) starterIdx = out.length - 1;
|
|
3182
|
+
}
|
|
3183
|
+
return out;
|
|
3184
|
+
}
|
|
3185
|
+
function codePointsToString(codePoints) {
|
|
3186
|
+
let out = "";
|
|
3187
|
+
for (let i = 0; i < codePoints.length; i += 1024) {
|
|
3188
|
+
out += String.fromCodePoint(...codePoints.slice(i, i + 1024));
|
|
3189
|
+
}
|
|
3190
|
+
return out;
|
|
3191
|
+
}
|
|
3192
|
+
function nfkc16(input) {
|
|
3193
|
+
const t = tables();
|
|
3194
|
+
const codePoints = validatedScalarValues(input, t);
|
|
3195
|
+
const decomposed = decompose(t, codePoints);
|
|
3196
|
+
canonicalReorder(t, decomposed);
|
|
3197
|
+
return codePointsToString(compose(t, decomposed));
|
|
3198
|
+
}
|
|
3199
|
+
|
|
3200
|
+
// src/sealed-poe/passphrase-normalize.ts
|
|
3201
|
+
var MAX_PASSPHRASE_INPUT_BYTES = 4096;
|
|
3202
|
+
var UTF8 = new TextEncoder();
|
|
3203
|
+
function collapseAndTrimWhiteSpace(input) {
|
|
3204
|
+
let out = "";
|
|
3205
|
+
let pendingRun = false;
|
|
3206
|
+
for (const ch of input) {
|
|
3207
|
+
if (isWhiteSpace16(ch.codePointAt(0))) {
|
|
3208
|
+
pendingRun = true;
|
|
1582
3209
|
continue;
|
|
1583
3210
|
}
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
salt: EMPTY_SALT3,
|
|
1587
|
-
info: CARDANO_POE_HKDF_INFO_SLOTS_MAC,
|
|
1588
|
-
length: 32
|
|
1589
|
-
});
|
|
1590
|
-
const slotsMacCalc = hmac_js.hmac(sha2_js.sha256, hmacKey, slotsHash);
|
|
1591
|
-
if (compareCt(slotsMacCalc, envelope.slots_mac)) {
|
|
1592
|
-
return { kind: "match", slotIdx: candidate.slotIdx, cek: candidate.cek };
|
|
3211
|
+
if (pendingRun && out.length > 0) {
|
|
3212
|
+
out += " ";
|
|
1593
3213
|
}
|
|
1594
|
-
|
|
3214
|
+
pendingRun = false;
|
|
3215
|
+
out += ch;
|
|
3216
|
+
}
|
|
3217
|
+
return out;
|
|
3218
|
+
}
|
|
3219
|
+
function normalizePassphrase(passphrase) {
|
|
3220
|
+
const rawBytes = UTF8.encode(passphrase);
|
|
3221
|
+
if (rawBytes.length > MAX_PASSPHRASE_INPUT_BYTES) {
|
|
3222
|
+
throw new EciesSealedPoeError(
|
|
3223
|
+
"PASSPHRASE_INPUT_TOO_LONG",
|
|
3224
|
+
`passphrase raw UTF-8 length ${rawBytes.length} exceeds MAX_PASSPHRASE_INPUT_BYTES=${MAX_PASSPHRASE_INPUT_BYTES}`
|
|
3225
|
+
);
|
|
3226
|
+
}
|
|
3227
|
+
let folded;
|
|
3228
|
+
try {
|
|
3229
|
+
folded = nfkc16(passphrase);
|
|
3230
|
+
} catch (error) {
|
|
3231
|
+
if (error instanceof Nfkc16Error) {
|
|
3232
|
+
throw new EciesSealedPoeError("ENC_PASSPHRASE_UNNORMALIZABLE", error.message, {
|
|
3233
|
+
cause: error
|
|
3234
|
+
});
|
|
3235
|
+
}
|
|
3236
|
+
throw error;
|
|
3237
|
+
}
|
|
3238
|
+
const normalized = collapseAndTrimWhiteSpace(folded);
|
|
3239
|
+
if (normalized.length === 0) {
|
|
3240
|
+
throw new EciesSealedPoeError(
|
|
3241
|
+
"ENC_PASSPHRASE_EMPTY",
|
|
3242
|
+
"passphrase normalizes to the empty string"
|
|
3243
|
+
);
|
|
3244
|
+
}
|
|
3245
|
+
return UTF8.encode(normalized);
|
|
3246
|
+
}
|
|
3247
|
+
|
|
3248
|
+
// src/sealed-poe/passphrase.ts
|
|
3249
|
+
var CEK_LENGTH4 = 32;
|
|
3250
|
+
var NONCE_LENGTH4 = 24;
|
|
3251
|
+
var COMMITMENT_LENGTH = 32;
|
|
3252
|
+
var SALT_MIN_LENGTH = 16;
|
|
3253
|
+
var SALT_MAX_LENGTH = 64;
|
|
3254
|
+
var ARGON2_M_MIN = 65536;
|
|
3255
|
+
var ARGON2_T_MIN = 3;
|
|
3256
|
+
var ARGON2_P_MIN = 1;
|
|
3257
|
+
var PARAM_VALUE_MAX = 4294967295;
|
|
3258
|
+
var DEFAULT_PARAMS = { m: 65536, t: 3, p: 4 };
|
|
3259
|
+
function assertUint32(value, name) {
|
|
3260
|
+
if (!Number.isInteger(value) || value < 0 || value > PARAM_VALUE_MAX) {
|
|
3261
|
+
throw new EciesSealedPoeError(
|
|
3262
|
+
"INVALID_PASSPHRASE_PARAMS",
|
|
3263
|
+
`passphrase.params.${name} MUST be a uint in 0..2^32-1, got ${String(value)}`
|
|
3264
|
+
);
|
|
3265
|
+
}
|
|
3266
|
+
}
|
|
3267
|
+
function assertPassphraseBlock(args) {
|
|
3268
|
+
if (args.nonce.length !== NONCE_LENGTH4) {
|
|
3269
|
+
throw new EciesSealedPoeError(
|
|
3270
|
+
"NONCE_LENGTH_MISMATCH",
|
|
3271
|
+
`nonce MUST be exactly ${NONCE_LENGTH4} bytes, got ${args.nonce.length}`
|
|
3272
|
+
);
|
|
3273
|
+
}
|
|
3274
|
+
if (args.salt.length < SALT_MIN_LENGTH) {
|
|
3275
|
+
throw new EciesSealedPoeError(
|
|
3276
|
+
"ENC_PASSPHRASE_SALT_TOO_SHORT",
|
|
3277
|
+
`passphrase.salt MUST be at least ${SALT_MIN_LENGTH} bytes, got ${args.salt.length}`
|
|
3278
|
+
);
|
|
3279
|
+
}
|
|
3280
|
+
if (args.salt.length > SALT_MAX_LENGTH) {
|
|
3281
|
+
throw new EciesSealedPoeError(
|
|
3282
|
+
"ENC_PASSPHRASE_SALT_TOO_LONG",
|
|
3283
|
+
`passphrase.salt MUST be at most ${SALT_MAX_LENGTH} bytes, got ${args.salt.length}`
|
|
3284
|
+
);
|
|
3285
|
+
}
|
|
3286
|
+
assertUint32(args.params.m, "m");
|
|
3287
|
+
assertUint32(args.params.t, "t");
|
|
3288
|
+
assertUint32(args.params.p, "p");
|
|
3289
|
+
if (args.params.m < ARGON2_M_MIN || args.params.t < ARGON2_T_MIN || args.params.p < ARGON2_P_MIN) {
|
|
3290
|
+
throw new EciesSealedPoeError(
|
|
3291
|
+
"ENC_PASSPHRASE_ARGON2_PARAMS_TOO_LOW",
|
|
3292
|
+
`passphrase.params MUST satisfy m >= ${ARGON2_M_MIN}, t >= ${ARGON2_T_MIN}, p >= ${ARGON2_P_MIN}; got m=${args.params.m}, t=${args.params.t}, p=${args.params.p}`
|
|
3293
|
+
);
|
|
3294
|
+
}
|
|
3295
|
+
}
|
|
3296
|
+
async function argon2Cek(password, salt, params) {
|
|
3297
|
+
try {
|
|
3298
|
+
return await argon2idV13({
|
|
3299
|
+
password,
|
|
3300
|
+
salt,
|
|
3301
|
+
memSizeKB: params.m,
|
|
3302
|
+
iterations: params.t,
|
|
3303
|
+
parallelism: params.p,
|
|
3304
|
+
outBytes: CEK_LENGTH4
|
|
3305
|
+
});
|
|
3306
|
+
} catch (cause) {
|
|
3307
|
+
throw new EciesSealedPoeError("KDF_DERIVATION_FAILED", "argon2id rejected the derivation", {
|
|
3308
|
+
cause
|
|
3309
|
+
});
|
|
3310
|
+
}
|
|
3311
|
+
}
|
|
3312
|
+
function commitmentFor(envelope, cek, hashesHash) {
|
|
3313
|
+
const pwHash = computePassphraseHash({
|
|
3314
|
+
aead: envelope.aead,
|
|
3315
|
+
nonce: envelope.nonce,
|
|
3316
|
+
hashesHash,
|
|
3317
|
+
salt: envelope.passphrase.salt,
|
|
3318
|
+
params: envelope.passphrase.params
|
|
3319
|
+
});
|
|
3320
|
+
return computePassphraseCommitment({ cek, pwHash });
|
|
3321
|
+
}
|
|
3322
|
+
async function passphraseSealedPoeSeal(args) {
|
|
3323
|
+
const salt = args.salt ?? utils_js.randomBytes(SALT_MIN_LENGTH);
|
|
3324
|
+
const params = args.params ?? DEFAULT_PARAMS;
|
|
3325
|
+
const nonce = args.nonce ?? utils_js.randomBytes(NONCE_LENGTH4);
|
|
3326
|
+
assertPassphraseBlock({ salt, params, nonce });
|
|
3327
|
+
const hashesHash = itemHashesHash(args.hashes);
|
|
3328
|
+
const envelope = {
|
|
3329
|
+
scheme: 1,
|
|
3330
|
+
aead: SEALED_POE_AEAD,
|
|
3331
|
+
nonce,
|
|
3332
|
+
passphrase: { alg: "argon2id", salt, params: { m: params.m, t: params.t, p: params.p } }
|
|
3333
|
+
};
|
|
3334
|
+
const cek = await argon2Cek(normalizePassphrase(args.passphrase), salt, params);
|
|
3335
|
+
const commitment = commitmentFor(envelope, cek, hashesHash);
|
|
3336
|
+
const stream = streamSeal({
|
|
3337
|
+
payloadKey: passphrasePayloadKey({ cek, nonce }),
|
|
3338
|
+
plaintext: args.plaintext
|
|
3339
|
+
});
|
|
3340
|
+
const blob = new Uint8Array(commitment.length + stream.length);
|
|
3341
|
+
blob.set(commitment, 0);
|
|
3342
|
+
blob.set(stream, commitment.length);
|
|
3343
|
+
return { envelope, blob };
|
|
3344
|
+
}
|
|
3345
|
+
async function passphraseSealedPoeOpen(args) {
|
|
3346
|
+
const { envelope, blob } = args;
|
|
3347
|
+
const hashesHash = itemHashesHash(args.hashes);
|
|
3348
|
+
const password = normalizePassphrase(args.passphrase);
|
|
3349
|
+
if (envelope.scheme !== 1) {
|
|
3350
|
+
throw new EciesSealedPoeError(
|
|
3351
|
+
"UNSUPPORTED_ENVELOPE_SCHEME",
|
|
3352
|
+
`envelope.scheme=${String(envelope.scheme)} unsupported (expected 1)`
|
|
3353
|
+
);
|
|
3354
|
+
}
|
|
3355
|
+
if (envelope.aead !== SEALED_POE_AEAD) {
|
|
3356
|
+
throw new EciesSealedPoeError(
|
|
3357
|
+
"UNSUPPORTED_AEAD_ALG",
|
|
3358
|
+
`envelope.aead=${String(envelope.aead)} unsupported (expected '${SEALED_POE_AEAD}')`
|
|
3359
|
+
);
|
|
3360
|
+
}
|
|
3361
|
+
if (envelope.passphrase.alg !== "argon2id") {
|
|
3362
|
+
throw new EciesSealedPoeError(
|
|
3363
|
+
"ENC_PASSPHRASE_ALG_UNSUPPORTED",
|
|
3364
|
+
`passphrase.alg=${String(envelope.passphrase.alg)} unsupported (expected 'argon2id')`
|
|
3365
|
+
);
|
|
3366
|
+
}
|
|
3367
|
+
assertPassphraseBlock({
|
|
3368
|
+
salt: envelope.passphrase.salt,
|
|
3369
|
+
params: envelope.passphrase.params,
|
|
3370
|
+
nonce: envelope.nonce
|
|
3371
|
+
});
|
|
3372
|
+
if (blob.length < COMMITMENT_LENGTH + TAG_SIZE) {
|
|
3373
|
+
return { matched: false, reason: "TAMPERED_CIPHERTEXT" };
|
|
3374
|
+
}
|
|
3375
|
+
const cek = await argon2Cek(password, envelope.passphrase.salt, envelope.passphrase.params);
|
|
3376
|
+
const expected = commitmentFor(envelope, cek, hashesHash);
|
|
3377
|
+
if (!compareCt(expected, blob.subarray(0, COMMITMENT_LENGTH))) {
|
|
3378
|
+
return { matched: false, reason: "TAMPERED_CIPHERTEXT" };
|
|
3379
|
+
}
|
|
3380
|
+
try {
|
|
3381
|
+
const plaintext = streamOpen({
|
|
3382
|
+
payloadKey: passphrasePayloadKey({ cek, nonce: envelope.nonce }),
|
|
3383
|
+
ciphertext: blob.subarray(COMMITMENT_LENGTH)
|
|
3384
|
+
});
|
|
3385
|
+
return { matched: true, plaintext };
|
|
3386
|
+
} catch (e) {
|
|
3387
|
+
if (!(e instanceof StreamTamperedError)) throw e;
|
|
3388
|
+
return { matched: false, reason: "TAMPERED_CIPHERTEXT" };
|
|
1595
3389
|
}
|
|
1596
|
-
return anyCandidateRecovered ? { kind: "aead_pass_no_mac_match" } : { kind: "no_aead_pass" };
|
|
1597
3390
|
}
|
|
1598
3391
|
|
|
1599
3392
|
// src/sealed-poe/envelope-from-parsed.ts
|
|
1600
3393
|
function sealedEnvelopeFromParsed(enc) {
|
|
1601
|
-
if (enc.scheme !== 1 || enc.aead !==
|
|
3394
|
+
if (enc.scheme !== 1 || enc.aead !== SEALED_POE_AEAD) return null;
|
|
1602
3395
|
if (enc.nonce === void 0 || enc.slots_mac === void 0) return null;
|
|
1603
3396
|
const slots = enc.slots;
|
|
1604
3397
|
if (slots === void 0 || slots.length < 1) return null;
|
|
@@ -1610,7 +3403,7 @@ function sealedEnvelopeFromParsed(enc) {
|
|
|
1610
3403
|
}
|
|
1611
3404
|
return {
|
|
1612
3405
|
scheme: 1,
|
|
1613
|
-
aead:
|
|
3406
|
+
aead: SEALED_POE_AEAD,
|
|
1614
3407
|
kem: "x25519",
|
|
1615
3408
|
nonce: enc.nonce,
|
|
1616
3409
|
slots: x25519Slots,
|
|
@@ -1625,7 +3418,7 @@ function sealedEnvelopeFromParsed(enc) {
|
|
|
1625
3418
|
}
|
|
1626
3419
|
return {
|
|
1627
3420
|
scheme: 1,
|
|
1628
|
-
aead:
|
|
3421
|
+
aead: SEALED_POE_AEAD,
|
|
1629
3422
|
kem: "mlkem768x25519",
|
|
1630
3423
|
nonce: enc.nonce,
|
|
1631
3424
|
slots: hybridSlots,
|
|
@@ -1796,101 +3589,6 @@ function decodeLeavesList(bytes) {
|
|
|
1796
3589
|
return out;
|
|
1797
3590
|
}
|
|
1798
3591
|
|
|
1799
|
-
// src/recipient/bech32.ts
|
|
1800
|
-
var BECH32_ALPHABET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
|
|
1801
|
-
var POLYMOD_GENERATORS = [996825010, 642813549, 513874426, 1027748829, 705979059];
|
|
1802
|
-
var ENCODING_CONST = 1;
|
|
1803
|
-
function polymodStep(pre) {
|
|
1804
|
-
const b = pre >> 25;
|
|
1805
|
-
let chk = (pre & 33554431) << 5;
|
|
1806
|
-
for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {
|
|
1807
|
-
if ((b >> i & 1) === 1) chk ^= POLYMOD_GENERATORS[i];
|
|
1808
|
-
}
|
|
1809
|
-
return chk;
|
|
1810
|
-
}
|
|
1811
|
-
function bytesToWords(bytes) {
|
|
1812
|
-
const words = [];
|
|
1813
|
-
let carry = 0;
|
|
1814
|
-
let pos = 0;
|
|
1815
|
-
const mask = (1 << 5) - 1;
|
|
1816
|
-
for (const n of bytes) {
|
|
1817
|
-
carry = carry << 8 | n;
|
|
1818
|
-
pos += 8;
|
|
1819
|
-
for (; pos >= 5; pos -= 5) words.push(carry >> pos - 5 & mask);
|
|
1820
|
-
carry &= (1 << pos) - 1;
|
|
1821
|
-
}
|
|
1822
|
-
if (pos > 0) words.push(carry << 5 - pos & mask);
|
|
1823
|
-
return words;
|
|
1824
|
-
}
|
|
1825
|
-
function checksum(prefix, words) {
|
|
1826
|
-
let chk = 1;
|
|
1827
|
-
for (let i = 0; i < prefix.length; i++) {
|
|
1828
|
-
const c = prefix.charCodeAt(i);
|
|
1829
|
-
if (c < 33 || c > 126) throw new Error(`bech32: invalid prefix (${prefix})`);
|
|
1830
|
-
chk = polymodStep(chk) ^ c >> 5;
|
|
1831
|
-
}
|
|
1832
|
-
chk = polymodStep(chk);
|
|
1833
|
-
for (let i = 0; i < prefix.length; i++) chk = polymodStep(chk) ^ prefix.charCodeAt(i) & 31;
|
|
1834
|
-
for (const v of words) chk = polymodStep(chk) ^ v;
|
|
1835
|
-
for (let i = 0; i < 6; i++) chk = polymodStep(chk);
|
|
1836
|
-
chk ^= ENCODING_CONST;
|
|
1837
|
-
let out = "";
|
|
1838
|
-
for (let i = 0; i < 6; i++) out += BECH32_ALPHABET[chk >> 5 * (5 - i) & 31];
|
|
1839
|
-
return out;
|
|
1840
|
-
}
|
|
1841
|
-
function bech32EncodeNoLimit(prefix, bytes) {
|
|
1842
|
-
if (prefix.length === 0) throw new Error("bech32: empty prefix");
|
|
1843
|
-
const words = bytesToWords(bytes);
|
|
1844
|
-
let payload = "";
|
|
1845
|
-
for (const w of words) payload += BECH32_ALPHABET[w];
|
|
1846
|
-
const lowered = prefix.toLowerCase();
|
|
1847
|
-
return `${lowered}1${payload}${checksum(lowered, words)}`;
|
|
1848
|
-
}
|
|
1849
|
-
function checksumValid(prefix, words) {
|
|
1850
|
-
let chk = 1;
|
|
1851
|
-
for (let i = 0; i < prefix.length; i++) chk = polymodStep(chk) ^ prefix.charCodeAt(i) >> 5;
|
|
1852
|
-
chk = polymodStep(chk);
|
|
1853
|
-
for (let i = 0; i < prefix.length; i++) chk = polymodStep(chk) ^ prefix.charCodeAt(i) & 31;
|
|
1854
|
-
for (const v of words) chk = polymodStep(chk) ^ v;
|
|
1855
|
-
return chk === ENCODING_CONST;
|
|
1856
|
-
}
|
|
1857
|
-
function wordsToBytes(words) {
|
|
1858
|
-
const out = [];
|
|
1859
|
-
let carry = 0;
|
|
1860
|
-
let pos = 0;
|
|
1861
|
-
for (const w of words) {
|
|
1862
|
-
carry = carry << 5 | w;
|
|
1863
|
-
pos += 5;
|
|
1864
|
-
for (; pos >= 8; pos -= 8) out.push(carry >> pos - 8 & 255);
|
|
1865
|
-
carry &= (1 << pos) - 1;
|
|
1866
|
-
}
|
|
1867
|
-
if (pos >= 5 || carry !== 0) throw new Error("bech32: non-canonical padding");
|
|
1868
|
-
return Uint8Array.from(out);
|
|
1869
|
-
}
|
|
1870
|
-
function bech32DecodeNoLimit(input) {
|
|
1871
|
-
if (input.length === 0) throw new Error("bech32: empty string");
|
|
1872
|
-
const hasLower = input !== input.toUpperCase();
|
|
1873
|
-
const hasUpper = input !== input.toLowerCase();
|
|
1874
|
-
if (hasLower && hasUpper) throw new Error("bech32: mixed-case string");
|
|
1875
|
-
const s = input.toLowerCase();
|
|
1876
|
-
const sep = s.lastIndexOf("1");
|
|
1877
|
-
if (sep < 1) throw new Error("bech32: missing human-readable prefix");
|
|
1878
|
-
if (s.length - sep - 1 < 6) throw new Error("bech32: data too short for checksum");
|
|
1879
|
-
const hrp = s.slice(0, sep);
|
|
1880
|
-
for (let i = 0; i < hrp.length; i++) {
|
|
1881
|
-
const c = hrp.charCodeAt(i);
|
|
1882
|
-
if (c < 33 || c > 126) throw new Error("bech32: invalid prefix character");
|
|
1883
|
-
}
|
|
1884
|
-
const words = [];
|
|
1885
|
-
for (let i = sep + 1; i < s.length; i++) {
|
|
1886
|
-
const v = BECH32_ALPHABET.indexOf(s[i]);
|
|
1887
|
-
if (v === -1) throw new Error("bech32: invalid data character");
|
|
1888
|
-
words.push(v);
|
|
1889
|
-
}
|
|
1890
|
-
if (!checksumValid(hrp, words)) throw new Error("bech32: bad checksum");
|
|
1891
|
-
return { hrp, bytes: wordsToBytes(words.slice(0, words.length - 6)) };
|
|
1892
|
-
}
|
|
1893
|
-
|
|
1894
3592
|
// src/recipient/age-recipient.ts
|
|
1895
3593
|
var X25519_HRP = "age";
|
|
1896
3594
|
var XWING_HRP = "age1pqc";
|
|
@@ -1931,25 +3629,30 @@ function parseAgeRecipient(recipient) {
|
|
|
1931
3629
|
exports.AeadVerificationError = AeadVerificationError;
|
|
1932
3630
|
exports.CARDANO_POE_HKDF_INFO_KEK = CARDANO_POE_HKDF_INFO_KEK;
|
|
1933
3631
|
exports.CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519 = CARDANO_POE_HKDF_INFO_KEK_MLKEM768X25519;
|
|
3632
|
+
exports.CARDANO_POE_HKDF_INFO_PASSPHRASE_MAC = CARDANO_POE_HKDF_INFO_PASSPHRASE_MAC;
|
|
1934
3633
|
exports.CARDANO_POE_HKDF_INFO_PAYLOAD = CARDANO_POE_HKDF_INFO_PAYLOAD;
|
|
1935
3634
|
exports.CARDANO_POE_HKDF_INFO_PAYLOAD_PASSPHRASE = CARDANO_POE_HKDF_INFO_PAYLOAD_PASSPHRASE;
|
|
1936
3635
|
exports.CARDANO_POE_HKDF_INFO_SLOTS_MAC = CARDANO_POE_HKDF_INFO_SLOTS_MAC;
|
|
3636
|
+
exports.CARDANO_POE_ITEM_HASHES_PREFIX = CARDANO_POE_ITEM_HASHES_PREFIX;
|
|
3637
|
+
exports.CARDANO_POE_PASSPHRASE_TRANSCRIPT_PREFIX = CARDANO_POE_PASSPHRASE_TRANSCRIPT_PREFIX;
|
|
1937
3638
|
exports.CARDANO_POE_PW_NORM_PROFILE = CARDANO_POE_PW_NORM_PROFILE;
|
|
1938
3639
|
exports.CARDANO_POE_SIG_DOMAIN_PREFIX = CARDANO_POE_SIG_DOMAIN_PREFIX;
|
|
1939
3640
|
exports.CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES = CARDANO_POE_SIG_DOMAIN_PREFIX_BYTES;
|
|
1940
3641
|
exports.CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX = CARDANO_POE_SLOTS_TRANSCRIPT_PREFIX;
|
|
3642
|
+
exports.CARDANO_POE_X25519_KEK_SALT_PREFIX = CARDANO_POE_X25519_KEK_SALT_PREFIX;
|
|
1941
3643
|
exports.CARDANO_POE_XWING_KEK_SALT_PREFIX = CARDANO_POE_XWING_KEK_SALT_PREFIX;
|
|
3644
|
+
exports.CHUNK_SIZE = CHUNK_SIZE;
|
|
1942
3645
|
exports.CanonicalCborError = CanonicalCborError;
|
|
1943
3646
|
exports.CoseSign1BuildError = CoseSign1BuildError;
|
|
1944
3647
|
exports.CoseVerifyError = CoseVerifyError;
|
|
1945
3648
|
exports.EciesSealedPoeError = EciesSealedPoeError;
|
|
3649
|
+
exports.IDENTITY_SEED_HRP = IDENTITY_SEED_HRP;
|
|
1946
3650
|
exports.INFO_ED25519 = INFO_ED25519;
|
|
1947
3651
|
exports.INFO_MLKEM768X25519 = INFO_MLKEM768X25519;
|
|
1948
3652
|
exports.INFO_X25519 = INFO_X25519;
|
|
1949
3653
|
exports.LEAVES_LIST_FORMAT_V1 = LEAVES_LIST_FORMAT_V1;
|
|
1950
3654
|
exports.MAX_DECODED_ENVELOPE_BYTES = MAX_DECODED_ENVELOPE_BYTES;
|
|
1951
|
-
exports.
|
|
1952
|
-
exports.MAX_SEALED_PLAINTEXT = MAX_SEALED_PLAINTEXT;
|
|
3655
|
+
exports.MAX_PASSPHRASE_INPUT_BYTES = MAX_PASSPHRASE_INPUT_BYTES;
|
|
1953
3656
|
exports.MAX_SLOTS = MAX_SLOTS;
|
|
1954
3657
|
exports.MERKLE_ALG_ID = MERKLE_ALG_ID;
|
|
1955
3658
|
exports.MLKEM768X25519_ENC_LENGTH = MLKEM768X25519_ENC_LENGTH;
|
|
@@ -1958,26 +3661,28 @@ exports.MLKEM768X25519_PUBLIC_KEY_LENGTH = MLKEM768X25519_PUBLIC_KEY_LENGTH;
|
|
|
1958
3661
|
exports.MLKEM768X25519_SEED_LENGTH = MLKEM768X25519_SEED_LENGTH;
|
|
1959
3662
|
exports.MLKEM768X25519_SHARED_SECRET_LENGTH = MLKEM768X25519_SHARED_SECRET_LENGTH;
|
|
1960
3663
|
exports.MerkleLeavesListError = MerkleLeavesListError;
|
|
1961
|
-
exports.
|
|
3664
|
+
exports.SEALED_POE_AEAD = SEALED_POE_AEAD;
|
|
1962
3665
|
exports.SeedDeriveError = SeedDeriveError;
|
|
3666
|
+
exports.SeedEncodingError = SeedEncodingError;
|
|
3667
|
+
exports.StreamOpener = StreamOpener;
|
|
3668
|
+
exports.StreamSealer = StreamSealer;
|
|
3669
|
+
exports.StreamTamperedError = StreamTamperedError;
|
|
3670
|
+
exports.TAG_SIZE = TAG_SIZE;
|
|
1963
3671
|
exports.X25519LowOrderPointError = X25519LowOrderPointError;
|
|
1964
|
-
exports.adContentPassphrase = adContentPassphrase;
|
|
1965
|
-
exports.adContentSlots = adContentSlots;
|
|
1966
3672
|
exports.argon2idV13 = argon2idV13;
|
|
1967
|
-
exports.assertCiphertextWithinBound = assertCiphertextWithinBound;
|
|
1968
|
-
exports.assertPlaintextWithinBound = assertPlaintextWithinBound;
|
|
1969
3673
|
exports.bech32DecodeNoLimit = bech32DecodeNoLimit;
|
|
1970
3674
|
exports.bech32EncodeNoLimit = bech32EncodeNoLimit;
|
|
1971
3675
|
exports.blake2b224 = blake2b224;
|
|
1972
3676
|
exports.blake2b256 = blake2b256;
|
|
1973
3677
|
exports.buildLabel309SigStructure = buildLabel309SigStructure;
|
|
1974
3678
|
exports.buildSigStructure = buildSigStructure;
|
|
1975
|
-
exports.canonicalizeSlots = canonicalizeSlots;
|
|
1976
3679
|
exports.chacha20Poly1305Decrypt = chacha20Poly1305Decrypt;
|
|
1977
3680
|
exports.chacha20Poly1305Encrypt = chacha20Poly1305Encrypt;
|
|
1978
|
-
exports.chunkKemCt = chunkKemCt;
|
|
1979
3681
|
exports.compareCt = compareCt;
|
|
3682
|
+
exports.computePassphraseCommitment = computePassphraseCommitment;
|
|
3683
|
+
exports.computePassphraseHash = computePassphraseHash;
|
|
1980
3684
|
exports.computeSlotsHash = computeSlotsHash;
|
|
3685
|
+
exports.computeSlotsMac = computeSlotsMac;
|
|
1981
3686
|
exports.coseSign1Label309Build = coseSign1Label309Build;
|
|
1982
3687
|
exports.coseSign1Label309Verify = coseSign1Label309Verify;
|
|
1983
3688
|
exports.decodeCanonicalCbor = decodeCanonicalCbor;
|
|
@@ -1996,27 +3701,36 @@ exports.encodeAgeX25519Recipient = encodeAgeX25519Recipient;
|
|
|
1996
3701
|
exports.encodeAgeXWingRecipient = encodeAgeXWingRecipient;
|
|
1997
3702
|
exports.encodeCanonicalCbor = encodeCanonicalCbor;
|
|
1998
3703
|
exports.encodeCoseSign1 = encodeCoseSign1;
|
|
3704
|
+
exports.encodeIdentitySeed = encodeIdentitySeed;
|
|
1999
3705
|
exports.encodeLeavesList = encodeLeavesList;
|
|
2000
3706
|
exports.getPublicKeyEd25519 = getPublicKeyEd25519;
|
|
2001
3707
|
exports.hexToBytes = hexToBytes;
|
|
2002
3708
|
exports.hkdfSha256 = hkdfSha256;
|
|
2003
|
-
exports.
|
|
3709
|
+
exports.itemHashesHash = itemHashesHash;
|
|
2004
3710
|
exports.merkleSha2256InclusionProof = merkleSha2256InclusionProof;
|
|
2005
3711
|
exports.merkleSha2256Root = merkleSha2256Root;
|
|
2006
3712
|
exports.merkleSha2256VerifyInclusion = merkleSha2256VerifyInclusion;
|
|
2007
3713
|
exports.mlkem768x25519Decapsulate = mlkem768x25519Decapsulate;
|
|
2008
3714
|
exports.mlkem768x25519Encapsulate = mlkem768x25519Encapsulate;
|
|
2009
3715
|
exports.mlkem768x25519Keygen = mlkem768x25519Keygen;
|
|
3716
|
+
exports.normalizePassphrase = normalizePassphrase;
|
|
2010
3717
|
exports.parseAgeRecipient = parseAgeRecipient;
|
|
2011
3718
|
exports.parseCoseKeyEd25519 = parseCoseKeyEd25519;
|
|
3719
|
+
exports.parseIdentitySeed = parseIdentitySeed;
|
|
2012
3720
|
exports.passphrasePayloadKey = passphrasePayloadKey;
|
|
3721
|
+
exports.passphraseSealedPoeOpen = passphraseSealedPoeOpen;
|
|
3722
|
+
exports.passphraseSealedPoeSeal = passphraseSealedPoeSeal;
|
|
2013
3723
|
exports.sealedEnvelopeFromParsed = sealedEnvelopeFromParsed;
|
|
2014
3724
|
exports.sha256 = sha256;
|
|
3725
|
+
exports.sha256Stream = sha256Stream;
|
|
2015
3726
|
exports.signEd25519 = signEd25519;
|
|
2016
3727
|
exports.slotsPayloadKey = slotsPayloadKey;
|
|
3728
|
+
exports.streamOpen = streamOpen;
|
|
3729
|
+
exports.streamSeal = streamSeal;
|
|
2017
3730
|
exports.uniformIndexBelow = uniformIndexBelow;
|
|
2018
3731
|
exports.verifyEd25519 = verifyEd25519;
|
|
2019
3732
|
exports.x25519Ecdh = x25519Ecdh;
|
|
3733
|
+
exports.x25519KekSalt = x25519KekSalt;
|
|
2020
3734
|
exports.x25519Keygen = x25519Keygen;
|
|
2021
3735
|
exports.x25519PublicKey = x25519PublicKey;
|
|
2022
3736
|
exports.xchacha20Poly1305Decrypt = xchacha20Poly1305Decrypt;
|