diff --git a/lib/bcoin-browser.js b/lib/bcoin-browser.js index 0b2538f4..29570261 100644 --- a/lib/bcoin-browser.js +++ b/lib/bcoin-browser.js @@ -41,9 +41,6 @@ bcoin.cache = function cache() { * Expose */ -// Horrible BIP -bcoin.bip70 = require('./bip70'); - // Blockchain bcoin.blockchain = require('./blockchain'); bcoin.chain = require('./blockchain/chain'); diff --git a/lib/bcoin.js b/lib/bcoin.js index 794ab546..b93ebcf2 100644 --- a/lib/bcoin.js +++ b/lib/bcoin.js @@ -53,7 +53,6 @@ bcoin.set = function set(network) { */ bcoin.cache = function cache() { - bcoin.bip70; bcoin.blockchain; bcoin.btc; bcoin.coins; @@ -77,9 +76,6 @@ bcoin.cache = function cache() { * Expose */ -// Horrible BIP -bcoin.define('bip70', './bip70'); - // Blockchain bcoin.define('blockchain', './blockchain'); bcoin.define('chain', './blockchain/chain'); diff --git a/lib/bip70/certs.js b/lib/bip70/certs.js deleted file mode 100644 index d0c0d12a..00000000 --- a/lib/bip70/certs.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict'; - -module.exports = [ - 'ebd41040e4bb3ec742c9e381d31ef2a41a48b6685c96e7cef3c1df6cd4331c99', - 'ca42dd41745fd0b81eb902362cf9d8bf719da1bd1b1efc946f5b4c99f42c1b9e', - 'eb04cf5eb1f39afa762f2bb120f296cba520c1b97db1589565b81cb9a17b7244', - '6dc47172e01cbcb0bf62580d895fe2b8ac9ad4f873801e0c10b9c837d21eb177', - '16af57a9f676b0ab126095aa5ebadef22ab31119d644ac95cd4b93dbf3f26aeb', - '8c7209279ac04e275e16d07fd3b775e80154b5968046e31f52dd25766324e9a7', - '687fa451382278fff0c8b11f8d43d576671c6eb2bceab413fb83d965d06d2ff2', - '0791ca0749b20782aad3c7d7bd0cdfc9485835843eb2d7996009ce43ab6c6927', - '8095210805db4bbc355e4428d8fd6ec2cde3ab5fb97a9942988eb8f4dcd06016', - '73c176434f1bc6d5adf45b0e76e727287c8de57616c1e6e6141a2b2cbc7d8e4c', - 'af8b6762a1e528228161a95d5c559ee266278f75d79e830189a503506abd6b4c', - 'ff856a2d251dcd88d36656f450126798cfabaade40799c722de4d2b5db36a73a', - 'ca2d82a08677072f8ab6764ff035676cfe3e5e325e012172df3f92096db79b85', - 'a0459b9f63b22559f5fa5d4c6db3f9f72ff19342033578f073bf1d1b46cbb912', - 'a0234f3bc8527ca5628eec81ad5d69895da5680dc91d1cb8477f33f878b95b0b', - '69fac9bd55fb0ac78d53bbee5cf1d597989fd0aaab20a25151bdf1733ee7d122', - 'd8e0febc1db2e38d00940f37d27d41344d993e734b99d5656d9778d4d8143624', - 'd7a7a0fb5d7e2731d771e9484ebcdef71d5f0c3e0a2948782bc83ee0ea699ef4', - 'bd81ce3b4f6591d11a67b5fc7a47fdef25521bf9aa4e18b9e3df2e34a7803be8', - '3f06e55681d496f5be169eb5389f9f2b8ff61e1708df6881724849cd5d27cb69', - 'a45ede3bbbf09c8ae15c72efc07268d693a21c996fd51e67ca079460fd6d8873', - '85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86', - '18f1fc7f205df8adddeb7fe007dd57e3af375a9c4d8d73546bf4f1fed1e18d35', - 'e75e72ed9f560eec6eb4800073a43fc3ad19195a392282017895974a99026b6c', - '7908b40314c138100b518d0735807ffbfcf8518a0095337105ba386b153dd927', - '6ea54741d004667eed1b4816634aa3a79e6e4b96950f8279dafc8d9bd8812137', - '0c258a12a5674aef25f28ba7dcfaeceea348e541e6f5cc4ee63b71b361606ac3', - 'ef3cb417fc8ebf6f97876c9e4ece39de1ea5fe649141d1028b7d11c0b2298ced', - 'cecddc905099d8dadfc5b1d209b737cbe2c18cfb2c10c0ff0bcf0d3286fc1aa2', - 'c3846bf24b9e93ca64274c0ec67c1ecc5e024ffcacd2d74019350e81fe546ae4', - '1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658', - 'c766a9bef2d4071c863a31aa4920e813b2d198608cb7b7cfe21143b836df09ea', - '7600295eefe85b9e1fd624db76062aaaae59818a54d2774cd4c0b2c01131e1b3', - '21db20123660bb2ed418205da11ee7a85a65e2bc6e55b5af7e7899c8a266d92e', - '3e9099b5015e8f486c00bcea9d111ee721faba355a89bcf1df69561e3dc6325c', - '4348a0e9444c78cb265e058d5e8944b4d84f9662bd26db257f8934a443c70161', - '7431e5f4c3c1ce4690774f0b61e05440883ba9a01ed00ba6abd7806ed3b118cf', - '0f993c8aef97baaf5687140ed59ad1821bb4afacf0aa9a58b5d57a338a3afbcb', - '0687260331a72403d909f105e69bcf0d32e1bd2493ffc6d9206d11bcd6770739', - '767c955a76412c89af688e90a1c70f556cfd6b6025dbea10416d7eb6831f8c40', - '62dd0be9b9f50a163ea0f8e75c053b1eca57ea55c8688f647c6881f2c8357b95', - 'be6c4da2bbb9ba59b6f3939768374246c3c005993fa98f020d1dedbed48a81d5', - '37d51006c512eaab626421f1ec8c92013fc5f82ae98ee533eb4619b8deb4d06c', - '8d722f81a9c113c0791df136a2966db26c950a971db46b4199f4ea54b78bfb9f', - '9acfab7e43c8d880d06b262a94deeee4b4659989c3d0caf19baf6405e41ab7df', - 'f1c1b50ae5a20dd8030ec9f6bc24823dd367b5255759b4e71b61fce9f7375d73', - '4200f5043ac8590ebb527d209ed1503029fbcbd41ca1b506ec27f15ade7dac69', - '0c2cd63df7806fa399ede809116b575bf87989f06518f9808c860503178baf66', - '15f0ba00a3ac7af3ac884c072b1011a077bd77c097f40164b2f8598abd83860c', - 'a71272aeaaa3cfe8727f7fb39f0fb3d1e5426e9060b06ee6f13e9a3c5833cd43', - '1793927a0614549789adce2f8f34f7f0b66d0f3ae3a3b84d21ec15dbba4fadc7', - 'b9bea7860a962ea3611dab97ab6da3e21c1068b97d55575ed0e11279c11c8932', - 'a22dba681e97376e2d397d728aae3a9b6296b9fdba60bc2e11f647f2c675fb37', - '41c923866ab4cad6b7ad578081582e020797a6cbdf4fff78ce8396b38937d7f5', - '327a3d761abadea034eb998406275cb1a4776efdae2fdf6d0168ea1c4f5567d0', - 'e3b6a2db2ed7ce48842f7ac53241c7b71d54144bfb40c11f3f1d0b42f5eea12d', - 'b6191a50d0c3977f7da99bcdaac86a227daeb9679ec70ba3b0c9d92271c170d3', - '960adf0063e96356750c2965dd0a0867da0b9cbd6e77714aeafb2349ab393da3', - 'c0a6f4dc63a24bfdcf54ef2a6a082a0a72de35803e2ff5ff527ae5d87206dfd5', - 'e4c73430d7a5b50925df43370a0d216e9a79b9d6db8373a0c69eb1cc31c7c52a', - '0f4e9cdd264b025550d170806340214fe94434c9b02f697ec710fc5feafb5e38', - '35ae5bddd8f7ae635cffba5682a8f00b95f48462c7108ee9a0e5292b074aafb2', - 'eaa962c4fa4a6bafebe415196d351ccd888d4f53f3fa8ae6d7c466a94e6042bb', - 'e28393773da845a679f2080cc7fb44a3b7a1c3792cb7eb7729fdcb6a8d99aea7', - '2d47437de17951215a12f3c58e51c729a58026ef1fcc0a5fb3d9dc012f600d19', - 'b478b812250df878635c2aa7ec7d155eaa625ee82916e2cd294361886cd1fbd4', - 'a4310d50af18a6447190372a86afaf8b951ffb431d837f1e5688b45971ed1557', - '4b03f45807ad70f21bfc2cae71c9fde4604c064cf5ffb686bae5dbaad7fdd34c', - '5edb7ac43b82a06a8761e8d7be4979ebf2611f7dd79bf91c1c6b566a219ed766', - '2399561127a57125de8cefea610ddf2fa078b5c8067f4e828290bfb860e84b3c', - '69ddd7ea90bb57c93e135dc85ea6fcd5480b603239bdc454fc758b2a26cf7f79', - '6c61dac3a2def031506be036d2a6fe401994fbd13df9c8d466599274c446ec98', - '668c83947da63b724bece1743c31a0e6aed0db8ec5b31be377bb784f91b6716f', - 'ecc3e9c3407503bee091aa952f41348ff88baa863b2264befac807901574e939', - 'f9e67d336c51002ac054c632022d66dda2e7e3fff10ad061ed31d8bbb410cfb2', - 'bf0feefb9e3a581ad5f9e9db7589985743d261085c4d314f6f5d7259aa421612', - '03950fb49a531f3e1991942398dfa9e0ea32d7ba1cdd9bc85db57ed9400b434a', - '3c5f81fea5fab82c64bfa2eaecafcde8e077fc8620a7cae537163df36edbf378', - 'cbb522d7b7f127ad6a0113865bdf1cd4102e7d0759af635a7cf4720dc963c53b', - '04048028bf1f2864d48f9ad4d83294366a828856553f3b14303f90147f5d40ef', - '2530cc8e98321502bad96f9b1fba1b099e2d299e0f4548bb914f363bc0d4531f', - '063e4afac491dfd332f3089b8542e94617d893d7fe944e10a7937ee29d9693c0', - '136335439334a7698016a0d324de72284e079d7b5220bb8fbd747816eebebaca', - '45140b3247eb9cc8c5b4f0d7b53091f73292089e6e5a63e2749dd3aca9198eda', - '2ce1cb0bf9d2f9e102993fbe215152c3b2dd0cabde1c68e5319b839154dbb7f5', - '568d6905a2c88708a4b3025190edcfedb1974a606a13c6e5290fcb2ae63edab5', - '0376ab1d54c5f9803ce4b2e201a0ee7eef7b57b636e8a93c9b8d4860c96f5fa7', - '0a81ec5a929777f145904af38d5d509f66b5e2c58fcdb531058b0e17f3f0b41b', - '70a73f7f376b60074248904534b11482d5bf0e698ecc498df52577ebf2e93b9a', - 'bd71fdf6da97e4cf62d1647add2581b07d79adf8397eb4ecba9c5e8488821423', - '5c58468d55f58e497e743982d2b50010b6d165374acf83a7d4a32db768c4408e', - 'fcbfe2886206f72b27593c8b070297e12d769ed10ed7930705a8098effc14d17', - '8c4edfd04348f322969e7e29a4cd4dca004655061c16e1b076422ef342ad630e', - 'bfd88fe1101c41ae3e801bf8be56350ee9bad1a6b9bd515edc5c6d5b8711ac44', - '513b2cecb810d4cde5dd85391adfc6c2dd60d87bb736d2b521484aa47a0ebef6', - '88497f01602f3154246ae28c4d5aef10f1d87ebb76626f4ae0b7f95ba7968799', - 'bc104f15a48be709dca542a7e1d4b9df6f054527e802eaa92d595444258afe71', - '55926084ec963a64b96e2abe01ce0ba86a64fbfebcc7aab5afc155b37fd76066', - 'c1b48299aba5208fe9630ace55ca68a03eda5a519c8802a0d3a673be8f8e557d', - 'e17890ee09a3fbf4f48b9c414a17d637b7a50647e9bc752322727fcc1742a911', - 'c7ba6567de93a798ae1faa791e712d378fae1f93c4397fea441bb7cbe6fd5995', - '9a114025197c5bb95d94e63d55cd43790847b646b23cdf11ada4a00eff15fb48', - 'edf7ebbca27a2a384d387b7d4010c666e2edb4843e4c29b4ae1d5b9332e6b24d', - 'fd73dad31c644ff1b43bef0ccdda96710b9cd9875eca7e31707af3e96d522bbd', - '3e84ba4342908516e77573c0992f0979ca084e4685681ff195ccba8a229b8a76', - '978cd966f2faa07ba7aa9500d9c02e9d77f2cdada6ad6ba74af4b91c66593c50', - '49e7a442acf0ea6287050054b52564b650e4f49e42e348d6aa38e039e957b1c1', - 'eec5496b988ce98625b934092eec2908bed0b0f316c2d4730c84eaf1f3d34881', - '3cfc3c14d1f684ff17e38c43ca440c00b967ec933e8bfe064ca1d72c90f2adb0', - '1c01c6f4dbb2fefc22558b2bca32563f49844acfc32b7be4b0ff599f9e8c7af7', - 'f09b122c7114f4a09bd4ea4f4a99d558b46e4c25cd81140d29c05613914c3841', - 'd95fea3ca4eedce74cd76e75fc6d1ff62c441f0fa8bc77f034b19e5db258015d', - 'f96f23f4c3e79c077a46988d5af5900676a0f039cb645dd17549b216c82440ce', - 'e23d4a036d7b70e9f595b1422079d2b91edfbb1fb651a0633eaa8a9dc5f80703', - '9a6ec012e1a7da9dbe34194d478ad7c0db1822fb071df12981496ed104384113', - '59769007f7685d0fcd50872f9f95d5755a5b2b457d81f3692b610a98672f0e1b', - 'dd6936fe21f8f077c123a1a521c12224f72255b73e03a7260693e8a24b0fa389', - 'b0bfd52bb0d7d9bd92bf5d4dc13da255c02c542f378365ea893911f55e55f23c', - '91e2f5788d5810eba7ba58737de1548a8ecacd014598bc0b143e041b17052552', - 'f356bea244b7a91eb35d53ca9ad7864ace018e2d35d5f8f96ddf68a6f41aa474', - '8a866fd1b276b57e578e921c65828a2bed58e9f2f288054134b7f1f4bfc9cc74', - '8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840', - '88ef81de202eb018452e43f864725cea5fbd1fc2d9d205730709c5d8b8690f46', - '7d05ebb682339f8c9451ee094eebfefa7953a114edb2f44949452fab7d2fc185', - '7e37cb8b4c47090cab36551ba6f45db840680fba166a952db100717f43053fc2', - 'cb3ccbb76031e5e0138f8dd39a23f9de47ffc35e43c1144cea27d46a5ab1cb5f', - '31ad6648f8104138c738f39ea4320133393e3a18cc02296ef97c2ac9ef6731d0', - '552f7bdcf1a7af9e6ce672017f4f12abf77240c78e761ac203d1d9d20ac89988', - '4b22d5a6aec99f3cdb79aa5ec06838479cd5ecba7164f7f22dc1d65f63d85708', - 'd6f034bd94aa233f0297eca4245b283973e447aa590f310c77f48fdf83112254', - '52f0e1c4e58ec629291b60317f074671b85d7ea80d5b07273463534b32b40234', - 'e793c9b02fd8aa13e21c31228accb08119643b749c898964b1746d46c3d4cbd2', - '4ff460d54b9c86dabfbcfc5712e0400d2bed3fbc4d4fbdaa86e06adcd2a9ad7a', - 'bec94911c2955676db6c0a550986d76e3ba005667c442c9762b4fbb773de228c', - '179fbc148a3dd00fd24ea13458cc43bfa7f59c8182d783a513f6ebec100c8924', - '3c4fb0b95ab8b30032f432b86f535fe172c185d0fd39865837cf36187fa6f428', - '4d2491414cfe956746ec4cefa6cf6f72e28a1329432f9d8a907ac4cb5dadc15a', - '5d56499be4d2e08bcfcad08a3e38723d50503bde706948e42f55603019e528ae', - '30d0895a9a448a262091635522d1f52010b5867acae12c78ef958fd4f4389f2f', - '43df5774b03e7fef5fe40d931a7bedf1bb2e6b42738c4e6d3841103d3aa7f339', - '02ed0eb28c14da45165c566791700d6451d7fb56f0b2ab1d3b8eb070e56edff5', - '5cc3d78e4e1d5e45547a04e6873e64f90cf9536d1ccc2ef800f355c4c5fd70fd', - '49351b903444c185ccdc5c693d24d8555cb208d6a8141307699f4af063199d78', - '8de78655e1be7f7847800b93f694d21d368cc06e033e7fab04bb5eb99da6b700', - '2a99f5bc1174b73cbb1d620884e01c34e51ccb3978da125f0e33268883bf4158', - '6b9c08e86eb0f767cfad65cd98b62149e5494a67f5845e7bd1ed019f27b86bd6', - 'd487a56f83b07482e85e963394c1ecc2c9e51d0903ee946b02c301581ed99e16', - '8b45da1c06f791eb0cabf26be588f5fb23165c2e614bf885562d0dce50b29b02', - 'a1339d33281a0b56e557d3d32b1ce7f9367eb094bd5fa72a7e5004c8ded7cafe', - 'b676f2eddae8775cd36cb0f63cd1d4603961f49e6265ba013a2f0307b6d0b804' -]; diff --git a/lib/bip70/index.js b/lib/bip70/index.js deleted file mode 100644 index 64bd80f0..00000000 --- a/lib/bip70/index.js +++ /dev/null @@ -1,19 +0,0 @@ -/*! - * bip70/index.js - bip70 for bcoin - * Copyright (c) 2016-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -/** - * @module bip70 - */ - -exports.certs = require('./certs'); -exports.PaymentACK = require('./paymentack'); -exports.PaymentDetails = require('./paymentdetails'); -exports.Payment = require('./payment'); -exports.PaymentRequest = require('./paymentrequest'); -exports.pk = require('./pk'); -exports.x509 = require('./x509'); diff --git a/lib/bip70/payment.js b/lib/bip70/payment.js deleted file mode 100644 index d5ab654b..00000000 --- a/lib/bip70/payment.js +++ /dev/null @@ -1,179 +0,0 @@ -/*! - * payment.js - bip70 payment for bcoin - * Copyright (c) 2016-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const Output = require('../primitives/output'); -const TX = require('../primitives/tx'); -const Script = require('../script/script'); -const ProtoReader = require('../utils/protoreader'); -const ProtoWriter = require('../utils/protowriter'); -const PaymentDetails = require('./paymentdetails'); - -/** - * Represents a BIP70 payment. - * @alias module:bip70.Payment - * @constructor - * @param {Object?} options - * @property {Buffer} merchantData - * @property {TX[]} transactions - * @property {Output[]} refundTo - * @property {String|null} memo - */ - -function Payment(options) { - if (!(this instanceof Payment)) - return new Payment(options); - - this.merchantData = null; - this.transactions = []; - this.refundTo = []; - this.memo = null; - - if (options) - this.fromOptions(options); -} - -/** - * Inject properties from options. - * @private - * @param {Object} options - * @returns {Payment} - */ - -Payment.prototype.fromOptions = function fromOptions(options) { - if (options.merchantData) - this.setData(options.merchantData); - - if (options.transactions) { - assert(Array.isArray(options.transactions)); - for (const item of options.transactions) { - const tx = new TX(item); - this.transactions.push(tx); - } - } - - if (options.refundTo) { - assert(Array.isArray(options.refundTo)); - for (const item of options.refundTo) { - const output = new Output(item); - this.refundTo.push(output); - } - } - - if (options.memo != null) { - assert(typeof options.memo === 'string'); - this.memo = options.memo; - } - - return this; -}; - -/** - * Instantiate payment from options. - * @param {Object} options - * @returns {Payment} - */ - -Payment.fromOptions = function fromOptions(options) { - return new Payment().fromOptions(options); -}; - -/** - * Set payment details. - * @method - * @alias Payment#setData - * @param {Object} data - * @param {String?} enc - */ - -Payment.prototype.setData = PaymentDetails.prototype.setData; - -/** - * Get payment details. - * @method - * @alias Payment#getData - * @param {String?} enc - * @returns {String|Object|null} - */ - -Payment.prototype.getData = PaymentDetails.prototype.getData; - -/** - * Inject properties from serialized data. - * @private - * @param {Buffer} data - * @returns {Payment} - */ - -Payment.prototype.fromRaw = function fromRaw(data) { - const br = new ProtoReader(data); - - this.merchantData = br.readFieldBytes(1, true); - - while (br.nextTag() === 2) { - const tx = TX.fromRaw(br.readFieldBytes(2)); - this.transactions.push(tx); - } - - while (br.nextTag() === 3) { - const op = new ProtoReader(br.readFieldBytes(3)); - const output = new Output(); - output.value = op.readFieldU64(1, true); - output.script = Script.fromRaw(op.readFieldBytes(2, true)); - this.refundTo.push(output); - } - - this.memo = br.readFieldString(4, true); - - return this; -}; - -/** - * Instantiate payment from serialized data. - * @param {Buffer} data - * @returns {Payment} - */ - -Payment.fromRaw = function fromRaw(data, enc) { - if (typeof data === 'string') - data = Buffer.from(data, enc); - return new Payment().fromRaw(data); -}; - -/** - * Serialize the payment (protobuf). - * @returns {Buffer} - */ - -Payment.prototype.toRaw = function toRaw() { - const bw = new ProtoWriter(); - - if (this.merchantData) - bw.writeFieldBytes(1, this.merchantData); - - for (const tx of this.transactions) - bw.writeFieldBytes(2, tx.toRaw()); - - for (const output of this.refundTo) { - const op = new ProtoWriter(); - op.writeFieldU64(1, output.value); - op.writeFieldBytes(2, output.script.toRaw()); - bw.writeFieldBytes(3, op.render()); - } - - if (this.memo != null) - bw.writeFieldString(4, this.memo); - - return bw.render(); -}; - -/* - * Expose - */ - -module.exports = Payment; diff --git a/lib/bip70/paymentack.js b/lib/bip70/paymentack.js deleted file mode 100644 index b755ee84..00000000 --- a/lib/bip70/paymentack.js +++ /dev/null @@ -1,111 +0,0 @@ -/*! - * paymentack.js - bip70 paymentack for bcoin - * Copyright (c) 2016-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const ProtoReader = require('../utils/protoreader'); -const ProtoWriter = require('../utils/protowriter'); -const Payment = require('./payment'); - -/** - * Represents a BIP70 payment ack. - * @alias module:bip70.PaymentACK - * @constructor - * @param {Object?} options - * @property {Payment} payment - * @property {String|null} memo - */ - -function PaymentACK(options) { - if (!(this instanceof PaymentACK)) - return new PaymentACK(options); - - this.payment = new Payment(); - this.memo = null; - - if (options) - this.fromOptions(options); -} - -/** - * Inject properties from options. - * @private - * @param {Object} options - * @returns {PaymentACK} - */ - -PaymentACK.prototype.fromOptions = function fromOptions(options) { - if (options.payment) - this.payment.fromOptions(options.payment); - - if (options.memo != null) { - assert(typeof options.memo === 'string'); - this.memo = options.memo; - } - - return this; -}; - -/** - * Instantiate payment ack from options. - * @param {Object} options - * @returns {PaymentACK} - */ - -PaymentACK.fromOptions = function fromOptions(options) { - return new PaymentACK().fromOptions(options); -}; - -/** - * Inject properties from serialized data. - * @private - * @param {Buffer} data - * @returns {PaymentACK} - */ - -PaymentACK.prototype.fromRaw = function fromRaw(data) { - const br = new ProtoReader(data); - - this.payment.fromRaw(br.readFieldBytes(1)); - this.memo = br.readFieldString(2, true); - - return this; -}; - -/** - * Instantiate payment ack from serialized data. - * @param {Buffer} data - * @returns {PaymentACK} - */ - -PaymentACK.fromRaw = function fromRaw(data, enc) { - if (typeof data === 'string') - data = Buffer.from(data, enc); - return new PaymentACK().fromRaw(data); -}; - -/** - * Serialize the payment ack (protobuf). - * @returns {Buffer} - */ - -PaymentACK.prototype.toRaw = function toRaw() { - const bw = new ProtoWriter(); - - bw.writeFieldBytes(1, this.payment.toRaw()); - - if (this.memo != null) - bw.writeFieldString(2, this.memo); - - return bw.render(); -}; - -/* - * Expose - */ - -module.exports = PaymentACK; diff --git a/lib/bip70/paymentdetails.js b/lib/bip70/paymentdetails.js deleted file mode 100644 index 34142b3b..00000000 --- a/lib/bip70/paymentdetails.js +++ /dev/null @@ -1,242 +0,0 @@ -/*! - * paymentdetails.js - bip70 paymentdetails for bcoin - * Copyright (c) 2016-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const util = require('../utils/util'); -const Output = require('../primitives/output'); -const ProtoReader = require('../utils/protoreader'); -const ProtoWriter = require('../utils/protowriter'); - -/** - * Represents BIP70 payment details. - * @alias module:bip70.PaymentDetails - * @constructor - * @param {Object?} options - * @property {String|null} network - * @property {Output[]} outputs - * @property {Number} time - * @property {Number} expires - * @property {String|null} memo - * @property {String|null} paymentUrl - * @property {Buffer|null} merchantData - */ - -function PaymentDetails(options) { - if (!(this instanceof PaymentDetails)) - return new PaymentDetails(options); - - this.network = null; - this.outputs = []; - this.time = util.now(); - this.expires = -1; - this.memo = null; - this.paymentUrl = null; - this.merchantData = null; - - if (options) - this.fromOptions(options); -} - -/** - * Inject properties from options. - * @private - * @param {Object} options - * @returns {PaymentDetails} - */ - -PaymentDetails.prototype.fromOptions = function fromOptions(options) { - if (options.network != null) { - assert(typeof options.network === 'string'); - this.network = options.network; - } - - if (options.outputs) { - assert(Array.isArray(options.outputs)); - for (const item of options.outputs) { - const output = new Output(item); - this.outputs.push(output); - } - } - - if (options.time != null) { - assert(Number.isSafeInteger(options.time)); - this.time = options.time; - } - - if (options.expires != null) { - assert(Number.isSafeInteger(options.expires)); - this.expires = options.expires; - } - - if (options.memo != null) { - assert(typeof options.memo === 'string'); - this.memo = options.memo; - } - - if (options.paymentUrl != null) { - assert(typeof options.paymentUrl === 'string'); - this.paymentUrl = options.paymentUrl; - } - - if (options.merchantData) - this.setData(options.merchantData); - - return this; -}; - -/** - * Instantiate payment details from options. - * @param {Object} options - * @returns {PaymentDetails} - */ - -PaymentDetails.fromOptions = function fromOptions(options) { - return new PaymentDetails().fromOptions(options); -}; - -/** - * Test whether the payment is expired. - * @returns {Boolean} - */ - -PaymentDetails.prototype.isExpired = function isExpired() { - if (this.expires === -1) - return false; - return util.now() > this.expires; -}; - -/** - * Set payment details. - * @param {Object} data - * @param {String?} enc - */ - -PaymentDetails.prototype.setData = function setData(data, enc) { - if (data == null || Buffer.isBuffer(data)) { - this.merchantData = data; - return; - } - - if (typeof data !== 'string') { - assert(!enc || enc === 'json'); - this.merchantData = Buffer.from(JSON.stringify(data), 'utf8'); - return; - } - - this.merchantData = Buffer.from(data, enc); -}; - -/** - * Get payment details. - * @param {String?} enc - * @returns {String|Object|null} - */ - -PaymentDetails.prototype.getData = function getData(enc) { - let data = this.merchantData; - - if (!data) - return null; - - if (!enc) - return data; - - if (enc === 'json') { - data = data.toString('utf8'); - try { - data = JSON.parse(data); - } catch (e) { - return null; - } - return data; - } - - return data.toString(enc); -}; - -/** - * Inject properties from serialized data. - * @private - * @param {Buffer} data - * @returns {PaymentDetails} - */ - -PaymentDetails.prototype.fromRaw = function fromRaw(data) { - const br = new ProtoReader(data); - - this.network = br.readFieldString(1, true); - - while (br.nextTag() === 2) { - const op = new ProtoReader(br.readFieldBytes(2)); - const output = new Output(); - output.value = op.readFieldU64(1, true); - output.script.fromRaw(op.readFieldBytes(2, true)); - this.outputs.push(output); - } - - this.time = br.readFieldU64(3); - this.expires = br.readFieldU64(4, true); - this.memo = br.readFieldString(5, true); - this.paymentUrl = br.readFieldString(6, true); - this.merchantData = br.readFieldBytes(7, true); - - return this; -}; - -/** - * Instantiate payment details from serialized data. - * @param {Buffer} data - * @returns {PaymentDetails} - */ - -PaymentDetails.fromRaw = function fromRaw(data, enc) { - if (typeof data === 'string') - data = Buffer.from(data, enc); - return new PaymentDetails().fromRaw(data); -}; - -/** - * Serialize the payment details (protobuf). - * @returns {Buffer} - */ - -PaymentDetails.prototype.toRaw = function toRaw() { - const bw = new ProtoWriter(); - - if (this.network != null) - bw.writeFieldString(1, this.network); - - for (const output of this.outputs) { - const op = new ProtoWriter(); - op.writeFieldU64(1, output.value); - op.writeFieldBytes(2, output.script.toRaw()); - bw.writeFieldBytes(2, op.render()); - } - - bw.writeFieldU64(3, this.time); - - if (this.expires !== -1) - bw.writeFieldU64(4, this.expires); - - if (this.memo != null) - bw.writeFieldString(5, this.memo); - - if (this.paymentUrl != null) - bw.writeFieldString(6, this.paymentUrl); - - if (this.merchantData) - bw.writeFieldString(7, this.merchantData); - - return bw.render(); -}; - -/* - * Expose - */ - -module.exports = PaymentDetails; diff --git a/lib/bip70/paymentrequest.js b/lib/bip70/paymentrequest.js deleted file mode 100644 index b2927948..00000000 --- a/lib/bip70/paymentrequest.js +++ /dev/null @@ -1,350 +0,0 @@ -/*! - * paymentrequest.js - bip70 paymentrequest for bcoin - * Copyright (c) 2016-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const digest = require('bcrypto/lib/digest'); -const PEM = require('bcrypto/lib/utils/pem'); -const x509 = require('./x509'); -const ProtoReader = require('../utils/protoreader'); -const ProtoWriter = require('../utils/protowriter'); -const PaymentDetails = require('./paymentdetails'); - -/** - * Represents a BIP70 payment request. - * @alias module:bip70.PaymentRequest - * @constructor - * @param {Object?} options - * @property {Number} version - * @property {String|null} pkiType - * @property {Buffer|null} pkiData - * @property {PaymentDetails} paymentDetails - * @property {Buffer|null} signature - */ - -function PaymentRequest(options) { - if (!(this instanceof PaymentRequest)) - return new PaymentRequest(options); - - this.version = -1; - this.pkiType = null; - this.pkiData = null; - this.paymentDetails = new PaymentDetails(); - this.signature = null; - - if (options) - this.fromOptions(options); -} - -/** - * Inject properties from options. - * @private - * @param {Object} options - * @returns {PaymentRequest} - */ - -PaymentRequest.prototype.fromOptions = function fromOptions(options) { - if (options.version != null) { - assert((options.version | 0) === options.version); - this.version = options.version; - } - - if (options.pkiType != null) { - assert(typeof options.pkiType === 'string'); - this.pkiType = options.pkiType; - } - - if (options.pkiData) { - assert(Buffer.isBuffer(options.pkiData)); - this.pkiData = options.pkiData; - } - - if (options.paymentDetails) - this.paymentDetails.fromOptions(options.paymentDetails); - - if (options.signature) { - assert(Buffer.isBuffer(options.signature)); - this.signature = options.signature; - } - - if (options.chain) - this.setChain(options.chain); - - return this; -}; - -/** - * Instantiate payment request from options. - * @param {Object} options - * @returns {PaymentRequest} - */ - -PaymentRequest.fromOptions = function fromOptions(options) { - return new PaymentRequest().fromOptions(options); -}; - -/** - * Inject properties from serialized data. - * @private - * @param {Buffer} data - * @returns {PaymentRequest} - */ - -PaymentRequest.prototype.fromRaw = function fromRaw(data) { - const br = new ProtoReader(data); - - this.version = br.readFieldU32(1, true); - this.pkiType = br.readFieldString(2, true); - this.pkiData = br.readFieldBytes(3, true); - this.paymentDetails.fromRaw(br.readFieldBytes(4)); - this.signature = br.readFieldBytes(5, true); - - return this; -}; - -/** - * Instantiate payment request from serialized data. - * @param {Buffer} data - * @returns {PaymentRequest} - */ - -PaymentRequest.fromRaw = function fromRaw(data, enc) { - if (typeof data === 'string') - data = Buffer.from(data, enc); - return new PaymentRequest().fromRaw(data); -}; - -/** - * Serialize the payment request (protobuf). - * @returns {Buffer} - */ - -PaymentRequest.prototype.toRaw = function toRaw() { - const bw = new ProtoWriter(); - - if (this.version !== -1) - bw.writeFieldU32(1, this.version); - - if (this.pkiType != null) - bw.writeFieldString(2, this.pkiType); - - if (this.pkiData) - bw.writeFieldBytes(3, this.pkiData); - - bw.writeFieldBytes(4, this.paymentDetails.toRaw()); - - if (this.signature) - bw.writeFieldBytes(5, this.signature); - - return bw.render(); -}; - -/** - * Get payment request signature algorithm. - * @returns {Object|null} - */ - -PaymentRequest.prototype.getAlgorithm = function getAlgorithm() { - if (!this.pkiType) - throw new Error('No PKI type available.'); - - const parts = this.pkiType.split('+'); - - if (parts.length !== 2) - throw new Error('Could not parse PKI algorithm.'); - - if (parts[0] !== 'x509') - throw new Error(`Unknown PKI type: ${parts[0]}.`); - - if (parts[1] !== 'sha1' && parts[1] !== 'sha256') - throw new Error(`Unknown hash algorithm: ${parts[1]}.`); - - return new Algorithm(parts[0], parts[1]); -}; - -/** - * Serialize payment request for sighash. - * @returns {Buffer} - */ - -PaymentRequest.prototype.signatureData = function signatureData() { - const signature = this.signature; - - this.signature = Buffer.alloc(0); - - const data = this.toRaw(); - - this.signature = signature; - - return data; -}; - -/** - * Get signature hash. - * @returns {Hash} - */ - -PaymentRequest.prototype.signatureHash = function signatureHash() { - const alg = this.getAlgorithm(); - return digest.hash(alg.hash, this.signatureData()); -}; - -/** - * Set x509 certificate chain. - * @param {Buffer[]} chain - */ - -PaymentRequest.prototype.setChain = function setChain(chain) { - const bw = new ProtoWriter(); - - assert(Array.isArray(chain), 'Chain must be an array.'); - - for (let cert of chain) { - if (typeof cert === 'string') { - const pem = PEM.decode(cert); - assert(pem.type === 'certificate', 'Bad certificate PEM.'); - cert = pem.data; - } - assert(Buffer.isBuffer(cert), 'Certificates must be PEM or DER.'); - bw.writeFieldBytes(1, cert); - } - - this.pkiData = bw.render(); -}; - -/** - * Get x509 certificate chain. - * @returns {Buffer[]} - */ - -PaymentRequest.prototype.getChain = function getChain() { - const chain = []; - - if (!this.pkiData) - return chain; - - const br = new ProtoReader(this.pkiData); - - while (br.nextTag() === 1) - chain.push(br.readFieldBytes(1)); - - return chain; -}; - -/** - * Sign payment request (chain must be set). - * @param {Buffer} key - * @param {Buffer[]?} certs - */ - -PaymentRequest.prototype.sign = function sign(key, certs) { - if (certs) - this.setChain(certs); - - if (!this.pkiType) - this.pkiType = 'x509+sha256'; - - const alg = this.getAlgorithm(); - const msg = this.signatureData(); - const chain = this.getChain(); - - this.signature = x509.signSubject(alg.hash, msg, key, chain); -}; - -/** - * Verify payment request signature. - * @returns {Boolean} - */ - -PaymentRequest.prototype.verify = function verify() { - if (!this.pkiType || this.pkiType === 'none') - return false; - - if (!this.signature) - return false; - - let alg; - try { - alg = this.getAlgorithm(); - } catch (e) { - return false; - } - - const msg = this.signatureData(); - const sig = this.signature; - const chain = this.getChain(); - - try { - return x509.verifySubject(alg.hash, msg, sig, chain); - } catch (e) { - return false; - } -}; - -/** - * Verify x509 certificate chain. - * @returns {Boolean} - */ - -PaymentRequest.prototype.verifyChain = function verifyChain() { - if (!this.pkiType || this.pkiType === 'none') - return false; - - try { - return x509.verifyChain(this.getChain()); - } catch (e) { - return false; - } -}; - -/** - * Get root certificate authority. - * @returns {Object|null} - */ - -PaymentRequest.prototype.getCA = function getCA() { - if (!this.pkiType || this.pkiType === 'none') - throw new Error('No CA found (pkiType).'); - - const chain = this.getChain(); - - if (chain.length === 0) - throw new Error('No CA found (chain).'); - - const root = x509.parse(chain[chain.length - 1]); - - return new CA(root); -}; - -/** - * Algorithm - * @constructor - * @ignore - */ - -function Algorithm(key, hash) { - this.key = key; - this.hash = hash; -} - -/** - * CA - * @constructor - * @ignore - */ - -function CA(root) { - this.name = x509.getCAName(root); - this.trusted = x509.isTrusted(root); - this.cert = root; -} - -/* - * Expose - */ - -module.exports = PaymentRequest; diff --git a/lib/bip70/pk.js b/lib/bip70/pk.js deleted file mode 100644 index 9c103477..00000000 --- a/lib/bip70/pk.js +++ /dev/null @@ -1,56 +0,0 @@ -/*! - * pk.js - public key algorithms for bcoin - * Copyright (c) 2016-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -/** - * @module bip70/pk - */ - -const digest = require('bcrypto/lib/digest'); -const rsa = require('bcrypto/lib/rsa'); -const ecdsa = require('bcrypto/lib/ecdsa'); - -/** - * Verify signature with public key. - * @param {String} hash - Hash algorithm. - * @param {Buffer} msg - * @param {Buffer} sig - * @param {Object} key - * @returns {Boolean} - */ - -exports.verify = function verify(hash, msg, sig, key) { - hash = digest.get(hash); - switch (key.alg) { - case 'rsa': - return rsa.verify(hash, msg, sig, key.data); - case 'ecdsa': - return ecdsa.verify(key.curve, hash, msg, sig, key.data); - default: - throw new Error('Unsupported algorithm.'); - } -}; - -/** - * Sign message with private key. - * @param {String} hash - Hash algorithm. - * @param {Buffer} msg - * @param {Object} key - * @returns {Buffer} - */ - -exports.sign = function sign(hash, msg, key) { - hash = digest.get(hash); - switch (key.alg) { - case 'rsa': - return rsa.sign(hash, msg, key.data); - case 'ecdsa': - return ecdsa.sign(key.curve, hash, msg, key.data); - default: - throw new Error('Unsupported algorithm.'); - } -}; diff --git a/lib/bip70/x509.js b/lib/bip70/x509.js deleted file mode 100644 index 2d1de4f6..00000000 --- a/lib/bip70/x509.js +++ /dev/null @@ -1,472 +0,0 @@ -/*! - * x509.js - x509 handling for bcoin - * Copyright (c) 2016-2017, Christopher Jeffrey (MIT License). - * https://github.com/bcoin-org/bcoin - */ - -'use strict'; - -const assert = require('assert'); -const ASN1 = require('bcrypto/lib/utils/asn1'); -const PEM = require('bcrypto/lib/utils/pem'); -const util = require('../utils/util'); -const digest = require('bcrypto/lib/digest'); -const pk = require('./pk'); -const certs = require('./certs'); - -/** - * @exports bip70/x509 - */ - -const x509 = exports; - -/** - * Map of trusted root certs. - * @type {Set} - */ - -x509.trusted = new Set(); - -/** - * Whether to allow untrusted root - * certs during verification. - * @type {Boolean} - */ - -x509.allowUntrusted = false; - -/** - * OID to algorithm map for PKI. - * @const {Object} - * @see https://www.ietf.org/rfc/rfc2459.txt - * @see https://tools.ietf.org/html/rfc3279 - * @see http://oid-info.com/get/1.2.840.10040.4 - * @see http://oid-info.com/get/1.2.840.113549.1.1 - * @see http://oid-info.com/get/1.2.840.10045.4.3 - */ - -x509.oid = { - '1.2.840.10040.4.1' : { key: 'dsa', hash: null }, - '1.2.840.10040.4.2' : { key: 'dsa', hash: null }, - '1.2.840.10040.4.3' : { key: 'dsa', hash: 'sha1' }, - '1.2.840.113549.1.1.1' : { key: 'rsa', hash: null }, - '1.2.840.113549.1.1.2' : { key: 'rsa', hash: 'md2' }, - '1.2.840.113549.1.1.3' : { key: 'rsa', hash: 'md4' }, - '1.2.840.113549.1.1.4' : { key: 'rsa', hash: 'md5' }, - '1.2.840.113549.1.1.5' : { key: 'rsa', hash: 'sha1' }, - '1.2.840.113549.1.1.11': { key: 'rsa', hash: 'sha256' }, - '1.2.840.113549.1.1.12': { key: 'rsa', hash: 'sha384' }, - '1.2.840.113549.1.1.13': { key: 'rsa', hash: 'sha512' }, - '1.2.840.113549.1.1.14': { key: 'rsa', hash: 'sha224' }, - '1.2.840.10045.2.1' : { key: 'ecdsa', hash: null }, - '1.2.840.10045.4.1' : { key: 'ecdsa', hash: 'sha1' }, - '1.2.840.10045.4.3.1' : { key: 'ecdsa', hash: 'sha224' }, - '1.2.840.10045.4.3.2' : { key: 'ecdsa', hash: 'sha256' }, - '1.2.840.10045.4.3.3' : { key: 'ecdsa', hash: 'sha384' }, - '1.2.840.10045.4.3.4' : { key: 'ecdsa', hash: 'sha512' } -}; - -/** - * OID to curve name map for ECDSA. - * @type {Object} - */ - -x509.curves = { - '1.3.132.0.33': 'p224', - '1.2.840.10045.3.1.7': 'p256', - '1.3.132.0.34': 'p384', - '1.3.132.0.35': 'p521' -}; - -/** - * Retrieve cert value by OID. - * @param {Object} cert - * @param {String} oid - * @returns {String} - */ - -x509.getSubjectOID = function getSubjectOID(cert, oid) { - const subject = cert.tbs.subject; - - for (const entry of subject) { - if (entry.type === oid) - return entry.value; - } - - return null; -}; - -/** - * Try to retrieve CA name by checking - * for a few different OIDs. - * @param {Object} cert - * @returns {String} - */ - -x509.getCAName = function getCAName(cert) { - // This seems to work the best in practice - // for getting a human-readable and - // descriptive name for the CA. - // See: - // http://oid-info.com/get/2.5.4 - // Precedence: - // (3) commonName - // (11) organizationUnitName - // (10) organizationName - return x509.getSubjectOID(cert, '2.5.4.3') - || x509.getSubjectOID(cert, '2.5.4.11') - || x509.getSubjectOID(cert, '2.5.4.10') - || 'Unknown'; -}; - -/** - * Test whether a cert is trusted by hashing - * and looking it up in the trusted map. - * @param {Object} cert - * @returns {Buffer} - */ - -x509.isTrusted = function isTrusted(cert) { - const fingerprint = digest.sha256(cert.raw); - const hash = fingerprint.toString('hex'); - return x509.trusted.has(hash); -}; - -/** - * Add root certificates to the trusted map. - * @param {Buffer[]} certs - */ - -x509.setTrust = function setTrust(certs) { - assert(Array.isArray(certs), 'Certs must be an array.'); - - for (let cert of certs) { - if (typeof cert === 'string') { - const pem = PEM.decode(cert); - assert(pem.type === 'certificate', 'Must add certificates to trust.'); - cert = pem.data; - } - - assert(Buffer.isBuffer(cert), 'Certificates must be PEM or DER.'); - - cert = x509.parse(cert); - - const hash = digest.sha256(cert.raw); - const fingerprint = hash.toString('hex'); - - x509.trusted.add(fingerprint); - } -}; - -/** - * Add root certificate fingerprints to the trusted map. - * @param {Hash[]} hashes - */ - -x509.setFingerprints = function setFingerprints(hashes) { - assert(Array.isArray(hashes), 'Certs must be an array.'); - - for (let hash of hashes) { - if (typeof hash === 'string') - hash = Buffer.from(hash, 'hex'); - - assert(Buffer.isBuffer(hash), 'Fingerprint must be a buffer.'); - assert(hash.length === 32, 'Fingerprint must be a sha256 hash.'); - - hash = hash.toString('hex'); - x509.trusted.add(hash); - } -}; - -/** - * Retrieve key algorithm from cert. - * @param {Object} cert - * @returns {Object} - */ - -x509.getKeyAlgorithm = function getKeyAlgorithm(cert) { - const oid = cert.tbs.pubkey.alg.alg; - const alg = x509.oid[oid]; - - if (!alg) - throw new Error(`Unknown key algorithm: ${oid}.`); - - return alg; -}; - -/** - * Retrieve signature algorithm from cert. - * @param {Object} cert - * @returns {Object} - */ - -x509.getSigAlgorithm = function getSigAlgorithm(cert) { - const oid = cert.sigAlg.alg; - const alg = x509.oid[oid]; - - if (!alg || !alg.hash) - throw new Error(`Unknown signature algorithm: ${oid}.`); - - return alg; -}; - -/** - * Lookup curve based on key parameters. - * @param {Buffer} params - * @returns {Object} - */ - -x509.getCurve = function getCurve(params) { - let oid; - - try { - oid = ASN1.parseOID(params); - } catch (e) { - throw new Error('Could not parse curve OID.'); - } - - const curve = x509.curves[oid]; - - if (!curve) - throw new Error(`Unknown ECDSA curve: ${oid}.`); - - return curve; -}; - -/** - * Parse a DER formatted cert. - * @param {Buffer} der - * @returns {Object|null} - */ - -x509.parse = function parse(der) { - try { - return ASN1.parseCert(der); - } catch (e) { - throw new Error('Could not parse DER certificate.'); - } -}; - -/** - * Get cert public key. - * @param {Object} cert - * @returns {Object|null} - */ - -x509.getPublicKey = function getPublicKey(cert) { - const alg = x509.getKeyAlgorithm(cert); - const key = cert.tbs.pubkey.pubkey; - const params = cert.tbs.pubkey.alg.params; - let curve = null; - - if (alg.key === 'ecdsa') { - if (!params) - throw new Error('No curve selected for ECDSA (cert).'); - - curve = x509.getCurve(params); - } - - return { - alg: alg.key, - data: key, - params: params, - curve: curve - }; -}; - -/** - * Verify cert expiration time. - * @param {Object} cert - * @returns {Boolean} - */ - -x509.verifyTime = function verifyTime(cert) { - const time = cert.tbs.validity; - const now = util.now(); - return now > time.notBefore && now < time.notAfter; -}; - -/** - * Get signature key info from cert chain. - * @param {Buffer} key - * @param {Buffer[]} chain - * @returns {Object} - */ - -x509.getSigningKey = function getSigningKey(key, chain) { - assert(chain.length !== 0, 'No chain available.'); - - if (typeof key === 'string') { - let curve = null; - - key = PEM.decode(key); - - if (key.alg === 'ecdsa') { - if (!key.params) - throw new Error('No curve selected for ECDSA (key).'); - - curve = x509.getCurve(key.params); - } - - key = { - alg: key.alg, - data: key.data, - params: key.params, - curve: curve - }; - } else { - const cert = x509.parse(chain[0]); - const pub = x509.getPublicKey(cert); - - key = { - alg: pub.alg, - data: key, - params: pub.params, - curve: pub.curve - }; - } - - return key; -}; - -/** - * Sign a hash with the chain signing key. - * @param {String} hash - * @param {Buffer} msg - * @param {Buffer} key - * @param {Buffer[]} chain - * @returns {Buffer} - */ - -x509.signSubject = function signSubject(hash, msg, key, chain) { - const priv = x509.getSigningKey(key, chain); - return pk.sign(hash, msg, priv); -}; - -/** - * Get chain verification key. - * @param {Buffer[]} chain - * @returns {Object|null} - */ - -x509.getVerifyKey = function getVerifyKey(chain) { - if (chain.length === 0) - throw new Error('No verify key available (cert chain).'); - - const cert = x509.parse(chain[0]); - - return x509.getPublicKey(cert); -}; - -/** - * Verify a sighash against chain verification key. - * @param {String} hash - * @param {Buffer} msg - * @param {Buffer} sig - * @param {Buffer[]} chain - * @returns {Boolean} - */ - -x509.verifySubject = function verifySubject(hash, msg, sig, chain) { - const key = x509.getVerifyKey(chain); - return pk.verify(hash, msg, sig, key); -}; - -/** - * Parse certificate chain. - * @param {Buffer[]} chain - * @returns {Object[]} - */ - -x509.parseChain = function parseChain(chain) { - const certs = []; - - for (const item of chain) { - const cert = x509.parse(item); - certs.push(cert); - } - - return certs; -}; - -/** - * Verify all expiration times in a certificate chain. - * @param {Object[]} chain - * @returns {Boolean} - */ - -x509.verifyTimes = function verifyTimes(chain) { - for (const cert of chain) { - if (!x509.verifyTime(cert)) - return false; - } - - return true; -}; - -/** - * Verify that at least one parent - * cert in the chain is trusted. - * @param {Object[]} chain - * @returns {Boolean} - */ - -x509.verifyTrust = function verifyTrust(chain) { - // If trust hasn't been - // setup, just return. - if (x509.allowUntrusted) - return true; - - // Make sure we trust one - // of the certs in the chain. - for (const cert of chain) { - // If any certificate in the chain - // is trusted, assume we also trust - // the parent. - if (x509.isTrusted(cert)) - return true; - } - - // No trusted certs present. - return false; -}; - -/** - * Verify certificate chain. - * @param {Object[]} certs - */ - -x509.verifyChain = function verifyChain(certs) { - const chain = x509.parseChain(certs); - - // Parse certificates and - // check validity time. - if (!x509.verifyTimes(chain)) - throw new Error('Invalid certificate times.'); - - // Verify signatures. - for (let i = 1; i < chain.length; i++) { - const child = chain[i - 1]; - const parent = chain[i]; - const alg = x509.getSigAlgorithm(child); - const key = x509.getPublicKey(parent); - const msg = child.tbs.raw; - const sig = child.sig; - - if (!pk.verify(alg.hash, msg, sig, key)) - throw new Error(`${alg.key} verification failed for chain.`); - } - - // Make sure we trust one - // of the certs in the chain. - if (!x509.verifyTrust(chain)) - throw new Error('Certificate chain is untrusted.'); - - return true; -}; - -/* - * Load trusted certs. - */ - -x509.setFingerprints(certs); diff --git a/lib/blockchain/chain.js b/lib/blockchain/chain.js index a52be566..9621d571 100644 --- a/lib/blockchain/chain.js +++ b/lib/blockchain/chain.js @@ -23,6 +23,7 @@ const CoinView = require('../coins/coinview'); const Script = require('../script/script'); const {VerifyError} = require('../protocol/errors'); const co = require('../utils/co'); +const encoding = require('../utils/encoding'); const thresholdStates = common.thresholdStates; /** @@ -1409,7 +1410,7 @@ Chain.prototype._add = async function _add(block, flags, id) { */ Chain.prototype.connect = async function connect(prev, block, flags) { - const start = util.hrtime(); + const start = util.bench(); // Sanity check. assert(block.prevBlock === prev.hash); @@ -1537,7 +1538,7 @@ Chain.prototype.logStatus = function logStatus(start, block, entry) { // Report memory for debugging. this.logger.memory(); - const elapsed = util.hrtime(start); + const elapsed = util.bench(start); this.logger.info( 'Block %s (%d) added to chain (size=%d txs=%d time=%d).', @@ -1573,7 +1574,7 @@ Chain.prototype.verifyCheckpoint = function verifyCheckpoint(prev, hash) { if (hash === checkpoint) { this.logger.debug('Hit checkpoint block %s (%d).', - util.revHex(hash), height); + encoding.revHex(hash), height); this.emit('checkpoint', hash, height); return true; } @@ -1585,8 +1586,8 @@ Chain.prototype.verifyCheckpoint = function verifyCheckpoint(prev, hash) { this.logger.warning( 'Checkpoint mismatch at height %d: expected=%s received=%s', height, - util.revHex(checkpoint), - util.revHex(hash) + encoding.revHex(checkpoint), + encoding.revHex(hash) ); this.purgeOrphans(); diff --git a/lib/blockchain/chaindb.js b/lib/blockchain/chaindb.js index d3aece8f..a6113cd5 100644 --- a/lib/blockchain/chaindb.js +++ b/lib/blockchain/chaindb.js @@ -9,7 +9,6 @@ const assert = require('assert'); const BDB = require('bdb'); -const util = require('../utils/util'); const BufferReader = require('../utils/reader'); const StaticWriter = require('../utils/staticwriter'); const Amount = require('../btc/amount'); @@ -25,8 +24,8 @@ const Address = require('../primitives/address'); const ChainEntry = require('./chainentry'); const TXMeta = require('../primitives/txmeta'); const CoinEntry = require('../coins/coinentry'); -const U8 = encoding.U8; -const U32 = encoding.U32; +const u8 = encoding.u8; +const u32 = encoding.u32; /** * The database backend for the {@link Chain} object. @@ -1291,7 +1290,7 @@ ChainDB.prototype.scan = async function scan(start, filter, iter) { if (typeof start === 'number') this.logger.info('Scanning from height %d.', start); else - this.logger.info('Scanning from block %s.', util.revHex(start)); + this.logger.info('Scanning from block %s.', encoding.revHex(start)); let entry = await this.getEntry(start); @@ -1398,7 +1397,7 @@ ChainDB.prototype._save = async function _save(entry, block, view) { const hash = block.hash(); // Hash->height index. - this.put(layout.h(hash), U32(entry.height)); + this.put(layout.h(hash), u32(entry.height)); // Entry data. this.put(layout.e(hash), entry.toRaw()); @@ -2135,7 +2134,7 @@ function ChainState() { } ChainState.prototype.rhash = function rhash() { - return util.revHex(this.tip); + return encoding.revHex(this.tip); }; ChainState.prototype.clone = function clone() { @@ -2272,7 +2271,7 @@ function CacheUpdate(bit, hash, state) { } CacheUpdate.prototype.toRaw = function toRaw() { - return U8(this.state); + return u8(this.state); }; /* diff --git a/lib/blockchain/chainentry.js b/lib/blockchain/chainentry.js index 0afd9a68..02b4667e 100644 --- a/lib/blockchain/chainentry.js +++ b/lib/blockchain/chainentry.js @@ -10,7 +10,6 @@ const assert = require('assert'); const BN = require('bcrypto/lib/bn'); const consensus = require('../protocol/consensus'); -const util = require('../utils/util'); const digest = require('bcrypto/lib/digest'); const encoding = require('../utils/encoding'); const BufferReader = require('../utils/reader'); @@ -180,7 +179,7 @@ ChainEntry.prototype.hasBit = function hasBit(bit) { */ ChainEntry.prototype.rhash = function rhash() { - return util.revHex(this.hash); + return encoding.revHex(this.hash); }; /** @@ -277,10 +276,10 @@ ChainEntry.fromRaw = function fromRaw(data) { ChainEntry.prototype.toJSON = function toJSON() { return { - hash: util.revHex(this.hash), + hash: encoding.revHex(this.hash), version: this.version, - prevBlock: util.revHex(this.prevBlock), - merkleRoot: util.revHex(this.merkleRoot), + prevBlock: encoding.revHex(this.prevBlock), + merkleRoot: encoding.revHex(this.merkleRoot), time: this.time, bits: this.bits, nonce: this.nonce, @@ -306,10 +305,10 @@ ChainEntry.prototype.fromJSON = function fromJSON(json) { assert((json.nonce >>> 0) === json.nonce); assert(typeof json.chainwork === 'string'); - this.hash = util.revHex(json.hash); + this.hash = encoding.revHex(json.hash); this.version = json.version; - this.prevBlock = util.revHex(json.prevBlock); - this.merkleRoot = util.revHex(json.merkleRoot); + this.prevBlock = encoding.revHex(json.prevBlock); + this.merkleRoot = encoding.revHex(json.merkleRoot); this.time = json.time; this.bits = json.bits; this.nonce = json.nonce; diff --git a/lib/hd/udata.json b/lib/hd/udata.json new file mode 100644 index 00000000..5bc5fbb1 --- /dev/null +++ b/lib/hd/udata.json @@ -0,0 +1 @@ +{"0":{"60":[null,null,{"824":8814}],"61":[null,null,{"824":8800}],"62":[null,null,{"824":8815}],"65":[null,null,{"768":192,"769":193,"770":194,"771":195,"772":256,"774":258,"775":550,"776":196,"777":7842,"778":197,"780":461,"783":512,"785":514,"803":7840,"805":7680,"808":260}],"66":[null,null,{"775":7682,"803":7684,"817":7686}],"67":[null,null,{"769":262,"770":264,"775":266,"780":268,"807":199}],"68":[null,null,{"775":7690,"780":270,"803":7692,"807":7696,"813":7698,"817":7694}],"69":[null,null,{"768":200,"769":201,"770":202,"771":7868,"772":274,"774":276,"775":278,"776":203,"777":7866,"780":282,"783":516,"785":518,"803":7864,"807":552,"808":280,"813":7704,"816":7706}],"70":[null,null,{"775":7710}],"71":[null,null,{"769":500,"770":284,"772":7712,"774":286,"775":288,"780":486,"807":290}],"72":[null,null,{"770":292,"775":7714,"776":7718,"780":542,"803":7716,"807":7720,"814":7722}],"73":[null,null,{"768":204,"769":205,"770":206,"771":296,"772":298,"774":300,"775":304,"776":207,"777":7880,"780":463,"783":520,"785":522,"803":7882,"808":302,"816":7724}],"74":[null,null,{"770":308}],"75":[null,null,{"769":7728,"780":488,"803":7730,"807":310,"817":7732}],"76":[null,null,{"769":313,"780":317,"803":7734,"807":315,"813":7740,"817":7738}],"77":[null,null,{"769":7742,"775":7744,"803":7746}],"78":[null,null,{"768":504,"769":323,"771":209,"775":7748,"780":327,"803":7750,"807":325,"813":7754,"817":7752}],"79":[null,null,{"768":210,"769":211,"770":212,"771":213,"772":332,"774":334,"775":558,"776":214,"777":7886,"779":336,"780":465,"783":524,"785":526,"795":416,"803":7884,"808":490}],"80":[null,null,{"769":7764,"775":7766}],"82":[null,null,{"769":340,"775":7768,"780":344,"783":528,"785":530,"803":7770,"807":342,"817":7774}],"83":[null,null,{"769":346,"770":348,"775":7776,"780":352,"803":7778,"806":536,"807":350}],"84":[null,null,{"775":7786,"780":356,"803":7788,"806":538,"807":354,"813":7792,"817":7790}],"85":[null,null,{"768":217,"769":218,"770":219,"771":360,"772":362,"774":364,"776":220,"777":7910,"778":366,"779":368,"780":467,"783":532,"785":534,"795":431,"803":7908,"804":7794,"808":370,"813":7798,"816":7796}],"86":[null,null,{"771":7804,"803":7806}],"87":[null,null,{"768":7808,"769":7810,"770":372,"775":7814,"776":7812,"803":7816}],"88":[null,null,{"775":7818,"776":7820}],"89":[null,null,{"768":7922,"769":221,"770":374,"771":7928,"772":562,"775":7822,"776":376,"777":7926,"803":7924}],"90":[null,null,{"769":377,"770":7824,"775":379,"780":381,"803":7826,"817":7828}],"97":[null,null,{"768":224,"769":225,"770":226,"771":227,"772":257,"774":259,"775":551,"776":228,"777":7843,"778":229,"780":462,"783":513,"785":515,"803":7841,"805":7681,"808":261}],"98":[null,null,{"775":7683,"803":7685,"817":7687}],"99":[null,null,{"769":263,"770":265,"775":267,"780":269,"807":231}],"100":[null,null,{"775":7691,"780":271,"803":7693,"807":7697,"813":7699,"817":7695}],"101":[null,null,{"768":232,"769":233,"770":234,"771":7869,"772":275,"774":277,"775":279,"776":235,"777":7867,"780":283,"783":517,"785":519,"803":7865,"807":553,"808":281,"813":7705,"816":7707}],"102":[null,null,{"775":7711}],"103":[null,null,{"769":501,"770":285,"772":7713,"774":287,"775":289,"780":487,"807":291}],"104":[null,null,{"770":293,"775":7715,"776":7719,"780":543,"803":7717,"807":7721,"814":7723,"817":7830}],"105":[null,null,{"768":236,"769":237,"770":238,"771":297,"772":299,"774":301,"776":239,"777":7881,"780":464,"783":521,"785":523,"803":7883,"808":303,"816":7725}],"106":[null,null,{"770":309,"780":496}],"107":[null,null,{"769":7729,"780":489,"803":7731,"807":311,"817":7733}],"108":[null,null,{"769":314,"780":318,"803":7735,"807":316,"813":7741,"817":7739}],"109":[null,null,{"769":7743,"775":7745,"803":7747}],"110":[null,null,{"768":505,"769":324,"771":241,"775":7749,"780":328,"803":7751,"807":326,"813":7755,"817":7753}],"111":[null,null,{"768":242,"769":243,"770":244,"771":245,"772":333,"774":335,"775":559,"776":246,"777":7887,"779":337,"780":466,"783":525,"785":527,"795":417,"803":7885,"808":491}],"112":[null,null,{"769":7765,"775":7767}],"114":[null,null,{"769":341,"775":7769,"780":345,"783":529,"785":531,"803":7771,"807":343,"817":7775}],"115":[null,null,{"769":347,"770":349,"775":7777,"780":353,"803":7779,"806":537,"807":351}],"116":[null,null,{"775":7787,"776":7831,"780":357,"803":7789,"806":539,"807":355,"813":7793,"817":7791}],"117":[null,null,{"768":249,"769":250,"770":251,"771":361,"772":363,"774":365,"776":252,"777":7911,"778":367,"779":369,"780":468,"783":533,"785":535,"795":432,"803":7909,"804":7795,"808":371,"813":7799,"816":7797}],"118":[null,null,{"771":7805,"803":7807}],"119":[null,null,{"768":7809,"769":7811,"770":373,"775":7815,"776":7813,"778":7832,"803":7817}],"120":[null,null,{"775":7819,"776":7821}],"121":[null,null,{"768":7923,"769":253,"770":375,"771":7929,"772":563,"775":7823,"776":255,"777":7927,"778":7833,"803":7925}],"122":[null,null,{"769":378,"770":7825,"775":380,"780":382,"803":7827,"817":7829}],"160":[[32],256],"168":[[32,776],256,{"768":8173,"769":901,"834":8129}],"170":[[97],256],"175":[[32,772],256],"178":[[50],256],"179":[[51],256],"180":[[32,769],256],"181":[[956],256],"184":[[32,807],256],"185":[[49],256],"186":[[111],256],"188":[[49,8260,52],256],"189":[[49,8260,50],256],"190":[[51,8260,52],256],"192":[[65,768]],"193":[[65,769]],"194":[[65,770],null,{"768":7846,"769":7844,"771":7850,"777":7848}],"195":[[65,771]],"196":[[65,776],null,{"772":478}],"197":[[65,778],null,{"769":506}],"198":[null,null,{"769":508,"772":482}],"199":[[67,807],null,{"769":7688}],"200":[[69,768]],"201":[[69,769]],"202":[[69,770],null,{"768":7872,"769":7870,"771":7876,"777":7874}],"203":[[69,776]],"204":[[73,768]],"205":[[73,769]],"206":[[73,770]],"207":[[73,776],null,{"769":7726}],"209":[[78,771]],"210":[[79,768]],"211":[[79,769]],"212":[[79,770],null,{"768":7890,"769":7888,"771":7894,"777":7892}],"213":[[79,771],null,{"769":7756,"772":556,"776":7758}],"214":[[79,776],null,{"772":554}],"216":[null,null,{"769":510}],"217":[[85,768]],"218":[[85,769]],"219":[[85,770]],"220":[[85,776],null,{"768":475,"769":471,"772":469,"780":473}],"221":[[89,769]],"224":[[97,768]],"225":[[97,769]],"226":[[97,770],null,{"768":7847,"769":7845,"771":7851,"777":7849}],"227":[[97,771]],"228":[[97,776],null,{"772":479}],"229":[[97,778],null,{"769":507}],"230":[null,null,{"769":509,"772":483}],"231":[[99,807],null,{"769":7689}],"232":[[101,768]],"233":[[101,769]],"234":[[101,770],null,{"768":7873,"769":7871,"771":7877,"777":7875}],"235":[[101,776]],"236":[[105,768]],"237":[[105,769]],"238":[[105,770]],"239":[[105,776],null,{"769":7727}],"241":[[110,771]],"242":[[111,768]],"243":[[111,769]],"244":[[111,770],null,{"768":7891,"769":7889,"771":7895,"777":7893}],"245":[[111,771],null,{"769":7757,"772":557,"776":7759}],"246":[[111,776],null,{"772":555}],"248":[null,null,{"769":511}],"249":[[117,768]],"250":[[117,769]],"251":[[117,770]],"252":[[117,776],null,{"768":476,"769":472,"772":470,"780":474}],"253":[[121,769]],"255":[[121,776]]},"256":{"256":[[65,772]],"257":[[97,772]],"258":[[65,774],null,{"768":7856,"769":7854,"771":7860,"777":7858}],"259":[[97,774],null,{"768":7857,"769":7855,"771":7861,"777":7859}],"260":[[65,808]],"261":[[97,808]],"262":[[67,769]],"263":[[99,769]],"264":[[67,770]],"265":[[99,770]],"266":[[67,775]],"267":[[99,775]],"268":[[67,780]],"269":[[99,780]],"270":[[68,780]],"271":[[100,780]],"274":[[69,772],null,{"768":7700,"769":7702}],"275":[[101,772],null,{"768":7701,"769":7703}],"276":[[69,774]],"277":[[101,774]],"278":[[69,775]],"279":[[101,775]],"280":[[69,808]],"281":[[101,808]],"282":[[69,780]],"283":[[101,780]],"284":[[71,770]],"285":[[103,770]],"286":[[71,774]],"287":[[103,774]],"288":[[71,775]],"289":[[103,775]],"290":[[71,807]],"291":[[103,807]],"292":[[72,770]],"293":[[104,770]],"296":[[73,771]],"297":[[105,771]],"298":[[73,772]],"299":[[105,772]],"300":[[73,774]],"301":[[105,774]],"302":[[73,808]],"303":[[105,808]],"304":[[73,775]],"306":[[73,74],256],"307":[[105,106],256],"308":[[74,770]],"309":[[106,770]],"310":[[75,807]],"311":[[107,807]],"313":[[76,769]],"314":[[108,769]],"315":[[76,807]],"316":[[108,807]],"317":[[76,780]],"318":[[108,780]],"319":[[76,183],256],"320":[[108,183],256],"323":[[78,769]],"324":[[110,769]],"325":[[78,807]],"326":[[110,807]],"327":[[78,780]],"328":[[110,780]],"329":[[700,110],256],"332":[[79,772],null,{"768":7760,"769":7762}],"333":[[111,772],null,{"768":7761,"769":7763}],"334":[[79,774]],"335":[[111,774]],"336":[[79,779]],"337":[[111,779]],"340":[[82,769]],"341":[[114,769]],"342":[[82,807]],"343":[[114,807]],"344":[[82,780]],"345":[[114,780]],"346":[[83,769],null,{"775":7780}],"347":[[115,769],null,{"775":7781}],"348":[[83,770]],"349":[[115,770]],"350":[[83,807]],"351":[[115,807]],"352":[[83,780],null,{"775":7782}],"353":[[115,780],null,{"775":7783}],"354":[[84,807]],"355":[[116,807]],"356":[[84,780]],"357":[[116,780]],"360":[[85,771],null,{"769":7800}],"361":[[117,771],null,{"769":7801}],"362":[[85,772],null,{"776":7802}],"363":[[117,772],null,{"776":7803}],"364":[[85,774]],"365":[[117,774]],"366":[[85,778]],"367":[[117,778]],"368":[[85,779]],"369":[[117,779]],"370":[[85,808]],"371":[[117,808]],"372":[[87,770]],"373":[[119,770]],"374":[[89,770]],"375":[[121,770]],"376":[[89,776]],"377":[[90,769]],"378":[[122,769]],"379":[[90,775]],"380":[[122,775]],"381":[[90,780]],"382":[[122,780]],"383":[[115],256,{"775":7835}],"416":[[79,795],null,{"768":7900,"769":7898,"771":7904,"777":7902,"803":7906}],"417":[[111,795],null,{"768":7901,"769":7899,"771":7905,"777":7903,"803":7907}],"431":[[85,795],null,{"768":7914,"769":7912,"771":7918,"777":7916,"803":7920}],"432":[[117,795],null,{"768":7915,"769":7913,"771":7919,"777":7917,"803":7921}],"439":[null,null,{"780":494}],"452":[[68,381],256],"453":[[68,382],256],"454":[[100,382],256],"455":[[76,74],256],"456":[[76,106],256],"457":[[108,106],256],"458":[[78,74],256],"459":[[78,106],256],"460":[[110,106],256],"461":[[65,780]],"462":[[97,780]],"463":[[73,780]],"464":[[105,780]],"465":[[79,780]],"466":[[111,780]],"467":[[85,780]],"468":[[117,780]],"469":[[220,772]],"470":[[252,772]],"471":[[220,769]],"472":[[252,769]],"473":[[220,780]],"474":[[252,780]],"475":[[220,768]],"476":[[252,768]],"478":[[196,772]],"479":[[228,772]],"480":[[550,772]],"481":[[551,772]],"482":[[198,772]],"483":[[230,772]],"486":[[71,780]],"487":[[103,780]],"488":[[75,780]],"489":[[107,780]],"490":[[79,808],null,{"772":492}],"491":[[111,808],null,{"772":493}],"492":[[490,772]],"493":[[491,772]],"494":[[439,780]],"495":[[658,780]],"496":[[106,780]],"497":[[68,90],256],"498":[[68,122],256],"499":[[100,122],256],"500":[[71,769]],"501":[[103,769]],"504":[[78,768]],"505":[[110,768]],"506":[[197,769]],"507":[[229,769]],"508":[[198,769]],"509":[[230,769]],"510":[[216,769]],"511":[[248,769]],"66045":[null,220]},"512":{"512":[[65,783]],"513":[[97,783]],"514":[[65,785]],"515":[[97,785]],"516":[[69,783]],"517":[[101,783]],"518":[[69,785]],"519":[[101,785]],"520":[[73,783]],"521":[[105,783]],"522":[[73,785]],"523":[[105,785]],"524":[[79,783]],"525":[[111,783]],"526":[[79,785]],"527":[[111,785]],"528":[[82,783]],"529":[[114,783]],"530":[[82,785]],"531":[[114,785]],"532":[[85,783]],"533":[[117,783]],"534":[[85,785]],"535":[[117,785]],"536":[[83,806]],"537":[[115,806]],"538":[[84,806]],"539":[[116,806]],"542":[[72,780]],"543":[[104,780]],"550":[[65,775],null,{"772":480}],"551":[[97,775],null,{"772":481}],"552":[[69,807],null,{"774":7708}],"553":[[101,807],null,{"774":7709}],"554":[[214,772]],"555":[[246,772]],"556":[[213,772]],"557":[[245,772]],"558":[[79,775],null,{"772":560}],"559":[[111,775],null,{"772":561}],"560":[[558,772]],"561":[[559,772]],"562":[[89,772]],"563":[[121,772]],"658":[null,null,{"780":495}],"688":[[104],256],"689":[[614],256],"690":[[106],256],"691":[[114],256],"692":[[633],256],"693":[[635],256],"694":[[641],256],"695":[[119],256],"696":[[121],256],"728":[[32,774],256],"729":[[32,775],256],"730":[[32,778],256],"731":[[32,808],256],"732":[[32,771],256],"733":[[32,779],256],"736":[[611],256],"737":[[108],256],"738":[[115],256],"739":[[120],256],"740":[[661],256],"66272":[null,220]},"768":{"768":[null,230],"769":[null,230],"770":[null,230],"771":[null,230],"772":[null,230],"773":[null,230],"774":[null,230],"775":[null,230],"776":[null,230,{"769":836}],"777":[null,230],"778":[null,230],"779":[null,230],"780":[null,230],"781":[null,230],"782":[null,230],"783":[null,230],"784":[null,230],"785":[null,230],"786":[null,230],"787":[null,230],"788":[null,230],"789":[null,232],"790":[null,220],"791":[null,220],"792":[null,220],"793":[null,220],"794":[null,232],"795":[null,216],"796":[null,220],"797":[null,220],"798":[null,220],"799":[null,220],"800":[null,220],"801":[null,202],"802":[null,202],"803":[null,220],"804":[null,220],"805":[null,220],"806":[null,220],"807":[null,202],"808":[null,202],"809":[null,220],"810":[null,220],"811":[null,220],"812":[null,220],"813":[null,220],"814":[null,220],"815":[null,220],"816":[null,220],"817":[null,220],"818":[null,220],"819":[null,220],"820":[null,1],"821":[null,1],"822":[null,1],"823":[null,1],"824":[null,1],"825":[null,220],"826":[null,220],"827":[null,220],"828":[null,220],"829":[null,230],"830":[null,230],"831":[null,230],"832":[[768],230],"833":[[769],230],"834":[null,230],"835":[[787],230],"836":[[776,769],230],"837":[null,240],"838":[null,230],"839":[null,220],"840":[null,220],"841":[null,220],"842":[null,230],"843":[null,230],"844":[null,230],"845":[null,220],"846":[null,220],"848":[null,230],"849":[null,230],"850":[null,230],"851":[null,220],"852":[null,220],"853":[null,220],"854":[null,220],"855":[null,230],"856":[null,232],"857":[null,220],"858":[null,220],"859":[null,230],"860":[null,233],"861":[null,234],"862":[null,234],"863":[null,233],"864":[null,234],"865":[null,234],"866":[null,233],"867":[null,230],"868":[null,230],"869":[null,230],"870":[null,230],"871":[null,230],"872":[null,230],"873":[null,230],"874":[null,230],"875":[null,230],"876":[null,230],"877":[null,230],"878":[null,230],"879":[null,230],"884":[[697]],"890":[[32,837],256],"894":[[59]],"900":[[32,769],256],"901":[[168,769]],"902":[[913,769]],"903":[[183]],"904":[[917,769]],"905":[[919,769]],"906":[[921,769]],"908":[[927,769]],"910":[[933,769]],"911":[[937,769]],"912":[[970,769]],"913":[null,null,{"768":8122,"769":902,"772":8121,"774":8120,"787":7944,"788":7945,"837":8124}],"917":[null,null,{"768":8136,"769":904,"787":7960,"788":7961}],"919":[null,null,{"768":8138,"769":905,"787":7976,"788":7977,"837":8140}],"921":[null,null,{"768":8154,"769":906,"772":8153,"774":8152,"776":938,"787":7992,"788":7993}],"927":[null,null,{"768":8184,"769":908,"787":8008,"788":8009}],"929":[null,null,{"788":8172}],"933":[null,null,{"768":8170,"769":910,"772":8169,"774":8168,"776":939,"788":8025}],"937":[null,null,{"768":8186,"769":911,"787":8040,"788":8041,"837":8188}],"938":[[921,776]],"939":[[933,776]],"940":[[945,769],null,{"837":8116}],"941":[[949,769]],"942":[[951,769],null,{"837":8132}],"943":[[953,769]],"944":[[971,769]],"945":[null,null,{"768":8048,"769":940,"772":8113,"774":8112,"787":7936,"788":7937,"834":8118,"837":8115}],"949":[null,null,{"768":8050,"769":941,"787":7952,"788":7953}],"951":[null,null,{"768":8052,"769":942,"787":7968,"788":7969,"834":8134,"837":8131}],"953":[null,null,{"768":8054,"769":943,"772":8145,"774":8144,"776":970,"787":7984,"788":7985,"834":8150}],"959":[null,null,{"768":8056,"769":972,"787":8000,"788":8001}],"961":[null,null,{"787":8164,"788":8165}],"965":[null,null,{"768":8058,"769":973,"772":8161,"774":8160,"776":971,"787":8016,"788":8017,"834":8166}],"969":[null,null,{"768":8060,"769":974,"787":8032,"788":8033,"834":8182,"837":8179}],"970":[[953,776],null,{"768":8146,"769":912,"834":8151}],"971":[[965,776],null,{"768":8162,"769":944,"834":8167}],"972":[[959,769]],"973":[[965,769]],"974":[[969,769],null,{"837":8180}],"976":[[946],256],"977":[[952],256],"978":[[933],256,{"769":979,"776":980}],"979":[[978,769]],"980":[[978,776]],"981":[[966],256],"982":[[960],256],"1008":[[954],256],"1009":[[961],256],"1010":[[962],256],"1012":[[920],256],"1013":[[949],256],"1017":[[931],256],"66422":[null,230],"66423":[null,230],"66424":[null,230],"66425":[null,230],"66426":[null,230]},"1024":{"1024":[[1045,768]],"1025":[[1045,776]],"1027":[[1043,769]],"1030":[null,null,{"776":1031}],"1031":[[1030,776]],"1036":[[1050,769]],"1037":[[1048,768]],"1038":[[1059,774]],"1040":[null,null,{"774":1232,"776":1234}],"1043":[null,null,{"769":1027}],"1045":[null,null,{"768":1024,"774":1238,"776":1025}],"1046":[null,null,{"774":1217,"776":1244}],"1047":[null,null,{"776":1246}],"1048":[null,null,{"768":1037,"772":1250,"774":1049,"776":1252}],"1049":[[1048,774]],"1050":[null,null,{"769":1036}],"1054":[null,null,{"776":1254}],"1059":[null,null,{"772":1262,"774":1038,"776":1264,"779":1266}],"1063":[null,null,{"776":1268}],"1067":[null,null,{"776":1272}],"1069":[null,null,{"776":1260}],"1072":[null,null,{"774":1233,"776":1235}],"1075":[null,null,{"769":1107}],"1077":[null,null,{"768":1104,"774":1239,"776":1105}],"1078":[null,null,{"774":1218,"776":1245}],"1079":[null,null,{"776":1247}],"1080":[null,null,{"768":1117,"772":1251,"774":1081,"776":1253}],"1081":[[1080,774]],"1082":[null,null,{"769":1116}],"1086":[null,null,{"776":1255}],"1091":[null,null,{"772":1263,"774":1118,"776":1265,"779":1267}],"1095":[null,null,{"776":1269}],"1099":[null,null,{"776":1273}],"1101":[null,null,{"776":1261}],"1104":[[1077,768]],"1105":[[1077,776]],"1107":[[1075,769]],"1110":[null,null,{"776":1111}],"1111":[[1110,776]],"1116":[[1082,769]],"1117":[[1080,768]],"1118":[[1091,774]],"1140":[null,null,{"783":1142}],"1141":[null,null,{"783":1143}],"1142":[[1140,783]],"1143":[[1141,783]],"1155":[null,230],"1156":[null,230],"1157":[null,230],"1158":[null,230],"1159":[null,230],"1217":[[1046,774]],"1218":[[1078,774]],"1232":[[1040,774]],"1233":[[1072,774]],"1234":[[1040,776]],"1235":[[1072,776]],"1238":[[1045,774]],"1239":[[1077,774]],"1240":[null,null,{"776":1242}],"1241":[null,null,{"776":1243}],"1242":[[1240,776]],"1243":[[1241,776]],"1244":[[1046,776]],"1245":[[1078,776]],"1246":[[1047,776]],"1247":[[1079,776]],"1250":[[1048,772]],"1251":[[1080,772]],"1252":[[1048,776]],"1253":[[1080,776]],"1254":[[1054,776]],"1255":[[1086,776]],"1256":[null,null,{"776":1258}],"1257":[null,null,{"776":1259}],"1258":[[1256,776]],"1259":[[1257,776]],"1260":[[1069,776]],"1261":[[1101,776]],"1262":[[1059,772]],"1263":[[1091,772]],"1264":[[1059,776]],"1265":[[1091,776]],"1266":[[1059,779]],"1267":[[1091,779]],"1268":[[1063,776]],"1269":[[1095,776]],"1272":[[1067,776]],"1273":[[1099,776]]},"1280":{"1415":[[1381,1410],256],"1425":[null,220],"1426":[null,230],"1427":[null,230],"1428":[null,230],"1429":[null,230],"1430":[null,220],"1431":[null,230],"1432":[null,230],"1433":[null,230],"1434":[null,222],"1435":[null,220],"1436":[null,230],"1437":[null,230],"1438":[null,230],"1439":[null,230],"1440":[null,230],"1441":[null,230],"1442":[null,220],"1443":[null,220],"1444":[null,220],"1445":[null,220],"1446":[null,220],"1447":[null,220],"1448":[null,230],"1449":[null,230],"1450":[null,220],"1451":[null,230],"1452":[null,230],"1453":[null,222],"1454":[null,228],"1455":[null,230],"1456":[null,10],"1457":[null,11],"1458":[null,12],"1459":[null,13],"1460":[null,14],"1461":[null,15],"1462":[null,16],"1463":[null,17],"1464":[null,18],"1465":[null,19],"1466":[null,19],"1467":[null,20],"1468":[null,21],"1469":[null,22],"1471":[null,23],"1473":[null,24],"1474":[null,25],"1476":[null,230],"1477":[null,220],"1479":[null,18]},"1536":{"1552":[null,230],"1553":[null,230],"1554":[null,230],"1555":[null,230],"1556":[null,230],"1557":[null,230],"1558":[null,230],"1559":[null,230],"1560":[null,30],"1561":[null,31],"1562":[null,32],"1570":[[1575,1619]],"1571":[[1575,1620]],"1572":[[1608,1620]],"1573":[[1575,1621]],"1574":[[1610,1620]],"1575":[null,null,{"1619":1570,"1620":1571,"1621":1573}],"1608":[null,null,{"1620":1572}],"1610":[null,null,{"1620":1574}],"1611":[null,27],"1612":[null,28],"1613":[null,29],"1614":[null,30],"1615":[null,31],"1616":[null,32],"1617":[null,33],"1618":[null,34],"1619":[null,230],"1620":[null,230],"1621":[null,220],"1622":[null,220],"1623":[null,230],"1624":[null,230],"1625":[null,230],"1626":[null,230],"1627":[null,230],"1628":[null,220],"1629":[null,230],"1630":[null,230],"1631":[null,220],"1648":[null,35],"1653":[[1575,1652],256],"1654":[[1608,1652],256],"1655":[[1735,1652],256],"1656":[[1610,1652],256],"1728":[[1749,1620]],"1729":[null,null,{"1620":1730}],"1730":[[1729,1620]],"1746":[null,null,{"1620":1747}],"1747":[[1746,1620]],"1749":[null,null,{"1620":1728}],"1750":[null,230],"1751":[null,230],"1752":[null,230],"1753":[null,230],"1754":[null,230],"1755":[null,230],"1756":[null,230],"1759":[null,230],"1760":[null,230],"1761":[null,230],"1762":[null,230],"1763":[null,220],"1764":[null,230],"1767":[null,230],"1768":[null,230],"1770":[null,220],"1771":[null,230],"1772":[null,230],"1773":[null,220]},"1792":{"1809":[null,36],"1840":[null,230],"1841":[null,220],"1842":[null,230],"1843":[null,230],"1844":[null,220],"1845":[null,230],"1846":[null,230],"1847":[null,220],"1848":[null,220],"1849":[null,220],"1850":[null,230],"1851":[null,220],"1852":[null,220],"1853":[null,230],"1854":[null,220],"1855":[null,230],"1856":[null,230],"1857":[null,230],"1858":[null,220],"1859":[null,230],"1860":[null,220],"1861":[null,230],"1862":[null,220],"1863":[null,230],"1864":[null,220],"1865":[null,230],"1866":[null,230],"2027":[null,230],"2028":[null,230],"2029":[null,230],"2030":[null,230],"2031":[null,230],"2032":[null,230],"2033":[null,230],"2034":[null,220],"2035":[null,230]},"2048":{"2070":[null,230],"2071":[null,230],"2072":[null,230],"2073":[null,230],"2075":[null,230],"2076":[null,230],"2077":[null,230],"2078":[null,230],"2079":[null,230],"2080":[null,230],"2081":[null,230],"2082":[null,230],"2083":[null,230],"2085":[null,230],"2086":[null,230],"2087":[null,230],"2089":[null,230],"2090":[null,230],"2091":[null,230],"2092":[null,230],"2093":[null,230],"2137":[null,220],"2138":[null,220],"2139":[null,220],"2276":[null,230],"2277":[null,230],"2278":[null,220],"2279":[null,230],"2280":[null,230],"2281":[null,220],"2282":[null,230],"2283":[null,230],"2284":[null,230],"2285":[null,220],"2286":[null,220],"2287":[null,220],"2288":[null,27],"2289":[null,28],"2290":[null,29],"2291":[null,230],"2292":[null,230],"2293":[null,230],"2294":[null,220],"2295":[null,230],"2296":[null,230],"2297":[null,220],"2298":[null,220],"2299":[null,230],"2300":[null,230],"2301":[null,230],"2302":[null,230],"2303":[null,230]},"2304":{"2344":[null,null,{"2364":2345}],"2345":[[2344,2364]],"2352":[null,null,{"2364":2353}],"2353":[[2352,2364]],"2355":[null,null,{"2364":2356}],"2356":[[2355,2364]],"2364":[null,7],"2381":[null,9],"2385":[null,230],"2386":[null,220],"2387":[null,230],"2388":[null,230],"2392":[[2325,2364],512],"2393":[[2326,2364],512],"2394":[[2327,2364],512],"2395":[[2332,2364],512],"2396":[[2337,2364],512],"2397":[[2338,2364],512],"2398":[[2347,2364],512],"2399":[[2351,2364],512],"2492":[null,7],"2503":[null,null,{"2494":2507,"2519":2508}],"2507":[[2503,2494]],"2508":[[2503,2519]],"2509":[null,9],"2524":[[2465,2492],512],"2525":[[2466,2492],512],"2527":[[2479,2492],512]},"2560":{"2611":[[2610,2620],512],"2614":[[2616,2620],512],"2620":[null,7],"2637":[null,9],"2649":[[2582,2620],512],"2650":[[2583,2620],512],"2651":[[2588,2620],512],"2654":[[2603,2620],512],"2748":[null,7],"2765":[null,9],"68109":[null,220],"68111":[null,230],"68152":[null,230],"68153":[null,1],"68154":[null,220],"68159":[null,9],"68325":[null,230],"68326":[null,220]},"2816":{"2876":[null,7],"2887":[null,null,{"2878":2891,"2902":2888,"2903":2892}],"2888":[[2887,2902]],"2891":[[2887,2878]],"2892":[[2887,2903]],"2893":[null,9],"2908":[[2849,2876],512],"2909":[[2850,2876],512],"2962":[null,null,{"3031":2964}],"2964":[[2962,3031]],"3014":[null,null,{"3006":3018,"3031":3020}],"3015":[null,null,{"3006":3019}],"3018":[[3014,3006]],"3019":[[3015,3006]],"3020":[[3014,3031]],"3021":[null,9]},"3072":{"3142":[null,null,{"3158":3144}],"3144":[[3142,3158]],"3149":[null,9],"3157":[null,84],"3158":[null,91],"3260":[null,7],"3263":[null,null,{"3285":3264}],"3264":[[3263,3285]],"3270":[null,null,{"3266":3274,"3285":3271,"3286":3272}],"3271":[[3270,3285]],"3272":[[3270,3286]],"3274":[[3270,3266],null,{"3285":3275}],"3275":[[3274,3285]],"3277":[null,9]},"3328":{"3398":[null,null,{"3390":3402,"3415":3404}],"3399":[null,null,{"3390":3403}],"3402":[[3398,3390]],"3403":[[3399,3390]],"3404":[[3398,3415]],"3405":[null,9],"3530":[null,9],"3545":[null,null,{"3530":3546,"3535":3548,"3551":3550}],"3546":[[3545,3530]],"3548":[[3545,3535],null,{"3530":3549}],"3549":[[3548,3530]],"3550":[[3545,3551]]},"3584":{"3635":[[3661,3634],256],"3640":[null,103],"3641":[null,103],"3642":[null,9],"3656":[null,107],"3657":[null,107],"3658":[null,107],"3659":[null,107],"3763":[[3789,3762],256],"3768":[null,118],"3769":[null,118],"3784":[null,122],"3785":[null,122],"3786":[null,122],"3787":[null,122],"3804":[[3755,3737],256],"3805":[[3755,3745],256]},"3840":{"3852":[[3851],256],"3864":[null,220],"3865":[null,220],"3893":[null,220],"3895":[null,220],"3897":[null,216],"3907":[[3906,4023],512],"3917":[[3916,4023],512],"3922":[[3921,4023],512],"3927":[[3926,4023],512],"3932":[[3931,4023],512],"3945":[[3904,4021],512],"3953":[null,129],"3954":[null,130],"3955":[[3953,3954],512],"3956":[null,132],"3957":[[3953,3956],512],"3958":[[4018,3968],512],"3959":[[4018,3969],256],"3960":[[4019,3968],512],"3961":[[4019,3969],256],"3962":[null,130],"3963":[null,130],"3964":[null,130],"3965":[null,130],"3968":[null,130],"3969":[[3953,3968],512],"3970":[null,230],"3971":[null,230],"3972":[null,9],"3974":[null,230],"3975":[null,230],"3987":[[3986,4023],512],"3997":[[3996,4023],512],"4002":[[4001,4023],512],"4007":[[4006,4023],512],"4012":[[4011,4023],512],"4025":[[3984,4021],512],"4038":[null,220]},"4096":{"4133":[null,null,{"4142":4134}],"4134":[[4133,4142]],"4151":[null,7],"4153":[null,9],"4154":[null,9],"4237":[null,220],"4348":[[4316],256],"69702":[null,9],"69759":[null,9],"69785":[null,null,{"69818":69786}],"69786":[[69785,69818]],"69787":[null,null,{"69818":69788}],"69788":[[69787,69818]],"69797":[null,null,{"69818":69803}],"69803":[[69797,69818]],"69817":[null,9],"69818":[null,7]},"4352":{"69888":[null,230],"69889":[null,230],"69890":[null,230],"69934":[[69937,69927]],"69935":[[69938,69927]],"69937":[null,null,{"69927":69934}],"69938":[null,null,{"69927":69935}],"69939":[null,9],"69940":[null,9],"70003":[null,7],"70080":[null,9]},"4608":{"70197":[null,9],"70198":[null,7],"70377":[null,7],"70378":[null,9]},"4864":{"4957":[null,230],"4958":[null,230],"4959":[null,230],"70460":[null,7],"70471":[null,null,{"70462":70475,"70487":70476}],"70475":[[70471,70462]],"70476":[[70471,70487]],"70477":[null,9],"70502":[null,230],"70503":[null,230],"70504":[null,230],"70505":[null,230],"70506":[null,230],"70507":[null,230],"70508":[null,230],"70512":[null,230],"70513":[null,230],"70514":[null,230],"70515":[null,230],"70516":[null,230]},"5120":{"70841":[null,null,{"70832":70844,"70842":70843,"70845":70846}],"70843":[[70841,70842]],"70844":[[70841,70832]],"70846":[[70841,70845]],"70850":[null,9],"70851":[null,7]},"5376":{"71096":[null,null,{"71087":71098}],"71097":[null,null,{"71087":71099}],"71098":[[71096,71087]],"71099":[[71097,71087]],"71103":[null,9],"71104":[null,7]},"5632":{"71231":[null,9],"71350":[null,9],"71351":[null,7]},"5888":{"5908":[null,9],"5940":[null,9],"6098":[null,9],"6109":[null,230]},"6144":{"6313":[null,228]},"6400":{"6457":[null,222],"6458":[null,230],"6459":[null,220]},"6656":{"6679":[null,230],"6680":[null,220],"6752":[null,9],"6773":[null,230],"6774":[null,230],"6775":[null,230],"6776":[null,230],"6777":[null,230],"6778":[null,230],"6779":[null,230],"6780":[null,230],"6783":[null,220],"6832":[null,230],"6833":[null,230],"6834":[null,230],"6835":[null,230],"6836":[null,230],"6837":[null,220],"6838":[null,220],"6839":[null,220],"6840":[null,220],"6841":[null,220],"6842":[null,220],"6843":[null,230],"6844":[null,230],"6845":[null,220]},"6912":{"6917":[null,null,{"6965":6918}],"6918":[[6917,6965]],"6919":[null,null,{"6965":6920}],"6920":[[6919,6965]],"6921":[null,null,{"6965":6922}],"6922":[[6921,6965]],"6923":[null,null,{"6965":6924}],"6924":[[6923,6965]],"6925":[null,null,{"6965":6926}],"6926":[[6925,6965]],"6929":[null,null,{"6965":6930}],"6930":[[6929,6965]],"6964":[null,7],"6970":[null,null,{"6965":6971}],"6971":[[6970,6965]],"6972":[null,null,{"6965":6973}],"6973":[[6972,6965]],"6974":[null,null,{"6965":6976}],"6975":[null,null,{"6965":6977}],"6976":[[6974,6965]],"6977":[[6975,6965]],"6978":[null,null,{"6965":6979}],"6979":[[6978,6965]],"6980":[null,9],"7019":[null,230],"7020":[null,220],"7021":[null,230],"7022":[null,230],"7023":[null,230],"7024":[null,230],"7025":[null,230],"7026":[null,230],"7027":[null,230],"7082":[null,9],"7083":[null,9],"7142":[null,7],"7154":[null,9],"7155":[null,9]},"7168":{"7223":[null,7],"7376":[null,230],"7377":[null,230],"7378":[null,230],"7380":[null,1],"7381":[null,220],"7382":[null,220],"7383":[null,220],"7384":[null,220],"7385":[null,220],"7386":[null,230],"7387":[null,230],"7388":[null,220],"7389":[null,220],"7390":[null,220],"7391":[null,220],"7392":[null,230],"7394":[null,1],"7395":[null,1],"7396":[null,1],"7397":[null,1],"7398":[null,1],"7399":[null,1],"7400":[null,1],"7405":[null,220],"7412":[null,230],"7416":[null,230],"7417":[null,230]},"7424":{"7468":[[65],256],"7469":[[198],256],"7470":[[66],256],"7472":[[68],256],"7473":[[69],256],"7474":[[398],256],"7475":[[71],256],"7476":[[72],256],"7477":[[73],256],"7478":[[74],256],"7479":[[75],256],"7480":[[76],256],"7481":[[77],256],"7482":[[78],256],"7484":[[79],256],"7485":[[546],256],"7486":[[80],256],"7487":[[82],256],"7488":[[84],256],"7489":[[85],256],"7490":[[87],256],"7491":[[97],256],"7492":[[592],256],"7493":[[593],256],"7494":[[7426],256],"7495":[[98],256],"7496":[[100],256],"7497":[[101],256],"7498":[[601],256],"7499":[[603],256],"7500":[[604],256],"7501":[[103],256],"7503":[[107],256],"7504":[[109],256],"7505":[[331],256],"7506":[[111],256],"7507":[[596],256],"7508":[[7446],256],"7509":[[7447],256],"7510":[[112],256],"7511":[[116],256],"7512":[[117],256],"7513":[[7453],256],"7514":[[623],256],"7515":[[118],256],"7516":[[7461],256],"7517":[[946],256],"7518":[[947],256],"7519":[[948],256],"7520":[[966],256],"7521":[[967],256],"7522":[[105],256],"7523":[[114],256],"7524":[[117],256],"7525":[[118],256],"7526":[[946],256],"7527":[[947],256],"7528":[[961],256],"7529":[[966],256],"7530":[[967],256],"7544":[[1085],256],"7579":[[594],256],"7580":[[99],256],"7581":[[597],256],"7582":[[240],256],"7583":[[604],256],"7584":[[102],256],"7585":[[607],256],"7586":[[609],256],"7587":[[613],256],"7588":[[616],256],"7589":[[617],256],"7590":[[618],256],"7591":[[7547],256],"7592":[[669],256],"7593":[[621],256],"7594":[[7557],256],"7595":[[671],256],"7596":[[625],256],"7597":[[624],256],"7598":[[626],256],"7599":[[627],256],"7600":[[628],256],"7601":[[629],256],"7602":[[632],256],"7603":[[642],256],"7604":[[643],256],"7605":[[427],256],"7606":[[649],256],"7607":[[650],256],"7608":[[7452],256],"7609":[[651],256],"7610":[[652],256],"7611":[[122],256],"7612":[[656],256],"7613":[[657],256],"7614":[[658],256],"7615":[[952],256],"7616":[null,230],"7617":[null,230],"7618":[null,220],"7619":[null,230],"7620":[null,230],"7621":[null,230],"7622":[null,230],"7623":[null,230],"7624":[null,230],"7625":[null,230],"7626":[null,220],"7627":[null,230],"7628":[null,230],"7629":[null,234],"7630":[null,214],"7631":[null,220],"7632":[null,202],"7633":[null,230],"7634":[null,230],"7635":[null,230],"7636":[null,230],"7637":[null,230],"7638":[null,230],"7639":[null,230],"7640":[null,230],"7641":[null,230],"7642":[null,230],"7643":[null,230],"7644":[null,230],"7645":[null,230],"7646":[null,230],"7647":[null,230],"7648":[null,230],"7649":[null,230],"7650":[null,230],"7651":[null,230],"7652":[null,230],"7653":[null,230],"7654":[null,230],"7655":[null,230],"7656":[null,230],"7657":[null,230],"7658":[null,230],"7659":[null,230],"7660":[null,230],"7661":[null,230],"7662":[null,230],"7663":[null,230],"7664":[null,230],"7665":[null,230],"7666":[null,230],"7667":[null,230],"7668":[null,230],"7669":[null,230],"7676":[null,233],"7677":[null,220],"7678":[null,230],"7679":[null,220]},"7680":{"7680":[[65,805]],"7681":[[97,805]],"7682":[[66,775]],"7683":[[98,775]],"7684":[[66,803]],"7685":[[98,803]],"7686":[[66,817]],"7687":[[98,817]],"7688":[[199,769]],"7689":[[231,769]],"7690":[[68,775]],"7691":[[100,775]],"7692":[[68,803]],"7693":[[100,803]],"7694":[[68,817]],"7695":[[100,817]],"7696":[[68,807]],"7697":[[100,807]],"7698":[[68,813]],"7699":[[100,813]],"7700":[[274,768]],"7701":[[275,768]],"7702":[[274,769]],"7703":[[275,769]],"7704":[[69,813]],"7705":[[101,813]],"7706":[[69,816]],"7707":[[101,816]],"7708":[[552,774]],"7709":[[553,774]],"7710":[[70,775]],"7711":[[102,775]],"7712":[[71,772]],"7713":[[103,772]],"7714":[[72,775]],"7715":[[104,775]],"7716":[[72,803]],"7717":[[104,803]],"7718":[[72,776]],"7719":[[104,776]],"7720":[[72,807]],"7721":[[104,807]],"7722":[[72,814]],"7723":[[104,814]],"7724":[[73,816]],"7725":[[105,816]],"7726":[[207,769]],"7727":[[239,769]],"7728":[[75,769]],"7729":[[107,769]],"7730":[[75,803]],"7731":[[107,803]],"7732":[[75,817]],"7733":[[107,817]],"7734":[[76,803],null,{"772":7736}],"7735":[[108,803],null,{"772":7737}],"7736":[[7734,772]],"7737":[[7735,772]],"7738":[[76,817]],"7739":[[108,817]],"7740":[[76,813]],"7741":[[108,813]],"7742":[[77,769]],"7743":[[109,769]],"7744":[[77,775]],"7745":[[109,775]],"7746":[[77,803]],"7747":[[109,803]],"7748":[[78,775]],"7749":[[110,775]],"7750":[[78,803]],"7751":[[110,803]],"7752":[[78,817]],"7753":[[110,817]],"7754":[[78,813]],"7755":[[110,813]],"7756":[[213,769]],"7757":[[245,769]],"7758":[[213,776]],"7759":[[245,776]],"7760":[[332,768]],"7761":[[333,768]],"7762":[[332,769]],"7763":[[333,769]],"7764":[[80,769]],"7765":[[112,769]],"7766":[[80,775]],"7767":[[112,775]],"7768":[[82,775]],"7769":[[114,775]],"7770":[[82,803],null,{"772":7772}],"7771":[[114,803],null,{"772":7773}],"7772":[[7770,772]],"7773":[[7771,772]],"7774":[[82,817]],"7775":[[114,817]],"7776":[[83,775]],"7777":[[115,775]],"7778":[[83,803],null,{"775":7784}],"7779":[[115,803],null,{"775":7785}],"7780":[[346,775]],"7781":[[347,775]],"7782":[[352,775]],"7783":[[353,775]],"7784":[[7778,775]],"7785":[[7779,775]],"7786":[[84,775]],"7787":[[116,775]],"7788":[[84,803]],"7789":[[116,803]],"7790":[[84,817]],"7791":[[116,817]],"7792":[[84,813]],"7793":[[116,813]],"7794":[[85,804]],"7795":[[117,804]],"7796":[[85,816]],"7797":[[117,816]],"7798":[[85,813]],"7799":[[117,813]],"7800":[[360,769]],"7801":[[361,769]],"7802":[[362,776]],"7803":[[363,776]],"7804":[[86,771]],"7805":[[118,771]],"7806":[[86,803]],"7807":[[118,803]],"7808":[[87,768]],"7809":[[119,768]],"7810":[[87,769]],"7811":[[119,769]],"7812":[[87,776]],"7813":[[119,776]],"7814":[[87,775]],"7815":[[119,775]],"7816":[[87,803]],"7817":[[119,803]],"7818":[[88,775]],"7819":[[120,775]],"7820":[[88,776]],"7821":[[120,776]],"7822":[[89,775]],"7823":[[121,775]],"7824":[[90,770]],"7825":[[122,770]],"7826":[[90,803]],"7827":[[122,803]],"7828":[[90,817]],"7829":[[122,817]],"7830":[[104,817]],"7831":[[116,776]],"7832":[[119,778]],"7833":[[121,778]],"7834":[[97,702],256],"7835":[[383,775]],"7840":[[65,803],null,{"770":7852,"774":7862}],"7841":[[97,803],null,{"770":7853,"774":7863}],"7842":[[65,777]],"7843":[[97,777]],"7844":[[194,769]],"7845":[[226,769]],"7846":[[194,768]],"7847":[[226,768]],"7848":[[194,777]],"7849":[[226,777]],"7850":[[194,771]],"7851":[[226,771]],"7852":[[7840,770]],"7853":[[7841,770]],"7854":[[258,769]],"7855":[[259,769]],"7856":[[258,768]],"7857":[[259,768]],"7858":[[258,777]],"7859":[[259,777]],"7860":[[258,771]],"7861":[[259,771]],"7862":[[7840,774]],"7863":[[7841,774]],"7864":[[69,803],null,{"770":7878}],"7865":[[101,803],null,{"770":7879}],"7866":[[69,777]],"7867":[[101,777]],"7868":[[69,771]],"7869":[[101,771]],"7870":[[202,769]],"7871":[[234,769]],"7872":[[202,768]],"7873":[[234,768]],"7874":[[202,777]],"7875":[[234,777]],"7876":[[202,771]],"7877":[[234,771]],"7878":[[7864,770]],"7879":[[7865,770]],"7880":[[73,777]],"7881":[[105,777]],"7882":[[73,803]],"7883":[[105,803]],"7884":[[79,803],null,{"770":7896}],"7885":[[111,803],null,{"770":7897}],"7886":[[79,777]],"7887":[[111,777]],"7888":[[212,769]],"7889":[[244,769]],"7890":[[212,768]],"7891":[[244,768]],"7892":[[212,777]],"7893":[[244,777]],"7894":[[212,771]],"7895":[[244,771]],"7896":[[7884,770]],"7897":[[7885,770]],"7898":[[416,769]],"7899":[[417,769]],"7900":[[416,768]],"7901":[[417,768]],"7902":[[416,777]],"7903":[[417,777]],"7904":[[416,771]],"7905":[[417,771]],"7906":[[416,803]],"7907":[[417,803]],"7908":[[85,803]],"7909":[[117,803]],"7910":[[85,777]],"7911":[[117,777]],"7912":[[431,769]],"7913":[[432,769]],"7914":[[431,768]],"7915":[[432,768]],"7916":[[431,777]],"7917":[[432,777]],"7918":[[431,771]],"7919":[[432,771]],"7920":[[431,803]],"7921":[[432,803]],"7922":[[89,768]],"7923":[[121,768]],"7924":[[89,803]],"7925":[[121,803]],"7926":[[89,777]],"7927":[[121,777]],"7928":[[89,771]],"7929":[[121,771]]},"7936":{"7936":[[945,787],null,{"768":7938,"769":7940,"834":7942,"837":8064}],"7937":[[945,788],null,{"768":7939,"769":7941,"834":7943,"837":8065}],"7938":[[7936,768],null,{"837":8066}],"7939":[[7937,768],null,{"837":8067}],"7940":[[7936,769],null,{"837":8068}],"7941":[[7937,769],null,{"837":8069}],"7942":[[7936,834],null,{"837":8070}],"7943":[[7937,834],null,{"837":8071}],"7944":[[913,787],null,{"768":7946,"769":7948,"834":7950,"837":8072}],"7945":[[913,788],null,{"768":7947,"769":7949,"834":7951,"837":8073}],"7946":[[7944,768],null,{"837":8074}],"7947":[[7945,768],null,{"837":8075}],"7948":[[7944,769],null,{"837":8076}],"7949":[[7945,769],null,{"837":8077}],"7950":[[7944,834],null,{"837":8078}],"7951":[[7945,834],null,{"837":8079}],"7952":[[949,787],null,{"768":7954,"769":7956}],"7953":[[949,788],null,{"768":7955,"769":7957}],"7954":[[7952,768]],"7955":[[7953,768]],"7956":[[7952,769]],"7957":[[7953,769]],"7960":[[917,787],null,{"768":7962,"769":7964}],"7961":[[917,788],null,{"768":7963,"769":7965}],"7962":[[7960,768]],"7963":[[7961,768]],"7964":[[7960,769]],"7965":[[7961,769]],"7968":[[951,787],null,{"768":7970,"769":7972,"834":7974,"837":8080}],"7969":[[951,788],null,{"768":7971,"769":7973,"834":7975,"837":8081}],"7970":[[7968,768],null,{"837":8082}],"7971":[[7969,768],null,{"837":8083}],"7972":[[7968,769],null,{"837":8084}],"7973":[[7969,769],null,{"837":8085}],"7974":[[7968,834],null,{"837":8086}],"7975":[[7969,834],null,{"837":8087}],"7976":[[919,787],null,{"768":7978,"769":7980,"834":7982,"837":8088}],"7977":[[919,788],null,{"768":7979,"769":7981,"834":7983,"837":8089}],"7978":[[7976,768],null,{"837":8090}],"7979":[[7977,768],null,{"837":8091}],"7980":[[7976,769],null,{"837":8092}],"7981":[[7977,769],null,{"837":8093}],"7982":[[7976,834],null,{"837":8094}],"7983":[[7977,834],null,{"837":8095}],"7984":[[953,787],null,{"768":7986,"769":7988,"834":7990}],"7985":[[953,788],null,{"768":7987,"769":7989,"834":7991}],"7986":[[7984,768]],"7987":[[7985,768]],"7988":[[7984,769]],"7989":[[7985,769]],"7990":[[7984,834]],"7991":[[7985,834]],"7992":[[921,787],null,{"768":7994,"769":7996,"834":7998}],"7993":[[921,788],null,{"768":7995,"769":7997,"834":7999}],"7994":[[7992,768]],"7995":[[7993,768]],"7996":[[7992,769]],"7997":[[7993,769]],"7998":[[7992,834]],"7999":[[7993,834]],"8000":[[959,787],null,{"768":8002,"769":8004}],"8001":[[959,788],null,{"768":8003,"769":8005}],"8002":[[8000,768]],"8003":[[8001,768]],"8004":[[8000,769]],"8005":[[8001,769]],"8008":[[927,787],null,{"768":8010,"769":8012}],"8009":[[927,788],null,{"768":8011,"769":8013}],"8010":[[8008,768]],"8011":[[8009,768]],"8012":[[8008,769]],"8013":[[8009,769]],"8016":[[965,787],null,{"768":8018,"769":8020,"834":8022}],"8017":[[965,788],null,{"768":8019,"769":8021,"834":8023}],"8018":[[8016,768]],"8019":[[8017,768]],"8020":[[8016,769]],"8021":[[8017,769]],"8022":[[8016,834]],"8023":[[8017,834]],"8025":[[933,788],null,{"768":8027,"769":8029,"834":8031}],"8027":[[8025,768]],"8029":[[8025,769]],"8031":[[8025,834]],"8032":[[969,787],null,{"768":8034,"769":8036,"834":8038,"837":8096}],"8033":[[969,788],null,{"768":8035,"769":8037,"834":8039,"837":8097}],"8034":[[8032,768],null,{"837":8098}],"8035":[[8033,768],null,{"837":8099}],"8036":[[8032,769],null,{"837":8100}],"8037":[[8033,769],null,{"837":8101}],"8038":[[8032,834],null,{"837":8102}],"8039":[[8033,834],null,{"837":8103}],"8040":[[937,787],null,{"768":8042,"769":8044,"834":8046,"837":8104}],"8041":[[937,788],null,{"768":8043,"769":8045,"834":8047,"837":8105}],"8042":[[8040,768],null,{"837":8106}],"8043":[[8041,768],null,{"837":8107}],"8044":[[8040,769],null,{"837":8108}],"8045":[[8041,769],null,{"837":8109}],"8046":[[8040,834],null,{"837":8110}],"8047":[[8041,834],null,{"837":8111}],"8048":[[945,768],null,{"837":8114}],"8049":[[940]],"8050":[[949,768]],"8051":[[941]],"8052":[[951,768],null,{"837":8130}],"8053":[[942]],"8054":[[953,768]],"8055":[[943]],"8056":[[959,768]],"8057":[[972]],"8058":[[965,768]],"8059":[[973]],"8060":[[969,768],null,{"837":8178}],"8061":[[974]],"8064":[[7936,837]],"8065":[[7937,837]],"8066":[[7938,837]],"8067":[[7939,837]],"8068":[[7940,837]],"8069":[[7941,837]],"8070":[[7942,837]],"8071":[[7943,837]],"8072":[[7944,837]],"8073":[[7945,837]],"8074":[[7946,837]],"8075":[[7947,837]],"8076":[[7948,837]],"8077":[[7949,837]],"8078":[[7950,837]],"8079":[[7951,837]],"8080":[[7968,837]],"8081":[[7969,837]],"8082":[[7970,837]],"8083":[[7971,837]],"8084":[[7972,837]],"8085":[[7973,837]],"8086":[[7974,837]],"8087":[[7975,837]],"8088":[[7976,837]],"8089":[[7977,837]],"8090":[[7978,837]],"8091":[[7979,837]],"8092":[[7980,837]],"8093":[[7981,837]],"8094":[[7982,837]],"8095":[[7983,837]],"8096":[[8032,837]],"8097":[[8033,837]],"8098":[[8034,837]],"8099":[[8035,837]],"8100":[[8036,837]],"8101":[[8037,837]],"8102":[[8038,837]],"8103":[[8039,837]],"8104":[[8040,837]],"8105":[[8041,837]],"8106":[[8042,837]],"8107":[[8043,837]],"8108":[[8044,837]],"8109":[[8045,837]],"8110":[[8046,837]],"8111":[[8047,837]],"8112":[[945,774]],"8113":[[945,772]],"8114":[[8048,837]],"8115":[[945,837]],"8116":[[940,837]],"8118":[[945,834],null,{"837":8119}],"8119":[[8118,837]],"8120":[[913,774]],"8121":[[913,772]],"8122":[[913,768]],"8123":[[902]],"8124":[[913,837]],"8125":[[32,787],256],"8126":[[953]],"8127":[[32,787],256,{"768":8141,"769":8142,"834":8143}],"8128":[[32,834],256],"8129":[[168,834]],"8130":[[8052,837]],"8131":[[951,837]],"8132":[[942,837]],"8134":[[951,834],null,{"837":8135}],"8135":[[8134,837]],"8136":[[917,768]],"8137":[[904]],"8138":[[919,768]],"8139":[[905]],"8140":[[919,837]],"8141":[[8127,768]],"8142":[[8127,769]],"8143":[[8127,834]],"8144":[[953,774]],"8145":[[953,772]],"8146":[[970,768]],"8147":[[912]],"8150":[[953,834]],"8151":[[970,834]],"8152":[[921,774]],"8153":[[921,772]],"8154":[[921,768]],"8155":[[906]],"8157":[[8190,768]],"8158":[[8190,769]],"8159":[[8190,834]],"8160":[[965,774]],"8161":[[965,772]],"8162":[[971,768]],"8163":[[944]],"8164":[[961,787]],"8165":[[961,788]],"8166":[[965,834]],"8167":[[971,834]],"8168":[[933,774]],"8169":[[933,772]],"8170":[[933,768]],"8171":[[910]],"8172":[[929,788]],"8173":[[168,768]],"8174":[[901]],"8175":[[96]],"8178":[[8060,837]],"8179":[[969,837]],"8180":[[974,837]],"8182":[[969,834],null,{"837":8183}],"8183":[[8182,837]],"8184":[[927,768]],"8185":[[908]],"8186":[[937,768]],"8187":[[911]],"8188":[[937,837]],"8189":[[180]],"8190":[[32,788],256,{"768":8157,"769":8158,"834":8159}]},"8192":{"8192":[[8194]],"8193":[[8195]],"8194":[[32],256],"8195":[[32],256],"8196":[[32],256],"8197":[[32],256],"8198":[[32],256],"8199":[[32],256],"8200":[[32],256],"8201":[[32],256],"8202":[[32],256],"8209":[[8208],256],"8215":[[32,819],256],"8228":[[46],256],"8229":[[46,46],256],"8230":[[46,46,46],256],"8239":[[32],256],"8243":[[8242,8242],256],"8244":[[8242,8242,8242],256],"8246":[[8245,8245],256],"8247":[[8245,8245,8245],256],"8252":[[33,33],256],"8254":[[32,773],256],"8263":[[63,63],256],"8264":[[63,33],256],"8265":[[33,63],256],"8279":[[8242,8242,8242,8242],256],"8287":[[32],256],"8304":[[48],256],"8305":[[105],256],"8308":[[52],256],"8309":[[53],256],"8310":[[54],256],"8311":[[55],256],"8312":[[56],256],"8313":[[57],256],"8314":[[43],256],"8315":[[8722],256],"8316":[[61],256],"8317":[[40],256],"8318":[[41],256],"8319":[[110],256],"8320":[[48],256],"8321":[[49],256],"8322":[[50],256],"8323":[[51],256],"8324":[[52],256],"8325":[[53],256],"8326":[[54],256],"8327":[[55],256],"8328":[[56],256],"8329":[[57],256],"8330":[[43],256],"8331":[[8722],256],"8332":[[61],256],"8333":[[40],256],"8334":[[41],256],"8336":[[97],256],"8337":[[101],256],"8338":[[111],256],"8339":[[120],256],"8340":[[601],256],"8341":[[104],256],"8342":[[107],256],"8343":[[108],256],"8344":[[109],256],"8345":[[110],256],"8346":[[112],256],"8347":[[115],256],"8348":[[116],256],"8360":[[82,115],256],"8400":[null,230],"8401":[null,230],"8402":[null,1],"8403":[null,1],"8404":[null,230],"8405":[null,230],"8406":[null,230],"8407":[null,230],"8408":[null,1],"8409":[null,1],"8410":[null,1],"8411":[null,230],"8412":[null,230],"8417":[null,230],"8421":[null,1],"8422":[null,1],"8423":[null,230],"8424":[null,220],"8425":[null,230],"8426":[null,1],"8427":[null,1],"8428":[null,220],"8429":[null,220],"8430":[null,220],"8431":[null,220],"8432":[null,230]},"8448":{"8448":[[97,47,99],256],"8449":[[97,47,115],256],"8450":[[67],256],"8451":[[176,67],256],"8453":[[99,47,111],256],"8454":[[99,47,117],256],"8455":[[400],256],"8457":[[176,70],256],"8458":[[103],256],"8459":[[72],256],"8460":[[72],256],"8461":[[72],256],"8462":[[104],256],"8463":[[295],256],"8464":[[73],256],"8465":[[73],256],"8466":[[76],256],"8467":[[108],256],"8469":[[78],256],"8470":[[78,111],256],"8473":[[80],256],"8474":[[81],256],"8475":[[82],256],"8476":[[82],256],"8477":[[82],256],"8480":[[83,77],256],"8481":[[84,69,76],256],"8482":[[84,77],256],"8484":[[90],256],"8486":[[937]],"8488":[[90],256],"8490":[[75]],"8491":[[197]],"8492":[[66],256],"8493":[[67],256],"8495":[[101],256],"8496":[[69],256],"8497":[[70],256],"8499":[[77],256],"8500":[[111],256],"8501":[[1488],256],"8502":[[1489],256],"8503":[[1490],256],"8504":[[1491],256],"8505":[[105],256],"8507":[[70,65,88],256],"8508":[[960],256],"8509":[[947],256],"8510":[[915],256],"8511":[[928],256],"8512":[[8721],256],"8517":[[68],256],"8518":[[100],256],"8519":[[101],256],"8520":[[105],256],"8521":[[106],256],"8528":[[49,8260,55],256],"8529":[[49,8260,57],256],"8530":[[49,8260,49,48],256],"8531":[[49,8260,51],256],"8532":[[50,8260,51],256],"8533":[[49,8260,53],256],"8534":[[50,8260,53],256],"8535":[[51,8260,53],256],"8536":[[52,8260,53],256],"8537":[[49,8260,54],256],"8538":[[53,8260,54],256],"8539":[[49,8260,56],256],"8540":[[51,8260,56],256],"8541":[[53,8260,56],256],"8542":[[55,8260,56],256],"8543":[[49,8260],256],"8544":[[73],256],"8545":[[73,73],256],"8546":[[73,73,73],256],"8547":[[73,86],256],"8548":[[86],256],"8549":[[86,73],256],"8550":[[86,73,73],256],"8551":[[86,73,73,73],256],"8552":[[73,88],256],"8553":[[88],256],"8554":[[88,73],256],"8555":[[88,73,73],256],"8556":[[76],256],"8557":[[67],256],"8558":[[68],256],"8559":[[77],256],"8560":[[105],256],"8561":[[105,105],256],"8562":[[105,105,105],256],"8563":[[105,118],256],"8564":[[118],256],"8565":[[118,105],256],"8566":[[118,105,105],256],"8567":[[118,105,105,105],256],"8568":[[105,120],256],"8569":[[120],256],"8570":[[120,105],256],"8571":[[120,105,105],256],"8572":[[108],256],"8573":[[99],256],"8574":[[100],256],"8575":[[109],256],"8585":[[48,8260,51],256],"8592":[null,null,{"824":8602}],"8594":[null,null,{"824":8603}],"8596":[null,null,{"824":8622}],"8602":[[8592,824]],"8603":[[8594,824]],"8622":[[8596,824]],"8653":[[8656,824]],"8654":[[8660,824]],"8655":[[8658,824]],"8656":[null,null,{"824":8653}],"8658":[null,null,{"824":8655}],"8660":[null,null,{"824":8654}]},"8704":{"8707":[null,null,{"824":8708}],"8708":[[8707,824]],"8712":[null,null,{"824":8713}],"8713":[[8712,824]],"8715":[null,null,{"824":8716}],"8716":[[8715,824]],"8739":[null,null,{"824":8740}],"8740":[[8739,824]],"8741":[null,null,{"824":8742}],"8742":[[8741,824]],"8748":[[8747,8747],256],"8749":[[8747,8747,8747],256],"8751":[[8750,8750],256],"8752":[[8750,8750,8750],256],"8764":[null,null,{"824":8769}],"8769":[[8764,824]],"8771":[null,null,{"824":8772}],"8772":[[8771,824]],"8773":[null,null,{"824":8775}],"8775":[[8773,824]],"8776":[null,null,{"824":8777}],"8777":[[8776,824]],"8781":[null,null,{"824":8813}],"8800":[[61,824]],"8801":[null,null,{"824":8802}],"8802":[[8801,824]],"8804":[null,null,{"824":8816}],"8805":[null,null,{"824":8817}],"8813":[[8781,824]],"8814":[[60,824]],"8815":[[62,824]],"8816":[[8804,824]],"8817":[[8805,824]],"8818":[null,null,{"824":8820}],"8819":[null,null,{"824":8821}],"8820":[[8818,824]],"8821":[[8819,824]],"8822":[null,null,{"824":8824}],"8823":[null,null,{"824":8825}],"8824":[[8822,824]],"8825":[[8823,824]],"8826":[null,null,{"824":8832}],"8827":[null,null,{"824":8833}],"8828":[null,null,{"824":8928}],"8829":[null,null,{"824":8929}],"8832":[[8826,824]],"8833":[[8827,824]],"8834":[null,null,{"824":8836}],"8835":[null,null,{"824":8837}],"8836":[[8834,824]],"8837":[[8835,824]],"8838":[null,null,{"824":8840}],"8839":[null,null,{"824":8841}],"8840":[[8838,824]],"8841":[[8839,824]],"8849":[null,null,{"824":8930}],"8850":[null,null,{"824":8931}],"8866":[null,null,{"824":8876}],"8872":[null,null,{"824":8877}],"8873":[null,null,{"824":8878}],"8875":[null,null,{"824":8879}],"8876":[[8866,824]],"8877":[[8872,824]],"8878":[[8873,824]],"8879":[[8875,824]],"8882":[null,null,{"824":8938}],"8883":[null,null,{"824":8939}],"8884":[null,null,{"824":8940}],"8885":[null,null,{"824":8941}],"8928":[[8828,824]],"8929":[[8829,824]],"8930":[[8849,824]],"8931":[[8850,824]],"8938":[[8882,824]],"8939":[[8883,824]],"8940":[[8884,824]],"8941":[[8885,824]]},"8960":{"9001":[[12296]],"9002":[[12297]]},"9216":{"9312":[[49],256],"9313":[[50],256],"9314":[[51],256],"9315":[[52],256],"9316":[[53],256],"9317":[[54],256],"9318":[[55],256],"9319":[[56],256],"9320":[[57],256],"9321":[[49,48],256],"9322":[[49,49],256],"9323":[[49,50],256],"9324":[[49,51],256],"9325":[[49,52],256],"9326":[[49,53],256],"9327":[[49,54],256],"9328":[[49,55],256],"9329":[[49,56],256],"9330":[[49,57],256],"9331":[[50,48],256],"9332":[[40,49,41],256],"9333":[[40,50,41],256],"9334":[[40,51,41],256],"9335":[[40,52,41],256],"9336":[[40,53,41],256],"9337":[[40,54,41],256],"9338":[[40,55,41],256],"9339":[[40,56,41],256],"9340":[[40,57,41],256],"9341":[[40,49,48,41],256],"9342":[[40,49,49,41],256],"9343":[[40,49,50,41],256],"9344":[[40,49,51,41],256],"9345":[[40,49,52,41],256],"9346":[[40,49,53,41],256],"9347":[[40,49,54,41],256],"9348":[[40,49,55,41],256],"9349":[[40,49,56,41],256],"9350":[[40,49,57,41],256],"9351":[[40,50,48,41],256],"9352":[[49,46],256],"9353":[[50,46],256],"9354":[[51,46],256],"9355":[[52,46],256],"9356":[[53,46],256],"9357":[[54,46],256],"9358":[[55,46],256],"9359":[[56,46],256],"9360":[[57,46],256],"9361":[[49,48,46],256],"9362":[[49,49,46],256],"9363":[[49,50,46],256],"9364":[[49,51,46],256],"9365":[[49,52,46],256],"9366":[[49,53,46],256],"9367":[[49,54,46],256],"9368":[[49,55,46],256],"9369":[[49,56,46],256],"9370":[[49,57,46],256],"9371":[[50,48,46],256],"9372":[[40,97,41],256],"9373":[[40,98,41],256],"9374":[[40,99,41],256],"9375":[[40,100,41],256],"9376":[[40,101,41],256],"9377":[[40,102,41],256],"9378":[[40,103,41],256],"9379":[[40,104,41],256],"9380":[[40,105,41],256],"9381":[[40,106,41],256],"9382":[[40,107,41],256],"9383":[[40,108,41],256],"9384":[[40,109,41],256],"9385":[[40,110,41],256],"9386":[[40,111,41],256],"9387":[[40,112,41],256],"9388":[[40,113,41],256],"9389":[[40,114,41],256],"9390":[[40,115,41],256],"9391":[[40,116,41],256],"9392":[[40,117,41],256],"9393":[[40,118,41],256],"9394":[[40,119,41],256],"9395":[[40,120,41],256],"9396":[[40,121,41],256],"9397":[[40,122,41],256],"9398":[[65],256],"9399":[[66],256],"9400":[[67],256],"9401":[[68],256],"9402":[[69],256],"9403":[[70],256],"9404":[[71],256],"9405":[[72],256],"9406":[[73],256],"9407":[[74],256],"9408":[[75],256],"9409":[[76],256],"9410":[[77],256],"9411":[[78],256],"9412":[[79],256],"9413":[[80],256],"9414":[[81],256],"9415":[[82],256],"9416":[[83],256],"9417":[[84],256],"9418":[[85],256],"9419":[[86],256],"9420":[[87],256],"9421":[[88],256],"9422":[[89],256],"9423":[[90],256],"9424":[[97],256],"9425":[[98],256],"9426":[[99],256],"9427":[[100],256],"9428":[[101],256],"9429":[[102],256],"9430":[[103],256],"9431":[[104],256],"9432":[[105],256],"9433":[[106],256],"9434":[[107],256],"9435":[[108],256],"9436":[[109],256],"9437":[[110],256],"9438":[[111],256],"9439":[[112],256],"9440":[[113],256],"9441":[[114],256],"9442":[[115],256],"9443":[[116],256],"9444":[[117],256],"9445":[[118],256],"9446":[[119],256],"9447":[[120],256],"9448":[[121],256],"9449":[[122],256],"9450":[[48],256]},"10752":{"10764":[[8747,8747,8747,8747],256],"10868":[[58,58,61],256],"10869":[[61,61],256],"10870":[[61,61,61],256],"10972":[[10973,824],512]},"11264":{"11388":[[106],256],"11389":[[86],256],"11503":[null,230],"11504":[null,230],"11505":[null,230]},"11520":{"11631":[[11617],256],"11647":[null,9],"11744":[null,230],"11745":[null,230],"11746":[null,230],"11747":[null,230],"11748":[null,230],"11749":[null,230],"11750":[null,230],"11751":[null,230],"11752":[null,230],"11753":[null,230],"11754":[null,230],"11755":[null,230],"11756":[null,230],"11757":[null,230],"11758":[null,230],"11759":[null,230],"11760":[null,230],"11761":[null,230],"11762":[null,230],"11763":[null,230],"11764":[null,230],"11765":[null,230],"11766":[null,230],"11767":[null,230],"11768":[null,230],"11769":[null,230],"11770":[null,230],"11771":[null,230],"11772":[null,230],"11773":[null,230],"11774":[null,230],"11775":[null,230]},"11776":{"11935":[[27597],256],"12019":[[40863],256]},"12032":{"12032":[[19968],256],"12033":[[20008],256],"12034":[[20022],256],"12035":[[20031],256],"12036":[[20057],256],"12037":[[20101],256],"12038":[[20108],256],"12039":[[20128],256],"12040":[[20154],256],"12041":[[20799],256],"12042":[[20837],256],"12043":[[20843],256],"12044":[[20866],256],"12045":[[20886],256],"12046":[[20907],256],"12047":[[20960],256],"12048":[[20981],256],"12049":[[20992],256],"12050":[[21147],256],"12051":[[21241],256],"12052":[[21269],256],"12053":[[21274],256],"12054":[[21304],256],"12055":[[21313],256],"12056":[[21340],256],"12057":[[21353],256],"12058":[[21378],256],"12059":[[21430],256],"12060":[[21448],256],"12061":[[21475],256],"12062":[[22231],256],"12063":[[22303],256],"12064":[[22763],256],"12065":[[22786],256],"12066":[[22794],256],"12067":[[22805],256],"12068":[[22823],256],"12069":[[22899],256],"12070":[[23376],256],"12071":[[23424],256],"12072":[[23544],256],"12073":[[23567],256],"12074":[[23586],256],"12075":[[23608],256],"12076":[[23662],256],"12077":[[23665],256],"12078":[[24027],256],"12079":[[24037],256],"12080":[[24049],256],"12081":[[24062],256],"12082":[[24178],256],"12083":[[24186],256],"12084":[[24191],256],"12085":[[24308],256],"12086":[[24318],256],"12087":[[24331],256],"12088":[[24339],256],"12089":[[24400],256],"12090":[[24417],256],"12091":[[24435],256],"12092":[[24515],256],"12093":[[25096],256],"12094":[[25142],256],"12095":[[25163],256],"12096":[[25903],256],"12097":[[25908],256],"12098":[[25991],256],"12099":[[26007],256],"12100":[[26020],256],"12101":[[26041],256],"12102":[[26080],256],"12103":[[26085],256],"12104":[[26352],256],"12105":[[26376],256],"12106":[[26408],256],"12107":[[27424],256],"12108":[[27490],256],"12109":[[27513],256],"12110":[[27571],256],"12111":[[27595],256],"12112":[[27604],256],"12113":[[27611],256],"12114":[[27663],256],"12115":[[27668],256],"12116":[[27700],256],"12117":[[28779],256],"12118":[[29226],256],"12119":[[29238],256],"12120":[[29243],256],"12121":[[29247],256],"12122":[[29255],256],"12123":[[29273],256],"12124":[[29275],256],"12125":[[29356],256],"12126":[[29572],256],"12127":[[29577],256],"12128":[[29916],256],"12129":[[29926],256],"12130":[[29976],256],"12131":[[29983],256],"12132":[[29992],256],"12133":[[30000],256],"12134":[[30091],256],"12135":[[30098],256],"12136":[[30326],256],"12137":[[30333],256],"12138":[[30382],256],"12139":[[30399],256],"12140":[[30446],256],"12141":[[30683],256],"12142":[[30690],256],"12143":[[30707],256],"12144":[[31034],256],"12145":[[31160],256],"12146":[[31166],256],"12147":[[31348],256],"12148":[[31435],256],"12149":[[31481],256],"12150":[[31859],256],"12151":[[31992],256],"12152":[[32566],256],"12153":[[32593],256],"12154":[[32650],256],"12155":[[32701],256],"12156":[[32769],256],"12157":[[32780],256],"12158":[[32786],256],"12159":[[32819],256],"12160":[[32895],256],"12161":[[32905],256],"12162":[[33251],256],"12163":[[33258],256],"12164":[[33267],256],"12165":[[33276],256],"12166":[[33292],256],"12167":[[33307],256],"12168":[[33311],256],"12169":[[33390],256],"12170":[[33394],256],"12171":[[33400],256],"12172":[[34381],256],"12173":[[34411],256],"12174":[[34880],256],"12175":[[34892],256],"12176":[[34915],256],"12177":[[35198],256],"12178":[[35211],256],"12179":[[35282],256],"12180":[[35328],256],"12181":[[35895],256],"12182":[[35910],256],"12183":[[35925],256],"12184":[[35960],256],"12185":[[35997],256],"12186":[[36196],256],"12187":[[36208],256],"12188":[[36275],256],"12189":[[36523],256],"12190":[[36554],256],"12191":[[36763],256],"12192":[[36784],256],"12193":[[36789],256],"12194":[[37009],256],"12195":[[37193],256],"12196":[[37318],256],"12197":[[37324],256],"12198":[[37329],256],"12199":[[38263],256],"12200":[[38272],256],"12201":[[38428],256],"12202":[[38582],256],"12203":[[38585],256],"12204":[[38632],256],"12205":[[38737],256],"12206":[[38750],256],"12207":[[38754],256],"12208":[[38761],256],"12209":[[38859],256],"12210":[[38893],256],"12211":[[38899],256],"12212":[[38913],256],"12213":[[39080],256],"12214":[[39131],256],"12215":[[39135],256],"12216":[[39318],256],"12217":[[39321],256],"12218":[[39340],256],"12219":[[39592],256],"12220":[[39640],256],"12221":[[39647],256],"12222":[[39717],256],"12223":[[39727],256],"12224":[[39730],256],"12225":[[39740],256],"12226":[[39770],256],"12227":[[40165],256],"12228":[[40565],256],"12229":[[40575],256],"12230":[[40613],256],"12231":[[40635],256],"12232":[[40643],256],"12233":[[40653],256],"12234":[[40657],256],"12235":[[40697],256],"12236":[[40701],256],"12237":[[40718],256],"12238":[[40723],256],"12239":[[40736],256],"12240":[[40763],256],"12241":[[40778],256],"12242":[[40786],256],"12243":[[40845],256],"12244":[[40860],256],"12245":[[40864],256]},"12288":{"12288":[[32],256],"12330":[null,218],"12331":[null,228],"12332":[null,232],"12333":[null,222],"12334":[null,224],"12335":[null,224],"12342":[[12306],256],"12344":[[21313],256],"12345":[[21316],256],"12346":[[21317],256],"12358":[null,null,{"12441":12436}],"12363":[null,null,{"12441":12364}],"12364":[[12363,12441]],"12365":[null,null,{"12441":12366}],"12366":[[12365,12441]],"12367":[null,null,{"12441":12368}],"12368":[[12367,12441]],"12369":[null,null,{"12441":12370}],"12370":[[12369,12441]],"12371":[null,null,{"12441":12372}],"12372":[[12371,12441]],"12373":[null,null,{"12441":12374}],"12374":[[12373,12441]],"12375":[null,null,{"12441":12376}],"12376":[[12375,12441]],"12377":[null,null,{"12441":12378}],"12378":[[12377,12441]],"12379":[null,null,{"12441":12380}],"12380":[[12379,12441]],"12381":[null,null,{"12441":12382}],"12382":[[12381,12441]],"12383":[null,null,{"12441":12384}],"12384":[[12383,12441]],"12385":[null,null,{"12441":12386}],"12386":[[12385,12441]],"12388":[null,null,{"12441":12389}],"12389":[[12388,12441]],"12390":[null,null,{"12441":12391}],"12391":[[12390,12441]],"12392":[null,null,{"12441":12393}],"12393":[[12392,12441]],"12399":[null,null,{"12441":12400,"12442":12401}],"12400":[[12399,12441]],"12401":[[12399,12442]],"12402":[null,null,{"12441":12403,"12442":12404}],"12403":[[12402,12441]],"12404":[[12402,12442]],"12405":[null,null,{"12441":12406,"12442":12407}],"12406":[[12405,12441]],"12407":[[12405,12442]],"12408":[null,null,{"12441":12409,"12442":12410}],"12409":[[12408,12441]],"12410":[[12408,12442]],"12411":[null,null,{"12441":12412,"12442":12413}],"12412":[[12411,12441]],"12413":[[12411,12442]],"12436":[[12358,12441]],"12441":[null,8],"12442":[null,8],"12443":[[32,12441],256],"12444":[[32,12442],256],"12445":[null,null,{"12441":12446}],"12446":[[12445,12441]],"12447":[[12424,12426],256],"12454":[null,null,{"12441":12532}],"12459":[null,null,{"12441":12460}],"12460":[[12459,12441]],"12461":[null,null,{"12441":12462}],"12462":[[12461,12441]],"12463":[null,null,{"12441":12464}],"12464":[[12463,12441]],"12465":[null,null,{"12441":12466}],"12466":[[12465,12441]],"12467":[null,null,{"12441":12468}],"12468":[[12467,12441]],"12469":[null,null,{"12441":12470}],"12470":[[12469,12441]],"12471":[null,null,{"12441":12472}],"12472":[[12471,12441]],"12473":[null,null,{"12441":12474}],"12474":[[12473,12441]],"12475":[null,null,{"12441":12476}],"12476":[[12475,12441]],"12477":[null,null,{"12441":12478}],"12478":[[12477,12441]],"12479":[null,null,{"12441":12480}],"12480":[[12479,12441]],"12481":[null,null,{"12441":12482}],"12482":[[12481,12441]],"12484":[null,null,{"12441":12485}],"12485":[[12484,12441]],"12486":[null,null,{"12441":12487}],"12487":[[12486,12441]],"12488":[null,null,{"12441":12489}],"12489":[[12488,12441]],"12495":[null,null,{"12441":12496,"12442":12497}],"12496":[[12495,12441]],"12497":[[12495,12442]],"12498":[null,null,{"12441":12499,"12442":12500}],"12499":[[12498,12441]],"12500":[[12498,12442]],"12501":[null,null,{"12441":12502,"12442":12503}],"12502":[[12501,12441]],"12503":[[12501,12442]],"12504":[null,null,{"12441":12505,"12442":12506}],"12505":[[12504,12441]],"12506":[[12504,12442]],"12507":[null,null,{"12441":12508,"12442":12509}],"12508":[[12507,12441]],"12509":[[12507,12442]],"12527":[null,null,{"12441":12535}],"12528":[null,null,{"12441":12536}],"12529":[null,null,{"12441":12537}],"12530":[null,null,{"12441":12538}],"12532":[[12454,12441]],"12535":[[12527,12441]],"12536":[[12528,12441]],"12537":[[12529,12441]],"12538":[[12530,12441]],"12541":[null,null,{"12441":12542}],"12542":[[12541,12441]],"12543":[[12467,12488],256]},"12544":{"12593":[[4352],256],"12594":[[4353],256],"12595":[[4522],256],"12596":[[4354],256],"12597":[[4524],256],"12598":[[4525],256],"12599":[[4355],256],"12600":[[4356],256],"12601":[[4357],256],"12602":[[4528],256],"12603":[[4529],256],"12604":[[4530],256],"12605":[[4531],256],"12606":[[4532],256],"12607":[[4533],256],"12608":[[4378],256],"12609":[[4358],256],"12610":[[4359],256],"12611":[[4360],256],"12612":[[4385],256],"12613":[[4361],256],"12614":[[4362],256],"12615":[[4363],256],"12616":[[4364],256],"12617":[[4365],256],"12618":[[4366],256],"12619":[[4367],256],"12620":[[4368],256],"12621":[[4369],256],"12622":[[4370],256],"12623":[[4449],256],"12624":[[4450],256],"12625":[[4451],256],"12626":[[4452],256],"12627":[[4453],256],"12628":[[4454],256],"12629":[[4455],256],"12630":[[4456],256],"12631":[[4457],256],"12632":[[4458],256],"12633":[[4459],256],"12634":[[4460],256],"12635":[[4461],256],"12636":[[4462],256],"12637":[[4463],256],"12638":[[4464],256],"12639":[[4465],256],"12640":[[4466],256],"12641":[[4467],256],"12642":[[4468],256],"12643":[[4469],256],"12644":[[4448],256],"12645":[[4372],256],"12646":[[4373],256],"12647":[[4551],256],"12648":[[4552],256],"12649":[[4556],256],"12650":[[4558],256],"12651":[[4563],256],"12652":[[4567],256],"12653":[[4569],256],"12654":[[4380],256],"12655":[[4573],256],"12656":[[4575],256],"12657":[[4381],256],"12658":[[4382],256],"12659":[[4384],256],"12660":[[4386],256],"12661":[[4387],256],"12662":[[4391],256],"12663":[[4393],256],"12664":[[4395],256],"12665":[[4396],256],"12666":[[4397],256],"12667":[[4398],256],"12668":[[4399],256],"12669":[[4402],256],"12670":[[4406],256],"12671":[[4416],256],"12672":[[4423],256],"12673":[[4428],256],"12674":[[4593],256],"12675":[[4594],256],"12676":[[4439],256],"12677":[[4440],256],"12678":[[4441],256],"12679":[[4484],256],"12680":[[4485],256],"12681":[[4488],256],"12682":[[4497],256],"12683":[[4498],256],"12684":[[4500],256],"12685":[[4510],256],"12686":[[4513],256],"12690":[[19968],256],"12691":[[20108],256],"12692":[[19977],256],"12693":[[22235],256],"12694":[[19978],256],"12695":[[20013],256],"12696":[[19979],256],"12697":[[30002],256],"12698":[[20057],256],"12699":[[19993],256],"12700":[[19969],256],"12701":[[22825],256],"12702":[[22320],256],"12703":[[20154],256]},"12800":{"12800":[[40,4352,41],256],"12801":[[40,4354,41],256],"12802":[[40,4355,41],256],"12803":[[40,4357,41],256],"12804":[[40,4358,41],256],"12805":[[40,4359,41],256],"12806":[[40,4361,41],256],"12807":[[40,4363,41],256],"12808":[[40,4364,41],256],"12809":[[40,4366,41],256],"12810":[[40,4367,41],256],"12811":[[40,4368,41],256],"12812":[[40,4369,41],256],"12813":[[40,4370,41],256],"12814":[[40,4352,4449,41],256],"12815":[[40,4354,4449,41],256],"12816":[[40,4355,4449,41],256],"12817":[[40,4357,4449,41],256],"12818":[[40,4358,4449,41],256],"12819":[[40,4359,4449,41],256],"12820":[[40,4361,4449,41],256],"12821":[[40,4363,4449,41],256],"12822":[[40,4364,4449,41],256],"12823":[[40,4366,4449,41],256],"12824":[[40,4367,4449,41],256],"12825":[[40,4368,4449,41],256],"12826":[[40,4369,4449,41],256],"12827":[[40,4370,4449,41],256],"12828":[[40,4364,4462,41],256],"12829":[[40,4363,4457,4364,4453,4523,41],256],"12830":[[40,4363,4457,4370,4462,41],256],"12832":[[40,19968,41],256],"12833":[[40,20108,41],256],"12834":[[40,19977,41],256],"12835":[[40,22235,41],256],"12836":[[40,20116,41],256],"12837":[[40,20845,41],256],"12838":[[40,19971,41],256],"12839":[[40,20843,41],256],"12840":[[40,20061,41],256],"12841":[[40,21313,41],256],"12842":[[40,26376,41],256],"12843":[[40,28779,41],256],"12844":[[40,27700,41],256],"12845":[[40,26408,41],256],"12846":[[40,37329,41],256],"12847":[[40,22303,41],256],"12848":[[40,26085,41],256],"12849":[[40,26666,41],256],"12850":[[40,26377,41],256],"12851":[[40,31038,41],256],"12852":[[40,21517,41],256],"12853":[[40,29305,41],256],"12854":[[40,36001,41],256],"12855":[[40,31069,41],256],"12856":[[40,21172,41],256],"12857":[[40,20195,41],256],"12858":[[40,21628,41],256],"12859":[[40,23398,41],256],"12860":[[40,30435,41],256],"12861":[[40,20225,41],256],"12862":[[40,36039,41],256],"12863":[[40,21332,41],256],"12864":[[40,31085,41],256],"12865":[[40,20241,41],256],"12866":[[40,33258,41],256],"12867":[[40,33267,41],256],"12868":[[21839],256],"12869":[[24188],256],"12870":[[25991],256],"12871":[[31631],256],"12880":[[80,84,69],256],"12881":[[50,49],256],"12882":[[50,50],256],"12883":[[50,51],256],"12884":[[50,52],256],"12885":[[50,53],256],"12886":[[50,54],256],"12887":[[50,55],256],"12888":[[50,56],256],"12889":[[50,57],256],"12890":[[51,48],256],"12891":[[51,49],256],"12892":[[51,50],256],"12893":[[51,51],256],"12894":[[51,52],256],"12895":[[51,53],256],"12896":[[4352],256],"12897":[[4354],256],"12898":[[4355],256],"12899":[[4357],256],"12900":[[4358],256],"12901":[[4359],256],"12902":[[4361],256],"12903":[[4363],256],"12904":[[4364],256],"12905":[[4366],256],"12906":[[4367],256],"12907":[[4368],256],"12908":[[4369],256],"12909":[[4370],256],"12910":[[4352,4449],256],"12911":[[4354,4449],256],"12912":[[4355,4449],256],"12913":[[4357,4449],256],"12914":[[4358,4449],256],"12915":[[4359,4449],256],"12916":[[4361,4449],256],"12917":[[4363,4449],256],"12918":[[4364,4449],256],"12919":[[4366,4449],256],"12920":[[4367,4449],256],"12921":[[4368,4449],256],"12922":[[4369,4449],256],"12923":[[4370,4449],256],"12924":[[4366,4449,4535,4352,4457],256],"12925":[[4364,4462,4363,4468],256],"12926":[[4363,4462],256],"12928":[[19968],256],"12929":[[20108],256],"12930":[[19977],256],"12931":[[22235],256],"12932":[[20116],256],"12933":[[20845],256],"12934":[[19971],256],"12935":[[20843],256],"12936":[[20061],256],"12937":[[21313],256],"12938":[[26376],256],"12939":[[28779],256],"12940":[[27700],256],"12941":[[26408],256],"12942":[[37329],256],"12943":[[22303],256],"12944":[[26085],256],"12945":[[26666],256],"12946":[[26377],256],"12947":[[31038],256],"12948":[[21517],256],"12949":[[29305],256],"12950":[[36001],256],"12951":[[31069],256],"12952":[[21172],256],"12953":[[31192],256],"12954":[[30007],256],"12955":[[22899],256],"12956":[[36969],256],"12957":[[20778],256],"12958":[[21360],256],"12959":[[27880],256],"12960":[[38917],256],"12961":[[20241],256],"12962":[[20889],256],"12963":[[27491],256],"12964":[[19978],256],"12965":[[20013],256],"12966":[[19979],256],"12967":[[24038],256],"12968":[[21491],256],"12969":[[21307],256],"12970":[[23447],256],"12971":[[23398],256],"12972":[[30435],256],"12973":[[20225],256],"12974":[[36039],256],"12975":[[21332],256],"12976":[[22812],256],"12977":[[51,54],256],"12978":[[51,55],256],"12979":[[51,56],256],"12980":[[51,57],256],"12981":[[52,48],256],"12982":[[52,49],256],"12983":[[52,50],256],"12984":[[52,51],256],"12985":[[52,52],256],"12986":[[52,53],256],"12987":[[52,54],256],"12988":[[52,55],256],"12989":[[52,56],256],"12990":[[52,57],256],"12991":[[53,48],256],"12992":[[49,26376],256],"12993":[[50,26376],256],"12994":[[51,26376],256],"12995":[[52,26376],256],"12996":[[53,26376],256],"12997":[[54,26376],256],"12998":[[55,26376],256],"12999":[[56,26376],256],"13000":[[57,26376],256],"13001":[[49,48,26376],256],"13002":[[49,49,26376],256],"13003":[[49,50,26376],256],"13004":[[72,103],256],"13005":[[101,114,103],256],"13006":[[101,86],256],"13007":[[76,84,68],256],"13008":[[12450],256],"13009":[[12452],256],"13010":[[12454],256],"13011":[[12456],256],"13012":[[12458],256],"13013":[[12459],256],"13014":[[12461],256],"13015":[[12463],256],"13016":[[12465],256],"13017":[[12467],256],"13018":[[12469],256],"13019":[[12471],256],"13020":[[12473],256],"13021":[[12475],256],"13022":[[12477],256],"13023":[[12479],256],"13024":[[12481],256],"13025":[[12484],256],"13026":[[12486],256],"13027":[[12488],256],"13028":[[12490],256],"13029":[[12491],256],"13030":[[12492],256],"13031":[[12493],256],"13032":[[12494],256],"13033":[[12495],256],"13034":[[12498],256],"13035":[[12501],256],"13036":[[12504],256],"13037":[[12507],256],"13038":[[12510],256],"13039":[[12511],256],"13040":[[12512],256],"13041":[[12513],256],"13042":[[12514],256],"13043":[[12516],256],"13044":[[12518],256],"13045":[[12520],256],"13046":[[12521],256],"13047":[[12522],256],"13048":[[12523],256],"13049":[[12524],256],"13050":[[12525],256],"13051":[[12527],256],"13052":[[12528],256],"13053":[[12529],256],"13054":[[12530],256]},"13056":{"13056":[[12450,12497,12540,12488],256],"13057":[[12450,12523,12501,12449],256],"13058":[[12450,12531,12506,12450],256],"13059":[[12450,12540,12523],256],"13060":[[12452,12491,12531,12464],256],"13061":[[12452,12531,12481],256],"13062":[[12454,12457,12531],256],"13063":[[12456,12473,12463,12540,12489],256],"13064":[[12456,12540,12459,12540],256],"13065":[[12458,12531,12473],256],"13066":[[12458,12540,12512],256],"13067":[[12459,12452,12522],256],"13068":[[12459,12521,12483,12488],256],"13069":[[12459,12525,12522,12540],256],"13070":[[12460,12525,12531],256],"13071":[[12460,12531,12510],256],"13072":[[12462,12460],256],"13073":[[12462,12491,12540],256],"13074":[[12461,12517,12522,12540],256],"13075":[[12462,12523,12480,12540],256],"13076":[[12461,12525],256],"13077":[[12461,12525,12464,12521,12512],256],"13078":[[12461,12525,12513,12540,12488,12523],256],"13079":[[12461,12525,12527,12483,12488],256],"13080":[[12464,12521,12512],256],"13081":[[12464,12521,12512,12488,12531],256],"13082":[[12463,12523,12476,12452,12525],256],"13083":[[12463,12525,12540,12493],256],"13084":[[12465,12540,12473],256],"13085":[[12467,12523,12490],256],"13086":[[12467,12540,12509],256],"13087":[[12469,12452,12463,12523],256],"13088":[[12469,12531,12481,12540,12512],256],"13089":[[12471,12522,12531,12464],256],"13090":[[12475,12531,12481],256],"13091":[[12475,12531,12488],256],"13092":[[12480,12540,12473],256],"13093":[[12487,12471],256],"13094":[[12489,12523],256],"13095":[[12488,12531],256],"13096":[[12490,12494],256],"13097":[[12494,12483,12488],256],"13098":[[12495,12452,12484],256],"13099":[[12497,12540,12475,12531,12488],256],"13100":[[12497,12540,12484],256],"13101":[[12496,12540,12524,12523],256],"13102":[[12500,12450,12473,12488,12523],256],"13103":[[12500,12463,12523],256],"13104":[[12500,12467],256],"13105":[[12499,12523],256],"13106":[[12501,12449,12521,12483,12489],256],"13107":[[12501,12451,12540,12488],256],"13108":[[12502,12483,12471,12455,12523],256],"13109":[[12501,12521,12531],256],"13110":[[12504,12463,12479,12540,12523],256],"13111":[[12506,12477],256],"13112":[[12506,12491,12498],256],"13113":[[12504,12523,12484],256],"13114":[[12506,12531,12473],256],"13115":[[12506,12540,12472],256],"13116":[[12505,12540,12479],256],"13117":[[12509,12452,12531,12488],256],"13118":[[12508,12523,12488],256],"13119":[[12507,12531],256],"13120":[[12509,12531,12489],256],"13121":[[12507,12540,12523],256],"13122":[[12507,12540,12531],256],"13123":[[12510,12452,12463,12525],256],"13124":[[12510,12452,12523],256],"13125":[[12510,12483,12495],256],"13126":[[12510,12523,12463],256],"13127":[[12510,12531,12471,12519,12531],256],"13128":[[12511,12463,12525,12531],256],"13129":[[12511,12522],256],"13130":[[12511,12522,12496,12540,12523],256],"13131":[[12513,12460],256],"13132":[[12513,12460,12488,12531],256],"13133":[[12513,12540,12488,12523],256],"13134":[[12516,12540,12489],256],"13135":[[12516,12540,12523],256],"13136":[[12518,12450,12531],256],"13137":[[12522,12483,12488,12523],256],"13138":[[12522,12521],256],"13139":[[12523,12500,12540],256],"13140":[[12523,12540,12502,12523],256],"13141":[[12524,12512],256],"13142":[[12524,12531,12488,12466,12531],256],"13143":[[12527,12483,12488],256],"13144":[[48,28857],256],"13145":[[49,28857],256],"13146":[[50,28857],256],"13147":[[51,28857],256],"13148":[[52,28857],256],"13149":[[53,28857],256],"13150":[[54,28857],256],"13151":[[55,28857],256],"13152":[[56,28857],256],"13153":[[57,28857],256],"13154":[[49,48,28857],256],"13155":[[49,49,28857],256],"13156":[[49,50,28857],256],"13157":[[49,51,28857],256],"13158":[[49,52,28857],256],"13159":[[49,53,28857],256],"13160":[[49,54,28857],256],"13161":[[49,55,28857],256],"13162":[[49,56,28857],256],"13163":[[49,57,28857],256],"13164":[[50,48,28857],256],"13165":[[50,49,28857],256],"13166":[[50,50,28857],256],"13167":[[50,51,28857],256],"13168":[[50,52,28857],256],"13169":[[104,80,97],256],"13170":[[100,97],256],"13171":[[65,85],256],"13172":[[98,97,114],256],"13173":[[111,86],256],"13174":[[112,99],256],"13175":[[100,109],256],"13176":[[100,109,178],256],"13177":[[100,109,179],256],"13178":[[73,85],256],"13179":[[24179,25104],256],"13180":[[26157,21644],256],"13181":[[22823,27491],256],"13182":[[26126,27835],256],"13183":[[26666,24335,20250,31038],256],"13184":[[112,65],256],"13185":[[110,65],256],"13186":[[956,65],256],"13187":[[109,65],256],"13188":[[107,65],256],"13189":[[75,66],256],"13190":[[77,66],256],"13191":[[71,66],256],"13192":[[99,97,108],256],"13193":[[107,99,97,108],256],"13194":[[112,70],256],"13195":[[110,70],256],"13196":[[956,70],256],"13197":[[956,103],256],"13198":[[109,103],256],"13199":[[107,103],256],"13200":[[72,122],256],"13201":[[107,72,122],256],"13202":[[77,72,122],256],"13203":[[71,72,122],256],"13204":[[84,72,122],256],"13205":[[956,8467],256],"13206":[[109,8467],256],"13207":[[100,8467],256],"13208":[[107,8467],256],"13209":[[102,109],256],"13210":[[110,109],256],"13211":[[956,109],256],"13212":[[109,109],256],"13213":[[99,109],256],"13214":[[107,109],256],"13215":[[109,109,178],256],"13216":[[99,109,178],256],"13217":[[109,178],256],"13218":[[107,109,178],256],"13219":[[109,109,179],256],"13220":[[99,109,179],256],"13221":[[109,179],256],"13222":[[107,109,179],256],"13223":[[109,8725,115],256],"13224":[[109,8725,115,178],256],"13225":[[80,97],256],"13226":[[107,80,97],256],"13227":[[77,80,97],256],"13228":[[71,80,97],256],"13229":[[114,97,100],256],"13230":[[114,97,100,8725,115],256],"13231":[[114,97,100,8725,115,178],256],"13232":[[112,115],256],"13233":[[110,115],256],"13234":[[956,115],256],"13235":[[109,115],256],"13236":[[112,86],256],"13237":[[110,86],256],"13238":[[956,86],256],"13239":[[109,86],256],"13240":[[107,86],256],"13241":[[77,86],256],"13242":[[112,87],256],"13243":[[110,87],256],"13244":[[956,87],256],"13245":[[109,87],256],"13246":[[107,87],256],"13247":[[77,87],256],"13248":[[107,937],256],"13249":[[77,937],256],"13250":[[97,46,109,46],256],"13251":[[66,113],256],"13252":[[99,99],256],"13253":[[99,100],256],"13254":[[67,8725,107,103],256],"13255":[[67,111,46],256],"13256":[[100,66],256],"13257":[[71,121],256],"13258":[[104,97],256],"13259":[[72,80],256],"13260":[[105,110],256],"13261":[[75,75],256],"13262":[[75,77],256],"13263":[[107,116],256],"13264":[[108,109],256],"13265":[[108,110],256],"13266":[[108,111,103],256],"13267":[[108,120],256],"13268":[[109,98],256],"13269":[[109,105,108],256],"13270":[[109,111,108],256],"13271":[[80,72],256],"13272":[[112,46,109,46],256],"13273":[[80,80,77],256],"13274":[[80,82],256],"13275":[[115,114],256],"13276":[[83,118],256],"13277":[[87,98],256],"13278":[[86,8725,109],256],"13279":[[65,8725,109],256],"13280":[[49,26085],256],"13281":[[50,26085],256],"13282":[[51,26085],256],"13283":[[52,26085],256],"13284":[[53,26085],256],"13285":[[54,26085],256],"13286":[[55,26085],256],"13287":[[56,26085],256],"13288":[[57,26085],256],"13289":[[49,48,26085],256],"13290":[[49,49,26085],256],"13291":[[49,50,26085],256],"13292":[[49,51,26085],256],"13293":[[49,52,26085],256],"13294":[[49,53,26085],256],"13295":[[49,54,26085],256],"13296":[[49,55,26085],256],"13297":[[49,56,26085],256],"13298":[[49,57,26085],256],"13299":[[50,48,26085],256],"13300":[[50,49,26085],256],"13301":[[50,50,26085],256],"13302":[[50,51,26085],256],"13303":[[50,52,26085],256],"13304":[[50,53,26085],256],"13305":[[50,54,26085],256],"13306":[[50,55,26085],256],"13307":[[50,56,26085],256],"13308":[[50,57,26085],256],"13309":[[51,48,26085],256],"13310":[[51,49,26085],256],"13311":[[103,97,108],256]},"27136":{"92912":[null,1],"92913":[null,1],"92914":[null,1],"92915":[null,1],"92916":[null,1]},"27392":{"92976":[null,230],"92977":[null,230],"92978":[null,230],"92979":[null,230],"92980":[null,230],"92981":[null,230],"92982":[null,230]},"42496":{"42607":[null,230],"42612":[null,230],"42613":[null,230],"42614":[null,230],"42615":[null,230],"42616":[null,230],"42617":[null,230],"42618":[null,230],"42619":[null,230],"42620":[null,230],"42621":[null,230],"42652":[[1098],256],"42653":[[1100],256],"42655":[null,230],"42736":[null,230],"42737":[null,230]},"42752":{"42864":[[42863],256],"43000":[[294],256],"43001":[[339],256]},"43008":{"43014":[null,9],"43204":[null,9],"43232":[null,230],"43233":[null,230],"43234":[null,230],"43235":[null,230],"43236":[null,230],"43237":[null,230],"43238":[null,230],"43239":[null,230],"43240":[null,230],"43241":[null,230],"43242":[null,230],"43243":[null,230],"43244":[null,230],"43245":[null,230],"43246":[null,230],"43247":[null,230],"43248":[null,230],"43249":[null,230]},"43264":{"43307":[null,220],"43308":[null,220],"43309":[null,220],"43347":[null,9],"43443":[null,7],"43456":[null,9]},"43520":{"43696":[null,230],"43698":[null,230],"43699":[null,230],"43700":[null,220],"43703":[null,230],"43704":[null,230],"43710":[null,230],"43711":[null,230],"43713":[null,230],"43766":[null,9]},"43776":{"43868":[[42791],256],"43869":[[43831],256],"43870":[[619],256],"43871":[[43858],256],"44013":[null,9]},"48128":{"113822":[null,1]},"53504":{"119134":[[119127,119141],512],"119135":[[119128,119141],512],"119136":[[119135,119150],512],"119137":[[119135,119151],512],"119138":[[119135,119152],512],"119139":[[119135,119153],512],"119140":[[119135,119154],512],"119141":[null,216],"119142":[null,216],"119143":[null,1],"119144":[null,1],"119145":[null,1],"119149":[null,226],"119150":[null,216],"119151":[null,216],"119152":[null,216],"119153":[null,216],"119154":[null,216],"119163":[null,220],"119164":[null,220],"119165":[null,220],"119166":[null,220],"119167":[null,220],"119168":[null,220],"119169":[null,220],"119170":[null,220],"119173":[null,230],"119174":[null,230],"119175":[null,230],"119176":[null,230],"119177":[null,230],"119178":[null,220],"119179":[null,220],"119210":[null,230],"119211":[null,230],"119212":[null,230],"119213":[null,230],"119227":[[119225,119141],512],"119228":[[119226,119141],512],"119229":[[119227,119150],512],"119230":[[119228,119150],512],"119231":[[119227,119151],512],"119232":[[119228,119151],512]},"53760":{"119362":[null,230],"119363":[null,230],"119364":[null,230]},"54272":{"119808":[[65],256],"119809":[[66],256],"119810":[[67],256],"119811":[[68],256],"119812":[[69],256],"119813":[[70],256],"119814":[[71],256],"119815":[[72],256],"119816":[[73],256],"119817":[[74],256],"119818":[[75],256],"119819":[[76],256],"119820":[[77],256],"119821":[[78],256],"119822":[[79],256],"119823":[[80],256],"119824":[[81],256],"119825":[[82],256],"119826":[[83],256],"119827":[[84],256],"119828":[[85],256],"119829":[[86],256],"119830":[[87],256],"119831":[[88],256],"119832":[[89],256],"119833":[[90],256],"119834":[[97],256],"119835":[[98],256],"119836":[[99],256],"119837":[[100],256],"119838":[[101],256],"119839":[[102],256],"119840":[[103],256],"119841":[[104],256],"119842":[[105],256],"119843":[[106],256],"119844":[[107],256],"119845":[[108],256],"119846":[[109],256],"119847":[[110],256],"119848":[[111],256],"119849":[[112],256],"119850":[[113],256],"119851":[[114],256],"119852":[[115],256],"119853":[[116],256],"119854":[[117],256],"119855":[[118],256],"119856":[[119],256],"119857":[[120],256],"119858":[[121],256],"119859":[[122],256],"119860":[[65],256],"119861":[[66],256],"119862":[[67],256],"119863":[[68],256],"119864":[[69],256],"119865":[[70],256],"119866":[[71],256],"119867":[[72],256],"119868":[[73],256],"119869":[[74],256],"119870":[[75],256],"119871":[[76],256],"119872":[[77],256],"119873":[[78],256],"119874":[[79],256],"119875":[[80],256],"119876":[[81],256],"119877":[[82],256],"119878":[[83],256],"119879":[[84],256],"119880":[[85],256],"119881":[[86],256],"119882":[[87],256],"119883":[[88],256],"119884":[[89],256],"119885":[[90],256],"119886":[[97],256],"119887":[[98],256],"119888":[[99],256],"119889":[[100],256],"119890":[[101],256],"119891":[[102],256],"119892":[[103],256],"119894":[[105],256],"119895":[[106],256],"119896":[[107],256],"119897":[[108],256],"119898":[[109],256],"119899":[[110],256],"119900":[[111],256],"119901":[[112],256],"119902":[[113],256],"119903":[[114],256],"119904":[[115],256],"119905":[[116],256],"119906":[[117],256],"119907":[[118],256],"119908":[[119],256],"119909":[[120],256],"119910":[[121],256],"119911":[[122],256],"119912":[[65],256],"119913":[[66],256],"119914":[[67],256],"119915":[[68],256],"119916":[[69],256],"119917":[[70],256],"119918":[[71],256],"119919":[[72],256],"119920":[[73],256],"119921":[[74],256],"119922":[[75],256],"119923":[[76],256],"119924":[[77],256],"119925":[[78],256],"119926":[[79],256],"119927":[[80],256],"119928":[[81],256],"119929":[[82],256],"119930":[[83],256],"119931":[[84],256],"119932":[[85],256],"119933":[[86],256],"119934":[[87],256],"119935":[[88],256],"119936":[[89],256],"119937":[[90],256],"119938":[[97],256],"119939":[[98],256],"119940":[[99],256],"119941":[[100],256],"119942":[[101],256],"119943":[[102],256],"119944":[[103],256],"119945":[[104],256],"119946":[[105],256],"119947":[[106],256],"119948":[[107],256],"119949":[[108],256],"119950":[[109],256],"119951":[[110],256],"119952":[[111],256],"119953":[[112],256],"119954":[[113],256],"119955":[[114],256],"119956":[[115],256],"119957":[[116],256],"119958":[[117],256],"119959":[[118],256],"119960":[[119],256],"119961":[[120],256],"119962":[[121],256],"119963":[[122],256],"119964":[[65],256],"119966":[[67],256],"119967":[[68],256],"119970":[[71],256],"119973":[[74],256],"119974":[[75],256],"119977":[[78],256],"119978":[[79],256],"119979":[[80],256],"119980":[[81],256],"119982":[[83],256],"119983":[[84],256],"119984":[[85],256],"119985":[[86],256],"119986":[[87],256],"119987":[[88],256],"119988":[[89],256],"119989":[[90],256],"119990":[[97],256],"119991":[[98],256],"119992":[[99],256],"119993":[[100],256],"119995":[[102],256],"119997":[[104],256],"119998":[[105],256],"119999":[[106],256],"120000":[[107],256],"120001":[[108],256],"120002":[[109],256],"120003":[[110],256],"120005":[[112],256],"120006":[[113],256],"120007":[[114],256],"120008":[[115],256],"120009":[[116],256],"120010":[[117],256],"120011":[[118],256],"120012":[[119],256],"120013":[[120],256],"120014":[[121],256],"120015":[[122],256],"120016":[[65],256],"120017":[[66],256],"120018":[[67],256],"120019":[[68],256],"120020":[[69],256],"120021":[[70],256],"120022":[[71],256],"120023":[[72],256],"120024":[[73],256],"120025":[[74],256],"120026":[[75],256],"120027":[[76],256],"120028":[[77],256],"120029":[[78],256],"120030":[[79],256],"120031":[[80],256],"120032":[[81],256],"120033":[[82],256],"120034":[[83],256],"120035":[[84],256],"120036":[[85],256],"120037":[[86],256],"120038":[[87],256],"120039":[[88],256],"120040":[[89],256],"120041":[[90],256],"120042":[[97],256],"120043":[[98],256],"120044":[[99],256],"120045":[[100],256],"120046":[[101],256],"120047":[[102],256],"120048":[[103],256],"120049":[[104],256],"120050":[[105],256],"120051":[[106],256],"120052":[[107],256],"120053":[[108],256],"120054":[[109],256],"120055":[[110],256],"120056":[[111],256],"120057":[[112],256],"120058":[[113],256],"120059":[[114],256],"120060":[[115],256],"120061":[[116],256],"120062":[[117],256],"120063":[[118],256]},"54528":{"120064":[[119],256],"120065":[[120],256],"120066":[[121],256],"120067":[[122],256],"120068":[[65],256],"120069":[[66],256],"120071":[[68],256],"120072":[[69],256],"120073":[[70],256],"120074":[[71],256],"120077":[[74],256],"120078":[[75],256],"120079":[[76],256],"120080":[[77],256],"120081":[[78],256],"120082":[[79],256],"120083":[[80],256],"120084":[[81],256],"120086":[[83],256],"120087":[[84],256],"120088":[[85],256],"120089":[[86],256],"120090":[[87],256],"120091":[[88],256],"120092":[[89],256],"120094":[[97],256],"120095":[[98],256],"120096":[[99],256],"120097":[[100],256],"120098":[[101],256],"120099":[[102],256],"120100":[[103],256],"120101":[[104],256],"120102":[[105],256],"120103":[[106],256],"120104":[[107],256],"120105":[[108],256],"120106":[[109],256],"120107":[[110],256],"120108":[[111],256],"120109":[[112],256],"120110":[[113],256],"120111":[[114],256],"120112":[[115],256],"120113":[[116],256],"120114":[[117],256],"120115":[[118],256],"120116":[[119],256],"120117":[[120],256],"120118":[[121],256],"120119":[[122],256],"120120":[[65],256],"120121":[[66],256],"120123":[[68],256],"120124":[[69],256],"120125":[[70],256],"120126":[[71],256],"120128":[[73],256],"120129":[[74],256],"120130":[[75],256],"120131":[[76],256],"120132":[[77],256],"120134":[[79],256],"120138":[[83],256],"120139":[[84],256],"120140":[[85],256],"120141":[[86],256],"120142":[[87],256],"120143":[[88],256],"120144":[[89],256],"120146":[[97],256],"120147":[[98],256],"120148":[[99],256],"120149":[[100],256],"120150":[[101],256],"120151":[[102],256],"120152":[[103],256],"120153":[[104],256],"120154":[[105],256],"120155":[[106],256],"120156":[[107],256],"120157":[[108],256],"120158":[[109],256],"120159":[[110],256],"120160":[[111],256],"120161":[[112],256],"120162":[[113],256],"120163":[[114],256],"120164":[[115],256],"120165":[[116],256],"120166":[[117],256],"120167":[[118],256],"120168":[[119],256],"120169":[[120],256],"120170":[[121],256],"120171":[[122],256],"120172":[[65],256],"120173":[[66],256],"120174":[[67],256],"120175":[[68],256],"120176":[[69],256],"120177":[[70],256],"120178":[[71],256],"120179":[[72],256],"120180":[[73],256],"120181":[[74],256],"120182":[[75],256],"120183":[[76],256],"120184":[[77],256],"120185":[[78],256],"120186":[[79],256],"120187":[[80],256],"120188":[[81],256],"120189":[[82],256],"120190":[[83],256],"120191":[[84],256],"120192":[[85],256],"120193":[[86],256],"120194":[[87],256],"120195":[[88],256],"120196":[[89],256],"120197":[[90],256],"120198":[[97],256],"120199":[[98],256],"120200":[[99],256],"120201":[[100],256],"120202":[[101],256],"120203":[[102],256],"120204":[[103],256],"120205":[[104],256],"120206":[[105],256],"120207":[[106],256],"120208":[[107],256],"120209":[[108],256],"120210":[[109],256],"120211":[[110],256],"120212":[[111],256],"120213":[[112],256],"120214":[[113],256],"120215":[[114],256],"120216":[[115],256],"120217":[[116],256],"120218":[[117],256],"120219":[[118],256],"120220":[[119],256],"120221":[[120],256],"120222":[[121],256],"120223":[[122],256],"120224":[[65],256],"120225":[[66],256],"120226":[[67],256],"120227":[[68],256],"120228":[[69],256],"120229":[[70],256],"120230":[[71],256],"120231":[[72],256],"120232":[[73],256],"120233":[[74],256],"120234":[[75],256],"120235":[[76],256],"120236":[[77],256],"120237":[[78],256],"120238":[[79],256],"120239":[[80],256],"120240":[[81],256],"120241":[[82],256],"120242":[[83],256],"120243":[[84],256],"120244":[[85],256],"120245":[[86],256],"120246":[[87],256],"120247":[[88],256],"120248":[[89],256],"120249":[[90],256],"120250":[[97],256],"120251":[[98],256],"120252":[[99],256],"120253":[[100],256],"120254":[[101],256],"120255":[[102],256],"120256":[[103],256],"120257":[[104],256],"120258":[[105],256],"120259":[[106],256],"120260":[[107],256],"120261":[[108],256],"120262":[[109],256],"120263":[[110],256],"120264":[[111],256],"120265":[[112],256],"120266":[[113],256],"120267":[[114],256],"120268":[[115],256],"120269":[[116],256],"120270":[[117],256],"120271":[[118],256],"120272":[[119],256],"120273":[[120],256],"120274":[[121],256],"120275":[[122],256],"120276":[[65],256],"120277":[[66],256],"120278":[[67],256],"120279":[[68],256],"120280":[[69],256],"120281":[[70],256],"120282":[[71],256],"120283":[[72],256],"120284":[[73],256],"120285":[[74],256],"120286":[[75],256],"120287":[[76],256],"120288":[[77],256],"120289":[[78],256],"120290":[[79],256],"120291":[[80],256],"120292":[[81],256],"120293":[[82],256],"120294":[[83],256],"120295":[[84],256],"120296":[[85],256],"120297":[[86],256],"120298":[[87],256],"120299":[[88],256],"120300":[[89],256],"120301":[[90],256],"120302":[[97],256],"120303":[[98],256],"120304":[[99],256],"120305":[[100],256],"120306":[[101],256],"120307":[[102],256],"120308":[[103],256],"120309":[[104],256],"120310":[[105],256],"120311":[[106],256],"120312":[[107],256],"120313":[[108],256],"120314":[[109],256],"120315":[[110],256],"120316":[[111],256],"120317":[[112],256],"120318":[[113],256],"120319":[[114],256]},"54784":{"120320":[[115],256],"120321":[[116],256],"120322":[[117],256],"120323":[[118],256],"120324":[[119],256],"120325":[[120],256],"120326":[[121],256],"120327":[[122],256],"120328":[[65],256],"120329":[[66],256],"120330":[[67],256],"120331":[[68],256],"120332":[[69],256],"120333":[[70],256],"120334":[[71],256],"120335":[[72],256],"120336":[[73],256],"120337":[[74],256],"120338":[[75],256],"120339":[[76],256],"120340":[[77],256],"120341":[[78],256],"120342":[[79],256],"120343":[[80],256],"120344":[[81],256],"120345":[[82],256],"120346":[[83],256],"120347":[[84],256],"120348":[[85],256],"120349":[[86],256],"120350":[[87],256],"120351":[[88],256],"120352":[[89],256],"120353":[[90],256],"120354":[[97],256],"120355":[[98],256],"120356":[[99],256],"120357":[[100],256],"120358":[[101],256],"120359":[[102],256],"120360":[[103],256],"120361":[[104],256],"120362":[[105],256],"120363":[[106],256],"120364":[[107],256],"120365":[[108],256],"120366":[[109],256],"120367":[[110],256],"120368":[[111],256],"120369":[[112],256],"120370":[[113],256],"120371":[[114],256],"120372":[[115],256],"120373":[[116],256],"120374":[[117],256],"120375":[[118],256],"120376":[[119],256],"120377":[[120],256],"120378":[[121],256],"120379":[[122],256],"120380":[[65],256],"120381":[[66],256],"120382":[[67],256],"120383":[[68],256],"120384":[[69],256],"120385":[[70],256],"120386":[[71],256],"120387":[[72],256],"120388":[[73],256],"120389":[[74],256],"120390":[[75],256],"120391":[[76],256],"120392":[[77],256],"120393":[[78],256],"120394":[[79],256],"120395":[[80],256],"120396":[[81],256],"120397":[[82],256],"120398":[[83],256],"120399":[[84],256],"120400":[[85],256],"120401":[[86],256],"120402":[[87],256],"120403":[[88],256],"120404":[[89],256],"120405":[[90],256],"120406":[[97],256],"120407":[[98],256],"120408":[[99],256],"120409":[[100],256],"120410":[[101],256],"120411":[[102],256],"120412":[[103],256],"120413":[[104],256],"120414":[[105],256],"120415":[[106],256],"120416":[[107],256],"120417":[[108],256],"120418":[[109],256],"120419":[[110],256],"120420":[[111],256],"120421":[[112],256],"120422":[[113],256],"120423":[[114],256],"120424":[[115],256],"120425":[[116],256],"120426":[[117],256],"120427":[[118],256],"120428":[[119],256],"120429":[[120],256],"120430":[[121],256],"120431":[[122],256],"120432":[[65],256],"120433":[[66],256],"120434":[[67],256],"120435":[[68],256],"120436":[[69],256],"120437":[[70],256],"120438":[[71],256],"120439":[[72],256],"120440":[[73],256],"120441":[[74],256],"120442":[[75],256],"120443":[[76],256],"120444":[[77],256],"120445":[[78],256],"120446":[[79],256],"120447":[[80],256],"120448":[[81],256],"120449":[[82],256],"120450":[[83],256],"120451":[[84],256],"120452":[[85],256],"120453":[[86],256],"120454":[[87],256],"120455":[[88],256],"120456":[[89],256],"120457":[[90],256],"120458":[[97],256],"120459":[[98],256],"120460":[[99],256],"120461":[[100],256],"120462":[[101],256],"120463":[[102],256],"120464":[[103],256],"120465":[[104],256],"120466":[[105],256],"120467":[[106],256],"120468":[[107],256],"120469":[[108],256],"120470":[[109],256],"120471":[[110],256],"120472":[[111],256],"120473":[[112],256],"120474":[[113],256],"120475":[[114],256],"120476":[[115],256],"120477":[[116],256],"120478":[[117],256],"120479":[[118],256],"120480":[[119],256],"120481":[[120],256],"120482":[[121],256],"120483":[[122],256],"120484":[[305],256],"120485":[[567],256],"120488":[[913],256],"120489":[[914],256],"120490":[[915],256],"120491":[[916],256],"120492":[[917],256],"120493":[[918],256],"120494":[[919],256],"120495":[[920],256],"120496":[[921],256],"120497":[[922],256],"120498":[[923],256],"120499":[[924],256],"120500":[[925],256],"120501":[[926],256],"120502":[[927],256],"120503":[[928],256],"120504":[[929],256],"120505":[[1012],256],"120506":[[931],256],"120507":[[932],256],"120508":[[933],256],"120509":[[934],256],"120510":[[935],256],"120511":[[936],256],"120512":[[937],256],"120513":[[8711],256],"120514":[[945],256],"120515":[[946],256],"120516":[[947],256],"120517":[[948],256],"120518":[[949],256],"120519":[[950],256],"120520":[[951],256],"120521":[[952],256],"120522":[[953],256],"120523":[[954],256],"120524":[[955],256],"120525":[[956],256],"120526":[[957],256],"120527":[[958],256],"120528":[[959],256],"120529":[[960],256],"120530":[[961],256],"120531":[[962],256],"120532":[[963],256],"120533":[[964],256],"120534":[[965],256],"120535":[[966],256],"120536":[[967],256],"120537":[[968],256],"120538":[[969],256],"120539":[[8706],256],"120540":[[1013],256],"120541":[[977],256],"120542":[[1008],256],"120543":[[981],256],"120544":[[1009],256],"120545":[[982],256],"120546":[[913],256],"120547":[[914],256],"120548":[[915],256],"120549":[[916],256],"120550":[[917],256],"120551":[[918],256],"120552":[[919],256],"120553":[[920],256],"120554":[[921],256],"120555":[[922],256],"120556":[[923],256],"120557":[[924],256],"120558":[[925],256],"120559":[[926],256],"120560":[[927],256],"120561":[[928],256],"120562":[[929],256],"120563":[[1012],256],"120564":[[931],256],"120565":[[932],256],"120566":[[933],256],"120567":[[934],256],"120568":[[935],256],"120569":[[936],256],"120570":[[937],256],"120571":[[8711],256],"120572":[[945],256],"120573":[[946],256],"120574":[[947],256],"120575":[[948],256]},"55040":{"120576":[[949],256],"120577":[[950],256],"120578":[[951],256],"120579":[[952],256],"120580":[[953],256],"120581":[[954],256],"120582":[[955],256],"120583":[[956],256],"120584":[[957],256],"120585":[[958],256],"120586":[[959],256],"120587":[[960],256],"120588":[[961],256],"120589":[[962],256],"120590":[[963],256],"120591":[[964],256],"120592":[[965],256],"120593":[[966],256],"120594":[[967],256],"120595":[[968],256],"120596":[[969],256],"120597":[[8706],256],"120598":[[1013],256],"120599":[[977],256],"120600":[[1008],256],"120601":[[981],256],"120602":[[1009],256],"120603":[[982],256],"120604":[[913],256],"120605":[[914],256],"120606":[[915],256],"120607":[[916],256],"120608":[[917],256],"120609":[[918],256],"120610":[[919],256],"120611":[[920],256],"120612":[[921],256],"120613":[[922],256],"120614":[[923],256],"120615":[[924],256],"120616":[[925],256],"120617":[[926],256],"120618":[[927],256],"120619":[[928],256],"120620":[[929],256],"120621":[[1012],256],"120622":[[931],256],"120623":[[932],256],"120624":[[933],256],"120625":[[934],256],"120626":[[935],256],"120627":[[936],256],"120628":[[937],256],"120629":[[8711],256],"120630":[[945],256],"120631":[[946],256],"120632":[[947],256],"120633":[[948],256],"120634":[[949],256],"120635":[[950],256],"120636":[[951],256],"120637":[[952],256],"120638":[[953],256],"120639":[[954],256],"120640":[[955],256],"120641":[[956],256],"120642":[[957],256],"120643":[[958],256],"120644":[[959],256],"120645":[[960],256],"120646":[[961],256],"120647":[[962],256],"120648":[[963],256],"120649":[[964],256],"120650":[[965],256],"120651":[[966],256],"120652":[[967],256],"120653":[[968],256],"120654":[[969],256],"120655":[[8706],256],"120656":[[1013],256],"120657":[[977],256],"120658":[[1008],256],"120659":[[981],256],"120660":[[1009],256],"120661":[[982],256],"120662":[[913],256],"120663":[[914],256],"120664":[[915],256],"120665":[[916],256],"120666":[[917],256],"120667":[[918],256],"120668":[[919],256],"120669":[[920],256],"120670":[[921],256],"120671":[[922],256],"120672":[[923],256],"120673":[[924],256],"120674":[[925],256],"120675":[[926],256],"120676":[[927],256],"120677":[[928],256],"120678":[[929],256],"120679":[[1012],256],"120680":[[931],256],"120681":[[932],256],"120682":[[933],256],"120683":[[934],256],"120684":[[935],256],"120685":[[936],256],"120686":[[937],256],"120687":[[8711],256],"120688":[[945],256],"120689":[[946],256],"120690":[[947],256],"120691":[[948],256],"120692":[[949],256],"120693":[[950],256],"120694":[[951],256],"120695":[[952],256],"120696":[[953],256],"120697":[[954],256],"120698":[[955],256],"120699":[[956],256],"120700":[[957],256],"120701":[[958],256],"120702":[[959],256],"120703":[[960],256],"120704":[[961],256],"120705":[[962],256],"120706":[[963],256],"120707":[[964],256],"120708":[[965],256],"120709":[[966],256],"120710":[[967],256],"120711":[[968],256],"120712":[[969],256],"120713":[[8706],256],"120714":[[1013],256],"120715":[[977],256],"120716":[[1008],256],"120717":[[981],256],"120718":[[1009],256],"120719":[[982],256],"120720":[[913],256],"120721":[[914],256],"120722":[[915],256],"120723":[[916],256],"120724":[[917],256],"120725":[[918],256],"120726":[[919],256],"120727":[[920],256],"120728":[[921],256],"120729":[[922],256],"120730":[[923],256],"120731":[[924],256],"120732":[[925],256],"120733":[[926],256],"120734":[[927],256],"120735":[[928],256],"120736":[[929],256],"120737":[[1012],256],"120738":[[931],256],"120739":[[932],256],"120740":[[933],256],"120741":[[934],256],"120742":[[935],256],"120743":[[936],256],"120744":[[937],256],"120745":[[8711],256],"120746":[[945],256],"120747":[[946],256],"120748":[[947],256],"120749":[[948],256],"120750":[[949],256],"120751":[[950],256],"120752":[[951],256],"120753":[[952],256],"120754":[[953],256],"120755":[[954],256],"120756":[[955],256],"120757":[[956],256],"120758":[[957],256],"120759":[[958],256],"120760":[[959],256],"120761":[[960],256],"120762":[[961],256],"120763":[[962],256],"120764":[[963],256],"120765":[[964],256],"120766":[[965],256],"120767":[[966],256],"120768":[[967],256],"120769":[[968],256],"120770":[[969],256],"120771":[[8706],256],"120772":[[1013],256],"120773":[[977],256],"120774":[[1008],256],"120775":[[981],256],"120776":[[1009],256],"120777":[[982],256],"120778":[[988],256],"120779":[[989],256],"120782":[[48],256],"120783":[[49],256],"120784":[[50],256],"120785":[[51],256],"120786":[[52],256],"120787":[[53],256],"120788":[[54],256],"120789":[[55],256],"120790":[[56],256],"120791":[[57],256],"120792":[[48],256],"120793":[[49],256],"120794":[[50],256],"120795":[[51],256],"120796":[[52],256],"120797":[[53],256],"120798":[[54],256],"120799":[[55],256],"120800":[[56],256],"120801":[[57],256],"120802":[[48],256],"120803":[[49],256],"120804":[[50],256],"120805":[[51],256],"120806":[[52],256],"120807":[[53],256],"120808":[[54],256],"120809":[[55],256],"120810":[[56],256],"120811":[[57],256],"120812":[[48],256],"120813":[[49],256],"120814":[[50],256],"120815":[[51],256],"120816":[[52],256],"120817":[[53],256],"120818":[[54],256],"120819":[[55],256],"120820":[[56],256],"120821":[[57],256],"120822":[[48],256],"120823":[[49],256],"120824":[[50],256],"120825":[[51],256],"120826":[[52],256],"120827":[[53],256],"120828":[[54],256],"120829":[[55],256],"120830":[[56],256],"120831":[[57],256]},"59392":{"125136":[null,220],"125137":[null,220],"125138":[null,220],"125139":[null,220],"125140":[null,220],"125141":[null,220],"125142":[null,220]},"60928":{"126464":[[1575],256],"126465":[[1576],256],"126466":[[1580],256],"126467":[[1583],256],"126469":[[1608],256],"126470":[[1586],256],"126471":[[1581],256],"126472":[[1591],256],"126473":[[1610],256],"126474":[[1603],256],"126475":[[1604],256],"126476":[[1605],256],"126477":[[1606],256],"126478":[[1587],256],"126479":[[1593],256],"126480":[[1601],256],"126481":[[1589],256],"126482":[[1602],256],"126483":[[1585],256],"126484":[[1588],256],"126485":[[1578],256],"126486":[[1579],256],"126487":[[1582],256],"126488":[[1584],256],"126489":[[1590],256],"126490":[[1592],256],"126491":[[1594],256],"126492":[[1646],256],"126493":[[1722],256],"126494":[[1697],256],"126495":[[1647],256],"126497":[[1576],256],"126498":[[1580],256],"126500":[[1607],256],"126503":[[1581],256],"126505":[[1610],256],"126506":[[1603],256],"126507":[[1604],256],"126508":[[1605],256],"126509":[[1606],256],"126510":[[1587],256],"126511":[[1593],256],"126512":[[1601],256],"126513":[[1589],256],"126514":[[1602],256],"126516":[[1588],256],"126517":[[1578],256],"126518":[[1579],256],"126519":[[1582],256],"126521":[[1590],256],"126523":[[1594],256],"126530":[[1580],256],"126535":[[1581],256],"126537":[[1610],256],"126539":[[1604],256],"126541":[[1606],256],"126542":[[1587],256],"126543":[[1593],256],"126545":[[1589],256],"126546":[[1602],256],"126548":[[1588],256],"126551":[[1582],256],"126553":[[1590],256],"126555":[[1594],256],"126557":[[1722],256],"126559":[[1647],256],"126561":[[1576],256],"126562":[[1580],256],"126564":[[1607],256],"126567":[[1581],256],"126568":[[1591],256],"126569":[[1610],256],"126570":[[1603],256],"126572":[[1605],256],"126573":[[1606],256],"126574":[[1587],256],"126575":[[1593],256],"126576":[[1601],256],"126577":[[1589],256],"126578":[[1602],256],"126580":[[1588],256],"126581":[[1578],256],"126582":[[1579],256],"126583":[[1582],256],"126585":[[1590],256],"126586":[[1592],256],"126587":[[1594],256],"126588":[[1646],256],"126590":[[1697],256],"126592":[[1575],256],"126593":[[1576],256],"126594":[[1580],256],"126595":[[1583],256],"126596":[[1607],256],"126597":[[1608],256],"126598":[[1586],256],"126599":[[1581],256],"126600":[[1591],256],"126601":[[1610],256],"126603":[[1604],256],"126604":[[1605],256],"126605":[[1606],256],"126606":[[1587],256],"126607":[[1593],256],"126608":[[1601],256],"126609":[[1589],256],"126610":[[1602],256],"126611":[[1585],256],"126612":[[1588],256],"126613":[[1578],256],"126614":[[1579],256],"126615":[[1582],256],"126616":[[1584],256],"126617":[[1590],256],"126618":[[1592],256],"126619":[[1594],256],"126625":[[1576],256],"126626":[[1580],256],"126627":[[1583],256],"126629":[[1608],256],"126630":[[1586],256],"126631":[[1581],256],"126632":[[1591],256],"126633":[[1610],256],"126635":[[1604],256],"126636":[[1605],256],"126637":[[1606],256],"126638":[[1587],256],"126639":[[1593],256],"126640":[[1601],256],"126641":[[1589],256],"126642":[[1602],256],"126643":[[1585],256],"126644":[[1588],256],"126645":[[1578],256],"126646":[[1579],256],"126647":[[1582],256],"126648":[[1584],256],"126649":[[1590],256],"126650":[[1592],256],"126651":[[1594],256]},"61696":{"127232":[[48,46],256],"127233":[[48,44],256],"127234":[[49,44],256],"127235":[[50,44],256],"127236":[[51,44],256],"127237":[[52,44],256],"127238":[[53,44],256],"127239":[[54,44],256],"127240":[[55,44],256],"127241":[[56,44],256],"127242":[[57,44],256],"127248":[[40,65,41],256],"127249":[[40,66,41],256],"127250":[[40,67,41],256],"127251":[[40,68,41],256],"127252":[[40,69,41],256],"127253":[[40,70,41],256],"127254":[[40,71,41],256],"127255":[[40,72,41],256],"127256":[[40,73,41],256],"127257":[[40,74,41],256],"127258":[[40,75,41],256],"127259":[[40,76,41],256],"127260":[[40,77,41],256],"127261":[[40,78,41],256],"127262":[[40,79,41],256],"127263":[[40,80,41],256],"127264":[[40,81,41],256],"127265":[[40,82,41],256],"127266":[[40,83,41],256],"127267":[[40,84,41],256],"127268":[[40,85,41],256],"127269":[[40,86,41],256],"127270":[[40,87,41],256],"127271":[[40,88,41],256],"127272":[[40,89,41],256],"127273":[[40,90,41],256],"127274":[[12308,83,12309],256],"127275":[[67],256],"127276":[[82],256],"127277":[[67,68],256],"127278":[[87,90],256],"127280":[[65],256],"127281":[[66],256],"127282":[[67],256],"127283":[[68],256],"127284":[[69],256],"127285":[[70],256],"127286":[[71],256],"127287":[[72],256],"127288":[[73],256],"127289":[[74],256],"127290":[[75],256],"127291":[[76],256],"127292":[[77],256],"127293":[[78],256],"127294":[[79],256],"127295":[[80],256],"127296":[[81],256],"127297":[[82],256],"127298":[[83],256],"127299":[[84],256],"127300":[[85],256],"127301":[[86],256],"127302":[[87],256],"127303":[[88],256],"127304":[[89],256],"127305":[[90],256],"127306":[[72,86],256],"127307":[[77,86],256],"127308":[[83,68],256],"127309":[[83,83],256],"127310":[[80,80,86],256],"127311":[[87,67],256],"127338":[[77,67],256],"127339":[[77,68],256],"127376":[[68,74],256]},"61952":{"127488":[[12411,12363],256],"127489":[[12467,12467],256],"127490":[[12469],256],"127504":[[25163],256],"127505":[[23383],256],"127506":[[21452],256],"127507":[[12487],256],"127508":[[20108],256],"127509":[[22810],256],"127510":[[35299],256],"127511":[[22825],256],"127512":[[20132],256],"127513":[[26144],256],"127514":[[28961],256],"127515":[[26009],256],"127516":[[21069],256],"127517":[[24460],256],"127518":[[20877],256],"127519":[[26032],256],"127520":[[21021],256],"127521":[[32066],256],"127522":[[29983],256],"127523":[[36009],256],"127524":[[22768],256],"127525":[[21561],256],"127526":[[28436],256],"127527":[[25237],256],"127528":[[25429],256],"127529":[[19968],256],"127530":[[19977],256],"127531":[[36938],256],"127532":[[24038],256],"127533":[[20013],256],"127534":[[21491],256],"127535":[[25351],256],"127536":[[36208],256],"127537":[[25171],256],"127538":[[31105],256],"127539":[[31354],256],"127540":[[21512],256],"127541":[[28288],256],"127542":[[26377],256],"127543":[[26376],256],"127544":[[30003],256],"127545":[[21106],256],"127546":[[21942],256],"127552":[[12308,26412,12309],256],"127553":[[12308,19977,12309],256],"127554":[[12308,20108,12309],256],"127555":[[12308,23433,12309],256],"127556":[[12308,28857,12309],256],"127557":[[12308,25171,12309],256],"127558":[[12308,30423,12309],256],"127559":[[12308,21213,12309],256],"127560":[[12308,25943,12309],256],"127568":[[24471],256],"127569":[[21487],256]},"63488":{"194560":[[20029]],"194561":[[20024]],"194562":[[20033]],"194563":[[131362]],"194564":[[20320]],"194565":[[20398]],"194566":[[20411]],"194567":[[20482]],"194568":[[20602]],"194569":[[20633]],"194570":[[20711]],"194571":[[20687]],"194572":[[13470]],"194573":[[132666]],"194574":[[20813]],"194575":[[20820]],"194576":[[20836]],"194577":[[20855]],"194578":[[132380]],"194579":[[13497]],"194580":[[20839]],"194581":[[20877]],"194582":[[132427]],"194583":[[20887]],"194584":[[20900]],"194585":[[20172]],"194586":[[20908]],"194587":[[20917]],"194588":[[168415]],"194589":[[20981]],"194590":[[20995]],"194591":[[13535]],"194592":[[21051]],"194593":[[21062]],"194594":[[21106]],"194595":[[21111]],"194596":[[13589]],"194597":[[21191]],"194598":[[21193]],"194599":[[21220]],"194600":[[21242]],"194601":[[21253]],"194602":[[21254]],"194603":[[21271]],"194604":[[21321]],"194605":[[21329]],"194606":[[21338]],"194607":[[21363]],"194608":[[21373]],"194609":[[21375]],"194610":[[21375]],"194611":[[21375]],"194612":[[133676]],"194613":[[28784]],"194614":[[21450]],"194615":[[21471]],"194616":[[133987]],"194617":[[21483]],"194618":[[21489]],"194619":[[21510]],"194620":[[21662]],"194621":[[21560]],"194622":[[21576]],"194623":[[21608]],"194624":[[21666]],"194625":[[21750]],"194626":[[21776]],"194627":[[21843]],"194628":[[21859]],"194629":[[21892]],"194630":[[21892]],"194631":[[21913]],"194632":[[21931]],"194633":[[21939]],"194634":[[21954]],"194635":[[22294]],"194636":[[22022]],"194637":[[22295]],"194638":[[22097]],"194639":[[22132]],"194640":[[20999]],"194641":[[22766]],"194642":[[22478]],"194643":[[22516]],"194644":[[22541]],"194645":[[22411]],"194646":[[22578]],"194647":[[22577]],"194648":[[22700]],"194649":[[136420]],"194650":[[22770]],"194651":[[22775]],"194652":[[22790]],"194653":[[22810]],"194654":[[22818]],"194655":[[22882]],"194656":[[136872]],"194657":[[136938]],"194658":[[23020]],"194659":[[23067]],"194660":[[23079]],"194661":[[23000]],"194662":[[23142]],"194663":[[14062]],"194664":[[14076]],"194665":[[23304]],"194666":[[23358]],"194667":[[23358]],"194668":[[137672]],"194669":[[23491]],"194670":[[23512]],"194671":[[23527]],"194672":[[23539]],"194673":[[138008]],"194674":[[23551]],"194675":[[23558]],"194676":[[24403]],"194677":[[23586]],"194678":[[14209]],"194679":[[23648]],"194680":[[23662]],"194681":[[23744]],"194682":[[23693]],"194683":[[138724]],"194684":[[23875]],"194685":[[138726]],"194686":[[23918]],"194687":[[23915]],"194688":[[23932]],"194689":[[24033]],"194690":[[24034]],"194691":[[14383]],"194692":[[24061]],"194693":[[24104]],"194694":[[24125]],"194695":[[24169]],"194696":[[14434]],"194697":[[139651]],"194698":[[14460]],"194699":[[24240]],"194700":[[24243]],"194701":[[24246]],"194702":[[24266]],"194703":[[172946]],"194704":[[24318]],"194705":[[140081]],"194706":[[140081]],"194707":[[33281]],"194708":[[24354]],"194709":[[24354]],"194710":[[14535]],"194711":[[144056]],"194712":[[156122]],"194713":[[24418]],"194714":[[24427]],"194715":[[14563]],"194716":[[24474]],"194717":[[24525]],"194718":[[24535]],"194719":[[24569]],"194720":[[24705]],"194721":[[14650]],"194722":[[14620]],"194723":[[24724]],"194724":[[141012]],"194725":[[24775]],"194726":[[24904]],"194727":[[24908]],"194728":[[24910]],"194729":[[24908]],"194730":[[24954]],"194731":[[24974]],"194732":[[25010]],"194733":[[24996]],"194734":[[25007]],"194735":[[25054]],"194736":[[25074]],"194737":[[25078]],"194738":[[25104]],"194739":[[25115]],"194740":[[25181]],"194741":[[25265]],"194742":[[25300]],"194743":[[25424]],"194744":[[142092]],"194745":[[25405]],"194746":[[25340]],"194747":[[25448]],"194748":[[25475]],"194749":[[25572]],"194750":[[142321]],"194751":[[25634]],"194752":[[25541]],"194753":[[25513]],"194754":[[14894]],"194755":[[25705]],"194756":[[25726]],"194757":[[25757]],"194758":[[25719]],"194759":[[14956]],"194760":[[25935]],"194761":[[25964]],"194762":[[143370]],"194763":[[26083]],"194764":[[26360]],"194765":[[26185]],"194766":[[15129]],"194767":[[26257]],"194768":[[15112]],"194769":[[15076]],"194770":[[20882]],"194771":[[20885]],"194772":[[26368]],"194773":[[26268]],"194774":[[32941]],"194775":[[17369]],"194776":[[26391]],"194777":[[26395]],"194778":[[26401]],"194779":[[26462]],"194780":[[26451]],"194781":[[144323]],"194782":[[15177]],"194783":[[26618]],"194784":[[26501]],"194785":[[26706]],"194786":[[26757]],"194787":[[144493]],"194788":[[26766]],"194789":[[26655]],"194790":[[26900]],"194791":[[15261]],"194792":[[26946]],"194793":[[27043]],"194794":[[27114]],"194795":[[27304]],"194796":[[145059]],"194797":[[27355]],"194798":[[15384]],"194799":[[27425]],"194800":[[145575]],"194801":[[27476]],"194802":[[15438]],"194803":[[27506]],"194804":[[27551]],"194805":[[27578]],"194806":[[27579]],"194807":[[146061]],"194808":[[138507]],"194809":[[146170]],"194810":[[27726]],"194811":[[146620]],"194812":[[27839]],"194813":[[27853]],"194814":[[27751]],"194815":[[27926]]},"63744":{"63744":[[35912]],"63745":[[26356]],"63746":[[36554]],"63747":[[36040]],"63748":[[28369]],"63749":[[20018]],"63750":[[21477]],"63751":[[40860]],"63752":[[40860]],"63753":[[22865]],"63754":[[37329]],"63755":[[21895]],"63756":[[22856]],"63757":[[25078]],"63758":[[30313]],"63759":[[32645]],"63760":[[34367]],"63761":[[34746]],"63762":[[35064]],"63763":[[37007]],"63764":[[27138]],"63765":[[27931]],"63766":[[28889]],"63767":[[29662]],"63768":[[33853]],"63769":[[37226]],"63770":[[39409]],"63771":[[20098]],"63772":[[21365]],"63773":[[27396]],"63774":[[29211]],"63775":[[34349]],"63776":[[40478]],"63777":[[23888]],"63778":[[28651]],"63779":[[34253]],"63780":[[35172]],"63781":[[25289]],"63782":[[33240]],"63783":[[34847]],"63784":[[24266]],"63785":[[26391]],"63786":[[28010]],"63787":[[29436]],"63788":[[37070]],"63789":[[20358]],"63790":[[20919]],"63791":[[21214]],"63792":[[25796]],"63793":[[27347]],"63794":[[29200]],"63795":[[30439]],"63796":[[32769]],"63797":[[34310]],"63798":[[34396]],"63799":[[36335]],"63800":[[38706]],"63801":[[39791]],"63802":[[40442]],"63803":[[30860]],"63804":[[31103]],"63805":[[32160]],"63806":[[33737]],"63807":[[37636]],"63808":[[40575]],"63809":[[35542]],"63810":[[22751]],"63811":[[24324]],"63812":[[31840]],"63813":[[32894]],"63814":[[29282]],"63815":[[30922]],"63816":[[36034]],"63817":[[38647]],"63818":[[22744]],"63819":[[23650]],"63820":[[27155]],"63821":[[28122]],"63822":[[28431]],"63823":[[32047]],"63824":[[32311]],"63825":[[38475]],"63826":[[21202]],"63827":[[32907]],"63828":[[20956]],"63829":[[20940]],"63830":[[31260]],"63831":[[32190]],"63832":[[33777]],"63833":[[38517]],"63834":[[35712]],"63835":[[25295]],"63836":[[27138]],"63837":[[35582]],"63838":[[20025]],"63839":[[23527]],"63840":[[24594]],"63841":[[29575]],"63842":[[30064]],"63843":[[21271]],"63844":[[30971]],"63845":[[20415]],"63846":[[24489]],"63847":[[19981]],"63848":[[27852]],"63849":[[25976]],"63850":[[32034]],"63851":[[21443]],"63852":[[22622]],"63853":[[30465]],"63854":[[33865]],"63855":[[35498]],"63856":[[27578]],"63857":[[36784]],"63858":[[27784]],"63859":[[25342]],"63860":[[33509]],"63861":[[25504]],"63862":[[30053]],"63863":[[20142]],"63864":[[20841]],"63865":[[20937]],"63866":[[26753]],"63867":[[31975]],"63868":[[33391]],"63869":[[35538]],"63870":[[37327]],"63871":[[21237]],"63872":[[21570]],"63873":[[22899]],"63874":[[24300]],"63875":[[26053]],"63876":[[28670]],"63877":[[31018]],"63878":[[38317]],"63879":[[39530]],"63880":[[40599]],"63881":[[40654]],"63882":[[21147]],"63883":[[26310]],"63884":[[27511]],"63885":[[36706]],"63886":[[24180]],"63887":[[24976]],"63888":[[25088]],"63889":[[25754]],"63890":[[28451]],"63891":[[29001]],"63892":[[29833]],"63893":[[31178]],"63894":[[32244]],"63895":[[32879]],"63896":[[36646]],"63897":[[34030]],"63898":[[36899]],"63899":[[37706]],"63900":[[21015]],"63901":[[21155]],"63902":[[21693]],"63903":[[28872]],"63904":[[35010]],"63905":[[35498]],"63906":[[24265]],"63907":[[24565]],"63908":[[25467]],"63909":[[27566]],"63910":[[31806]],"63911":[[29557]],"63912":[[20196]],"63913":[[22265]],"63914":[[23527]],"63915":[[23994]],"63916":[[24604]],"63917":[[29618]],"63918":[[29801]],"63919":[[32666]],"63920":[[32838]],"63921":[[37428]],"63922":[[38646]],"63923":[[38728]],"63924":[[38936]],"63925":[[20363]],"63926":[[31150]],"63927":[[37300]],"63928":[[38584]],"63929":[[24801]],"63930":[[20102]],"63931":[[20698]],"63932":[[23534]],"63933":[[23615]],"63934":[[26009]],"63935":[[27138]],"63936":[[29134]],"63937":[[30274]],"63938":[[34044]],"63939":[[36988]],"63940":[[40845]],"63941":[[26248]],"63942":[[38446]],"63943":[[21129]],"63944":[[26491]],"63945":[[26611]],"63946":[[27969]],"63947":[[28316]],"63948":[[29705]],"63949":[[30041]],"63950":[[30827]],"63951":[[32016]],"63952":[[39006]],"63953":[[20845]],"63954":[[25134]],"63955":[[38520]],"63956":[[20523]],"63957":[[23833]],"63958":[[28138]],"63959":[[36650]],"63960":[[24459]],"63961":[[24900]],"63962":[[26647]],"63963":[[29575]],"63964":[[38534]],"63965":[[21033]],"63966":[[21519]],"63967":[[23653]],"63968":[[26131]],"63969":[[26446]],"63970":[[26792]],"63971":[[27877]],"63972":[[29702]],"63973":[[30178]],"63974":[[32633]],"63975":[[35023]],"63976":[[35041]],"63977":[[37324]],"63978":[[38626]],"63979":[[21311]],"63980":[[28346]],"63981":[[21533]],"63982":[[29136]],"63983":[[29848]],"63984":[[34298]],"63985":[[38563]],"63986":[[40023]],"63987":[[40607]],"63988":[[26519]],"63989":[[28107]],"63990":[[33256]],"63991":[[31435]],"63992":[[31520]],"63993":[[31890]],"63994":[[29376]],"63995":[[28825]],"63996":[[35672]],"63997":[[20160]],"63998":[[33590]],"63999":[[21050]],"194816":[[27966]],"194817":[[28023]],"194818":[[27969]],"194819":[[28009]],"194820":[[28024]],"194821":[[28037]],"194822":[[146718]],"194823":[[27956]],"194824":[[28207]],"194825":[[28270]],"194826":[[15667]],"194827":[[28363]],"194828":[[28359]],"194829":[[147153]],"194830":[[28153]],"194831":[[28526]],"194832":[[147294]],"194833":[[147342]],"194834":[[28614]],"194835":[[28729]],"194836":[[28702]],"194837":[[28699]],"194838":[[15766]],"194839":[[28746]],"194840":[[28797]],"194841":[[28791]],"194842":[[28845]],"194843":[[132389]],"194844":[[28997]],"194845":[[148067]],"194846":[[29084]],"194847":[[148395]],"194848":[[29224]],"194849":[[29237]],"194850":[[29264]],"194851":[[149000]],"194852":[[29312]],"194853":[[29333]],"194854":[[149301]],"194855":[[149524]],"194856":[[29562]],"194857":[[29579]],"194858":[[16044]],"194859":[[29605]],"194860":[[16056]],"194861":[[16056]],"194862":[[29767]],"194863":[[29788]],"194864":[[29809]],"194865":[[29829]],"194866":[[29898]],"194867":[[16155]],"194868":[[29988]],"194869":[[150582]],"194870":[[30014]],"194871":[[150674]],"194872":[[30064]],"194873":[[139679]],"194874":[[30224]],"194875":[[151457]],"194876":[[151480]],"194877":[[151620]],"194878":[[16380]],"194879":[[16392]],"194880":[[30452]],"194881":[[151795]],"194882":[[151794]],"194883":[[151833]],"194884":[[151859]],"194885":[[30494]],"194886":[[30495]],"194887":[[30495]],"194888":[[30538]],"194889":[[16441]],"194890":[[30603]],"194891":[[16454]],"194892":[[16534]],"194893":[[152605]],"194894":[[30798]],"194895":[[30860]],"194896":[[30924]],"194897":[[16611]],"194898":[[153126]],"194899":[[31062]],"194900":[[153242]],"194901":[[153285]],"194902":[[31119]],"194903":[[31211]],"194904":[[16687]],"194905":[[31296]],"194906":[[31306]],"194907":[[31311]],"194908":[[153980]],"194909":[[154279]],"194910":[[154279]],"194911":[[31470]],"194912":[[16898]],"194913":[[154539]],"194914":[[31686]],"194915":[[31689]],"194916":[[16935]],"194917":[[154752]],"194918":[[31954]],"194919":[[17056]],"194920":[[31976]],"194921":[[31971]],"194922":[[32000]],"194923":[[155526]],"194924":[[32099]],"194925":[[17153]],"194926":[[32199]],"194927":[[32258]],"194928":[[32325]],"194929":[[17204]],"194930":[[156200]],"194931":[[156231]],"194932":[[17241]],"194933":[[156377]],"194934":[[32634]],"194935":[[156478]],"194936":[[32661]],"194937":[[32762]],"194938":[[32773]],"194939":[[156890]],"194940":[[156963]],"194941":[[32864]],"194942":[[157096]],"194943":[[32880]],"194944":[[144223]],"194945":[[17365]],"194946":[[32946]],"194947":[[33027]],"194948":[[17419]],"194949":[[33086]],"194950":[[23221]],"194951":[[157607]],"194952":[[157621]],"194953":[[144275]],"194954":[[144284]],"194955":[[33281]],"194956":[[33284]],"194957":[[36766]],"194958":[[17515]],"194959":[[33425]],"194960":[[33419]],"194961":[[33437]],"194962":[[21171]],"194963":[[33457]],"194964":[[33459]],"194965":[[33469]],"194966":[[33510]],"194967":[[158524]],"194968":[[33509]],"194969":[[33565]],"194970":[[33635]],"194971":[[33709]],"194972":[[33571]],"194973":[[33725]],"194974":[[33767]],"194975":[[33879]],"194976":[[33619]],"194977":[[33738]],"194978":[[33740]],"194979":[[33756]],"194980":[[158774]],"194981":[[159083]],"194982":[[158933]],"194983":[[17707]],"194984":[[34033]],"194985":[[34035]],"194986":[[34070]],"194987":[[160714]],"194988":[[34148]],"194989":[[159532]],"194990":[[17757]],"194991":[[17761]],"194992":[[159665]],"194993":[[159954]],"194994":[[17771]],"194995":[[34384]],"194996":[[34396]],"194997":[[34407]],"194998":[[34409]],"194999":[[34473]],"195000":[[34440]],"195001":[[34574]],"195002":[[34530]],"195003":[[34681]],"195004":[[34600]],"195005":[[34667]],"195006":[[34694]],"195007":[[17879]],"195008":[[34785]],"195009":[[34817]],"195010":[[17913]],"195011":[[34912]],"195012":[[34915]],"195013":[[161383]],"195014":[[35031]],"195015":[[35038]],"195016":[[17973]],"195017":[[35066]],"195018":[[13499]],"195019":[[161966]],"195020":[[162150]],"195021":[[18110]],"195022":[[18119]],"195023":[[35488]],"195024":[[35565]],"195025":[[35722]],"195026":[[35925]],"195027":[[162984]],"195028":[[36011]],"195029":[[36033]],"195030":[[36123]],"195031":[[36215]],"195032":[[163631]],"195033":[[133124]],"195034":[[36299]],"195035":[[36284]],"195036":[[36336]],"195037":[[133342]],"195038":[[36564]],"195039":[[36664]],"195040":[[165330]],"195041":[[165357]],"195042":[[37012]],"195043":[[37105]],"195044":[[37137]],"195045":[[165678]],"195046":[[37147]],"195047":[[37432]],"195048":[[37591]],"195049":[[37592]],"195050":[[37500]],"195051":[[37881]],"195052":[[37909]],"195053":[[166906]],"195054":[[38283]],"195055":[[18837]],"195056":[[38327]],"195057":[[167287]],"195058":[[18918]],"195059":[[38595]],"195060":[[23986]],"195061":[[38691]],"195062":[[168261]],"195063":[[168474]],"195064":[[19054]],"195065":[[19062]],"195066":[[38880]],"195067":[[168970]],"195068":[[19122]],"195069":[[169110]],"195070":[[38923]],"195071":[[38923]]},"64000":{"64000":[[20999]],"64001":[[24230]],"64002":[[25299]],"64003":[[31958]],"64004":[[23429]],"64005":[[27934]],"64006":[[26292]],"64007":[[36667]],"64008":[[34892]],"64009":[[38477]],"64010":[[35211]],"64011":[[24275]],"64012":[[20800]],"64013":[[21952]],"64016":[[22618]],"64018":[[26228]],"64021":[[20958]],"64022":[[29482]],"64023":[[30410]],"64024":[[31036]],"64025":[[31070]],"64026":[[31077]],"64027":[[31119]],"64028":[[38742]],"64029":[[31934]],"64030":[[32701]],"64032":[[34322]],"64034":[[35576]],"64037":[[36920]],"64038":[[37117]],"64042":[[39151]],"64043":[[39164]],"64044":[[39208]],"64045":[[40372]],"64046":[[37086]],"64047":[[38583]],"64048":[[20398]],"64049":[[20711]],"64050":[[20813]],"64051":[[21193]],"64052":[[21220]],"64053":[[21329]],"64054":[[21917]],"64055":[[22022]],"64056":[[22120]],"64057":[[22592]],"64058":[[22696]],"64059":[[23652]],"64060":[[23662]],"64061":[[24724]],"64062":[[24936]],"64063":[[24974]],"64064":[[25074]],"64065":[[25935]],"64066":[[26082]],"64067":[[26257]],"64068":[[26757]],"64069":[[28023]],"64070":[[28186]],"64071":[[28450]],"64072":[[29038]],"64073":[[29227]],"64074":[[29730]],"64075":[[30865]],"64076":[[31038]],"64077":[[31049]],"64078":[[31048]],"64079":[[31056]],"64080":[[31062]],"64081":[[31069]],"64082":[[31117]],"64083":[[31118]],"64084":[[31296]],"64085":[[31361]],"64086":[[31680]],"64087":[[32244]],"64088":[[32265]],"64089":[[32321]],"64090":[[32626]],"64091":[[32773]],"64092":[[33261]],"64093":[[33401]],"64094":[[33401]],"64095":[[33879]],"64096":[[35088]],"64097":[[35222]],"64098":[[35585]],"64099":[[35641]],"64100":[[36051]],"64101":[[36104]],"64102":[[36790]],"64103":[[36920]],"64104":[[38627]],"64105":[[38911]],"64106":[[38971]],"64107":[[24693]],"64108":[[148206]],"64109":[[33304]],"64112":[[20006]],"64113":[[20917]],"64114":[[20840]],"64115":[[20352]],"64116":[[20805]],"64117":[[20864]],"64118":[[21191]],"64119":[[21242]],"64120":[[21917]],"64121":[[21845]],"64122":[[21913]],"64123":[[21986]],"64124":[[22618]],"64125":[[22707]],"64126":[[22852]],"64127":[[22868]],"64128":[[23138]],"64129":[[23336]],"64130":[[24274]],"64131":[[24281]],"64132":[[24425]],"64133":[[24493]],"64134":[[24792]],"64135":[[24910]],"64136":[[24840]],"64137":[[24974]],"64138":[[24928]],"64139":[[25074]],"64140":[[25140]],"64141":[[25540]],"64142":[[25628]],"64143":[[25682]],"64144":[[25942]],"64145":[[26228]],"64146":[[26391]],"64147":[[26395]],"64148":[[26454]],"64149":[[27513]],"64150":[[27578]],"64151":[[27969]],"64152":[[28379]],"64153":[[28363]],"64154":[[28450]],"64155":[[28702]],"64156":[[29038]],"64157":[[30631]],"64158":[[29237]],"64159":[[29359]],"64160":[[29482]],"64161":[[29809]],"64162":[[29958]],"64163":[[30011]],"64164":[[30237]],"64165":[[30239]],"64166":[[30410]],"64167":[[30427]],"64168":[[30452]],"64169":[[30538]],"64170":[[30528]],"64171":[[30924]],"64172":[[31409]],"64173":[[31680]],"64174":[[31867]],"64175":[[32091]],"64176":[[32244]],"64177":[[32574]],"64178":[[32773]],"64179":[[33618]],"64180":[[33775]],"64181":[[34681]],"64182":[[35137]],"64183":[[35206]],"64184":[[35222]],"64185":[[35519]],"64186":[[35576]],"64187":[[35531]],"64188":[[35585]],"64189":[[35582]],"64190":[[35565]],"64191":[[35641]],"64192":[[35722]],"64193":[[36104]],"64194":[[36664]],"64195":[[36978]],"64196":[[37273]],"64197":[[37494]],"64198":[[38524]],"64199":[[38627]],"64200":[[38742]],"64201":[[38875]],"64202":[[38911]],"64203":[[38923]],"64204":[[38971]],"64205":[[39698]],"64206":[[40860]],"64207":[[141386]],"64208":[[141380]],"64209":[[144341]],"64210":[[15261]],"64211":[[16408]],"64212":[[16441]],"64213":[[152137]],"64214":[[154832]],"64215":[[163539]],"64216":[[40771]],"64217":[[40846]],"195072":[[38953]],"195073":[[169398]],"195074":[[39138]],"195075":[[19251]],"195076":[[39209]],"195077":[[39335]],"195078":[[39362]],"195079":[[39422]],"195080":[[19406]],"195081":[[170800]],"195082":[[39698]],"195083":[[40000]],"195084":[[40189]],"195085":[[19662]],"195086":[[19693]],"195087":[[40295]],"195088":[[172238]],"195089":[[19704]],"195090":[[172293]],"195091":[[172558]],"195092":[[172689]],"195093":[[40635]],"195094":[[19798]],"195095":[[40697]],"195096":[[40702]],"195097":[[40709]],"195098":[[40719]],"195099":[[40726]],"195100":[[40763]],"195101":[[173568]]},"64256":{"64256":[[102,102],256],"64257":[[102,105],256],"64258":[[102,108],256],"64259":[[102,102,105],256],"64260":[[102,102,108],256],"64261":[[383,116],256],"64262":[[115,116],256],"64275":[[1396,1398],256],"64276":[[1396,1381],256],"64277":[[1396,1387],256],"64278":[[1406,1398],256],"64279":[[1396,1389],256],"64285":[[1497,1460],512],"64286":[null,26],"64287":[[1522,1463],512],"64288":[[1506],256],"64289":[[1488],256],"64290":[[1491],256],"64291":[[1492],256],"64292":[[1499],256],"64293":[[1500],256],"64294":[[1501],256],"64295":[[1512],256],"64296":[[1514],256],"64297":[[43],256],"64298":[[1513,1473],512],"64299":[[1513,1474],512],"64300":[[64329,1473],512],"64301":[[64329,1474],512],"64302":[[1488,1463],512],"64303":[[1488,1464],512],"64304":[[1488,1468],512],"64305":[[1489,1468],512],"64306":[[1490,1468],512],"64307":[[1491,1468],512],"64308":[[1492,1468],512],"64309":[[1493,1468],512],"64310":[[1494,1468],512],"64312":[[1496,1468],512],"64313":[[1497,1468],512],"64314":[[1498,1468],512],"64315":[[1499,1468],512],"64316":[[1500,1468],512],"64318":[[1502,1468],512],"64320":[[1504,1468],512],"64321":[[1505,1468],512],"64323":[[1507,1468],512],"64324":[[1508,1468],512],"64326":[[1510,1468],512],"64327":[[1511,1468],512],"64328":[[1512,1468],512],"64329":[[1513,1468],512],"64330":[[1514,1468],512],"64331":[[1493,1465],512],"64332":[[1489,1471],512],"64333":[[1499,1471],512],"64334":[[1508,1471],512],"64335":[[1488,1500],256],"64336":[[1649],256],"64337":[[1649],256],"64338":[[1659],256],"64339":[[1659],256],"64340":[[1659],256],"64341":[[1659],256],"64342":[[1662],256],"64343":[[1662],256],"64344":[[1662],256],"64345":[[1662],256],"64346":[[1664],256],"64347":[[1664],256],"64348":[[1664],256],"64349":[[1664],256],"64350":[[1658],256],"64351":[[1658],256],"64352":[[1658],256],"64353":[[1658],256],"64354":[[1663],256],"64355":[[1663],256],"64356":[[1663],256],"64357":[[1663],256],"64358":[[1657],256],"64359":[[1657],256],"64360":[[1657],256],"64361":[[1657],256],"64362":[[1700],256],"64363":[[1700],256],"64364":[[1700],256],"64365":[[1700],256],"64366":[[1702],256],"64367":[[1702],256],"64368":[[1702],256],"64369":[[1702],256],"64370":[[1668],256],"64371":[[1668],256],"64372":[[1668],256],"64373":[[1668],256],"64374":[[1667],256],"64375":[[1667],256],"64376":[[1667],256],"64377":[[1667],256],"64378":[[1670],256],"64379":[[1670],256],"64380":[[1670],256],"64381":[[1670],256],"64382":[[1671],256],"64383":[[1671],256],"64384":[[1671],256],"64385":[[1671],256],"64386":[[1677],256],"64387":[[1677],256],"64388":[[1676],256],"64389":[[1676],256],"64390":[[1678],256],"64391":[[1678],256],"64392":[[1672],256],"64393":[[1672],256],"64394":[[1688],256],"64395":[[1688],256],"64396":[[1681],256],"64397":[[1681],256],"64398":[[1705],256],"64399":[[1705],256],"64400":[[1705],256],"64401":[[1705],256],"64402":[[1711],256],"64403":[[1711],256],"64404":[[1711],256],"64405":[[1711],256],"64406":[[1715],256],"64407":[[1715],256],"64408":[[1715],256],"64409":[[1715],256],"64410":[[1713],256],"64411":[[1713],256],"64412":[[1713],256],"64413":[[1713],256],"64414":[[1722],256],"64415":[[1722],256],"64416":[[1723],256],"64417":[[1723],256],"64418":[[1723],256],"64419":[[1723],256],"64420":[[1728],256],"64421":[[1728],256],"64422":[[1729],256],"64423":[[1729],256],"64424":[[1729],256],"64425":[[1729],256],"64426":[[1726],256],"64427":[[1726],256],"64428":[[1726],256],"64429":[[1726],256],"64430":[[1746],256],"64431":[[1746],256],"64432":[[1747],256],"64433":[[1747],256],"64467":[[1709],256],"64468":[[1709],256],"64469":[[1709],256],"64470":[[1709],256],"64471":[[1735],256],"64472":[[1735],256],"64473":[[1734],256],"64474":[[1734],256],"64475":[[1736],256],"64476":[[1736],256],"64477":[[1655],256],"64478":[[1739],256],"64479":[[1739],256],"64480":[[1733],256],"64481":[[1733],256],"64482":[[1737],256],"64483":[[1737],256],"64484":[[1744],256],"64485":[[1744],256],"64486":[[1744],256],"64487":[[1744],256],"64488":[[1609],256],"64489":[[1609],256],"64490":[[1574,1575],256],"64491":[[1574,1575],256],"64492":[[1574,1749],256],"64493":[[1574,1749],256],"64494":[[1574,1608],256],"64495":[[1574,1608],256],"64496":[[1574,1735],256],"64497":[[1574,1735],256],"64498":[[1574,1734],256],"64499":[[1574,1734],256],"64500":[[1574,1736],256],"64501":[[1574,1736],256],"64502":[[1574,1744],256],"64503":[[1574,1744],256],"64504":[[1574,1744],256],"64505":[[1574,1609],256],"64506":[[1574,1609],256],"64507":[[1574,1609],256],"64508":[[1740],256],"64509":[[1740],256],"64510":[[1740],256],"64511":[[1740],256]},"64512":{"64512":[[1574,1580],256],"64513":[[1574,1581],256],"64514":[[1574,1605],256],"64515":[[1574,1609],256],"64516":[[1574,1610],256],"64517":[[1576,1580],256],"64518":[[1576,1581],256],"64519":[[1576,1582],256],"64520":[[1576,1605],256],"64521":[[1576,1609],256],"64522":[[1576,1610],256],"64523":[[1578,1580],256],"64524":[[1578,1581],256],"64525":[[1578,1582],256],"64526":[[1578,1605],256],"64527":[[1578,1609],256],"64528":[[1578,1610],256],"64529":[[1579,1580],256],"64530":[[1579,1605],256],"64531":[[1579,1609],256],"64532":[[1579,1610],256],"64533":[[1580,1581],256],"64534":[[1580,1605],256],"64535":[[1581,1580],256],"64536":[[1581,1605],256],"64537":[[1582,1580],256],"64538":[[1582,1581],256],"64539":[[1582,1605],256],"64540":[[1587,1580],256],"64541":[[1587,1581],256],"64542":[[1587,1582],256],"64543":[[1587,1605],256],"64544":[[1589,1581],256],"64545":[[1589,1605],256],"64546":[[1590,1580],256],"64547":[[1590,1581],256],"64548":[[1590,1582],256],"64549":[[1590,1605],256],"64550":[[1591,1581],256],"64551":[[1591,1605],256],"64552":[[1592,1605],256],"64553":[[1593,1580],256],"64554":[[1593,1605],256],"64555":[[1594,1580],256],"64556":[[1594,1605],256],"64557":[[1601,1580],256],"64558":[[1601,1581],256],"64559":[[1601,1582],256],"64560":[[1601,1605],256],"64561":[[1601,1609],256],"64562":[[1601,1610],256],"64563":[[1602,1581],256],"64564":[[1602,1605],256],"64565":[[1602,1609],256],"64566":[[1602,1610],256],"64567":[[1603,1575],256],"64568":[[1603,1580],256],"64569":[[1603,1581],256],"64570":[[1603,1582],256],"64571":[[1603,1604],256],"64572":[[1603,1605],256],"64573":[[1603,1609],256],"64574":[[1603,1610],256],"64575":[[1604,1580],256],"64576":[[1604,1581],256],"64577":[[1604,1582],256],"64578":[[1604,1605],256],"64579":[[1604,1609],256],"64580":[[1604,1610],256],"64581":[[1605,1580],256],"64582":[[1605,1581],256],"64583":[[1605,1582],256],"64584":[[1605,1605],256],"64585":[[1605,1609],256],"64586":[[1605,1610],256],"64587":[[1606,1580],256],"64588":[[1606,1581],256],"64589":[[1606,1582],256],"64590":[[1606,1605],256],"64591":[[1606,1609],256],"64592":[[1606,1610],256],"64593":[[1607,1580],256],"64594":[[1607,1605],256],"64595":[[1607,1609],256],"64596":[[1607,1610],256],"64597":[[1610,1580],256],"64598":[[1610,1581],256],"64599":[[1610,1582],256],"64600":[[1610,1605],256],"64601":[[1610,1609],256],"64602":[[1610,1610],256],"64603":[[1584,1648],256],"64604":[[1585,1648],256],"64605":[[1609,1648],256],"64606":[[32,1612,1617],256],"64607":[[32,1613,1617],256],"64608":[[32,1614,1617],256],"64609":[[32,1615,1617],256],"64610":[[32,1616,1617],256],"64611":[[32,1617,1648],256],"64612":[[1574,1585],256],"64613":[[1574,1586],256],"64614":[[1574,1605],256],"64615":[[1574,1606],256],"64616":[[1574,1609],256],"64617":[[1574,1610],256],"64618":[[1576,1585],256],"64619":[[1576,1586],256],"64620":[[1576,1605],256],"64621":[[1576,1606],256],"64622":[[1576,1609],256],"64623":[[1576,1610],256],"64624":[[1578,1585],256],"64625":[[1578,1586],256],"64626":[[1578,1605],256],"64627":[[1578,1606],256],"64628":[[1578,1609],256],"64629":[[1578,1610],256],"64630":[[1579,1585],256],"64631":[[1579,1586],256],"64632":[[1579,1605],256],"64633":[[1579,1606],256],"64634":[[1579,1609],256],"64635":[[1579,1610],256],"64636":[[1601,1609],256],"64637":[[1601,1610],256],"64638":[[1602,1609],256],"64639":[[1602,1610],256],"64640":[[1603,1575],256],"64641":[[1603,1604],256],"64642":[[1603,1605],256],"64643":[[1603,1609],256],"64644":[[1603,1610],256],"64645":[[1604,1605],256],"64646":[[1604,1609],256],"64647":[[1604,1610],256],"64648":[[1605,1575],256],"64649":[[1605,1605],256],"64650":[[1606,1585],256],"64651":[[1606,1586],256],"64652":[[1606,1605],256],"64653":[[1606,1606],256],"64654":[[1606,1609],256],"64655":[[1606,1610],256],"64656":[[1609,1648],256],"64657":[[1610,1585],256],"64658":[[1610,1586],256],"64659":[[1610,1605],256],"64660":[[1610,1606],256],"64661":[[1610,1609],256],"64662":[[1610,1610],256],"64663":[[1574,1580],256],"64664":[[1574,1581],256],"64665":[[1574,1582],256],"64666":[[1574,1605],256],"64667":[[1574,1607],256],"64668":[[1576,1580],256],"64669":[[1576,1581],256],"64670":[[1576,1582],256],"64671":[[1576,1605],256],"64672":[[1576,1607],256],"64673":[[1578,1580],256],"64674":[[1578,1581],256],"64675":[[1578,1582],256],"64676":[[1578,1605],256],"64677":[[1578,1607],256],"64678":[[1579,1605],256],"64679":[[1580,1581],256],"64680":[[1580,1605],256],"64681":[[1581,1580],256],"64682":[[1581,1605],256],"64683":[[1582,1580],256],"64684":[[1582,1605],256],"64685":[[1587,1580],256],"64686":[[1587,1581],256],"64687":[[1587,1582],256],"64688":[[1587,1605],256],"64689":[[1589,1581],256],"64690":[[1589,1582],256],"64691":[[1589,1605],256],"64692":[[1590,1580],256],"64693":[[1590,1581],256],"64694":[[1590,1582],256],"64695":[[1590,1605],256],"64696":[[1591,1581],256],"64697":[[1592,1605],256],"64698":[[1593,1580],256],"64699":[[1593,1605],256],"64700":[[1594,1580],256],"64701":[[1594,1605],256],"64702":[[1601,1580],256],"64703":[[1601,1581],256],"64704":[[1601,1582],256],"64705":[[1601,1605],256],"64706":[[1602,1581],256],"64707":[[1602,1605],256],"64708":[[1603,1580],256],"64709":[[1603,1581],256],"64710":[[1603,1582],256],"64711":[[1603,1604],256],"64712":[[1603,1605],256],"64713":[[1604,1580],256],"64714":[[1604,1581],256],"64715":[[1604,1582],256],"64716":[[1604,1605],256],"64717":[[1604,1607],256],"64718":[[1605,1580],256],"64719":[[1605,1581],256],"64720":[[1605,1582],256],"64721":[[1605,1605],256],"64722":[[1606,1580],256],"64723":[[1606,1581],256],"64724":[[1606,1582],256],"64725":[[1606,1605],256],"64726":[[1606,1607],256],"64727":[[1607,1580],256],"64728":[[1607,1605],256],"64729":[[1607,1648],256],"64730":[[1610,1580],256],"64731":[[1610,1581],256],"64732":[[1610,1582],256],"64733":[[1610,1605],256],"64734":[[1610,1607],256],"64735":[[1574,1605],256],"64736":[[1574,1607],256],"64737":[[1576,1605],256],"64738":[[1576,1607],256],"64739":[[1578,1605],256],"64740":[[1578,1607],256],"64741":[[1579,1605],256],"64742":[[1579,1607],256],"64743":[[1587,1605],256],"64744":[[1587,1607],256],"64745":[[1588,1605],256],"64746":[[1588,1607],256],"64747":[[1603,1604],256],"64748":[[1603,1605],256],"64749":[[1604,1605],256],"64750":[[1606,1605],256],"64751":[[1606,1607],256],"64752":[[1610,1605],256],"64753":[[1610,1607],256],"64754":[[1600,1614,1617],256],"64755":[[1600,1615,1617],256],"64756":[[1600,1616,1617],256],"64757":[[1591,1609],256],"64758":[[1591,1610],256],"64759":[[1593,1609],256],"64760":[[1593,1610],256],"64761":[[1594,1609],256],"64762":[[1594,1610],256],"64763":[[1587,1609],256],"64764":[[1587,1610],256],"64765":[[1588,1609],256],"64766":[[1588,1610],256],"64767":[[1581,1609],256]},"64768":{"64768":[[1581,1610],256],"64769":[[1580,1609],256],"64770":[[1580,1610],256],"64771":[[1582,1609],256],"64772":[[1582,1610],256],"64773":[[1589,1609],256],"64774":[[1589,1610],256],"64775":[[1590,1609],256],"64776":[[1590,1610],256],"64777":[[1588,1580],256],"64778":[[1588,1581],256],"64779":[[1588,1582],256],"64780":[[1588,1605],256],"64781":[[1588,1585],256],"64782":[[1587,1585],256],"64783":[[1589,1585],256],"64784":[[1590,1585],256],"64785":[[1591,1609],256],"64786":[[1591,1610],256],"64787":[[1593,1609],256],"64788":[[1593,1610],256],"64789":[[1594,1609],256],"64790":[[1594,1610],256],"64791":[[1587,1609],256],"64792":[[1587,1610],256],"64793":[[1588,1609],256],"64794":[[1588,1610],256],"64795":[[1581,1609],256],"64796":[[1581,1610],256],"64797":[[1580,1609],256],"64798":[[1580,1610],256],"64799":[[1582,1609],256],"64800":[[1582,1610],256],"64801":[[1589,1609],256],"64802":[[1589,1610],256],"64803":[[1590,1609],256],"64804":[[1590,1610],256],"64805":[[1588,1580],256],"64806":[[1588,1581],256],"64807":[[1588,1582],256],"64808":[[1588,1605],256],"64809":[[1588,1585],256],"64810":[[1587,1585],256],"64811":[[1589,1585],256],"64812":[[1590,1585],256],"64813":[[1588,1580],256],"64814":[[1588,1581],256],"64815":[[1588,1582],256],"64816":[[1588,1605],256],"64817":[[1587,1607],256],"64818":[[1588,1607],256],"64819":[[1591,1605],256],"64820":[[1587,1580],256],"64821":[[1587,1581],256],"64822":[[1587,1582],256],"64823":[[1588,1580],256],"64824":[[1588,1581],256],"64825":[[1588,1582],256],"64826":[[1591,1605],256],"64827":[[1592,1605],256],"64828":[[1575,1611],256],"64829":[[1575,1611],256],"64848":[[1578,1580,1605],256],"64849":[[1578,1581,1580],256],"64850":[[1578,1581,1580],256],"64851":[[1578,1581,1605],256],"64852":[[1578,1582,1605],256],"64853":[[1578,1605,1580],256],"64854":[[1578,1605,1581],256],"64855":[[1578,1605,1582],256],"64856":[[1580,1605,1581],256],"64857":[[1580,1605,1581],256],"64858":[[1581,1605,1610],256],"64859":[[1581,1605,1609],256],"64860":[[1587,1581,1580],256],"64861":[[1587,1580,1581],256],"64862":[[1587,1580,1609],256],"64863":[[1587,1605,1581],256],"64864":[[1587,1605,1581],256],"64865":[[1587,1605,1580],256],"64866":[[1587,1605,1605],256],"64867":[[1587,1605,1605],256],"64868":[[1589,1581,1581],256],"64869":[[1589,1581,1581],256],"64870":[[1589,1605,1605],256],"64871":[[1588,1581,1605],256],"64872":[[1588,1581,1605],256],"64873":[[1588,1580,1610],256],"64874":[[1588,1605,1582],256],"64875":[[1588,1605,1582],256],"64876":[[1588,1605,1605],256],"64877":[[1588,1605,1605],256],"64878":[[1590,1581,1609],256],"64879":[[1590,1582,1605],256],"64880":[[1590,1582,1605],256],"64881":[[1591,1605,1581],256],"64882":[[1591,1605,1581],256],"64883":[[1591,1605,1605],256],"64884":[[1591,1605,1610],256],"64885":[[1593,1580,1605],256],"64886":[[1593,1605,1605],256],"64887":[[1593,1605,1605],256],"64888":[[1593,1605,1609],256],"64889":[[1594,1605,1605],256],"64890":[[1594,1605,1610],256],"64891":[[1594,1605,1609],256],"64892":[[1601,1582,1605],256],"64893":[[1601,1582,1605],256],"64894":[[1602,1605,1581],256],"64895":[[1602,1605,1605],256],"64896":[[1604,1581,1605],256],"64897":[[1604,1581,1610],256],"64898":[[1604,1581,1609],256],"64899":[[1604,1580,1580],256],"64900":[[1604,1580,1580],256],"64901":[[1604,1582,1605],256],"64902":[[1604,1582,1605],256],"64903":[[1604,1605,1581],256],"64904":[[1604,1605,1581],256],"64905":[[1605,1581,1580],256],"64906":[[1605,1581,1605],256],"64907":[[1605,1581,1610],256],"64908":[[1605,1580,1581],256],"64909":[[1605,1580,1605],256],"64910":[[1605,1582,1580],256],"64911":[[1605,1582,1605],256],"64914":[[1605,1580,1582],256],"64915":[[1607,1605,1580],256],"64916":[[1607,1605,1605],256],"64917":[[1606,1581,1605],256],"64918":[[1606,1581,1609],256],"64919":[[1606,1580,1605],256],"64920":[[1606,1580,1605],256],"64921":[[1606,1580,1609],256],"64922":[[1606,1605,1610],256],"64923":[[1606,1605,1609],256],"64924":[[1610,1605,1605],256],"64925":[[1610,1605,1605],256],"64926":[[1576,1582,1610],256],"64927":[[1578,1580,1610],256],"64928":[[1578,1580,1609],256],"64929":[[1578,1582,1610],256],"64930":[[1578,1582,1609],256],"64931":[[1578,1605,1610],256],"64932":[[1578,1605,1609],256],"64933":[[1580,1605,1610],256],"64934":[[1580,1581,1609],256],"64935":[[1580,1605,1609],256],"64936":[[1587,1582,1609],256],"64937":[[1589,1581,1610],256],"64938":[[1588,1581,1610],256],"64939":[[1590,1581,1610],256],"64940":[[1604,1580,1610],256],"64941":[[1604,1605,1610],256],"64942":[[1610,1581,1610],256],"64943":[[1610,1580,1610],256],"64944":[[1610,1605,1610],256],"64945":[[1605,1605,1610],256],"64946":[[1602,1605,1610],256],"64947":[[1606,1581,1610],256],"64948":[[1602,1605,1581],256],"64949":[[1604,1581,1605],256],"64950":[[1593,1605,1610],256],"64951":[[1603,1605,1610],256],"64952":[[1606,1580,1581],256],"64953":[[1605,1582,1610],256],"64954":[[1604,1580,1605],256],"64955":[[1603,1605,1605],256],"64956":[[1604,1580,1605],256],"64957":[[1606,1580,1581],256],"64958":[[1580,1581,1610],256],"64959":[[1581,1580,1610],256],"64960":[[1605,1580,1610],256],"64961":[[1601,1605,1610],256],"64962":[[1576,1581,1610],256],"64963":[[1603,1605,1605],256],"64964":[[1593,1580,1605],256],"64965":[[1589,1605,1605],256],"64966":[[1587,1582,1610],256],"64967":[[1606,1580,1610],256],"65008":[[1589,1604,1746],256],"65009":[[1602,1604,1746],256],"65010":[[1575,1604,1604,1607],256],"65011":[[1575,1603,1576,1585],256],"65012":[[1605,1581,1605,1583],256],"65013":[[1589,1604,1593,1605],256],"65014":[[1585,1587,1608,1604],256],"65015":[[1593,1604,1610,1607],256],"65016":[[1608,1587,1604,1605],256],"65017":[[1589,1604,1609],256],"65018":[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],"65019":[[1580,1604,32,1580,1604,1575,1604,1607],256],"65020":[[1585,1740,1575,1604],256]},"65024":{"65040":[[44],256],"65041":[[12289],256],"65042":[[12290],256],"65043":[[58],256],"65044":[[59],256],"65045":[[33],256],"65046":[[63],256],"65047":[[12310],256],"65048":[[12311],256],"65049":[[8230],256],"65056":[null,230],"65057":[null,230],"65058":[null,230],"65059":[null,230],"65060":[null,230],"65061":[null,230],"65062":[null,230],"65063":[null,220],"65064":[null,220],"65065":[null,220],"65066":[null,220],"65067":[null,220],"65068":[null,220],"65069":[null,220],"65072":[[8229],256],"65073":[[8212],256],"65074":[[8211],256],"65075":[[95],256],"65076":[[95],256],"65077":[[40],256],"65078":[[41],256],"65079":[[123],256],"65080":[[125],256],"65081":[[12308],256],"65082":[[12309],256],"65083":[[12304],256],"65084":[[12305],256],"65085":[[12298],256],"65086":[[12299],256],"65087":[[12296],256],"65088":[[12297],256],"65089":[[12300],256],"65090":[[12301],256],"65091":[[12302],256],"65092":[[12303],256],"65095":[[91],256],"65096":[[93],256],"65097":[[8254],256],"65098":[[8254],256],"65099":[[8254],256],"65100":[[8254],256],"65101":[[95],256],"65102":[[95],256],"65103":[[95],256],"65104":[[44],256],"65105":[[12289],256],"65106":[[46],256],"65108":[[59],256],"65109":[[58],256],"65110":[[63],256],"65111":[[33],256],"65112":[[8212],256],"65113":[[40],256],"65114":[[41],256],"65115":[[123],256],"65116":[[125],256],"65117":[[12308],256],"65118":[[12309],256],"65119":[[35],256],"65120":[[38],256],"65121":[[42],256],"65122":[[43],256],"65123":[[45],256],"65124":[[60],256],"65125":[[62],256],"65126":[[61],256],"65128":[[92],256],"65129":[[36],256],"65130":[[37],256],"65131":[[64],256],"65136":[[32,1611],256],"65137":[[1600,1611],256],"65138":[[32,1612],256],"65140":[[32,1613],256],"65142":[[32,1614],256],"65143":[[1600,1614],256],"65144":[[32,1615],256],"65145":[[1600,1615],256],"65146":[[32,1616],256],"65147":[[1600,1616],256],"65148":[[32,1617],256],"65149":[[1600,1617],256],"65150":[[32,1618],256],"65151":[[1600,1618],256],"65152":[[1569],256],"65153":[[1570],256],"65154":[[1570],256],"65155":[[1571],256],"65156":[[1571],256],"65157":[[1572],256],"65158":[[1572],256],"65159":[[1573],256],"65160":[[1573],256],"65161":[[1574],256],"65162":[[1574],256],"65163":[[1574],256],"65164":[[1574],256],"65165":[[1575],256],"65166":[[1575],256],"65167":[[1576],256],"65168":[[1576],256],"65169":[[1576],256],"65170":[[1576],256],"65171":[[1577],256],"65172":[[1577],256],"65173":[[1578],256],"65174":[[1578],256],"65175":[[1578],256],"65176":[[1578],256],"65177":[[1579],256],"65178":[[1579],256],"65179":[[1579],256],"65180":[[1579],256],"65181":[[1580],256],"65182":[[1580],256],"65183":[[1580],256],"65184":[[1580],256],"65185":[[1581],256],"65186":[[1581],256],"65187":[[1581],256],"65188":[[1581],256],"65189":[[1582],256],"65190":[[1582],256],"65191":[[1582],256],"65192":[[1582],256],"65193":[[1583],256],"65194":[[1583],256],"65195":[[1584],256],"65196":[[1584],256],"65197":[[1585],256],"65198":[[1585],256],"65199":[[1586],256],"65200":[[1586],256],"65201":[[1587],256],"65202":[[1587],256],"65203":[[1587],256],"65204":[[1587],256],"65205":[[1588],256],"65206":[[1588],256],"65207":[[1588],256],"65208":[[1588],256],"65209":[[1589],256],"65210":[[1589],256],"65211":[[1589],256],"65212":[[1589],256],"65213":[[1590],256],"65214":[[1590],256],"65215":[[1590],256],"65216":[[1590],256],"65217":[[1591],256],"65218":[[1591],256],"65219":[[1591],256],"65220":[[1591],256],"65221":[[1592],256],"65222":[[1592],256],"65223":[[1592],256],"65224":[[1592],256],"65225":[[1593],256],"65226":[[1593],256],"65227":[[1593],256],"65228":[[1593],256],"65229":[[1594],256],"65230":[[1594],256],"65231":[[1594],256],"65232":[[1594],256],"65233":[[1601],256],"65234":[[1601],256],"65235":[[1601],256],"65236":[[1601],256],"65237":[[1602],256],"65238":[[1602],256],"65239":[[1602],256],"65240":[[1602],256],"65241":[[1603],256],"65242":[[1603],256],"65243":[[1603],256],"65244":[[1603],256],"65245":[[1604],256],"65246":[[1604],256],"65247":[[1604],256],"65248":[[1604],256],"65249":[[1605],256],"65250":[[1605],256],"65251":[[1605],256],"65252":[[1605],256],"65253":[[1606],256],"65254":[[1606],256],"65255":[[1606],256],"65256":[[1606],256],"65257":[[1607],256],"65258":[[1607],256],"65259":[[1607],256],"65260":[[1607],256],"65261":[[1608],256],"65262":[[1608],256],"65263":[[1609],256],"65264":[[1609],256],"65265":[[1610],256],"65266":[[1610],256],"65267":[[1610],256],"65268":[[1610],256],"65269":[[1604,1570],256],"65270":[[1604,1570],256],"65271":[[1604,1571],256],"65272":[[1604,1571],256],"65273":[[1604,1573],256],"65274":[[1604,1573],256],"65275":[[1604,1575],256],"65276":[[1604,1575],256]},"65280":{"65281":[[33],256],"65282":[[34],256],"65283":[[35],256],"65284":[[36],256],"65285":[[37],256],"65286":[[38],256],"65287":[[39],256],"65288":[[40],256],"65289":[[41],256],"65290":[[42],256],"65291":[[43],256],"65292":[[44],256],"65293":[[45],256],"65294":[[46],256],"65295":[[47],256],"65296":[[48],256],"65297":[[49],256],"65298":[[50],256],"65299":[[51],256],"65300":[[52],256],"65301":[[53],256],"65302":[[54],256],"65303":[[55],256],"65304":[[56],256],"65305":[[57],256],"65306":[[58],256],"65307":[[59],256],"65308":[[60],256],"65309":[[61],256],"65310":[[62],256],"65311":[[63],256],"65312":[[64],256],"65313":[[65],256],"65314":[[66],256],"65315":[[67],256],"65316":[[68],256],"65317":[[69],256],"65318":[[70],256],"65319":[[71],256],"65320":[[72],256],"65321":[[73],256],"65322":[[74],256],"65323":[[75],256],"65324":[[76],256],"65325":[[77],256],"65326":[[78],256],"65327":[[79],256],"65328":[[80],256],"65329":[[81],256],"65330":[[82],256],"65331":[[83],256],"65332":[[84],256],"65333":[[85],256],"65334":[[86],256],"65335":[[87],256],"65336":[[88],256],"65337":[[89],256],"65338":[[90],256],"65339":[[91],256],"65340":[[92],256],"65341":[[93],256],"65342":[[94],256],"65343":[[95],256],"65344":[[96],256],"65345":[[97],256],"65346":[[98],256],"65347":[[99],256],"65348":[[100],256],"65349":[[101],256],"65350":[[102],256],"65351":[[103],256],"65352":[[104],256],"65353":[[105],256],"65354":[[106],256],"65355":[[107],256],"65356":[[108],256],"65357":[[109],256],"65358":[[110],256],"65359":[[111],256],"65360":[[112],256],"65361":[[113],256],"65362":[[114],256],"65363":[[115],256],"65364":[[116],256],"65365":[[117],256],"65366":[[118],256],"65367":[[119],256],"65368":[[120],256],"65369":[[121],256],"65370":[[122],256],"65371":[[123],256],"65372":[[124],256],"65373":[[125],256],"65374":[[126],256],"65375":[[10629],256],"65376":[[10630],256],"65377":[[12290],256],"65378":[[12300],256],"65379":[[12301],256],"65380":[[12289],256],"65381":[[12539],256],"65382":[[12530],256],"65383":[[12449],256],"65384":[[12451],256],"65385":[[12453],256],"65386":[[12455],256],"65387":[[12457],256],"65388":[[12515],256],"65389":[[12517],256],"65390":[[12519],256],"65391":[[12483],256],"65392":[[12540],256],"65393":[[12450],256],"65394":[[12452],256],"65395":[[12454],256],"65396":[[12456],256],"65397":[[12458],256],"65398":[[12459],256],"65399":[[12461],256],"65400":[[12463],256],"65401":[[12465],256],"65402":[[12467],256],"65403":[[12469],256],"65404":[[12471],256],"65405":[[12473],256],"65406":[[12475],256],"65407":[[12477],256],"65408":[[12479],256],"65409":[[12481],256],"65410":[[12484],256],"65411":[[12486],256],"65412":[[12488],256],"65413":[[12490],256],"65414":[[12491],256],"65415":[[12492],256],"65416":[[12493],256],"65417":[[12494],256],"65418":[[12495],256],"65419":[[12498],256],"65420":[[12501],256],"65421":[[12504],256],"65422":[[12507],256],"65423":[[12510],256],"65424":[[12511],256],"65425":[[12512],256],"65426":[[12513],256],"65427":[[12514],256],"65428":[[12516],256],"65429":[[12518],256],"65430":[[12520],256],"65431":[[12521],256],"65432":[[12522],256],"65433":[[12523],256],"65434":[[12524],256],"65435":[[12525],256],"65436":[[12527],256],"65437":[[12531],256],"65438":[[12441],256],"65439":[[12442],256],"65440":[[12644],256],"65441":[[12593],256],"65442":[[12594],256],"65443":[[12595],256],"65444":[[12596],256],"65445":[[12597],256],"65446":[[12598],256],"65447":[[12599],256],"65448":[[12600],256],"65449":[[12601],256],"65450":[[12602],256],"65451":[[12603],256],"65452":[[12604],256],"65453":[[12605],256],"65454":[[12606],256],"65455":[[12607],256],"65456":[[12608],256],"65457":[[12609],256],"65458":[[12610],256],"65459":[[12611],256],"65460":[[12612],256],"65461":[[12613],256],"65462":[[12614],256],"65463":[[12615],256],"65464":[[12616],256],"65465":[[12617],256],"65466":[[12618],256],"65467":[[12619],256],"65468":[[12620],256],"65469":[[12621],256],"65470":[[12622],256],"65474":[[12623],256],"65475":[[12624],256],"65476":[[12625],256],"65477":[[12626],256],"65478":[[12627],256],"65479":[[12628],256],"65482":[[12629],256],"65483":[[12630],256],"65484":[[12631],256],"65485":[[12632],256],"65486":[[12633],256],"65487":[[12634],256],"65490":[[12635],256],"65491":[[12636],256],"65492":[[12637],256],"65493":[[12638],256],"65494":[[12639],256],"65495":[[12640],256],"65498":[[12641],256],"65499":[[12642],256],"65500":[[12643],256],"65504":[[162],256],"65505":[[163],256],"65506":[[172],256],"65507":[[175],256],"65508":[[166],256],"65509":[[165],256],"65510":[[8361],256],"65512":[[9474],256],"65513":[[8592],256],"65514":[[8593],256],"65515":[[8594],256],"65516":[[8595],256],"65517":[[9632],256],"65518":[[9675],256]}} diff --git a/lib/hd/unorm.js b/lib/hd/unorm.js index 79a7c9f7..1f730e0f 100644 --- a/lib/hd/unorm.js +++ b/lib/hd/unorm.js @@ -1,429 +1,430 @@ /*! -https://github.com/walling/unorm -The software dual licensed under the MIT and GPL licenses. MIT license: - - Copyright (c) 2008-2013 Matsuza , Bjarke Walling - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. - -GPL notice (please read the [full GPL license] online): - - Copyright (C) 2008-2013 Matsuza , Bjarke Walling - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -[full GPL license]: http://www.gnu.org/licenses/gpl-2.0-standalone.html + * Unorm + * https://github.com/walling/unorm + * + * The software dual licensed under the MIT and GPL licenses. MIT license: + * + * Copyright (c) 2008-2013 + * Matsuza , + * Bjarke Walling + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * GPL notice (please read the [full GPL license] online): + * + * Copyright (C) 2008-2013 + * Matsuza , + * Bjarke Walling + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * [full GPL license]: http://www.gnu.org/licenses/gpl-2.0-standalone.html */ -(function (root) { - "use strict"; +'use strict'; -/***** unorm.js *****/ +const udata = require('./udata.json'); +const DEFAULT_FEATURE = [null, 0, {}]; +const CACHE_THRESHOLD = 10; +const SBase = 0xac00; +const LBase = 0x1100; +const VBase = 0x1161; +const TBase = 0x11a7; +const LCount = 19; +const VCount = 21; +const TCount = 28; +const NCount = VCount * TCount; // 588 +const SCount = LCount * NCount; // 11172 -/* - * UnicodeNormalizer 1.0.0 - * Copyright (c) 2008 Matsuza - * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. - * $Date: 2008-06-05 16:44:17 +0200 (Thu, 05 Jun 2008) $ - * $Rev: 13309 $ - */ +const cache = {}; +const cacheCounter = []; - var DEFAULT_FEATURE = [null, 0, {}]; - var CACHE_THRESHOLD = 10; - var SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, LCount = 19, VCount = 21, TCount = 28; - var NCount = VCount * TCount; // 588 - var SCount = LCount * NCount; // 11172 +for (let i = 0; i <= 0xff; i++) + cacheCounter[i] = 0; - var UChar = function(cp, feature){ - this.codepoint = cp; - this.feature = feature; - }; +let fromCharCode = null; - // Strategies - var cache = {}; - var cacheCounter = []; - for (var i = 0; i <= 0xFF; ++i){ - cacheCounter[i] = 0; - } +class UChar { + constructor(cp, feature) { + this.codepoint = cp; + this.feature = feature; + } - function fromCache(next, cp, needFeature){ - var ret = cache[cp]; - if(!ret){ - ret = next(cp, needFeature); - if(!!ret.feature && ++cacheCounter[(cp >> 8) & 0xFF] > CACHE_THRESHOLD){ - cache[cp] = ret; - } + static isHighSurrogate(cp) { + return cp >= 0xd800 && cp <= 0xdbff; + } + + static isLowSurrogate(cp) { + return cp >= 0xdc00 && cp <= 0xdfff; + } + + prepFeature() { + if (!this.feature) + this.feature = fromCharCode(this.codepoint, true).feature; + } + + toString() { + if (this.codepoint < 0x10000) + return String.fromCharCode(this.codepoint); + + const x = this.codepoint - 0x10000; + + return String.fromCharCode( + Math.floor(x / 0x400) + 0xd800, + x % 0x400 + 0xdc00 + ); + } + + getDecomp() { + this.prepFeature(); + return this.feature[0] || null; + } + + isCompatibility() { + this.prepFeature(); + return Boolean(this.feature[1]) && (this.feature[1] & (1 << 8)) !== 0; + } + + isExclude() { + this.prepFeature(); + return Boolean(this.feature[1]) && (this.feature[1] & (1 << 9)) !== 0; + } + + getCanonicalClass() { + this.prepFeature(); + return this.feature[1] ? (this.feature[1] & 0xff) : 0; + } + + getComposite(following) { + this.prepFeature(); + + if (!this.feature[2]) + return null; + + const cp = this.feature[2][following.codepoint]; + + return cp ? fromCharCode(cp) : null; + } +} + +function fromCache(next, cp, needFeature) { + let ret = cache[cp]; + + if (!ret) { + ret = next(cp, needFeature); + if (ret.feature && ++cacheCounter[(cp >> 8) & 0xff] > CACHE_THRESHOLD) + cache[cp] = ret; + } + + return ret; +} + +function fromData(next, cp, needFeature) { + const hash = cp & 0xff00; + const dunit = udata[hash] || {}; + const f = dunit[cp]; + return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE); +} + +function fromCpOnly(next, cp, needFeature) { + return needFeature ? next(cp, needFeature) : new UChar(cp, null); +} + +function fromRuleBasedJamo(next, cp, needFeature) { + if (cp < LBase + || (LBase + LCount <= cp && cp < SBase) + || (SBase + SCount < cp)) { + return next(cp, needFeature); + } + + if (LBase <= cp && cp < LBase + LCount) { + const c = {}; + const base = (cp - LBase) * VCount; + + for (let j = 0; j < VCount; j++) + c[VBase + j] = SBase + TCount * (j + base); + + return new UChar(cp, [null, null, c]); + } + + const SIndex = cp - SBase; + const TIndex = SIndex % TCount; + const feature = []; + + if (TIndex !== 0) { + feature[0] = [SBase + SIndex - TIndex, TBase + TIndex]; + } else { + feature[0] = [ + LBase + Math.floor(SIndex / NCount), + VBase + Math.floor((SIndex % NCount) / TCount) + ]; + feature[2] = {}; + for (let j = 1; j < TCount; j++) + feature[2][TBase + j] = cp + j; + } + + return new UChar(cp, feature); +} + +function fromCpFilter(next, cp, needFeature) { + return cp < 60 || 13311 < cp && cp < 42607 + ? new UChar(cp, DEFAULT_FEATURE) + : next(cp, needFeature); +} + +const strategies = [ + fromCpFilter, + fromCache, + fromCpOnly, + fromRuleBasedJamo, + fromData +]; + +fromCharCode = strategies.reduceRight((next, strategy) => { + return (cp, needFeature) => { + return strategy(next, cp, needFeature); + }; +}, null); + +class UCharIterator { + constructor(str) { + this.str = str; + this.cursor = 0; + } + next() { + if (this.str && this.cursor < this.str.length) { + let cp = this.str.charCodeAt(this.cursor++); + + if (UChar.isHighSurrogate(cp) && this.cursor < this.str.length) { + const d = this.str.charCodeAt(this.cursor); + if (UChar.isLowSurrogate(d)) { + cp = (cp - 0xd800) * 0x400 + (d - 0xdc00) + 0x10000; + this.cursor += 1; + } + } + + return fromCharCode(cp); + } + + this.str = null; + return null; + } +} + +class RecursDecompIterator { + constructor(it, cano) { + this.it = it; + this.canonical = cano; + this.resBuf = []; + } + + recursiveDecomp(uchar) { + const cano = this.canonical; + const decomp = uchar.getDecomp(); + + if (decomp && !(cano && uchar.isCompatibility())) { + let ret = []; + for (let i = 0; i < decomp.length; i++) { + const a = this.recursiveDecomp(fromCharCode(decomp[i])); + ret = ret.concat(a); } return ret; - } + } - function fromData(next, cp, needFeature){ - var hash = cp & 0xFF00; - var dunit = UChar.udata[hash] || {}; - var f = dunit[cp]; - return f ? new UChar(cp, f) : new UChar(cp, DEFAULT_FEATURE); - } - function fromCpOnly(next, cp, needFeature){ - return !!needFeature ? next(cp, needFeature) : new UChar(cp, null); - } - function fromRuleBasedJamo(next, cp, needFeature){ - var j; - if(cp < LBase || (LBase + LCount <= cp && cp < SBase) || (SBase + SCount < cp)){ - return next(cp, needFeature); + return [uchar]; + } + + next() { + if (this.resBuf.length === 0) { + const uchar = this.it.next(); + + if (!uchar) + return null; + + this.resBuf = this.recursiveDecomp(uchar); + } + + return this.resBuf.shift(); + } +} + +class DecompIterator { + constructor(it) { + this.it = it; + this.resBuf = []; + } + + next() { + if (this.resBuf.length === 0) { + for (;;) { + const uchar = this.it.next(); + + if (!uchar) + break; + + const cc = uchar.getCanonicalClass(); + + let inspt = this.resBuf.length; + + if (cc !== 0) { + while (inspt > 0) { + const uchar2 = this.resBuf[inspt - 1]; + const cc2 = uchar2.getCanonicalClass(); + if (cc2 <= cc) + break; + inspt -= 1; + } + } + + this.resBuf.splice(inspt, 0, uchar); + + if (cc === 0) + break; } - if(LBase <= cp && cp < LBase + LCount){ - var c = {}; - var base = (cp - LBase) * VCount; - for (j = 0; j < VCount; ++j){ - c[VBase + j] = SBase + TCount * (j + base); - } - return new UChar(cp, [,,c]); + } + + return this.resBuf.shift(); + } +} + +class CompIterator { + constructor(it) { + this.it = it; + this.procBuf = []; + this.resBuf = []; + this.lastClass = null; + } + next() { + while (this.resBuf.length === 0) { + const uchar = this.it.next(); + + if (!uchar) { + this.resBuf = this.procBuf; + this.procBuf = []; + break; } - var SIndex = cp - SBase; - var TIndex = SIndex % TCount; - var feature = []; - if(TIndex !== 0){ - feature[0] = [SBase + SIndex - TIndex, TBase + TIndex]; - } else { - feature[0] = [LBase + Math.floor(SIndex / NCount), VBase + Math.floor((SIndex % NCount) / TCount)]; - feature[2] = {}; - for (j = 1; j < TCount; ++j){ - feature[2][TBase + j] = cp + j; - } + if (this.procBuf.length === 0) { + this.lastClass = uchar.getCanonicalClass(); + this.procBuf.push(uchar); + continue; } - return new UChar(cp, feature); - } - function fromCpFilter(next, cp, needFeature){ - return cp < 60 || 13311 < cp && cp < 42607 ? new UChar(cp, DEFAULT_FEATURE) : next(cp, needFeature); - } - var strategies = [fromCpFilter, fromCache, fromCpOnly, fromRuleBasedJamo, fromData]; + const starter = this.procBuf[0]; + const composite = starter.getComposite(uchar); + const cc = uchar.getCanonicalClass(); - UChar.fromCharCode = strategies.reduceRight(function (next, strategy) { - return function (cp, needFeature) { - return strategy(next, cp, needFeature); - }; - }, null); - - UChar.isHighSurrogate = function(cp){ - return cp >= 0xD800 && cp <= 0xDBFF; - }; - UChar.isLowSurrogate = function(cp){ - return cp >= 0xDC00 && cp <= 0xDFFF; - }; - - UChar.prototype.prepFeature = function(){ - if(!this.feature){ - this.feature = UChar.fromCharCode(this.codepoint, true).feature; + if (composite && (this.lastClass < cc || this.lastClass === 0)) { + this.procBuf[0] = composite; + continue; } - }; - UChar.prototype.toString = function(){ - if(this.codepoint < 0x10000){ - return String.fromCharCode(this.codepoint); - } else { - var x = this.codepoint - 0x10000; - return String.fromCharCode(Math.floor(x / 0x400) + 0xD800, x % 0x400 + 0xDC00); + if (cc === 0) { + this.resBuf = this.procBuf; + this.procBuf = []; } - }; - UChar.prototype.getDecomp = function(){ - this.prepFeature(); - return this.feature[0] || null; - }; + this.lastClass = cc; + this.procBuf.push(uchar); + } - UChar.prototype.isCompatibility = function(){ - this.prepFeature(); - return !!this.feature[1] && (this.feature[1] & (1 << 8)); - }; - UChar.prototype.isExclude = function(){ - this.prepFeature(); - return !!this.feature[1] && (this.feature[1] & (1 << 9)); - }; - UChar.prototype.getCanonicalClass = function(){ - this.prepFeature(); - return !!this.feature[1] ? (this.feature[1] & 0xff) : 0; - }; - UChar.prototype.getComposite = function(following){ - this.prepFeature(); - if(!this.feature[2]){ - return null; - } - var cp = this.feature[2][following.codepoint]; - return cp ? UChar.fromCharCode(cp) : null; - }; + return this.resBuf.shift(); + } +} - var UCharIterator = function(str){ - this.str = str; - this.cursor = 0; - }; - UCharIterator.prototype.next = function(){ - if(!!this.str && this.cursor < this.str.length){ - var cp = this.str.charCodeAt(this.cursor++); - var d; - if(UChar.isHighSurrogate(cp) && this.cursor < this.str.length && UChar.isLowSurrogate((d = this.str.charCodeAt(this.cursor)))){ - cp = (cp - 0xD800) * 0x400 + (d -0xDC00) + 0x10000; - ++this.cursor; - } - return UChar.fromCharCode(cp); - } else { - this.str = null; - return null; - } - }; +function createIterator(mode, str) { + switch (mode) { + case 'NFD': { + const it1 = new UCharIterator(str); + const it2 = new RecursDecompIterator(it1, true); + return new DecompIterator(it2); + } + case 'NFKD': { + const it1 = new UCharIterator(str); + const it2 = new RecursDecompIterator(it1, false); + return new DecompIterator(it2); + } + case 'NFC': { + const it1 = new UCharIterator(str); + const it2 = new RecursDecompIterator(it1, true); + const it3 = new DecompIterator(it2); + return new CompIterator(it3); + } + case 'NFKC': { + const it1 = new UCharIterator(str); + const it2 = new RecursDecompIterator(it1, false); + const it3 = new DecompIterator(it2); + return new CompIterator(it3); + } + } - var RecursDecompIterator = function(it, cano){ - this.it = it; - this.canonical = cano; - this.resBuf = []; - }; + throw new Error(`${mode} is invalid.`); +} - RecursDecompIterator.prototype.next = function(){ - function recursiveDecomp(cano, uchar){ - var decomp = uchar.getDecomp(); - if(!!decomp && !(cano && uchar.isCompatibility())){ - var ret = []; - for(var i = 0; i < decomp.length; ++i){ - var a = recursiveDecomp(cano, UChar.fromCharCode(decomp[i])); - ret = ret.concat(a); - } - return ret; - } else { - return [uchar]; - } - } - if(this.resBuf.length === 0){ - var uchar = this.it.next(); - if(!uchar){ - return null; - } - this.resBuf = recursiveDecomp(this.canonical, uchar); - } - return this.resBuf.shift(); - }; +function normalize(mode, str) { + const it = createIterator(mode, str); - var DecompIterator = function(it){ - this.it = it; - this.resBuf = []; - }; + let ret = ''; + let uchar; - DecompIterator.prototype.next = function(){ - var cc; - if(this.resBuf.length === 0){ - do{ - var uchar = this.it.next(); - if(!uchar){ - break; - } - cc = uchar.getCanonicalClass(); - var inspt = this.resBuf.length; - if(cc !== 0){ - for(; inspt > 0; --inspt){ - var uchar2 = this.resBuf[inspt - 1]; - var cc2 = uchar2.getCanonicalClass(); - if(cc2 <= cc){ - break; - } - } - } - this.resBuf.splice(inspt, 0, uchar); - } while(cc !== 0); - } - return this.resBuf.shift(); - }; + for (;;) { + uchar = it.next(); - var CompIterator = function(it){ - this.it = it; - this.procBuf = []; - this.resBuf = []; - this.lastClass = null; - }; + if (!uchar) + break; - CompIterator.prototype.next = function(){ - while(this.resBuf.length === 0){ - var uchar = this.it.next(); - if(!uchar){ - this.resBuf = this.procBuf; - this.procBuf = []; - break; - } - if(this.procBuf.length === 0){ - this.lastClass = uchar.getCanonicalClass(); - this.procBuf.push(uchar); - } else { - var starter = this.procBuf[0]; - var composite = starter.getComposite(uchar); - var cc = uchar.getCanonicalClass(); - if(!!composite && (this.lastClass < cc || this.lastClass === 0)){ - this.procBuf[0] = composite; - } else { - if(cc === 0){ - this.resBuf = this.procBuf; - this.procBuf = []; - } - this.lastClass = cc; - this.procBuf.push(uchar); - } - } - } - return this.resBuf.shift(); - }; - - var createIterator = function(mode, str){ - switch(mode){ - case "NFD": - return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true)); - case "NFKD": - return new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false)); - case "NFC": - return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), true))); - case "NFKC": - return new CompIterator(new DecompIterator(new RecursDecompIterator(new UCharIterator(str), false))); - } - throw mode + " is invalid"; - }; - var normalize = function(mode, str){ - var it = createIterator(mode, str); - var ret = ""; - var uchar; - while(!!(uchar = it.next())){ - ret += uchar.toString(); - } - return ret; - }; - - /* API functions */ - function nfd(str){ - return normalize("NFD", str); - } - - function nfkd(str){ - return normalize("NFKD", str); - } - - function nfc(str){ - return normalize("NFC", str); - } - - function nfkc(str){ - return normalize("NFKC", str); - } - -/* Unicode data */ -UChar.udata={ -0:{60:[,,{824:8814}],61:[,,{824:8800}],62:[,,{824:8815}],65:[,,{768:192,769:193,770:194,771:195,772:256,774:258,775:550,776:196,777:7842,778:197,780:461,783:512,785:514,803:7840,805:7680,808:260}],66:[,,{775:7682,803:7684,817:7686}],67:[,,{769:262,770:264,775:266,780:268,807:199}],68:[,,{775:7690,780:270,803:7692,807:7696,813:7698,817:7694}],69:[,,{768:200,769:201,770:202,771:7868,772:274,774:276,775:278,776:203,777:7866,780:282,783:516,785:518,803:7864,807:552,808:280,813:7704,816:7706}],70:[,,{775:7710}],71:[,,{769:500,770:284,772:7712,774:286,775:288,780:486,807:290}],72:[,,{770:292,775:7714,776:7718,780:542,803:7716,807:7720,814:7722}],73:[,,{768:204,769:205,770:206,771:296,772:298,774:300,775:304,776:207,777:7880,780:463,783:520,785:522,803:7882,808:302,816:7724}],74:[,,{770:308}],75:[,,{769:7728,780:488,803:7730,807:310,817:7732}],76:[,,{769:313,780:317,803:7734,807:315,813:7740,817:7738}],77:[,,{769:7742,775:7744,803:7746}],78:[,,{768:504,769:323,771:209,775:7748,780:327,803:7750,807:325,813:7754,817:7752}],79:[,,{768:210,769:211,770:212,771:213,772:332,774:334,775:558,776:214,777:7886,779:336,780:465,783:524,785:526,795:416,803:7884,808:490}],80:[,,{769:7764,775:7766}],82:[,,{769:340,775:7768,780:344,783:528,785:530,803:7770,807:342,817:7774}],83:[,,{769:346,770:348,775:7776,780:352,803:7778,806:536,807:350}],84:[,,{775:7786,780:356,803:7788,806:538,807:354,813:7792,817:7790}],85:[,,{768:217,769:218,770:219,771:360,772:362,774:364,776:220,777:7910,778:366,779:368,780:467,783:532,785:534,795:431,803:7908,804:7794,808:370,813:7798,816:7796}],86:[,,{771:7804,803:7806}],87:[,,{768:7808,769:7810,770:372,775:7814,776:7812,803:7816}],88:[,,{775:7818,776:7820}],89:[,,{768:7922,769:221,770:374,771:7928,772:562,775:7822,776:376,777:7926,803:7924}],90:[,,{769:377,770:7824,775:379,780:381,803:7826,817:7828}],97:[,,{768:224,769:225,770:226,771:227,772:257,774:259,775:551,776:228,777:7843,778:229,780:462,783:513,785:515,803:7841,805:7681,808:261}],98:[,,{775:7683,803:7685,817:7687}],99:[,,{769:263,770:265,775:267,780:269,807:231}],100:[,,{775:7691,780:271,803:7693,807:7697,813:7699,817:7695}],101:[,,{768:232,769:233,770:234,771:7869,772:275,774:277,775:279,776:235,777:7867,780:283,783:517,785:519,803:7865,807:553,808:281,813:7705,816:7707}],102:[,,{775:7711}],103:[,,{769:501,770:285,772:7713,774:287,775:289,780:487,807:291}],104:[,,{770:293,775:7715,776:7719,780:543,803:7717,807:7721,814:7723,817:7830}],105:[,,{768:236,769:237,770:238,771:297,772:299,774:301,776:239,777:7881,780:464,783:521,785:523,803:7883,808:303,816:7725}],106:[,,{770:309,780:496}],107:[,,{769:7729,780:489,803:7731,807:311,817:7733}],108:[,,{769:314,780:318,803:7735,807:316,813:7741,817:7739}],109:[,,{769:7743,775:7745,803:7747}],110:[,,{768:505,769:324,771:241,775:7749,780:328,803:7751,807:326,813:7755,817:7753}],111:[,,{768:242,769:243,770:244,771:245,772:333,774:335,775:559,776:246,777:7887,779:337,780:466,783:525,785:527,795:417,803:7885,808:491}],112:[,,{769:7765,775:7767}],114:[,,{769:341,775:7769,780:345,783:529,785:531,803:7771,807:343,817:7775}],115:[,,{769:347,770:349,775:7777,780:353,803:7779,806:537,807:351}],116:[,,{775:7787,776:7831,780:357,803:7789,806:539,807:355,813:7793,817:7791}],117:[,,{768:249,769:250,770:251,771:361,772:363,774:365,776:252,777:7911,778:367,779:369,780:468,783:533,785:535,795:432,803:7909,804:7795,808:371,813:7799,816:7797}],118:[,,{771:7805,803:7807}],119:[,,{768:7809,769:7811,770:373,775:7815,776:7813,778:7832,803:7817}],120:[,,{775:7819,776:7821}],121:[,,{768:7923,769:253,770:375,771:7929,772:563,775:7823,776:255,777:7927,778:7833,803:7925}],122:[,,{769:378,770:7825,775:380,780:382,803:7827,817:7829}],160:[[32],256],168:[[32,776],256,{768:8173,769:901,834:8129}],170:[[97],256],175:[[32,772],256],178:[[50],256],179:[[51],256],180:[[32,769],256],181:[[956],256],184:[[32,807],256],185:[[49],256],186:[[111],256],188:[[49,8260,52],256],189:[[49,8260,50],256],190:[[51,8260,52],256],192:[[65,768]],193:[[65,769]],194:[[65,770],,{768:7846,769:7844,771:7850,777:7848}],195:[[65,771]],196:[[65,776],,{772:478}],197:[[65,778],,{769:506}],198:[,,{769:508,772:482}],199:[[67,807],,{769:7688}],200:[[69,768]],201:[[69,769]],202:[[69,770],,{768:7872,769:7870,771:7876,777:7874}],203:[[69,776]],204:[[73,768]],205:[[73,769]],206:[[73,770]],207:[[73,776],,{769:7726}],209:[[78,771]],210:[[79,768]],211:[[79,769]],212:[[79,770],,{768:7890,769:7888,771:7894,777:7892}],213:[[79,771],,{769:7756,772:556,776:7758}],214:[[79,776],,{772:554}],216:[,,{769:510}],217:[[85,768]],218:[[85,769]],219:[[85,770]],220:[[85,776],,{768:475,769:471,772:469,780:473}],221:[[89,769]],224:[[97,768]],225:[[97,769]],226:[[97,770],,{768:7847,769:7845,771:7851,777:7849}],227:[[97,771]],228:[[97,776],,{772:479}],229:[[97,778],,{769:507}],230:[,,{769:509,772:483}],231:[[99,807],,{769:7689}],232:[[101,768]],233:[[101,769]],234:[[101,770],,{768:7873,769:7871,771:7877,777:7875}],235:[[101,776]],236:[[105,768]],237:[[105,769]],238:[[105,770]],239:[[105,776],,{769:7727}],241:[[110,771]],242:[[111,768]],243:[[111,769]],244:[[111,770],,{768:7891,769:7889,771:7895,777:7893}],245:[[111,771],,{769:7757,772:557,776:7759}],246:[[111,776],,{772:555}],248:[,,{769:511}],249:[[117,768]],250:[[117,769]],251:[[117,770]],252:[[117,776],,{768:476,769:472,772:470,780:474}],253:[[121,769]],255:[[121,776]]}, -256:{256:[[65,772]],257:[[97,772]],258:[[65,774],,{768:7856,769:7854,771:7860,777:7858}],259:[[97,774],,{768:7857,769:7855,771:7861,777:7859}],260:[[65,808]],261:[[97,808]],262:[[67,769]],263:[[99,769]],264:[[67,770]],265:[[99,770]],266:[[67,775]],267:[[99,775]],268:[[67,780]],269:[[99,780]],270:[[68,780]],271:[[100,780]],274:[[69,772],,{768:7700,769:7702}],275:[[101,772],,{768:7701,769:7703}],276:[[69,774]],277:[[101,774]],278:[[69,775]],279:[[101,775]],280:[[69,808]],281:[[101,808]],282:[[69,780]],283:[[101,780]],284:[[71,770]],285:[[103,770]],286:[[71,774]],287:[[103,774]],288:[[71,775]],289:[[103,775]],290:[[71,807]],291:[[103,807]],292:[[72,770]],293:[[104,770]],296:[[73,771]],297:[[105,771]],298:[[73,772]],299:[[105,772]],300:[[73,774]],301:[[105,774]],302:[[73,808]],303:[[105,808]],304:[[73,775]],306:[[73,74],256],307:[[105,106],256],308:[[74,770]],309:[[106,770]],310:[[75,807]],311:[[107,807]],313:[[76,769]],314:[[108,769]],315:[[76,807]],316:[[108,807]],317:[[76,780]],318:[[108,780]],319:[[76,183],256],320:[[108,183],256],323:[[78,769]],324:[[110,769]],325:[[78,807]],326:[[110,807]],327:[[78,780]],328:[[110,780]],329:[[700,110],256],332:[[79,772],,{768:7760,769:7762}],333:[[111,772],,{768:7761,769:7763}],334:[[79,774]],335:[[111,774]],336:[[79,779]],337:[[111,779]],340:[[82,769]],341:[[114,769]],342:[[82,807]],343:[[114,807]],344:[[82,780]],345:[[114,780]],346:[[83,769],,{775:7780}],347:[[115,769],,{775:7781}],348:[[83,770]],349:[[115,770]],350:[[83,807]],351:[[115,807]],352:[[83,780],,{775:7782}],353:[[115,780],,{775:7783}],354:[[84,807]],355:[[116,807]],356:[[84,780]],357:[[116,780]],360:[[85,771],,{769:7800}],361:[[117,771],,{769:7801}],362:[[85,772],,{776:7802}],363:[[117,772],,{776:7803}],364:[[85,774]],365:[[117,774]],366:[[85,778]],367:[[117,778]],368:[[85,779]],369:[[117,779]],370:[[85,808]],371:[[117,808]],372:[[87,770]],373:[[119,770]],374:[[89,770]],375:[[121,770]],376:[[89,776]],377:[[90,769]],378:[[122,769]],379:[[90,775]],380:[[122,775]],381:[[90,780]],382:[[122,780]],383:[[115],256,{775:7835}],416:[[79,795],,{768:7900,769:7898,771:7904,777:7902,803:7906}],417:[[111,795],,{768:7901,769:7899,771:7905,777:7903,803:7907}],431:[[85,795],,{768:7914,769:7912,771:7918,777:7916,803:7920}],432:[[117,795],,{768:7915,769:7913,771:7919,777:7917,803:7921}],439:[,,{780:494}],452:[[68,381],256],453:[[68,382],256],454:[[100,382],256],455:[[76,74],256],456:[[76,106],256],457:[[108,106],256],458:[[78,74],256],459:[[78,106],256],460:[[110,106],256],461:[[65,780]],462:[[97,780]],463:[[73,780]],464:[[105,780]],465:[[79,780]],466:[[111,780]],467:[[85,780]],468:[[117,780]],469:[[220,772]],470:[[252,772]],471:[[220,769]],472:[[252,769]],473:[[220,780]],474:[[252,780]],475:[[220,768]],476:[[252,768]],478:[[196,772]],479:[[228,772]],480:[[550,772]],481:[[551,772]],482:[[198,772]],483:[[230,772]],486:[[71,780]],487:[[103,780]],488:[[75,780]],489:[[107,780]],490:[[79,808],,{772:492}],491:[[111,808],,{772:493}],492:[[490,772]],493:[[491,772]],494:[[439,780]],495:[[658,780]],496:[[106,780]],497:[[68,90],256],498:[[68,122],256],499:[[100,122],256],500:[[71,769]],501:[[103,769]],504:[[78,768]],505:[[110,768]],506:[[197,769]],507:[[229,769]],508:[[198,769]],509:[[230,769]],510:[[216,769]],511:[[248,769]],66045:[,220]}, -512:{512:[[65,783]],513:[[97,783]],514:[[65,785]],515:[[97,785]],516:[[69,783]],517:[[101,783]],518:[[69,785]],519:[[101,785]],520:[[73,783]],521:[[105,783]],522:[[73,785]],523:[[105,785]],524:[[79,783]],525:[[111,783]],526:[[79,785]],527:[[111,785]],528:[[82,783]],529:[[114,783]],530:[[82,785]],531:[[114,785]],532:[[85,783]],533:[[117,783]],534:[[85,785]],535:[[117,785]],536:[[83,806]],537:[[115,806]],538:[[84,806]],539:[[116,806]],542:[[72,780]],543:[[104,780]],550:[[65,775],,{772:480}],551:[[97,775],,{772:481}],552:[[69,807],,{774:7708}],553:[[101,807],,{774:7709}],554:[[214,772]],555:[[246,772]],556:[[213,772]],557:[[245,772]],558:[[79,775],,{772:560}],559:[[111,775],,{772:561}],560:[[558,772]],561:[[559,772]],562:[[89,772]],563:[[121,772]],658:[,,{780:495}],688:[[104],256],689:[[614],256],690:[[106],256],691:[[114],256],692:[[633],256],693:[[635],256],694:[[641],256],695:[[119],256],696:[[121],256],728:[[32,774],256],729:[[32,775],256],730:[[32,778],256],731:[[32,808],256],732:[[32,771],256],733:[[32,779],256],736:[[611],256],737:[[108],256],738:[[115],256],739:[[120],256],740:[[661],256],66272:[,220]}, -768:{768:[,230],769:[,230],770:[,230],771:[,230],772:[,230],773:[,230],774:[,230],775:[,230],776:[,230,{769:836}],777:[,230],778:[,230],779:[,230],780:[,230],781:[,230],782:[,230],783:[,230],784:[,230],785:[,230],786:[,230],787:[,230],788:[,230],789:[,232],790:[,220],791:[,220],792:[,220],793:[,220],794:[,232],795:[,216],796:[,220],797:[,220],798:[,220],799:[,220],800:[,220],801:[,202],802:[,202],803:[,220],804:[,220],805:[,220],806:[,220],807:[,202],808:[,202],809:[,220],810:[,220],811:[,220],812:[,220],813:[,220],814:[,220],815:[,220],816:[,220],817:[,220],818:[,220],819:[,220],820:[,1],821:[,1],822:[,1],823:[,1],824:[,1],825:[,220],826:[,220],827:[,220],828:[,220],829:[,230],830:[,230],831:[,230],832:[[768],230],833:[[769],230],834:[,230],835:[[787],230],836:[[776,769],230],837:[,240],838:[,230],839:[,220],840:[,220],841:[,220],842:[,230],843:[,230],844:[,230],845:[,220],846:[,220],848:[,230],849:[,230],850:[,230],851:[,220],852:[,220],853:[,220],854:[,220],855:[,230],856:[,232],857:[,220],858:[,220],859:[,230],860:[,233],861:[,234],862:[,234],863:[,233],864:[,234],865:[,234],866:[,233],867:[,230],868:[,230],869:[,230],870:[,230],871:[,230],872:[,230],873:[,230],874:[,230],875:[,230],876:[,230],877:[,230],878:[,230],879:[,230],884:[[697]],890:[[32,837],256],894:[[59]],900:[[32,769],256],901:[[168,769]],902:[[913,769]],903:[[183]],904:[[917,769]],905:[[919,769]],906:[[921,769]],908:[[927,769]],910:[[933,769]],911:[[937,769]],912:[[970,769]],913:[,,{768:8122,769:902,772:8121,774:8120,787:7944,788:7945,837:8124}],917:[,,{768:8136,769:904,787:7960,788:7961}],919:[,,{768:8138,769:905,787:7976,788:7977,837:8140}],921:[,,{768:8154,769:906,772:8153,774:8152,776:938,787:7992,788:7993}],927:[,,{768:8184,769:908,787:8008,788:8009}],929:[,,{788:8172}],933:[,,{768:8170,769:910,772:8169,774:8168,776:939,788:8025}],937:[,,{768:8186,769:911,787:8040,788:8041,837:8188}],938:[[921,776]],939:[[933,776]],940:[[945,769],,{837:8116}],941:[[949,769]],942:[[951,769],,{837:8132}],943:[[953,769]],944:[[971,769]],945:[,,{768:8048,769:940,772:8113,774:8112,787:7936,788:7937,834:8118,837:8115}],949:[,,{768:8050,769:941,787:7952,788:7953}],951:[,,{768:8052,769:942,787:7968,788:7969,834:8134,837:8131}],953:[,,{768:8054,769:943,772:8145,774:8144,776:970,787:7984,788:7985,834:8150}],959:[,,{768:8056,769:972,787:8000,788:8001}],961:[,,{787:8164,788:8165}],965:[,,{768:8058,769:973,772:8161,774:8160,776:971,787:8016,788:8017,834:8166}],969:[,,{768:8060,769:974,787:8032,788:8033,834:8182,837:8179}],970:[[953,776],,{768:8146,769:912,834:8151}],971:[[965,776],,{768:8162,769:944,834:8167}],972:[[959,769]],973:[[965,769]],974:[[969,769],,{837:8180}],976:[[946],256],977:[[952],256],978:[[933],256,{769:979,776:980}],979:[[978,769]],980:[[978,776]],981:[[966],256],982:[[960],256],1008:[[954],256],1009:[[961],256],1010:[[962],256],1012:[[920],256],1013:[[949],256],1017:[[931],256],66422:[,230],66423:[,230],66424:[,230],66425:[,230],66426:[,230]}, -1024:{1024:[[1045,768]],1025:[[1045,776]],1027:[[1043,769]],1030:[,,{776:1031}],1031:[[1030,776]],1036:[[1050,769]],1037:[[1048,768]],1038:[[1059,774]],1040:[,,{774:1232,776:1234}],1043:[,,{769:1027}],1045:[,,{768:1024,774:1238,776:1025}],1046:[,,{774:1217,776:1244}],1047:[,,{776:1246}],1048:[,,{768:1037,772:1250,774:1049,776:1252}],1049:[[1048,774]],1050:[,,{769:1036}],1054:[,,{776:1254}],1059:[,,{772:1262,774:1038,776:1264,779:1266}],1063:[,,{776:1268}],1067:[,,{776:1272}],1069:[,,{776:1260}],1072:[,,{774:1233,776:1235}],1075:[,,{769:1107}],1077:[,,{768:1104,774:1239,776:1105}],1078:[,,{774:1218,776:1245}],1079:[,,{776:1247}],1080:[,,{768:1117,772:1251,774:1081,776:1253}],1081:[[1080,774]],1082:[,,{769:1116}],1086:[,,{776:1255}],1091:[,,{772:1263,774:1118,776:1265,779:1267}],1095:[,,{776:1269}],1099:[,,{776:1273}],1101:[,,{776:1261}],1104:[[1077,768]],1105:[[1077,776]],1107:[[1075,769]],1110:[,,{776:1111}],1111:[[1110,776]],1116:[[1082,769]],1117:[[1080,768]],1118:[[1091,774]],1140:[,,{783:1142}],1141:[,,{783:1143}],1142:[[1140,783]],1143:[[1141,783]],1155:[,230],1156:[,230],1157:[,230],1158:[,230],1159:[,230],1217:[[1046,774]],1218:[[1078,774]],1232:[[1040,774]],1233:[[1072,774]],1234:[[1040,776]],1235:[[1072,776]],1238:[[1045,774]],1239:[[1077,774]],1240:[,,{776:1242}],1241:[,,{776:1243}],1242:[[1240,776]],1243:[[1241,776]],1244:[[1046,776]],1245:[[1078,776]],1246:[[1047,776]],1247:[[1079,776]],1250:[[1048,772]],1251:[[1080,772]],1252:[[1048,776]],1253:[[1080,776]],1254:[[1054,776]],1255:[[1086,776]],1256:[,,{776:1258}],1257:[,,{776:1259}],1258:[[1256,776]],1259:[[1257,776]],1260:[[1069,776]],1261:[[1101,776]],1262:[[1059,772]],1263:[[1091,772]],1264:[[1059,776]],1265:[[1091,776]],1266:[[1059,779]],1267:[[1091,779]],1268:[[1063,776]],1269:[[1095,776]],1272:[[1067,776]],1273:[[1099,776]]}, -1280:{1415:[[1381,1410],256],1425:[,220],1426:[,230],1427:[,230],1428:[,230],1429:[,230],1430:[,220],1431:[,230],1432:[,230],1433:[,230],1434:[,222],1435:[,220],1436:[,230],1437:[,230],1438:[,230],1439:[,230],1440:[,230],1441:[,230],1442:[,220],1443:[,220],1444:[,220],1445:[,220],1446:[,220],1447:[,220],1448:[,230],1449:[,230],1450:[,220],1451:[,230],1452:[,230],1453:[,222],1454:[,228],1455:[,230],1456:[,10],1457:[,11],1458:[,12],1459:[,13],1460:[,14],1461:[,15],1462:[,16],1463:[,17],1464:[,18],1465:[,19],1466:[,19],1467:[,20],1468:[,21],1469:[,22],1471:[,23],1473:[,24],1474:[,25],1476:[,230],1477:[,220],1479:[,18]}, -1536:{1552:[,230],1553:[,230],1554:[,230],1555:[,230],1556:[,230],1557:[,230],1558:[,230],1559:[,230],1560:[,30],1561:[,31],1562:[,32],1570:[[1575,1619]],1571:[[1575,1620]],1572:[[1608,1620]],1573:[[1575,1621]],1574:[[1610,1620]],1575:[,,{1619:1570,1620:1571,1621:1573}],1608:[,,{1620:1572}],1610:[,,{1620:1574}],1611:[,27],1612:[,28],1613:[,29],1614:[,30],1615:[,31],1616:[,32],1617:[,33],1618:[,34],1619:[,230],1620:[,230],1621:[,220],1622:[,220],1623:[,230],1624:[,230],1625:[,230],1626:[,230],1627:[,230],1628:[,220],1629:[,230],1630:[,230],1631:[,220],1648:[,35],1653:[[1575,1652],256],1654:[[1608,1652],256],1655:[[1735,1652],256],1656:[[1610,1652],256],1728:[[1749,1620]],1729:[,,{1620:1730}],1730:[[1729,1620]],1746:[,,{1620:1747}],1747:[[1746,1620]],1749:[,,{1620:1728}],1750:[,230],1751:[,230],1752:[,230],1753:[,230],1754:[,230],1755:[,230],1756:[,230],1759:[,230],1760:[,230],1761:[,230],1762:[,230],1763:[,220],1764:[,230],1767:[,230],1768:[,230],1770:[,220],1771:[,230],1772:[,230],1773:[,220]}, -1792:{1809:[,36],1840:[,230],1841:[,220],1842:[,230],1843:[,230],1844:[,220],1845:[,230],1846:[,230],1847:[,220],1848:[,220],1849:[,220],1850:[,230],1851:[,220],1852:[,220],1853:[,230],1854:[,220],1855:[,230],1856:[,230],1857:[,230],1858:[,220],1859:[,230],1860:[,220],1861:[,230],1862:[,220],1863:[,230],1864:[,220],1865:[,230],1866:[,230],2027:[,230],2028:[,230],2029:[,230],2030:[,230],2031:[,230],2032:[,230],2033:[,230],2034:[,220],2035:[,230]}, -2048:{2070:[,230],2071:[,230],2072:[,230],2073:[,230],2075:[,230],2076:[,230],2077:[,230],2078:[,230],2079:[,230],2080:[,230],2081:[,230],2082:[,230],2083:[,230],2085:[,230],2086:[,230],2087:[,230],2089:[,230],2090:[,230],2091:[,230],2092:[,230],2093:[,230],2137:[,220],2138:[,220],2139:[,220],2276:[,230],2277:[,230],2278:[,220],2279:[,230],2280:[,230],2281:[,220],2282:[,230],2283:[,230],2284:[,230],2285:[,220],2286:[,220],2287:[,220],2288:[,27],2289:[,28],2290:[,29],2291:[,230],2292:[,230],2293:[,230],2294:[,220],2295:[,230],2296:[,230],2297:[,220],2298:[,220],2299:[,230],2300:[,230],2301:[,230],2302:[,230],2303:[,230]}, -2304:{2344:[,,{2364:2345}],2345:[[2344,2364]],2352:[,,{2364:2353}],2353:[[2352,2364]],2355:[,,{2364:2356}],2356:[[2355,2364]],2364:[,7],2381:[,9],2385:[,230],2386:[,220],2387:[,230],2388:[,230],2392:[[2325,2364],512],2393:[[2326,2364],512],2394:[[2327,2364],512],2395:[[2332,2364],512],2396:[[2337,2364],512],2397:[[2338,2364],512],2398:[[2347,2364],512],2399:[[2351,2364],512],2492:[,7],2503:[,,{2494:2507,2519:2508}],2507:[[2503,2494]],2508:[[2503,2519]],2509:[,9],2524:[[2465,2492],512],2525:[[2466,2492],512],2527:[[2479,2492],512]}, -2560:{2611:[[2610,2620],512],2614:[[2616,2620],512],2620:[,7],2637:[,9],2649:[[2582,2620],512],2650:[[2583,2620],512],2651:[[2588,2620],512],2654:[[2603,2620],512],2748:[,7],2765:[,9],68109:[,220],68111:[,230],68152:[,230],68153:[,1],68154:[,220],68159:[,9],68325:[,230],68326:[,220]}, -2816:{2876:[,7],2887:[,,{2878:2891,2902:2888,2903:2892}],2888:[[2887,2902]],2891:[[2887,2878]],2892:[[2887,2903]],2893:[,9],2908:[[2849,2876],512],2909:[[2850,2876],512],2962:[,,{3031:2964}],2964:[[2962,3031]],3014:[,,{3006:3018,3031:3020}],3015:[,,{3006:3019}],3018:[[3014,3006]],3019:[[3015,3006]],3020:[[3014,3031]],3021:[,9]}, -3072:{3142:[,,{3158:3144}],3144:[[3142,3158]],3149:[,9],3157:[,84],3158:[,91],3260:[,7],3263:[,,{3285:3264}],3264:[[3263,3285]],3270:[,,{3266:3274,3285:3271,3286:3272}],3271:[[3270,3285]],3272:[[3270,3286]],3274:[[3270,3266],,{3285:3275}],3275:[[3274,3285]],3277:[,9]}, -3328:{3398:[,,{3390:3402,3415:3404}],3399:[,,{3390:3403}],3402:[[3398,3390]],3403:[[3399,3390]],3404:[[3398,3415]],3405:[,9],3530:[,9],3545:[,,{3530:3546,3535:3548,3551:3550}],3546:[[3545,3530]],3548:[[3545,3535],,{3530:3549}],3549:[[3548,3530]],3550:[[3545,3551]]}, -3584:{3635:[[3661,3634],256],3640:[,103],3641:[,103],3642:[,9],3656:[,107],3657:[,107],3658:[,107],3659:[,107],3763:[[3789,3762],256],3768:[,118],3769:[,118],3784:[,122],3785:[,122],3786:[,122],3787:[,122],3804:[[3755,3737],256],3805:[[3755,3745],256]}, -3840:{3852:[[3851],256],3864:[,220],3865:[,220],3893:[,220],3895:[,220],3897:[,216],3907:[[3906,4023],512],3917:[[3916,4023],512],3922:[[3921,4023],512],3927:[[3926,4023],512],3932:[[3931,4023],512],3945:[[3904,4021],512],3953:[,129],3954:[,130],3955:[[3953,3954],512],3956:[,132],3957:[[3953,3956],512],3958:[[4018,3968],512],3959:[[4018,3969],256],3960:[[4019,3968],512],3961:[[4019,3969],256],3962:[,130],3963:[,130],3964:[,130],3965:[,130],3968:[,130],3969:[[3953,3968],512],3970:[,230],3971:[,230],3972:[,9],3974:[,230],3975:[,230],3987:[[3986,4023],512],3997:[[3996,4023],512],4002:[[4001,4023],512],4007:[[4006,4023],512],4012:[[4011,4023],512],4025:[[3984,4021],512],4038:[,220]}, -4096:{4133:[,,{4142:4134}],4134:[[4133,4142]],4151:[,7],4153:[,9],4154:[,9],4237:[,220],4348:[[4316],256],69702:[,9],69759:[,9],69785:[,,{69818:69786}],69786:[[69785,69818]],69787:[,,{69818:69788}],69788:[[69787,69818]],69797:[,,{69818:69803}],69803:[[69797,69818]],69817:[,9],69818:[,7]}, -4352:{69888:[,230],69889:[,230],69890:[,230],69934:[[69937,69927]],69935:[[69938,69927]],69937:[,,{69927:69934}],69938:[,,{69927:69935}],69939:[,9],69940:[,9],70003:[,7],70080:[,9]}, -4608:{70197:[,9],70198:[,7],70377:[,7],70378:[,9]}, -4864:{4957:[,230],4958:[,230],4959:[,230],70460:[,7],70471:[,,{70462:70475,70487:70476}],70475:[[70471,70462]],70476:[[70471,70487]],70477:[,9],70502:[,230],70503:[,230],70504:[,230],70505:[,230],70506:[,230],70507:[,230],70508:[,230],70512:[,230],70513:[,230],70514:[,230],70515:[,230],70516:[,230]}, -5120:{70841:[,,{70832:70844,70842:70843,70845:70846}],70843:[[70841,70842]],70844:[[70841,70832]],70846:[[70841,70845]],70850:[,9],70851:[,7]}, -5376:{71096:[,,{71087:71098}],71097:[,,{71087:71099}],71098:[[71096,71087]],71099:[[71097,71087]],71103:[,9],71104:[,7]}, -5632:{71231:[,9],71350:[,9],71351:[,7]}, -5888:{5908:[,9],5940:[,9],6098:[,9],6109:[,230]}, -6144:{6313:[,228]}, -6400:{6457:[,222],6458:[,230],6459:[,220]}, -6656:{6679:[,230],6680:[,220],6752:[,9],6773:[,230],6774:[,230],6775:[,230],6776:[,230],6777:[,230],6778:[,230],6779:[,230],6780:[,230],6783:[,220],6832:[,230],6833:[,230],6834:[,230],6835:[,230],6836:[,230],6837:[,220],6838:[,220],6839:[,220],6840:[,220],6841:[,220],6842:[,220],6843:[,230],6844:[,230],6845:[,220]}, -6912:{6917:[,,{6965:6918}],6918:[[6917,6965]],6919:[,,{6965:6920}],6920:[[6919,6965]],6921:[,,{6965:6922}],6922:[[6921,6965]],6923:[,,{6965:6924}],6924:[[6923,6965]],6925:[,,{6965:6926}],6926:[[6925,6965]],6929:[,,{6965:6930}],6930:[[6929,6965]],6964:[,7],6970:[,,{6965:6971}],6971:[[6970,6965]],6972:[,,{6965:6973}],6973:[[6972,6965]],6974:[,,{6965:6976}],6975:[,,{6965:6977}],6976:[[6974,6965]],6977:[[6975,6965]],6978:[,,{6965:6979}],6979:[[6978,6965]],6980:[,9],7019:[,230],7020:[,220],7021:[,230],7022:[,230],7023:[,230],7024:[,230],7025:[,230],7026:[,230],7027:[,230],7082:[,9],7083:[,9],7142:[,7],7154:[,9],7155:[,9]}, -7168:{7223:[,7],7376:[,230],7377:[,230],7378:[,230],7380:[,1],7381:[,220],7382:[,220],7383:[,220],7384:[,220],7385:[,220],7386:[,230],7387:[,230],7388:[,220],7389:[,220],7390:[,220],7391:[,220],7392:[,230],7394:[,1],7395:[,1],7396:[,1],7397:[,1],7398:[,1],7399:[,1],7400:[,1],7405:[,220],7412:[,230],7416:[,230],7417:[,230]}, -7424:{7468:[[65],256],7469:[[198],256],7470:[[66],256],7472:[[68],256],7473:[[69],256],7474:[[398],256],7475:[[71],256],7476:[[72],256],7477:[[73],256],7478:[[74],256],7479:[[75],256],7480:[[76],256],7481:[[77],256],7482:[[78],256],7484:[[79],256],7485:[[546],256],7486:[[80],256],7487:[[82],256],7488:[[84],256],7489:[[85],256],7490:[[87],256],7491:[[97],256],7492:[[592],256],7493:[[593],256],7494:[[7426],256],7495:[[98],256],7496:[[100],256],7497:[[101],256],7498:[[601],256],7499:[[603],256],7500:[[604],256],7501:[[103],256],7503:[[107],256],7504:[[109],256],7505:[[331],256],7506:[[111],256],7507:[[596],256],7508:[[7446],256],7509:[[7447],256],7510:[[112],256],7511:[[116],256],7512:[[117],256],7513:[[7453],256],7514:[[623],256],7515:[[118],256],7516:[[7461],256],7517:[[946],256],7518:[[947],256],7519:[[948],256],7520:[[966],256],7521:[[967],256],7522:[[105],256],7523:[[114],256],7524:[[117],256],7525:[[118],256],7526:[[946],256],7527:[[947],256],7528:[[961],256],7529:[[966],256],7530:[[967],256],7544:[[1085],256],7579:[[594],256],7580:[[99],256],7581:[[597],256],7582:[[240],256],7583:[[604],256],7584:[[102],256],7585:[[607],256],7586:[[609],256],7587:[[613],256],7588:[[616],256],7589:[[617],256],7590:[[618],256],7591:[[7547],256],7592:[[669],256],7593:[[621],256],7594:[[7557],256],7595:[[671],256],7596:[[625],256],7597:[[624],256],7598:[[626],256],7599:[[627],256],7600:[[628],256],7601:[[629],256],7602:[[632],256],7603:[[642],256],7604:[[643],256],7605:[[427],256],7606:[[649],256],7607:[[650],256],7608:[[7452],256],7609:[[651],256],7610:[[652],256],7611:[[122],256],7612:[[656],256],7613:[[657],256],7614:[[658],256],7615:[[952],256],7616:[,230],7617:[,230],7618:[,220],7619:[,230],7620:[,230],7621:[,230],7622:[,230],7623:[,230],7624:[,230],7625:[,230],7626:[,220],7627:[,230],7628:[,230],7629:[,234],7630:[,214],7631:[,220],7632:[,202],7633:[,230],7634:[,230],7635:[,230],7636:[,230],7637:[,230],7638:[,230],7639:[,230],7640:[,230],7641:[,230],7642:[,230],7643:[,230],7644:[,230],7645:[,230],7646:[,230],7647:[,230],7648:[,230],7649:[,230],7650:[,230],7651:[,230],7652:[,230],7653:[,230],7654:[,230],7655:[,230],7656:[,230],7657:[,230],7658:[,230],7659:[,230],7660:[,230],7661:[,230],7662:[,230],7663:[,230],7664:[,230],7665:[,230],7666:[,230],7667:[,230],7668:[,230],7669:[,230],7676:[,233],7677:[,220],7678:[,230],7679:[,220]}, -7680:{7680:[[65,805]],7681:[[97,805]],7682:[[66,775]],7683:[[98,775]],7684:[[66,803]],7685:[[98,803]],7686:[[66,817]],7687:[[98,817]],7688:[[199,769]],7689:[[231,769]],7690:[[68,775]],7691:[[100,775]],7692:[[68,803]],7693:[[100,803]],7694:[[68,817]],7695:[[100,817]],7696:[[68,807]],7697:[[100,807]],7698:[[68,813]],7699:[[100,813]],7700:[[274,768]],7701:[[275,768]],7702:[[274,769]],7703:[[275,769]],7704:[[69,813]],7705:[[101,813]],7706:[[69,816]],7707:[[101,816]],7708:[[552,774]],7709:[[553,774]],7710:[[70,775]],7711:[[102,775]],7712:[[71,772]],7713:[[103,772]],7714:[[72,775]],7715:[[104,775]],7716:[[72,803]],7717:[[104,803]],7718:[[72,776]],7719:[[104,776]],7720:[[72,807]],7721:[[104,807]],7722:[[72,814]],7723:[[104,814]],7724:[[73,816]],7725:[[105,816]],7726:[[207,769]],7727:[[239,769]],7728:[[75,769]],7729:[[107,769]],7730:[[75,803]],7731:[[107,803]],7732:[[75,817]],7733:[[107,817]],7734:[[76,803],,{772:7736}],7735:[[108,803],,{772:7737}],7736:[[7734,772]],7737:[[7735,772]],7738:[[76,817]],7739:[[108,817]],7740:[[76,813]],7741:[[108,813]],7742:[[77,769]],7743:[[109,769]],7744:[[77,775]],7745:[[109,775]],7746:[[77,803]],7747:[[109,803]],7748:[[78,775]],7749:[[110,775]],7750:[[78,803]],7751:[[110,803]],7752:[[78,817]],7753:[[110,817]],7754:[[78,813]],7755:[[110,813]],7756:[[213,769]],7757:[[245,769]],7758:[[213,776]],7759:[[245,776]],7760:[[332,768]],7761:[[333,768]],7762:[[332,769]],7763:[[333,769]],7764:[[80,769]],7765:[[112,769]],7766:[[80,775]],7767:[[112,775]],7768:[[82,775]],7769:[[114,775]],7770:[[82,803],,{772:7772}],7771:[[114,803],,{772:7773}],7772:[[7770,772]],7773:[[7771,772]],7774:[[82,817]],7775:[[114,817]],7776:[[83,775]],7777:[[115,775]],7778:[[83,803],,{775:7784}],7779:[[115,803],,{775:7785}],7780:[[346,775]],7781:[[347,775]],7782:[[352,775]],7783:[[353,775]],7784:[[7778,775]],7785:[[7779,775]],7786:[[84,775]],7787:[[116,775]],7788:[[84,803]],7789:[[116,803]],7790:[[84,817]],7791:[[116,817]],7792:[[84,813]],7793:[[116,813]],7794:[[85,804]],7795:[[117,804]],7796:[[85,816]],7797:[[117,816]],7798:[[85,813]],7799:[[117,813]],7800:[[360,769]],7801:[[361,769]],7802:[[362,776]],7803:[[363,776]],7804:[[86,771]],7805:[[118,771]],7806:[[86,803]],7807:[[118,803]],7808:[[87,768]],7809:[[119,768]],7810:[[87,769]],7811:[[119,769]],7812:[[87,776]],7813:[[119,776]],7814:[[87,775]],7815:[[119,775]],7816:[[87,803]],7817:[[119,803]],7818:[[88,775]],7819:[[120,775]],7820:[[88,776]],7821:[[120,776]],7822:[[89,775]],7823:[[121,775]],7824:[[90,770]],7825:[[122,770]],7826:[[90,803]],7827:[[122,803]],7828:[[90,817]],7829:[[122,817]],7830:[[104,817]],7831:[[116,776]],7832:[[119,778]],7833:[[121,778]],7834:[[97,702],256],7835:[[383,775]],7840:[[65,803],,{770:7852,774:7862}],7841:[[97,803],,{770:7853,774:7863}],7842:[[65,777]],7843:[[97,777]],7844:[[194,769]],7845:[[226,769]],7846:[[194,768]],7847:[[226,768]],7848:[[194,777]],7849:[[226,777]],7850:[[194,771]],7851:[[226,771]],7852:[[7840,770]],7853:[[7841,770]],7854:[[258,769]],7855:[[259,769]],7856:[[258,768]],7857:[[259,768]],7858:[[258,777]],7859:[[259,777]],7860:[[258,771]],7861:[[259,771]],7862:[[7840,774]],7863:[[7841,774]],7864:[[69,803],,{770:7878}],7865:[[101,803],,{770:7879}],7866:[[69,777]],7867:[[101,777]],7868:[[69,771]],7869:[[101,771]],7870:[[202,769]],7871:[[234,769]],7872:[[202,768]],7873:[[234,768]],7874:[[202,777]],7875:[[234,777]],7876:[[202,771]],7877:[[234,771]],7878:[[7864,770]],7879:[[7865,770]],7880:[[73,777]],7881:[[105,777]],7882:[[73,803]],7883:[[105,803]],7884:[[79,803],,{770:7896}],7885:[[111,803],,{770:7897}],7886:[[79,777]],7887:[[111,777]],7888:[[212,769]],7889:[[244,769]],7890:[[212,768]],7891:[[244,768]],7892:[[212,777]],7893:[[244,777]],7894:[[212,771]],7895:[[244,771]],7896:[[7884,770]],7897:[[7885,770]],7898:[[416,769]],7899:[[417,769]],7900:[[416,768]],7901:[[417,768]],7902:[[416,777]],7903:[[417,777]],7904:[[416,771]],7905:[[417,771]],7906:[[416,803]],7907:[[417,803]],7908:[[85,803]],7909:[[117,803]],7910:[[85,777]],7911:[[117,777]],7912:[[431,769]],7913:[[432,769]],7914:[[431,768]],7915:[[432,768]],7916:[[431,777]],7917:[[432,777]],7918:[[431,771]],7919:[[432,771]],7920:[[431,803]],7921:[[432,803]],7922:[[89,768]],7923:[[121,768]],7924:[[89,803]],7925:[[121,803]],7926:[[89,777]],7927:[[121,777]],7928:[[89,771]],7929:[[121,771]]}, -7936:{7936:[[945,787],,{768:7938,769:7940,834:7942,837:8064}],7937:[[945,788],,{768:7939,769:7941,834:7943,837:8065}],7938:[[7936,768],,{837:8066}],7939:[[7937,768],,{837:8067}],7940:[[7936,769],,{837:8068}],7941:[[7937,769],,{837:8069}],7942:[[7936,834],,{837:8070}],7943:[[7937,834],,{837:8071}],7944:[[913,787],,{768:7946,769:7948,834:7950,837:8072}],7945:[[913,788],,{768:7947,769:7949,834:7951,837:8073}],7946:[[7944,768],,{837:8074}],7947:[[7945,768],,{837:8075}],7948:[[7944,769],,{837:8076}],7949:[[7945,769],,{837:8077}],7950:[[7944,834],,{837:8078}],7951:[[7945,834],,{837:8079}],7952:[[949,787],,{768:7954,769:7956}],7953:[[949,788],,{768:7955,769:7957}],7954:[[7952,768]],7955:[[7953,768]],7956:[[7952,769]],7957:[[7953,769]],7960:[[917,787],,{768:7962,769:7964}],7961:[[917,788],,{768:7963,769:7965}],7962:[[7960,768]],7963:[[7961,768]],7964:[[7960,769]],7965:[[7961,769]],7968:[[951,787],,{768:7970,769:7972,834:7974,837:8080}],7969:[[951,788],,{768:7971,769:7973,834:7975,837:8081}],7970:[[7968,768],,{837:8082}],7971:[[7969,768],,{837:8083}],7972:[[7968,769],,{837:8084}],7973:[[7969,769],,{837:8085}],7974:[[7968,834],,{837:8086}],7975:[[7969,834],,{837:8087}],7976:[[919,787],,{768:7978,769:7980,834:7982,837:8088}],7977:[[919,788],,{768:7979,769:7981,834:7983,837:8089}],7978:[[7976,768],,{837:8090}],7979:[[7977,768],,{837:8091}],7980:[[7976,769],,{837:8092}],7981:[[7977,769],,{837:8093}],7982:[[7976,834],,{837:8094}],7983:[[7977,834],,{837:8095}],7984:[[953,787],,{768:7986,769:7988,834:7990}],7985:[[953,788],,{768:7987,769:7989,834:7991}],7986:[[7984,768]],7987:[[7985,768]],7988:[[7984,769]],7989:[[7985,769]],7990:[[7984,834]],7991:[[7985,834]],7992:[[921,787],,{768:7994,769:7996,834:7998}],7993:[[921,788],,{768:7995,769:7997,834:7999}],7994:[[7992,768]],7995:[[7993,768]],7996:[[7992,769]],7997:[[7993,769]],7998:[[7992,834]],7999:[[7993,834]],8000:[[959,787],,{768:8002,769:8004}],8001:[[959,788],,{768:8003,769:8005}],8002:[[8000,768]],8003:[[8001,768]],8004:[[8000,769]],8005:[[8001,769]],8008:[[927,787],,{768:8010,769:8012}],8009:[[927,788],,{768:8011,769:8013}],8010:[[8008,768]],8011:[[8009,768]],8012:[[8008,769]],8013:[[8009,769]],8016:[[965,787],,{768:8018,769:8020,834:8022}],8017:[[965,788],,{768:8019,769:8021,834:8023}],8018:[[8016,768]],8019:[[8017,768]],8020:[[8016,769]],8021:[[8017,769]],8022:[[8016,834]],8023:[[8017,834]],8025:[[933,788],,{768:8027,769:8029,834:8031}],8027:[[8025,768]],8029:[[8025,769]],8031:[[8025,834]],8032:[[969,787],,{768:8034,769:8036,834:8038,837:8096}],8033:[[969,788],,{768:8035,769:8037,834:8039,837:8097}],8034:[[8032,768],,{837:8098}],8035:[[8033,768],,{837:8099}],8036:[[8032,769],,{837:8100}],8037:[[8033,769],,{837:8101}],8038:[[8032,834],,{837:8102}],8039:[[8033,834],,{837:8103}],8040:[[937,787],,{768:8042,769:8044,834:8046,837:8104}],8041:[[937,788],,{768:8043,769:8045,834:8047,837:8105}],8042:[[8040,768],,{837:8106}],8043:[[8041,768],,{837:8107}],8044:[[8040,769],,{837:8108}],8045:[[8041,769],,{837:8109}],8046:[[8040,834],,{837:8110}],8047:[[8041,834],,{837:8111}],8048:[[945,768],,{837:8114}],8049:[[940]],8050:[[949,768]],8051:[[941]],8052:[[951,768],,{837:8130}],8053:[[942]],8054:[[953,768]],8055:[[943]],8056:[[959,768]],8057:[[972]],8058:[[965,768]],8059:[[973]],8060:[[969,768],,{837:8178}],8061:[[974]],8064:[[7936,837]],8065:[[7937,837]],8066:[[7938,837]],8067:[[7939,837]],8068:[[7940,837]],8069:[[7941,837]],8070:[[7942,837]],8071:[[7943,837]],8072:[[7944,837]],8073:[[7945,837]],8074:[[7946,837]],8075:[[7947,837]],8076:[[7948,837]],8077:[[7949,837]],8078:[[7950,837]],8079:[[7951,837]],8080:[[7968,837]],8081:[[7969,837]],8082:[[7970,837]],8083:[[7971,837]],8084:[[7972,837]],8085:[[7973,837]],8086:[[7974,837]],8087:[[7975,837]],8088:[[7976,837]],8089:[[7977,837]],8090:[[7978,837]],8091:[[7979,837]],8092:[[7980,837]],8093:[[7981,837]],8094:[[7982,837]],8095:[[7983,837]],8096:[[8032,837]],8097:[[8033,837]],8098:[[8034,837]],8099:[[8035,837]],8100:[[8036,837]],8101:[[8037,837]],8102:[[8038,837]],8103:[[8039,837]],8104:[[8040,837]],8105:[[8041,837]],8106:[[8042,837]],8107:[[8043,837]],8108:[[8044,837]],8109:[[8045,837]],8110:[[8046,837]],8111:[[8047,837]],8112:[[945,774]],8113:[[945,772]],8114:[[8048,837]],8115:[[945,837]],8116:[[940,837]],8118:[[945,834],,{837:8119}],8119:[[8118,837]],8120:[[913,774]],8121:[[913,772]],8122:[[913,768]],8123:[[902]],8124:[[913,837]],8125:[[32,787],256],8126:[[953]],8127:[[32,787],256,{768:8141,769:8142,834:8143}],8128:[[32,834],256],8129:[[168,834]],8130:[[8052,837]],8131:[[951,837]],8132:[[942,837]],8134:[[951,834],,{837:8135}],8135:[[8134,837]],8136:[[917,768]],8137:[[904]],8138:[[919,768]],8139:[[905]],8140:[[919,837]],8141:[[8127,768]],8142:[[8127,769]],8143:[[8127,834]],8144:[[953,774]],8145:[[953,772]],8146:[[970,768]],8147:[[912]],8150:[[953,834]],8151:[[970,834]],8152:[[921,774]],8153:[[921,772]],8154:[[921,768]],8155:[[906]],8157:[[8190,768]],8158:[[8190,769]],8159:[[8190,834]],8160:[[965,774]],8161:[[965,772]],8162:[[971,768]],8163:[[944]],8164:[[961,787]],8165:[[961,788]],8166:[[965,834]],8167:[[971,834]],8168:[[933,774]],8169:[[933,772]],8170:[[933,768]],8171:[[910]],8172:[[929,788]],8173:[[168,768]],8174:[[901]],8175:[[96]],8178:[[8060,837]],8179:[[969,837]],8180:[[974,837]],8182:[[969,834],,{837:8183}],8183:[[8182,837]],8184:[[927,768]],8185:[[908]],8186:[[937,768]],8187:[[911]],8188:[[937,837]],8189:[[180]],8190:[[32,788],256,{768:8157,769:8158,834:8159}]}, -8192:{8192:[[8194]],8193:[[8195]],8194:[[32],256],8195:[[32],256],8196:[[32],256],8197:[[32],256],8198:[[32],256],8199:[[32],256],8200:[[32],256],8201:[[32],256],8202:[[32],256],8209:[[8208],256],8215:[[32,819],256],8228:[[46],256],8229:[[46,46],256],8230:[[46,46,46],256],8239:[[32],256],8243:[[8242,8242],256],8244:[[8242,8242,8242],256],8246:[[8245,8245],256],8247:[[8245,8245,8245],256],8252:[[33,33],256],8254:[[32,773],256],8263:[[63,63],256],8264:[[63,33],256],8265:[[33,63],256],8279:[[8242,8242,8242,8242],256],8287:[[32],256],8304:[[48],256],8305:[[105],256],8308:[[52],256],8309:[[53],256],8310:[[54],256],8311:[[55],256],8312:[[56],256],8313:[[57],256],8314:[[43],256],8315:[[8722],256],8316:[[61],256],8317:[[40],256],8318:[[41],256],8319:[[110],256],8320:[[48],256],8321:[[49],256],8322:[[50],256],8323:[[51],256],8324:[[52],256],8325:[[53],256],8326:[[54],256],8327:[[55],256],8328:[[56],256],8329:[[57],256],8330:[[43],256],8331:[[8722],256],8332:[[61],256],8333:[[40],256],8334:[[41],256],8336:[[97],256],8337:[[101],256],8338:[[111],256],8339:[[120],256],8340:[[601],256],8341:[[104],256],8342:[[107],256],8343:[[108],256],8344:[[109],256],8345:[[110],256],8346:[[112],256],8347:[[115],256],8348:[[116],256],8360:[[82,115],256],8400:[,230],8401:[,230],8402:[,1],8403:[,1],8404:[,230],8405:[,230],8406:[,230],8407:[,230],8408:[,1],8409:[,1],8410:[,1],8411:[,230],8412:[,230],8417:[,230],8421:[,1],8422:[,1],8423:[,230],8424:[,220],8425:[,230],8426:[,1],8427:[,1],8428:[,220],8429:[,220],8430:[,220],8431:[,220],8432:[,230]}, -8448:{8448:[[97,47,99],256],8449:[[97,47,115],256],8450:[[67],256],8451:[[176,67],256],8453:[[99,47,111],256],8454:[[99,47,117],256],8455:[[400],256],8457:[[176,70],256],8458:[[103],256],8459:[[72],256],8460:[[72],256],8461:[[72],256],8462:[[104],256],8463:[[295],256],8464:[[73],256],8465:[[73],256],8466:[[76],256],8467:[[108],256],8469:[[78],256],8470:[[78,111],256],8473:[[80],256],8474:[[81],256],8475:[[82],256],8476:[[82],256],8477:[[82],256],8480:[[83,77],256],8481:[[84,69,76],256],8482:[[84,77],256],8484:[[90],256],8486:[[937]],8488:[[90],256],8490:[[75]],8491:[[197]],8492:[[66],256],8493:[[67],256],8495:[[101],256],8496:[[69],256],8497:[[70],256],8499:[[77],256],8500:[[111],256],8501:[[1488],256],8502:[[1489],256],8503:[[1490],256],8504:[[1491],256],8505:[[105],256],8507:[[70,65,88],256],8508:[[960],256],8509:[[947],256],8510:[[915],256],8511:[[928],256],8512:[[8721],256],8517:[[68],256],8518:[[100],256],8519:[[101],256],8520:[[105],256],8521:[[106],256],8528:[[49,8260,55],256],8529:[[49,8260,57],256],8530:[[49,8260,49,48],256],8531:[[49,8260,51],256],8532:[[50,8260,51],256],8533:[[49,8260,53],256],8534:[[50,8260,53],256],8535:[[51,8260,53],256],8536:[[52,8260,53],256],8537:[[49,8260,54],256],8538:[[53,8260,54],256],8539:[[49,8260,56],256],8540:[[51,8260,56],256],8541:[[53,8260,56],256],8542:[[55,8260,56],256],8543:[[49,8260],256],8544:[[73],256],8545:[[73,73],256],8546:[[73,73,73],256],8547:[[73,86],256],8548:[[86],256],8549:[[86,73],256],8550:[[86,73,73],256],8551:[[86,73,73,73],256],8552:[[73,88],256],8553:[[88],256],8554:[[88,73],256],8555:[[88,73,73],256],8556:[[76],256],8557:[[67],256],8558:[[68],256],8559:[[77],256],8560:[[105],256],8561:[[105,105],256],8562:[[105,105,105],256],8563:[[105,118],256],8564:[[118],256],8565:[[118,105],256],8566:[[118,105,105],256],8567:[[118,105,105,105],256],8568:[[105,120],256],8569:[[120],256],8570:[[120,105],256],8571:[[120,105,105],256],8572:[[108],256],8573:[[99],256],8574:[[100],256],8575:[[109],256],8585:[[48,8260,51],256],8592:[,,{824:8602}],8594:[,,{824:8603}],8596:[,,{824:8622}],8602:[[8592,824]],8603:[[8594,824]],8622:[[8596,824]],8653:[[8656,824]],8654:[[8660,824]],8655:[[8658,824]],8656:[,,{824:8653}],8658:[,,{824:8655}],8660:[,,{824:8654}]}, -8704:{8707:[,,{824:8708}],8708:[[8707,824]],8712:[,,{824:8713}],8713:[[8712,824]],8715:[,,{824:8716}],8716:[[8715,824]],8739:[,,{824:8740}],8740:[[8739,824]],8741:[,,{824:8742}],8742:[[8741,824]],8748:[[8747,8747],256],8749:[[8747,8747,8747],256],8751:[[8750,8750],256],8752:[[8750,8750,8750],256],8764:[,,{824:8769}],8769:[[8764,824]],8771:[,,{824:8772}],8772:[[8771,824]],8773:[,,{824:8775}],8775:[[8773,824]],8776:[,,{824:8777}],8777:[[8776,824]],8781:[,,{824:8813}],8800:[[61,824]],8801:[,,{824:8802}],8802:[[8801,824]],8804:[,,{824:8816}],8805:[,,{824:8817}],8813:[[8781,824]],8814:[[60,824]],8815:[[62,824]],8816:[[8804,824]],8817:[[8805,824]],8818:[,,{824:8820}],8819:[,,{824:8821}],8820:[[8818,824]],8821:[[8819,824]],8822:[,,{824:8824}],8823:[,,{824:8825}],8824:[[8822,824]],8825:[[8823,824]],8826:[,,{824:8832}],8827:[,,{824:8833}],8828:[,,{824:8928}],8829:[,,{824:8929}],8832:[[8826,824]],8833:[[8827,824]],8834:[,,{824:8836}],8835:[,,{824:8837}],8836:[[8834,824]],8837:[[8835,824]],8838:[,,{824:8840}],8839:[,,{824:8841}],8840:[[8838,824]],8841:[[8839,824]],8849:[,,{824:8930}],8850:[,,{824:8931}],8866:[,,{824:8876}],8872:[,,{824:8877}],8873:[,,{824:8878}],8875:[,,{824:8879}],8876:[[8866,824]],8877:[[8872,824]],8878:[[8873,824]],8879:[[8875,824]],8882:[,,{824:8938}],8883:[,,{824:8939}],8884:[,,{824:8940}],8885:[,,{824:8941}],8928:[[8828,824]],8929:[[8829,824]],8930:[[8849,824]],8931:[[8850,824]],8938:[[8882,824]],8939:[[8883,824]],8940:[[8884,824]],8941:[[8885,824]]}, -8960:{9001:[[12296]],9002:[[12297]]}, -9216:{9312:[[49],256],9313:[[50],256],9314:[[51],256],9315:[[52],256],9316:[[53],256],9317:[[54],256],9318:[[55],256],9319:[[56],256],9320:[[57],256],9321:[[49,48],256],9322:[[49,49],256],9323:[[49,50],256],9324:[[49,51],256],9325:[[49,52],256],9326:[[49,53],256],9327:[[49,54],256],9328:[[49,55],256],9329:[[49,56],256],9330:[[49,57],256],9331:[[50,48],256],9332:[[40,49,41],256],9333:[[40,50,41],256],9334:[[40,51,41],256],9335:[[40,52,41],256],9336:[[40,53,41],256],9337:[[40,54,41],256],9338:[[40,55,41],256],9339:[[40,56,41],256],9340:[[40,57,41],256],9341:[[40,49,48,41],256],9342:[[40,49,49,41],256],9343:[[40,49,50,41],256],9344:[[40,49,51,41],256],9345:[[40,49,52,41],256],9346:[[40,49,53,41],256],9347:[[40,49,54,41],256],9348:[[40,49,55,41],256],9349:[[40,49,56,41],256],9350:[[40,49,57,41],256],9351:[[40,50,48,41],256],9352:[[49,46],256],9353:[[50,46],256],9354:[[51,46],256],9355:[[52,46],256],9356:[[53,46],256],9357:[[54,46],256],9358:[[55,46],256],9359:[[56,46],256],9360:[[57,46],256],9361:[[49,48,46],256],9362:[[49,49,46],256],9363:[[49,50,46],256],9364:[[49,51,46],256],9365:[[49,52,46],256],9366:[[49,53,46],256],9367:[[49,54,46],256],9368:[[49,55,46],256],9369:[[49,56,46],256],9370:[[49,57,46],256],9371:[[50,48,46],256],9372:[[40,97,41],256],9373:[[40,98,41],256],9374:[[40,99,41],256],9375:[[40,100,41],256],9376:[[40,101,41],256],9377:[[40,102,41],256],9378:[[40,103,41],256],9379:[[40,104,41],256],9380:[[40,105,41],256],9381:[[40,106,41],256],9382:[[40,107,41],256],9383:[[40,108,41],256],9384:[[40,109,41],256],9385:[[40,110,41],256],9386:[[40,111,41],256],9387:[[40,112,41],256],9388:[[40,113,41],256],9389:[[40,114,41],256],9390:[[40,115,41],256],9391:[[40,116,41],256],9392:[[40,117,41],256],9393:[[40,118,41],256],9394:[[40,119,41],256],9395:[[40,120,41],256],9396:[[40,121,41],256],9397:[[40,122,41],256],9398:[[65],256],9399:[[66],256],9400:[[67],256],9401:[[68],256],9402:[[69],256],9403:[[70],256],9404:[[71],256],9405:[[72],256],9406:[[73],256],9407:[[74],256],9408:[[75],256],9409:[[76],256],9410:[[77],256],9411:[[78],256],9412:[[79],256],9413:[[80],256],9414:[[81],256],9415:[[82],256],9416:[[83],256],9417:[[84],256],9418:[[85],256],9419:[[86],256],9420:[[87],256],9421:[[88],256],9422:[[89],256],9423:[[90],256],9424:[[97],256],9425:[[98],256],9426:[[99],256],9427:[[100],256],9428:[[101],256],9429:[[102],256],9430:[[103],256],9431:[[104],256],9432:[[105],256],9433:[[106],256],9434:[[107],256],9435:[[108],256],9436:[[109],256],9437:[[110],256],9438:[[111],256],9439:[[112],256],9440:[[113],256],9441:[[114],256],9442:[[115],256],9443:[[116],256],9444:[[117],256],9445:[[118],256],9446:[[119],256],9447:[[120],256],9448:[[121],256],9449:[[122],256],9450:[[48],256]}, -10752:{10764:[[8747,8747,8747,8747],256],10868:[[58,58,61],256],10869:[[61,61],256],10870:[[61,61,61],256],10972:[[10973,824],512]}, -11264:{11388:[[106],256],11389:[[86],256],11503:[,230],11504:[,230],11505:[,230]}, -11520:{11631:[[11617],256],11647:[,9],11744:[,230],11745:[,230],11746:[,230],11747:[,230],11748:[,230],11749:[,230],11750:[,230],11751:[,230],11752:[,230],11753:[,230],11754:[,230],11755:[,230],11756:[,230],11757:[,230],11758:[,230],11759:[,230],11760:[,230],11761:[,230],11762:[,230],11763:[,230],11764:[,230],11765:[,230],11766:[,230],11767:[,230],11768:[,230],11769:[,230],11770:[,230],11771:[,230],11772:[,230],11773:[,230],11774:[,230],11775:[,230]}, -11776:{11935:[[27597],256],12019:[[40863],256]}, -12032:{12032:[[19968],256],12033:[[20008],256],12034:[[20022],256],12035:[[20031],256],12036:[[20057],256],12037:[[20101],256],12038:[[20108],256],12039:[[20128],256],12040:[[20154],256],12041:[[20799],256],12042:[[20837],256],12043:[[20843],256],12044:[[20866],256],12045:[[20886],256],12046:[[20907],256],12047:[[20960],256],12048:[[20981],256],12049:[[20992],256],12050:[[21147],256],12051:[[21241],256],12052:[[21269],256],12053:[[21274],256],12054:[[21304],256],12055:[[21313],256],12056:[[21340],256],12057:[[21353],256],12058:[[21378],256],12059:[[21430],256],12060:[[21448],256],12061:[[21475],256],12062:[[22231],256],12063:[[22303],256],12064:[[22763],256],12065:[[22786],256],12066:[[22794],256],12067:[[22805],256],12068:[[22823],256],12069:[[22899],256],12070:[[23376],256],12071:[[23424],256],12072:[[23544],256],12073:[[23567],256],12074:[[23586],256],12075:[[23608],256],12076:[[23662],256],12077:[[23665],256],12078:[[24027],256],12079:[[24037],256],12080:[[24049],256],12081:[[24062],256],12082:[[24178],256],12083:[[24186],256],12084:[[24191],256],12085:[[24308],256],12086:[[24318],256],12087:[[24331],256],12088:[[24339],256],12089:[[24400],256],12090:[[24417],256],12091:[[24435],256],12092:[[24515],256],12093:[[25096],256],12094:[[25142],256],12095:[[25163],256],12096:[[25903],256],12097:[[25908],256],12098:[[25991],256],12099:[[26007],256],12100:[[26020],256],12101:[[26041],256],12102:[[26080],256],12103:[[26085],256],12104:[[26352],256],12105:[[26376],256],12106:[[26408],256],12107:[[27424],256],12108:[[27490],256],12109:[[27513],256],12110:[[27571],256],12111:[[27595],256],12112:[[27604],256],12113:[[27611],256],12114:[[27663],256],12115:[[27668],256],12116:[[27700],256],12117:[[28779],256],12118:[[29226],256],12119:[[29238],256],12120:[[29243],256],12121:[[29247],256],12122:[[29255],256],12123:[[29273],256],12124:[[29275],256],12125:[[29356],256],12126:[[29572],256],12127:[[29577],256],12128:[[29916],256],12129:[[29926],256],12130:[[29976],256],12131:[[29983],256],12132:[[29992],256],12133:[[30000],256],12134:[[30091],256],12135:[[30098],256],12136:[[30326],256],12137:[[30333],256],12138:[[30382],256],12139:[[30399],256],12140:[[30446],256],12141:[[30683],256],12142:[[30690],256],12143:[[30707],256],12144:[[31034],256],12145:[[31160],256],12146:[[31166],256],12147:[[31348],256],12148:[[31435],256],12149:[[31481],256],12150:[[31859],256],12151:[[31992],256],12152:[[32566],256],12153:[[32593],256],12154:[[32650],256],12155:[[32701],256],12156:[[32769],256],12157:[[32780],256],12158:[[32786],256],12159:[[32819],256],12160:[[32895],256],12161:[[32905],256],12162:[[33251],256],12163:[[33258],256],12164:[[33267],256],12165:[[33276],256],12166:[[33292],256],12167:[[33307],256],12168:[[33311],256],12169:[[33390],256],12170:[[33394],256],12171:[[33400],256],12172:[[34381],256],12173:[[34411],256],12174:[[34880],256],12175:[[34892],256],12176:[[34915],256],12177:[[35198],256],12178:[[35211],256],12179:[[35282],256],12180:[[35328],256],12181:[[35895],256],12182:[[35910],256],12183:[[35925],256],12184:[[35960],256],12185:[[35997],256],12186:[[36196],256],12187:[[36208],256],12188:[[36275],256],12189:[[36523],256],12190:[[36554],256],12191:[[36763],256],12192:[[36784],256],12193:[[36789],256],12194:[[37009],256],12195:[[37193],256],12196:[[37318],256],12197:[[37324],256],12198:[[37329],256],12199:[[38263],256],12200:[[38272],256],12201:[[38428],256],12202:[[38582],256],12203:[[38585],256],12204:[[38632],256],12205:[[38737],256],12206:[[38750],256],12207:[[38754],256],12208:[[38761],256],12209:[[38859],256],12210:[[38893],256],12211:[[38899],256],12212:[[38913],256],12213:[[39080],256],12214:[[39131],256],12215:[[39135],256],12216:[[39318],256],12217:[[39321],256],12218:[[39340],256],12219:[[39592],256],12220:[[39640],256],12221:[[39647],256],12222:[[39717],256],12223:[[39727],256],12224:[[39730],256],12225:[[39740],256],12226:[[39770],256],12227:[[40165],256],12228:[[40565],256],12229:[[40575],256],12230:[[40613],256],12231:[[40635],256],12232:[[40643],256],12233:[[40653],256],12234:[[40657],256],12235:[[40697],256],12236:[[40701],256],12237:[[40718],256],12238:[[40723],256],12239:[[40736],256],12240:[[40763],256],12241:[[40778],256],12242:[[40786],256],12243:[[40845],256],12244:[[40860],256],12245:[[40864],256]}, -12288:{12288:[[32],256],12330:[,218],12331:[,228],12332:[,232],12333:[,222],12334:[,224],12335:[,224],12342:[[12306],256],12344:[[21313],256],12345:[[21316],256],12346:[[21317],256],12358:[,,{12441:12436}],12363:[,,{12441:12364}],12364:[[12363,12441]],12365:[,,{12441:12366}],12366:[[12365,12441]],12367:[,,{12441:12368}],12368:[[12367,12441]],12369:[,,{12441:12370}],12370:[[12369,12441]],12371:[,,{12441:12372}],12372:[[12371,12441]],12373:[,,{12441:12374}],12374:[[12373,12441]],12375:[,,{12441:12376}],12376:[[12375,12441]],12377:[,,{12441:12378}],12378:[[12377,12441]],12379:[,,{12441:12380}],12380:[[12379,12441]],12381:[,,{12441:12382}],12382:[[12381,12441]],12383:[,,{12441:12384}],12384:[[12383,12441]],12385:[,,{12441:12386}],12386:[[12385,12441]],12388:[,,{12441:12389}],12389:[[12388,12441]],12390:[,,{12441:12391}],12391:[[12390,12441]],12392:[,,{12441:12393}],12393:[[12392,12441]],12399:[,,{12441:12400,12442:12401}],12400:[[12399,12441]],12401:[[12399,12442]],12402:[,,{12441:12403,12442:12404}],12403:[[12402,12441]],12404:[[12402,12442]],12405:[,,{12441:12406,12442:12407}],12406:[[12405,12441]],12407:[[12405,12442]],12408:[,,{12441:12409,12442:12410}],12409:[[12408,12441]],12410:[[12408,12442]],12411:[,,{12441:12412,12442:12413}],12412:[[12411,12441]],12413:[[12411,12442]],12436:[[12358,12441]],12441:[,8],12442:[,8],12443:[[32,12441],256],12444:[[32,12442],256],12445:[,,{12441:12446}],12446:[[12445,12441]],12447:[[12424,12426],256],12454:[,,{12441:12532}],12459:[,,{12441:12460}],12460:[[12459,12441]],12461:[,,{12441:12462}],12462:[[12461,12441]],12463:[,,{12441:12464}],12464:[[12463,12441]],12465:[,,{12441:12466}],12466:[[12465,12441]],12467:[,,{12441:12468}],12468:[[12467,12441]],12469:[,,{12441:12470}],12470:[[12469,12441]],12471:[,,{12441:12472}],12472:[[12471,12441]],12473:[,,{12441:12474}],12474:[[12473,12441]],12475:[,,{12441:12476}],12476:[[12475,12441]],12477:[,,{12441:12478}],12478:[[12477,12441]],12479:[,,{12441:12480}],12480:[[12479,12441]],12481:[,,{12441:12482}],12482:[[12481,12441]],12484:[,,{12441:12485}],12485:[[12484,12441]],12486:[,,{12441:12487}],12487:[[12486,12441]],12488:[,,{12441:12489}],12489:[[12488,12441]],12495:[,,{12441:12496,12442:12497}],12496:[[12495,12441]],12497:[[12495,12442]],12498:[,,{12441:12499,12442:12500}],12499:[[12498,12441]],12500:[[12498,12442]],12501:[,,{12441:12502,12442:12503}],12502:[[12501,12441]],12503:[[12501,12442]],12504:[,,{12441:12505,12442:12506}],12505:[[12504,12441]],12506:[[12504,12442]],12507:[,,{12441:12508,12442:12509}],12508:[[12507,12441]],12509:[[12507,12442]],12527:[,,{12441:12535}],12528:[,,{12441:12536}],12529:[,,{12441:12537}],12530:[,,{12441:12538}],12532:[[12454,12441]],12535:[[12527,12441]],12536:[[12528,12441]],12537:[[12529,12441]],12538:[[12530,12441]],12541:[,,{12441:12542}],12542:[[12541,12441]],12543:[[12467,12488],256]}, -12544:{12593:[[4352],256],12594:[[4353],256],12595:[[4522],256],12596:[[4354],256],12597:[[4524],256],12598:[[4525],256],12599:[[4355],256],12600:[[4356],256],12601:[[4357],256],12602:[[4528],256],12603:[[4529],256],12604:[[4530],256],12605:[[4531],256],12606:[[4532],256],12607:[[4533],256],12608:[[4378],256],12609:[[4358],256],12610:[[4359],256],12611:[[4360],256],12612:[[4385],256],12613:[[4361],256],12614:[[4362],256],12615:[[4363],256],12616:[[4364],256],12617:[[4365],256],12618:[[4366],256],12619:[[4367],256],12620:[[4368],256],12621:[[4369],256],12622:[[4370],256],12623:[[4449],256],12624:[[4450],256],12625:[[4451],256],12626:[[4452],256],12627:[[4453],256],12628:[[4454],256],12629:[[4455],256],12630:[[4456],256],12631:[[4457],256],12632:[[4458],256],12633:[[4459],256],12634:[[4460],256],12635:[[4461],256],12636:[[4462],256],12637:[[4463],256],12638:[[4464],256],12639:[[4465],256],12640:[[4466],256],12641:[[4467],256],12642:[[4468],256],12643:[[4469],256],12644:[[4448],256],12645:[[4372],256],12646:[[4373],256],12647:[[4551],256],12648:[[4552],256],12649:[[4556],256],12650:[[4558],256],12651:[[4563],256],12652:[[4567],256],12653:[[4569],256],12654:[[4380],256],12655:[[4573],256],12656:[[4575],256],12657:[[4381],256],12658:[[4382],256],12659:[[4384],256],12660:[[4386],256],12661:[[4387],256],12662:[[4391],256],12663:[[4393],256],12664:[[4395],256],12665:[[4396],256],12666:[[4397],256],12667:[[4398],256],12668:[[4399],256],12669:[[4402],256],12670:[[4406],256],12671:[[4416],256],12672:[[4423],256],12673:[[4428],256],12674:[[4593],256],12675:[[4594],256],12676:[[4439],256],12677:[[4440],256],12678:[[4441],256],12679:[[4484],256],12680:[[4485],256],12681:[[4488],256],12682:[[4497],256],12683:[[4498],256],12684:[[4500],256],12685:[[4510],256],12686:[[4513],256],12690:[[19968],256],12691:[[20108],256],12692:[[19977],256],12693:[[22235],256],12694:[[19978],256],12695:[[20013],256],12696:[[19979],256],12697:[[30002],256],12698:[[20057],256],12699:[[19993],256],12700:[[19969],256],12701:[[22825],256],12702:[[22320],256],12703:[[20154],256]}, -12800:{12800:[[40,4352,41],256],12801:[[40,4354,41],256],12802:[[40,4355,41],256],12803:[[40,4357,41],256],12804:[[40,4358,41],256],12805:[[40,4359,41],256],12806:[[40,4361,41],256],12807:[[40,4363,41],256],12808:[[40,4364,41],256],12809:[[40,4366,41],256],12810:[[40,4367,41],256],12811:[[40,4368,41],256],12812:[[40,4369,41],256],12813:[[40,4370,41],256],12814:[[40,4352,4449,41],256],12815:[[40,4354,4449,41],256],12816:[[40,4355,4449,41],256],12817:[[40,4357,4449,41],256],12818:[[40,4358,4449,41],256],12819:[[40,4359,4449,41],256],12820:[[40,4361,4449,41],256],12821:[[40,4363,4449,41],256],12822:[[40,4364,4449,41],256],12823:[[40,4366,4449,41],256],12824:[[40,4367,4449,41],256],12825:[[40,4368,4449,41],256],12826:[[40,4369,4449,41],256],12827:[[40,4370,4449,41],256],12828:[[40,4364,4462,41],256],12829:[[40,4363,4457,4364,4453,4523,41],256],12830:[[40,4363,4457,4370,4462,41],256],12832:[[40,19968,41],256],12833:[[40,20108,41],256],12834:[[40,19977,41],256],12835:[[40,22235,41],256],12836:[[40,20116,41],256],12837:[[40,20845,41],256],12838:[[40,19971,41],256],12839:[[40,20843,41],256],12840:[[40,20061,41],256],12841:[[40,21313,41],256],12842:[[40,26376,41],256],12843:[[40,28779,41],256],12844:[[40,27700,41],256],12845:[[40,26408,41],256],12846:[[40,37329,41],256],12847:[[40,22303,41],256],12848:[[40,26085,41],256],12849:[[40,26666,41],256],12850:[[40,26377,41],256],12851:[[40,31038,41],256],12852:[[40,21517,41],256],12853:[[40,29305,41],256],12854:[[40,36001,41],256],12855:[[40,31069,41],256],12856:[[40,21172,41],256],12857:[[40,20195,41],256],12858:[[40,21628,41],256],12859:[[40,23398,41],256],12860:[[40,30435,41],256],12861:[[40,20225,41],256],12862:[[40,36039,41],256],12863:[[40,21332,41],256],12864:[[40,31085,41],256],12865:[[40,20241,41],256],12866:[[40,33258,41],256],12867:[[40,33267,41],256],12868:[[21839],256],12869:[[24188],256],12870:[[25991],256],12871:[[31631],256],12880:[[80,84,69],256],12881:[[50,49],256],12882:[[50,50],256],12883:[[50,51],256],12884:[[50,52],256],12885:[[50,53],256],12886:[[50,54],256],12887:[[50,55],256],12888:[[50,56],256],12889:[[50,57],256],12890:[[51,48],256],12891:[[51,49],256],12892:[[51,50],256],12893:[[51,51],256],12894:[[51,52],256],12895:[[51,53],256],12896:[[4352],256],12897:[[4354],256],12898:[[4355],256],12899:[[4357],256],12900:[[4358],256],12901:[[4359],256],12902:[[4361],256],12903:[[4363],256],12904:[[4364],256],12905:[[4366],256],12906:[[4367],256],12907:[[4368],256],12908:[[4369],256],12909:[[4370],256],12910:[[4352,4449],256],12911:[[4354,4449],256],12912:[[4355,4449],256],12913:[[4357,4449],256],12914:[[4358,4449],256],12915:[[4359,4449],256],12916:[[4361,4449],256],12917:[[4363,4449],256],12918:[[4364,4449],256],12919:[[4366,4449],256],12920:[[4367,4449],256],12921:[[4368,4449],256],12922:[[4369,4449],256],12923:[[4370,4449],256],12924:[[4366,4449,4535,4352,4457],256],12925:[[4364,4462,4363,4468],256],12926:[[4363,4462],256],12928:[[19968],256],12929:[[20108],256],12930:[[19977],256],12931:[[22235],256],12932:[[20116],256],12933:[[20845],256],12934:[[19971],256],12935:[[20843],256],12936:[[20061],256],12937:[[21313],256],12938:[[26376],256],12939:[[28779],256],12940:[[27700],256],12941:[[26408],256],12942:[[37329],256],12943:[[22303],256],12944:[[26085],256],12945:[[26666],256],12946:[[26377],256],12947:[[31038],256],12948:[[21517],256],12949:[[29305],256],12950:[[36001],256],12951:[[31069],256],12952:[[21172],256],12953:[[31192],256],12954:[[30007],256],12955:[[22899],256],12956:[[36969],256],12957:[[20778],256],12958:[[21360],256],12959:[[27880],256],12960:[[38917],256],12961:[[20241],256],12962:[[20889],256],12963:[[27491],256],12964:[[19978],256],12965:[[20013],256],12966:[[19979],256],12967:[[24038],256],12968:[[21491],256],12969:[[21307],256],12970:[[23447],256],12971:[[23398],256],12972:[[30435],256],12973:[[20225],256],12974:[[36039],256],12975:[[21332],256],12976:[[22812],256],12977:[[51,54],256],12978:[[51,55],256],12979:[[51,56],256],12980:[[51,57],256],12981:[[52,48],256],12982:[[52,49],256],12983:[[52,50],256],12984:[[52,51],256],12985:[[52,52],256],12986:[[52,53],256],12987:[[52,54],256],12988:[[52,55],256],12989:[[52,56],256],12990:[[52,57],256],12991:[[53,48],256],12992:[[49,26376],256],12993:[[50,26376],256],12994:[[51,26376],256],12995:[[52,26376],256],12996:[[53,26376],256],12997:[[54,26376],256],12998:[[55,26376],256],12999:[[56,26376],256],13000:[[57,26376],256],13001:[[49,48,26376],256],13002:[[49,49,26376],256],13003:[[49,50,26376],256],13004:[[72,103],256],13005:[[101,114,103],256],13006:[[101,86],256],13007:[[76,84,68],256],13008:[[12450],256],13009:[[12452],256],13010:[[12454],256],13011:[[12456],256],13012:[[12458],256],13013:[[12459],256],13014:[[12461],256],13015:[[12463],256],13016:[[12465],256],13017:[[12467],256],13018:[[12469],256],13019:[[12471],256],13020:[[12473],256],13021:[[12475],256],13022:[[12477],256],13023:[[12479],256],13024:[[12481],256],13025:[[12484],256],13026:[[12486],256],13027:[[12488],256],13028:[[12490],256],13029:[[12491],256],13030:[[12492],256],13031:[[12493],256],13032:[[12494],256],13033:[[12495],256],13034:[[12498],256],13035:[[12501],256],13036:[[12504],256],13037:[[12507],256],13038:[[12510],256],13039:[[12511],256],13040:[[12512],256],13041:[[12513],256],13042:[[12514],256],13043:[[12516],256],13044:[[12518],256],13045:[[12520],256],13046:[[12521],256],13047:[[12522],256],13048:[[12523],256],13049:[[12524],256],13050:[[12525],256],13051:[[12527],256],13052:[[12528],256],13053:[[12529],256],13054:[[12530],256]}, -13056:{13056:[[12450,12497,12540,12488],256],13057:[[12450,12523,12501,12449],256],13058:[[12450,12531,12506,12450],256],13059:[[12450,12540,12523],256],13060:[[12452,12491,12531,12464],256],13061:[[12452,12531,12481],256],13062:[[12454,12457,12531],256],13063:[[12456,12473,12463,12540,12489],256],13064:[[12456,12540,12459,12540],256],13065:[[12458,12531,12473],256],13066:[[12458,12540,12512],256],13067:[[12459,12452,12522],256],13068:[[12459,12521,12483,12488],256],13069:[[12459,12525,12522,12540],256],13070:[[12460,12525,12531],256],13071:[[12460,12531,12510],256],13072:[[12462,12460],256],13073:[[12462,12491,12540],256],13074:[[12461,12517,12522,12540],256],13075:[[12462,12523,12480,12540],256],13076:[[12461,12525],256],13077:[[12461,12525,12464,12521,12512],256],13078:[[12461,12525,12513,12540,12488,12523],256],13079:[[12461,12525,12527,12483,12488],256],13080:[[12464,12521,12512],256],13081:[[12464,12521,12512,12488,12531],256],13082:[[12463,12523,12476,12452,12525],256],13083:[[12463,12525,12540,12493],256],13084:[[12465,12540,12473],256],13085:[[12467,12523,12490],256],13086:[[12467,12540,12509],256],13087:[[12469,12452,12463,12523],256],13088:[[12469,12531,12481,12540,12512],256],13089:[[12471,12522,12531,12464],256],13090:[[12475,12531,12481],256],13091:[[12475,12531,12488],256],13092:[[12480,12540,12473],256],13093:[[12487,12471],256],13094:[[12489,12523],256],13095:[[12488,12531],256],13096:[[12490,12494],256],13097:[[12494,12483,12488],256],13098:[[12495,12452,12484],256],13099:[[12497,12540,12475,12531,12488],256],13100:[[12497,12540,12484],256],13101:[[12496,12540,12524,12523],256],13102:[[12500,12450,12473,12488,12523],256],13103:[[12500,12463,12523],256],13104:[[12500,12467],256],13105:[[12499,12523],256],13106:[[12501,12449,12521,12483,12489],256],13107:[[12501,12451,12540,12488],256],13108:[[12502,12483,12471,12455,12523],256],13109:[[12501,12521,12531],256],13110:[[12504,12463,12479,12540,12523],256],13111:[[12506,12477],256],13112:[[12506,12491,12498],256],13113:[[12504,12523,12484],256],13114:[[12506,12531,12473],256],13115:[[12506,12540,12472],256],13116:[[12505,12540,12479],256],13117:[[12509,12452,12531,12488],256],13118:[[12508,12523,12488],256],13119:[[12507,12531],256],13120:[[12509,12531,12489],256],13121:[[12507,12540,12523],256],13122:[[12507,12540,12531],256],13123:[[12510,12452,12463,12525],256],13124:[[12510,12452,12523],256],13125:[[12510,12483,12495],256],13126:[[12510,12523,12463],256],13127:[[12510,12531,12471,12519,12531],256],13128:[[12511,12463,12525,12531],256],13129:[[12511,12522],256],13130:[[12511,12522,12496,12540,12523],256],13131:[[12513,12460],256],13132:[[12513,12460,12488,12531],256],13133:[[12513,12540,12488,12523],256],13134:[[12516,12540,12489],256],13135:[[12516,12540,12523],256],13136:[[12518,12450,12531],256],13137:[[12522,12483,12488,12523],256],13138:[[12522,12521],256],13139:[[12523,12500,12540],256],13140:[[12523,12540,12502,12523],256],13141:[[12524,12512],256],13142:[[12524,12531,12488,12466,12531],256],13143:[[12527,12483,12488],256],13144:[[48,28857],256],13145:[[49,28857],256],13146:[[50,28857],256],13147:[[51,28857],256],13148:[[52,28857],256],13149:[[53,28857],256],13150:[[54,28857],256],13151:[[55,28857],256],13152:[[56,28857],256],13153:[[57,28857],256],13154:[[49,48,28857],256],13155:[[49,49,28857],256],13156:[[49,50,28857],256],13157:[[49,51,28857],256],13158:[[49,52,28857],256],13159:[[49,53,28857],256],13160:[[49,54,28857],256],13161:[[49,55,28857],256],13162:[[49,56,28857],256],13163:[[49,57,28857],256],13164:[[50,48,28857],256],13165:[[50,49,28857],256],13166:[[50,50,28857],256],13167:[[50,51,28857],256],13168:[[50,52,28857],256],13169:[[104,80,97],256],13170:[[100,97],256],13171:[[65,85],256],13172:[[98,97,114],256],13173:[[111,86],256],13174:[[112,99],256],13175:[[100,109],256],13176:[[100,109,178],256],13177:[[100,109,179],256],13178:[[73,85],256],13179:[[24179,25104],256],13180:[[26157,21644],256],13181:[[22823,27491],256],13182:[[26126,27835],256],13183:[[26666,24335,20250,31038],256],13184:[[112,65],256],13185:[[110,65],256],13186:[[956,65],256],13187:[[109,65],256],13188:[[107,65],256],13189:[[75,66],256],13190:[[77,66],256],13191:[[71,66],256],13192:[[99,97,108],256],13193:[[107,99,97,108],256],13194:[[112,70],256],13195:[[110,70],256],13196:[[956,70],256],13197:[[956,103],256],13198:[[109,103],256],13199:[[107,103],256],13200:[[72,122],256],13201:[[107,72,122],256],13202:[[77,72,122],256],13203:[[71,72,122],256],13204:[[84,72,122],256],13205:[[956,8467],256],13206:[[109,8467],256],13207:[[100,8467],256],13208:[[107,8467],256],13209:[[102,109],256],13210:[[110,109],256],13211:[[956,109],256],13212:[[109,109],256],13213:[[99,109],256],13214:[[107,109],256],13215:[[109,109,178],256],13216:[[99,109,178],256],13217:[[109,178],256],13218:[[107,109,178],256],13219:[[109,109,179],256],13220:[[99,109,179],256],13221:[[109,179],256],13222:[[107,109,179],256],13223:[[109,8725,115],256],13224:[[109,8725,115,178],256],13225:[[80,97],256],13226:[[107,80,97],256],13227:[[77,80,97],256],13228:[[71,80,97],256],13229:[[114,97,100],256],13230:[[114,97,100,8725,115],256],13231:[[114,97,100,8725,115,178],256],13232:[[112,115],256],13233:[[110,115],256],13234:[[956,115],256],13235:[[109,115],256],13236:[[112,86],256],13237:[[110,86],256],13238:[[956,86],256],13239:[[109,86],256],13240:[[107,86],256],13241:[[77,86],256],13242:[[112,87],256],13243:[[110,87],256],13244:[[956,87],256],13245:[[109,87],256],13246:[[107,87],256],13247:[[77,87],256],13248:[[107,937],256],13249:[[77,937],256],13250:[[97,46,109,46],256],13251:[[66,113],256],13252:[[99,99],256],13253:[[99,100],256],13254:[[67,8725,107,103],256],13255:[[67,111,46],256],13256:[[100,66],256],13257:[[71,121],256],13258:[[104,97],256],13259:[[72,80],256],13260:[[105,110],256],13261:[[75,75],256],13262:[[75,77],256],13263:[[107,116],256],13264:[[108,109],256],13265:[[108,110],256],13266:[[108,111,103],256],13267:[[108,120],256],13268:[[109,98],256],13269:[[109,105,108],256],13270:[[109,111,108],256],13271:[[80,72],256],13272:[[112,46,109,46],256],13273:[[80,80,77],256],13274:[[80,82],256],13275:[[115,114],256],13276:[[83,118],256],13277:[[87,98],256],13278:[[86,8725,109],256],13279:[[65,8725,109],256],13280:[[49,26085],256],13281:[[50,26085],256],13282:[[51,26085],256],13283:[[52,26085],256],13284:[[53,26085],256],13285:[[54,26085],256],13286:[[55,26085],256],13287:[[56,26085],256],13288:[[57,26085],256],13289:[[49,48,26085],256],13290:[[49,49,26085],256],13291:[[49,50,26085],256],13292:[[49,51,26085],256],13293:[[49,52,26085],256],13294:[[49,53,26085],256],13295:[[49,54,26085],256],13296:[[49,55,26085],256],13297:[[49,56,26085],256],13298:[[49,57,26085],256],13299:[[50,48,26085],256],13300:[[50,49,26085],256],13301:[[50,50,26085],256],13302:[[50,51,26085],256],13303:[[50,52,26085],256],13304:[[50,53,26085],256],13305:[[50,54,26085],256],13306:[[50,55,26085],256],13307:[[50,56,26085],256],13308:[[50,57,26085],256],13309:[[51,48,26085],256],13310:[[51,49,26085],256],13311:[[103,97,108],256]}, -27136:{92912:[,1],92913:[,1],92914:[,1],92915:[,1],92916:[,1]}, -27392:{92976:[,230],92977:[,230],92978:[,230],92979:[,230],92980:[,230],92981:[,230],92982:[,230]}, -42496:{42607:[,230],42612:[,230],42613:[,230],42614:[,230],42615:[,230],42616:[,230],42617:[,230],42618:[,230],42619:[,230],42620:[,230],42621:[,230],42652:[[1098],256],42653:[[1100],256],42655:[,230],42736:[,230],42737:[,230]}, -42752:{42864:[[42863],256],43000:[[294],256],43001:[[339],256]}, -43008:{43014:[,9],43204:[,9],43232:[,230],43233:[,230],43234:[,230],43235:[,230],43236:[,230],43237:[,230],43238:[,230],43239:[,230],43240:[,230],43241:[,230],43242:[,230],43243:[,230],43244:[,230],43245:[,230],43246:[,230],43247:[,230],43248:[,230],43249:[,230]}, -43264:{43307:[,220],43308:[,220],43309:[,220],43347:[,9],43443:[,7],43456:[,9]}, -43520:{43696:[,230],43698:[,230],43699:[,230],43700:[,220],43703:[,230],43704:[,230],43710:[,230],43711:[,230],43713:[,230],43766:[,9]}, -43776:{43868:[[42791],256],43869:[[43831],256],43870:[[619],256],43871:[[43858],256],44013:[,9]}, -48128:{113822:[,1]}, -53504:{119134:[[119127,119141],512],119135:[[119128,119141],512],119136:[[119135,119150],512],119137:[[119135,119151],512],119138:[[119135,119152],512],119139:[[119135,119153],512],119140:[[119135,119154],512],119141:[,216],119142:[,216],119143:[,1],119144:[,1],119145:[,1],119149:[,226],119150:[,216],119151:[,216],119152:[,216],119153:[,216],119154:[,216],119163:[,220],119164:[,220],119165:[,220],119166:[,220],119167:[,220],119168:[,220],119169:[,220],119170:[,220],119173:[,230],119174:[,230],119175:[,230],119176:[,230],119177:[,230],119178:[,220],119179:[,220],119210:[,230],119211:[,230],119212:[,230],119213:[,230],119227:[[119225,119141],512],119228:[[119226,119141],512],119229:[[119227,119150],512],119230:[[119228,119150],512],119231:[[119227,119151],512],119232:[[119228,119151],512]}, -53760:{119362:[,230],119363:[,230],119364:[,230]}, -54272:{119808:[[65],256],119809:[[66],256],119810:[[67],256],119811:[[68],256],119812:[[69],256],119813:[[70],256],119814:[[71],256],119815:[[72],256],119816:[[73],256],119817:[[74],256],119818:[[75],256],119819:[[76],256],119820:[[77],256],119821:[[78],256],119822:[[79],256],119823:[[80],256],119824:[[81],256],119825:[[82],256],119826:[[83],256],119827:[[84],256],119828:[[85],256],119829:[[86],256],119830:[[87],256],119831:[[88],256],119832:[[89],256],119833:[[90],256],119834:[[97],256],119835:[[98],256],119836:[[99],256],119837:[[100],256],119838:[[101],256],119839:[[102],256],119840:[[103],256],119841:[[104],256],119842:[[105],256],119843:[[106],256],119844:[[107],256],119845:[[108],256],119846:[[109],256],119847:[[110],256],119848:[[111],256],119849:[[112],256],119850:[[113],256],119851:[[114],256],119852:[[115],256],119853:[[116],256],119854:[[117],256],119855:[[118],256],119856:[[119],256],119857:[[120],256],119858:[[121],256],119859:[[122],256],119860:[[65],256],119861:[[66],256],119862:[[67],256],119863:[[68],256],119864:[[69],256],119865:[[70],256],119866:[[71],256],119867:[[72],256],119868:[[73],256],119869:[[74],256],119870:[[75],256],119871:[[76],256],119872:[[77],256],119873:[[78],256],119874:[[79],256],119875:[[80],256],119876:[[81],256],119877:[[82],256],119878:[[83],256],119879:[[84],256],119880:[[85],256],119881:[[86],256],119882:[[87],256],119883:[[88],256],119884:[[89],256],119885:[[90],256],119886:[[97],256],119887:[[98],256],119888:[[99],256],119889:[[100],256],119890:[[101],256],119891:[[102],256],119892:[[103],256],119894:[[105],256],119895:[[106],256],119896:[[107],256],119897:[[108],256],119898:[[109],256],119899:[[110],256],119900:[[111],256],119901:[[112],256],119902:[[113],256],119903:[[114],256],119904:[[115],256],119905:[[116],256],119906:[[117],256],119907:[[118],256],119908:[[119],256],119909:[[120],256],119910:[[121],256],119911:[[122],256],119912:[[65],256],119913:[[66],256],119914:[[67],256],119915:[[68],256],119916:[[69],256],119917:[[70],256],119918:[[71],256],119919:[[72],256],119920:[[73],256],119921:[[74],256],119922:[[75],256],119923:[[76],256],119924:[[77],256],119925:[[78],256],119926:[[79],256],119927:[[80],256],119928:[[81],256],119929:[[82],256],119930:[[83],256],119931:[[84],256],119932:[[85],256],119933:[[86],256],119934:[[87],256],119935:[[88],256],119936:[[89],256],119937:[[90],256],119938:[[97],256],119939:[[98],256],119940:[[99],256],119941:[[100],256],119942:[[101],256],119943:[[102],256],119944:[[103],256],119945:[[104],256],119946:[[105],256],119947:[[106],256],119948:[[107],256],119949:[[108],256],119950:[[109],256],119951:[[110],256],119952:[[111],256],119953:[[112],256],119954:[[113],256],119955:[[114],256],119956:[[115],256],119957:[[116],256],119958:[[117],256],119959:[[118],256],119960:[[119],256],119961:[[120],256],119962:[[121],256],119963:[[122],256],119964:[[65],256],119966:[[67],256],119967:[[68],256],119970:[[71],256],119973:[[74],256],119974:[[75],256],119977:[[78],256],119978:[[79],256],119979:[[80],256],119980:[[81],256],119982:[[83],256],119983:[[84],256],119984:[[85],256],119985:[[86],256],119986:[[87],256],119987:[[88],256],119988:[[89],256],119989:[[90],256],119990:[[97],256],119991:[[98],256],119992:[[99],256],119993:[[100],256],119995:[[102],256],119997:[[104],256],119998:[[105],256],119999:[[106],256],120000:[[107],256],120001:[[108],256],120002:[[109],256],120003:[[110],256],120005:[[112],256],120006:[[113],256],120007:[[114],256],120008:[[115],256],120009:[[116],256],120010:[[117],256],120011:[[118],256],120012:[[119],256],120013:[[120],256],120014:[[121],256],120015:[[122],256],120016:[[65],256],120017:[[66],256],120018:[[67],256],120019:[[68],256],120020:[[69],256],120021:[[70],256],120022:[[71],256],120023:[[72],256],120024:[[73],256],120025:[[74],256],120026:[[75],256],120027:[[76],256],120028:[[77],256],120029:[[78],256],120030:[[79],256],120031:[[80],256],120032:[[81],256],120033:[[82],256],120034:[[83],256],120035:[[84],256],120036:[[85],256],120037:[[86],256],120038:[[87],256],120039:[[88],256],120040:[[89],256],120041:[[90],256],120042:[[97],256],120043:[[98],256],120044:[[99],256],120045:[[100],256],120046:[[101],256],120047:[[102],256],120048:[[103],256],120049:[[104],256],120050:[[105],256],120051:[[106],256],120052:[[107],256],120053:[[108],256],120054:[[109],256],120055:[[110],256],120056:[[111],256],120057:[[112],256],120058:[[113],256],120059:[[114],256],120060:[[115],256],120061:[[116],256],120062:[[117],256],120063:[[118],256]}, -54528:{120064:[[119],256],120065:[[120],256],120066:[[121],256],120067:[[122],256],120068:[[65],256],120069:[[66],256],120071:[[68],256],120072:[[69],256],120073:[[70],256],120074:[[71],256],120077:[[74],256],120078:[[75],256],120079:[[76],256],120080:[[77],256],120081:[[78],256],120082:[[79],256],120083:[[80],256],120084:[[81],256],120086:[[83],256],120087:[[84],256],120088:[[85],256],120089:[[86],256],120090:[[87],256],120091:[[88],256],120092:[[89],256],120094:[[97],256],120095:[[98],256],120096:[[99],256],120097:[[100],256],120098:[[101],256],120099:[[102],256],120100:[[103],256],120101:[[104],256],120102:[[105],256],120103:[[106],256],120104:[[107],256],120105:[[108],256],120106:[[109],256],120107:[[110],256],120108:[[111],256],120109:[[112],256],120110:[[113],256],120111:[[114],256],120112:[[115],256],120113:[[116],256],120114:[[117],256],120115:[[118],256],120116:[[119],256],120117:[[120],256],120118:[[121],256],120119:[[122],256],120120:[[65],256],120121:[[66],256],120123:[[68],256],120124:[[69],256],120125:[[70],256],120126:[[71],256],120128:[[73],256],120129:[[74],256],120130:[[75],256],120131:[[76],256],120132:[[77],256],120134:[[79],256],120138:[[83],256],120139:[[84],256],120140:[[85],256],120141:[[86],256],120142:[[87],256],120143:[[88],256],120144:[[89],256],120146:[[97],256],120147:[[98],256],120148:[[99],256],120149:[[100],256],120150:[[101],256],120151:[[102],256],120152:[[103],256],120153:[[104],256],120154:[[105],256],120155:[[106],256],120156:[[107],256],120157:[[108],256],120158:[[109],256],120159:[[110],256],120160:[[111],256],120161:[[112],256],120162:[[113],256],120163:[[114],256],120164:[[115],256],120165:[[116],256],120166:[[117],256],120167:[[118],256],120168:[[119],256],120169:[[120],256],120170:[[121],256],120171:[[122],256],120172:[[65],256],120173:[[66],256],120174:[[67],256],120175:[[68],256],120176:[[69],256],120177:[[70],256],120178:[[71],256],120179:[[72],256],120180:[[73],256],120181:[[74],256],120182:[[75],256],120183:[[76],256],120184:[[77],256],120185:[[78],256],120186:[[79],256],120187:[[80],256],120188:[[81],256],120189:[[82],256],120190:[[83],256],120191:[[84],256],120192:[[85],256],120193:[[86],256],120194:[[87],256],120195:[[88],256],120196:[[89],256],120197:[[90],256],120198:[[97],256],120199:[[98],256],120200:[[99],256],120201:[[100],256],120202:[[101],256],120203:[[102],256],120204:[[103],256],120205:[[104],256],120206:[[105],256],120207:[[106],256],120208:[[107],256],120209:[[108],256],120210:[[109],256],120211:[[110],256],120212:[[111],256],120213:[[112],256],120214:[[113],256],120215:[[114],256],120216:[[115],256],120217:[[116],256],120218:[[117],256],120219:[[118],256],120220:[[119],256],120221:[[120],256],120222:[[121],256],120223:[[122],256],120224:[[65],256],120225:[[66],256],120226:[[67],256],120227:[[68],256],120228:[[69],256],120229:[[70],256],120230:[[71],256],120231:[[72],256],120232:[[73],256],120233:[[74],256],120234:[[75],256],120235:[[76],256],120236:[[77],256],120237:[[78],256],120238:[[79],256],120239:[[80],256],120240:[[81],256],120241:[[82],256],120242:[[83],256],120243:[[84],256],120244:[[85],256],120245:[[86],256],120246:[[87],256],120247:[[88],256],120248:[[89],256],120249:[[90],256],120250:[[97],256],120251:[[98],256],120252:[[99],256],120253:[[100],256],120254:[[101],256],120255:[[102],256],120256:[[103],256],120257:[[104],256],120258:[[105],256],120259:[[106],256],120260:[[107],256],120261:[[108],256],120262:[[109],256],120263:[[110],256],120264:[[111],256],120265:[[112],256],120266:[[113],256],120267:[[114],256],120268:[[115],256],120269:[[116],256],120270:[[117],256],120271:[[118],256],120272:[[119],256],120273:[[120],256],120274:[[121],256],120275:[[122],256],120276:[[65],256],120277:[[66],256],120278:[[67],256],120279:[[68],256],120280:[[69],256],120281:[[70],256],120282:[[71],256],120283:[[72],256],120284:[[73],256],120285:[[74],256],120286:[[75],256],120287:[[76],256],120288:[[77],256],120289:[[78],256],120290:[[79],256],120291:[[80],256],120292:[[81],256],120293:[[82],256],120294:[[83],256],120295:[[84],256],120296:[[85],256],120297:[[86],256],120298:[[87],256],120299:[[88],256],120300:[[89],256],120301:[[90],256],120302:[[97],256],120303:[[98],256],120304:[[99],256],120305:[[100],256],120306:[[101],256],120307:[[102],256],120308:[[103],256],120309:[[104],256],120310:[[105],256],120311:[[106],256],120312:[[107],256],120313:[[108],256],120314:[[109],256],120315:[[110],256],120316:[[111],256],120317:[[112],256],120318:[[113],256],120319:[[114],256]}, -54784:{120320:[[115],256],120321:[[116],256],120322:[[117],256],120323:[[118],256],120324:[[119],256],120325:[[120],256],120326:[[121],256],120327:[[122],256],120328:[[65],256],120329:[[66],256],120330:[[67],256],120331:[[68],256],120332:[[69],256],120333:[[70],256],120334:[[71],256],120335:[[72],256],120336:[[73],256],120337:[[74],256],120338:[[75],256],120339:[[76],256],120340:[[77],256],120341:[[78],256],120342:[[79],256],120343:[[80],256],120344:[[81],256],120345:[[82],256],120346:[[83],256],120347:[[84],256],120348:[[85],256],120349:[[86],256],120350:[[87],256],120351:[[88],256],120352:[[89],256],120353:[[90],256],120354:[[97],256],120355:[[98],256],120356:[[99],256],120357:[[100],256],120358:[[101],256],120359:[[102],256],120360:[[103],256],120361:[[104],256],120362:[[105],256],120363:[[106],256],120364:[[107],256],120365:[[108],256],120366:[[109],256],120367:[[110],256],120368:[[111],256],120369:[[112],256],120370:[[113],256],120371:[[114],256],120372:[[115],256],120373:[[116],256],120374:[[117],256],120375:[[118],256],120376:[[119],256],120377:[[120],256],120378:[[121],256],120379:[[122],256],120380:[[65],256],120381:[[66],256],120382:[[67],256],120383:[[68],256],120384:[[69],256],120385:[[70],256],120386:[[71],256],120387:[[72],256],120388:[[73],256],120389:[[74],256],120390:[[75],256],120391:[[76],256],120392:[[77],256],120393:[[78],256],120394:[[79],256],120395:[[80],256],120396:[[81],256],120397:[[82],256],120398:[[83],256],120399:[[84],256],120400:[[85],256],120401:[[86],256],120402:[[87],256],120403:[[88],256],120404:[[89],256],120405:[[90],256],120406:[[97],256],120407:[[98],256],120408:[[99],256],120409:[[100],256],120410:[[101],256],120411:[[102],256],120412:[[103],256],120413:[[104],256],120414:[[105],256],120415:[[106],256],120416:[[107],256],120417:[[108],256],120418:[[109],256],120419:[[110],256],120420:[[111],256],120421:[[112],256],120422:[[113],256],120423:[[114],256],120424:[[115],256],120425:[[116],256],120426:[[117],256],120427:[[118],256],120428:[[119],256],120429:[[120],256],120430:[[121],256],120431:[[122],256],120432:[[65],256],120433:[[66],256],120434:[[67],256],120435:[[68],256],120436:[[69],256],120437:[[70],256],120438:[[71],256],120439:[[72],256],120440:[[73],256],120441:[[74],256],120442:[[75],256],120443:[[76],256],120444:[[77],256],120445:[[78],256],120446:[[79],256],120447:[[80],256],120448:[[81],256],120449:[[82],256],120450:[[83],256],120451:[[84],256],120452:[[85],256],120453:[[86],256],120454:[[87],256],120455:[[88],256],120456:[[89],256],120457:[[90],256],120458:[[97],256],120459:[[98],256],120460:[[99],256],120461:[[100],256],120462:[[101],256],120463:[[102],256],120464:[[103],256],120465:[[104],256],120466:[[105],256],120467:[[106],256],120468:[[107],256],120469:[[108],256],120470:[[109],256],120471:[[110],256],120472:[[111],256],120473:[[112],256],120474:[[113],256],120475:[[114],256],120476:[[115],256],120477:[[116],256],120478:[[117],256],120479:[[118],256],120480:[[119],256],120481:[[120],256],120482:[[121],256],120483:[[122],256],120484:[[305],256],120485:[[567],256],120488:[[913],256],120489:[[914],256],120490:[[915],256],120491:[[916],256],120492:[[917],256],120493:[[918],256],120494:[[919],256],120495:[[920],256],120496:[[921],256],120497:[[922],256],120498:[[923],256],120499:[[924],256],120500:[[925],256],120501:[[926],256],120502:[[927],256],120503:[[928],256],120504:[[929],256],120505:[[1012],256],120506:[[931],256],120507:[[932],256],120508:[[933],256],120509:[[934],256],120510:[[935],256],120511:[[936],256],120512:[[937],256],120513:[[8711],256],120514:[[945],256],120515:[[946],256],120516:[[947],256],120517:[[948],256],120518:[[949],256],120519:[[950],256],120520:[[951],256],120521:[[952],256],120522:[[953],256],120523:[[954],256],120524:[[955],256],120525:[[956],256],120526:[[957],256],120527:[[958],256],120528:[[959],256],120529:[[960],256],120530:[[961],256],120531:[[962],256],120532:[[963],256],120533:[[964],256],120534:[[965],256],120535:[[966],256],120536:[[967],256],120537:[[968],256],120538:[[969],256],120539:[[8706],256],120540:[[1013],256],120541:[[977],256],120542:[[1008],256],120543:[[981],256],120544:[[1009],256],120545:[[982],256],120546:[[913],256],120547:[[914],256],120548:[[915],256],120549:[[916],256],120550:[[917],256],120551:[[918],256],120552:[[919],256],120553:[[920],256],120554:[[921],256],120555:[[922],256],120556:[[923],256],120557:[[924],256],120558:[[925],256],120559:[[926],256],120560:[[927],256],120561:[[928],256],120562:[[929],256],120563:[[1012],256],120564:[[931],256],120565:[[932],256],120566:[[933],256],120567:[[934],256],120568:[[935],256],120569:[[936],256],120570:[[937],256],120571:[[8711],256],120572:[[945],256],120573:[[946],256],120574:[[947],256],120575:[[948],256]}, -55040:{120576:[[949],256],120577:[[950],256],120578:[[951],256],120579:[[952],256],120580:[[953],256],120581:[[954],256],120582:[[955],256],120583:[[956],256],120584:[[957],256],120585:[[958],256],120586:[[959],256],120587:[[960],256],120588:[[961],256],120589:[[962],256],120590:[[963],256],120591:[[964],256],120592:[[965],256],120593:[[966],256],120594:[[967],256],120595:[[968],256],120596:[[969],256],120597:[[8706],256],120598:[[1013],256],120599:[[977],256],120600:[[1008],256],120601:[[981],256],120602:[[1009],256],120603:[[982],256],120604:[[913],256],120605:[[914],256],120606:[[915],256],120607:[[916],256],120608:[[917],256],120609:[[918],256],120610:[[919],256],120611:[[920],256],120612:[[921],256],120613:[[922],256],120614:[[923],256],120615:[[924],256],120616:[[925],256],120617:[[926],256],120618:[[927],256],120619:[[928],256],120620:[[929],256],120621:[[1012],256],120622:[[931],256],120623:[[932],256],120624:[[933],256],120625:[[934],256],120626:[[935],256],120627:[[936],256],120628:[[937],256],120629:[[8711],256],120630:[[945],256],120631:[[946],256],120632:[[947],256],120633:[[948],256],120634:[[949],256],120635:[[950],256],120636:[[951],256],120637:[[952],256],120638:[[953],256],120639:[[954],256],120640:[[955],256],120641:[[956],256],120642:[[957],256],120643:[[958],256],120644:[[959],256],120645:[[960],256],120646:[[961],256],120647:[[962],256],120648:[[963],256],120649:[[964],256],120650:[[965],256],120651:[[966],256],120652:[[967],256],120653:[[968],256],120654:[[969],256],120655:[[8706],256],120656:[[1013],256],120657:[[977],256],120658:[[1008],256],120659:[[981],256],120660:[[1009],256],120661:[[982],256],120662:[[913],256],120663:[[914],256],120664:[[915],256],120665:[[916],256],120666:[[917],256],120667:[[918],256],120668:[[919],256],120669:[[920],256],120670:[[921],256],120671:[[922],256],120672:[[923],256],120673:[[924],256],120674:[[925],256],120675:[[926],256],120676:[[927],256],120677:[[928],256],120678:[[929],256],120679:[[1012],256],120680:[[931],256],120681:[[932],256],120682:[[933],256],120683:[[934],256],120684:[[935],256],120685:[[936],256],120686:[[937],256],120687:[[8711],256],120688:[[945],256],120689:[[946],256],120690:[[947],256],120691:[[948],256],120692:[[949],256],120693:[[950],256],120694:[[951],256],120695:[[952],256],120696:[[953],256],120697:[[954],256],120698:[[955],256],120699:[[956],256],120700:[[957],256],120701:[[958],256],120702:[[959],256],120703:[[960],256],120704:[[961],256],120705:[[962],256],120706:[[963],256],120707:[[964],256],120708:[[965],256],120709:[[966],256],120710:[[967],256],120711:[[968],256],120712:[[969],256],120713:[[8706],256],120714:[[1013],256],120715:[[977],256],120716:[[1008],256],120717:[[981],256],120718:[[1009],256],120719:[[982],256],120720:[[913],256],120721:[[914],256],120722:[[915],256],120723:[[916],256],120724:[[917],256],120725:[[918],256],120726:[[919],256],120727:[[920],256],120728:[[921],256],120729:[[922],256],120730:[[923],256],120731:[[924],256],120732:[[925],256],120733:[[926],256],120734:[[927],256],120735:[[928],256],120736:[[929],256],120737:[[1012],256],120738:[[931],256],120739:[[932],256],120740:[[933],256],120741:[[934],256],120742:[[935],256],120743:[[936],256],120744:[[937],256],120745:[[8711],256],120746:[[945],256],120747:[[946],256],120748:[[947],256],120749:[[948],256],120750:[[949],256],120751:[[950],256],120752:[[951],256],120753:[[952],256],120754:[[953],256],120755:[[954],256],120756:[[955],256],120757:[[956],256],120758:[[957],256],120759:[[958],256],120760:[[959],256],120761:[[960],256],120762:[[961],256],120763:[[962],256],120764:[[963],256],120765:[[964],256],120766:[[965],256],120767:[[966],256],120768:[[967],256],120769:[[968],256],120770:[[969],256],120771:[[8706],256],120772:[[1013],256],120773:[[977],256],120774:[[1008],256],120775:[[981],256],120776:[[1009],256],120777:[[982],256],120778:[[988],256],120779:[[989],256],120782:[[48],256],120783:[[49],256],120784:[[50],256],120785:[[51],256],120786:[[52],256],120787:[[53],256],120788:[[54],256],120789:[[55],256],120790:[[56],256],120791:[[57],256],120792:[[48],256],120793:[[49],256],120794:[[50],256],120795:[[51],256],120796:[[52],256],120797:[[53],256],120798:[[54],256],120799:[[55],256],120800:[[56],256],120801:[[57],256],120802:[[48],256],120803:[[49],256],120804:[[50],256],120805:[[51],256],120806:[[52],256],120807:[[53],256],120808:[[54],256],120809:[[55],256],120810:[[56],256],120811:[[57],256],120812:[[48],256],120813:[[49],256],120814:[[50],256],120815:[[51],256],120816:[[52],256],120817:[[53],256],120818:[[54],256],120819:[[55],256],120820:[[56],256],120821:[[57],256],120822:[[48],256],120823:[[49],256],120824:[[50],256],120825:[[51],256],120826:[[52],256],120827:[[53],256],120828:[[54],256],120829:[[55],256],120830:[[56],256],120831:[[57],256]}, -59392:{125136:[,220],125137:[,220],125138:[,220],125139:[,220],125140:[,220],125141:[,220],125142:[,220]}, -60928:{126464:[[1575],256],126465:[[1576],256],126466:[[1580],256],126467:[[1583],256],126469:[[1608],256],126470:[[1586],256],126471:[[1581],256],126472:[[1591],256],126473:[[1610],256],126474:[[1603],256],126475:[[1604],256],126476:[[1605],256],126477:[[1606],256],126478:[[1587],256],126479:[[1593],256],126480:[[1601],256],126481:[[1589],256],126482:[[1602],256],126483:[[1585],256],126484:[[1588],256],126485:[[1578],256],126486:[[1579],256],126487:[[1582],256],126488:[[1584],256],126489:[[1590],256],126490:[[1592],256],126491:[[1594],256],126492:[[1646],256],126493:[[1722],256],126494:[[1697],256],126495:[[1647],256],126497:[[1576],256],126498:[[1580],256],126500:[[1607],256],126503:[[1581],256],126505:[[1610],256],126506:[[1603],256],126507:[[1604],256],126508:[[1605],256],126509:[[1606],256],126510:[[1587],256],126511:[[1593],256],126512:[[1601],256],126513:[[1589],256],126514:[[1602],256],126516:[[1588],256],126517:[[1578],256],126518:[[1579],256],126519:[[1582],256],126521:[[1590],256],126523:[[1594],256],126530:[[1580],256],126535:[[1581],256],126537:[[1610],256],126539:[[1604],256],126541:[[1606],256],126542:[[1587],256],126543:[[1593],256],126545:[[1589],256],126546:[[1602],256],126548:[[1588],256],126551:[[1582],256],126553:[[1590],256],126555:[[1594],256],126557:[[1722],256],126559:[[1647],256],126561:[[1576],256],126562:[[1580],256],126564:[[1607],256],126567:[[1581],256],126568:[[1591],256],126569:[[1610],256],126570:[[1603],256],126572:[[1605],256],126573:[[1606],256],126574:[[1587],256],126575:[[1593],256],126576:[[1601],256],126577:[[1589],256],126578:[[1602],256],126580:[[1588],256],126581:[[1578],256],126582:[[1579],256],126583:[[1582],256],126585:[[1590],256],126586:[[1592],256],126587:[[1594],256],126588:[[1646],256],126590:[[1697],256],126592:[[1575],256],126593:[[1576],256],126594:[[1580],256],126595:[[1583],256],126596:[[1607],256],126597:[[1608],256],126598:[[1586],256],126599:[[1581],256],126600:[[1591],256],126601:[[1610],256],126603:[[1604],256],126604:[[1605],256],126605:[[1606],256],126606:[[1587],256],126607:[[1593],256],126608:[[1601],256],126609:[[1589],256],126610:[[1602],256],126611:[[1585],256],126612:[[1588],256],126613:[[1578],256],126614:[[1579],256],126615:[[1582],256],126616:[[1584],256],126617:[[1590],256],126618:[[1592],256],126619:[[1594],256],126625:[[1576],256],126626:[[1580],256],126627:[[1583],256],126629:[[1608],256],126630:[[1586],256],126631:[[1581],256],126632:[[1591],256],126633:[[1610],256],126635:[[1604],256],126636:[[1605],256],126637:[[1606],256],126638:[[1587],256],126639:[[1593],256],126640:[[1601],256],126641:[[1589],256],126642:[[1602],256],126643:[[1585],256],126644:[[1588],256],126645:[[1578],256],126646:[[1579],256],126647:[[1582],256],126648:[[1584],256],126649:[[1590],256],126650:[[1592],256],126651:[[1594],256]}, -61696:{127232:[[48,46],256],127233:[[48,44],256],127234:[[49,44],256],127235:[[50,44],256],127236:[[51,44],256],127237:[[52,44],256],127238:[[53,44],256],127239:[[54,44],256],127240:[[55,44],256],127241:[[56,44],256],127242:[[57,44],256],127248:[[40,65,41],256],127249:[[40,66,41],256],127250:[[40,67,41],256],127251:[[40,68,41],256],127252:[[40,69,41],256],127253:[[40,70,41],256],127254:[[40,71,41],256],127255:[[40,72,41],256],127256:[[40,73,41],256],127257:[[40,74,41],256],127258:[[40,75,41],256],127259:[[40,76,41],256],127260:[[40,77,41],256],127261:[[40,78,41],256],127262:[[40,79,41],256],127263:[[40,80,41],256],127264:[[40,81,41],256],127265:[[40,82,41],256],127266:[[40,83,41],256],127267:[[40,84,41],256],127268:[[40,85,41],256],127269:[[40,86,41],256],127270:[[40,87,41],256],127271:[[40,88,41],256],127272:[[40,89,41],256],127273:[[40,90,41],256],127274:[[12308,83,12309],256],127275:[[67],256],127276:[[82],256],127277:[[67,68],256],127278:[[87,90],256],127280:[[65],256],127281:[[66],256],127282:[[67],256],127283:[[68],256],127284:[[69],256],127285:[[70],256],127286:[[71],256],127287:[[72],256],127288:[[73],256],127289:[[74],256],127290:[[75],256],127291:[[76],256],127292:[[77],256],127293:[[78],256],127294:[[79],256],127295:[[80],256],127296:[[81],256],127297:[[82],256],127298:[[83],256],127299:[[84],256],127300:[[85],256],127301:[[86],256],127302:[[87],256],127303:[[88],256],127304:[[89],256],127305:[[90],256],127306:[[72,86],256],127307:[[77,86],256],127308:[[83,68],256],127309:[[83,83],256],127310:[[80,80,86],256],127311:[[87,67],256],127338:[[77,67],256],127339:[[77,68],256],127376:[[68,74],256]}, -61952:{127488:[[12411,12363],256],127489:[[12467,12467],256],127490:[[12469],256],127504:[[25163],256],127505:[[23383],256],127506:[[21452],256],127507:[[12487],256],127508:[[20108],256],127509:[[22810],256],127510:[[35299],256],127511:[[22825],256],127512:[[20132],256],127513:[[26144],256],127514:[[28961],256],127515:[[26009],256],127516:[[21069],256],127517:[[24460],256],127518:[[20877],256],127519:[[26032],256],127520:[[21021],256],127521:[[32066],256],127522:[[29983],256],127523:[[36009],256],127524:[[22768],256],127525:[[21561],256],127526:[[28436],256],127527:[[25237],256],127528:[[25429],256],127529:[[19968],256],127530:[[19977],256],127531:[[36938],256],127532:[[24038],256],127533:[[20013],256],127534:[[21491],256],127535:[[25351],256],127536:[[36208],256],127537:[[25171],256],127538:[[31105],256],127539:[[31354],256],127540:[[21512],256],127541:[[28288],256],127542:[[26377],256],127543:[[26376],256],127544:[[30003],256],127545:[[21106],256],127546:[[21942],256],127552:[[12308,26412,12309],256],127553:[[12308,19977,12309],256],127554:[[12308,20108,12309],256],127555:[[12308,23433,12309],256],127556:[[12308,28857,12309],256],127557:[[12308,25171,12309],256],127558:[[12308,30423,12309],256],127559:[[12308,21213,12309],256],127560:[[12308,25943,12309],256],127568:[[24471],256],127569:[[21487],256]}, -63488:{194560:[[20029]],194561:[[20024]],194562:[[20033]],194563:[[131362]],194564:[[20320]],194565:[[20398]],194566:[[20411]],194567:[[20482]],194568:[[20602]],194569:[[20633]],194570:[[20711]],194571:[[20687]],194572:[[13470]],194573:[[132666]],194574:[[20813]],194575:[[20820]],194576:[[20836]],194577:[[20855]],194578:[[132380]],194579:[[13497]],194580:[[20839]],194581:[[20877]],194582:[[132427]],194583:[[20887]],194584:[[20900]],194585:[[20172]],194586:[[20908]],194587:[[20917]],194588:[[168415]],194589:[[20981]],194590:[[20995]],194591:[[13535]],194592:[[21051]],194593:[[21062]],194594:[[21106]],194595:[[21111]],194596:[[13589]],194597:[[21191]],194598:[[21193]],194599:[[21220]],194600:[[21242]],194601:[[21253]],194602:[[21254]],194603:[[21271]],194604:[[21321]],194605:[[21329]],194606:[[21338]],194607:[[21363]],194608:[[21373]],194609:[[21375]],194610:[[21375]],194611:[[21375]],194612:[[133676]],194613:[[28784]],194614:[[21450]],194615:[[21471]],194616:[[133987]],194617:[[21483]],194618:[[21489]],194619:[[21510]],194620:[[21662]],194621:[[21560]],194622:[[21576]],194623:[[21608]],194624:[[21666]],194625:[[21750]],194626:[[21776]],194627:[[21843]],194628:[[21859]],194629:[[21892]],194630:[[21892]],194631:[[21913]],194632:[[21931]],194633:[[21939]],194634:[[21954]],194635:[[22294]],194636:[[22022]],194637:[[22295]],194638:[[22097]],194639:[[22132]],194640:[[20999]],194641:[[22766]],194642:[[22478]],194643:[[22516]],194644:[[22541]],194645:[[22411]],194646:[[22578]],194647:[[22577]],194648:[[22700]],194649:[[136420]],194650:[[22770]],194651:[[22775]],194652:[[22790]],194653:[[22810]],194654:[[22818]],194655:[[22882]],194656:[[136872]],194657:[[136938]],194658:[[23020]],194659:[[23067]],194660:[[23079]],194661:[[23000]],194662:[[23142]],194663:[[14062]],194664:[[14076]],194665:[[23304]],194666:[[23358]],194667:[[23358]],194668:[[137672]],194669:[[23491]],194670:[[23512]],194671:[[23527]],194672:[[23539]],194673:[[138008]],194674:[[23551]],194675:[[23558]],194676:[[24403]],194677:[[23586]],194678:[[14209]],194679:[[23648]],194680:[[23662]],194681:[[23744]],194682:[[23693]],194683:[[138724]],194684:[[23875]],194685:[[138726]],194686:[[23918]],194687:[[23915]],194688:[[23932]],194689:[[24033]],194690:[[24034]],194691:[[14383]],194692:[[24061]],194693:[[24104]],194694:[[24125]],194695:[[24169]],194696:[[14434]],194697:[[139651]],194698:[[14460]],194699:[[24240]],194700:[[24243]],194701:[[24246]],194702:[[24266]],194703:[[172946]],194704:[[24318]],194705:[[140081]],194706:[[140081]],194707:[[33281]],194708:[[24354]],194709:[[24354]],194710:[[14535]],194711:[[144056]],194712:[[156122]],194713:[[24418]],194714:[[24427]],194715:[[14563]],194716:[[24474]],194717:[[24525]],194718:[[24535]],194719:[[24569]],194720:[[24705]],194721:[[14650]],194722:[[14620]],194723:[[24724]],194724:[[141012]],194725:[[24775]],194726:[[24904]],194727:[[24908]],194728:[[24910]],194729:[[24908]],194730:[[24954]],194731:[[24974]],194732:[[25010]],194733:[[24996]],194734:[[25007]],194735:[[25054]],194736:[[25074]],194737:[[25078]],194738:[[25104]],194739:[[25115]],194740:[[25181]],194741:[[25265]],194742:[[25300]],194743:[[25424]],194744:[[142092]],194745:[[25405]],194746:[[25340]],194747:[[25448]],194748:[[25475]],194749:[[25572]],194750:[[142321]],194751:[[25634]],194752:[[25541]],194753:[[25513]],194754:[[14894]],194755:[[25705]],194756:[[25726]],194757:[[25757]],194758:[[25719]],194759:[[14956]],194760:[[25935]],194761:[[25964]],194762:[[143370]],194763:[[26083]],194764:[[26360]],194765:[[26185]],194766:[[15129]],194767:[[26257]],194768:[[15112]],194769:[[15076]],194770:[[20882]],194771:[[20885]],194772:[[26368]],194773:[[26268]],194774:[[32941]],194775:[[17369]],194776:[[26391]],194777:[[26395]],194778:[[26401]],194779:[[26462]],194780:[[26451]],194781:[[144323]],194782:[[15177]],194783:[[26618]],194784:[[26501]],194785:[[26706]],194786:[[26757]],194787:[[144493]],194788:[[26766]],194789:[[26655]],194790:[[26900]],194791:[[15261]],194792:[[26946]],194793:[[27043]],194794:[[27114]],194795:[[27304]],194796:[[145059]],194797:[[27355]],194798:[[15384]],194799:[[27425]],194800:[[145575]],194801:[[27476]],194802:[[15438]],194803:[[27506]],194804:[[27551]],194805:[[27578]],194806:[[27579]],194807:[[146061]],194808:[[138507]],194809:[[146170]],194810:[[27726]],194811:[[146620]],194812:[[27839]],194813:[[27853]],194814:[[27751]],194815:[[27926]]}, -63744:{63744:[[35912]],63745:[[26356]],63746:[[36554]],63747:[[36040]],63748:[[28369]],63749:[[20018]],63750:[[21477]],63751:[[40860]],63752:[[40860]],63753:[[22865]],63754:[[37329]],63755:[[21895]],63756:[[22856]],63757:[[25078]],63758:[[30313]],63759:[[32645]],63760:[[34367]],63761:[[34746]],63762:[[35064]],63763:[[37007]],63764:[[27138]],63765:[[27931]],63766:[[28889]],63767:[[29662]],63768:[[33853]],63769:[[37226]],63770:[[39409]],63771:[[20098]],63772:[[21365]],63773:[[27396]],63774:[[29211]],63775:[[34349]],63776:[[40478]],63777:[[23888]],63778:[[28651]],63779:[[34253]],63780:[[35172]],63781:[[25289]],63782:[[33240]],63783:[[34847]],63784:[[24266]],63785:[[26391]],63786:[[28010]],63787:[[29436]],63788:[[37070]],63789:[[20358]],63790:[[20919]],63791:[[21214]],63792:[[25796]],63793:[[27347]],63794:[[29200]],63795:[[30439]],63796:[[32769]],63797:[[34310]],63798:[[34396]],63799:[[36335]],63800:[[38706]],63801:[[39791]],63802:[[40442]],63803:[[30860]],63804:[[31103]],63805:[[32160]],63806:[[33737]],63807:[[37636]],63808:[[40575]],63809:[[35542]],63810:[[22751]],63811:[[24324]],63812:[[31840]],63813:[[32894]],63814:[[29282]],63815:[[30922]],63816:[[36034]],63817:[[38647]],63818:[[22744]],63819:[[23650]],63820:[[27155]],63821:[[28122]],63822:[[28431]],63823:[[32047]],63824:[[32311]],63825:[[38475]],63826:[[21202]],63827:[[32907]],63828:[[20956]],63829:[[20940]],63830:[[31260]],63831:[[32190]],63832:[[33777]],63833:[[38517]],63834:[[35712]],63835:[[25295]],63836:[[27138]],63837:[[35582]],63838:[[20025]],63839:[[23527]],63840:[[24594]],63841:[[29575]],63842:[[30064]],63843:[[21271]],63844:[[30971]],63845:[[20415]],63846:[[24489]],63847:[[19981]],63848:[[27852]],63849:[[25976]],63850:[[32034]],63851:[[21443]],63852:[[22622]],63853:[[30465]],63854:[[33865]],63855:[[35498]],63856:[[27578]],63857:[[36784]],63858:[[27784]],63859:[[25342]],63860:[[33509]],63861:[[25504]],63862:[[30053]],63863:[[20142]],63864:[[20841]],63865:[[20937]],63866:[[26753]],63867:[[31975]],63868:[[33391]],63869:[[35538]],63870:[[37327]],63871:[[21237]],63872:[[21570]],63873:[[22899]],63874:[[24300]],63875:[[26053]],63876:[[28670]],63877:[[31018]],63878:[[38317]],63879:[[39530]],63880:[[40599]],63881:[[40654]],63882:[[21147]],63883:[[26310]],63884:[[27511]],63885:[[36706]],63886:[[24180]],63887:[[24976]],63888:[[25088]],63889:[[25754]],63890:[[28451]],63891:[[29001]],63892:[[29833]],63893:[[31178]],63894:[[32244]],63895:[[32879]],63896:[[36646]],63897:[[34030]],63898:[[36899]],63899:[[37706]],63900:[[21015]],63901:[[21155]],63902:[[21693]],63903:[[28872]],63904:[[35010]],63905:[[35498]],63906:[[24265]],63907:[[24565]],63908:[[25467]],63909:[[27566]],63910:[[31806]],63911:[[29557]],63912:[[20196]],63913:[[22265]],63914:[[23527]],63915:[[23994]],63916:[[24604]],63917:[[29618]],63918:[[29801]],63919:[[32666]],63920:[[32838]],63921:[[37428]],63922:[[38646]],63923:[[38728]],63924:[[38936]],63925:[[20363]],63926:[[31150]],63927:[[37300]],63928:[[38584]],63929:[[24801]],63930:[[20102]],63931:[[20698]],63932:[[23534]],63933:[[23615]],63934:[[26009]],63935:[[27138]],63936:[[29134]],63937:[[30274]],63938:[[34044]],63939:[[36988]],63940:[[40845]],63941:[[26248]],63942:[[38446]],63943:[[21129]],63944:[[26491]],63945:[[26611]],63946:[[27969]],63947:[[28316]],63948:[[29705]],63949:[[30041]],63950:[[30827]],63951:[[32016]],63952:[[39006]],63953:[[20845]],63954:[[25134]],63955:[[38520]],63956:[[20523]],63957:[[23833]],63958:[[28138]],63959:[[36650]],63960:[[24459]],63961:[[24900]],63962:[[26647]],63963:[[29575]],63964:[[38534]],63965:[[21033]],63966:[[21519]],63967:[[23653]],63968:[[26131]],63969:[[26446]],63970:[[26792]],63971:[[27877]],63972:[[29702]],63973:[[30178]],63974:[[32633]],63975:[[35023]],63976:[[35041]],63977:[[37324]],63978:[[38626]],63979:[[21311]],63980:[[28346]],63981:[[21533]],63982:[[29136]],63983:[[29848]],63984:[[34298]],63985:[[38563]],63986:[[40023]],63987:[[40607]],63988:[[26519]],63989:[[28107]],63990:[[33256]],63991:[[31435]],63992:[[31520]],63993:[[31890]],63994:[[29376]],63995:[[28825]],63996:[[35672]],63997:[[20160]],63998:[[33590]],63999:[[21050]],194816:[[27966]],194817:[[28023]],194818:[[27969]],194819:[[28009]],194820:[[28024]],194821:[[28037]],194822:[[146718]],194823:[[27956]],194824:[[28207]],194825:[[28270]],194826:[[15667]],194827:[[28363]],194828:[[28359]],194829:[[147153]],194830:[[28153]],194831:[[28526]],194832:[[147294]],194833:[[147342]],194834:[[28614]],194835:[[28729]],194836:[[28702]],194837:[[28699]],194838:[[15766]],194839:[[28746]],194840:[[28797]],194841:[[28791]],194842:[[28845]],194843:[[132389]],194844:[[28997]],194845:[[148067]],194846:[[29084]],194847:[[148395]],194848:[[29224]],194849:[[29237]],194850:[[29264]],194851:[[149000]],194852:[[29312]],194853:[[29333]],194854:[[149301]],194855:[[149524]],194856:[[29562]],194857:[[29579]],194858:[[16044]],194859:[[29605]],194860:[[16056]],194861:[[16056]],194862:[[29767]],194863:[[29788]],194864:[[29809]],194865:[[29829]],194866:[[29898]],194867:[[16155]],194868:[[29988]],194869:[[150582]],194870:[[30014]],194871:[[150674]],194872:[[30064]],194873:[[139679]],194874:[[30224]],194875:[[151457]],194876:[[151480]],194877:[[151620]],194878:[[16380]],194879:[[16392]],194880:[[30452]],194881:[[151795]],194882:[[151794]],194883:[[151833]],194884:[[151859]],194885:[[30494]],194886:[[30495]],194887:[[30495]],194888:[[30538]],194889:[[16441]],194890:[[30603]],194891:[[16454]],194892:[[16534]],194893:[[152605]],194894:[[30798]],194895:[[30860]],194896:[[30924]],194897:[[16611]],194898:[[153126]],194899:[[31062]],194900:[[153242]],194901:[[153285]],194902:[[31119]],194903:[[31211]],194904:[[16687]],194905:[[31296]],194906:[[31306]],194907:[[31311]],194908:[[153980]],194909:[[154279]],194910:[[154279]],194911:[[31470]],194912:[[16898]],194913:[[154539]],194914:[[31686]],194915:[[31689]],194916:[[16935]],194917:[[154752]],194918:[[31954]],194919:[[17056]],194920:[[31976]],194921:[[31971]],194922:[[32000]],194923:[[155526]],194924:[[32099]],194925:[[17153]],194926:[[32199]],194927:[[32258]],194928:[[32325]],194929:[[17204]],194930:[[156200]],194931:[[156231]],194932:[[17241]],194933:[[156377]],194934:[[32634]],194935:[[156478]],194936:[[32661]],194937:[[32762]],194938:[[32773]],194939:[[156890]],194940:[[156963]],194941:[[32864]],194942:[[157096]],194943:[[32880]],194944:[[144223]],194945:[[17365]],194946:[[32946]],194947:[[33027]],194948:[[17419]],194949:[[33086]],194950:[[23221]],194951:[[157607]],194952:[[157621]],194953:[[144275]],194954:[[144284]],194955:[[33281]],194956:[[33284]],194957:[[36766]],194958:[[17515]],194959:[[33425]],194960:[[33419]],194961:[[33437]],194962:[[21171]],194963:[[33457]],194964:[[33459]],194965:[[33469]],194966:[[33510]],194967:[[158524]],194968:[[33509]],194969:[[33565]],194970:[[33635]],194971:[[33709]],194972:[[33571]],194973:[[33725]],194974:[[33767]],194975:[[33879]],194976:[[33619]],194977:[[33738]],194978:[[33740]],194979:[[33756]],194980:[[158774]],194981:[[159083]],194982:[[158933]],194983:[[17707]],194984:[[34033]],194985:[[34035]],194986:[[34070]],194987:[[160714]],194988:[[34148]],194989:[[159532]],194990:[[17757]],194991:[[17761]],194992:[[159665]],194993:[[159954]],194994:[[17771]],194995:[[34384]],194996:[[34396]],194997:[[34407]],194998:[[34409]],194999:[[34473]],195000:[[34440]],195001:[[34574]],195002:[[34530]],195003:[[34681]],195004:[[34600]],195005:[[34667]],195006:[[34694]],195007:[[17879]],195008:[[34785]],195009:[[34817]],195010:[[17913]],195011:[[34912]],195012:[[34915]],195013:[[161383]],195014:[[35031]],195015:[[35038]],195016:[[17973]],195017:[[35066]],195018:[[13499]],195019:[[161966]],195020:[[162150]],195021:[[18110]],195022:[[18119]],195023:[[35488]],195024:[[35565]],195025:[[35722]],195026:[[35925]],195027:[[162984]],195028:[[36011]],195029:[[36033]],195030:[[36123]],195031:[[36215]],195032:[[163631]],195033:[[133124]],195034:[[36299]],195035:[[36284]],195036:[[36336]],195037:[[133342]],195038:[[36564]],195039:[[36664]],195040:[[165330]],195041:[[165357]],195042:[[37012]],195043:[[37105]],195044:[[37137]],195045:[[165678]],195046:[[37147]],195047:[[37432]],195048:[[37591]],195049:[[37592]],195050:[[37500]],195051:[[37881]],195052:[[37909]],195053:[[166906]],195054:[[38283]],195055:[[18837]],195056:[[38327]],195057:[[167287]],195058:[[18918]],195059:[[38595]],195060:[[23986]],195061:[[38691]],195062:[[168261]],195063:[[168474]],195064:[[19054]],195065:[[19062]],195066:[[38880]],195067:[[168970]],195068:[[19122]],195069:[[169110]],195070:[[38923]],195071:[[38923]]}, -64000:{64000:[[20999]],64001:[[24230]],64002:[[25299]],64003:[[31958]],64004:[[23429]],64005:[[27934]],64006:[[26292]],64007:[[36667]],64008:[[34892]],64009:[[38477]],64010:[[35211]],64011:[[24275]],64012:[[20800]],64013:[[21952]],64016:[[22618]],64018:[[26228]],64021:[[20958]],64022:[[29482]],64023:[[30410]],64024:[[31036]],64025:[[31070]],64026:[[31077]],64027:[[31119]],64028:[[38742]],64029:[[31934]],64030:[[32701]],64032:[[34322]],64034:[[35576]],64037:[[36920]],64038:[[37117]],64042:[[39151]],64043:[[39164]],64044:[[39208]],64045:[[40372]],64046:[[37086]],64047:[[38583]],64048:[[20398]],64049:[[20711]],64050:[[20813]],64051:[[21193]],64052:[[21220]],64053:[[21329]],64054:[[21917]],64055:[[22022]],64056:[[22120]],64057:[[22592]],64058:[[22696]],64059:[[23652]],64060:[[23662]],64061:[[24724]],64062:[[24936]],64063:[[24974]],64064:[[25074]],64065:[[25935]],64066:[[26082]],64067:[[26257]],64068:[[26757]],64069:[[28023]],64070:[[28186]],64071:[[28450]],64072:[[29038]],64073:[[29227]],64074:[[29730]],64075:[[30865]],64076:[[31038]],64077:[[31049]],64078:[[31048]],64079:[[31056]],64080:[[31062]],64081:[[31069]],64082:[[31117]],64083:[[31118]],64084:[[31296]],64085:[[31361]],64086:[[31680]],64087:[[32244]],64088:[[32265]],64089:[[32321]],64090:[[32626]],64091:[[32773]],64092:[[33261]],64093:[[33401]],64094:[[33401]],64095:[[33879]],64096:[[35088]],64097:[[35222]],64098:[[35585]],64099:[[35641]],64100:[[36051]],64101:[[36104]],64102:[[36790]],64103:[[36920]],64104:[[38627]],64105:[[38911]],64106:[[38971]],64107:[[24693]],64108:[[148206]],64109:[[33304]],64112:[[20006]],64113:[[20917]],64114:[[20840]],64115:[[20352]],64116:[[20805]],64117:[[20864]],64118:[[21191]],64119:[[21242]],64120:[[21917]],64121:[[21845]],64122:[[21913]],64123:[[21986]],64124:[[22618]],64125:[[22707]],64126:[[22852]],64127:[[22868]],64128:[[23138]],64129:[[23336]],64130:[[24274]],64131:[[24281]],64132:[[24425]],64133:[[24493]],64134:[[24792]],64135:[[24910]],64136:[[24840]],64137:[[24974]],64138:[[24928]],64139:[[25074]],64140:[[25140]],64141:[[25540]],64142:[[25628]],64143:[[25682]],64144:[[25942]],64145:[[26228]],64146:[[26391]],64147:[[26395]],64148:[[26454]],64149:[[27513]],64150:[[27578]],64151:[[27969]],64152:[[28379]],64153:[[28363]],64154:[[28450]],64155:[[28702]],64156:[[29038]],64157:[[30631]],64158:[[29237]],64159:[[29359]],64160:[[29482]],64161:[[29809]],64162:[[29958]],64163:[[30011]],64164:[[30237]],64165:[[30239]],64166:[[30410]],64167:[[30427]],64168:[[30452]],64169:[[30538]],64170:[[30528]],64171:[[30924]],64172:[[31409]],64173:[[31680]],64174:[[31867]],64175:[[32091]],64176:[[32244]],64177:[[32574]],64178:[[32773]],64179:[[33618]],64180:[[33775]],64181:[[34681]],64182:[[35137]],64183:[[35206]],64184:[[35222]],64185:[[35519]],64186:[[35576]],64187:[[35531]],64188:[[35585]],64189:[[35582]],64190:[[35565]],64191:[[35641]],64192:[[35722]],64193:[[36104]],64194:[[36664]],64195:[[36978]],64196:[[37273]],64197:[[37494]],64198:[[38524]],64199:[[38627]],64200:[[38742]],64201:[[38875]],64202:[[38911]],64203:[[38923]],64204:[[38971]],64205:[[39698]],64206:[[40860]],64207:[[141386]],64208:[[141380]],64209:[[144341]],64210:[[15261]],64211:[[16408]],64212:[[16441]],64213:[[152137]],64214:[[154832]],64215:[[163539]],64216:[[40771]],64217:[[40846]],195072:[[38953]],195073:[[169398]],195074:[[39138]],195075:[[19251]],195076:[[39209]],195077:[[39335]],195078:[[39362]],195079:[[39422]],195080:[[19406]],195081:[[170800]],195082:[[39698]],195083:[[40000]],195084:[[40189]],195085:[[19662]],195086:[[19693]],195087:[[40295]],195088:[[172238]],195089:[[19704]],195090:[[172293]],195091:[[172558]],195092:[[172689]],195093:[[40635]],195094:[[19798]],195095:[[40697]],195096:[[40702]],195097:[[40709]],195098:[[40719]],195099:[[40726]],195100:[[40763]],195101:[[173568]]}, -64256:{64256:[[102,102],256],64257:[[102,105],256],64258:[[102,108],256],64259:[[102,102,105],256],64260:[[102,102,108],256],64261:[[383,116],256],64262:[[115,116],256],64275:[[1396,1398],256],64276:[[1396,1381],256],64277:[[1396,1387],256],64278:[[1406,1398],256],64279:[[1396,1389],256],64285:[[1497,1460],512],64286:[,26],64287:[[1522,1463],512],64288:[[1506],256],64289:[[1488],256],64290:[[1491],256],64291:[[1492],256],64292:[[1499],256],64293:[[1500],256],64294:[[1501],256],64295:[[1512],256],64296:[[1514],256],64297:[[43],256],64298:[[1513,1473],512],64299:[[1513,1474],512],64300:[[64329,1473],512],64301:[[64329,1474],512],64302:[[1488,1463],512],64303:[[1488,1464],512],64304:[[1488,1468],512],64305:[[1489,1468],512],64306:[[1490,1468],512],64307:[[1491,1468],512],64308:[[1492,1468],512],64309:[[1493,1468],512],64310:[[1494,1468],512],64312:[[1496,1468],512],64313:[[1497,1468],512],64314:[[1498,1468],512],64315:[[1499,1468],512],64316:[[1500,1468],512],64318:[[1502,1468],512],64320:[[1504,1468],512],64321:[[1505,1468],512],64323:[[1507,1468],512],64324:[[1508,1468],512],64326:[[1510,1468],512],64327:[[1511,1468],512],64328:[[1512,1468],512],64329:[[1513,1468],512],64330:[[1514,1468],512],64331:[[1493,1465],512],64332:[[1489,1471],512],64333:[[1499,1471],512],64334:[[1508,1471],512],64335:[[1488,1500],256],64336:[[1649],256],64337:[[1649],256],64338:[[1659],256],64339:[[1659],256],64340:[[1659],256],64341:[[1659],256],64342:[[1662],256],64343:[[1662],256],64344:[[1662],256],64345:[[1662],256],64346:[[1664],256],64347:[[1664],256],64348:[[1664],256],64349:[[1664],256],64350:[[1658],256],64351:[[1658],256],64352:[[1658],256],64353:[[1658],256],64354:[[1663],256],64355:[[1663],256],64356:[[1663],256],64357:[[1663],256],64358:[[1657],256],64359:[[1657],256],64360:[[1657],256],64361:[[1657],256],64362:[[1700],256],64363:[[1700],256],64364:[[1700],256],64365:[[1700],256],64366:[[1702],256],64367:[[1702],256],64368:[[1702],256],64369:[[1702],256],64370:[[1668],256],64371:[[1668],256],64372:[[1668],256],64373:[[1668],256],64374:[[1667],256],64375:[[1667],256],64376:[[1667],256],64377:[[1667],256],64378:[[1670],256],64379:[[1670],256],64380:[[1670],256],64381:[[1670],256],64382:[[1671],256],64383:[[1671],256],64384:[[1671],256],64385:[[1671],256],64386:[[1677],256],64387:[[1677],256],64388:[[1676],256],64389:[[1676],256],64390:[[1678],256],64391:[[1678],256],64392:[[1672],256],64393:[[1672],256],64394:[[1688],256],64395:[[1688],256],64396:[[1681],256],64397:[[1681],256],64398:[[1705],256],64399:[[1705],256],64400:[[1705],256],64401:[[1705],256],64402:[[1711],256],64403:[[1711],256],64404:[[1711],256],64405:[[1711],256],64406:[[1715],256],64407:[[1715],256],64408:[[1715],256],64409:[[1715],256],64410:[[1713],256],64411:[[1713],256],64412:[[1713],256],64413:[[1713],256],64414:[[1722],256],64415:[[1722],256],64416:[[1723],256],64417:[[1723],256],64418:[[1723],256],64419:[[1723],256],64420:[[1728],256],64421:[[1728],256],64422:[[1729],256],64423:[[1729],256],64424:[[1729],256],64425:[[1729],256],64426:[[1726],256],64427:[[1726],256],64428:[[1726],256],64429:[[1726],256],64430:[[1746],256],64431:[[1746],256],64432:[[1747],256],64433:[[1747],256],64467:[[1709],256],64468:[[1709],256],64469:[[1709],256],64470:[[1709],256],64471:[[1735],256],64472:[[1735],256],64473:[[1734],256],64474:[[1734],256],64475:[[1736],256],64476:[[1736],256],64477:[[1655],256],64478:[[1739],256],64479:[[1739],256],64480:[[1733],256],64481:[[1733],256],64482:[[1737],256],64483:[[1737],256],64484:[[1744],256],64485:[[1744],256],64486:[[1744],256],64487:[[1744],256],64488:[[1609],256],64489:[[1609],256],64490:[[1574,1575],256],64491:[[1574,1575],256],64492:[[1574,1749],256],64493:[[1574,1749],256],64494:[[1574,1608],256],64495:[[1574,1608],256],64496:[[1574,1735],256],64497:[[1574,1735],256],64498:[[1574,1734],256],64499:[[1574,1734],256],64500:[[1574,1736],256],64501:[[1574,1736],256],64502:[[1574,1744],256],64503:[[1574,1744],256],64504:[[1574,1744],256],64505:[[1574,1609],256],64506:[[1574,1609],256],64507:[[1574,1609],256],64508:[[1740],256],64509:[[1740],256],64510:[[1740],256],64511:[[1740],256]}, -64512:{64512:[[1574,1580],256],64513:[[1574,1581],256],64514:[[1574,1605],256],64515:[[1574,1609],256],64516:[[1574,1610],256],64517:[[1576,1580],256],64518:[[1576,1581],256],64519:[[1576,1582],256],64520:[[1576,1605],256],64521:[[1576,1609],256],64522:[[1576,1610],256],64523:[[1578,1580],256],64524:[[1578,1581],256],64525:[[1578,1582],256],64526:[[1578,1605],256],64527:[[1578,1609],256],64528:[[1578,1610],256],64529:[[1579,1580],256],64530:[[1579,1605],256],64531:[[1579,1609],256],64532:[[1579,1610],256],64533:[[1580,1581],256],64534:[[1580,1605],256],64535:[[1581,1580],256],64536:[[1581,1605],256],64537:[[1582,1580],256],64538:[[1582,1581],256],64539:[[1582,1605],256],64540:[[1587,1580],256],64541:[[1587,1581],256],64542:[[1587,1582],256],64543:[[1587,1605],256],64544:[[1589,1581],256],64545:[[1589,1605],256],64546:[[1590,1580],256],64547:[[1590,1581],256],64548:[[1590,1582],256],64549:[[1590,1605],256],64550:[[1591,1581],256],64551:[[1591,1605],256],64552:[[1592,1605],256],64553:[[1593,1580],256],64554:[[1593,1605],256],64555:[[1594,1580],256],64556:[[1594,1605],256],64557:[[1601,1580],256],64558:[[1601,1581],256],64559:[[1601,1582],256],64560:[[1601,1605],256],64561:[[1601,1609],256],64562:[[1601,1610],256],64563:[[1602,1581],256],64564:[[1602,1605],256],64565:[[1602,1609],256],64566:[[1602,1610],256],64567:[[1603,1575],256],64568:[[1603,1580],256],64569:[[1603,1581],256],64570:[[1603,1582],256],64571:[[1603,1604],256],64572:[[1603,1605],256],64573:[[1603,1609],256],64574:[[1603,1610],256],64575:[[1604,1580],256],64576:[[1604,1581],256],64577:[[1604,1582],256],64578:[[1604,1605],256],64579:[[1604,1609],256],64580:[[1604,1610],256],64581:[[1605,1580],256],64582:[[1605,1581],256],64583:[[1605,1582],256],64584:[[1605,1605],256],64585:[[1605,1609],256],64586:[[1605,1610],256],64587:[[1606,1580],256],64588:[[1606,1581],256],64589:[[1606,1582],256],64590:[[1606,1605],256],64591:[[1606,1609],256],64592:[[1606,1610],256],64593:[[1607,1580],256],64594:[[1607,1605],256],64595:[[1607,1609],256],64596:[[1607,1610],256],64597:[[1610,1580],256],64598:[[1610,1581],256],64599:[[1610,1582],256],64600:[[1610,1605],256],64601:[[1610,1609],256],64602:[[1610,1610],256],64603:[[1584,1648],256],64604:[[1585,1648],256],64605:[[1609,1648],256],64606:[[32,1612,1617],256],64607:[[32,1613,1617],256],64608:[[32,1614,1617],256],64609:[[32,1615,1617],256],64610:[[32,1616,1617],256],64611:[[32,1617,1648],256],64612:[[1574,1585],256],64613:[[1574,1586],256],64614:[[1574,1605],256],64615:[[1574,1606],256],64616:[[1574,1609],256],64617:[[1574,1610],256],64618:[[1576,1585],256],64619:[[1576,1586],256],64620:[[1576,1605],256],64621:[[1576,1606],256],64622:[[1576,1609],256],64623:[[1576,1610],256],64624:[[1578,1585],256],64625:[[1578,1586],256],64626:[[1578,1605],256],64627:[[1578,1606],256],64628:[[1578,1609],256],64629:[[1578,1610],256],64630:[[1579,1585],256],64631:[[1579,1586],256],64632:[[1579,1605],256],64633:[[1579,1606],256],64634:[[1579,1609],256],64635:[[1579,1610],256],64636:[[1601,1609],256],64637:[[1601,1610],256],64638:[[1602,1609],256],64639:[[1602,1610],256],64640:[[1603,1575],256],64641:[[1603,1604],256],64642:[[1603,1605],256],64643:[[1603,1609],256],64644:[[1603,1610],256],64645:[[1604,1605],256],64646:[[1604,1609],256],64647:[[1604,1610],256],64648:[[1605,1575],256],64649:[[1605,1605],256],64650:[[1606,1585],256],64651:[[1606,1586],256],64652:[[1606,1605],256],64653:[[1606,1606],256],64654:[[1606,1609],256],64655:[[1606,1610],256],64656:[[1609,1648],256],64657:[[1610,1585],256],64658:[[1610,1586],256],64659:[[1610,1605],256],64660:[[1610,1606],256],64661:[[1610,1609],256],64662:[[1610,1610],256],64663:[[1574,1580],256],64664:[[1574,1581],256],64665:[[1574,1582],256],64666:[[1574,1605],256],64667:[[1574,1607],256],64668:[[1576,1580],256],64669:[[1576,1581],256],64670:[[1576,1582],256],64671:[[1576,1605],256],64672:[[1576,1607],256],64673:[[1578,1580],256],64674:[[1578,1581],256],64675:[[1578,1582],256],64676:[[1578,1605],256],64677:[[1578,1607],256],64678:[[1579,1605],256],64679:[[1580,1581],256],64680:[[1580,1605],256],64681:[[1581,1580],256],64682:[[1581,1605],256],64683:[[1582,1580],256],64684:[[1582,1605],256],64685:[[1587,1580],256],64686:[[1587,1581],256],64687:[[1587,1582],256],64688:[[1587,1605],256],64689:[[1589,1581],256],64690:[[1589,1582],256],64691:[[1589,1605],256],64692:[[1590,1580],256],64693:[[1590,1581],256],64694:[[1590,1582],256],64695:[[1590,1605],256],64696:[[1591,1581],256],64697:[[1592,1605],256],64698:[[1593,1580],256],64699:[[1593,1605],256],64700:[[1594,1580],256],64701:[[1594,1605],256],64702:[[1601,1580],256],64703:[[1601,1581],256],64704:[[1601,1582],256],64705:[[1601,1605],256],64706:[[1602,1581],256],64707:[[1602,1605],256],64708:[[1603,1580],256],64709:[[1603,1581],256],64710:[[1603,1582],256],64711:[[1603,1604],256],64712:[[1603,1605],256],64713:[[1604,1580],256],64714:[[1604,1581],256],64715:[[1604,1582],256],64716:[[1604,1605],256],64717:[[1604,1607],256],64718:[[1605,1580],256],64719:[[1605,1581],256],64720:[[1605,1582],256],64721:[[1605,1605],256],64722:[[1606,1580],256],64723:[[1606,1581],256],64724:[[1606,1582],256],64725:[[1606,1605],256],64726:[[1606,1607],256],64727:[[1607,1580],256],64728:[[1607,1605],256],64729:[[1607,1648],256],64730:[[1610,1580],256],64731:[[1610,1581],256],64732:[[1610,1582],256],64733:[[1610,1605],256],64734:[[1610,1607],256],64735:[[1574,1605],256],64736:[[1574,1607],256],64737:[[1576,1605],256],64738:[[1576,1607],256],64739:[[1578,1605],256],64740:[[1578,1607],256],64741:[[1579,1605],256],64742:[[1579,1607],256],64743:[[1587,1605],256],64744:[[1587,1607],256],64745:[[1588,1605],256],64746:[[1588,1607],256],64747:[[1603,1604],256],64748:[[1603,1605],256],64749:[[1604,1605],256],64750:[[1606,1605],256],64751:[[1606,1607],256],64752:[[1610,1605],256],64753:[[1610,1607],256],64754:[[1600,1614,1617],256],64755:[[1600,1615,1617],256],64756:[[1600,1616,1617],256],64757:[[1591,1609],256],64758:[[1591,1610],256],64759:[[1593,1609],256],64760:[[1593,1610],256],64761:[[1594,1609],256],64762:[[1594,1610],256],64763:[[1587,1609],256],64764:[[1587,1610],256],64765:[[1588,1609],256],64766:[[1588,1610],256],64767:[[1581,1609],256]}, -64768:{64768:[[1581,1610],256],64769:[[1580,1609],256],64770:[[1580,1610],256],64771:[[1582,1609],256],64772:[[1582,1610],256],64773:[[1589,1609],256],64774:[[1589,1610],256],64775:[[1590,1609],256],64776:[[1590,1610],256],64777:[[1588,1580],256],64778:[[1588,1581],256],64779:[[1588,1582],256],64780:[[1588,1605],256],64781:[[1588,1585],256],64782:[[1587,1585],256],64783:[[1589,1585],256],64784:[[1590,1585],256],64785:[[1591,1609],256],64786:[[1591,1610],256],64787:[[1593,1609],256],64788:[[1593,1610],256],64789:[[1594,1609],256],64790:[[1594,1610],256],64791:[[1587,1609],256],64792:[[1587,1610],256],64793:[[1588,1609],256],64794:[[1588,1610],256],64795:[[1581,1609],256],64796:[[1581,1610],256],64797:[[1580,1609],256],64798:[[1580,1610],256],64799:[[1582,1609],256],64800:[[1582,1610],256],64801:[[1589,1609],256],64802:[[1589,1610],256],64803:[[1590,1609],256],64804:[[1590,1610],256],64805:[[1588,1580],256],64806:[[1588,1581],256],64807:[[1588,1582],256],64808:[[1588,1605],256],64809:[[1588,1585],256],64810:[[1587,1585],256],64811:[[1589,1585],256],64812:[[1590,1585],256],64813:[[1588,1580],256],64814:[[1588,1581],256],64815:[[1588,1582],256],64816:[[1588,1605],256],64817:[[1587,1607],256],64818:[[1588,1607],256],64819:[[1591,1605],256],64820:[[1587,1580],256],64821:[[1587,1581],256],64822:[[1587,1582],256],64823:[[1588,1580],256],64824:[[1588,1581],256],64825:[[1588,1582],256],64826:[[1591,1605],256],64827:[[1592,1605],256],64828:[[1575,1611],256],64829:[[1575,1611],256],64848:[[1578,1580,1605],256],64849:[[1578,1581,1580],256],64850:[[1578,1581,1580],256],64851:[[1578,1581,1605],256],64852:[[1578,1582,1605],256],64853:[[1578,1605,1580],256],64854:[[1578,1605,1581],256],64855:[[1578,1605,1582],256],64856:[[1580,1605,1581],256],64857:[[1580,1605,1581],256],64858:[[1581,1605,1610],256],64859:[[1581,1605,1609],256],64860:[[1587,1581,1580],256],64861:[[1587,1580,1581],256],64862:[[1587,1580,1609],256],64863:[[1587,1605,1581],256],64864:[[1587,1605,1581],256],64865:[[1587,1605,1580],256],64866:[[1587,1605,1605],256],64867:[[1587,1605,1605],256],64868:[[1589,1581,1581],256],64869:[[1589,1581,1581],256],64870:[[1589,1605,1605],256],64871:[[1588,1581,1605],256],64872:[[1588,1581,1605],256],64873:[[1588,1580,1610],256],64874:[[1588,1605,1582],256],64875:[[1588,1605,1582],256],64876:[[1588,1605,1605],256],64877:[[1588,1605,1605],256],64878:[[1590,1581,1609],256],64879:[[1590,1582,1605],256],64880:[[1590,1582,1605],256],64881:[[1591,1605,1581],256],64882:[[1591,1605,1581],256],64883:[[1591,1605,1605],256],64884:[[1591,1605,1610],256],64885:[[1593,1580,1605],256],64886:[[1593,1605,1605],256],64887:[[1593,1605,1605],256],64888:[[1593,1605,1609],256],64889:[[1594,1605,1605],256],64890:[[1594,1605,1610],256],64891:[[1594,1605,1609],256],64892:[[1601,1582,1605],256],64893:[[1601,1582,1605],256],64894:[[1602,1605,1581],256],64895:[[1602,1605,1605],256],64896:[[1604,1581,1605],256],64897:[[1604,1581,1610],256],64898:[[1604,1581,1609],256],64899:[[1604,1580,1580],256],64900:[[1604,1580,1580],256],64901:[[1604,1582,1605],256],64902:[[1604,1582,1605],256],64903:[[1604,1605,1581],256],64904:[[1604,1605,1581],256],64905:[[1605,1581,1580],256],64906:[[1605,1581,1605],256],64907:[[1605,1581,1610],256],64908:[[1605,1580,1581],256],64909:[[1605,1580,1605],256],64910:[[1605,1582,1580],256],64911:[[1605,1582,1605],256],64914:[[1605,1580,1582],256],64915:[[1607,1605,1580],256],64916:[[1607,1605,1605],256],64917:[[1606,1581,1605],256],64918:[[1606,1581,1609],256],64919:[[1606,1580,1605],256],64920:[[1606,1580,1605],256],64921:[[1606,1580,1609],256],64922:[[1606,1605,1610],256],64923:[[1606,1605,1609],256],64924:[[1610,1605,1605],256],64925:[[1610,1605,1605],256],64926:[[1576,1582,1610],256],64927:[[1578,1580,1610],256],64928:[[1578,1580,1609],256],64929:[[1578,1582,1610],256],64930:[[1578,1582,1609],256],64931:[[1578,1605,1610],256],64932:[[1578,1605,1609],256],64933:[[1580,1605,1610],256],64934:[[1580,1581,1609],256],64935:[[1580,1605,1609],256],64936:[[1587,1582,1609],256],64937:[[1589,1581,1610],256],64938:[[1588,1581,1610],256],64939:[[1590,1581,1610],256],64940:[[1604,1580,1610],256],64941:[[1604,1605,1610],256],64942:[[1610,1581,1610],256],64943:[[1610,1580,1610],256],64944:[[1610,1605,1610],256],64945:[[1605,1605,1610],256],64946:[[1602,1605,1610],256],64947:[[1606,1581,1610],256],64948:[[1602,1605,1581],256],64949:[[1604,1581,1605],256],64950:[[1593,1605,1610],256],64951:[[1603,1605,1610],256],64952:[[1606,1580,1581],256],64953:[[1605,1582,1610],256],64954:[[1604,1580,1605],256],64955:[[1603,1605,1605],256],64956:[[1604,1580,1605],256],64957:[[1606,1580,1581],256],64958:[[1580,1581,1610],256],64959:[[1581,1580,1610],256],64960:[[1605,1580,1610],256],64961:[[1601,1605,1610],256],64962:[[1576,1581,1610],256],64963:[[1603,1605,1605],256],64964:[[1593,1580,1605],256],64965:[[1589,1605,1605],256],64966:[[1587,1582,1610],256],64967:[[1606,1580,1610],256],65008:[[1589,1604,1746],256],65009:[[1602,1604,1746],256],65010:[[1575,1604,1604,1607],256],65011:[[1575,1603,1576,1585],256],65012:[[1605,1581,1605,1583],256],65013:[[1589,1604,1593,1605],256],65014:[[1585,1587,1608,1604],256],65015:[[1593,1604,1610,1607],256],65016:[[1608,1587,1604,1605],256],65017:[[1589,1604,1609],256],65018:[[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605],256],65019:[[1580,1604,32,1580,1604,1575,1604,1607],256],65020:[[1585,1740,1575,1604],256]}, -65024:{65040:[[44],256],65041:[[12289],256],65042:[[12290],256],65043:[[58],256],65044:[[59],256],65045:[[33],256],65046:[[63],256],65047:[[12310],256],65048:[[12311],256],65049:[[8230],256],65056:[,230],65057:[,230],65058:[,230],65059:[,230],65060:[,230],65061:[,230],65062:[,230],65063:[,220],65064:[,220],65065:[,220],65066:[,220],65067:[,220],65068:[,220],65069:[,220],65072:[[8229],256],65073:[[8212],256],65074:[[8211],256],65075:[[95],256],65076:[[95],256],65077:[[40],256],65078:[[41],256],65079:[[123],256],65080:[[125],256],65081:[[12308],256],65082:[[12309],256],65083:[[12304],256],65084:[[12305],256],65085:[[12298],256],65086:[[12299],256],65087:[[12296],256],65088:[[12297],256],65089:[[12300],256],65090:[[12301],256],65091:[[12302],256],65092:[[12303],256],65095:[[91],256],65096:[[93],256],65097:[[8254],256],65098:[[8254],256],65099:[[8254],256],65100:[[8254],256],65101:[[95],256],65102:[[95],256],65103:[[95],256],65104:[[44],256],65105:[[12289],256],65106:[[46],256],65108:[[59],256],65109:[[58],256],65110:[[63],256],65111:[[33],256],65112:[[8212],256],65113:[[40],256],65114:[[41],256],65115:[[123],256],65116:[[125],256],65117:[[12308],256],65118:[[12309],256],65119:[[35],256],65120:[[38],256],65121:[[42],256],65122:[[43],256],65123:[[45],256],65124:[[60],256],65125:[[62],256],65126:[[61],256],65128:[[92],256],65129:[[36],256],65130:[[37],256],65131:[[64],256],65136:[[32,1611],256],65137:[[1600,1611],256],65138:[[32,1612],256],65140:[[32,1613],256],65142:[[32,1614],256],65143:[[1600,1614],256],65144:[[32,1615],256],65145:[[1600,1615],256],65146:[[32,1616],256],65147:[[1600,1616],256],65148:[[32,1617],256],65149:[[1600,1617],256],65150:[[32,1618],256],65151:[[1600,1618],256],65152:[[1569],256],65153:[[1570],256],65154:[[1570],256],65155:[[1571],256],65156:[[1571],256],65157:[[1572],256],65158:[[1572],256],65159:[[1573],256],65160:[[1573],256],65161:[[1574],256],65162:[[1574],256],65163:[[1574],256],65164:[[1574],256],65165:[[1575],256],65166:[[1575],256],65167:[[1576],256],65168:[[1576],256],65169:[[1576],256],65170:[[1576],256],65171:[[1577],256],65172:[[1577],256],65173:[[1578],256],65174:[[1578],256],65175:[[1578],256],65176:[[1578],256],65177:[[1579],256],65178:[[1579],256],65179:[[1579],256],65180:[[1579],256],65181:[[1580],256],65182:[[1580],256],65183:[[1580],256],65184:[[1580],256],65185:[[1581],256],65186:[[1581],256],65187:[[1581],256],65188:[[1581],256],65189:[[1582],256],65190:[[1582],256],65191:[[1582],256],65192:[[1582],256],65193:[[1583],256],65194:[[1583],256],65195:[[1584],256],65196:[[1584],256],65197:[[1585],256],65198:[[1585],256],65199:[[1586],256],65200:[[1586],256],65201:[[1587],256],65202:[[1587],256],65203:[[1587],256],65204:[[1587],256],65205:[[1588],256],65206:[[1588],256],65207:[[1588],256],65208:[[1588],256],65209:[[1589],256],65210:[[1589],256],65211:[[1589],256],65212:[[1589],256],65213:[[1590],256],65214:[[1590],256],65215:[[1590],256],65216:[[1590],256],65217:[[1591],256],65218:[[1591],256],65219:[[1591],256],65220:[[1591],256],65221:[[1592],256],65222:[[1592],256],65223:[[1592],256],65224:[[1592],256],65225:[[1593],256],65226:[[1593],256],65227:[[1593],256],65228:[[1593],256],65229:[[1594],256],65230:[[1594],256],65231:[[1594],256],65232:[[1594],256],65233:[[1601],256],65234:[[1601],256],65235:[[1601],256],65236:[[1601],256],65237:[[1602],256],65238:[[1602],256],65239:[[1602],256],65240:[[1602],256],65241:[[1603],256],65242:[[1603],256],65243:[[1603],256],65244:[[1603],256],65245:[[1604],256],65246:[[1604],256],65247:[[1604],256],65248:[[1604],256],65249:[[1605],256],65250:[[1605],256],65251:[[1605],256],65252:[[1605],256],65253:[[1606],256],65254:[[1606],256],65255:[[1606],256],65256:[[1606],256],65257:[[1607],256],65258:[[1607],256],65259:[[1607],256],65260:[[1607],256],65261:[[1608],256],65262:[[1608],256],65263:[[1609],256],65264:[[1609],256],65265:[[1610],256],65266:[[1610],256],65267:[[1610],256],65268:[[1610],256],65269:[[1604,1570],256],65270:[[1604,1570],256],65271:[[1604,1571],256],65272:[[1604,1571],256],65273:[[1604,1573],256],65274:[[1604,1573],256],65275:[[1604,1575],256],65276:[[1604,1575],256]}, -65280:{65281:[[33],256],65282:[[34],256],65283:[[35],256],65284:[[36],256],65285:[[37],256],65286:[[38],256],65287:[[39],256],65288:[[40],256],65289:[[41],256],65290:[[42],256],65291:[[43],256],65292:[[44],256],65293:[[45],256],65294:[[46],256],65295:[[47],256],65296:[[48],256],65297:[[49],256],65298:[[50],256],65299:[[51],256],65300:[[52],256],65301:[[53],256],65302:[[54],256],65303:[[55],256],65304:[[56],256],65305:[[57],256],65306:[[58],256],65307:[[59],256],65308:[[60],256],65309:[[61],256],65310:[[62],256],65311:[[63],256],65312:[[64],256],65313:[[65],256],65314:[[66],256],65315:[[67],256],65316:[[68],256],65317:[[69],256],65318:[[70],256],65319:[[71],256],65320:[[72],256],65321:[[73],256],65322:[[74],256],65323:[[75],256],65324:[[76],256],65325:[[77],256],65326:[[78],256],65327:[[79],256],65328:[[80],256],65329:[[81],256],65330:[[82],256],65331:[[83],256],65332:[[84],256],65333:[[85],256],65334:[[86],256],65335:[[87],256],65336:[[88],256],65337:[[89],256],65338:[[90],256],65339:[[91],256],65340:[[92],256],65341:[[93],256],65342:[[94],256],65343:[[95],256],65344:[[96],256],65345:[[97],256],65346:[[98],256],65347:[[99],256],65348:[[100],256],65349:[[101],256],65350:[[102],256],65351:[[103],256],65352:[[104],256],65353:[[105],256],65354:[[106],256],65355:[[107],256],65356:[[108],256],65357:[[109],256],65358:[[110],256],65359:[[111],256],65360:[[112],256],65361:[[113],256],65362:[[114],256],65363:[[115],256],65364:[[116],256],65365:[[117],256],65366:[[118],256],65367:[[119],256],65368:[[120],256],65369:[[121],256],65370:[[122],256],65371:[[123],256],65372:[[124],256],65373:[[125],256],65374:[[126],256],65375:[[10629],256],65376:[[10630],256],65377:[[12290],256],65378:[[12300],256],65379:[[12301],256],65380:[[12289],256],65381:[[12539],256],65382:[[12530],256],65383:[[12449],256],65384:[[12451],256],65385:[[12453],256],65386:[[12455],256],65387:[[12457],256],65388:[[12515],256],65389:[[12517],256],65390:[[12519],256],65391:[[12483],256],65392:[[12540],256],65393:[[12450],256],65394:[[12452],256],65395:[[12454],256],65396:[[12456],256],65397:[[12458],256],65398:[[12459],256],65399:[[12461],256],65400:[[12463],256],65401:[[12465],256],65402:[[12467],256],65403:[[12469],256],65404:[[12471],256],65405:[[12473],256],65406:[[12475],256],65407:[[12477],256],65408:[[12479],256],65409:[[12481],256],65410:[[12484],256],65411:[[12486],256],65412:[[12488],256],65413:[[12490],256],65414:[[12491],256],65415:[[12492],256],65416:[[12493],256],65417:[[12494],256],65418:[[12495],256],65419:[[12498],256],65420:[[12501],256],65421:[[12504],256],65422:[[12507],256],65423:[[12510],256],65424:[[12511],256],65425:[[12512],256],65426:[[12513],256],65427:[[12514],256],65428:[[12516],256],65429:[[12518],256],65430:[[12520],256],65431:[[12521],256],65432:[[12522],256],65433:[[12523],256],65434:[[12524],256],65435:[[12525],256],65436:[[12527],256],65437:[[12531],256],65438:[[12441],256],65439:[[12442],256],65440:[[12644],256],65441:[[12593],256],65442:[[12594],256],65443:[[12595],256],65444:[[12596],256],65445:[[12597],256],65446:[[12598],256],65447:[[12599],256],65448:[[12600],256],65449:[[12601],256],65450:[[12602],256],65451:[[12603],256],65452:[[12604],256],65453:[[12605],256],65454:[[12606],256],65455:[[12607],256],65456:[[12608],256],65457:[[12609],256],65458:[[12610],256],65459:[[12611],256],65460:[[12612],256],65461:[[12613],256],65462:[[12614],256],65463:[[12615],256],65464:[[12616],256],65465:[[12617],256],65466:[[12618],256],65467:[[12619],256],65468:[[12620],256],65469:[[12621],256],65470:[[12622],256],65474:[[12623],256],65475:[[12624],256],65476:[[12625],256],65477:[[12626],256],65478:[[12627],256],65479:[[12628],256],65482:[[12629],256],65483:[[12630],256],65484:[[12631],256],65485:[[12632],256],65486:[[12633],256],65487:[[12634],256],65490:[[12635],256],65491:[[12636],256],65492:[[12637],256],65493:[[12638],256],65494:[[12639],256],65495:[[12640],256],65498:[[12641],256],65499:[[12642],256],65500:[[12643],256],65504:[[162],256],65505:[[163],256],65506:[[172],256],65507:[[175],256],65508:[[166],256],65509:[[165],256],65510:[[8361],256],65512:[[9474],256],65513:[[8592],256],65514:[[8593],256],65515:[[8594],256],65516:[[8595],256],65517:[[9632],256],65518:[[9675],256]} + ret += uchar.toString(); + } + return ret; }; - /***** Module to export */ - var unorm = { - nfc: nfc, - nfd: nfd, - nfkc: nfkc, - nfkd: nfkd - }; +function nfd(str) { + return normalize('NFD', str); +} - module.exports = unorm; -}(this)); +function nfkd(str) { + return normalize('NFKD', str); +} + +function nfc(str) { + return normalize('NFC', str); +} + +function nfkc(str) { + return normalize('NFKC', str); +} + +exports.nfc = nfc; +exports.nfd = nfd; +exports.nfkc = nfkc; +exports.nfkd = nfkd; diff --git a/lib/mempool/fees.js b/lib/mempool/fees.js index c22c739d..678f8f5e 100644 --- a/lib/mempool/fees.js +++ b/lib/mempool/fees.js @@ -9,7 +9,6 @@ 'use strict'; const assert = require('assert'); -const util = require('../utils/util'); const binary = require('../utils/binary'); const consensus = require('../protocol/consensus'); const policy = require('../protocol/policy'); @@ -492,7 +491,7 @@ PolicyEstimator.prototype.removeTX = function removeTX(hash) { const item = this.map.get(hash); if (!item) { - this.logger.spam('Mempool tx %s not found.', util.revHex(hash)); + this.logger.spam('Mempool tx %s not found.', encoding.revHex(hash)); return; } diff --git a/lib/mempool/mempool.js b/lib/mempool/mempool.js index 972eaf3c..a1c85202 100644 --- a/lib/mempool/mempool.js +++ b/lib/mempool/mempool.js @@ -419,7 +419,7 @@ Mempool.prototype.limitSize = function limitSize(added) { const expiryTime = this.options.expiryTime; const now = util.now(); - let start = util.hrtime(); + let start = util.bench(); const queue = new Heap(cmpRate); for (const entry of this.map.values()) { @@ -443,9 +443,9 @@ Mempool.prototype.limitSize = function limitSize(added) { this.logger.debug( '(bench) Heap mempool traversal: %d.', - util.hrtime(start)); + util.bench(start)); - start = util.hrtime(); + start = util.bench(); this.logger.debug( '(bench) Heap mempool queue size: %d.', @@ -469,7 +469,7 @@ Mempool.prototype.limitSize = function limitSize(added) { this.logger.debug( '(bench) Heap mempool map removal: %d.', - util.hrtime(start)); + util.bench(start)); return !this.hasEntry(added); }; @@ -1677,7 +1677,7 @@ Mempool.prototype.limitOrphans = function limitOrphans() { assert(hash); - this.logger.debug('Removing orphan %s from mempool.', util.revHex(hash)); + this.logger.debug('Removing orphan %s from mempool.', encoding.revHex(hash)); this.removeOrphan(hash); @@ -2491,7 +2491,7 @@ MempoolCache.prototype.flush = async function flush() { MempoolCache.prototype.init = async function init(hash) { const batch = this.db.batch(); - batch.put(layout.V, encoding.U32(MempoolCache.VERSION)); + batch.put(layout.V, encoding.u32(MempoolCache.VERSION)); batch.put(layout.R, Buffer.from(hash, 'hex')); await batch.write(); }; @@ -2506,7 +2506,7 @@ MempoolCache.prototype.verify = async function verify() { this.logger.info( 'Mempool cache is empty. Writing tip %s.', - util.revHex(tip)); + encoding.revHex(tip)); await this.init(tip); } @@ -2526,7 +2526,7 @@ MempoolCache.prototype.verify = async function verify() { if (tip !== this.chain.tip.hash) { this.logger.warning( 'Mempool tip not consistent with chain tip (%s != %s)!', - util.revHex(tip), + encoding.revHex(tip), this.chain.tip.rhash()); this.logger.warning('Invalidating mempool cache.'); await this.wipe(); @@ -2543,7 +2543,7 @@ MempoolCache.prototype.wipe = async function wipe() { for (const key of keys) batch.del(key); - batch.put(layout.V, encoding.U32(MempoolCache.VERSION)); + batch.put(layout.V, encoding.u32(MempoolCache.VERSION)); batch.put(layout.R, Buffer.from(this.chain.tip.hash, 'hex')); batch.del(layout.F); diff --git a/lib/mining/cpuminer.js b/lib/mining/cpuminer.js index 3e39d2b5..9a476160 100644 --- a/lib/mining/cpuminer.js +++ b/lib/mining/cpuminer.js @@ -13,6 +13,7 @@ const co = require('../utils/co'); const AsyncObject = require('../utils/asyncobject'); const mine = require('./mine'); const Lock = require('../utils/lock'); +const encoding = require('../utils/encoding'); /** * CPU miner. @@ -411,7 +412,7 @@ CPUMiner.prototype.mineAsync = async function mineAsync(job) { CPUMiner.prototype.sendStatus = function sendStatus(job, nonce) { const attempt = job.attempt; - const tip = util.revHex(attempt.prevBlock); + const tip = encoding.revHex(attempt.prevBlock); const hashes = job.getHashes(nonce); const hashrate = job.getRate(nonce); diff --git a/lib/mining/template.js b/lib/mining/template.js index 0a642525..a11e8c34 100644 --- a/lib/mining/template.js +++ b/lib/mining/template.js @@ -8,7 +8,6 @@ 'use strict'; const assert = require('assert'); -const util = require('../utils/util'); const hash256 = require('bcrypto/lib/hash256'); const merkle = require('bcrypto/lib/merkle'); const StaticWriter = require('../utils/staticwriter'); @@ -664,7 +663,7 @@ function BlockProof(hash, root, nonce1, nonce2, time, nonce) { } BlockProof.prototype.rhash = function rhash() { - return util.revHex(this.hash.toString('hex')); + return encoding.revHex(this.hash.toString('hex')); }; BlockProof.prototype.verify = function verify(target) { diff --git a/lib/net/packets.js b/lib/net/packets.js index 4c25e3bd..d6d1b4b3 100644 --- a/lib/net/packets.js +++ b/lib/net/packets.js @@ -1574,7 +1574,7 @@ RejectPacket.fromOptions = function fromOptions(options) { */ RejectPacket.prototype.rhash = function rhash() { - return this.hash ? util.revHex(this.hash) : null; + return this.hash ? encoding.revHex(this.hash) : null; }; /** @@ -1758,7 +1758,7 @@ RejectPacket.fromError = function fromError(err, obj) { RejectPacket.prototype.inspect = function inspect() { const code = RejectPacket.codesByVal[this.code] || this.code; - const hash = this.hash ? util.revHex(this.hash) : null; + const hash = this.hash ? encoding.revHex(this.hash) : null; return ' 0) - hash = util.revHex(packet.locator[0]); + hash = encoding.revHex(packet.locator[0]); let end = null; if (stop) - end = util.revHex(stop); + end = encoding.revHex(stop); this.logger.debug( 'Requesting headers packet from peer with getheaders (%s).', @@ -2023,11 +2022,11 @@ Peer.prototype.sendGetBlocks = function sendGetBlocks(locator, stop) { let hash = null; if (packet.locator.length > 0) - hash = util.revHex(packet.locator[0]); + hash = encoding.revHex(packet.locator[0]); let end = null; if (stop) - end = util.revHex(stop); + end = encoding.revHex(stop); this.logger.debug( 'Requesting inv packet from peer with getblocks (%s).', @@ -2075,7 +2074,7 @@ Peer.prototype.sendReject = function sendReject(code, reason, msg, hash) { if (msg) { this.logger.debug('Rejecting %s %s (%s): code=%s reason=%s.', - msg, util.revHex(hash), this.hostname(), code, reason); + msg, encoding.revHex(hash), this.hostname(), code, reason); } else { this.logger.debug('Rejecting packet from %s: code=%s reason=%s.', this.hostname(), code, reason); diff --git a/lib/net/pool.js b/lib/net/pool.js index 36a18b3b..6f8a8502 100644 --- a/lib/net/pool.js +++ b/lib/net/pool.js @@ -33,6 +33,7 @@ const HostList = require('./hostlist'); const UPNP = require('./upnp'); const InvItem = require('../primitives/invitem'); const packets = require('./packets'); +const encoding = require('../utils/encoding'); const services = common.services; const invTypes = InvItem.types; const packetTypes = packets.types; @@ -248,7 +249,7 @@ Pool.prototype.resetChain = function resetChain() { this.headerChain.push(new HeaderEntry(tip.hash, tip.height)); this.logger.info( 'Initialized header chain to height %d (checkpoint=%s).', - tip.height, util.revHex(this.headerTip.hash)); + tip.height, encoding.revHex(this.headerTip.hash)); } }; @@ -2304,8 +2305,8 @@ Pool.prototype.resolveChain = async function resolveChain(peer, hash) { if (hash !== node.hash) { this.logger.warning( 'Header hash mismatch %s != %s (%s).', - util.revHex(hash), - util.revHex(node.hash), + encoding.revHex(hash), + encoding.revHex(node.hash), peer.hostname()); peer.destroy(); @@ -2317,7 +2318,7 @@ Pool.prototype.resolveChain = async function resolveChain(peer, hash) { if (node.height === this.headerTip.height) { this.logger.info( 'Received checkpoint %s (%d).', - util.revHex(node.hash), node.height); + encoding.revHex(node.hash), node.height); this.headerTip = this.getNextTip(node.height); @@ -2374,7 +2375,7 @@ Pool.prototype.handleBadOrphan = function handleBadOrphan(msg, err, id) { if (!peer) { this.logger.warning( 'Could not find offending peer for orphan: %s (%d).', - util.revHex(err.hash), id); + encoding.revHex(err.hash), id); return; } @@ -3462,7 +3463,7 @@ Pool.prototype.hasTX = function hasTX(hash) { // If we recently rejected this item. Ignore. if (this.mempool.hasReject(hash)) { - this.logger.spam('Saw known reject of %s.', util.revHex(hash)); + this.logger.spam('Saw known reject of %s.', encoding.revHex(hash)); return true; } } @@ -4330,7 +4331,7 @@ BroadcastItem.prototype.handleReject = function handleReject(peer) { BroadcastItem.prototype.inspect = function inspect() { const type = this.type === invTypes.TX ? 'tx' : 'block'; - const hash = util.revHex(this.hash); + const hash = encoding.revHex(this.hash); return ``; }; diff --git a/lib/node/http.js b/lib/node/http.js index d5c54e79..193ff76e 100644 --- a/lib/node/http.js +++ b/lib/node/http.js @@ -20,6 +20,7 @@ const random = require('bcrypto/lib/random'); const ccmp = require('bcrypto/lib/ccmp'); const Network = require('../protocol/network'); const Validator = require('../utils/validator'); +const encoding = require('../utils/encoding'); const pkg = require('../pkg'); class HTTP extends Server { @@ -292,7 +293,7 @@ class HTTP extends Server { const result = []; for (const hash of hashes) - result.push(util.revHex(hash)); + result.push(encoding.revHex(hash)); res.json(200, result); }); diff --git a/lib/node/rpc.js b/lib/node/rpc.js index b1045625..390baab2 100644 --- a/lib/node/rpc.js +++ b/lib/node/rpc.js @@ -464,7 +464,7 @@ class RPC extends RPCBase { offset = 0; for (const hash in peer.blockMap.keys()) { - const str = util.revHex(hash); + const str = encoding.revHex(hash); hashes.push(str); } @@ -490,7 +490,7 @@ class RPC extends RPCBase { subver: peer.agent, inbound: !peer.outbound, startingheight: peer.height, - besthash: peer.bestHash ? util.revHex(peer.bestHash) : null, + besthash: peer.bestHash ? encoding.revHex(peer.bestHash) : null, bestheight: peer.bestHeight, banscore: peer.banScore, inflight: hashes, @@ -694,7 +694,7 @@ class RPC extends RPCBase { if (!hash) throw new RPCError(errs.MISC_ERROR, 'Not found.'); - return util.revHex(hash); + return encoding.revHex(hash); } async getBlockHeader(args, help) { @@ -878,7 +878,7 @@ class RPC extends RPCBase { const hashes = this.mempool.getSnapshot(); - return hashes.map(util.revHex); + return hashes.map(encoding.revHex); } async getTXOut(args, help) { @@ -1017,7 +1017,7 @@ class RPC extends RPCBase { const out = []; for (const hash of tree.matches) - out.push(util.revHex(hash.toString('hex'))); + out.push(encoding.revHex(hash.toString('hex'))); return out; } @@ -1461,8 +1461,8 @@ class RPC extends RPCBase { vbavailable: vbavailable, vbrequired: 0, height: attempt.height, - previousblockhash: util.revHex(attempt.prevBlock), - target: util.revHex(attempt.target.toString('hex')), + previousblockhash: encoding.revHex(attempt.prevBlock), + target: encoding.revHex(attempt.target.toString('hex')), bits: hex32(attempt.bits), noncerange: '00000000ffffffff', curtime: attempt.time, @@ -2286,7 +2286,7 @@ class RPC extends RPCBase { if ((lastTX >>> 0) !== lastTX) throw new RPCError(errs.INVALID_PARAMETER, 'Invalid longpoll ID.'); - const hash = util.revHex(watched); + const hash = encoding.revHex(watched); if (this.chain.tip.hash !== hash) return; @@ -2699,16 +2699,16 @@ class RPC extends RPCBase { height: entry.height, version: entry.version, versionHex: hex32(entry.version), - merkleroot: util.revHex(entry.merkleRoot), + merkleroot: encoding.revHex(entry.merkleRoot), time: entry.time, mediantime: mtp, bits: entry.bits, difficulty: toDifficulty(entry.bits), chainwork: entry.chainwork.toString('hex', 64), previousblockhash: entry.prevBlock !== encoding.NULL_HASH - ? util.revHex(entry.prevBlock) + ? encoding.revHex(entry.prevBlock) : null, - nextblockhash: next ? util.revHex(next) : null + nextblockhash: next ? encoding.revHex(next) : null }; } @@ -2735,7 +2735,7 @@ class RPC extends RPCBase { height: entry.height, version: entry.version, versionHex: hex32(entry.version), - merkleroot: util.revHex(entry.merkleRoot), + merkleroot: encoding.revHex(entry.merkleRoot), coinbase: block.txs[0].inputs[0].script.toJSON(), tx: txs, time: entry.time, @@ -2744,9 +2744,9 @@ class RPC extends RPCBase { difficulty: toDifficulty(entry.bits), chainwork: entry.chainwork.toString('hex', 64), previousblockhash: entry.prevBlock !== encoding.NULL_HASH - ? util.revHex(entry.prevBlock) + ? encoding.revHex(entry.prevBlock) : null, - nextblockhash: next ? util.revHex(next) : null + nextblockhash: next ? encoding.revHex(next) : null }; } @@ -2765,7 +2765,7 @@ class RPC extends RPCBase { ancestorcount: this.mempool.countAncestors(entry), ancestorsize: 0, ancestorfees: 0, - depends: this.mempool.getDepends(entry.tx).map(util.revHex) + depends: this.mempool.getDepends(entry.tx).map(encoding.revHex) }; } } diff --git a/lib/primitives/abstractblock.js b/lib/primitives/abstractblock.js index e6d23e37..5bd37e24 100644 --- a/lib/primitives/abstractblock.js +++ b/lib/primitives/abstractblock.js @@ -8,7 +8,6 @@ 'use strict'; const assert = require('assert'); -const util = require('../utils/util'); const digest = require('bcrypto/lib/digest'); const BufferReader = require('../utils/reader'); const StaticWriter = require('../utils/staticwriter'); @@ -93,8 +92,8 @@ AbstractBlock.prototype.parseJSON = function parseJSON(json) { assert((json.nonce >>> 0) === json.nonce); this.version = json.version; - this.prevBlock = util.revHex(json.prevBlock); - this.merkleRoot = util.revHex(json.merkleRoot); + this.prevBlock = encoding.revHex(json.prevBlock); + this.merkleRoot = encoding.revHex(json.merkleRoot); this.time = json.time; this.bits = json.bits; this.nonce = json.nonce; @@ -244,7 +243,7 @@ AbstractBlock.prototype.verifyBody = function verifyBody() { */ AbstractBlock.prototype.rhash = function rhash() { - return util.revHex(this.hash('hex')); + return encoding.revHex(this.hash('hex')); }; /** diff --git a/lib/primitives/block.js b/lib/primitives/block.js index 02c0e43e..c3de9178 100644 --- a/lib/primitives/block.js +++ b/lib/primitives/block.js @@ -540,10 +540,10 @@ Block.prototype.format = function format(view, height) { virtualSize: this.getVirtualSize(), date: util.date(this.time), version: this.version.toString(16), - prevBlock: util.revHex(this.prevBlock), - merkleRoot: util.revHex(this.merkleRoot), + prevBlock: encoding.revHex(this.prevBlock), + merkleRoot: encoding.revHex(this.merkleRoot), commitmentHash: commitmentHash - ? util.revHex(commitmentHash) + ? encoding.revHex(commitmentHash) : null, time: this.time, bits: this.bits, @@ -583,8 +583,8 @@ Block.prototype.getJSON = function getJSON(network, view, height, depth) { height: height, depth: depth, version: this.version, - prevBlock: util.revHex(this.prevBlock), - merkleRoot: util.revHex(this.merkleRoot), + prevBlock: encoding.revHex(this.prevBlock), + merkleRoot: encoding.revHex(this.merkleRoot), time: this.time, bits: this.bits, nonce: this.nonce, diff --git a/lib/primitives/coin.js b/lib/primitives/coin.js index 0e75cc48..4e7833c7 100644 --- a/lib/primitives/coin.js +++ b/lib/primitives/coin.js @@ -8,7 +8,6 @@ 'use strict'; const assert = require('assert'); -const util = require('../utils/util'); const Amount = require('../btc/amount'); const Output = require('./output'); const Script = require('../script/script'); @@ -186,7 +185,7 @@ Coin.fromKey = function fromKey(key) { */ Coin.prototype.rhash = function rhash() { - return util.revHex(this.hash); + return encoding.revHex(this.hash); }; /** @@ -211,7 +210,7 @@ Coin.prototype.inspect = function inspect() { value: Amount.btc(this.value), script: this.script, coinbase: this.coinbase, - hash: this.hash ? util.revHex(this.hash) : null, + hash: this.hash ? encoding.revHex(this.hash) : null, index: this.index, address: this.getAddress() }; @@ -282,7 +281,7 @@ Coin.prototype.fromJSON = function fromJSON(json) { assert(typeof json.hash === 'string', 'Hash must be a string.'); assert(json.hash.length === 64, 'Hash must be a string.'); assert((json.index >>> 0) === json.index, 'Index must be a uint32.'); - this.hash = util.revHex(json.hash); + this.hash = encoding.revHex(json.hash); this.index = json.index; } diff --git a/lib/primitives/headers.js b/lib/primitives/headers.js index 36121118..5902f4d2 100644 --- a/lib/primitives/headers.js +++ b/lib/primitives/headers.js @@ -11,6 +11,7 @@ const util = require('../utils/util'); const AbstractBlock = require('./abstractblock'); const StaticWriter = require('../utils/staticwriter'); const BufferReader = require('../utils/reader'); +const encoding = require('../utils/encoding'); /** * Represents block headers obtained from the network via `headers`. @@ -198,8 +199,8 @@ Headers.prototype.getJSON = function getJSON(network, view, height) { hash: this.rhash(), height: height, version: this.version, - prevBlock: util.revHex(this.prevBlock), - merkleRoot: util.revHex(this.merkleRoot), + prevBlock: encoding.revHex(this.prevBlock), + merkleRoot: encoding.revHex(this.merkleRoot), time: this.time, bits: this.bits, nonce: this.nonce @@ -251,8 +252,8 @@ Headers.prototype.format = function format(view, height) { height: height != null ? height : -1, date: util.date(this.time), version: this.version.toString(16), - prevBlock: util.revHex(this.prevBlock), - merkleRoot: util.revHex(this.merkleRoot), + prevBlock: encoding.revHex(this.prevBlock), + merkleRoot: encoding.revHex(this.merkleRoot), time: this.time, bits: this.bits, nonce: this.nonce diff --git a/lib/primitives/invitem.js b/lib/primitives/invitem.js index 3d744c27..cca6b531 100644 --- a/lib/primitives/invitem.js +++ b/lib/primitives/invitem.js @@ -9,7 +9,7 @@ const BufferReader = require('../utils/reader'); const StaticWriter = require('../utils/staticwriter'); -const util = require('../utils/util'); +const encoding = require('../utils/encoding'); /** * Inv Item @@ -191,7 +191,7 @@ InvItem.prototype.hasWitness = function hasWitness() { */ InvItem.prototype.rhash = function rhash() { - return util.revHex(this.hash); + return encoding.revHex(this.hash); }; /* diff --git a/lib/primitives/merkleblock.js b/lib/primitives/merkleblock.js index 87785aea..2e13637b 100644 --- a/lib/primitives/merkleblock.js +++ b/lib/primitives/merkleblock.js @@ -303,8 +303,8 @@ MerkleBlock.prototype.format = function format(view, height) { height: height != null ? height : -1, date: util.date(this.time), version: this.version.toString(16), - prevBlock: util.revHex(this.prevBlock), - merkleRoot: util.revHex(this.merkleRoot), + prevBlock: encoding.revHex(this.prevBlock), + merkleRoot: encoding.revHex(this.merkleRoot), time: this.time, bits: this.bits, nonce: this.nonce, @@ -445,14 +445,14 @@ MerkleBlock.prototype.getJSON = function getJSON(network, view, height) { hash: this.rhash(), height: height, version: this.version, - prevBlock: util.revHex(this.prevBlock), - merkleRoot: util.revHex(this.merkleRoot), + prevBlock: encoding.revHex(this.prevBlock), + merkleRoot: encoding.revHex(this.merkleRoot), time: this.time, bits: this.bits, nonce: this.nonce, totalTX: this.totalTX, hashes: this.hashes.map((hash) => { - return util.revHex(hash.toString('hex')); + return encoding.revHex(hash.toString('hex')); }), flags: this.flags.toString('hex') }; @@ -473,7 +473,7 @@ MerkleBlock.prototype.fromJSON = function fromJSON(json) { this.parseJSON(json); for (let hash of json.hashes) { - hash = util.revHex(hash); + hash = encoding.revHex(hash); this.hashes.push(Buffer.from(hash, 'hex')); } diff --git a/lib/primitives/outpoint.js b/lib/primitives/outpoint.js index 1e10f121..d409e0cb 100644 --- a/lib/primitives/outpoint.js +++ b/lib/primitives/outpoint.js @@ -7,7 +7,6 @@ 'use strict'; const assert = require('assert'); -const util = require('../utils/util'); const StaticWriter = require('../utils/staticwriter'); const BufferReader = require('../utils/reader'); const encoding = require('../utils/encoding'); @@ -119,7 +118,7 @@ Outpoint.prototype.isNull = function isNull() { */ Outpoint.prototype.rhash = function rhash() { - return util.revHex(this.hash); + return encoding.revHex(this.hash); }; /** @@ -246,7 +245,7 @@ Outpoint.prototype.fromJSON = function fromJSON(json) { assert(json, 'Outpoint data is required.'); assert(typeof json.hash === 'string', 'Hash must be a string.'); assert((json.index >>> 0) === json.index, 'Index must be a uint32.'); - this.hash = util.revHex(json.hash); + this.hash = encoding.revHex(json.hash); this.index = json.index; return this; }; @@ -261,7 +260,7 @@ Outpoint.prototype.fromJSON = function fromJSON(json) { Outpoint.prototype.toJSON = function toJSON() { return { - hash: util.revHex(this.hash), + hash: encoding.revHex(this.hash), index: this.index }; }; diff --git a/lib/primitives/tx.js b/lib/primitives/tx.js index a248dd97..afade750 100644 --- a/lib/primitives/tx.js +++ b/lib/primitives/tx.js @@ -2012,7 +2012,7 @@ TX.prototype.isWatched = function isWatched(filter) { */ TX.prototype.rhash = function rhash() { - return util.revHex(this.hash('hex')); + return encoding.revHex(this.hash('hex')); }; /** @@ -2021,7 +2021,7 @@ TX.prototype.rhash = function rhash() { */ TX.prototype.rwhash = function rwhash() { - return util.revHex(this.witnessHash('hex')); + return encoding.revHex(this.witnessHash('hex')); }; /** @@ -2089,7 +2089,7 @@ TX.prototype.format = function format(view, entry, index) { if (entry) { height = entry.height; - block = util.revHex(entry.hash); + block = encoding.revHex(entry.hash); time = entry.time; date = util.date(time); } @@ -2157,7 +2157,7 @@ TX.prototype.getJSON = function getJSON(network, view, entry, index) { if (entry) { height = entry.height; - block = util.revHex(entry.hash); + block = encoding.revHex(entry.hash); time = entry.time; date = util.date(time); } diff --git a/lib/primitives/txmeta.js b/lib/primitives/txmeta.js index b8cfea2e..5773a322 100644 --- a/lib/primitives/txmeta.js +++ b/lib/primitives/txmeta.js @@ -11,6 +11,7 @@ const util = require('../utils/util'); const TX = require('./tx'); const StaticWriter = require('../utils/staticwriter'); const BufferReader = require('../utils/reader'); +const encoding = require('../utils/encoding'); /** * An extended transaction object. @@ -129,7 +130,7 @@ TXMeta.prototype.format = function format(view) { const data = this.tx.format(view, null, this.index); data.mtime = this.mtime; data.height = this.height; - data.block = this.block ? util.revHex(this.block) : null; + data.block = this.block ? encoding.revHex(this.block) : null; data.time = this.time; return data; }; @@ -155,7 +156,7 @@ TXMeta.prototype.getJSON = function getJSON(network, view, chainHeight) { const json = this.tx.getJSON(network, view, null, this.index); json.mtime = this.mtime; json.height = this.height; - json.block = this.block ? util.revHex(this.block) : null; + json.block = this.block ? encoding.revHex(this.block) : null; json.time = this.time; json.confirmations = 0; @@ -182,7 +183,7 @@ TXMeta.prototype.fromJSON = function fromJSON(json) { this.mtime = json.mtime; this.height = json.height; - this.block = util.revHex(json.block); + this.block = encoding.revHex(json.block); this.index = json.index; return this; diff --git a/lib/utils/encoding.js b/lib/utils/encoding.js index 81c7db34..af90305b 100644 --- a/lib/utils/encoding.js +++ b/lib/utils/encoding.js @@ -11,6 +11,7 @@ * @module utils/encoding */ +const assert = require('assert'); const {U64, I64} = require('./int64'); const UINT128_MAX = U64.UINT64_MAX.shrn(7); const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; @@ -383,24 +384,24 @@ encoding.writeI64BEN = function writeI64BEN(dst, num, off) { encoding.readVarint = function readVarint(data, off) { let value, size; - assert(off < data.length, off); + check(off < data.length, off); switch (data[off]) { case 0xff: size = 9; - assert(off + size <= data.length, off); + check(off + size <= data.length, off); value = encoding.readU64(data, off + 1); enforce(value > 0xffffffff, off, 'Non-canonical varint'); break; case 0xfe: size = 5; - assert(off + size <= data.length, off); + check(off + size <= data.length, off); value = data.readUInt32LE(off + 1, true); enforce(value > 0xffff, off, 'Non-canonical varint'); break; case 0xfd: size = 3; - assert(off + size <= data.length, off); + check(off + size <= data.length, off); value = data[off + 1] | (data[off + 2] << 8); enforce(value >= 0xfd, off, 'Non-canonical varint'); break; @@ -475,11 +476,11 @@ encoding.sizeVarint = function sizeVarint(num) { */ encoding.readVarintN = function readVarintN(data, off) { - assert(off < data.length, off); + check(off < data.length, off); if (data[off] === 0xff) { const size = 9; - assert(off + size <= data.length, off); + check(off + size <= data.length, off); const value = encoding.readU64N(data, off + 1); enforce(value.hi !== 0, off, 'Non-canonical varint'); return new Varint(size, value); @@ -536,7 +537,7 @@ encoding.readVarint2 = function readVarint2(data, off) { let size = 0; for (;;) { - assert(off < data.length, off); + check(off < data.length, off); const ch = data[off++]; size++; @@ -579,7 +580,7 @@ encoding.writeVarint2 = function writeVarint2(dst, num, off) { len++; } - assert(off + len + 1 <= dst.length, off); + check(off + len + 1 <= dst.length, off); do { dst[off++] = tmp[len]; @@ -621,7 +622,7 @@ encoding.readVarint2N = function readVarint2N(data, off) { let size = 0; for (;;) { - assert(off < data.length, off); + check(off < data.length, off); const ch = data[off++]; size++; @@ -709,7 +710,7 @@ encoding.sizeVarint2N = function sizeVarint2N(num) { * @returns {Buffer} */ -encoding.U8 = function U8(num) { +encoding.u8 = function u8(num) { const data = Buffer.allocUnsafe(1); data[0] = num >>> 0; return data; @@ -721,24 +722,12 @@ encoding.U8 = function U8(num) { * @returns {Buffer} */ -encoding.U32 = function U32(num) { +encoding.u32 = function u32(num) { const data = Buffer.allocUnsafe(4); data.writeUInt32LE(num, 0, true); return data; }; -/** - * Serialize number as a u32be. - * @param {Number} num - * @returns {Buffer} - */ - -encoding.U32BE = function U32BE(num) { - const data = Buffer.allocUnsafe(4); - data.writeUInt32BE(num, 0, true); - return data; -}; - /** * Get size of varint-prefixed bytes. * @param {Buffer} data @@ -774,6 +763,26 @@ encoding.sizeVarString = function sizeVarString(str, enc) { return encoding.sizeVarint(len) + len; }; +/** + * Reverse a hex-string (used because of + * bitcoind's affinity for uint256le). + * @param {String} str - Hex string. + * @returns {String} Reversed hex string. + */ + +encoding.revHex = function revHex(str) { + assert(typeof str === 'string'); + assert(str.length > 0); + assert(str.length % 2 === 0); + + let out = ''; + + for (let i = str.length - 2; i >= 0; i -= 2) + out += str[i] + str[i + 1]; + + return out; +}; + /** * EncodingError * @constructor @@ -846,9 +855,9 @@ function Varint(size, value) { this.value = value; } -function assert(value, offset) { +function check(value, offset) { if (!value) - throw new encoding.EncodingError(offset, 'Out of bounds read', assert); + throw new encoding.EncodingError(offset, 'Out of bounds read', check); } function enforce(value, offset, reason) { diff --git a/lib/utils/util.js b/lib/utils/util.js index ed9c1364..2719ce16 100644 --- a/lib/utils/util.js +++ b/lib/utils/util.js @@ -7,8 +7,6 @@ 'use strict'; -const assert = require('assert'); - /** * @exports utils/util */ @@ -21,7 +19,7 @@ const util = exports; * @returns {Array} [seconds, nanoseconds] */ -util.hrtime = function hrtime(time) { +util.bench = function bench(time) { if (!process.hrtime) { const now = Date.now(); @@ -84,23 +82,3 @@ util.time = function time(date) { return new Date(date) / 1000 | 0; }; - -/** - * Reverse a hex-string (used because of - * bitcoind's affinity for uint256le). - * @param {String} data - Hex string. - * @returns {String} Reversed hex string. - */ - -util.revHex = function revHex(data) { - assert(typeof data === 'string'); - assert(data.length > 0); - assert(data.length % 2 === 0); - - let out = ''; - - for (let i = 0; i < data.length; i += 2) - out = data.slice(i, i + 2) + out; - - return out; -}; diff --git a/lib/wallet/client.js b/lib/wallet/client.js index c8205369..3e6fbe5d 100644 --- a/lib/wallet/client.js +++ b/lib/wallet/client.js @@ -11,14 +11,14 @@ const assert = require('assert'); const {NodeClient} = require('bclient'); const TX = require('../primitives/tx'); const hash256 = require('bcrypto/lib/hash256'); -const util = require('../utils/util'); +const encoding = require('../utils/encoding'); const parsers = { 'block connect': (entry, txs) => parseBlock(entry, txs), 'block disconnect': entry => [parseEntry(entry)], 'block rescan': (entry, txs) => parseBlock(entry, txs), 'chain reset': entry => [parseEntry(entry)], - 'tx': tx => [TX.fromRaw(tx)], + 'tx': tx => [TX.fromRaw(tx)] }; class WalletClient extends NodeClient { @@ -58,7 +58,7 @@ class WalletClient extends NodeClient { async getEntry(block) { if (typeof block === 'string') - block = util.revHex(block); + block = encoding.revHex(block); return parseEntry(await super.getEntry(block)); } @@ -73,7 +73,7 @@ class WalletClient extends NodeClient { async rescan(start) { if (typeof start === 'string') - start = util.revHex(start); + start = encoding.revHex(start); return super.rescan(start); } diff --git a/lib/wallet/records.js b/lib/wallet/records.js index 3e28a747..e682c5e1 100644 --- a/lib/wallet/records.js +++ b/lib/wallet/records.js @@ -145,7 +145,7 @@ BlockMeta.prototype.fromEntry = function fromEntry(entry) { */ BlockMeta.prototype.fromJSON = function fromJSON(json) { - this.hash = util.revHex(json.hash); + this.hash = encoding.revHex(json.hash); this.height = json.height; this.time = json.time; return this; @@ -216,7 +216,7 @@ BlockMeta.prototype.toRaw = function toRaw() { BlockMeta.prototype.toJSON = function toJSON() { return { - hash: util.revHex(this.hash), + hash: encoding.revHex(this.hash), height: this.height, time: this.time }; diff --git a/lib/wallet/rpc.js b/lib/wallet/rpc.js index f95f20d7..bb5b779f 100644 --- a/lib/wallet/rpc.js +++ b/lib/wallet/rpc.js @@ -316,7 +316,7 @@ class RPC extends RPCBase { format('# Wallet Dump created by Bcoin %s', pkg.version), format('# * Created on %s', time), format('# * Best block at time of backup was %d (%s).', - tip.height, util.revHex(tip.hash)), + tip.height, encoding.revHex(tip.hash)), format('# * File: %s', file), '' ]; @@ -632,10 +632,10 @@ class RPC extends RPCBase { return { amount: Amount.btc(receive ? received : -sent, true), confirmations: details.confirmations, - blockhash: details.block ? util.revHex(details.block) : null, + blockhash: details.block ? encoding.revHex(details.block) : null, blockindex: details.index, blocktime: details.time, - txid: util.revHex(details.hash), + txid: encoding.revHex(details.hash), walletconflicts: [], time: details.mtime, timereceived: details.mtime, @@ -1057,7 +1057,7 @@ class RPC extends RPCBase { return { transactions: out, lastblock: highest && highest.block - ? util.revHex(highest.block) + ? encoding.revHex(highest.block) : encoding.NULL_HASH }; } @@ -1123,10 +1123,10 @@ class RPC extends RPCBase { label: member.path ? member.path.name : undefined, vout: index, confirmations: details.getDepth(), - blockhash: details.block ? util.revHex(details.block) : null, + blockhash: details.block ? encoding.revHex(details.block) : null, blockindex: details.index, blocktime: details.time, - txid: util.revHex(details.hash), + txid: encoding.revHex(details.hash), walletconflicts: [], time: details.mtime, timereceived: details.mtime, diff --git a/lib/wallet/txdb.js b/lib/wallet/txdb.js index 872c7205..487fc8b9 100644 --- a/lib/wallet/txdb.js +++ b/lib/wallet/txdb.js @@ -2509,9 +2509,9 @@ Details.prototype.toJSON = function toJSON(network, height) { const rate = this.getRate(fee); return { - hash: util.revHex(this.hash), + hash: encoding.revHex(this.hash), height: this.height, - block: this.block ? util.revHex(this.block) : null, + block: this.block ? encoding.revHex(this.block) : null, time: this.time, mtime: this.mtime, date: util.date(this.time), @@ -2702,10 +2702,10 @@ BlockRecord.prototype.toArray = function toArray() { BlockRecord.prototype.toJSON = function toJSON() { return { - hash: util.revHex(this.hash), + hash: encoding.revHex(this.hash), height: this.height, time: this.time, - hashes: this.toArray().map(util.revHex) + hashes: this.toArray().map(encoding.revHex) }; }; diff --git a/lib/wallet/walletdb.js b/lib/wallet/walletdb.js index 435eec1d..d39fcc77 100644 --- a/lib/wallet/walletdb.js +++ b/lib/wallet/walletdb.js @@ -11,7 +11,6 @@ const assert = require('assert'); const path = require('path'); const BDB = require('bdb'); const AsyncObject = require('../utils/asyncobject'); -const util = require('../utils/util'); const Lock = require('../utils/lock'); const MappedLock = require('../utils/mappedlock'); const encoding = require('../utils/encoding'); @@ -34,7 +33,7 @@ const ChainState = records.ChainState; const BlockMeta = records.BlockMeta; const TXRecord = records.TXRecord; const MapRecord = records.MapRecord; -const U32 = encoding.U32; +const u32 = encoding.u32; /** * WalletDB @@ -723,7 +722,7 @@ WalletDB.prototype.save = function save(b, wallet) { const id = wallet.id; b.put(layout.w(wid), wallet.toRaw()); - b.put(layout.l(id), U32(wid)); + b.put(layout.l(id), u32(wid)); }; /** @@ -953,7 +952,7 @@ WalletDB.prototype.saveAccount = function saveAccount(b, account) { b.put(layout.a(wid, index), account.toRaw()); // Name->Index lookups - b.put(layout.i(wid, name), U32(index)); + b.put(layout.i(wid, name), u32(index)); // Index->Name lookups b.put(layout.n(wid, index), Buffer.from(name, 'ascii')); @@ -1755,7 +1754,7 @@ WalletDB.prototype._addBlock = async function _addBlock(entry, txs) { if (total > 0) { this.logger.info('Connected WalletDB block %s (tx=%d).', - util.revHex(tip.hash), total); + encoding.revHex(tip.hash), total); } return total; @@ -1823,7 +1822,7 @@ WalletDB.prototype._removeBlock = async function _removeBlock(entry) { await this.setTip(prev); this.logger.warning('Disconnected wallet block %s (tx=%d).', - util.revHex(tip.hash), total); + encoding.revHex(tip.hash), total); return total; }; diff --git a/migrate/chaindb2to3.js b/migrate/chaindb2to3.js index 98a910de..d35d0ff6 100644 --- a/migrate/chaindb2to3.js +++ b/migrate/chaindb2to3.js @@ -19,7 +19,6 @@ const assert = require('assert'); const BDB = require('bdb'); const encoding = require('../lib/utils/encoding'); const co = require('../lib/utils/co'); -const util = require('../lib/utils/util'); const digest = require('bcrypto/lib/digest'); const BN = require('bcrypto/lib/bn'); const StaticWriter = require('../lib/utils/staticwriter'); @@ -132,7 +131,8 @@ async function reserializeUndo(hash) { if (hash !== encoding.NULL_HASH) tip = await getEntry(hash); - console.log('Reserializing undo coins from tip %s.', util.revHex(tip.hash)); + console.log('Reserializing undo coins from tip %s.', + encoding.revHex(tip.hash)); let batch = db.batch(); let pruning = false; @@ -143,7 +143,7 @@ async function reserializeUndo(hash) { if (shouldPrune) { if (tip.height < height - 288) { console.log('Pruning block %s (%d).', - util.revHex(tip.hash), tip.height); + encoding.revHex(tip.hash), tip.height); batch.del(pair('u', tip.hash)); batch.del(pair('b', tip.hash)); @@ -186,7 +186,7 @@ async function reserializeUndo(hash) { console.log( 'Reserializing coins for block %s (%d).', - util.revHex(tip.hash), tip.height); + encoding.revHex(tip.hash), tip.height); for (let i = block.txs.length - 1; i >= 1; i--) { const tx = block.txs[i]; @@ -314,7 +314,7 @@ async function reserializeCoins(hash) { start = false; } - console.log('Reserializing coins from %s.', util.revHex(hash)); + console.log('Reserializing coins from %s.', encoding.revHex(hash)); let batch = db.batch(); let total = 0; @@ -389,7 +389,7 @@ async function reserializeEntries(hash) { assert(item.key.equals(pair('e', hash))); } - console.log('Reserializing entries from %s.', util.revHex(hash)); + console.log('Reserializing entries from %s.', encoding.revHex(hash)); const tip = await getTipHash(); diff --git a/migrate/ensure-tip-index.js b/migrate/ensure-tip-index.js index 906de391..093c605b 100644 --- a/migrate/ensure-tip-index.js +++ b/migrate/ensure-tip-index.js @@ -5,7 +5,6 @@ const BDB = require('bdb'); const encoding = require('../lib/utils/encoding'); const BufferReader = require('../lib/utils/reader'); const digest = require('bcrypto/lib/digest'); -const util = require('../lib/utils/util'); const BN = require('bcrypto/lib/bn'); const DUMMY = Buffer.from([0]); @@ -114,7 +113,7 @@ async function indexTips() { for (let i = 0; i < tips.length; i++) { const tip = tips[i]; - console.log('Indexing chain tip: %s.', util.revHex(tip)); + console.log('Indexing chain tip: %s.', encoding.revHex(tip)); batch.put(pair('p', tip), DUMMY); } } diff --git a/test/bip70-test.js b/test/bip70-test.js deleted file mode 100644 index 1e63ce2e..00000000 --- a/test/bip70-test.js +++ /dev/null @@ -1,215 +0,0 @@ -/* eslint-env mocha */ -/* eslint prefer-arrow-callback: "off" */ - -'use strict'; - -const assert = require('./util/assert'); -const util = require('../lib/utils/util'); -const bip70 = require('../lib/bip70'); -const Address = require('../lib/primitives/address'); -const x509 = bip70.x509; - -const tests = require('./data/bip70.json'); - -tests.valid = Buffer.from(tests.valid, 'hex'); -tests.invalid = Buffer.from(tests.invalid, 'hex'); -tests.untrusted = Buffer.from(tests.untrusted, 'hex'); -tests.ack = Buffer.from(tests.ack, 'hex'); -tests.ca = { - crt: Buffer.from(tests.ca.crt, 'hex'), - priv: Buffer.from(tests.ca.priv, 'hex'), - pub: Buffer.from(tests.ca.pub, 'hex') -}; - -x509.allowUntrusted = true; -x509.trusted.clear(); - -x509.verifyTime = function() { - return true; -}; - -function testRequest(data) { - const req = bip70.PaymentRequest.fromRaw(data); - - assert.strictEqual(req.pkiType, 'x509+sha256'); - assert(req.pkiData); - assert(req.getChain()); - assert(req.paymentDetails); - assert(req.paymentDetails.memo.length !== 0); - assert(req.paymentDetails.paymentUrl.length !== 0); - - assert.bufferEqual(req.toRaw(), data); - assert(req.verify()); -} - -describe('BIP70', function() { - it('should parse and verify a payment request', () => { - testRequest(tests.valid); - testRequest(tests.invalid); - testRequest(tests.untrusted); - }); - - it('should verify cert chain', () => { - const req1 = bip70.PaymentRequest.fromRaw(tests.valid); - - assert.strictEqual(req1.version, 1); - assert.strictEqual(req1.getChain().length, 4); - assert.strictEqual(req1.paymentDetails.paymentUrl, - 'https://test.bitpay.com/i/CMWpuFsjgmQ2ZLiyGfcF1W'); - assert.strictEqual(req1.paymentDetails.network, 'test'); - assert.strictEqual(req1.paymentDetails.time, 1408645830); - assert.strictEqual(req1.paymentDetails.expires, 1408646730); - assert.strictEqual(req1.paymentDetails.outputs.length, 1); - assert(!req1.paymentDetails.merchantData); - assert(req1.paymentDetails.isExpired()); - - assert(req1.verifyChain()); - - const req2 = bip70.PaymentRequest.fromRaw(tests.invalid); - - assert.strictEqual(req2.version, 1); - assert.strictEqual(req2.getChain().length, 3); - assert.strictEqual(req2.paymentDetails.paymentUrl, - 'https://bitpay.com/i/PAQtNxX7KL8BtJBnfXyTaH'); - assert.strictEqual(req2.paymentDetails.network, 'main'); - assert.strictEqual(req2.paymentDetails.time, 1442409238); - assert.strictEqual(req2.paymentDetails.expires, 1442410138); - assert.strictEqual(req2.paymentDetails.outputs.length, 1); - assert.strictEqual(req2.paymentDetails.merchantData.length, 76); - assert(req2.paymentDetails.getData('json')); - assert(req2.paymentDetails.isExpired()); - - assert(req2.verifyChain()); - - req2.paymentDetails.setData({foo:1}, 'json'); - assert.strictEqual(req2.paymentDetails.merchantData.length, 9); - assert.deepStrictEqual(req2.paymentDetails.getData('json'), {foo:1}); - assert(!req2.verify()); - - const req3 = bip70.PaymentRequest.fromRaw(tests.untrusted); - - assert.strictEqual(req3.version, -1); - assert.strictEqual(req3.getChain().length, 2); - assert.strictEqual(req3.paymentDetails.paymentUrl, - 'https://www.coinbase.com/rp/55f9ca703d5d80008c0001f4'); - assert.strictEqual(req3.paymentDetails.network, null); - assert.strictEqual(req3.paymentDetails.time, 1442433682); - assert.strictEqual(req3.paymentDetails.expires, 1442434548); - assert.strictEqual(req3.paymentDetails.outputs.length, 1); - assert.strictEqual(req3.paymentDetails.merchantData.length, 32); - assert.strictEqual(req3.paymentDetails.getData('utf8'), - 'bb79b6f2310e321bd3b1d929edbeb358'); - assert(req3.paymentDetails.isExpired()); - - assert(req3.verifyChain()); - }); - - it('should fail to verify cert signatures when enforcing trust', () => { - x509.allowUntrusted = false; - - const req1 = bip70.PaymentRequest.fromRaw(tests.valid); - assert(!req1.verifyChain()); - - const req2 = bip70.PaymentRequest.fromRaw(tests.invalid); - assert(!req2.verifyChain()); - - const req3 = bip70.PaymentRequest.fromRaw(tests.untrusted); - assert(!req3.verifyChain()); - }); - - it('should verify cert signatures once root cert is added', () => { - const req1 = bip70.PaymentRequest.fromRaw(tests.valid); - x509.setTrust([req1.getChain().pop()]); - assert(req1.verifyChain()); - - const req2 = bip70.PaymentRequest.fromRaw(tests.untrusted); - assert(!req2.verifyChain()); - }); - - it('should still fail to verify cert signatures for invalid', () => { - const req = bip70.PaymentRequest.fromRaw(tests.invalid); - assert(!req.verifyChain()); - }); - - it('should get chain and ca for request', () => { - const req = bip70.PaymentRequest.fromRaw(tests.valid); - assert.strictEqual(req.getChain().length, 4); - assert.strictEqual(req.getCA().name, - 'Go Daddy Class 2 Certification Authority'); - }); - - it('should validate untrusted once again', () => { - const req1 = bip70.PaymentRequest.fromRaw(tests.untrusted); - x509.setTrust([req1.getChain().pop()]); - - const req2 = bip70.PaymentRequest.fromRaw(tests.untrusted); - assert(req2.verifyChain()); - assert.strictEqual(req2.getCA().name, - 'DigiCert SHA2 Extended Validation Server CA'); - }); - - it('should parse a payment ack', () => { - const ack = bip70.PaymentACK.fromRaw(tests.ack); - assert.strictEqual(ack.memo.length, 95); - assert.strictEqual(ack.memo, 'Transaction received by BitPay.' - + ' Invoice will be marked as paid if the transaction is confirmed.'); - assert.bufferEqual(ack.toRaw(), tests.ack); - }); - - it('should create a payment request, sign, and verify', () => { - const req = new bip70.PaymentRequest({ - version: 25, - paymentDetails: { - network: 'testnet', - paymentUrl: 'http://bcoin.io/payment', - memo: 'foobar', - time: util.now(), - expires: util.now() + 3600, - outputs: [ - { value: 10000, address: new Address() }, - { value: 50000, address: new Address() } - ], - merchantData: { foo: 'bar' } - } - }); - - assert.strictEqual(req.pkiType, null); - assert(!req.pkiData); - assert.strictEqual(req.getChain().length, 0); - assert(req.paymentDetails); - assert(req.paymentDetails.memo.length !== 0); - assert(req.paymentDetails.paymentUrl.length !== 0); - assert.deepStrictEqual(req.paymentDetails.getData('json'), {foo:'bar'}); - - assert.strictEqual(req.version, 25); - assert.strictEqual(req.paymentDetails.paymentUrl, - 'http://bcoin.io/payment'); - assert.strictEqual(req.paymentDetails.network, 'testnet'); - assert(req.paymentDetails.time <= util.now()); - assert.strictEqual(req.paymentDetails.expires, - req.paymentDetails.time + 3600); - assert.strictEqual(req.paymentDetails.outputs.length, 2); - assert(req.paymentDetails.merchantData); - assert(!req.paymentDetails.isExpired()); - - assert(!req.pkiData); - req.setChain([tests.ca.crt]); - req.sign(tests.ca.priv); - - assert(req.pkiData); - assert.strictEqual(req.pkiType, 'x509+sha256'); - assert.strictEqual(req.getChain().length, 1); - - assert(req.verify()); - assert(!req.verifyChain()); - - testRequest(req.toRaw()); - - x509.setTrust([tests.ca.crt]); - assert(req.verifyChain()); - assert.strictEqual(req.getCA().name, 'JJs CA'); - - req.version = 24; - assert(!req.verify()); - }); -}); diff --git a/test/data/bip70.json b/test/data/bip70.json deleted file mode 100644 index b989691f..00000000 --- a/test/data/bip70.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "valid": "0801120b783530392b7368613235361a89250aa40a3082052030820408a003020102020727a49d05046d62300d06092a864886f70d01010b05003081b4310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e312d302b060355040b1324687474703a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f313330310603550403132a476f2044616464792053656375726520436572746966696361746520417574686f72697479202d204732301e170d3134303432363132333532365a170d3136303432363132333532365a303a3121301f060355040b1318446f6d61696e20436f6e74726f6c2056616c6964617465643115301306035504030c0c2a2e6269747061792e636f6d30820122300d06092a864886f70d01010105000382010f003082010a0282010100e2a5dd4aea959c1d0fb016e6e05bb7011e741cdc61918c61f9625a2f682f485f0e862ea63db61cc9161753127504de800604df36b10f46cb17ab6cb99dba8aa45a36adfb901a2fc380c89e234bce18de6639b883e9339801673efaee1f2df77eeb82f7c39c96a2f8ef4572b634c203d9be8fd1e0036d32fb38b6b9b5ecd5a0684345c7e9ffc5d26bc6fd69aa6619f77badaa4bfb989478fb2f41aa92782e40b34ba9ac4549a4e6fda76b5fc4a581853bd0de5fb5a2c6dfdc12cdfadb54e9636a6d1223705924b8be566b81ac7921078cf590a146ae397a84908ef4fc83ff5715a44ab59e9258674d90113bb607b8d81eb268e4c6ce849497c76521795b0873950203010001a38201ae308201aa300f0603551d130101ff04053003010100301d0603551d250416301406082b0601050507030106082b06010505070302300e0603551d0f0101ff0404030205a030360603551d1f042f302d302ba029a0278625687474703a2f2f63726c2e676f64616464792e636f6d2f676469673273312d34392e63726c30530603551d20044c304a3048060b6086480186fd6d010717013039303706082b06010505070201162b687474703a2f2f6365727469666963617465732e676f64616464792e636f6d2f7265706f7369746f72792f307606082b06010505070101046a3068302406082b060105050730018618687474703a2f2f6f6373702e676f64616464792e636f6d2f304006082b060105050730028634687474703a2f2f6365727469666963617465732e676f64616464792e636f6d2f7265706f7369746f72792f67646967322e637274301f0603551d2304183016801440c2bd278ecc348330a233d7fb6cb3f0b42c80ce30230603551d11041c301a820c2a2e6269747061792e636f6d820a6269747061792e636f6d301d0603551d0e0416041485454e3b4072e2f58e377438988b5229387e967a300d06092a864886f70d01010b050003820101002d0a7ef97f988905ebbbad4e9ffb690352535211d6792516119838b55f24ff9fa4e93b6187b8517cbb0477457d3378078ef66057abe41bcafeb142ec52443a94b88114fa069f725c6198581d97af16352727f4f35e7f2110faa41a0511bcfdf8e3f4a3a310278c150b10f32a962c81e8f3d5374d9cb56d893027ff4fa4e3c3e6384c1f1557ceea6fca9cbc0c110748c08b82d8f0ed9a579637ee43a2d8fec3b5b04d1f3c8f1a3e2088da2274b6bc60948bbe744a7f8b942b41f0ae9b4afaeefbb7e0f04a0587b52efb6ebfa2d970b9de56a068575e4bf0cf824618dc17bbeaa2cdd25d65970a9f1a06fc9fffb466a10c9568cd651795bc2c7996975027bdbaba0ad409308204d0308203b8a003020102020107300d06092a864886f70d01010b0500308183310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e3131302f06035504031328476f20446164647920526f6f7420436572746966696361746520417574686f72697479202d204732301e170d3131303530333037303030305a170d3331303530333037303030305a3081b4310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e312d302b060355040b1324687474703a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f313330310603550403132a476f2044616464792053656375726520436572746966696361746520417574686f72697479202d20473230820122300d06092a864886f70d01010105000382010f003082010a0282010100b9e0cb10d4af76bdd49362eb3064b881086cc304d962178e2fff3e65cf8fce62e63c521cda16454b55ab786b63836290ce0f696c99c81a148b4ccc4533ea88dc9ea3af2bfe80619d7957c4cf2ef43f303c5d47fc9a16bcc3379641518e114b54f828bed08cbef030381ef3b026f86647636dde7126478f384753d1461db4e3dc00ea45acbdbc71d9aa6f00dbdbcd303a794f5f4c47f81def5bc2c49d603bb1b24391d8a4334eeab3d6274fad258aa5c6f4d5d0a6ae7405645788b54455d42d2a3a3ef8b8bde9320a029464c4163a50f14aaee77933af0c20077fe8df0439c269026c6352fa77c11bc87487c8b993185054354b694ebc3bd3492e1fdcc1d252fb0203010001a382011a30820116300f0603551d130101ff040530030101ff300e0603551d0f0101ff040403020106301d0603551d0e0416041440c2bd278ecc348330a233d7fb6cb3f0b42c80ce301f0603551d230418301680143a9a8507106728b6eff6bd05416e20c194da0fde303406082b0601050507010104283026302406082b060105050730018618687474703a2f2f6f6373702e676f64616464792e636f6d2f30350603551d1f042e302c302aa028a0268624687474703a2f2f63726c2e676f64616464792e636f6d2f6764726f6f742d67322e63726c30460603551d20043f303d303b0604551d20003033303106082b06010505070201162568747470733a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f300d06092a864886f70d01010b05000382010100087e6c9310c838b896a9904bffa15f4f04ef6c3e9c8806c9508fa673f757311bbebce42fdbf8bad35be0b4e7e679620e0ca2d76a637331b5f5a848a43b082da25d90d7b47c254f115630c4b6449d7b2c9de55ee6ef0c61aabfe42a1bee849eb8837dc143ce44a713700d911ff4c813ad8360d9d872a873241eb5ac220eca17896258441bab892501000fcdc41b62db51b4d30f512a9bf4bc73fc76ce36a4cdd9d82ceaae9bf52ab290d14d75188a3f8a4190237d5b4bfea403589b46b2c3606083f87d5041cec2a190c3bbef022fd21554ee4415d90aaea78a33edb12d763626dc04eb9ff7611f15dc876fee469628ada1267d0a09a72e04a38dbcf8bc0430010a81093082047d30820365a00302010202031be715300d06092a864886f70d01010b05003063310b30090603550406130255533121301f060355040a131854686520476f2044616464792047726f75702c20496e632e3131302f060355040b1328476f20446164647920436c61737320322043657274696669636174696f6e20417574686f72697479301e170d3134303130313037303030305a170d3331303533303037303030305a308183310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e3131302f06035504031328476f20446164647920526f6f7420436572746966696361746520417574686f72697479202d20473230820122300d06092a864886f70d01010105000382010f003082010a0282010100bf716208f1fa5934f71bc918a3f7804958e9228313a6c52043013b84f1e685499f27eaf6841b4ea0b4db7098c73201b1053e074eeef4fa4f2f593022e7ab19566be28007fcf316758039517be5f935b6744ea98d8213e4b63fa90383faa2be8a156a7fde0bc3b6191405caeac3a804943b467c320df3006622c88d696d368c1118b7d3b21c60b438fa028cced3dd4607de0a3eeb5d7cc87cfbb02b53a4926269512505611a44818c2ca9439623dfac3a819a0e29c51ca9e95d1eb69e9e300a39cef18880fb4b5dcc32ec85624325340256270191b43b702a3f6eb1e89c88017d9fd4f9db536d609dbf2ce758abb85f46fccec41b033c09eb49315c6946b3e0470203010001a382011730820113300f0603551d130101ff040530030101ff300e0603551d0f0101ff040403020106301d0603551d0e041604143a9a8507106728b6eff6bd05416e20c194da0fde301f0603551d23041830168014d2c4b0d291d44c1171b361cb3da1fedda86ad4e3303406082b0601050507010104283026302406082b060105050730018618687474703a2f2f6f6373702e676f64616464792e636f6d2f30320603551d1f042b30293027a025a0238621687474703a2f2f63726c2e676f64616464792e636f6d2f6764726f6f742e63726c30460603551d20043f303d303b0604551d20003033303106082b06010505070201162568747470733a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f300d06092a864886f70d01010b05000382010100590b53bd928611a7247bed5b31cf1d1f6c70c5b86ebe4ebbf6be9750e1307fba285c6294c2e37e33f7fb427685db951c8c225875090c886567390a1609c5a03897a4c523933fb418a601064491e3a76927b45a257f3ab732cddd84ff2a382933a4dd67b285fea188201c5089c8dc2af64203374ce688dfd5af24f2b1c3dfccb5ece0995eb74954203c94180cc71c521849a46de1b3580bc9d8ecd9ae1c328e28700de2fea6179e840fbd5770b35ae91fa08653bbef7cff690be048c3b7930bc80a54c4ac5d1467376ccaa52f310837aa6e6f8cbc9be2575d2481af97979c84ad6cac374c66f361911120e4be309f7aa42909b0e1345f6477184051df8c30a6af0a840830820400308202e8a003020102020100300d06092a864886f70d01010505003063310b30090603550406130255533121301f060355040a131854686520476f2044616464792047726f75702c20496e632e3131302f060355040b1328476f20446164647920436c61737320322043657274696669636174696f6e20417574686f72697479301e170d3034303632393137303632305a170d3334303632393137303632305a3063310b30090603550406130255533121301f060355040a131854686520476f2044616464792047726f75702c20496e632e3131302f060355040b1328476f20446164647920436c61737320322043657274696669636174696f6e20417574686f7269747930820120300d06092a864886f70d01010105000382010d00308201080282010100de9dd7ea571849a15bebd75f4886eabeddffe4ef671cf46568b35771a05e77bbed9b49e970803d561863086fdaf2ccd03f7f0254225410d8b281d4c0753d4b7fc777c33e78ab1a03b5206b2f6a2bb1c5887ec4bb1eb0c1d845276faa3758f78726d7d82df6a917b71f72364ea6173f659892db2a6e5da2fe88e00bde7fe58d15e1ebcb3ad5e212a2132dd88eaf5f123da0080508b65ca565380445991ea3606074c541a572621b62c51f6f5f1a42be025165a8ae23186afc7803a94d7f80c3faab5afca140a4ca1916feb2c8ef5e730dee77bd9af67998bcb10767a2150ddda058c6447b0a3e62285fba41075358cf117e3874c5f8ffb569908f8474ea971baf020103a381c03081bd301d0603551d0e04160414d2c4b0d291d44c1171b361cb3da1fedda86ad4e330818d0603551d230481853081828014d2c4b0d291d44c1171b361cb3da1fedda86ad4e3a167a4653063310b30090603550406130255533121301f060355040a131854686520476f2044616464792047726f75702c20496e632e3131302f060355040b1328476f20446164647920436c61737320322043657274696669636174696f6e20417574686f72697479820100300c0603551d13040530030101ff300d06092a864886f70d01010505000382010100324bf3b2ca3e91fc12c6a1078c8e77a03306145c901e18f708a63d0a19f98780116e69e4961730ff3491637238eecc1c01a31d9428a431f67ac454d7f6e5315803a2ccce62db944573b5bf45c924b5d58202ad2379698db8b64dcecf4cca3323e81c88aa9d8b416e16c920e5899ecd3bda70f77e992620145425ab6e7385e69b219d0a6c820ea8f8c20cfa101e6c96ef870dc40f618badee832b95f88e92847239eb20ea83ed83cd976e08bceb4e26b6732be4d3f64cfe2671e26111744aff571a870f75482ecf516917a002126195d5d140b2104ceec4ac1043a6a59e0ad595629a0dcf8882c5320ce42b9f45e60d9f289cb1b92a5a57ad370faf1d7fdbbd9f22a1010a0474657374122008c0c9e714121976a914176d7c5d60da6f8c82de86671a1fb776028538ca88ac18c6f5d89f0520cafcd89f052a395061796d656e74207265717565737420666f722042697450617920696e766f69636520434d57707546736a676d51325a4c6979476663463157323068747470733a2f2f746573742e6269747061792e636f6d2f692f434d57707546736a676d51325a4c69794766634631572a80021566366ab78842a514c056ca7ecb76481262cac74cc4c4ccdc82c4980bc3300de67836d61d3e06dc8c90798a7774c21c7ad4fe634b85faa8719d6402411bb720396ae03cbb4e14f06f7894a66b208b99f727fab35d32f4f2148294d24bea1b3f240c159d0fd3ee4a32e5f926bf7c05eb7a3f75e01d9af81254cfbb61606467750ea7e0a1536728358e0898d06f57235e4096d2caf647ae58dff645be80c9b3555fa96c81efa07d421977d26214ad4f1ff642a93d0925656aeab454fa0b60fcbb6c1bc570eb6e43e7613392f37900748635ae381534bfaa558792bc46028b9efce391423a9c1201f76292614b30a14272e837f3813045b035f3d42f4f76f48acd", - "invalid": "0801120b783530392b7368613235361a88210aaa0e308207263082060ea003020102020900ba55847ce9a10f59300d06092a864886f70d01010b05003081b4310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e312d302b060355040b1324687474703a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f313330310603550403132a476f2044616464792053656375726520436572746966696361746520417574686f72697479202d204732301e170d3135303432303231323134365a170d3137303432353139313130305a3081be31133011060b2b0601040182373c0201031302555331193017060b2b0601040182373c020102130844656c6177617265311d301b060355040f131450726976617465204f7267616e697a6174696f6e3110300e0603550405130735313633393636310b30090603550406130255533110300e0603550408130747656f726769613110300e0603550407130741746c616e746131153013060355040a130c4269745061792c20496e632e311330110603550403130a6269747061792e636f6d30820122300d06092a864886f70d01010105000382010f003082010a0282010100e42025369a803c1b44234a279d123b610ec1178452fc7c57f2576492e1123166bed5eec11d12a8b824904f77aa6166ce6e111538204121069b5ecff81fd1ab27b1b9475c49d7680ef5f406f57a1871b77392a7b5c4370f504ba175617f78fe24c9ed76154b46aa677cf6463a202909711b34ceecbe0ee7b9766cfd7018886b67e518f1ac39a3715152d62e59547f34d440ed3dfa01a92a42ed0b221c093144ed63f86c2300b8cf192b75929732af63c41526e4fd69735f0062c61c2dbcb56f6439ff9bbe62507da52752c1d99f24afbb3a6b5c98989d2196fb6bd9cc83a5ab21f060e955e7f45a01c9efe782f15cd48ab824d6272db2b71c8988d02071e805df0203010001a382032d30820329300c0603551d130101ff04023000301d0603551d250416301406082b0601050507030106082b06010505070302300e0603551d0f0101ff0404030205a030350603551d1f042e302c302aa028a0268624687474703a2f2f63726c2e676f64616464792e636f6d2f676469673273332d312e63726c30530603551d20044c304a3048060b6086480186fd6d010717033039303706082b06010505070201162b687474703a2f2f6365727469666963617465732e676f64616464792e636f6d2f7265706f7369746f72792f307606082b06010505070101046a3068302406082b060105050730018618687474703a2f2f6f6373702e676f64616464792e636f6d2f304006082b060105050730028634687474703a2f2f6365727469666963617465732e676f64616464792e636f6d2f7265706f7369746f72792f67646967322e637274301f0603551d2304183016801440c2bd278ecc348330a233d7fb6cb3f0b42c80ce30250603551d11041e301c820a6269747061792e636f6d820e7777772e6269747061792e636f6d301d0603551d0e04160414a5698a70daa1405dbcdd1a02e95db8a51aaadd7f3082017d060a2b06010401d6790204020482016d0482016901670076005614069a2fd7c2ecd3f5e1bd44b23ec74676b9bc99115cc0ef949855d689d0dd0000014cd8b6d73a000004030047304502210095e5768670ea27ed35075e484b7c42cd20176c7263b4e879deb418639144079d02204911ae1cf0fcda5a2b6b3cec528ccd689e7371a34c99460c2ca063b44ba6fbca00750068f698f81f6482be3a8ceeb9281d4cfc71515d6793d444d10a67acbb4f4ffbc40000014cd8b6d93e0000040300463044022030c89215d7081b372a1b033eb77ff5abbe9c6822b38c9a0f5e4b166c7532fabf02200a481b330414d0076aa0d925dc84096b8cb7585fc0b1ff28c744cfa85e17ab8e007600a4b90990b418581487bb13a2cc67700a3c359804f91bdfb8e377cd0ec80ddc100000014cd8b6dc34000004030047304502201f085d25b292b34185a182e314a3c64c9b5162526c90cfc3ff7136b137bc98ee022100b28a7fbaa53c2fff07bdf23300551e0b52ff1d823bb89df9eeb9079327adfe2c300d06092a864886f70d01010b0500038201010013eeaf33325800bb0f252a091b1a9cdf2e10de3abfb9f566b94a60e63401598f68c4086cf170881f1b856e51dc45edce992f589a7c4acbfb7c28a10c28c1ce4d1425c5b795b764367f0446dde5bb5710e5a1994a02f0b02334458e4950a876e48363aee4a32d1904d6d9c6af2906f4e4e03122e35bf943cf17b0e05a8ebaa5154a86f40676e779bb1dcd2672d75887e1bcb51186596d749bc6c1ecfedcf60b24eb503ac9460dc3682fe74e7acf16e9ab0014f6719322de534e14e90e7638e854546087c6a33d7743f58ee3b589dbd8fa5800af9b0ecdef0c041a2bf2126b908e3bf84881c1a323929bca34f0830373a8b28f62b2133880ff6f20ffb19c38a7280ad409308204d0308203b8a003020102020107300d06092a864886f70d01010b0500308183310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e3131302f06035504031328476f20446164647920526f6f7420436572746966696361746520417574686f72697479202d204732301e170d3131303530333037303030305a170d3331303530333037303030305a3081b4310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e312d302b060355040b1324687474703a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f313330310603550403132a476f2044616464792053656375726520436572746966696361746520417574686f72697479202d20473230820122300d06092a864886f70d01010105000382010f003082010a0282010100b9e0cb10d4af76bdd49362eb3064b881086cc304d962178e2fff3e65cf8fce62e63c521cda16454b55ab786b63836290ce0f696c99c81a148b4ccc4533ea88dc9ea3af2bfe80619d7957c4cf2ef43f303c5d47fc9a16bcc3379641518e114b54f828bed08cbef030381ef3b026f86647636dde7126478f384753d1461db4e3dc00ea45acbdbc71d9aa6f00dbdbcd303a794f5f4c47f81def5bc2c49d603bb1b24391d8a4334eeab3d6274fad258aa5c6f4d5d0a6ae7405645788b54455d42d2a3a3ef8b8bde9320a029464c4163a50f14aaee77933af0c20077fe8df0439c269026c6352fa77c11bc87487c8b993185054354b694ebc3bd3492e1fdcc1d252fb0203010001a382011a30820116300f0603551d130101ff040530030101ff300e0603551d0f0101ff040403020106301d0603551d0e0416041440c2bd278ecc348330a233d7fb6cb3f0b42c80ce301f0603551d230418301680143a9a8507106728b6eff6bd05416e20c194da0fde303406082b0601050507010104283026302406082b060105050730018618687474703a2f2f6f6373702e676f64616464792e636f6d2f30350603551d1f042e302c302aa028a0268624687474703a2f2f63726c2e676f64616464792e636f6d2f6764726f6f742d67322e63726c30460603551d20043f303d303b0604551d20003033303106082b06010505070201162568747470733a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f300d06092a864886f70d01010b05000382010100087e6c9310c838b896a9904bffa15f4f04ef6c3e9c8806c9508fa673f757311bbebce42fdbf8bad35be0b4e7e679620e0ca2d76a637331b5f5a848a43b082da25d90d7b47c254f115630c4b6449d7b2c9de55ee6ef0c61aabfe42a1bee849eb8837dc143ce44a713700d911ff4c813ad8360d9d872a873241eb5ac220eca17896258441bab892501000fcdc41b62db51b4d30f512a9bf4bc73fc76ce36a4cdd9d82ceaae9bf52ab290d14d75188a3f8a4190237d5b4bfea403589b46b2c3606083f87d5041cec2a190c3bbef022fd21554ee4415d90aaea78a33edb12d763626dc04eb9ff7611f15dc876fee469628ada1267d0a09a72e04a38dbcf8bc0430010a81093082047d30820365a00302010202031be715300d06092a864886f70d01010b05003063310b30090603550406130255533121301f060355040a131854686520476f2044616464792047726f75702c20496e632e3131302f060355040b1328476f20446164647920436c61737320322043657274696669636174696f6e20417574686f72697479301e170d3134303130313037303030305a170d3331303533303037303030305a308183310b30090603550406130255533110300e060355040813074172697a6f6e61311330110603550407130a53636f74747364616c65311a3018060355040a1311476f44616464792e636f6d2c20496e632e3131302f06035504031328476f20446164647920526f6f7420436572746966696361746520417574686f72697479202d20473230820122300d06092a864886f70d01010105000382010f003082010a0282010100bf716208f1fa5934f71bc918a3f7804958e9228313a6c52043013b84f1e685499f27eaf6841b4ea0b4db7098c73201b1053e074eeef4fa4f2f593022e7ab19566be28007fcf316758039517be5f935b6744ea98d8213e4b63fa90383faa2be8a156a7fde0bc3b6191405caeac3a804943b467c320df3006622c88d696d368c1118b7d3b21c60b438fa028cced3dd4607de0a3eeb5d7cc87cfbb02b53a4926269512505611a44818c2ca9439623dfac3a819a0e29c51ca9e95d1eb69e9e300a39cef18880fb4b5dcc32ec85624325340256270191b43b702a3f6eb1e89c88017d9fd4f9db536d609dbf2ce758abb85f46fccec41b033c09eb49315c6946b3e0470203010001a382011730820113300f0603551d130101ff040530030101ff300e0603551d0f0101ff040403020106301d0603551d0e041604143a9a8507106728b6eff6bd05416e20c194da0fde301f0603551d23041830168014d2c4b0d291d44c1171b361cb3da1fedda86ad4e3303406082b0601050507010104283026302406082b060105050730018618687474703a2f2f6f6373702e676f64616464792e636f6d2f30320603551d1f042b30293027a025a0238621687474703a2f2f63726c2e676f64616464792e636f6d2f6764726f6f742e63726c30460603551d20043f303d303b0604551d20003033303106082b06010505070201162568747470733a2f2f63657274732e676f64616464792e636f6d2f7265706f7369746f72792f300d06092a864886f70d01010b05000382010100590b53bd928611a7247bed5b31cf1d1f6c70c5b86ebe4ebbf6be9750e1307fba285c6294c2e37e33f7fb427685db951c8c225875090c886567390a1609c5a03897a4c523933fb418a601064491e3a76927b45a257f3ab732cddd84ff2a382933a4dd67b285fea188201c5089c8dc2af64203374ce688dfd5af24f2b1c3dfccb5ece0995eb74954203c94180cc71c521849a46de1b3580bc9d8ecd9ae1c328e28700de2fea6179e840fbd5770b35ae91fa08653bbef7cff690be048c3b7930bc80a54c4ac5d1467376ccaa52f310837aa6e6f8cbc9be2575d2481af97979c84ad6cac374c66f361911120e4be309f7aa42909b0e1345f6477184051df8c30a6af2289020a046d61696e121f08c0843d121976a914e4ea045fc0f08208d452187ad401ab2a874d0b6d88ac1896d6e5af05209adde5af052a595061796d656e74207265717565737420666f722042697450617920696e766f69636520504151744e7858374b4c3842744a426e66587954614820666f72206d65726368616e74204269744769766520466f756e646174696f6e322b68747470733a2f2f6269747061792e636f6d2f692f504151744e7858374b4c3842744a426e6658795461483a4c7b22696e766f6963654964223a22504151744e7858374b4c3842744a426e665879546148222c226d65726368616e744964223a2254785a35527943686d5a773269734b6a4a5747684263227d2a8002dca72518e1951edeb832ad680b5b99f29e0d5d9b9bf4c6d3a6e327436a8c9e44328b9c4738703b3407033f13cfc90ac7201dbbb612ee00f81a94169b4f4994b310c177948877e440d1347a64aa55c351fd08a3ce9af7598b8d103b24a0928a23cba0067d35aa86de6fc664c017233cd22db0ec204cacb00c87dd58abfdeae7c2fc61e5666a41c1be2f633d925f97a088b1fabc0b6634fff7f0034437a8d4cf52d94d739dc67327a1b3757358f2799bda1e0af4e897a8fae0ec77f2baa8fb6a9b315bf1a19e09dc806d3269e5544c98da2a3bfd1fcc70389539b1c9ad0c16cd34f62cd1533e3b491115814746c47914bd2c45cf947ac239b1e1251907cfd99036", - "untrusted": "120b783530392b7368613235361abe150afe0b308205fa308204e2a0030201020210090b35ca5c5bf1b98b3d8f9f4a7755d6300d06092a864886f70d01010b05003075310b300906035504061302555331153013060355040a130c446967694365727420496e6331193017060355040b13107777772e64696769636572742e636f6d313430320603550403132b4469676943657274205348413220457874656e6465642056616c69646174696f6e20536572766572204341301e170d3134303530393030303030305a170d3136303531333132303030305a30820105311d301b060355040f0c1450726976617465204f7267616e697a6174696f6e31133011060b2b0601040182373c0201031302555331193017060b2b0601040182373c020102130844656c61776172653110300e0603550405130735313534333137310f300d06035504090c06233233303038311730150603550409130e353438204d61726b65742053742e310e300c060355041113053934313034310b3009060355040613025553311330110603550408130a43616c69666f726e6961311630140603550407130d53616e204672616e636973636f31173015060355040a130e436f696e626173652c20496e632e311530130603550403130c636f696e626173652e636f6d30820122300d06092a864886f70d01010105000382010f003082010a0282010100b45e3ff380667aa14d5a12fc2fc983fc6618b55499933c3bde15c01d838846b4caf9848e7c40e5fa7c67ef9b5b1efe26ee5571c5fa2eff759052454701ad8931557d697b139e5d19abb3e439675f31db7f2ef1a5d97db07c1f6966266380eb4fcfa8e1471a6ecc2fbebf3e67b3eaa84d0fbe063e60380dcdb7a20203d29a94059ef7f20d472cc25783ab2a1db6a394ecc07b4024974100bcfd470f59ef3b572365213209609fad229994b4923c1df3a18c41e3e7bc1f192ba6e7e5c32ae155107e21903eff7bce9fc594b49d9f6ae7901fa191fcbae8a2cf09c3bfc24377d717b6010080c5681a7dbc6e1d52987b7ebbe95e7af4202da436e67a88472aacedc90203010001a38201f2308201ee301f0603551d230418301680143dd350a5d6a0adeef34a600a65d321d4f8f8d60f301d0603551d0e041604146d33b9743a61b7499423d1a89d085d0148680bba30290603551d1104223020820c636f696e626173652e636f6d82107777772e636f696e626173652e636f6d300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b0601050507030230750603551d1f046e306c3034a032a030862e687474703a2f2f63726c332e64696769636572742e636f6d2f736861322d65762d7365727665722d67312e63726c3034a032a030862e687474703a2f2f63726c342e64696769636572742e636f6d2f736861322d65762d7365727665722d67312e63726c30420603551d20043b3039303706096086480186fd6c0201302a302806082b06010505070201161c68747470733a2f2f7777772e64696769636572742e636f6d2f43505330818806082b06010505070101047c307a302406082b060105050730018618687474703a2f2f6f6373702e64696769636572742e636f6d305206082b060105050730028646687474703a2f2f636163657274732e64696769636572742e636f6d2f446967694365727453484132457874656e64656456616c69646174696f6e53657276657243412e637274300c0603551d130101ff04023000300d06092a864886f70d01010b05000382010100aadfcf94050ed938e3114a640af3d9b04276da00f5215d7148f9f16d4cac0c77bd5349ec2f47299d03c900f70146752da72829290ac50a77992f01537ab2689392ce0bfeb7efa49f4c4fe4e1e43ca1fcfb1626ce554da4f6e7fa34a597e401f215c43afd0ba777ad587eb0afacd71f7a6af7752814f7ab4c202ed76d33defd1289d541803fed01ac80a3cacfdaae29279e5de14d460475f4baf27eab693379d39120e7477bf3ec719664c7b6cb5e557556e5bbddd9c9d1ebc9f835e9da5b3dbb72fe8d94ac05eab3c479987520ade3a1d275e1e2fe725698d2f7cb1390a9d40ea6cbf21a73bddccd1ad61aa249ce8e2885a3730b7d53bd075f55099d2960f3cc0aba09308204b63082039ea00302010202100c79a944b08c11952092615fe26b1d83300d06092a864886f70d01010b0500306c310b300906035504061302555331153013060355040a130c446967694365727420496e6331193017060355040b13107777772e64696769636572742e636f6d312b30290603550403132244696769436572742048696768204173737572616e636520455620526f6f74204341301e170d3133313032323132303030305a170d3238313032323132303030305a3075310b300906035504061302555331153013060355040a130c446967694365727420496e6331193017060355040b13107777772e64696769636572742e636f6d313430320603550403132b4469676943657274205348413220457874656e6465642056616c69646174696f6e2053657276657220434130820122300d06092a864886f70d01010105000382010f003082010a0282010100d753a40451f899a616484b6727aa9349d039ed0cb0b00087f1672886858c8e63dabcb14038e2d3f5eca50518b83d3ec5991732ec188cfaf10ca6642185cb071034b052882b1f689bd2b18f12b0b3d2e7881f1fef387754535f80793f2e1aaaa81e4b2b0dabb763b935b77d14bc594bdf514ad2a1e20ce29082876aaeead764d69855e8fdaf1a506c54bc11f2fd4af29dbb7f0ef4d5be8e16891255d8c07134eef6dc2decc48725868dd821e4b04d0c89dc392617ddf6d79485d80421709d6f6fff5cba19e145cb5657287e1c0d4157aab7b827bbb1e4fa2aef2123751aad2d9b86358c9c77b573add8942de4f30c9deec14e627e17c0719e2cdef1f9102819330203010001a38201493082014530120603551d130101ff040830060101ff020100300e0603551d0f0101ff040403020186301d0603551d250416301406082b0601050507030106082b06010505070302303406082b0601050507010104283026302406082b060105050730018618687474703a2f2f6f6373702e64696769636572742e636f6d304b0603551d1f044430423040a03ea03c863a687474703a2f2f63726c342e64696769636572742e636f6d2f4469676943657274486967684173737572616e63654556526f6f7443412e63726c303d0603551d200436303430320604551d2000302a302806082b06010505070201161c68747470733a2f2f7777772e64696769636572742e636f6d2f435053301d0603551d0e041604143dd350a5d6a0adeef34a600a65d321d4f8f8d60f301f0603551d23041830168014b13ec36903f8bf4701d498261a0802ef63642bc3300d06092a864886f70d01010b050003820101009db6d09086e18602edc5a0f0341c74c18d76cc860aa8f04a8a42d63fc8a94dad7c08ade6b650b8a21a4d8807b12921dce7dac63c21e0e3114970ac7a1d01a4ca113a57ab7d572a4074fdd31d851850df574775a17d55202e473750728c7f821bd2628f2d035adac3c8a1ce2c52a20063eb73ba71c84927239764859e380ead63683cba52815879a32c0cdfde6deb31f2baa07c6cf12cd4e1bd77843703ce32b5c89a811a4a924e3b469a85fe83a2f99e8ca3cc0d5eb33dcf04788f14147b329cc700a65cc4b5a1558d5a5668a42270aa3c8171d99da8453bf4e5f6a251ddc77b62e86f0c74ebb8daf8bf870d795091909b183b915927f1352813ab267ed5f77a22b801121f08d8e51a121976a914f5fa7bb3c2245e6469254c074c062af292ce008c88ac189295e7af0520f49be7af052a315061796d656e74207265717565737420666f7220436f696e62617365206f7264657220636f64653a205738375858335753323468747470733a2f2f7777772e636f696e626173652e636f6d2f72702f3535663963613730336435643830303038633030303166343a2062623739623666323331306533323162643362316439323965646265623335382a8002b45d9b5d48d566d577ec4973b4b57a4930f173be6545d9fc367f9b55f90a669504085db971107a09c25d1e30dcaf54ce86f177685751feebd5c66c40d7d9daad08129fe10450518d48e49ae4e03a8c4939010f9f222de60b9e5df210e066115cbc2ad92f51fcdc35eaa3ee2430687ff46053e460b6f93deede2ee09a8841eec11b6f5d1bbcf26708e5c12d427959569d9af629f8940736ac3941f78eafb2c2e400dfcc76e729d13c4a9d0ec834515cf7287188589e5e0e505a7a7daab1fa8ac4f6745a0eae2daa61d73a7e3fc56ca94457e2aa164a959b05bb91b797828cb7c4d8b05395840a40ef51a0a0f93d13dce15e5f5f9ede08b3510701a1cac6a99c06", - "ack": "0a00125f5472616e73616374696f6e207265636569766564206279204269745061792e20496e766f6963652077696c6c206265206d61726b6564206173207061696420696620746865207472616e73616374696f6e20697320636f6e6669726d65642e", - "ca": { - "crt": "308201ef30820158020900f951e277bfb8b405300d06092a864886f70d01010b0500303c310b3009060355040613025553310b300906035504080c024341310f300d060355040a0c064a4a73204341310f300d06035504030c064a4a73204341301e170d3136303732333132333035365a170d3137303732333132333035365a303c310b3009060355040613025553310b300906035504080c024341310f300d060355040a0c064a4a73204341310f300d06035504030c064a4a7320434130819f300d06092a864886f70d010101050003818d0030818902818100dfa1f53be0a5473f33a69f69290bdb78786980a70d0d68f098eac64b227b268174f798a7a89baca0ee71e8577c91c79025db5888be26a05377e63665a99e10cda0fdba4f8214d5f57807fb482a7c29d90a36f0d37bbe80d0a878922efd9723b511aeaa258cac18213ff966a9e4fac97bbefb4feb0b2a7f02a95aa3b3ac3fbac30203010001300d06092a864886f70d01010b05000381810066f891a7ac6ef88e7ae4ca11b6a4a573397bb5309844136eaea578e843eacb4af3ccae12e9158e7db906b9b386bc118254e696e21fde537dc2a547dc8cdaa98af0e44025fb2fe6b23676455f577b054b284c0d04df9a7bc49214f385b655e31c0b9a47012780e6cca26b6e20e00a485213d4a7aa65b99d011f232f0da6227f95", - "priv": "3082025e02010002818100dfa1f53be0a5473f33a69f69290bdb78786980a70d0d68f098eac64b227b268174f798a7a89baca0ee71e8577c91c79025db5888be26a05377e63665a99e10cda0fdba4f8214d5f57807fb482a7c29d90a36f0d37bbe80d0a878922efd9723b511aeaa258cac18213ff966a9e4fac97bbefb4feb0b2a7f02a95aa3b3ac3fbac3020301000102818100ab2cd8fd8032829a89fa9c426e3cb93d394de83ff5e9b1cd97fefcd13e0f6da5e1d6336f01cc4712d7f1309ae6aadf4a22f00690849c24543f8e634ce5cc2ba70af366c6fb2c8820c977aa5843d380a9b63bfe29fb26177b5c53012bd68fdcdd69609f54cc0a0fe37bae1acf29382950fcba134a77416ad684423345df4feca1024100fec773455b21efe7ef0cfac567723c21080cd1d463233a4679303093ba6c6b3681f053418f33b575f151f7146a1a306e7854299ad03869f2d806ffcae6c18d5f024100e0b44c7f89a0c296b3ddb0981519b49393a8f738c6d4de23dae74f42d59c9131591126ca4b1623475dff1e1be655c6b5c13cf0c468874fb574286da16f61a91d024100a7303ee65e5d30cf244182361422146f209739028463d393f766b619db15d66d186b9a56c5200b8defe3f79d7fdadbb9426108443d2b27eb61f385dba1fd954502410092b3c3d9e45dcb8d1e63171f436f63e0919fd7bffeb80d4bb5681cec5290048f064a575bed47c7c29950ad34a3ddce7ced6b3ef9cc10c36e8126bfe48cd662d502404cceb50ffca2ed6ead5557e76c4cc5b57a3dad3c14038f11eec2dae285c722a28008ea312dcf5552fbf9090e95b1570cea569aed0f3ce3ab55378ec9300a2ee5", - "pub": "30818902818100dfa1f53be0a5473f33a69f69290bdb78786980a70d0d68f098eac64b227b268174f798a7a89baca0ee71e8577c91c79025db5888be26a05377e63665a99e10cda0fdba4f8214d5f57807fb482a7c29d90a36f0d37bbe80d0a878922efd9723b511aeaa258cac18213ff966a9e4fac97bbefb4feb0b2a7f02a95aa3b3ac3fbac30203010001" - } -} \ No newline at end of file diff --git a/test/input-test.js b/test/input-test.js index 3ec7a2ff..e9d9930a 100644 --- a/test/input-test.js +++ b/test/input-test.js @@ -4,10 +4,10 @@ 'use strict'; const Input = require('../lib/primitives/input'); -const util = require('../lib/utils/util'); const BufferReader = require('../lib/utils/reader'); const assert = require('./util/assert'); const common = require('./util/common'); +const encoding = require('../lib/utils/encoding'); // Take input rawbytes from the raw data format // p2pkh @@ -236,7 +236,7 @@ describe('Input', function() { const inputs = test.inputs.map((prevout, i) => { const input = Input.fromOptions({ prevout: { - hash: util.revHex(prevout.txId), + hash: encoding.revHex(prevout.txId), index: prevout.vout } }); diff --git a/test/tx-test.js b/test/tx-test.js index ca005a65..4902ea5c 100644 --- a/test/tx-test.js +++ b/test/tx-test.js @@ -5,7 +5,6 @@ const {inspect} = require('util'); const assert = require('./util/assert'); -const util = require('../lib/utils/util'); const encoding = require('../lib/utils/encoding'); const random = require('bcrypto/lib/random'); const consensus = require('../lib/protocol/consensus'); @@ -66,7 +65,7 @@ function parseTXTest(data) { const view = new CoinView(); for (const [txid, index, str, amount] of coins) { - const hash = util.revHex(txid); + const hash = encoding.revHex(txid); const script = Script.fromString(str); const value = parseInt(amount || '0', 10); @@ -103,7 +102,7 @@ function parseSighashTest(data) { const tx = TX.fromRaw(txHex, 'hex'); const script = Script.fromRaw(scriptHex, 'hex'); - const expected = util.revHex(hash); + const expected = encoding.revHex(hash); let hex = type & 3; diff --git a/test/wallet-test.js b/test/wallet-test.js index cc042c9d..6b831252 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -19,7 +19,7 @@ const Input = require('../lib/primitives/input'); const Outpoint = require('../lib/primitives/outpoint'); const Script = require('../lib/script/script'); const HD = require('../lib/hd'); -const U32 = encoding.U32; +const u32 = encoding.u32; const KEY1 = 'xprv9s21ZrQH143K3Aj6xQBymM31Zb4BVc7wxqfUhMZrzewdDVCt' + 'qUP9iWfcHgJofs25xbaUpCps9GDXj83NiWvQCAkWQhVj5J4CorfnpKX94AZ'; @@ -46,9 +46,9 @@ function nextBlock(wdb) { } function fakeBlock(height) { - const prev = digest.hash256(U32((height - 1) >>> 0)); - const hash = digest.hash256(U32(height >>> 0)); - const root = digest.hash256(U32((height | 0x80000000) >>> 0)); + const prev = digest.hash256(u32((height - 1) >>> 0)); + const hash = digest.hash256(u32(height >>> 0)); + const root = digest.hash256(u32((height | 0x80000000) >>> 0)); return { hash: hash.toString('hex'),