diff --git a/.eslintignore b/.eslintignore index 6791fbf312a08b..1ccb8f831baa0b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -6,3 +6,4 @@ test/disabled test/tmp*/ tools/eslint node_modules +benchmark/tmp/ diff --git a/.eslintrc b/.eslintrc.yaml similarity index 100% rename from .eslintrc rename to .eslintrc.yaml diff --git a/AUTHORS b/AUTHORS index 0f49f0b7dd1887..a3ca4567bb8c0f 100644 --- a/AUTHORS +++ b/AUTHORS @@ -935,7 +935,7 @@ Felix Becker Igor Klopov Tsarevich Dmitry Ojas Shirekar -Noah Rose +Noah Rose Ledesma Rafael Cepeda Chinedu Francis Nwafili Braydon Fuller diff --git a/CHANGELOG.md b/CHANGELOG.md index 974cbb51b42d9c..bfd91403b5e4cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,170 @@ # Node.js ChangeLog +## 2017-03-21, Version 4.8.1 'Argon' (LTS), @MylesBorins + +This LTS release comes with 147 commits. This includes 55 which are test related, +41 which are doc related, 11 which are build / tool related, +and 1 commits which are updates to dependencies. + +### Notable Changes + +* **buffer**: The performance of `.toJSON()` is now up to 2859% faster on average. (Brian White) [#10895](https://github.com/nodejs/node/pull/10895) +* **IPC**: Batched writes have been enabled for process IPC on platforms that support Unix Domain Sockets. (Alexey Orlenko) [#10677](https://github.com/nodejs/node/pull/10677) + - Performance gains may be up to 40% for some workloads. +* **http**: + - Control characters are now always rejected when using `http.request()`. (Ben Noordhuis) [#8923](https://github.com/nodejs/node/pull/8923) +* **node**: Heap statistics now support values larger than 4GB. (Ben Noordhuis) [#10186](https://github.com/nodejs/node/pull/10186) + +### Commits + +* [[`77f23ec5af`](https://github.com/nodejs/node/commit/77f23ec5af)] - **assert**: unlock the assert API (Rich Trott) [#11304](https://github.com/nodejs/node/pull/11304) +* [[`090037a41a`](https://github.com/nodejs/node/commit/090037a41a)] - **assert**: remove unneeded condition (Rich Trott) [#11314](https://github.com/nodejs/node/pull/11314) +* [[`75af859af7`](https://github.com/nodejs/node/commit/75af859af7)] - **assert**: apply minor refactoring (Rich Trott) [#11511](https://github.com/nodejs/node/pull/11511) +* [[`994f562858`](https://github.com/nodejs/node/commit/994f562858)] - **assert**: update comments (Kai Cataldo) [#10579](https://github.com/nodejs/node/pull/10579) +* [[`14e57c1102`](https://github.com/nodejs/node/commit/14e57c1102)] - **benchmark**: add more thorough timers benchmarks (Jeremiah Senkpiel) [#10925](https://github.com/nodejs/node/pull/10925) +* [[`850f85d96e`](https://github.com/nodejs/node/commit/850f85d96e)] - **benchmark**: add benchmark for object properties (Michaël Zasso) [#10949](https://github.com/nodejs/node/pull/10949) +* [[`626875f2e4`](https://github.com/nodejs/node/commit/626875f2e4)] - **benchmark**: don't lint autogenerated modules (Brian White) [#10756](https://github.com/nodejs/node/pull/10756) +* [[`9da6ebd73f`](https://github.com/nodejs/node/commit/9da6ebd73f)] - **benchmark**: add dgram bind(+/- params) benchmark (Vse Mozhet Byt) [#11313](https://github.com/nodejs/node/pull/11313) +* [[`a597c11ba4`](https://github.com/nodejs/node/commit/a597c11ba4)] - **benchmark**: improve readability of net benchmarks (Brian White) [#10446](https://github.com/nodejs/node/pull/10446) +* [[`22c25dee92`](https://github.com/nodejs/node/commit/22c25dee92)] - **buffer**: improve toJSON() performance (Brian White) [#10895](https://github.com/nodejs/node/pull/10895) +* [[`af3c21197d`](https://github.com/nodejs/node/commit/af3c21197d)] - **build**: move source files from headers section (Daniel Bevenius) [#10850](https://github.com/nodejs/node/pull/10850) +* [[`4bb61553f0`](https://github.com/nodejs/node/commit/4bb61553f0)] - **build**: disable C4267 conversion compiler warning (Ben Noordhuis) [#11205](https://github.com/nodejs/node/pull/11205) +* [[`6a45ac0ea9`](https://github.com/nodejs/node/commit/6a45ac0ea9)] - **build**: fix newlines in addon build output (Brian White) [#11466](https://github.com/nodejs/node/pull/11466) +* [[`bfc553d55d`](https://github.com/nodejs/node/commit/bfc553d55d)] - **build**: fail on CI if leftover processes (Rich Trott) [#11269](https://github.com/nodejs/node/pull/11269) +* [[`094bfe66aa`](https://github.com/nodejs/node/commit/094bfe66aa)] - **build**: fix node_g target (Daniel Bevenius) [#10153](https://github.com/nodejs/node/pull/10153) +* [[`87db4f7225`](https://github.com/nodejs/node/commit/87db4f7225)] - **build**: Don't regenerate node symlink (sxa555) [#9827](https://github.com/nodejs/node/pull/9827) +* [[`e0dc0ceb37`](https://github.com/nodejs/node/commit/e0dc0ceb37)] - **build**: don't squash signal handlers with --shared (Stewart X Addison) [#10539](https://github.com/nodejs/node/pull/10539) +* [[`4676eec382`](https://github.com/nodejs/node/commit/4676eec382)] - **child_process**: remove empty if condition (cjihrig) [#11427](https://github.com/nodejs/node/pull/11427) +* [[`2b867d2ae5`](https://github.com/nodejs/node/commit/2b867d2ae5)] - **child_process**: refactor internal/child_process.js (Arseniy Maximov) [#11366](https://github.com/nodejs/node/pull/11366) +* [[`c9a92ff494`](https://github.com/nodejs/node/commit/c9a92ff494)] - **crypto**: return the retval of HMAC_Update (Travis Meisenheimer) [#10891](https://github.com/nodejs/node/pull/10891) +* [[`9c53e402d7`](https://github.com/nodejs/node/commit/9c53e402d7)] - **crypto**: freelist_max_len is gone in OpenSSL 1.1.0 (Adam Langley) [#10859](https://github.com/nodejs/node/pull/10859) +* [[`c6f6b029a1`](https://github.com/nodejs/node/commit/c6f6b029a1)] - **crypto**: add cert check issued by StartCom/WoSign (Shigeki Ohtsu) [#9469](https://github.com/nodejs/node/pull/9469) +* [[`c56719f47a`](https://github.com/nodejs/node/commit/c56719f47a)] - **crypto**: Remove expired certs from CNNIC whitelist (Shigeki Ohtsu) [#9469](https://github.com/nodejs/node/pull/9469) +* [[`b48f6ffc63`](https://github.com/nodejs/node/commit/b48f6ffc63)] - **crypto**: use CHECK_NE instead of ABORT or abort (Sam Roberts) [#10413](https://github.com/nodejs/node/pull/10413) +* [[`35a660ee70`](https://github.com/nodejs/node/commit/35a660ee70)] - **crypto**: fix handling of root_cert_store. (Adam Langley) [#9409](https://github.com/nodejs/node/pull/9409) +* [[`3516f35b77`](https://github.com/nodejs/node/commit/3516f35b77)] - **deps**: backport 7c3748a from upstream V8 (Cristian Cavalli) [#10873](https://github.com/nodejs/node/pull/10873) +* [[`f9e121ead8`](https://github.com/nodejs/node/commit/f9e121ead8)] - **dgram**: fix possibly deoptimizing use of arguments (Vse Mozhet Byt) +* [[`fc2bb2c8ef`](https://github.com/nodejs/node/commit/fc2bb2c8ef)] - **doc**: remove Chris Dickinson from active releasers (Ben Noordhuis) [#11011](https://github.com/nodejs/node/pull/11011) +* [[`725a89606b`](https://github.com/nodejs/node/commit/725a89606b)] - **doc**: remove duplicate properties bullet in readme (Javis Sullivan) [#10741](https://github.com/nodejs/node/pull/10741) +* [[`db03294c41`](https://github.com/nodejs/node/commit/db03294c41)] - **doc**: fix typo in http.md (Peter Mescalchin) [#10975](https://github.com/nodejs/node/pull/10975) +* [[`15188900b8`](https://github.com/nodejs/node/commit/15188900b8)] - **doc**: add who to CC list for dgram (cjihrig) [#11035](https://github.com/nodejs/node/pull/11035) +* [[`a0742902bd`](https://github.com/nodejs/node/commit/a0742902bd)] - **doc**: correct and complete dgram's Socket.bind docs (Alex Jordan) [#11025](https://github.com/nodejs/node/pull/11025) +* [[`f464dd837f`](https://github.com/nodejs/node/commit/f464dd837f)] - **doc**: edit CONTRIBUTING.md for clarity (Rich Trott) [#11045](https://github.com/nodejs/node/pull/11045) +* [[`07dfed8f45`](https://github.com/nodejs/node/commit/07dfed8f45)] - **doc**: fix confusing example in dns.md (Vse Mozhet Byt) [#11022](https://github.com/nodejs/node/pull/11022) +* [[`d55d760086`](https://github.com/nodejs/node/commit/d55d760086)] - **doc**: add personal pronouns option (Rich Trott) [#11089](https://github.com/nodejs/node/pull/11089) +* [[`b86843a463`](https://github.com/nodejs/node/commit/b86843a463)] - **doc**: clarify msg when doc/api/cli.md not updated (Stewart X Addison) [#10872](https://github.com/nodejs/node/pull/10872) +* [[`c2d70908e6`](https://github.com/nodejs/node/commit/c2d70908e6)] - **doc**: edit stability text for clarity and style (Rich Trott) [#11112](https://github.com/nodejs/node/pull/11112) +* [[`115448ec94`](https://github.com/nodejs/node/commit/115448ec94)] - **doc**: remove assertions about assert (Rich Trott) [#11113](https://github.com/nodejs/node/pull/11113) +* [[`e90317d739`](https://github.com/nodejs/node/commit/e90317d739)] - **doc**: fix "initial delay" link in http.md (Timo Tijhof) [#11108](https://github.com/nodejs/node/pull/11108) +* [[`788d736ab6`](https://github.com/nodejs/node/commit/788d736ab6)] - **doc**: typographical fixes in COLLABORATOR_GUIDE.md (Anna Henningsen) [#11163](https://github.com/nodejs/node/pull/11163) +* [[`2016aa4e07`](https://github.com/nodejs/node/commit/2016aa4e07)] - **doc**: add not-an-aardvark as ESLint contact (Rich Trott) [#11169](https://github.com/nodejs/node/pull/11169) +* [[`2b6ee39264`](https://github.com/nodejs/node/commit/2b6ee39264)] - **doc**: improve testing guide (Joyee Cheung) [#11150](https://github.com/nodejs/node/pull/11150) +* [[`aae768c599`](https://github.com/nodejs/node/commit/aae768c599)] - **doc**: remove extraneous paragraph from assert doc (Rich Trott) [#11174](https://github.com/nodejs/node/pull/11174) +* [[`ca4b2f6154`](https://github.com/nodejs/node/commit/ca4b2f6154)] - **doc**: fix typo in dgram doc (Rich Trott) [#11186](https://github.com/nodejs/node/pull/11186) +* [[`bb1e97c31a`](https://github.com/nodejs/node/commit/bb1e97c31a)] - **doc**: add and fix System Error properties (Daiki Arai) [#10986](https://github.com/nodejs/node/pull/10986) +* [[`e1e02efac5`](https://github.com/nodejs/node/commit/e1e02efac5)] - **doc**: clarify the behavior of Buffer.byteLength (Nikolai Vavilov) [#11238](https://github.com/nodejs/node/pull/11238) +* [[`30d9202f54`](https://github.com/nodejs/node/commit/30d9202f54)] - **doc**: improve consistency in documentation titles (Vse Mozhet Byt) [#11230](https://github.com/nodejs/node/pull/11230) +* [[`10afa8befc`](https://github.com/nodejs/node/commit/10afa8befc)] - **doc**: drop "and io.js" from release section (Ben Noordhuis) [#11054](https://github.com/nodejs/node/pull/11054) +* [[`6f1db35e27`](https://github.com/nodejs/node/commit/6f1db35e27)] - **doc**: update email and add personal pronoun (JungMinu) [#11318](https://github.com/nodejs/node/pull/11318) +* [[`61ac3346ba`](https://github.com/nodejs/node/commit/61ac3346ba)] - **doc**: update code examples in domain.md (Vse Mozhet Byt) [#11110](https://github.com/nodejs/node/pull/11110) +* [[`0c9ea4fe8b`](https://github.com/nodejs/node/commit/0c9ea4fe8b)] - **doc**: dns examples implied string args were arrays (Sam Roberts) [#11350](https://github.com/nodejs/node/pull/11350) +* [[`485ec6c180`](https://github.com/nodejs/node/commit/485ec6c180)] - **doc**: change STYLE-GUIDE to STYLE_GUIDE (Dean Coakley) [#11460](https://github.com/nodejs/node/pull/11460) +* [[`41bf266b0a`](https://github.com/nodejs/node/commit/41bf266b0a)] - **doc**: add STYLE_GUIDE (moved from nodejs/docs) (Gibson Fahnestock) [#11321](https://github.com/nodejs/node/pull/11321) +* [[`6abfcd560b`](https://github.com/nodejs/node/commit/6abfcd560b)] - **doc**: add comment for net.Server's error event (QianJin2013) [#11136](https://github.com/nodejs/node/pull/11136) +* [[`f4bc12dd11`](https://github.com/nodejs/node/commit/f4bc12dd11)] - **doc**: note message event listeners ref IPC channels (Diego Rodríguez Baquero) [#11494](https://github.com/nodejs/node/pull/11494) +* [[`09c9105a79`](https://github.com/nodejs/node/commit/09c9105a79)] - **doc**: argument types for assert methods (Amelia Clarke) [#11548](https://github.com/nodejs/node/pull/11548) +* [[`d622b67302`](https://github.com/nodejs/node/commit/d622b67302)] - **doc**: document clientRequest.aborted (Zach Bjornson) [#11544](https://github.com/nodejs/node/pull/11544) +* [[`d0dbf12884`](https://github.com/nodejs/node/commit/d0dbf12884)] - **doc**: update TheAlphaNerd to MylesBorins (Myles Borins) [#10586](https://github.com/nodejs/node/pull/10586) +* [[`05273c5a4e`](https://github.com/nodejs/node/commit/05273c5a4e)] - **doc**: update AUTHORS list to fix name (Noah Rose Ledesma) [#10945](https://github.com/nodejs/node/pull/10945) +* [[`79f700c891`](https://github.com/nodejs/node/commit/79f700c891)] - **doc**: add TimothyGu to collaborators (Timothy Gu) [#10954](https://github.com/nodejs/node/pull/10954) +* [[`e656a4244a`](https://github.com/nodejs/node/commit/e656a4244a)] - **doc**: add edsadr to collaborators (Adrian Estrada) [#10883](https://github.com/nodejs/node/pull/10883) +* [[`6d0e1621e5`](https://github.com/nodejs/node/commit/6d0e1621e5)] - **doc**: clarifying variables in fs.write() (Jessica Quynh Tran) [#9792](https://github.com/nodejs/node/pull/9792) +* [[`7287dddd69`](https://github.com/nodejs/node/commit/7287dddd69)] - **doc**: add links for zlib convenience methods (Anna Henningsen) [#10829](https://github.com/nodejs/node/pull/10829) +* [[`b10842ac77`](https://github.com/nodejs/node/commit/b10842ac77)] - **doc**: sort require statements in tests (Sam Roberts) [#10616](https://github.com/nodejs/node/pull/10616) +* [[`8f0e31b2d9`](https://github.com/nodejs/node/commit/8f0e31b2d9)] - **doc**: add test naming information to guide (Rich Trott) [#10584](https://github.com/nodejs/node/pull/10584) +* [[`56b779db93`](https://github.com/nodejs/node/commit/56b779db93)] - **doc**: "s/git apply/git am -3" in V8 guide (Myles Borins) [#10665](https://github.com/nodejs/node/pull/10665) +* [[`3be7a7adb5`](https://github.com/nodejs/node/commit/3be7a7adb5)] - **doc**: update LTS info for current releases (Evan Lucas) [#10720](https://github.com/nodejs/node/pull/10720) +* [[`530adfdb2a`](https://github.com/nodejs/node/commit/530adfdb2a)] - **doc**: improve rinfo object documentation (Matt Crummey) [#10050](https://github.com/nodejs/node/pull/10050) +* [[`48b5097ea8`](https://github.com/nodejs/node/commit/48b5097ea8)] - **http**: make request.abort() destroy the socket (Luigi Pinca) [#10818](https://github.com/nodejs/node/pull/10818) +* [[`15231aa6e5`](https://github.com/nodejs/node/commit/15231aa6e5)] - **http**: reject control characters in http.request() (Ben Noordhuis) [#8923](https://github.com/nodejs/node/pull/8923) +* [[`fc2cd63998`](https://github.com/nodejs/node/commit/fc2cd63998)] - **lib,src**: support values \> 4GB in heap statistics (Ben Noordhuis) [#10186](https://github.com/nodejs/node/pull/10186) +* [[`533d2bf0a9`](https://github.com/nodejs/node/commit/533d2bf0a9)] - **meta**: add explicit deprecation and semver-major policy (James M Snell) [#7964](https://github.com/nodejs/node/pull/7964) +* [[`923309adef`](https://github.com/nodejs/node/commit/923309adef)] - **meta**: remove Chris Dickinson from CTC (Chris Dickinson) [#11267](https://github.com/nodejs/node/pull/11267) +* [[`342c3e2bb4`](https://github.com/nodejs/node/commit/342c3e2bb4)] - **meta**: adding Italo A. Casas PGP Fingerprint (Italo A. Casas) [#11202](https://github.com/nodejs/node/pull/11202) +* [[`434b00be8a`](https://github.com/nodejs/node/commit/434b00be8a)] - **meta**: decharter the http working group (James M Snell) [#10604](https://github.com/nodejs/node/pull/10604) +* [[`a7df345921`](https://github.com/nodejs/node/commit/a7df345921)] - **net**: prefer === to == (Arseniy Maximov) [#11513](https://github.com/nodejs/node/pull/11513) +* [[`396688f075`](https://github.com/nodejs/node/commit/396688f075)] - **readline**: refactor construct Interface (Jackson Tian) [#4740](https://github.com/nodejs/node/pull/4740) +* [[`a40f8429e6`](https://github.com/nodejs/node/commit/a40f8429e6)] - **readline**: update 6 comparions to strict (Umair Ishaq) [#11078](https://github.com/nodejs/node/pull/11078) +* [[`90d8e118fb`](https://github.com/nodejs/node/commit/90d8e118fb)] - **src**: add a missing space in node_os.cc (Alexey Orlenko) [#10931](https://github.com/nodejs/node/pull/10931) +* [[`279cb09cc3`](https://github.com/nodejs/node/commit/279cb09cc3)] - **src**: enable writev for pipe handles on Unix (Alexey Orlenko) [#10677](https://github.com/nodejs/node/pull/10677) +* [[`a557d6ce1d`](https://github.com/nodejs/node/commit/a557d6ce1d)] - **src**: unconsume stream fix in internal http impl (Roee Kasher) [#11015](https://github.com/nodejs/node/pull/11015) +* [[`c4e1af712e`](https://github.com/nodejs/node/commit/c4e1af712e)] - **src**: remove unused typedef (Ben Noordhuis) [#11322](https://github.com/nodejs/node/pull/11322) +* [[`da2adb7133`](https://github.com/nodejs/node/commit/da2adb7133)] - **src**: update http-parser link (Daniel Bevenius) [#11477](https://github.com/nodejs/node/pull/11477) +* [[`2f48001574`](https://github.com/nodejs/node/commit/2f48001574)] - **src**: use ABORT() macro instead of abort() (Evan Lucas) [#9613](https://github.com/nodejs/node/pull/9613) +* [[`a9eb093ce3`](https://github.com/nodejs/node/commit/a9eb093ce3)] - **src**: fix memory leak introduced in 34febfbf4 (Ben Noordhuis) [#9604](https://github.com/nodejs/node/pull/9604) +* [[`f854d8c789`](https://github.com/nodejs/node/commit/f854d8c789)] - **test**: increase setMulticastLoopback() coverage (cjihrig) [#11277](https://github.com/nodejs/node/pull/11277) +* [[`1df09f9d37`](https://github.com/nodejs/node/commit/1df09f9d37)] - **test**: add known_issues test for #10223 (AnnaMag) [#11024](https://github.com/nodejs/node/pull/11024) +* [[`be34b629de`](https://github.com/nodejs/node/commit/be34b629de)] - **test**: increase coverage for stream's duplex (abouthiroppy) [#10963](https://github.com/nodejs/node/pull/10963) +* [[`dc24127e5c`](https://github.com/nodejs/node/commit/dc24127e5c)] - **test**: allow for slow hosts in spawnSync() test (Rich Trott) [#10998](https://github.com/nodejs/node/pull/10998) +* [[`2f4b6bda97`](https://github.com/nodejs/node/commit/2f4b6bda97)] - **test**: expand test coverage of fs.js (Vinícius do Carmo) [#10947](https://github.com/nodejs/node/pull/10947) +* [[`3f6a2dbc2f`](https://github.com/nodejs/node/commit/3f6a2dbc2f)] - **test**: enhance test-timers (Rich Trott) [#10960](https://github.com/nodejs/node/pull/10960) +* [[`6ca9901d8b`](https://github.com/nodejs/node/commit/6ca9901d8b)] - **test**: add process.assert's test (abouthiroppy) [#10911](https://github.com/nodejs/node/pull/10911) +* [[`d8af5a7431`](https://github.com/nodejs/node/commit/d8af5a7431)] - **test**: improve code in test-crypto-verify (Adrian Estrada) [#10845](https://github.com/nodejs/node/pull/10845) +* [[`4d1f7b1df8`](https://github.com/nodejs/node/commit/4d1f7b1df8)] - **test**: add dgram.Socket.prototype.bind's test (abouthiroppy) [#10894](https://github.com/nodejs/node/pull/10894) +* [[`6c1d82c68a`](https://github.com/nodejs/node/commit/6c1d82c68a)] - **test**: improving coverage for dgram (abouthiroppy) [#10783](https://github.com/nodejs/node/pull/10783) +* [[`017afd48fd`](https://github.com/nodejs/node/commit/017afd48fd)] - **test**: improve code in test-console-instance (Adrian Estrada) [#10813](https://github.com/nodejs/node/pull/10813) +* [[`1b1ba741c3`](https://github.com/nodejs/node/commit/1b1ba741c3)] - **test**: improve code in test-domain-multi (Adrian Estrada) [#10798](https://github.com/nodejs/node/pull/10798) +* [[`ee27917a65`](https://github.com/nodejs/node/commit/ee27917a65)] - **test**: improve test-stream2-large-read-stall (stefan judis) [#10725](https://github.com/nodejs/node/pull/10725) +* [[`9ac2316595`](https://github.com/nodejs/node/commit/9ac2316595)] - **test**: improve code in test-http-host-headers (Adrian Estrada) [#10830](https://github.com/nodejs/node/pull/10830) +* [[`a9278a063f`](https://github.com/nodejs/node/commit/a9278a063f)] - **test**: refactor cluster-preload.js (abouthiroppy) [#10701](https://github.com/nodejs/node/pull/10701) +* [[`db60d92e15`](https://github.com/nodejs/node/commit/db60d92e15)] - **test**: test hmac binding robustness (Sam Roberts) [#10923](https://github.com/nodejs/node/pull/10923) +* [[`a1a850f066`](https://github.com/nodejs/node/commit/a1a850f066)] - **test**: don't connect to :: (use localhost instead) (Gibson Fahnestock) +* [[`b3a8e95af3`](https://github.com/nodejs/node/commit/b3a8e95af3)] - **test**: improve test-assert (richnologies) [#10916](https://github.com/nodejs/node/pull/10916) +* [[`56970efe51`](https://github.com/nodejs/node/commit/56970efe51)] - **test**: increase coverage for punycode's decode (abouthiroppy) [#10940](https://github.com/nodejs/node/pull/10940) +* [[`df69c2148a`](https://github.com/nodejs/node/commit/df69c2148a)] - **test**: check fd 0,1,2 are used, not access mode (John Barboza) [#10339](https://github.com/nodejs/node/pull/10339) +* [[`7bceb4fb48`](https://github.com/nodejs/node/commit/7bceb4fb48)] - **test**: add message verification on assert.throws (Travis Meisenheimer) [#10890](https://github.com/nodejs/node/pull/10890) +* [[`1c223ecc70`](https://github.com/nodejs/node/commit/1c223ecc70)] - **test**: add http-common's test (abouthiroppy) [#10832](https://github.com/nodejs/node/pull/10832) +* [[`89e9da6b6d`](https://github.com/nodejs/node/commit/89e9da6b6d)] - **test**: tests for _readableStream.awaitDrain (Mark) [#8914](https://github.com/nodejs/node/pull/8914) +* [[`53b0f413cd`](https://github.com/nodejs/node/commit/53b0f413cd)] - **test**: improve the code in test-process-cpuUsage (Adrian Estrada) [#10714](https://github.com/nodejs/node/pull/10714) +* [[`b3d1700d1f`](https://github.com/nodejs/node/commit/b3d1700d1f)] - **test**: improve tests in pummel/test-exec (Chase Starr) [#10757](https://github.com/nodejs/node/pull/10757) +* [[`6e7dfb1f45`](https://github.com/nodejs/node/commit/6e7dfb1f45)] - **test**: fix temp-dir option in tools/test.py (Gibson Fahnestock) [#10723](https://github.com/nodejs/node/pull/10723) +* [[`9abde3ac6e`](https://github.com/nodejs/node/commit/9abde3ac6e)] - **test**: use realpath for NODE_TEST_DIR in common.js (Gibson Fahnestock) [#10723](https://github.com/nodejs/node/pull/10723) +* [[`f86c64a13a`](https://github.com/nodejs/node/commit/f86c64a13a)] - **test**: refactor the code of test-keep-alive.js (sivaprasanna) [#10684](https://github.com/nodejs/node/pull/10684) +* [[`4d51db87dc`](https://github.com/nodejs/node/commit/4d51db87dc)] - **test**: refactor test-doctool-html.js (abouthiroppy) [#10696](https://github.com/nodejs/node/pull/10696) +* [[`ab65429e44`](https://github.com/nodejs/node/commit/ab65429e44)] - **test**: refactor test-watch-file.js (sivaprasanna) [#10679](https://github.com/nodejs/node/pull/10679) +* [[`4453c0c1dc`](https://github.com/nodejs/node/commit/4453c0c1dc)] - **test**: refactor the code in test-child-process-spawn-loop.js (sivaprasanna) [#10605](https://github.com/nodejs/node/pull/10605) +* [[`42b86ea968`](https://github.com/nodejs/node/commit/42b86ea968)] - **test**: improve test-http-chunked-304 (Adrian Estrada) [#10462](https://github.com/nodejs/node/pull/10462) +* [[`1ae95e64ee`](https://github.com/nodejs/node/commit/1ae95e64ee)] - **test**: improve test-fs-readfile-zero-byte-liar (Adrian Estrada) [#10570](https://github.com/nodejs/node/pull/10570) +* [[`3f3c78d785`](https://github.com/nodejs/node/commit/3f3c78d785)] - **test**: refactor test-fs-utimes (Junshu Okamoto) [#9290](https://github.com/nodejs/node/pull/9290) +* [[`50a868b3f7`](https://github.com/nodejs/node/commit/50a868b3f7)] - **test**: require handler to be run in sigwinch test (Rich Trott) [#11068](https://github.com/nodejs/node/pull/11068) +* [[`c1f45ec2d0`](https://github.com/nodejs/node/commit/c1f45ec2d0)] - **test**: add 2nd argument to throws in test-assert (Marlena Compton) [#11061](https://github.com/nodejs/node/pull/11061) +* [[`f24aa7e071`](https://github.com/nodejs/node/commit/f24aa7e071)] - **test**: improve error messages in test-npm-install (Gonen Dukas) [#11027](https://github.com/nodejs/node/pull/11027) +* [[`1db89d4009`](https://github.com/nodejs/node/commit/1db89d4009)] - **test**: improve coverage on removeListeners functions (matsuda-koushi) [#11140](https://github.com/nodejs/node/pull/11140) +* [[`c532c16e53`](https://github.com/nodejs/node/commit/c532c16e53)] - **test**: increase specificity in dgram test (Rich Trott) [#11187](https://github.com/nodejs/node/pull/11187) +* [[`cb81ae8eea`](https://github.com/nodejs/node/commit/cb81ae8eea)] - **test**: add vm module edge cases (Franziska Hinkelmann) [#11265](https://github.com/nodejs/node/pull/11265) +* [[`8629c956c3`](https://github.com/nodejs/node/commit/8629c956c3)] - **test**: improve punycode test coverage (Sebastian Van Sande) [#11144](https://github.com/nodejs/node/pull/11144) +* [[`caf1ba15f9`](https://github.com/nodejs/node/commit/caf1ba15f9)] - **test**: add coverage for dgram _createSocketHandle() (cjihrig) [#11291](https://github.com/nodejs/node/pull/11291) +* [[`d729e52ef3`](https://github.com/nodejs/node/commit/d729e52ef3)] - **test**: improve crypto coverage (Akito Ito) [#11280](https://github.com/nodejs/node/pull/11280) +* [[`d1a8588cab`](https://github.com/nodejs/node/commit/d1a8588cab)] - **test**: improve message in net-connect-local-error (Rich Trott) [#11393](https://github.com/nodejs/node/pull/11393) +* [[`f2fb4143b4`](https://github.com/nodejs/node/commit/f2fb4143b4)] - **test**: refactor test-dgram-membership (Rich Trott) [#11388](https://github.com/nodejs/node/pull/11388) +* [[`bf4703d66f`](https://github.com/nodejs/node/commit/bf4703d66f)] - **test**: remove unused args and comparison fix (Alexander) [#11396](https://github.com/nodejs/node/pull/11396) +* [[`28471c23ff`](https://github.com/nodejs/node/commit/28471c23ff)] - **test**: refactor test-http-response-splitting (Arseniy Maximov) [#11429](https://github.com/nodejs/node/pull/11429) +* [[`cd3e17e248`](https://github.com/nodejs/node/commit/cd3e17e248)] - **test**: improve coverage in test-crypto.dh (Eric Christie) [#11253](https://github.com/nodejs/node/pull/11253) +* [[`fa681ea55a`](https://github.com/nodejs/node/commit/fa681ea55a)] - **test**: add regex check to test-module-loading (Tarang Hirani) [#11413](https://github.com/nodejs/node/pull/11413) +* [[`f0eee61a93`](https://github.com/nodejs/node/commit/f0eee61a93)] - **test**: throw check in test-zlib-write-after-close (Jason Wilson) [#11482](https://github.com/nodejs/node/pull/11482) +* [[`f0c7c7fad4`](https://github.com/nodejs/node/commit/f0c7c7fad4)] - **test**: fix flaky test-vm-timeout-rethrow (Kunal Pathak) [#11530](https://github.com/nodejs/node/pull/11530) +* [[`53f2848dc8`](https://github.com/nodejs/node/commit/53f2848dc8)] - **test**: favor assertions over console logging (Rich Trott) [#11547](https://github.com/nodejs/node/pull/11547) +* [[`0109321fd8`](https://github.com/nodejs/node/commit/0109321fd8)] - **test**: refactor test-https-truncate (Rich Trott) [#10225](https://github.com/nodejs/node/pull/10225) +* [[`536733697c`](https://github.com/nodejs/node/commit/536733697c)] - **test**: simplify test-http-client-unescaped-path (Rod Vagg) [#9649](https://github.com/nodejs/node/pull/9649) +* [[`4ce9bfb4e7`](https://github.com/nodejs/node/commit/4ce9bfb4e7)] - **test**: exclude pseudo-tty test pertinent to #11541 (Gireesh Punathil) [#11602](https://github.com/nodejs/node/pull/11602) +* [[`53dd1a8539`](https://github.com/nodejs/node/commit/53dd1a8539)] - **tls**: do not crash on STARTTLS when OCSP requested (Fedor Indutny) [#10706](https://github.com/nodejs/node/pull/10706) +* [[`e607ff52fa`](https://github.com/nodejs/node/commit/e607ff52fa)] - **tools**: rename eslintrc to an undeprecated format (Sakthipriyan Vairamani) [#7699](https://github.com/nodejs/node/pull/7699) +* [[`6648b729b7`](https://github.com/nodejs/node/commit/6648b729b7)] - **tools**: add compile_commands.json gyp generator (Ben Noordhuis) [#7986](https://github.com/nodejs/node/pull/7986) +* [[`8f49962f47`](https://github.com/nodejs/node/commit/8f49962f47)] - **tools**: suggest python2 command in configure (Roman Reiss) [#11375](https://github.com/nodejs/node/pull/11375) +* [[`4b83a83c06`](https://github.com/nodejs/node/commit/4b83a83c06)] - **tools,doc**: add Google Analytics tracking. (Phillip Johnsen) [#6601](https://github.com/nodejs/node/pull/6601) +* [[`ef63af6006`](https://github.com/nodejs/node/commit/ef63af6006)] - **tty**: avoid oob warning in TTYWrap::GetWindowSize() (Dmitry Tsvettsikh) [#11454](https://github.com/nodejs/node/pull/11454) +* [[`2c84601062`](https://github.com/nodejs/node/commit/2c84601062)] - **util**: don't init Debug if it's not needed yet (Bryan English) [#8452](https://github.com/nodejs/node/pull/8452) + ## 2017-02-21, Version 4.8.0 'Argon' (LTS), @MylesBorins This LTS release comes with 118 commits. This includes 73 which are doc diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 214f262fdc61d5..46fb6a406192f9 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -4,6 +4,9 @@ * [Issues and Pull Requests](#issues-and-pull-requests) * [Accepting Modifications](#accepting-modifications) + - [Internal vs. Public API](#internal-vs-public-api) + - [Breaking Changes](#breaking-changes) + - [Deprecations](#deprecations) - [Involving the CTC](#involving-the-ctc) * [Landing Pull Requests](#landing-pull-requests) - [Technical HOWTO](#technical-howto) @@ -81,6 +84,206 @@ All pull requests that modify executable code should be subjected to continuous integration tests on the [project CI server](https://ci.nodejs.org/). +### Internal vs. Public API + +Due to the nature of the JavaScript language, it can often be difficult to +establish a clear distinction between which parts of the Node.js implementation +represent the "public" API Node.js users should assume to be stable and which +are considered part of the "internal" implementation detail of Node.js itself. +A general rule of thumb has been to base the determination off what +functionality is actually *documented* in the official Node.js API +documentation. However, it has been repeatedly demonstrated that either the +documentation does not completely cover implemented behavior or that Node.js +users have come to rely heavily on undocumented aspects of the Node.js +implementation. + +While there are numerous exceptions, the following general rules should be +followed to determine which aspects of the Node.js API are considered +"internal": + +- Any and all functionality exposed via `process.binding(...)` is considered to + be internal and *not* part of the Node.js Public API. +- Any and all functionality implemented in `lib/internal/**/*.js` that is not + re-exported by code in `lib/*.js`, or is not documented as part of the + Node.js Public API, is considered to be internal. +- Any object property or method whose key is a non-exported `Symbol` is + considered to be an internal property. +- Any object property or method whose key begins with the underscore `_` prefix, + and is not documented as part of the Node.js Public API, is considered to be + an internal property. +- Any object, property, method, argument, behavior, or event not documented in + the Node.js documentation is considered to be internal. +- Any native C/C++ APIs/ABIs exported by the Node.js `*.h` header files that + are hidden behind the `NODE_WANT_INTERNALS` flag are considered to be + internal. + +Exception to each of these points can be made if use or behavior of a given +internal API can be demonstrated to be sufficiently relied upon by the Node.js +ecosystem such that any changes would cause too much breakage. The threshold +for what qualifies as "too much breakage" is to be decided on a case-by-case +basis by the CTC. + +If it is determined that a currently undocumented object, property, method, +argument, or event *should* be documented, then a pull request adding the +documentation is required in order for it to be considered part of the "public" +API. + +Making a determination about whether something *should* be documented can be +difficult and will need to be handled on a case-by-case basis. For instance, if +one documented API cannot be used successfully without the use of a second +*currently undocumented* API, then the second API *should* be documented. If +using an API in a manner currently undocumented achieves a particular useful +result, a decision will need to be made whether or not that falls within the +supported scope of that API; and if it does, it should be documented. + +Breaking changes to internal elements are permitted in semver-patch or +semver-minor commits but Collaborators should take significant care when +making and reviewing such changes. Before landing such commits, an effort +must be made to determine the potential impact of the change in the ecosystem +by analyzing current use and by validating such changes through ecosystem +testing using the [Canary in the Goldmine](https://github.com/nodejs/citgm) +tool. If a change cannot be made without ecosystem breakage, then CTC review is +required before landing the change as anything less than semver-major. + +If a determination is made that a particular internal API (for instance, an +underscore `_` prefixed property) is sufficiently relied upon by the ecosystem +such that any changes may break user code, then serious consideration should be +given to providing an alternative Public API for that functionality before any +breaking changes are made. + +### Breaking Changes + +Backwards-incompatible changes may land on the master branch at any time after +sufficient review by collaborators and approval of at least two CTC members. + +Examples of breaking changes include, but are not necessarily limited to, +removal or redefinition of existing API arguments, changing return values +(except when return values do not currently exist), removing or modifying +existing properties on an options argument, adding or removing errors, +changing error messages in any way, altering expected timing of an event (e.g. +moving from sync to async responses or vice versa), and changing the +non-internal side effects of using a particular API. + +With a few notable exceptions outlined below, when backwards incompatible +changes to a *Public* API are necessary, the existing API *must* be deprecated +*first* and the new API either introduced in parallel or added after the next +major Node.js version following the deprecation as a replacement for the +deprecated API. In other words, as a general rule, existing *Public* APIs +*must not* change (in a backwards incompatible way) without a deprecation. + +Exception to this rule is given in the following cases: + +* Adding or removing errors thrown or reported by a Public API; +* Changing error messages; +* Altering the timing and non-internal side effects of the Public API. + +Such changes *must* be handled as semver-major changes but MAY be landed +without a [Deprecation cycle](#deprecation-cycle). + +From time-to-time, in particularly exceptional cases, the CTC may be asked to +consider and approve additional exceptions to this rule. + +Purely additive changes (e.g. adding new events to EventEmitter +implementations, adding new arguments to a method in a way that allows +existing code to continue working without modification, or adding new +properties to an options argument) are handled as semver-minor changes. + +Note that errors thrown, along with behaviors and APIs implemented by +dependencies of Node.js (e.g. those originating from V8) are generally not +under the control of Node.js and therefore *are not directly subject to this +policy*. However, care should still be taken when landing updates to +dependencies when it is known or expected that breaking changes to error +handling may have been made. Additional CI testing may be required. + +#### When breaking changes actually break things + +Breaking changes are difficult primarily because they change the fundamental +assumptions a user of Node.js has when writing their code and can cause +existing code to stop functioning as expected -- costing developers and users +time and energy to fix. + +Because breaking (semver-major) changes are permitted to land in master at any +time, it should be *understood and expected* that at least some subset of the +user ecosystem *may* be adversely affected *in the short term* when attempting +to build and use Node.js directly from master. This potential instability is +precisely why Node.js offers distinct Current and LTS release streams that +offer explicit stability guarantees. + +Specifically: + +* Breaking changes should *never* land in Current or LTS except when: + * Resolving critical security issues. + * Fixing a critical bug (e.g. fixing a memory leak) requires a breaking + change. + * There is CTC consensus that the change is required. +* If a breaking commit does accidentally land in a Current or LTS branch, an + attempt to fix the issue will be made before the next release; If no fix is + provided then the commit will be reverted. + +When any change is landed in master, and it is determined that the such +changes *do* break existing code, a decision may be made to revert those +changes either temporarily or permanently. However, the decision to revert or +not can often be based on many complex factors that are not easily codified. It +is also possible that the breaking commit can be labeled retroactively as a +semver-major change that will not be backported to Current or LTS branches. + +### Deprecations + +Deprecation refers to the identification of Public APIs that should no longer +be used and that may be removed or modified in non-backwards compatible ways in +a future major release of Node.js. Deprecation *may* be used with internal APIs +if there is expected impact on the user community. + +Node.js uses three fundamental Deprecation levels: + +* *Documentation-Only Deprecation* refers to elements of the Public API that are + being staged for deprecation in a future Node.js major release. An explicit + notice indicating the deprecated status is added to the API documentation + *but no functional changes are implemented in the code*. There will be no + runtime deprecation warning emitted for such deprecations. + +* *Runtime Deprecation* refers to the use of process warnings emitted at + runtime the first time that a deprecated API is used. A command-line + switch can be used to escalate such warnings into runtime errors that will + cause the Node.js process to exit. As with Documentation-Only Deprecation, + the documentation for the API must be updated to clearly indicate the + deprecated status. + +* *End-of-life* refers to APIs that have gone through Runtime Deprecation and + are ready to be removed from Node.js entirely. + +Documentation-Only Deprecations *may* be handled as semver-minor or +semver-major changes. Such deprecations have no impact on the successful +operation of running code and therefore should not be viewed as breaking +changes. + +Runtime Deprecations and End-of-life APIs (internal or public) *must* be +handled as semver-major changes unless there is CTC consensus to land the +deprecation as a semver-minor. + +All Documentation-Only and Runtime deprecations will be assigned a unique +identifier that can be used to persistently refer to the deprecation in +documentation, emitted process warnings, or errors thrown. Documentation for +these identifiers will be included in the Node.js API documentation and will +be immutable once assigned. Even if End-of-Life code is removed from Node.js, +the documentation for the assigned deprecation identifier must remain in the +Node.js API documentation. + + +A "Deprecation cycle" is one full Node.js major release during which an API +has been in one of the three Deprecation levels. (Note that Documentation-Only +Deprecations may land in a Node.js minor release but must not be upgraded to +a Runtime Deprecation until the next major release.) + +No API can be moved to End-of-life without first having gone through a +Runtime Deprecation cycle. + +A best effort will be made to communicate pending deprecations and associated +mitigations with the ecosystem as soon as possible (preferably *before* the pull +request adding the deprecation lands in master). All deprecations included in +a Node.js release should be listed prominently in the "Notable Changes" section +of the release notes. + ### Involving the CTC Collaborators may opt to elevate pull requests or issues to the CTC for @@ -253,7 +456,7 @@ You can find more information [in the full LTS plan](https://github.com/nodejs/l #### How does LTS work? -Once a stable branch enters LTS, changes in that branch are limited to bug +Once a Current branch enters LTS, changes in that branch are limited to bug fixes, security updates, possible npm updates, documentation updates, and certain performance improvements that can be demonstrated to not break existing applications. Semver-minor changes are only permitted if required for bug fixes @@ -261,7 +464,7 @@ and then only on a case-by-case basis with LTS WG and possibly Core Technical Committee (CTC) review. Semver-major changes are permitted only if required for security related fixes. -Once a stable branch moves into Maintenance mode, only **critical** bugs, +Once a Current branch moves into Maintenance mode, only **critical** bugs, **critical** security fixes, and documentation updates will be permitted. #### Landing semver-minor commits in LTS @@ -281,9 +484,8 @@ CTC for further discussion. #### How are LTS Branches Managed? -There are currently three LTS branches: `v4.x`, `v0.10`, and `v0.12`. Each -of these is paired with a "staging" branch: `v4.x-staging`, `v0.10-staging`, -and `v0.12-staging`. +There are currently two LTS branches: `v6.x` and `v4.x`. Each of these is paired +with a "staging" branch: `v6.x-staging` and `v4.x-staging`. As commits land in `master`, they are cherry-picked back to each staging branch as appropriate. If the commit applies only to the LTS branch, the @@ -304,18 +506,14 @@ please feel free to include that information in the PR thread. Several LTS related issue and PR labels have been provided: +* `lts-watch-v6.x` - tells the LTS WG that the issue/PR needs to be considered + for landing in the `v6.x-staging` branch. * `lts-watch-v4.x` - tells the LTS WG that the issue/PR needs to be considered for landing in the `v4.x-staging` branch. -* `lts-watch-v0.10` - tells the LTS WG that the issue/PR needs to be considered - for landing in the `v0.10-staging` branch. -* `lts-watch-v0.12` - tells the LTS WG that the issue/PR needs to be considered - for landing in the `v0.12-staging` branch. +* `land-on-v6.x` - tells the release team that the commit should be landed + in a future v6.x release * `land-on-v4.x` - tells the release team that the commit should be landed in a future v4.x release -* `land-on-v0.10` - tells the release team that the commit should be landed - in a future v0.10 release -* `land-on-v0.12` - tells the release team that the commit should be landed - in a future v0.12 release Any collaborator can attach these labels to any PR/issue. As commits are landed into the staging branches, the `lts-watch-` label will be removed. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0355cdf34f2d49..4cb532f9851716 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,7 +16,7 @@ For general help using Node.js, please file an issue at the [Node.js help repository](https://github.com/nodejs/help/issues). Discussion of non-technical topics including subjects like intellectual -property, trademark and high level project questions should move to the +property, trademark, and high level project questions should move to the [Technical Steering Committee (TSC)](https://github.com/nodejs/TSC/issues) instead. @@ -86,6 +86,9 @@ Create a branch and start hacking: $ git checkout -b my-branch -t origin/master ``` +Any text you write should follow the [Style Guide](doc/STYLE_GUIDE.md), +including comments and API documentation. + ### Step 3: Commit Make sure git knows your name and email address: @@ -106,8 +109,12 @@ Writing good commit logs is important. A commit log should describe what changed and why. Follow these guidelines when writing one: 1. The first line should be 50 characters or less and contain a short - description of the change prefixed with the name of the changed - subsystem (e.g. "net: add localAddress and localPort to Socket"). + description of the change. All words in the description should be in + lowercase with the exception of proper nouns, acronyms, and the ones that + refer to code, like function/variable names. The description should + be prefixed with the name of the changed subsystem and start with an + imperative verb. Example: "net: add localAddress and localPort + to Socket" 2. Keep the second line blank. 3. Wrap all other lines at 72 columns. @@ -118,11 +125,11 @@ subsystem: explaining the commit in one line Body of commit message is a few lines of text, explaining things in more detail, possibly giving some background about the issue -being fixed, etc. etc. +being fixed, etc. The body of the commit message can be several paragraphs, and please do proper word-wrap and keep columns shorter than about -72 characters or so. That way `git log` will show things +72 characters or so. That way, `git log` will show things nicely even when it is indented. ``` @@ -164,19 +171,19 @@ $ ./configure && make -j8 test Windows: ```text - .\vcbuild nosign test +> vcbuild test ``` (See the [BUILDING.md](./BUILDING.md) for more details.) -Make sure the linter is happy and that all tests pass. Please, do not submit -patches that fail either check. +Make sure the linter does not report any issues and that all tests pass. Please +do not submit patches that fail either check. -Running `make test`/`.\vcbuild nosign test` will run the linter as well unless one or +Running `make test`/`vcbuild test` will run the linter as well unless one or more tests fail. If you want to run the linter without running tests, use -`make lint`/`.\vcbuild nosign jslint`. +`make lint`/`vcbuild lint`. If you are updating tests and just want to run a single test to check it, you can use this syntax to run it exactly as the test harness would: @@ -208,7 +215,7 @@ Pull requests are usually reviewed within a few days. ### Step 7: Discuss and update You will probably get feedback or requests for changes to your Pull Request. -This is a big part of the submission process, so don't be disheartened! +This is a big part of the submission process so don't be disheartened! To make changes to an existing Pull Request, make the changes to your branch. When you push that branch to your fork, GitHub will automatically update the @@ -246,7 +253,7 @@ If in doubt, you can always ask for guidance in the Pull Request or on Feel free to post a comment in the Pull Request to ping reviewers if you are awaiting an answer on something. If you encounter words or acronyms that -seem unfamiliar, check out this +seem unfamiliar, refer to this [glossary](https://sites.google.com/a/chromium.org/dev/glossary). Note that multiple commits often get squashed when they are landed (see the @@ -254,7 +261,7 @@ notes about [commit squashing](#commit-squashing)). ### Step 8: Landing -In order to get landed, a Pull Request needs to be reviewed and +In order to land, a Pull Request needs to be reviewed and [approved](#getting-approvals-for-your-pull-request) by at least one Node.js Collaborator and pass a [CI (Continuous Integration) test run](#ci-testing). @@ -274,8 +281,8 @@ your name on it. Congratulations and thanks for your contribution! ### Commit Squashing -When the commits in your Pull Request get landed, they will be squashed -into one commit per logical change, with metadata added to the commit +When the commits in your Pull Request land, they will be squashed +into one commit per logical change. Metadata will be added to the commit message (including links to the Pull Request, links to relevant issues, and the names of the reviewers). The commit history of your Pull Request, however, will stay intact on the Pull Request page. @@ -305,9 +312,9 @@ Every Pull Request needs to be tested to make sure that it works on the platforms that Node.js supports. This is done by running the code through the CI system. -Only a Collaborator can request a CI run. Usually one of them will do it +Only a Collaborator can start a CI run. Usually one of them will do it for you as approvals for the Pull Request come in. -If not, you can ask a Collaborator to request a CI run. +If not, you can ask a Collaborator to start a CI run. ### Waiting Until the Pull Request Gets Landed diff --git a/Makefile b/Makefile index 3160f41c41fd3f..61153899e0db1d 100644 --- a/Makefile +++ b/Makefile @@ -60,13 +60,18 @@ endif # to check for changes. .PHONY: $(NODE_EXE) $(NODE_G_EXE) +# The -r/-L check stops it recreating the link if it is already in place, +# otherwise $(NODE_EXE) being a .PHONY target means it is always re-run. +# Without the check there is a race condition between the link being deleted +# and recreated which can break the addons build when running test-ci +# See comments on the build-addons target for some more info $(NODE_EXE): config.gypi out/Makefile $(MAKE) -C out BUILDTYPE=Release V=$(V) - ln -fs out/Release/$(NODE_EXE) $@ + if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Release/$(NODE_EXE) $@; fi $(NODE_G_EXE): config.gypi out/Makefile $(MAKE) -C out BUILDTYPE=Debug V=$(V) - ln -fs out/Debug/$(NODE_EXE) $@ + if [ ! -r $@ -o ! -L $@ ]; then ln -fs out/Debug/$(NODE_EXE) $@; fi out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp deps/v8/build/toolchain.gypi deps/v8/build/features.gypi deps/v8/tools/gyp/v8.gyp node.gyp config.gypi $(PYTHON) tools/gyp_node.py -f make @@ -151,7 +156,7 @@ test/addons/.buildstamp: config.gypi \ # Cannot use $(wildcard test/addons/*/) here, it's evaluated before # embedded addons have been generated from the documentation. @for dirname in test/addons/*/; do \ - echo "\nBuilding addon $$PWD/$$dirname" ; \ + printf "\nBuilding addon $$PWD/$$dirname\n" ; \ env MAKEFLAGS="-j1" $(NODE) deps/npm/node_modules/node-gyp/bin/node-gyp \ --loglevel=$(LOGLEVEL) rebuild \ --python="$(PYTHON)" \ @@ -194,12 +199,22 @@ test-ci-js: $(PYTHON) tools/test.py -p tap --logfile test.tap \ --mode=release --flaky-tests=$(FLAKY_TESTS) \ $(TEST_CI_ARGS) $(CI_JS_SUITES) + # Clean up any leftover processes + PS_OUT=`ps awwx | grep Release/node | grep -v grep | awk '{print $$1}'`; \ + if [ "$${PS_OUT}" ]; then \ + echo $${PS_OUT} | $(XARGS) kill; exit 1; \ + fi test-ci: LOGLEVEL := info test-ci: | build-addons out/Release/cctest --gtest_output=tap:cctest.tap $(PYTHON) tools/test.py -p tap --logfile test.tap --mode=release --flaky-tests=$(FLAKY_TESTS) \ $(TEST_CI_ARGS) $(CI_NATIVE_SUITES) $(CI_JS_SUITES) + # Clean up any leftover processes + PS_OUT=`ps awwx | grep Release/node | grep -v grep | awk '{print $$1}'`; \ + if [ "$${PS_OUT}" ]; then \ + echo $${PS_OUT} | $(XARGS) kill; exit 1; \ + fi test-release: test-build $(PYTHON) tools/test.py --mode=release @@ -265,6 +280,11 @@ test-v8-benchmarks: v8 test-v8-all: test-v8 test-v8-intl test-v8-benchmarks # runs all v8 tests +# Google Analytics ID used for tracking API docs page views, empty +# DOCS_ANALYTICS means no tracking scripts will be included in the +# generated .html files +DOCS_ANALYTICS ?= + apidoc_sources = $(wildcard doc/api/*.md) apidocs_html = $(apidoc_dirs) $(apiassets) $(addprefix out/,$(apidoc_sources:.md=.html)) apidocs_json = $(apidoc_dirs) $(apiassets) $(addprefix out/,$(apidoc_sources:.md=.json)) @@ -298,7 +318,8 @@ out/doc/api/%.json: doc/api/%.md [ -x $(NODE) ] && $(NODE) $(gen-json) || node $(gen-json) # check if ./node is actually set, else use user pre-installed binary -gen-html = tools/doc/generate.js --node-version=$(FULLVERSION) --format=html --template=doc/template.html $< > $@ +gen-html = tools/doc/generate.js --node-version=$(FULLVERSION) --format=html \ + --template=doc/template.html --analytics=$(DOCS_ANALYTICS) $< > $@ out/doc/api/%.html: doc/api/%.md @[ -e tools/doc/node_modules/js-yaml/package.json ] || \ [ -e tools/eslint/node_modules/js-yaml/package.json ] || \ @@ -458,7 +479,7 @@ PKGDIR=out/dist-osx release-only: @if [ "$(DISTTYPE)" != "nightly" ] && [ "$(DISTTYPE)" != "next-nightly" ] && \ `grep -q REPLACEME doc/api/*.md`; then \ - echo 'Please update Added: tags in the documentation first.' ; \ + echo 'Please update REPLACEME in Added: tags in doc/api/*.md (See doc/releases.md)' ; \ exit 1 ; \ fi @if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \ @@ -543,7 +564,7 @@ ifeq ($(XZ), 0) ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.xz.done" endif -doc-upload: tar +doc-upload: doc ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)" chmod -R ug=rw-x+X,o=r+X out/doc/ scp -pr out/doc/ $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/ diff --git a/README.md b/README.md index 3c77d87c06f171..43f19ade786830 100644 --- a/README.md +++ b/README.md @@ -155,56 +155,56 @@ more information about the governance of the Node.js project, see ### CTC (Core Technical Committee) * [addaleax](https://github.com/addaleax) - -**Anna Henningsen** <anna@addaleax.net> +**Anna Henningsen** <anna@addaleax.net> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <info@bnoordhuis.nl> * [ChALkeR](https://github.com/ChALkeR) - -**Сковорода Никита Андреевич** <chalkerx@gmail.com> -* [chrisdickinson](https://github.com/chrisdickinson) - -**Chris Dickinson** <christopher.s.dickinson@gmail.com> +**Сковорода Никита Андреевич** <chalkerx@gmail.com> (he/him) * [cjihrig](https://github.com/cjihrig) - **Colin Ihrig** <cjihrig@gmail.com> * [evanlucas](https://github.com/evanlucas) - -**Evan Lucas** <evanlucas@me.com> +**Evan Lucas** <evanlucas@me.com> (he/him) * [fishrock123](https://github.com/fishrock123) - **Jeremiah Senkpiel** <fishrock123@rocketmail.com> * [indutny](https://github.com/indutny) - **Fedor Indutny** <fedor.indutny@gmail.com> * [jasnell](https://github.com/jasnell) - -**James M Snell** <jasnell@gmail.com> +**James M Snell** <jasnell@gmail.com> (he/him) * [mhdawson](https://github.com/mhdawson) - -**Michael Dawson** <michael_dawson@ca.ibm.com> +**Michael Dawson** <michael_dawson@ca.ibm.com> (he/him) * [misterdjules](https://github.com/misterdjules) - **Julien Gilli** <jgilli@nodejs.org> * [mscdex](https://github.com/mscdex) - **Brian White** <mscdex@mscdex.net> +* [MylesBorins](https://github.com/MylesBorins) - +**Myles Borins** <myles.borins@gmail.com> (he/him) * [ofrobots](https://github.com/ofrobots) - **Ali Ijaz Sheikh** <ofrobots@google.com> * [rvagg](https://github.com/rvagg) - **Rod Vagg** <rod@vagg.org> * [shigeki](https://github.com/shigeki) - -**Shigeki Ohtsu** <ohtsu@iij.ad.jp> +**Shigeki Ohtsu** <ohtsu@iij.ad.jp> (he/him) * [targos](https://github.com/targos) - -**Michaël Zasso** <targos@protonmail.com> -* [TheAlphaNerd](https://github.com/TheAlphaNerd) - -**Myles Borins** <myles.borins@gmail.com> +**Michaël Zasso** <targos@protonmail.com> (he/him) * [thefourtheye](https://github.com/thefourtheye) - -**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> +**Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> (he/him) * [trevnorris](https://github.com/trevnorris) - **Trevor Norris** <trev.norris@gmail.com> * [Trott](https://github.com/Trott) - -**Rich Trott** <rtrott@gmail.com> +**Rich Trott** <rtrott@gmail.com> (he/him) ### Collaborators +* [abouthiroppy](https://github.com/abouthiroppy) - +**Yuta Hiroto** <hello@about-hiroppy.com> (he/him) * [ak239](https://github.com/ak239) - **Aleksei Koziatinskii** <ak239spb@gmail.com> * [andrasq](https://github.com/andrasq) - **Andras** <andras@kinvey.com> * [AndreasMadsen](https://github.com/AndreasMadsen) - -**Andreas Madsen** <amwebdk@gmail.com> +**Andreas Madsen** <amwebdk@gmail.com> (he/him) * [bengl](https://github.com/bengl) - -**Bryan English** <bryan@bryanenglish.com> +**Bryan English** <bryan@bryanenglish.com> (he/him) * [benjamingr](https://github.com/benjamingr) - **Benjamin Gruenbaum** <benjamingr@gmail.com> * [bmeck](https://github.com/bmeck) - @@ -215,10 +215,14 @@ more information about the governance of the Node.js project, see **Bartosz Sosnowski** <bartosz@janeasystems.com> * [calvinmetcalf](https://github.com/calvinmetcalf) - **Calvin Metcalf** <calvin.metcalf@gmail.com> +* [chrisdickinson](https://github.com/chrisdickinson) - +**Chris Dickinson** <christopher.s.dickinson@gmail.com> * [claudiorodriguez](https://github.com/claudiorodriguez) - **Claudio Rodriguez** <cjrodr@yahoo.com> * [danbev](https://github.com/danbev) - **Daniel Bevenius** <daniel.bevenius@gmail.com> +* [edsadr](https://github.com/edsadr) - +**Adrian Estrada** <edsadr@gmail.com> (he/him) * [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - **Robert Jefe Lindstaedt** <robert.lindstaedt@gmail.com> * [estliberitas](https://github.com/estliberitas) - @@ -232,7 +236,7 @@ more information about the governance of the Node.js project, see * [geek](https://github.com/geek) - **Wyatt Preul** <wpreul@gmail.com> * [gibfahn](https://github.com/gibfahn) - -**Gibson Fahnestock** <gibfahn@gmail.com> +**Gibson Fahnestock** <gibfahn@gmail.com> (he/him) * [iarna](https://github.com/iarna) - **Rebecca Turner** <me@re-becca.org> * [imyller](https://github.com/imyller) - @@ -240,7 +244,7 @@ more information about the governance of the Node.js project, see * [isaacs](https://github.com/isaacs) - **Isaac Z. Schlueter** <i@izs.me> * [italoacasas](https://github.com/italoacasas) - -**Italo A. Casas** <me@italoacasas.com> +**Italo A. Casas** <me@italoacasas.com> (he/him) * [iWuzHere](https://github.com/iWuzHere) - **Imran Iqbal** <imran@imraniqbal.org> * [JacksonTian](https://github.com/JacksonTian) - @@ -254,23 +258,23 @@ more information about the governance of the Node.js project, see * [joshgav](https://github.com/joshgav) - **Josh Gavant** <josh.gavant@outlook.com> * [joyeecheung](https://github.com/joyeecheung) - -**Joyee Cheung** <joyeec9h3@gmail.com> +**Joyee Cheung** <joyeec9h3@gmail.com> (she/her) * [julianduque](https://github.com/julianduque) - -**Julian Duque** <julianduquej@gmail.com> +**Julian Duque** <julianduquej@gmail.com> (he/him) * [JungMinu](https://github.com/JungMinu) - -**Minwoo Jung** <jmwsoft@gmail.com> +**Minwoo Jung** <minwoo@nodesource.com> (he/him) * [lance](https://github.com/lance) - **Lance Ball** <lball@redhat.com> * [lpinca](https://github.com/lpinca) - -**Luigi Pinca** <luigipinca@gmail.com> +**Luigi Pinca** <luigipinca@gmail.com> (he/him) * [lxe](https://github.com/lxe) - **Aleksey Smolenchuk** <lxe@lxe.co> * [matthewloring](https://github.com/matthewloring) - **Matthew Loring** <mattloring@google.com> * [mcollina](https://github.com/mcollina) - -**Matteo Collina** <matteo.collina@gmail.com> +**Matteo Collina** <matteo.collina@gmail.com> (he/him) * [micnic](https://github.com/micnic) - -**Nicu Micleușanu** <micnic90@gmail.com> +**Nicu Micleușanu** <micnic90@gmail.com> (he/him) * [mikeal](https://github.com/mikeal) - **Mikeal Rogers** <mikeal.rogers@gmail.com> * [monsanto](https://github.com/monsanto) - @@ -282,7 +286,7 @@ more information about the governance of the Node.js project, see * [orangemocha](https://github.com/orangemocha) - **Alexis Campailla** <orangemocha@nodejs.org> * [othiym23](https://github.com/othiym23) - -**Forrest L Norvell** <ogd@aoaioxxysz.net> +**Forrest L Norvell** <ogd@aoaioxxysz.net> (he/him) * [petkaantonov](https://github.com/petkaantonov) - **Petka Antonov** <petka_antonov@hotmail.com> * [phillipj](https://github.com/phillipj) - @@ -294,7 +298,7 @@ more information about the governance of the Node.js project, see * [princejwesley](https://github.com/princejwesley) - **Prince John Wesley** <princejohnwesley@gmail.com> * [qard](https://github.com/qard) - -**Stephen Belanger** <admin@stephenbelanger.com> +**Stephen Belanger** <admin@stephenbelanger.com> (he/him) * [rlidwka](https://github.com/rlidwka) - **Alex Kocharin** <alex@kocharin.ru> * [rmg](https://github.com/rmg) - @@ -324,9 +328,11 @@ more information about the governance of the Node.js project, see * [tellnes](https://github.com/tellnes) - **Christian Tellnes** <christian@tellnes.no> * [thekemkid](https://github.com/thekemkid) - -**Glen Keane** <glenkeane.94@gmail.com> +**Glen Keane** <glenkeane.94@gmail.com> (he/him) * [thlorenz](https://github.com/thlorenz) - **Thorsten Lorenz** <thlorenz@gmx.de> +* [TimothyGu](https://github.com/TimothyGu) - +**Timothy Gu** <timothygu99@gmail.com> (he/him) * [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** <m.j.tunnicliffe@gmail.com> * [vkurchatkin](https://github.com/vkurchatkin) - @@ -344,14 +350,14 @@ project. ### Release Team -Releases of Node.js and io.js will be signed with one of the following GPG keys: +Node.js releases are signed with one of the following GPG keys: -* **Chris Dickinson** <christopher.s.dickinson@gmail.com> -`9554F04D7259F04124DE6B476D5A82AC7E37093B` * **Colin Ihrig** <cjihrig@gmail.com> `94AE36675C464D64BAFA68DD7434390BDBE9B9C5` * **Evan Lucas** <evanlucas@me.com> `B9AE9905FFD7803F25714661B63B535A4C206CA9` +* **Italo A. Casas** <me@italoacasas.com> +`56730D5401028683275BD23C23EFEFE93C4CFFFE` * **James M Snell** <jasnell@keybase.io> `71DCFD284A79C3B38668286BC97EC7A07EDE3FC1` * **Jeremiah Senkpiel** <fishrock@keybase.io> @@ -364,21 +370,22 @@ Releases of Node.js and io.js will be signed with one of the following GPG keys: The full set of trusted release keys can be imported by running: ```shell -gpg --keyserver pool.sks-keyservers.net --recv-keys 9554F04D7259F04124DE6B476D5A82AC7E37093B gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 gpg --keyserver pool.sks-keyservers.net --recv-keys FD3A5288F042B6850C66B31F09FE44734EB7990E gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D gpg --keyserver pool.sks-keyservers.net --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 gpg --keyserver pool.sks-keyservers.net --recv-keys B9AE9905FFD7803F25714661B63B535A4C206CA9 +gpg --keyserver pool.sks-keyservers.net --recv-keys 56730D5401028683275BD23C23EFEFE93C4CFFFE ``` See the section above on [Verifying Binaries](#verifying-binaries) for details on what to do with these keys to verify that a downloaded file is official. -Previous releases of Node.js have been signed with one of the following GPG -keys: +Previous releases may also have been signed with one of the following GPG keys: +* **Chris Dickinson** <christopher.s.dickinson@gmail.com> +`9554F04D7259F04124DE6B476D5A82AC7E37093B` * **Isaac Z. Schlueter** <i@izs.me> `93C7E9E91B49E432C2F75674B0A78B0A6C481CF6` * **Julien Gilli** <jgilli@fastmail.fm> diff --git a/WORKING_GROUPS.md b/WORKING_GROUPS.md index 7b5dfe65a42e89..00eb770b0e2069 100644 --- a/WORKING_GROUPS.md +++ b/WORKING_GROUPS.md @@ -42,7 +42,6 @@ Top Level Working Group](https://github.com/nodejs/TSC/blob/master/WORKING_GROUP * [Benchmarking](#benchmarking) * [Post-mortem](#post-mortem) * [Intl](#intl) -* [HTTP](#http) * [Documentation](#documentation) * [Testing](#testing) @@ -189,21 +188,6 @@ Responsibilities include: * Publishing regular update summaries and other promotional content. -### [HTTP](https://github.com/nodejs/http) - -The HTTP Working Group is chartered for the support and improvement of the -HTTP implementation in Node.js. - -Responsibilities include: -* Addressing HTTP issues on the Node.js issue tracker. -* Authoring and editing HTTP documentation within the Node.js project. -* Reviewing changes to HTTP functionality within the Node.js project. -* Working with the ecosystem of HTTP related module developers to evolve the - HTTP implementation and APIs in core. -* Advising the CTC on all HTTP related issues and discussions. -* Messaging about the future of HTTP to give the community advance notice of - changes. - ### [Docker](https://github.com/nodejs/docker-iojs) The Docker Working Group's purpose is to build, maintain, and improve official diff --git a/benchmark/buffers/buffer-tojson.js b/benchmark/buffers/buffer-tojson.js new file mode 100644 index 00000000000000..1be59952c3fe60 --- /dev/null +++ b/benchmark/buffers/buffer-tojson.js @@ -0,0 +1,18 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + n: [1e4], + len: [0, 10, 256, 4 * 1024] +}); + +function main(conf) { + var n = +conf.n; + var buf = Buffer.allocUnsafe(+conf.len); + + bench.start(); + for (var i = 0; i < n; ++i) + buf.toJSON(); + bench.end(n); +} diff --git a/benchmark/dgram/bind-params.js b/benchmark/dgram/bind-params.js new file mode 100644 index 00000000000000..6f641f7f570667 --- /dev/null +++ b/benchmark/dgram/bind-params.js @@ -0,0 +1,38 @@ +'use strict'; + +const common = require('../common.js'); +const dgram = require('dgram'); + +const configs = { + n: [1e4], + port: ['true', 'false'], + address: ['true', 'false'], +}; + +const bench = common.createBenchmark(main, configs); + +function main(conf) { + const n = +conf.n; + const port = conf.port === 'true' ? 0 : undefined; + const address = conf.address === 'true' ? '0.0.0.0' : undefined; + + if (port !== undefined && address !== undefined) { + bench.start(); + for (let i = 0; i < n; i++) { + dgram.createSocket('udp4').bind(port, address).unref(); + } + bench.end(n); + } else if (port !== undefined) { + bench.start(); + for (let i = 0; i < n; i++) { + dgram.createSocket('udp4').bind(port).unref(); + } + bench.end(n); + } else if (port === undefined && address === undefined) { + bench.start(); + for (let i = 0; i < n; i++) { + dgram.createSocket('udp4').bind().unref(); + } + bench.end(n); + } +} diff --git a/benchmark/misc/object-property-bench.js b/benchmark/misc/object-property-bench.js new file mode 100644 index 00000000000000..8ac7683cd54d7e --- /dev/null +++ b/benchmark/misc/object-property-bench.js @@ -0,0 +1,81 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + method: ['property', 'string', 'variable', 'symbol'], + millions: [1000] +}); + +function runProperty(n) { + const object = {}; + var i = 0; + bench.start(); + for (; i < n; i++) { + object.p1 = 21; + object.p2 = 21; + object.p1 += object.p2; + } + bench.end(n / 1e6); +} + +function runString(n) { + const object = {}; + var i = 0; + bench.start(); + for (; i < n; i++) { + object['p1'] = 21; + object['p2'] = 21; + object['p1'] += object['p2']; + } + bench.end(n / 1e6); +} + +function runVariable(n) { + const object = {}; + const var1 = 'p1'; + const var2 = 'p2'; + var i = 0; + bench.start(); + for (; i < n; i++) { + object[var1] = 21; + object[var2] = 21; + object[var1] += object[var2]; + } + bench.end(n / 1e6); +} + +function runSymbol(n) { + const object = {}; + const symbol1 = Symbol('p1'); + const symbol2 = Symbol('p2'); + var i = 0; + bench.start(); + for (; i < n; i++) { + object[symbol1] = 21; + object[symbol2] = 21; + object[symbol1] += object[symbol2]; + } + bench.end(n / 1e6); +} + +function main(conf) { + const n = +conf.millions * 1e6; + + switch (conf.method) { + case 'property': + runProperty(n); + break; + case 'string': + runString(n); + break; + case 'variable': + runVariable(n); + break; + case 'symbol': + runSymbol(n); + break; + default: + throw new Error('Unexpected method'); + } +} diff --git a/benchmark/net/net-c2s.js b/benchmark/net/net-c2s.js index 370ff4f138cafd..471389e2687423 100644 --- a/benchmark/net/net-c2s.js +++ b/benchmark/net/net-c2s.js @@ -65,8 +65,17 @@ Writer.prototype.once = function() {}; Writer.prototype.emit = function() {}; +function flow() { + var dest = this.dest; + var res = dest.write(chunk, encoding); + if (!res) + dest.once('drain', this.flow); + else + process.nextTick(this.flow); +} + function Reader() { - this.flow = this.flow.bind(this); + this.flow = flow.bind(this); this.readable = true; } @@ -76,15 +85,6 @@ Reader.prototype.pipe = function(dest) { return dest; }; -Reader.prototype.flow = function() { - var dest = this.dest; - var res = dest.write(chunk, encoding); - if (!res) - dest.once('drain', this.flow); - else - process.nextTick(this.flow); -}; - function server() { var reader = new Reader(); diff --git a/benchmark/net/net-pipe.js b/benchmark/net/net-pipe.js index ea8af249a35b50..feec0f268a7773 100644 --- a/benchmark/net/net-pipe.js +++ b/benchmark/net/net-pipe.js @@ -65,8 +65,17 @@ Writer.prototype.once = function() {}; Writer.prototype.emit = function() {}; +function flow() { + var dest = this.dest; + var res = dest.write(chunk, encoding); + if (!res) + dest.once('drain', this.flow); + else + process.nextTick(this.flow); +} + function Reader() { - this.flow = this.flow.bind(this); + this.flow = flow.bind(this); this.readable = true; } @@ -76,15 +85,6 @@ Reader.prototype.pipe = function(dest) { return dest; }; -Reader.prototype.flow = function() { - var dest = this.dest; - var res = dest.write(chunk, encoding); - if (!res) - dest.once('drain', this.flow); - else - process.nextTick(this.flow); -}; - function server() { var reader = new Reader(); diff --git a/benchmark/net/net-s2c.js b/benchmark/net/net-s2c.js index af40d8d58d8852..118f0267ae952a 100644 --- a/benchmark/net/net-s2c.js +++ b/benchmark/net/net-s2c.js @@ -65,8 +65,17 @@ Writer.prototype.once = function() {}; Writer.prototype.emit = function() {}; +function flow() { + var dest = this.dest; + var res = dest.write(chunk, encoding); + if (!res) + dest.once('drain', this.flow); + else + process.nextTick(this.flow); +} + function Reader() { - this.flow = this.flow.bind(this); + this.flow = flow.bind(this); this.readable = true; } @@ -76,15 +85,6 @@ Reader.prototype.pipe = function(dest) { return dest; }; -Reader.prototype.flow = function() { - var dest = this.dest; - var res = dest.write(chunk, encoding); - if (!res) - dest.once('drain', this.flow); - else - process.nextTick(this.flow); -}; - function server() { var reader = new Reader(); diff --git a/benchmark/timers/timers-cancel-pooled.js b/benchmark/timers/timers-cancel-pooled.js new file mode 100644 index 00000000000000..47c9fea2cb5b61 --- /dev/null +++ b/benchmark/timers/timers-cancel-pooled.js @@ -0,0 +1,32 @@ +'use strict'; +var common = require('../common.js'); +var assert = require('assert'); + +var bench = common.createBenchmark(main, { + thousands: [500], +}); + +function main(conf) { + var iterations = +conf.thousands * 1e3; + + var timer = setTimeout(() => {}, 1); + for (var i = 0; i < iterations; i++) { + setTimeout(cb, 1); + } + var next = timer._idlePrev; + clearTimeout(timer); + + bench.start(); + + for (var j = 0; j < iterations; j++) { + timer = next; + next = timer._idlePrev; + clearTimeout(timer); + } + + bench.end(iterations / 1e3); +} + +function cb() { + assert(false, 'Timer should not call callback'); +} diff --git a/benchmark/timers/timers-cancel-unpooled.js b/benchmark/timers/timers-cancel-unpooled.js new file mode 100644 index 00000000000000..a040fad69e1c66 --- /dev/null +++ b/benchmark/timers/timers-cancel-unpooled.js @@ -0,0 +1,26 @@ +'use strict'; +var common = require('../common.js'); +var assert = require('assert'); + +var bench = common.createBenchmark(main, { + thousands: [100], +}); + +function main(conf) { + var iterations = +conf.thousands * 1e3; + + var timersList = []; + for (var i = 0; i < iterations; i++) { + timersList.push(setTimeout(cb, i + 1)); + } + + bench.start(); + for (var j = 0; j < iterations + 1; j++) { + clearTimeout(timersList[j]); + } + bench.end(iterations / 1e3); +} + +function cb() { + assert(false, 'Timer ' + this._idleTimeout + ' should not call callback'); +} diff --git a/benchmark/timers/timers-insert-pooled.js b/benchmark/timers/timers-insert-pooled.js new file mode 100644 index 00000000000000..11c35319b11d69 --- /dev/null +++ b/benchmark/timers/timers-insert-pooled.js @@ -0,0 +1,18 @@ +'use strict'; +var common = require('../common.js'); + +var bench = common.createBenchmark(main, { + thousands: [500], +}); + +function main(conf) { + var iterations = +conf.thousands * 1e3; + + bench.start(); + + for (var i = 0; i < iterations; i++) { + setTimeout(() => {}, 1); + } + + bench.end(iterations / 1e3); +} diff --git a/benchmark/timers/timers-insert-unpooled.js b/benchmark/timers/timers-insert-unpooled.js new file mode 100644 index 00000000000000..91eabeb04e9d4f --- /dev/null +++ b/benchmark/timers/timers-insert-unpooled.js @@ -0,0 +1,27 @@ +'use strict'; +var common = require('../common.js'); +var assert = require('assert'); + +var bench = common.createBenchmark(main, { + thousands: [100], +}); + +function main(conf) { + var iterations = +conf.thousands * 1e3; + + var timersList = []; + + bench.start(); + for (var i = 0; i < iterations; i++) { + timersList.push(setTimeout(cb, i + 1)); + } + bench.end(iterations / 1e3); + + for (var j = 0; j < iterations + 1; j++) { + clearTimeout(timersList[j]); + } +} + +function cb() { + assert(false, 'Timer ' + this._idleTimeout + ' should not call callback'); +} diff --git a/benchmark/timers/timers-timeout-pooled.js b/benchmark/timers/timers-timeout-pooled.js new file mode 100644 index 00000000000000..feaec23237f13d --- /dev/null +++ b/benchmark/timers/timers-timeout-pooled.js @@ -0,0 +1,23 @@ +'use strict'; +var common = require('../common.js'); + +var bench = common.createBenchmark(main, { + thousands: [500], +}); + +function main(conf) { + var iterations = +conf.thousands * 1e3; + var count = 0; + + for (var i = 0; i < iterations; i++) { + setTimeout(cb, 1); + } + + bench.start(); + + function cb() { + count++; + if (count === iterations) + bench.end(iterations / 1e3); + } +} diff --git a/common.gypi b/common.gypi index 4aa8f919fb6d2f..d7b09570aded6d 100644 --- a/common.gypi +++ b/common.gypi @@ -186,6 +186,10 @@ 'BufferSecurityCheck': 'true', 'ExceptionHandling': 0, # /EHsc 'SuppressStartupBanner': 'true', + # Disable "warning C4267: conversion from 'size_t' to 'int', + # possible loss of data". Many originate from our dependencies + # and their sheer number drowns out other, more legitimate warnings. + 'DisableSpecificWarnings': ['4267'], 'WarnAsError': 'false', }, 'VCLibrarianTool': { diff --git a/configure b/configure index be38ff770eb315..6eb106f92d520d 100755 --- a/configure +++ b/configure @@ -2,7 +2,16 @@ import sys if sys.version_info[0] != 2 or sys.version_info[1] not in (6, 7): - sys.stdout.write("Please use either Python 2.6 or 2.7\n") + sys.stderr.write('Please use either Python 2.6 or 2.7') + + from distutils.spawn import find_executable as which + python2 = which('python2') or which('python2.6') or which('python2.7') + + if python2: + sys.stderr.write(':\n\n') + sys.stderr.write(' ' + python2 + ' ' + ' '.join(sys.argv)) + + sys.stderr.write('\n') sys.exit(1) import errno @@ -429,6 +438,12 @@ parser.add_option('--without-bundled-v8', help='do not use V8 includes from the bundled deps folder. ' + '(This mode is not officially supported for regular applications)') +# Create compile_commands.json in out/Debug and out/Release. +parser.add_option('-C', + action='store_true', + dest='compile_commands_json', + help=optparse.SUPPRESS_HELP) + (options, args) = parser.parse_args() # Expand ~ in the install prefix now, it gets written to multiple files. @@ -1277,6 +1292,9 @@ elif flavor == 'win' and sys.platform != 'msys': else: gyp_args += ['-f', 'make-' + flavor] +if options.compile_commands_json: + gyp_args += ['-f', 'compile_commands_json'] + gyp_args += args if warn.warned: diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 89cf41c1f70d52..fc3292b05ff939 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -11,7 +11,7 @@ #define V8_MAJOR_VERSION 4 #define V8_MINOR_VERSION 5 #define V8_BUILD_NUMBER 103 -#define V8_PATCH_LEVEL 45 +#define V8_PATCH_LEVEL 46 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/src/runtime/runtime-debug.cc b/deps/v8/src/runtime/runtime-debug.cc index e7aaed1f6fbed7..adc2449c4559e1 100644 --- a/deps/v8/src/runtime/runtime-debug.cc +++ b/deps/v8/src/runtime/runtime-debug.cc @@ -670,7 +670,8 @@ RUNTIME_FUNCTION(Runtime_GetFrameDetails) { // Use the value from the stack. if (scope_info->LocalIsSynthetic(i)) continue; locals->set(local * 2, scope_info->LocalName(i)); - locals->set(local * 2 + 1, frame_inspector.GetExpression(i)); + locals->set(local * 2 + 1, + frame_inspector.GetExpression(scope_info->StackLocalIndex(i))); local++; } if (local < local_count) { diff --git a/deps/v8/test/mjsunit/regress/regress-5071.js b/deps/v8/test/mjsunit/regress/regress-5071.js new file mode 100644 index 00000000000000..c69d8a78f2c2e3 --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-5071.js @@ -0,0 +1,27 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --expose-debug-as debug + +'use strict'; +var Debug = debug.Debug; + +function listener(event, exec_state, event_data, data) { + assertEquals(2, exec_state.frameCount()); + assertEquals("a", exec_state.frame(0).localName(0)); + assertEquals("1", exec_state.frame(0).localValue(0).value()); + assertEquals(1, exec_state.frame(0).localCount()); +} + +Debug.setListener(listener); + +function f() { + var a = 1; + { + let b = 2; + debugger; + } +} + +f(); diff --git a/doc/STYLE_GUIDE.md b/doc/STYLE_GUIDE.md new file mode 100644 index 00000000000000..10f26421a4ceb5 --- /dev/null +++ b/doc/STYLE_GUIDE.md @@ -0,0 +1,63 @@ +# Style Guide + +* Documents are written in markdown files. +* Those files should be written in **`lowercase-with-dashes.md`.** + * Underscores in filenames are allowed only when they are present in the + topic the document will describe (e.g., `child_process`.) + * Filenames should be **lowercase**. + * Some files, such as top-level markdown files, are exceptions. + * Older files may use the `.markdown` extension. These may be ported to `.md` + at will. **Prefer `.md` for all new documents.** +* Documents should be word-wrapped at 80 characters. +* The formatting described in `.editorconfig` is preferred. + * A [plugin][] is available for some editors to automatically apply these rules. +* Mechanical issues, like spelling and grammar, should be identified by tools, + insofar as is possible. If not caught by a tool, they should be pointed out by + human reviewers. +* American English spelling is preferred. "Capitalize" vs. "Capitalise", + "color" vs. "colour", etc. +* Though controversial, the [Oxford comma][] is preferred for clarity's sake. +* Generally avoid personal pronouns in reference documentation ("I", "you", + "we".) + * Pronouns are acceptable in more colloquial documentation, like guides. + * Use **gender-neutral pronouns** and **mass nouns**. Non-comprehensive + examples: + * **OK**: "they", "their", "them", "folks", "people", "developers", "cats" + * **NOT OK**: "his", "hers", "him", "her", "guys", "dudes". +* When combining wrapping elements (parentheses and quotes), terminal + punctuation should be placed: + * Inside the wrapping element if the wrapping element contains a complete + clause — a subject, verb, and an object. + * Outside of the wrapping element if the wrapping element contains only a + fragment of a clause. +* Place end-of-sentence punctuation inside wrapping elements — periods go + inside parentheses and quotes, not after. +* Documents must start with a level-one heading. An example document will be + linked here eventually. +* Prefer affixing links to inlining links — prefer `[a link][]` to + `[a link](http://example.com)`. +* When documenting APIs, note the version the API was introduced in at + the end of the section. If an API has been deprecated, also note the first + version that the API appeared deprecated in. +* When using dashes, use emdashes ("—", Ctrl+Alt+"-" on OSX) surrounded by + spaces, per the New York Times usage. +* Including assets: + * If you wish to add an illustration or full program, add it to the + appropriate sub-directory in the `assets/` dir. + * Link to it like so: `[Asset](/assets/{subdir}/{filename})` for file-based + assets, and `![Asset](/assets/{subdir}/{filename})` for image-based assets. + * For illustrations, prefer SVG to other assets. When SVG is not feasible, + please keep a close eye on the filesize of the asset you're introducing. +* For code blocks: + * Use language aware fences. ("```js") + * Code need not be complete — treat code blocks as an illustration or aid to + your point, not as complete running programs. If a complete running program + is necessary, include it as an asset in `assets/code-examples` and link to + it. +* When using underscores, asterisks and backticks please use proper escaping (**\\\_**, **\\\*** and **\\\`** instead of **\_**, **\*** and **\`**) +* References to constructor functions should use PascalCase +* References to constructor instances should be camelCased +* References to methods should be used with parenthesis: `socket.end()` instead of `socket.end` + +[plugin]: http://editorconfig.org/#download +[Oxford comma]: https://en.wikipedia.org/wiki/Serial_comma diff --git a/doc/api/addons.md b/doc/api/addons.md index 14b2b463ff0c01..68aebb6d260d81 100644 --- a/doc/api/addons.md +++ b/doc/api/addons.md @@ -1,4 +1,4 @@ -# Addons +# C/C++ Addons Node.js Addons are dynamically-linked shared objects, written in C or C++, that can be loaded into Node.js using the [`require()`][require] function, and used diff --git a/doc/api/assert.md b/doc/api/assert.md index 62d76b659cc709..2b85b3048e2339 100644 --- a/doc/api/assert.md +++ b/doc/api/assert.md @@ -1,21 +1,16 @@ # Assert -> Stability: 3 - Locked +> Stability: 2 - Stable The `assert` module provides a simple set of assertion tests that can be used to -test invariants. The module is intended for internal use by Node.js, but can be -used in application code via `require('assert')`. However, `assert` is not a -testing framework, and is not intended to be used as a general purpose assertion -library. - -The API for the `assert` module is [Locked][]. This means that there will be no -additions or changes to any of the methods implemented and exposed by -the module. +test invariants. ## assert(value[, message]) +* `value` {any} +* `message` {any} An alias of [`assert.ok()`][] . @@ -36,6 +31,9 @@ assert(false, 'it\'s false'); +* `actual` {any} +* `expected` {any} +* `message` {any} Tests for deep equality between the `actual` and `expected` parameters. Primitive values are compared with the equal comparison operator ( `==` ). @@ -97,6 +95,9 @@ parameter is undefined, a default error message is assigned. +* `actual` {any} +* `expected` {any} +* `message` {any} Generally identical to `assert.deepEqual()` with two exceptions. First, primitive values are compared using the strict equality operator ( `===` ). @@ -121,6 +122,9 @@ parameter is undefined, a default error message is assigned. +* `block` {Function} +* `error` {RegExp|Function} +* `message` {any} Asserts that the function `block` does not throw an error. See [`assert.throws()`][] for more details. @@ -176,6 +180,9 @@ assert.doesNotThrow( +* `actual` {any} +* `expected` {any} +* `message` {any} Tests shallow, coercive equality between the `actual` and `expected` parameters using the equal comparison operator ( `==` ). @@ -202,6 +209,10 @@ parameter is undefined, a default error message is assigned. +* `actual` {any} +* `expected` {any} +* `message` {any} +* `operator` {String} Throws an `AssertionError`. If `message` is falsy, the error message is set as the values of `actual` and `expected` separated by the provided `operator`. @@ -221,6 +232,7 @@ assert.fail(1, 2, 'whoops', '>'); +* `value` {any} Throws `value` if `value` is truthy. This is useful when testing the `error` argument in callbacks. @@ -238,6 +250,9 @@ assert.ifError(new Error()); // Throws Error +* `actual` {any} +* `expected` {any} +* `message` {any} Tests for any deep inequality. Opposite of [`assert.deepEqual()`][]. @@ -282,6 +297,9 @@ parameter is undefined, a default error message is assigned. +* `actual` {any} +* `expected` {any} +* `message` {any} Tests for deep strict inequality. Opposite of [`assert.deepStrictEqual()`][]. @@ -303,6 +321,9 @@ the `message` parameter is undefined, a default error message is assigned. +* `actual` {any} +* `expected` {any} +* `message` {any} Tests shallow, coercive inequality with the not equal comparison operator ( `!=` ). @@ -328,6 +349,9 @@ parameter is undefined, a default error message is assigned. +* `actual` {any} +* `expected` {any} +* `message` {any} Tests strict inequality as determined by the strict not equal operator ( `!==` ). @@ -353,6 +377,8 @@ If the values are strictly equal, an `AssertionError` is thrown with a +* `value` {any} +* `message` {any} Tests if `value` is truthy. It is equivalent to `assert.equal(!!value, true, message)`. @@ -378,6 +404,9 @@ assert.ok(false, 'it\'s false'); +* `actual` {any} +* `expected` {any} +* `message` {any} Tests strict equality as determined by the strict equality operator ( `===` ). @@ -402,6 +431,9 @@ If the values are not strictly equal, an `AssertionError` is thrown with a +* `block` {Function} +* `error` {RegExp|Function} +* `message` {any} Expects the function `block` to throw an error. @@ -461,7 +493,6 @@ assert.throws(myFunction, 'missing foo', 'did not throw with expected message'); assert.throws(myFunction, /missing foo/, 'did not throw with expected message'); ``` -[Locked]: documentation.html#documentation_stability_index [`assert.deepEqual()`]: #assert_assert_deepequal_actual_expected_message [`assert.deepStrictEqual()`]: #assert_assert_deepstrictequal_actual_expected_message [`assert.ok()`]: #assert_assert_ok_value_message diff --git a/doc/api/buffer.md b/doc/api/buffer.md index 7035fa254e77d9..e90d2f2616f8bd 100644 --- a/doc/api/buffer.md +++ b/doc/api/buffer.md @@ -528,6 +528,10 @@ Returns the actual byte length of a string. This is not the same as [`String.prototype.length`][] since that returns the number of *characters* in a string. +*Note* that for `'base64'` and `'hex'`, this function assumes valid input. For +strings that contain non-Base64/Hex-encoded data (e.g. whitespace), the return +value might be greater than the length of a `Buffer` created from the string. + Example: ```js diff --git a/doc/api/child_process.md b/doc/api/child_process.md index 18ba0095620cc9..e60416ed2c22d0 100644 --- a/doc/api/child_process.md +++ b/doc/api/child_process.md @@ -536,9 +536,9 @@ spawn('prg', [], { stdio: ['pipe', null, null, null, 'pipe'] }); *It is worth noting that when an IPC channel is established between the parent and child processes, and the child is a Node.js process, the child is launched with the IPC channel unreferenced (using `unref()`) until the -child registers an event handler for the `process.on('disconnected')` event. -This allows the child to exit normally without the process being held open -by the open IPC channel.* +child registers an event handler for the `process.on('disconnect')` event +or the `process.on('message')` event.This allows the child to exit normally +without the process being held open by the open IPC channel.* See also: [`child_process.exec()`][] and [`child_process.fork()`][] diff --git a/doc/api/dgram.md b/doc/api/dgram.md index 92e51b7072aeee..afb6856807e8dc 100644 --- a/doc/api/dgram.md +++ b/doc/api/dgram.md @@ -70,20 +70,14 @@ datagram messages. This occurs as soon as UDP sockets are created. added: v0.1.99 --> +The `'message'` event is emitted when a new datagram is available on a socket. +The event handler function is passed two arguments: `msg` and `rinfo`. * `msg` {Buffer} - The message * `rinfo` {Object} - Remote address information - -The `'message'` event is emitted when a new datagram is available on a socket. -The event handler function is passed two arguments: `msg` and `rinfo`. The -`msg` argument is a [`Buffer`][] and `rinfo` is an object with the sender's -address information provided by the `address`, `family` and `port` properties: - -```js -socket.on('message', (msg, rinfo) => { - console.log('Received %d bytes from %s:%d\n', - msg.length, rinfo.address, rinfo.port); -}); -``` + * `address` {String} The sender address + * `family` {String} The address family (`'IPv4'` or `'IPv6'`) + * `port` {Number} The sender port + * `size` {Number} The message size ### socket.addMembership(multicastAddress[, multicastInterface]) * `options` {Object} - Required. Supports the following properties: - * `port` {Number} - Required. + * `port` {Number} - Optional. * `address` {String} - Optional. * `exclusive` {Boolean} - Optional. * `callback` {Function} - Optional. -For UDP sockets, causes the `dgram.Socket` to listen for datagram messages on a -named `port` and optional `address` that are passed as properties of an -`options` object passed as the first argument. If `port` is not specified, the -operating system will attempt to bind to a random port. If `address` is not -specified, the operating system will attempt to listen on all addresses. Once -binding is complete, a `'listening'` event is emitted and the optional -`callback` function is called. +For UDP sockets, causes the `dgram.Socket` to listen for datagram +messages on a named `port` and optional `address` that are passed as +properties of an `options` object passed as the first argument. If +`port` is not specified or is `0`, the operating system will attempt +to bind to a random port. If `address` is not specified, the operating +system will attempt to listen on all addresses. Once binding is +complete, a `'listening'` event is emitted and the optional `callback` +function is called. + +Note that specifying both a `'listening'` event listener and passing a +`callback` to the `socket.bind()` method is not harmful but not very +useful. The `options` object may contain an additional `exclusive` property that is use when using `dgram.Socket` objects with the [`cluster`] module. When @@ -185,6 +185,12 @@ underlying socket handle allowing connection handling duties to be shared. When `exclusive` is `true`, however, the handle is not shared and attempted port sharing results in an error. +A bound datagram socket keeps the Node.js process running to receive +datagram messages. + +If binding fails, an `'error'` event is generated. In rare case (e.g. +attempting to bind with a closed socket), an [`Error`][] may be thrown. + An example socket listening on an exclusive port is shown below. ```js @@ -419,8 +425,8 @@ boolean `reuseAddr` field. When `reuseAddr` is `true` [`socket.bind()`][] will reuse the address, even if another process has already bound a socket on it. `reuseAddr` defaults to -`false`. An optional `callback` function can be passed specified which is added -as a listener for `'message'` events. +`false`. The optional `callback` function is added as a listener for `'message'` +events. Once the socket is created, calling [`socket.bind()`][] will instruct the socket to begin listening for datagram messages. When `address` and `port` are diff --git a/doc/api/dns.md b/doc/api/dns.md index ec7469f3152bf4..f08dfc009e9910 100644 --- a/doc/api/dns.md +++ b/doc/api/dns.md @@ -10,7 +10,7 @@ This category contains only one function: [`dns.lookup()`][]. __Developers looking to perform name resolution in the same way that other applications on the same operating system behave should use [`dns.lookup()`][].__ -For example, looking up `nodejs.org`. +For example, looking up `iana.org`. ```js const dns = require('dns'); @@ -18,6 +18,7 @@ const dns = require('dns'); dns.lookup('nodejs.org', (err, addresses, family) => { console.log('addresses:', addresses); }); +// address: "192.0.43.8" family: IPv4 ``` 2) Functions that connect to an actual DNS server to perform name resolution, @@ -28,13 +29,13 @@ functions do not use the same set of configuration files used by developers who do not want to use the underlying operating system's facilities for name resolution, and instead want to _always_ perform DNS queries. -Below is an example that resolves `'nodejs.org'` then reverse resolves the IP +Below is an example that resolves `'archive.org'` then reverse resolves the IP addresses that are returned. ```js const dns = require('dns'); -dns.resolve4('nodejs.org', (err, addresses) => { +dns.resolve4('archive.org', (err, addresses) => { if (err) throw err; console.log(`addresses: ${JSON.stringify(addresses)}`); @@ -115,6 +116,25 @@ important consequences on the behavior of any Node.js program. Please take some time to consult the [Implementation considerations section][] before using `dns.lookup()`. +Example usage: + +```js +const dns = require('dns'); +const options = { + family: 6, + hints: dns.ADDRCONFIG | dns.V4MAPPED, +}; +dns.lookup('example.com', options, (err, address, family) => + console.log('address: %j family: IPv%s', address, family)); +// address: "2606:2800:220:1:248:1893:25c8:1946" family: IPv6 + +// When options.all is true, the result will be an Array. +options.all = true; +dns.lookup('example.com', options, (err, addresses) => + console.log('addresses: %j', addresses)); +// addresses: [{"address":"2606:2800:220:1:248:1893:25c8:1946","family":6}] +``` + ### Supported getaddrinfo flags The following flags can be passed as hints to [`dns.lookup()`][]. diff --git a/doc/api/documentation.md b/doc/api/documentation.md index ffb9a389377c77..1aa49965a34382 100644 --- a/doc/api/documentation.md +++ b/doc/api/documentation.md @@ -58,7 +58,7 @@ is a high priority, and will not be broken unless absolutely necessary. ``` Stability: 3 - Locked -Only fixes related to security, performance, or bug fixes will be accepted. +Only bug fixes, security fixes, and performance improvements will be accepted. Please do not suggest API changes in this area; they will be refused. ``` diff --git a/doc/api/domain.md b/doc/api/domain.md index 2f58f10ba1ebc6..f5750457f6d53b 100644 --- a/doc/api/domain.md +++ b/doc/api/domain.md @@ -47,13 +47,13 @@ For example, this is not a good idea: ```js // XXX WARNING! BAD IDEA! -var d = require('domain').create(); +const d = require('domain').create(); d.on('error', (er) => { // The error won't crash the process, but what it does is worse! // Though we've prevented abrupt process restarting, we are leaking // resources like crazy if this ever happens. // This is no better than process.on('uncaughtException')! - console.log('error, but oh well', er.message); + console.log(`error, but oh well ${er.message}`); }); d.run(() => { require('http').createServer((req, res) => { @@ -104,9 +104,9 @@ if (cluster.isMaster) { // worker processes to serve requests. How it works, caveats, etc. const server = require('http').createServer((req, res) => { - var d = domain.create(); + const d = domain.create(); d.on('error', (er) => { - console.error('error', er.stack); + console.error(`error ${er.stack}`); // Note: we're in dangerous territory! // By definition, something unexpected occurred, @@ -115,7 +115,7 @@ if (cluster.isMaster) { try { // make sure we close down within 30 seconds - var killtimer = setTimeout(() => { + const killtimer = setTimeout(() => { process.exit(1); }, 30000); // But don't keep the process open just for that! @@ -135,7 +135,7 @@ if (cluster.isMaster) { res.end('Oops, there was a problem!\n'); } catch (er2) { // oh well, not much we can do at this point. - console.error('Error sending 500!', er2.stack); + console.error(`Error sending 500! ${er2.stack}`); } }); @@ -156,7 +156,7 @@ if (cluster.isMaster) { // This part isn't important. Just an example routing thing. // You'd put your fancy application logic here. function handleRequest(req, res) { - switch(req.url) { + switch (req.url) { case '/error': // We do some async stuff, and then... setTimeout(() => { @@ -239,7 +239,7 @@ serverDomain.run(() => { // req and res are also created in the scope of serverDomain // however, we'd prefer to have a separate domain for each request. // create it first thing, and add req and res to it. - var reqd = domain.create(); + const reqd = domain.create(); reqd.add(req); reqd.add(res); reqd.on('error', (er) => { @@ -247,8 +247,8 @@ serverDomain.run(() => { try { res.writeHead(500); res.end('Error occurred, sorry.'); - } catch (er) { - console.error('Error sending 500', er, req.url); + } catch (er2) { + console.error('Error sending 500', er2, req.url); } }); }).listen(1337); diff --git a/doc/api/errors.md b/doc/api/errors.md index 5f451880f14332..c12100c19905cb 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -195,6 +195,8 @@ will either be instances of, or inherit from, the `Error` class. ### new Error(message) +* `message` {String} + Creates a new `Error` object and sets the `error.message` property to the provided text message. If an object is passed as `message`, the text message is generated by calling `message.toString()`. The `error.stack` property will @@ -205,6 +207,9 @@ given by the property `Error.stackTraceLimit`, whichever is smaller. ### Error.captureStackTrace(targetObject[, constructorOpt]) +* `targetObject` {Object} +* `constructorOpt` {Function} + Creates a `.stack` property on `targetObject`, which when accessed returns a string representing the location in the code at which `Error.captureStackTrace()` was called. @@ -238,6 +243,8 @@ new MyError().stack ### Error.stackTraceLimit +* {Number} + The `Error.stackTraceLimit` property specifies the number of stack frames collected by a stack trace (whether generated by `new Error().stack` or `Error.captureStackTrace(obj)`). @@ -250,10 +257,13 @@ not capture any frames. #### error.message -Returns the string description of error as set by calling `new Error(message)`. +* {String} + +The `error.message` property is the string description of the error as set by calling `new Error(message)`. The `message` passed to the constructor will also appear in the first line of the stack trace of the `Error`, however changing this property after the -`Error` object is created *may not* change the first line of the stack trace. +`Error` object is created *may not* change the first line of the stack trace +(for example, when `error.stack` is read before this property is changed). ```js const err = new Error('The message'); @@ -263,8 +273,10 @@ console.log(err.message); #### error.stack -Returns a string describing the point in the code at which the `Error` was -instantiated. +* {String} + +The `error.stack` property is a string describing the point in the code at which +the `Error` was instantiated. For example: @@ -450,18 +462,47 @@ added properties. #### error.code -Returns a string representing the error code, which is always `E` followed by -a sequence of capital letters, and may be referenced in `man 2 intro`. +* {String} + +The `error.code` property is a string representing the error code, which is always +`E` followed by a sequence of capital letters. #### error.errno -Returns a number corresponding to the **negated** error code, which may be -referenced in `man 2 intro`. For example, an `ENOENT` error has an `errno` of -`-2` because the error code for `ENOENT` is `2`. +* {String | Number} + +The `error.errno` property is a number or a string. +The number is a **negative** value which corresponds to the error code defined in +[`libuv Error handling`]. See uv-errno.h header file (`deps/uv/include/uv-errno.h` in +the Node.js source tree) for details. +In case of a string, it is the same as `error.code`. #### error.syscall -Returns a string describing the [syscall][] that failed. +* {String} + +The `error.syscall` property is a string describing the [syscall][] that failed. + +#### error.path + +* {String} + +When present (e.g. in `fs` or `child_process`), the `error.path` property is a string +containing a relevant invalid pathname. + +#### error.address + +* {String} + +When present (e.g. in `net` or `dgram`), the `error.address` property is a string +describing the address to which the connection failed. + +#### error.port + +* {Number} + +When present (e.g. in `net` or `dgram`), the `error.port` property is a number representing +the connection's port that is not available. ### Common System Errors @@ -528,6 +569,7 @@ found [here][online]. [`fs`]: fs.html [`http`]: http.html [`https`]: https.html +[`libuv Error handling`]: http://docs.libuv.org/en/v1.x/errors.html [`net`]: net.html [`process.on('uncaughtException')`]: process.html#process_event_uncaughtexception [domains]: domain.html diff --git a/doc/api/fs.md b/doc/api/fs.md index 8d934e98340d41..5a604ac765ed08 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -1347,7 +1347,8 @@ added: v0.0.2 Write `buffer` to the file specified by `fd`. -`offset` and `length` determine the part of the buffer to be written. +`offset` determines the part of the buffer to be written, and `length` is +an integer specifying the number of bytes to write. `position` refers to the offset from the beginning of the file where this data should be written. If `typeof position !== 'number'`, the data will be written diff --git a/doc/api/http.md b/doc/api/http.md index 8b99ba5256735a..7977e9f1c28a60 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -100,11 +100,13 @@ added: v0.3.4 * `options` {Object} Set of configurable options to set on the agent. Can have the following fields: - * `keepAlive` {Boolean} Keep sockets around in a pool to be used by - other requests in the future. Default = `false` - * `keepAliveMsecs` {Integer} When using HTTP KeepAlive, how often - to send TCP KeepAlive packets over sockets being kept alive. - Default = `1000`. Only relevant if `keepAlive` is set to `true`. + * `keepAlive` {Boolean} Keep sockets around even when there are no + outstanding requests, so they can be used for future requests without + having to reestablish a TCP connection. Default = `false` + * `keepAliveMsecs` {Integer} When using the `keepAlive` option, specifies + the [initial delay](net.html#net_socket_setkeepalive_enable_initialdelay) + for TCP Keep-Alive packets. Ignored when the + `keepAlive` option is `false` or `undefined`. Default = `1000`. * `maxSockets` {Number} Maximum number of sockets to allow per host. Default = `Infinity`. * `maxFreeSockets` {Number} Maximum number of sockets to leave open @@ -410,6 +412,14 @@ added: v0.3.8 Marks the request as aborting. Calling this will cause remaining data in the response to be dropped and the socket to be destroyed. +### request.aborted + + +If a request has been aborted, this value is the time when the request was +aborted, in milliseconds since 1 January 1970 00:00:00 UTC. + ### request.end([data][, encoding][, callback]) diff --git a/doc/api/punycode.md b/doc/api/punycode.md index fee8a2436683d0..8343abda358336 100644 --- a/doc/api/punycode.md +++ b/doc/api/punycode.md @@ -1,4 +1,4 @@ -# punycode +# Punycode > Stability: 2 - Stable diff --git a/doc/api/string_decoder.md b/doc/api/string_decoder.md index 410ca5e0c98123..26f665a610890d 100644 --- a/doc/api/string_decoder.md +++ b/doc/api/string_decoder.md @@ -1,4 +1,4 @@ -# StringDecoder +# String Decoder > Stability: 2 - Stable diff --git a/doc/api/util.md b/doc/api/util.md index 662c360359a307..44437b61306f9b 100644 --- a/doc/api/util.md +++ b/doc/api/util.md @@ -1,4 +1,4 @@ -# util +# Util > Stability: 2 - Stable diff --git a/doc/api/vm.md b/doc/api/vm.md index a09c3bf20ca722..0b161e82c3c38d 100644 --- a/doc/api/vm.md +++ b/doc/api/vm.md @@ -1,4 +1,4 @@ -# Executing JavaScript +# VM (Executing JavaScript) > Stability: 2 - Stable diff --git a/doc/api/zlib.md b/doc/api/zlib.md index 9bdd8913bbbcbd..8e5f14621b9dd1 100644 --- a/doc/api/zlib.md +++ b/doc/api/zlib.md @@ -428,7 +428,7 @@ added: v0.6.0 added: v0.11.12 --> -Compress a Buffer or string with Deflate. +Compress a [Buffer][] or string with [Deflate][]. ### zlib.deflateRaw(buf[, options], callback) -Compress a Buffer or string with DeflateRaw. +Compress a [Buffer][] or string with [DeflateRaw][]. ### zlib.gunzip(buf[, options], callback) -Decompress a Buffer or string with Gunzip. +Decompress a [Buffer][] or string with [Gunzip][]. ### zlib.gzip(buf[, options], callback) -Compress a Buffer or string with Gzip. +Compress a [Buffer][] or string with [Gzip][]. ### zlib.inflate(buf[, options], callback) -Decompress a Buffer or string with Inflate. +Decompress a [Buffer][] or string with [Inflate][]. ### zlib.inflateRaw(buf[, options], callback) -Decompress a Buffer or string with InflateRaw. +Decompress a [Buffer][] or string with [InflateRaw][]. ### zlib.unzip(buf[, options], callback) -Decompress a Buffer or string with Unzip. +Decompress a [Buffer][] or string with [Unzip][]. [accept-encoding]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 [content-encoding]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11 diff --git a/doc/api_assets/dnt_helper.js b/doc/api_assets/dnt_helper.js new file mode 100644 index 00000000000000..f255d916c2df32 --- /dev/null +++ b/doc/api_assets/dnt_helper.js @@ -0,0 +1,49 @@ +/** + * http://schalkneethling.github.io/blog/2015/11/06/respect-user-choice-do-not-track/ + * https://github.com/schalkneethling/dnt-helper/blob/master/js/dnt-helper.js + * + * Returns true or false based on whether doNotTack is enabled. It also takes into account the + * anomalies, such as !bugzilla 887703, which effect versions of Fx 31 and lower. It also handles + * IE versions on Windows 7, 8 and 8.1, where the DNT implementation does not honor the spec. + * @see https://bugzilla.mozilla.org/show_bug.cgi?id=1217896 for more details + * @params {string} [dnt] - An optional mock doNotTrack string to ease unit testing. + * @params {string} [userAgent] - An optional mock userAgent string to ease unit testing. + * @returns {boolean} true if enabled else false + */ +function _dntEnabled(dnt, userAgent) { + + 'use strict'; + + // for old version of IE we need to use the msDoNotTrack property of navigator + // on newer versions, and newer platforms, this is doNotTrack but, on the window object + // Safari also exposes the property on the window object. + var dntStatus = dnt || navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack; + var ua = userAgent || navigator.userAgent; + + // List of Windows versions known to not implement DNT according to the standard. + var anomalousWinVersions = ['Windows NT 6.1', 'Windows NT 6.2', 'Windows NT 6.3']; + + var fxMatch = ua.match(/Firefox\/(\d+)/); + var ieRegEx = /MSIE|Trident/i; + var isIE = ieRegEx.test(ua); + // Matches from Windows up to the first occurance of ; un-greedily + // http://www.regexr.com/3c2el + var platform = ua.match(/Windows.+?(?=;)/g); + + // With old versions of IE, DNT did not exist so we simply return false; + if (isIE && typeof Array.prototype.indexOf !== 'function') { + return false; + } else if (fxMatch && parseInt(fxMatch[1], 10) < 32) { + // Can't say for sure if it is 1 or 0, due to Fx bug 887703 + dntStatus = 'Unspecified'; + } else if (isIE && platform && anomalousWinVersions.indexOf(platform.toString()) !== -1) { + // default is on, which does not honor the specification + dntStatus = 'Unspecified'; + } else { + // sets dntStatus to Disabled or Enabled based on the value returned by the browser. + // If dntStatus is undefined, it will be set to Unspecified + dntStatus = { '0': 'Disabled', '1': 'Enabled' }[dntStatus] || 'Unspecified'; + } + + return dntStatus === 'Enabled' ? true : false; +} diff --git a/doc/guides/maintaining-V8.md b/doc/guides/maintaining-V8.md index 19ee61fe20c5d7..4bfed3790f5185 100644 --- a/doc/guides/maintaining-V8.md +++ b/doc/guides/maintaining-V8.md @@ -177,8 +177,8 @@ https://crbug.com/v8/5199. From the bug we can see that it was merged by V8 into `v6.x` uses V8 5.1, the fix needed to cherry-picked. To cherry-pick, here's an example workflow: -* Download and apply the commit linked-to in the issue (in this case a51f429). `curl -L https://github.com/v8/v8/commit/a51f429.patch | git apply --directory=deps/v8`. If the branches have diverged significantly, this may not apply cleanly. It may help to try to cherry-pick the merge to the oldest branch that was done upstream in V8. In this example, this would be the patch from the merge to 5.2. The hope is that this would be closer to the V8 5.1, and has a better chance of applying cleanly. If you're stuck, feel free to ping @ofrobots for help. -* Modify the commit message to match the format we use for V8 backports. You may want to add extra description if necessary to indicate the impact of the fix on Node.js. In this case the original issue was descriptive enough. Example: +* Download and apply the commit linked-to in the issue (in this case a51f429). `curl -L https://github.com/v8/v8/commit/a51f429.patch | git am -3 --directory=deps/v8`. If the branches have diverged significantly, this may not apply cleanly. It may help to try to cherry-pick the merge to the oldest branch that was done upstream in V8. In this example, this would be the patch from the merge to 5.2. The hope is that this would be closer to the V8 5.1, and has a better chance of applying cleanly. If you're stuck, feel free to ping @ofrobots for help. +* Modify the commit message to match the format we use for V8 backports and replace yourself as the author. `git commit --amend --reset-author`. You may want to add extra description if necessary to indicate the impact of the fix on Node.js. In this case the original issue was descriptive enough. Example: ``` deps: cherry-pick a51f429 from V8 upstream diff --git a/doc/guides/writing-tests.md b/doc/guides/writing-tests.md index 107e9cde7a42b3..50e98ab243a0c6 100644 --- a/doc/guides/writing-tests.md +++ b/doc/guides/writing-tests.md @@ -2,13 +2,12 @@ ## What is a test? -A test must be a node script that exercises a specific functionality provided -by node and checks that it behaves as expected. It should exit with code `0` on success, -otherwise it will fail. A test will fail if: +Most tests in Node.js core are JavaScript programs that exercise a functionality +provided by Node.js and check that it behaves as expected. Tests should exit +with code `0` on success. A test will fail if: - It exits by setting `process.exitCode` to a non-zero number. - - This is most often done by having an assertion throw an uncaught - Error. + - This is usually done by having an assertion throw an uncaught Error. - Occasionally, using `process.exit(code)` may be appropriate. - It never exits. In this case, the test runner will terminate the test because it sets a maximum time limit. @@ -73,6 +72,9 @@ These modules are required for the test to run. Except for special cases, these modules should only include core modules. The `assert` module is used by most of the tests to check that the assumptions for the test are met. +Note that require statements are sorted, in +[ASCII](http://man7.org/linux/man-pages/man7/ascii.7.html) order (digits, upper +case, `_`, lower case). **Lines 6-17** @@ -186,3 +188,70 @@ require('../common'); const assert = require('assert'); const freelist = require('internal/freelist'); ``` + +### Assertions + +When writing assertions, prefer the strict versions: + +* `assert.strictEqual()` over `assert.equal()` +* `assert.deepStrictEqual()` over `assert.deepEqual()` + +When using `assert.throws()`, if possible, provide the full error message: + +```js +assert.throws( + () => { + throw new Error('Wrong value'); + }, + /^Error: Wrong value$/ // Instead of something like /Wrong value/ +); +``` + +### ES.Next features + +For performance considerations, we only use a selected subset of ES.Next +features in JavaScript code in the `lib` directory. However, when writing +tests, it is encouraged to use ES.Next features that have already landed +in the ECMAScript specification. For example: + +* `let` and `const` over `var` +* Template literals over string concatenation +* Arrow functions when appropriate + +## Naming Test Files + +Test files are named using kebab casing. The first component of the name is +`test`. The second is the module or subsystem being tested. The third is usually +the method or event name being tested. Subsequent components of the name add +more information about what is being tested. + +For example, a test for the `beforeExit` event on the `process` object might be +named `test-process-before-exit.js`. If the test specifically checked that arrow +functions worked correctly with the `beforeExit` event, then it might be named +`test-process-before-exit-arrow-functions.js`. + +## Imported Tests + +### Web Platform Tests + +Some of the tests for the WHATWG URL implementation (named +`test-whatwg-url-*.js`) are imported from the +[Web Platform Tests Project](https://github.com/w3c/web-platform-tests/tree/master/url). +These imported tests will be wrapped like this: + +```js +/* eslint-disable */ +/* WPT Refs: + https://github.com/w3c/web-platform-tests/blob/8791bed/url/urlsearchparams-stringifier.html + License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html +*/ + +// Test code + +/* eslint-enable */ +``` + +If you want to improve tests that have been imported this way, please send +a PR to the upstream project first. When your proposed change is merged in +the upstream project, send another PR here to update Node.js accordingly. +Be sure to update the hash in the URL following `WPT Refs:`. diff --git a/doc/onboarding-extras.md b/doc/onboarding-extras.md index e19e1ef5795525..556de7d54007fb 100644 --- a/doc/onboarding-extras.md +++ b/doc/onboarding-extras.md @@ -9,6 +9,7 @@ | `lib/child_process` | @bnoordhuis, @cjihrig | | `lib/cluster` | @bnoordhuis, @cjihrig, @mcollina | | `lib/{crypto,tls,https}` | @nodejs/crypto | +| `lib/dgram` | @cjihrig, @mcollina | | `lib/domains` | @misterdjules | | `lib/fs`, `src/{fs|file}` | @nodejs/fs | | `lib/{_}http{*}` | @nodejs/http | @@ -21,10 +22,10 @@ | `src/async-wrap.*` | @trevnorris | | `src/node_crypto.*` | @nodejs/crypto | | `test/*` | @nodejs/testing | -| `tools/eslint`, `.eslintrc` | @silverwind, @trott | +| `tools/eslint`, `.eslintrc` | @not-an-aardvark, @silverwind, @trott | | async_hooks | @nodejs/diagnostics | | upgrading V8 | @nodejs/v8, @nodejs/post-mortem | -| upgrading npm | @fishrock123, @thealphanerd | +| upgrading npm | @fishrock123, @MylesBorins | | upgrading c-ares | @jbergstroem | | upgrading http-parser | @jbergstroem, @nodejs/http | | upgrading libuv | @saghul | diff --git a/doc/onboarding.md b/doc/onboarding.md index 80be93ace89cb2..1432cf91be0a3f 100644 --- a/doc/onboarding.md +++ b/doc/onboarding.md @@ -217,6 +217,7 @@ Landing a PR * Example: https://github.com/nodejs/node/commit/7b09aade8468e1c930f36b9c81e6ac2ed5bc8732 * For raw commit message: `git log 7b09aade8468e1c930f36b9c81e6ac2ed5bc8732 -1` * Collaborators are in alphabetical order by GitHub username. + * Optionally, include your personal pronouns. * Label your pull request with the `doc` subsystem label. * Run CI on your PR. * After a `LGTM` or two, land the PR. diff --git a/doc/template.html b/doc/template.html index f3edaef72d0537..dc79133e5e7ef9 100644 --- a/doc/template.html +++ b/doc/template.html @@ -45,5 +45,6 @@

Table of Contents

+ diff --git a/lib/.eslintrc b/lib/.eslintrc.yaml similarity index 100% rename from lib/.eslintrc rename to lib/.eslintrc.yaml diff --git a/lib/_http_client.js b/lib/_http_client.js index c07589e9c5da6f..2002d2bc8ea512 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -40,7 +40,7 @@ function ClientRequest(options, cb) { if (self.agent && self.agent.protocol) expectedProtocol = self.agent.protocol; - if (options.path && / /.test(options.path)) { + if (options.path && /[\u0000-\u0020]/.test(options.path)) { // The actual regex is more like /[^A-Za-z0-9\-._~!$&'()*+,;=/:@]/ // with an additional rule for ignoring percentage-escaped characters // but that's a) hard to capture in a regular expression that performs @@ -530,7 +530,11 @@ ClientRequest.prototype.onSocket = function(socket) { function onSocketNT(req, socket) { if (req.aborted) { // If we were aborted while waiting for a socket, skip the whole thing. - socket.emit('free'); + if (req.socketPath || !req.agent) { + socket.destroy(); + } else { + socket.emit('free'); + } } else { tickOnSocket(req, socket); } diff --git a/lib/_http_server.js b/lib/_http_server.js index d6b2d7e88e32a7..65b251f0245afd 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -350,9 +350,11 @@ function connectionListener(socket) { // Override on to unconsume on `data`, `readable` listeners socket.on = socketOnWrap; + // We only consume the socket if it has never been consumed before. var external = socket._handle._externalStream; - if (external) { + if (!socket._handle._consumed && external) { parser._consumed = true; + socket._handle._consumed = true; parser.consume(external); } external = null; diff --git a/lib/_tls_common.js b/lib/_tls_common.js index fbf1d92c983115..dd267bd099352a 100644 --- a/lib/_tls_common.js +++ b/lib/_tls_common.js @@ -135,7 +135,9 @@ exports.createSecureContext = function createSecureContext(options, context) { } } - // Do not keep read/write buffers in free list + // Do not keep read/write buffers in free list for OpenSSL < 1.1.0. (For + // OpenSSL 1.1.0, buffers are malloced and freed without the use of a + // freelist.) if (options.singleUse) { c.singleUse = true; c.context.setFreeListLength(0); diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index 061f4d4182c9ac..cb435e45f26ef6 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -127,6 +127,13 @@ function requestOCSP(self, hello, ctx, cb) { if (!ctx) ctx = self.server._sharedCreds; + + // TLS socket is using a `net.Server` instead of a tls.TLSServer. + // Some TLS properties like `server._sharedCreds` will not be present + if (!ctx) + return cb(null); + + // TODO(indutny): eventually disallow raw `SecureContext` if (ctx.context) ctx = ctx.context; diff --git a/lib/assert.js b/lib/assert.js index 469128f39b4911..3c94d2ae0c88b0 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -1,7 +1,3 @@ -// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 -// -// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! -// // Originally from narwhal.js (http://narwhaljs.org) // Copyright (c) 2009 Thomas Robinson <280north.com> // @@ -30,16 +26,16 @@ const util = require('util'); const Buffer = require('buffer').Buffer; const pToString = (obj) => Object.prototype.toString.call(obj); -// 1. The assert module provides functions that throw +// The assert module provides functions that throw // AssertionError's when particular conditions are not met. The // assert module must conform to the following interface. const assert = module.exports = ok; -// 2. The AssertionError is defined in assert. +// The AssertionError is defined in assert. // new assert.AssertionError({ message: message, // actual: actual, -// expected: expected }) +// expected: expected }); assert.AssertionError = function AssertionError(options) { this.name = 'AssertionError'; @@ -75,7 +71,7 @@ function getMessage(self) { // other keys to the AssertionError's constructor - they will be // ignored. -// 3. All of the following functions must throw an AssertionError +// All of the following functions must throw an AssertionError // when a corresponding condition is not met, with a message that // may be undefined if not provided. All assertion methods provide // both the actual and expected values to the assertion error for @@ -94,7 +90,7 @@ function fail(actual, expected, message, operator, stackStartFunction) { // EXTENSION! allows for well behaved errors defined elsewhere. assert.fail = fail; -// 4. Pure assertion tests whether a value is truthy, as determined +// Pure assertion tests whether a value is truthy, as determined // by !!guard. // assert.ok(guard, message_opt); // This statement is equivalent to assert.equal(true, !!guard, @@ -106,7 +102,7 @@ function ok(value, message) { } assert.ok = ok; -// 5. The equality assertion tests shallow, coercive equality with +// The equality assertion tests shallow, coercive equality with // ==. // assert.equal(actual, expected, message_opt); @@ -114,8 +110,9 @@ assert.equal = function equal(actual, expected, message) { if (actual != expected) fail(actual, expected, message, '==', assert.equal); }; -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); +// The non-equality assertion tests for whether two objects are not +// equal with !=. +// assert.notEqual(actual, expected, message_opt); assert.notEqual = function notEqual(actual, expected, message) { if (actual == expected) { @@ -123,7 +120,7 @@ assert.notEqual = function notEqual(actual, expected, message) { } }; -// 7. The equivalence assertion tests a deep equality relation. +// The equivalence assertion tests a deep equality relation. // assert.deepEqual(actual, expected, message_opt); assert.deepEqual = function deepEqual(actual, expected, message) { @@ -139,18 +136,22 @@ assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { }; function _deepEqual(actual, expected, strict, memos) { - // 7.1. All identical values are equivalent, as determined by ===. + // All identical values are equivalent, as determined by ===. if (actual === expected) { return true; + + // If both values are instances of buffers, equivalence is + // determined by comparing the values and ensuring the result + // === 0. } else if (actual instanceof Buffer && expected instanceof Buffer) { return compare(actual, expected) === 0; - // 7.2. If the expected value is a Date object, the actual value is + // If the expected value is a Date object, the actual value is // equivalent if it is also a Date object that refers to the same time. } else if (util.isDate(actual) && util.isDate(expected)) { return actual.getTime() === expected.getTime(); - // 7.3 If the expected value is a RegExp object, the actual value is + // If the expected value is a RegExp object, the actual value is // equivalent if it is also a RegExp object with the same source and // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). } else if (util.isRegExp(actual) && util.isRegExp(expected)) { @@ -160,18 +161,18 @@ function _deepEqual(actual, expected, strict, memos) { actual.lastIndex === expected.lastIndex && actual.ignoreCase === expected.ignoreCase; - // 7.4. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. + // If both values are primitives, equivalence is determined by + // == or, if checking for strict equivalence, ===. } else if ((actual === null || typeof actual !== 'object') && (expected === null || typeof expected !== 'object')) { return strict ? actual === expected : actual == expected; // If both values are instances of typed arrays, wrap their underlying - // ArrayBuffers in a Buffer each to increase performance + // ArrayBuffers in a Buffer to increase performance. // This optimization requires the arrays to have the same type as checked by - // Object.prototype.toString (aka pToString). Never perform binary - // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their - // bit patterns are not identical. + // Object.prototype.toString (pToString). Never perform binary + // comparisons for Float*Arrays, though, since +0 === -0 is true despite the + // two values' bit patterns not being identical. } else if (ArrayBuffer.isView(actual) && ArrayBuffer.isView(expected) && pToString(actual) === pToString(expected) && !(actual instanceof Float32Array || @@ -184,7 +185,7 @@ function _deepEqual(actual, expected, strict, memos) { expected.byteOffset + expected.byteLength)) === 0; - // 7.5 For all other Object pairs, including Array objects, equivalence is + // For all other Object pairs, including Array objects, equivalence is // determined by having the same number of owned properties (as verified // with Object.prototype.hasOwnProperty.call), the same set of keys // (although not necessarily the same order), equivalent values for every @@ -208,13 +209,14 @@ function _deepEqual(actual, expected, strict, memos) { } function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; + return Object.prototype.toString.call(object) === '[object Arguments]'; } function objEquiv(a, b, strict, actualVisitedObjects) { if (a === null || a === undefined || b === null || b === undefined) return false; - // if one is a primitive, the other must be same + + // If one is a primitive, the other must be the same. if (util.isPrimitive(a) || util.isPrimitive(b)) return a === b; if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) @@ -226,20 +228,23 @@ function objEquiv(a, b, strict, actualVisitedObjects) { const ka = Object.keys(a); const kb = Object.keys(b); var key, i; - // having the same number of owned properties (keys incorporates - // hasOwnProperty) + + // The pair must have the same number of owned properties (keys + // incorporates hasOwnProperty). if (ka.length !== kb.length) return false; - //the same set of keys (although not necessarily the same order), + + // The pair must have the same set of keys (although not + // necessarily in the same order). ka.sort(); kb.sort(); - //~~~cheap key test + // Cheap key test: for (i = ka.length - 1; i >= 0; i--) { if (ka[i] !== kb[i]) return false; } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test + // The pair must have equivalent values for every corresponding key. + // Possibly expensive deep test: for (i = ka.length - 1; i >= 0; i--) { key = ka[i]; if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) @@ -248,7 +253,7 @@ function objEquiv(a, b, strict, actualVisitedObjects) { return true; } -// 8. The non-equivalence assertion tests for any deep inequality. +// The non-equivalence assertion tests for any deep inequality. // assert.notDeepEqual(actual, expected, message_opt); assert.notDeepEqual = function notDeepEqual(actual, expected, message) { @@ -265,7 +270,7 @@ function notDeepStrictEqual(actual, expected, message) { } -// 9. The strict equality assertion tests strict equality, as determined by ===. +// The strict equality assertion tests strict equality, as determined by ===. // assert.strictEqual(actual, expected, message_opt); assert.strictEqual = function strictEqual(actual, expected, message) { @@ -274,8 +279,9 @@ assert.strictEqual = function strictEqual(actual, expected, message) { } }; -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); +// The strict non-equality assertion tests for strict inequality, as +// determined by !==. +// assert.notStrictEqual(actual, expected, message_opt); assert.notStrictEqual = function notStrictEqual(actual, expected, message) { if (actual === expected) { @@ -284,11 +290,12 @@ assert.notStrictEqual = function notStrictEqual(actual, expected, message) { }; function expectedException(actual, expected) { - if (!actual || !expected) { + // actual is guaranteed to be an Error object, but we need to check expected. + if (!expected) { return false; } - if (Object.prototype.toString.call(expected) == '[object RegExp]') { + if (Object.prototype.toString.call(expected) === '[object RegExp]') { return expected.test(actual); } @@ -297,7 +304,7 @@ function expectedException(actual, expected) { return true; } } catch (e) { - // Ignore. The instanceof check doesn't work for arrow functions. + // Ignore. The instanceof check doesn't work for arrow functions. } if (Error.isPrototypeOf(expected)) { @@ -355,7 +362,7 @@ function _throws(shouldThrow, block, expected, message) { } } -// 11. Expected to throw an error: +// Expected to throw an error. // assert.throws(block, Error_opt, message_opt); assert.throws = function(block, /*optional*/error, /*optional*/message) { diff --git a/lib/buffer.js b/lib/buffer.js index 7bad03939f5e5e..db269f5b9931a6 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -677,10 +677,14 @@ Buffer.prototype.write = function(string, offset, length, encoding) { Buffer.prototype.toJSON = function() { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this, 0) - }; + if (this.length) { + const data = []; + for (var i = 0; i < this.length; ++i) + data[i] = this[i]; + return { type: 'Buffer', data }; + } else { + return { type: 'Buffer', data: [] }; + } }; diff --git a/lib/child_process.js b/lib/child_process.js index ea4dd7e3a71097..e952c439677a3f 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -187,9 +187,7 @@ exports.execFile = function(file /*, args, options, callback*/) { stderr = Buffer.concat(_stderr); } - if (ex) { - // Will be handled later - } else if (code === 0 && signal === null) { + if (!ex && code === 0 && signal === null) { callback(null, stdout, stderr); return; } diff --git a/lib/dgram.js b/lib/dgram.js index 484689380e26eb..127d4f5dc54973 100644 --- a/lib/dgram.js +++ b/lib/dgram.js @@ -134,7 +134,7 @@ function replaceHandle(self, newHandle) { self._handle = newHandle; } -Socket.prototype.bind = function(port_ /*, address, callback*/) { +Socket.prototype.bind = function(port_, address_ /*, callback*/) { var self = this; let port = port_; @@ -145,7 +145,7 @@ Socket.prototype.bind = function(port_ /*, address, callback*/) { this._bindState = BIND_STATE_BINDING; - if (typeof arguments[arguments.length - 1] === 'function') + if (arguments.length && typeof arguments[arguments.length - 1] === 'function') self.once('listening', arguments[arguments.length - 1]); if (port instanceof UDP) { @@ -162,7 +162,7 @@ Socket.prototype.bind = function(port_ /*, address, callback*/) { exclusive = !!port.exclusive; port = port.port; } else { - address = typeof arguments[1] === 'function' ? '' : arguments[1]; + address = typeof address_ === 'function' ? '' : address_; exclusive = false; } diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index 6bd3585b32e855..aee0b8f62a4c21 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -226,12 +226,16 @@ util.inherits(ChildProcess, EventEmitter); function flushStdio(subprocess) { - if (subprocess.stdio == null) return; - subprocess.stdio.forEach(function(stream, fd, stdio) { + const stdio = subprocess.stdio; + + if (stdio == null) return; + + for (var i = 0; i < stdio.length; i++) { + const stream = stdio[i]; if (!stream || !stream.readable || stream._readableState.readableListening) - return; + continue; stream.resume(); - }); + } } @@ -264,6 +268,7 @@ ChildProcess.prototype.spawn = function(options) { const self = this; var ipc; var ipcFd; + var i; // If no `stdio` option was given - use default var stdio = options.stdio || 'pipe'; @@ -298,11 +303,12 @@ ChildProcess.prototype.spawn = function(options) { if (err !== uv.UV_ENOENT) return err; } else if (err) { // Close all opened fds on error - stdio.forEach(function(stdio) { - if (stdio.type === 'pipe') { - stdio.handle.close(); + for (i = 0; i < stdio.length; i++) { + const stream = stdio[i]; + if (stream.type === 'pipe') { + stream.handle.close(); } - }); + } this._handle.close(); this._handle = null; @@ -311,27 +317,29 @@ ChildProcess.prototype.spawn = function(options) { this.pid = this._handle.pid; - stdio.forEach(function(stdio, i) { - if (stdio.type === 'ignore') return; + for (i = 0; i < stdio.length; i++) { + const stream = stdio[i]; + if (stream.type === 'ignore') continue; - if (stdio.ipc) { + if (stream.ipc) { self._closesNeeded++; - return; + continue; } - if (stdio.handle) { + if (stream.handle) { // when i === 0 - we're dealing with stdin // (which is the only one writable pipe) - stdio.socket = createSocket(self.pid !== 0 ? stdio.handle : null, i > 0); + stream.socket = createSocket(self.pid !== 0 ? + stream.handle : null, i > 0); if (i > 0 && self.pid !== 0) { self._closesNeeded++; - stdio.socket.on('close', function() { + stream.socket.on('close', function() { maybeClose(self); }); } } - }); + } this.stdin = stdio.length >= 1 && stdio[0].socket !== undefined ? stdio[0].socket : null; @@ -760,11 +768,11 @@ function _validateStdio(stdio, sync) { } // Defaults - if (stdio === null || stdio === undefined) { + if (stdio == null) { stdio = i < 3 ? 'pipe' : 'ignore'; } - if (stdio === null || stdio === 'ignore') { + if (stdio === 'ignore') { acc.push({type: 'ignore'}); } else if (stdio === 'pipe' || typeof stdio === 'number' && stdio < 0) { var a = { @@ -850,7 +858,7 @@ function getSocketList(type, slave, key) { function maybeClose(subprocess) { subprocess._closesGot++; - if (subprocess._closesGot == subprocess._closesNeeded) { + if (subprocess._closesGot === subprocess._closesNeeded) { subprocess.emit('close', subprocess.exitCode, subprocess.signalCode); } } diff --git a/lib/net.js b/lib/net.js index 92dd52ebf78e61..c6005aeecfac69 100644 --- a/lib/net.js +++ b/lib/net.js @@ -137,6 +137,9 @@ function Socket(options) { } else if (options.fd !== undefined) { this._handle = createHandle(options.fd); this._handle.open(options.fd); + // options.fd can be string (since it user-defined), + // so changing this to === would be semver-major + // See: https://github.com/nodejs/node/pull/11513 if ((options.fd == 1 || options.fd == 2) && (this._handle instanceof Pipe) && process.platform === 'win32') { @@ -1057,7 +1060,7 @@ function afterConnect(status, handle, req, readable, writable) { self._connecting = false; self._sockname = null; - if (status == 0) { + if (status === 0) { self.readable = readable; self.writable = writable; self._unrefTimer(); diff --git a/lib/readline.js b/lib/readline.js index 1962f822ee4fac..66ba46da354ff8 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -17,22 +17,13 @@ const EventEmitter = require('events'); exports.createInterface = function(input, output, completer, terminal) { - var rl; - if (arguments.length === 1) { - rl = new Interface(input); - } else { - rl = new Interface(input, output, completer, terminal); - } - return rl; + return new Interface(input, output, completer, terminal); }; function Interface(input, output, completer, terminal) { if (!(this instanceof Interface)) { - // call the constructor preserving original number of arguments - const self = Object.create(Interface.prototype); - Interface.apply(self, arguments); - return self; + return new Interface(input, output, completer, terminal); } this._sawReturn = false; @@ -41,7 +32,7 @@ function Interface(input, output, completer, terminal) { EventEmitter.call(this); var historySize; - if (arguments.length === 1) { + if (input && input.input) { // an options object was given output = input.output; completer = input.completer; @@ -424,7 +415,7 @@ Interface.prototype._tabComplete = function() { // this = Interface instance function handleGroup(self, group, width, maxColumns) { - if (group.length == 0) { + if (group.length === 0) { return; } var minRows = Math.ceil(group.length / maxColumns); @@ -449,14 +440,14 @@ function handleGroup(self, group, width, maxColumns) { } function commonPrefix(strings) { - if (!strings || strings.length == 0) { + if (!strings || strings.length === 0) { return ''; } var sorted = strings.slice().sort(); var min = sorted[0]; var max = sorted[sorted.length - 1]; for (var i = 0, len = min.length; i < len; i++) { - if (min[i] != max[i]) { + if (min[i] !== max[i]) { return min.slice(0, i); } } @@ -669,7 +660,7 @@ Interface.prototype._ttyWrite = function(s, key) { key = key || {}; // Ignore escape key - Fixes #2876 - if (key.name == 'escape') return; + if (key.name === 'escape') return; if (key.ctrl && key.shift) { /* Control and shift pressed */ @@ -750,7 +741,7 @@ Interface.prototype._ttyWrite = function(s, key) { break; case 'z': - if (process.platform == 'win32') break; + if (process.platform === 'win32') break; if (this.listenerCount('SIGTSTP') > 0) { this.emit('SIGTSTP'); } else { @@ -955,7 +946,7 @@ function emitKeypressEvents(stream, iface) { } function onNewListener(event) { - if (event == 'keypress') { + if (event === 'keypress') { stream.on('data', onData); stream.removeListener('newListener', onNewListener); } diff --git a/lib/tty.js b/lib/tty.js index 54a7b756ec9544..c00f2f5e796b34 100644 --- a/lib/tty.js +++ b/lib/tty.js @@ -66,7 +66,7 @@ function WriteStream(fd) { // Ref: https://github.com/nodejs/node/pull/1771#issuecomment-119351671 if (process.platform === 'darwin') this._handle.setBlocking(true); - var winSize = []; + var winSize = new Array(2); var err = this._handle.getWindowSize(winSize); if (!err) { this.columns = winSize[0]; @@ -83,7 +83,7 @@ WriteStream.prototype.isTTY = true; WriteStream.prototype._refreshSize = function() { var oldCols = this.columns; var oldRows = this.rows; - var winSize = []; + var winSize = new Array(2); var err = this._handle.getWindowSize(winSize); if (err) { this.emit('error', errnoException(err, 'getWindowSize')); diff --git a/lib/util.js b/lib/util.js index 6128c36a988ec1..2417392a2d3fcf 100644 --- a/lib/util.js +++ b/lib/util.js @@ -231,10 +231,10 @@ function ensureDebugIsInitialized() { function inspectPromise(p) { - ensureDebugIsInitialized(); // Only create a mirror if the object is a Promise. if (!binding.isPromise(p)) return null; + ensureDebugIsInitialized(); const mirror = Debug.MakeMirror(p, true); return {status: mirror.status(), value: mirror.promiseValue().value_}; } diff --git a/lib/v8.js b/lib/v8.js index e78a2480ff04e7..c1ca09dda8bb07 100644 --- a/lib/v8.js +++ b/lib/v8.js @@ -18,7 +18,7 @@ const v8binding = process.binding('v8'); // Properties for heap statistics buffer extraction. const heapStatisticsBuffer = - new Uint32Array(v8binding.heapStatisticsArrayBuffer); + new Float64Array(v8binding.heapStatisticsArrayBuffer); const kTotalHeapSizeIndex = v8binding.kTotalHeapSizeIndex; const kTotalHeapSizeExecutableIndex = v8binding.kTotalHeapSizeExecutableIndex; const kTotalPhysicalSizeIndex = v8binding.kTotalPhysicalSizeIndex; @@ -28,7 +28,7 @@ const kHeapSizeLimitIndex = v8binding.kHeapSizeLimitIndex; // Properties for heap space statistics buffer extraction. const heapSpaceStatisticsBuffer = - new Uint32Array(v8binding.heapSpaceStatisticsArrayBuffer); + new Float64Array(v8binding.heapSpaceStatisticsArrayBuffer); const kHeapSpaces = v8binding.kHeapSpaces; const kNumberOfHeapSpaces = kHeapSpaces.length; const kHeapSpaceStatisticsPropertiesCount = diff --git a/node.gyp b/node.gyp index 1c10630f88bdb9..cccc8a32980d01 100644 --- a/node.gyp +++ b/node.gyp @@ -163,6 +163,7 @@ 'src/signal_wrap.cc', 'src/spawn_sync.cc', 'src/string_bytes.cc', + 'src/string_search.cc', 'src/stream_base.cc', 'src/stream_wrap.cc', 'src/tcp_wrap.cc', @@ -170,6 +171,7 @@ 'src/tty_wrap.cc', 'src/process_wrap.cc', 'src/udp_wrap.cc', + 'src/util.cc', 'src/uv.cc', # headers to make for a more pleasant IDE experience 'src/async-wrap.h', @@ -208,8 +210,6 @@ 'src/tree.h', 'src/util.h', 'src/util-inl.h', - 'src/util.cc', - 'src/string_search.cc', 'deps/http_parser/http_parser.h', 'deps/v8/include/v8.h', 'deps/v8/include/v8-debug.h', diff --git a/src/CNNICHashWhitelist.inc b/src/CNNICHashWhitelist.inc index e3c6a618fd7729..ed4149f1c51346 100644 --- a/src/CNNICHashWhitelist.inc +++ b/src/CNNICHashWhitelist.inc @@ -16,102 +16,22 @@ struct WhitelistedCNNICHash { }; static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { - { - { 0x00, 0x5B, 0xF9, 0x8E, 0xED, 0x61, 0x2B, 0x50, 0xEC, 0xDA, 0x7B, 0xFF, 0x56, 0xA2, 0xDF, 0xF4, - 0x67, 0xA8, 0xAD, 0xD7, 0xEE, 0xC0, 0xAB, 0x30, 0x57, 0x54, 0xD7, 0x66, 0xBE, 0xBB, 0x5F, 0xE8 }, - }, - { - { 0x00, 0x87, 0x75, 0xB8, 0xEA, 0xD0, 0xFE, 0x16, 0x26, 0x9C, 0x9A, 0x9A, 0xB2, 0x83, 0x39, 0x55, - 0x49, 0xCA, 0x67, 0xC2, 0xA3, 0xAA, 0xE8, 0x2F, 0x1A, 0x6B, 0x4D, 0x3A, 0xBC, 0xCA, 0xDC, 0x27 }, - }, { { 0x00, 0xC5, 0x9F, 0x5E, 0xF3, 0xB4, 0x6D, 0xBC, 0xA0, 0xA8, 0xBB, 0xA5, 0x0A, 0x72, 0xD4, 0xE1, 0x83, 0x9A, 0x94, 0xFB, 0x1A, 0x58, 0x5A, 0xD7, 0x2A, 0x7A, 0xAC, 0x3C, 0x72, 0x56, 0x1F, 0xC0 }, }, - { - { 0x00, 0xC6, 0x81, 0x13, 0x16, 0xBD, 0x9C, 0x91, 0x98, 0x6E, 0xA9, 0x7E, 0x2C, 0x30, 0xAB, 0xEF, - 0xA0, 0xD5, 0x68, 0x04, 0x89, 0x0D, 0x65, 0x8D, 0xFF, 0x08, 0x59, 0x11, 0x6E, 0xB4, 0xC2, 0x32 }, - }, - { - { 0x00, 0xCB, 0x92, 0x51, 0xAF, 0xFA, 0x0E, 0x4C, 0xA0, 0xA5, 0x61, 0x1F, 0x1A, 0x79, 0x15, 0x05, - 0xD2, 0xAB, 0xF8, 0x9D, 0xD0, 0x48, 0x53, 0x29, 0x16, 0xF0, 0x5F, 0xD8, 0x74, 0xF2, 0x5D, 0xCD }, - }, - { - { 0x00, 0xDE, 0xFF, 0x68, 0x2E, 0x35, 0x10, 0x22, 0xCC, 0x3B, 0xBB, 0x4E, 0xB5, 0x88, 0x0A, 0x97, - 0x27, 0x88, 0x0A, 0xF3, 0x52, 0xFB, 0xBE, 0x2F, 0x91, 0x24, 0xBE, 0x92, 0x88, 0x4B, 0x18, 0xFD }, - }, - { - { 0x00, 0xF7, 0x28, 0x14, 0x8C, 0x8C, 0x28, 0x90, 0x7F, 0xAC, 0xF3, 0x89, 0xC0, 0xE9, 0xB9, 0xBC, - 0x6F, 0xD1, 0xB8, 0xDE, 0xE0, 0xE8, 0x5B, 0x65, 0xFE, 0x39, 0x39, 0x8B, 0xEE, 0x95, 0xDC, 0x59 }, - }, - { - { 0x00, 0xF8, 0x4A, 0x82, 0x67, 0xB3, 0xDA, 0xEE, 0x1E, 0x16, 0x90, 0x75, 0x1C, 0x86, 0xBD, 0x78, - 0x94, 0x08, 0x65, 0x94, 0x3E, 0xEE, 0x52, 0xE9, 0x7D, 0x98, 0x50, 0x1A, 0xC8, 0xE1, 0x58, 0x94 }, - }, - { - { 0x01, 0x1D, 0x7D, 0xC8, 0x19, 0x01, 0xAB, 0xCA, 0xE0, 0xF4, 0x74, 0x4C, 0x17, 0xB8, 0xF7, 0x87, - 0xF3, 0x97, 0x41, 0x3A, 0x42, 0x3D, 0xC0, 0x82, 0xC4, 0xB3, 0x80, 0x23, 0xDE, 0x42, 0x00, 0x75 }, - }, - { - { 0x01, 0x5F, 0x9B, 0x68, 0xD6, 0x4B, 0x86, 0x0D, 0x5E, 0xD0, 0x40, 0x50, 0x66, 0xA3, 0xF2, 0xFD, - 0x9D, 0x6D, 0xDE, 0x3A, 0x9B, 0x35, 0x73, 0x17, 0x34, 0x10, 0xE6, 0xCE, 0x63, 0x9B, 0x77, 0x91 }, - }, - { - { 0x01, 0xD6, 0x0A, 0xE5, 0x22, 0x20, 0x8E, 0xC6, 0xF5, 0x04, 0xD5, 0x91, 0xF9, 0x7A, 0x99, 0xA5, - 0xEF, 0x25, 0x25, 0x98, 0x71, 0xE4, 0x77, 0x42, 0xD4, 0x71, 0xE2, 0x6F, 0xF0, 0x75, 0xE9, 0xE9 }, - }, - { - { 0x01, 0xF1, 0x14, 0x28, 0x67, 0x99, 0xEA, 0x8B, 0x24, 0x08, 0xE3, 0xDA, 0xBE, 0x90, 0xF3, 0xAD, - 0xEA, 0x20, 0x46, 0x32, 0xAA, 0x3B, 0x82, 0xD2, 0xE5, 0x5A, 0x8D, 0xCF, 0x5B, 0x7E, 0xD7, 0xAD }, - }, - { - { 0x01, 0xFC, 0xEB, 0xF0, 0x6A, 0xF4, 0x9D, 0x87, 0x8A, 0xF9, 0xBD, 0x57, 0xE1, 0x2D, 0xBE, 0xA7, - 0xEB, 0x80, 0x12, 0x0F, 0x7C, 0x10, 0xCD, 0x1A, 0x1A, 0x98, 0x89, 0x8E, 0xD8, 0xE7, 0xEC, 0x4C }, - }, { { 0x02, 0x01, 0x4E, 0x80, 0xF5, 0xC4, 0xF3, 0x8B, 0xA9, 0xD9, 0x04, 0x79, 0x1A, 0x63, 0xF6, 0x4D, 0x05, 0xF9, 0xE2, 0x03, 0xA1, 0xF1, 0x2B, 0x06, 0xD6, 0x55, 0x94, 0x01, 0x41, 0x0E, 0x73, 0x36 }, }, - { - { 0x02, 0x08, 0x22, 0xAB, 0x1B, 0x8C, 0xC0, 0xD8, 0x22, 0x03, 0x60, 0xA1, 0xAF, 0x8B, 0xB4, 0xD9, - 0xBE, 0x60, 0xE8, 0x43, 0x9E, 0x2B, 0xA3, 0x07, 0x8D, 0x61, 0xF4, 0x01, 0xE1, 0x5B, 0x41, 0xBC }, - }, { { 0x02, 0x35, 0x38, 0xE2, 0x48, 0x15, 0x28, 0x75, 0x29, 0x2F, 0x2C, 0x83, 0x9A, 0xB3, 0x2B, 0xC7, 0x35, 0x1E, 0x2B, 0x29, 0x99, 0x1D, 0x66, 0xAE, 0xA6, 0x16, 0xCB, 0x0B, 0x26, 0xA5, 0xE3, 0x75 }, }, - { - { 0x02, 0x61, 0x53, 0xE5, 0x91, 0xCD, 0x82, 0xF7, 0xBD, 0xCE, 0x99, 0xB3, 0xBA, 0x10, 0xA8, 0xD6, - 0x90, 0x24, 0xC6, 0x36, 0xD3, 0x5D, 0xAB, 0x1A, 0x95, 0x6C, 0x7D, 0x7A, 0xEF, 0x80, 0x3A, 0xDE }, - }, - { - { 0x02, 0xC4, 0x8C, 0x3A, 0xDC, 0xF9, 0x9F, 0x28, 0xF4, 0x79, 0xB8, 0xF6, 0x79, 0x88, 0x77, 0x78, - 0xB9, 0x3A, 0x06, 0xAF, 0xF1, 0x6E, 0x35, 0x8F, 0x40, 0x9B, 0xC6, 0xFE, 0x54, 0x03, 0x04, 0xC6 }, - }, { { 0x02, 0xEC, 0x35, 0xF5, 0x83, 0x4C, 0xD2, 0xC3, 0x43, 0x33, 0x39, 0x9A, 0xEA, 0x6B, 0xDA, 0x84, 0x68, 0xAB, 0x8D, 0x74, 0xEF, 0x6C, 0xA5, 0x2D, 0x33, 0x7A, 0x30, 0x69, 0x4C, 0x3F, 0x95, 0xA4 }, }, - { - { 0x03, 0x2A, 0x7E, 0x55, 0xFE, 0xC3, 0x74, 0xC6, 0xD7, 0x9C, 0xFF, 0xDB, 0x46, 0x7C, 0x5C, 0xCD, - 0x56, 0xF5, 0x49, 0x0A, 0xAE, 0x9A, 0xF1, 0xBC, 0xCC, 0x7E, 0x54, 0xDA, 0xFA, 0x6D, 0x8A, 0x3F }, - }, - { - { 0x03, 0x33, 0xB3, 0x91, 0x64, 0xD6, 0x25, 0xF0, 0x1D, 0x50, 0x83, 0xDE, 0x2F, 0xB1, 0xE2, 0x5D, - 0x89, 0x34, 0x29, 0x69, 0x0F, 0xA5, 0xD7, 0x7D, 0x84, 0x90, 0x1E, 0xD1, 0x9B, 0x22, 0x1D, 0xF3 }, - }, - { - { 0x03, 0x83, 0xF9, 0xC1, 0xF5, 0xC8, 0x4C, 0x02, 0x64, 0xE6, 0x3B, 0x2A, 0x96, 0x21, 0x21, 0x37, - 0x58, 0x70, 0x0D, 0x1A, 0xFB, 0x61, 0xF8, 0x00, 0x1F, 0x3E, 0xFF, 0x81, 0x44, 0xE6, 0xFE, 0x73 }, - }, - { - { 0x03, 0xD9, 0x9F, 0x24, 0xF8, 0x64, 0x4B, 0x80, 0x4D, 0x8E, 0x3B, 0xC9, 0xC8, 0x7C, 0x02, 0x4E, - 0x4B, 0xB7, 0x0D, 0xC6, 0x30, 0x1B, 0xCD, 0xE3, 0x24, 0x12, 0xB4, 0xCE, 0x8C, 0x0C, 0x14, 0x58 }, - }, - { - { 0x03, 0xDE, 0x42, 0xAF, 0x1F, 0x30, 0x9F, 0x95, 0xF6, 0xC8, 0x91, 0x03, 0xEA, 0x98, 0x7E, 0x84, - 0xD3, 0x18, 0x6B, 0x60, 0x65, 0xF9, 0x60, 0x7A, 0x06, 0x6A, 0x30, 0x2B, 0x58, 0x05, 0xEB, 0x3B }, - }, { { 0x03, 0xE0, 0x6E, 0x0B, 0x7A, 0x2C, 0xBA, 0xE4, 0xB6, 0x8B, 0xCE, 0x5F, 0x83, 0xE7, 0xA9, 0x31, 0x6E, 0xD7, 0x82, 0x3E, 0x8D, 0x94, 0x85, 0x38, 0xF1, 0x94, 0x3F, 0xA4, 0x27, 0xD7, 0x91, 0x0E }, @@ -124,62 +44,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x04, 0x18, 0xD5, 0x3E, 0xBC, 0x8E, 0x71, 0x41, 0x25, 0x1B, 0x4D, 0xC8, 0xFA, 0x7B, 0x2B, 0xD8, 0xFD, 0x3A, 0x1C, 0x65, 0x2A, 0xA1, 0x16, 0xE7, 0xFC, 0x70, 0x0B, 0x2A, 0xB5, 0x1A, 0x2A, 0x1A }, }, - { - { 0x04, 0x3E, 0xD7, 0xFF, 0x71, 0xBD, 0x65, 0xAE, 0x28, 0x35, 0xB0, 0xCB, 0x38, 0x74, 0x8D, 0x0B, - 0x08, 0x5F, 0x86, 0xF7, 0x5F, 0x2A, 0x96, 0xC8, 0xD4, 0x64, 0x00, 0x89, 0xBC, 0x58, 0x3D, 0x7B }, - }, - { - { 0x04, 0x49, 0x38, 0x0A, 0x30, 0xBD, 0x6D, 0xBD, 0x55, 0xDF, 0xE2, 0x54, 0xC8, 0x20, 0xA0, 0x77, - 0xFF, 0x11, 0xCA, 0xFC, 0x83, 0xB5, 0x0E, 0x0A, 0x13, 0xF1, 0x3D, 0x59, 0xD3, 0xCA, 0x6C, 0xAF }, - }, - { - { 0x04, 0x6F, 0xDA, 0x46, 0xF0, 0xC4, 0x7B, 0x4A, 0x4D, 0x90, 0x31, 0x03, 0x7B, 0x33, 0xDB, 0xAC, - 0x99, 0x86, 0x1B, 0x7F, 0x0F, 0x85, 0x1D, 0x15, 0x1A, 0x83, 0x29, 0xF8, 0x42, 0x1B, 0x41, 0x5E }, - }, - { - { 0x04, 0x71, 0x57, 0x2C, 0x03, 0x03, 0x7D, 0xEE, 0x2B, 0x40, 0x09, 0x6E, 0xE8, 0xAA, 0x37, 0x82, - 0xC6, 0xFA, 0x81, 0x42, 0xCC, 0xA2, 0x68, 0x19, 0x09, 0xDA, 0xE8, 0xC4, 0x66, 0xD0, 0x58, 0x4E }, - }, - { - { 0x04, 0x80, 0x71, 0x3A, 0x76, 0x91, 0x7E, 0xB1, 0x7F, 0xB5, 0x4C, 0x93, 0xEE, 0xD3, 0xFD, 0x8A, - 0x98, 0x2B, 0xD9, 0x06, 0x9C, 0x69, 0xAB, 0xEA, 0xDE, 0xB2, 0x5A, 0x76, 0xD9, 0xA5, 0x90, 0x65 }, - }, - { - { 0x04, 0x8A, 0x21, 0x7A, 0xD4, 0x4E, 0x00, 0xCA, 0xD1, 0xEB, 0xEE, 0x67, 0x23, 0x51, 0xD2, 0x89, - 0x10, 0xAF, 0x69, 0xED, 0x4D, 0x45, 0x5A, 0xEF, 0x42, 0x76, 0x23, 0xF7, 0xD7, 0xAD, 0xDE, 0xC7 }, - }, - { - { 0x04, 0xA6, 0x4D, 0xD4, 0x31, 0x97, 0xC6, 0x2C, 0x2C, 0xD3, 0xB6, 0x0B, 0xDF, 0x30, 0x5B, 0x3E, - 0x81, 0xE5, 0xF5, 0x00, 0x2C, 0x15, 0x78, 0x59, 0xFB, 0xB7, 0xB4, 0x85, 0x45, 0xE6, 0x49, 0x11 }, - }, - { - { 0x04, 0xDE, 0x66, 0x05, 0x94, 0x63, 0xAF, 0xD2, 0xC1, 0x1E, 0x9E, 0x4F, 0xD6, 0xAE, 0x55, 0x07, - 0xEF, 0x68, 0xEF, 0x91, 0x54, 0x0C, 0x41, 0x0C, 0x32, 0xA8, 0xF0, 0x24, 0x62, 0x5F, 0x6B, 0xB0 }, - }, - { - { 0x05, 0x2E, 0xEB, 0x25, 0xB7, 0x24, 0xBA, 0x44, 0xF4, 0x81, 0xBE, 0x5C, 0x80, 0xFD, 0xB5, 0x5F, - 0x36, 0xB8, 0xD9, 0xBC, 0xE6, 0x45, 0xB2, 0x2F, 0xA1, 0x35, 0xC7, 0xD9, 0x74, 0xCB, 0xF6, 0xFE }, - }, - { - { 0x05, 0x4F, 0xF2, 0x4D, 0xD5, 0x0D, 0x49, 0x84, 0x68, 0x3B, 0x8B, 0xB0, 0x1A, 0xDE, 0xE5, 0xA8, - 0x73, 0x1F, 0x7C, 0x24, 0xCD, 0x11, 0x6F, 0x5A, 0xC6, 0x75, 0xE0, 0x17, 0x33, 0xCA, 0xD1, 0x83 }, - }, - { - { 0x05, 0x64, 0x05, 0x92, 0x8F, 0xDC, 0x6D, 0xFC, 0x08, 0xCD, 0x89, 0x88, 0x63, 0x0E, 0xE2, 0xD8, - 0x23, 0x5A, 0x62, 0xFC, 0xD1, 0xDB, 0xC9, 0x12, 0xA6, 0x52, 0xA3, 0xFD, 0xAC, 0xD4, 0xF3, 0x51 }, - }, - { - { 0x05, 0x69, 0xC6, 0xC6, 0x2A, 0x75, 0xA3, 0x9B, 0x82, 0x4F, 0x48, 0x77, 0xC8, 0x8E, 0xC0, 0x08, - 0x9C, 0x09, 0x42, 0x58, 0x1E, 0x38, 0x77, 0xFF, 0xF9, 0x19, 0x50, 0xEA, 0x0F, 0x9D, 0xD4, 0xFE }, - }, - { - { 0x05, 0xA7, 0xAF, 0xA3, 0x20, 0x08, 0xFE, 0x48, 0x46, 0x29, 0x67, 0xE7, 0xF8, 0x79, 0x9F, 0x72, - 0x48, 0x71, 0x80, 0xEC, 0x0F, 0x68, 0xBA, 0xF7, 0x96, 0x7A, 0x87, 0xFA, 0x0A, 0x75, 0xCF, 0xAA }, - }, - { - { 0x06, 0x17, 0xF8, 0xBC, 0x10, 0x4C, 0x24, 0x0A, 0x8E, 0x33, 0x42, 0x82, 0x00, 0x29, 0x1D, 0xB3, - 0xA6, 0xA0, 0x67, 0x70, 0x90, 0xCB, 0x02, 0x39, 0x9F, 0xFD, 0x88, 0x75, 0xB9, 0x05, 0xB1, 0x1F }, - }, { { 0x06, 0xD4, 0x08, 0xFF, 0xA9, 0x93, 0xAF, 0x04, 0x45, 0x9C, 0x45, 0x67, 0x1A, 0xAB, 0xD8, 0x7E, 0xF9, 0x2B, 0x85, 0x6B, 0x1B, 0x42, 0xC6, 0x7E, 0x00, 0x5E, 0xB4, 0xD2, 0x71, 0x58, 0xA8, 0x42 }, @@ -188,22 +52,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x07, 0x19, 0x4F, 0x47, 0xF4, 0xCE, 0xD0, 0x96, 0xD1, 0x06, 0x8D, 0x34, 0x49, 0x3B, 0x67, 0x37, 0x14, 0x45, 0x16, 0x93, 0xA6, 0xA2, 0x71, 0x2F, 0x70, 0x8F, 0x59, 0x36, 0x12, 0x11, 0xC6, 0x21 }, }, - { - { 0x07, 0x3C, 0xA3, 0x1D, 0x60, 0x08, 0x54, 0xA8, 0x29, 0x9A, 0xFF, 0x74, 0xE9, 0x8A, 0xC1, 0xED, - 0x48, 0x2A, 0xCA, 0x06, 0x8E, 0xC5, 0x90, 0x61, 0x54, 0xEA, 0x24, 0x7B, 0x6C, 0x27, 0x6E, 0xE9 }, - }, - { - { 0x07, 0x76, 0x08, 0x6A, 0x5A, 0x31, 0x72, 0x42, 0xA2, 0x50, 0x4C, 0x45, 0x3C, 0x89, 0xFF, 0xD3, - 0xC4, 0xF3, 0xA3, 0x6C, 0x46, 0xBE, 0xB3, 0xF5, 0xF3, 0x55, 0xDB, 0x47, 0x6D, 0xD7, 0x7C, 0x19 }, - }, { { 0x07, 0x8F, 0xEE, 0x58, 0x8A, 0x2C, 0x55, 0xC8, 0xE2, 0xC1, 0x78, 0x71, 0xAA, 0xB6, 0xE4, 0x00, 0xB3, 0xFD, 0xBC, 0xDC, 0xF3, 0x91, 0x46, 0xA0, 0x89, 0x37, 0xF9, 0xAC, 0x06, 0xA1, 0xB8, 0xBD }, }, - { - { 0x07, 0xA9, 0x5C, 0x81, 0xED, 0x15, 0x9E, 0x44, 0xA0, 0x41, 0x2B, 0xDE, 0xB1, 0x31, 0xA1, 0x1F, - 0x26, 0xE3, 0x4E, 0x51, 0x67, 0xEC, 0xF2, 0x11, 0x78, 0xF3, 0xEF, 0xBF, 0xB3, 0xA2, 0xBB, 0x72 }, - }, { { 0x07, 0xE9, 0x60, 0x9E, 0x05, 0xDC, 0x0A, 0x1E, 0x52, 0x15, 0x06, 0x49, 0xEB, 0xF4, 0x1F, 0x6D, 0xE3, 0x86, 0x7C, 0x9C, 0x25, 0xFE, 0x17, 0x7B, 0xAB, 0xCF, 0xD9, 0xB3, 0x70, 0x46, 0x13, 0x8B }, @@ -216,58 +68,22 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x08, 0xC2, 0xD3, 0x17, 0xA8, 0x4A, 0x3C, 0xBE, 0x38, 0xDE, 0x64, 0xA2, 0x4D, 0xD4, 0x27, 0x91, 0x09, 0xE2, 0xBC, 0x02, 0x2B, 0x93, 0xB1, 0x05, 0xA8, 0x94, 0xA5, 0x1A, 0xDC, 0x3E, 0xE5, 0xCC }, }, - { - { 0x08, 0xC7, 0xB0, 0x23, 0xA9, 0x9A, 0x63, 0x74, 0x13, 0xDE, 0x2C, 0x9D, 0x88, 0x09, 0x82, 0x33, - 0x8D, 0x09, 0x36, 0xF1, 0x21, 0x25, 0x1E, 0x75, 0x58, 0x59, 0x12, 0x62, 0x92, 0xF9, 0x6B, 0x1A }, - }, - { - { 0x09, 0x06, 0x86, 0xA8, 0x02, 0xD8, 0x42, 0x73, 0x06, 0x33, 0x5B, 0xC4, 0x63, 0x5F, 0x95, 0x8F, - 0x90, 0xB2, 0x76, 0xEB, 0x7B, 0x1A, 0x62, 0x7C, 0xBE, 0xA7, 0xF8, 0xA1, 0xD2, 0x44, 0xEE, 0x8A }, - }, - { - { 0x09, 0x1F, 0x0A, 0xDD, 0x81, 0x63, 0xC3, 0x11, 0xB3, 0xDF, 0x6C, 0x8A, 0xBA, 0x7B, 0xD3, 0x35, - 0x0C, 0x52, 0xC4, 0xFC, 0xAE, 0xC1, 0x67, 0x62, 0xF6, 0x64, 0xC4, 0xCB, 0xDC, 0xC5, 0x77, 0xC8 }, - }, - { - { 0x09, 0x35, 0x58, 0xED, 0xE2, 0x67, 0x67, 0x32, 0x63, 0x49, 0xE7, 0xBE, 0xBC, 0x8C, 0x77, 0x02, - 0x94, 0xC4, 0x42, 0xA7, 0x2E, 0x6C, 0x98, 0x0E, 0xA0, 0x4E, 0xFA, 0x90, 0x07, 0x30, 0x81, 0x3E }, - }, { { 0x09, 0x9F, 0x3E, 0x71, 0xB5, 0x00, 0xD1, 0x5B, 0x03, 0x7B, 0x93, 0xAA, 0x5F, 0xB4, 0x16, 0x19, 0x0A, 0xD1, 0xDF, 0x86, 0x73, 0xAB, 0x31, 0xA8, 0xF6, 0xD9, 0x7F, 0x59, 0x5E, 0x8E, 0x16, 0xE9 }, }, - { - { 0x09, 0xA2, 0xC1, 0x4E, 0x5D, 0x62, 0xC3, 0x4A, 0xA7, 0x06, 0xFF, 0xAB, 0xD2, 0x1E, 0x7A, 0xD2, - 0x25, 0xF6, 0x25, 0xF7, 0x1F, 0xF8, 0x9D, 0xB3, 0x9B, 0x32, 0x2A, 0xCB, 0x0C, 0x84, 0x57, 0x4F }, - }, - { - { 0x09, 0xA5, 0x9E, 0x8B, 0x56, 0xFD, 0x2B, 0xA0, 0xAC, 0x68, 0x5C, 0xB6, 0xF7, 0x51, 0xA0, 0x2F, - 0x83, 0x5C, 0x68, 0x50, 0x81, 0xA2, 0xD5, 0xDC, 0x02, 0xB0, 0x4E, 0x9B, 0x3B, 0xC7, 0xC8, 0xBC }, - }, { { 0x09, 0xEB, 0xDD, 0x1B, 0x7F, 0xFA, 0x4E, 0xD7, 0x4B, 0xEB, 0xAE, 0x96, 0xBA, 0x10, 0x65, 0xDC, 0x7D, 0xA1, 0xC5, 0xD3, 0x18, 0x3C, 0xC5, 0x94, 0x19, 0xE9, 0x78, 0x36, 0xAF, 0x7F, 0x6D, 0x70 }, }, - { - { 0x09, 0xFC, 0x8C, 0xAD, 0x2C, 0xE7, 0x52, 0x3C, 0xDB, 0xED, 0x70, 0x5F, 0xDA, 0x4B, 0x22, 0x8C, - 0xD4, 0xBB, 0xA3, 0xB7, 0xF9, 0xF2, 0x50, 0xEA, 0x6B, 0xE2, 0x3C, 0x17, 0x00, 0xA5, 0x1C, 0xE5 }, - }, { { 0x0A, 0x01, 0x88, 0x81, 0x2C, 0x9D, 0xE8, 0x8A, 0x2F, 0x0A, 0x5C, 0x4C, 0x57, 0xE6, 0xF9, 0xA8, 0x15, 0x69, 0xE9, 0xC7, 0x09, 0xC0, 0x95, 0x40, 0x80, 0xE5, 0xE4, 0xE6, 0x62, 0x85, 0x6D, 0xF8 }, }, - { - { 0x0A, 0x35, 0xB0, 0xDA, 0x94, 0xB8, 0xA4, 0xB4, 0xAE, 0xB6, 0x32, 0xB0, 0x90, 0xC8, 0xA3, 0xC0, - 0x81, 0x9B, 0xC6, 0x74, 0x99, 0xF8, 0x92, 0x8B, 0xF6, 0x8E, 0xB2, 0xFF, 0x4E, 0xD4, 0x29, 0x51 }, - }, { { 0x0A, 0x42, 0x19, 0x7E, 0x48, 0x70, 0xB2, 0x34, 0x20, 0xF5, 0x51, 0x9F, 0xB8, 0x39, 0xB6, 0xCC, 0x83, 0x03, 0x52, 0x9A, 0xA9, 0x06, 0x9A, 0xD1, 0xA0, 0x90, 0x86, 0xCF, 0x6C, 0xBA, 0x07, 0xC2 }, }, - { - { 0x0A, 0xB1, 0xB1, 0x53, 0x74, 0x59, 0x75, 0x6C, 0xD4, 0x1C, 0x02, 0x6D, 0x46, 0x83, 0x64, 0x3A, - 0xC1, 0x6C, 0xF9, 0xCB, 0x1C, 0x28, 0xBD, 0x27, 0x8A, 0x18, 0x53, 0x52, 0x30, 0xD6, 0xE4, 0x93 }, - }, { { 0x0B, 0x03, 0xE1, 0x27, 0xC2, 0xE3, 0x3E, 0xAD, 0xBC, 0xB0, 0x99, 0x80, 0x46, 0xCC, 0x9B, 0xA7, 0x33, 0x46, 0x3E, 0x0C, 0xA6, 0x43, 0x52, 0x27, 0x81, 0xB0, 0x3D, 0x81, 0x53, 0x97, 0xEB, 0x4F }, @@ -276,62 +92,22 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x0B, 0x1E, 0x1E, 0x73, 0x43, 0xA0, 0xE9, 0x1C, 0x2A, 0x27, 0xDD, 0x2A, 0x4D, 0x7E, 0x6B, 0xF1, 0xE8, 0x04, 0x4B, 0x58, 0xCE, 0x1A, 0xE8, 0x1E, 0x27, 0xD8, 0x14, 0xFD, 0x2D, 0xC0, 0x18, 0x93 }, }, - { - { 0x0B, 0x23, 0x83, 0x47, 0x04, 0xD5, 0x51, 0xF9, 0x14, 0xD0, 0xAE, 0xD0, 0x6A, 0x5F, 0x1A, 0x72, - 0x48, 0x11, 0xDB, 0x55, 0x18, 0x00, 0x4C, 0xB2, 0xC3, 0x8C, 0xF9, 0x71, 0x49, 0x64, 0xDB, 0x21 }, - }, - { - { 0x0B, 0x28, 0x58, 0xC0, 0x3B, 0xA3, 0xF1, 0x10, 0x18, 0x68, 0x8E, 0xC6, 0x2F, 0x1C, 0x17, 0x30, - 0xDC, 0xA2, 0x20, 0x48, 0x57, 0xCE, 0x5F, 0xAD, 0xB6, 0x6C, 0xE6, 0x6B, 0xDA, 0xB1, 0x70, 0x3D }, - }, - { - { 0x0B, 0x3D, 0x17, 0x8D, 0x8A, 0x68, 0x43, 0x73, 0x19, 0x35, 0x9F, 0xA3, 0x54, 0x28, 0x65, 0xAD, - 0xE1, 0x20, 0x02, 0x9A, 0xBE, 0x5B, 0x02, 0xBA, 0xFF, 0xBE, 0x98, 0x8B, 0x2A, 0x14, 0x46, 0x3D }, - }, - { - { 0x0B, 0x45, 0xC6, 0x0D, 0xE2, 0x72, 0x59, 0xC9, 0x59, 0x56, 0x71, 0xCE, 0xA0, 0xBE, 0x71, 0x1E, - 0x0F, 0x64, 0x49, 0xEE, 0xC6, 0x19, 0x88, 0x3A, 0x6C, 0x39, 0x3D, 0xCE, 0x51, 0x85, 0xA7, 0xAC }, - }, { { 0x0B, 0x48, 0xD5, 0x5C, 0xAC, 0x84, 0xFD, 0xEE, 0x15, 0xD8, 0x1A, 0xFF, 0x99, 0x07, 0xBB, 0x9A, 0x57, 0x11, 0xA9, 0x5C, 0xE2, 0x3A, 0x8D, 0x4D, 0x5E, 0x88, 0x62, 0xBF, 0x15, 0xA7, 0x6A, 0x75 }, }, - { - { 0x0B, 0x85, 0xEA, 0x41, 0xE5, 0x44, 0x13, 0x86, 0xC9, 0x44, 0xE8, 0x1D, 0x47, 0xEC, 0x0F, 0x42, - 0x0B, 0x54, 0xE5, 0x11, 0x14, 0x38, 0xCB, 0x5A, 0x1C, 0xBD, 0x53, 0xC7, 0x8E, 0x7E, 0xD2, 0xA6 }, - }, { { 0x0B, 0xFE, 0xA1, 0x38, 0x31, 0x67, 0x3E, 0xC9, 0x69, 0xD0, 0x5F, 0xD8, 0x67, 0xB6, 0x69, 0xF2, 0x71, 0x24, 0xAF, 0xEB, 0x7C, 0x60, 0x8C, 0xFE, 0x54, 0xCF, 0x46, 0x33, 0x06, 0xCC, 0x99, 0x2E }, }, - { - { 0x0C, 0x02, 0xA0, 0x08, 0xA4, 0x98, 0xD9, 0x82, 0x26, 0x80, 0xEC, 0x09, 0x73, 0x3B, 0x15, 0xCF, - 0xE2, 0x66, 0x30, 0xDA, 0x43, 0x94, 0x65, 0x82, 0xE5, 0xDA, 0xCA, 0x43, 0x89, 0x9D, 0x5F, 0x6F }, - }, - { - { 0x0C, 0x14, 0xF5, 0x4B, 0x4A, 0xE1, 0xD2, 0xBC, 0xA2, 0x83, 0x40, 0x09, 0x0E, 0x37, 0x37, 0x6C, - 0xFD, 0xE7, 0x78, 0x4A, 0xA7, 0x20, 0xB3, 0x55, 0x9C, 0x42, 0xD8, 0xC9, 0x4F, 0x44, 0xCB, 0x04 }, - }, - { - { 0x0C, 0xA8, 0x11, 0xFE, 0xDB, 0x74, 0xBE, 0xAD, 0x8B, 0xB6, 0xA9, 0xEF, 0x22, 0xE7, 0x3A, 0x5F, - 0x5F, 0x3F, 0x38, 0x53, 0xFD, 0xE6, 0xDB, 0xE3, 0xF6, 0xA2, 0xD8, 0xEF, 0x7F, 0x62, 0x27, 0x3A }, - }, { { 0x0C, 0xB9, 0x31, 0x93, 0xF1, 0x65, 0x26, 0xE1, 0xD1, 0x65, 0x52, 0x11, 0x7B, 0xA2, 0x1A, 0xAC, 0xB9, 0xF1, 0xD7, 0xA8, 0x93, 0x56, 0xA3, 0x5D, 0xE4, 0xF6, 0x65, 0xE9, 0x39, 0x90, 0x79, 0x38 }, }, - { - { 0x0D, 0x01, 0xD9, 0x55, 0x23, 0x47, 0x90, 0x24, 0x17, 0x4E, 0x8D, 0xC1, 0x05, 0x00, 0x90, 0x39, - 0xE7, 0x3C, 0x0B, 0xC6, 0x34, 0x66, 0x54, 0x6D, 0x91, 0xFA, 0xCD, 0x29, 0xAA, 0x39, 0x13, 0xC6 }, - }, { { 0x0D, 0x16, 0x1B, 0xB9, 0xCA, 0x0D, 0x20, 0xE4, 0x67, 0x35, 0x89, 0x67, 0x22, 0x78, 0xB0, 0xA3, 0xC5, 0xE2, 0x69, 0x30, 0xA4, 0xDC, 0x3A, 0x82, 0x16, 0x85, 0x43, 0x24, 0x27, 0xC7, 0x31, 0x5A }, }, - { - { 0x0D, 0x18, 0x5D, 0x97, 0x79, 0xAC, 0xFE, 0x41, 0x89, 0x12, 0xB5, 0x9E, 0xF7, 0xCD, 0x42, 0x8B, - 0xD4, 0xBC, 0x7F, 0x2B, 0xCD, 0xED, 0x9E, 0xAD, 0xAB, 0x55, 0xF0, 0x66, 0xE2, 0x9E, 0xDF, 0x4F }, - }, { { 0x0D, 0x66, 0x45, 0x6B, 0x0B, 0xF4, 0xAA, 0x54, 0x16, 0xE4, 0x4D, 0x9F, 0xDB, 0x40, 0x38, 0x3D, 0x34, 0x3D, 0x7B, 0x3F, 0x6A, 0xFE, 0x69, 0xAA, 0x08, 0x95, 0xBB, 0x1A, 0xB5, 0xE0, 0x61, 0xA0 }, @@ -340,30 +116,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x0D, 0x71, 0xC8, 0xCA, 0x16, 0x56, 0x59, 0xEF, 0xAF, 0x69, 0x65, 0x29, 0x28, 0x9A, 0xAE, 0x25, 0xD9, 0xC4, 0x2A, 0x1B, 0xBB, 0x03, 0x5A, 0x2B, 0x8C, 0x61, 0x14, 0x7E, 0x1B, 0x8B, 0x90, 0x52 }, }, - { - { 0x0D, 0xAB, 0xAE, 0xCB, 0x0D, 0x12, 0x9B, 0xC6, 0x36, 0xE8, 0x4A, 0x4B, 0x23, 0x93, 0x46, 0x03, - 0x06, 0xAB, 0x49, 0xBD, 0x03, 0xE2, 0x22, 0xEE, 0x79, 0x2A, 0x36, 0x9E, 0x6E, 0x4F, 0x70, 0x72 }, - }, - { - { 0x0D, 0xE7, 0xAB, 0x16, 0xC8, 0xC2, 0xAB, 0x33, 0x4A, 0x01, 0x65, 0x96, 0x97, 0x41, 0x5A, 0x9E, - 0x28, 0x02, 0xEE, 0xDC, 0x41, 0xAC, 0xF7, 0x46, 0x92, 0x41, 0xE2, 0xD3, 0x9B, 0x97, 0x9D, 0x81 }, - }, - { - { 0x0E, 0x23, 0x35, 0x4D, 0xE8, 0xD0, 0xE4, 0x79, 0xCA, 0x89, 0xA3, 0x0F, 0xD3, 0xEF, 0x7E, 0x20, - 0xBF, 0xC2, 0x80, 0x39, 0x8D, 0x4C, 0xDC, 0x28, 0x18, 0x79, 0xDA, 0x66, 0xEA, 0xD3, 0x73, 0xD0 }, - }, - { - { 0x0E, 0x4F, 0xD8, 0x53, 0xD6, 0x0F, 0xD7, 0x69, 0x90, 0xD7, 0x77, 0xAF, 0x09, 0x79, 0xD4, 0x65, - 0x16, 0xBD, 0xC9, 0x09, 0xA8, 0xD9, 0xD5, 0xEF, 0x70, 0x15, 0x59, 0xBF, 0x74, 0x62, 0xC4, 0xAF }, - }, - { - { 0x0E, 0x56, 0x71, 0x6D, 0xD3, 0xC1, 0x83, 0xAA, 0x5D, 0xE0, 0xD3, 0x96, 0x89, 0x88, 0x94, 0xF0, - 0x03, 0xAA, 0xFF, 0x06, 0x2E, 0x15, 0x82, 0x33, 0xEF, 0xFB, 0x5B, 0xC9, 0xE8, 0x33, 0x71, 0x4B }, - }, - { - { 0x0E, 0x67, 0x06, 0x78, 0x44, 0xAA, 0xC4, 0xC8, 0xC3, 0x56, 0xE7, 0xAA, 0xB8, 0x6B, 0x58, 0xB0, - 0x14, 0x21, 0x03, 0x87, 0xD2, 0xC1, 0x55, 0xDE, 0x71, 0x94, 0x08, 0x65, 0x12, 0xCF, 0x09, 0xDE }, - }, { { 0x0E, 0xFD, 0x68, 0x73, 0xD6, 0x0E, 0x77, 0x96, 0x2D, 0xF6, 0x00, 0x16, 0xDC, 0x3B, 0xAF, 0x9C, 0xA7, 0x1E, 0x7D, 0x86, 0x19, 0xE7, 0xEB, 0xAA, 0x3A, 0xF2, 0xDC, 0xB5, 0xBA, 0x24, 0xDE, 0xC2 }, @@ -372,86 +124,14 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x0E, 0xFF, 0x3C, 0xFF, 0xDA, 0x4A, 0x3E, 0x87, 0x23, 0x4A, 0x86, 0xC7, 0x0D, 0x49, 0x8C, 0x62, 0x60, 0x7F, 0x37, 0x44, 0xEA, 0x71, 0xF1, 0x83, 0x1D, 0xCF, 0xCA, 0xF3, 0xAF, 0x15, 0x56, 0x9C }, }, - { - { 0x0F, 0x07, 0xAA, 0xD7, 0xAC, 0x55, 0x6F, 0x85, 0x86, 0xCB, 0xF3, 0x47, 0x8F, 0x2E, 0xC0, 0xB5, - 0x29, 0xCA, 0x46, 0x5B, 0x19, 0x3F, 0xC2, 0xA6, 0xE1, 0x93, 0x28, 0x3A, 0xD8, 0xD7, 0xA5, 0x50 }, - }, - { - { 0x0F, 0x2C, 0x25, 0x7A, 0xFB, 0xE8, 0x25, 0x5D, 0x2D, 0x6F, 0x4D, 0x52, 0xC4, 0xE5, 0x31, 0x59, - 0xB7, 0xBA, 0x96, 0xF9, 0xBA, 0x07, 0xFA, 0x6D, 0x8C, 0xE1, 0xD0, 0xAC, 0x03, 0x3C, 0x17, 0xF7 }, - }, - { - { 0x0F, 0x43, 0xFC, 0x12, 0x47, 0x01, 0xFE, 0x29, 0xB7, 0x14, 0xF3, 0x05, 0xE2, 0x61, 0xB6, 0x32, - 0x04, 0x82, 0xC0, 0x09, 0x6F, 0xFE, 0xAD, 0x35, 0xE1, 0xF8, 0xE6, 0x32, 0xC6, 0x4D, 0x7B, 0x20 }, - }, - { - { 0x0F, 0x57, 0xED, 0x67, 0x2B, 0xAC, 0x50, 0x14, 0x89, 0xE4, 0xF4, 0xAB, 0x4B, 0x1D, 0xB1, 0x75, - 0x81, 0xFE, 0xB8, 0x76, 0x0F, 0xFB, 0xC0, 0x8A, 0x82, 0x83, 0xE0, 0xF8, 0x41, 0xAE, 0x01, 0x3C }, - }, - { - { 0x10, 0x14, 0xB6, 0xDB, 0xF3, 0xC9, 0x11, 0xEB, 0x21, 0x6F, 0xE6, 0xEC, 0xE6, 0x8C, 0xA9, 0x37, - 0x92, 0xCC, 0xCB, 0xD3, 0xC3, 0x9C, 0xBF, 0x83, 0xE8, 0x93, 0xD4, 0x4D, 0x5E, 0x4F, 0x00, 0xDB }, - }, - { - { 0x10, 0x7F, 0xA4, 0x31, 0x4E, 0x09, 0x74, 0x84, 0x8A, 0x9C, 0x14, 0xE0, 0x62, 0x10, 0x44, 0x7B, - 0x0A, 0xDF, 0xB8, 0x26, 0xB3, 0xE5, 0xBF, 0x88, 0x76, 0x93, 0x1F, 0xF4, 0x80, 0x74, 0x02, 0x01 }, - }, { { 0x10, 0x83, 0x6D, 0xA0, 0xCD, 0x6A, 0xC0, 0x95, 0xDD, 0x7A, 0xC3, 0x4D, 0x99, 0x01, 0x90, 0x9A, 0x8E, 0xF8, 0x4D, 0x6E, 0xE0, 0x5B, 0x83, 0x43, 0x03, 0xD4, 0x7F, 0xC0, 0xA5, 0xF9, 0x14, 0xFA }, }, - { - { 0x10, 0xCF, 0x15, 0xBB, 0x1E, 0xA3, 0x0B, 0xB4, 0xA2, 0xE5, 0x39, 0x1C, 0x39, 0xAF, 0xA3, 0xA9, - 0x96, 0xC8, 0x53, 0x22, 0xB1, 0x1F, 0xDE, 0xD5, 0xFB, 0x84, 0x80, 0x35, 0x5C, 0x78, 0x3E, 0xAD }, - }, - { - { 0x10, 0xDC, 0x64, 0x9C, 0x0A, 0x35, 0x20, 0x69, 0x0B, 0x49, 0xA8, 0x97, 0xEA, 0xB4, 0x97, 0xF4, - 0x38, 0x81, 0x0D, 0x28, 0x4F, 0xCB, 0xF2, 0x22, 0xA1, 0xDE, 0x45, 0x27, 0x1D, 0x1C, 0xCF, 0x17 }, - }, - { - { 0x11, 0x59, 0xD3, 0x5C, 0x9C, 0x09, 0xEF, 0x77, 0xCB, 0xEA, 0x92, 0x2E, 0xF5, 0xBB, 0xB0, 0x36, - 0x51, 0x11, 0x65, 0x52, 0x7A, 0xCF, 0x44, 0xAA, 0xB5, 0xDE, 0x87, 0x5E, 0x2F, 0x51, 0xA2, 0xDD }, - }, - { - { 0x11, 0x65, 0x97, 0x60, 0x44, 0x7F, 0xB6, 0x8D, 0x4F, 0xBB, 0x37, 0x6E, 0x3B, 0x66, 0xB1, 0x94, - 0xDA, 0x3E, 0xE0, 0x42, 0x5A, 0x0B, 0xC2, 0x13, 0x88, 0x06, 0xB2, 0x78, 0x43, 0x79, 0xD3, 0xB8 }, - }, - { - { 0x11, 0x6A, 0x75, 0xFA, 0x6F, 0x84, 0x56, 0x46, 0x7A, 0x45, 0xF1, 0x4D, 0xA4, 0xB7, 0xCF, 0x3E, - 0x37, 0xE6, 0xA7, 0xCF, 0x07, 0x5B, 0x23, 0x35, 0xB2, 0x01, 0x1D, 0x93, 0x8B, 0x0F, 0x09, 0xA0 }, - }, { { 0x11, 0xA4, 0x02, 0x7B, 0x45, 0xFC, 0x9A, 0x6F, 0x40, 0x21, 0x25, 0xC3, 0xCA, 0x22, 0x68, 0xE0, 0x15, 0xA3, 0x1B, 0xA4, 0xFD, 0xB0, 0x05, 0x9D, 0x66, 0x6B, 0x73, 0xC8, 0x51, 0xD5, 0x35, 0x92 }, }, - { - { 0x11, 0xB7, 0x69, 0xDE, 0xDE, 0x8B, 0xD6, 0x15, 0xFC, 0x71, 0x20, 0x0B, 0x20, 0xB9, 0xA3, 0x1D, - 0x70, 0x93, 0x15, 0x16, 0xEC, 0x54, 0x42, 0xC3, 0xDD, 0xC9, 0xC8, 0xD1, 0x90, 0x21, 0x9D, 0xE1 }, - }, - { - { 0x11, 0xD3, 0x0D, 0xD7, 0x81, 0x07, 0x21, 0x88, 0x84, 0xB6, 0x55, 0xD8, 0x62, 0xAB, 0x05, 0x0E, - 0xAC, 0x0F, 0x5E, 0x33, 0x8E, 0xB1, 0x18, 0x44, 0x4B, 0x36, 0x0C, 0x8A, 0x3E, 0x05, 0x09, 0x9D }, - }, - { - { 0x11, 0xDE, 0x20, 0x2A, 0x3E, 0x34, 0x13, 0xA2, 0x33, 0x3E, 0xC1, 0x67, 0x8E, 0xBB, 0x50, 0x6D, - 0xD9, 0x55, 0x7C, 0x06, 0x81, 0xCE, 0x5F, 0xED, 0xCD, 0x25, 0xAA, 0xD1, 0x2C, 0x46, 0x67, 0xD6 }, - }, - { - { 0x11, 0xE7, 0x54, 0xF7, 0x95, 0x9E, 0x25, 0xB0, 0x18, 0x52, 0xA0, 0x46, 0xB1, 0xD2, 0xC2, 0xF6, - 0x48, 0x93, 0x53, 0x7A, 0x47, 0x4D, 0x14, 0x1D, 0x6E, 0x50, 0x50, 0x1E, 0x33, 0x9D, 0x89, 0x19 }, - }, - { - { 0x11, 0xF6, 0x34, 0xE0, 0x59, 0xEA, 0xBB, 0x99, 0xD6, 0x48, 0xD4, 0xFF, 0x6C, 0xD4, 0x29, 0x8E, - 0xD2, 0x0A, 0xA8, 0x2C, 0xCC, 0xDE, 0x8E, 0x81, 0x09, 0x80, 0x16, 0xE2, 0xAC, 0x72, 0xD4, 0x16 }, - }, - { - { 0x12, 0x0D, 0x2B, 0x28, 0x15, 0xC5, 0xEF, 0x5C, 0x28, 0x71, 0xA1, 0x93, 0x4D, 0xD4, 0x3D, 0x49, - 0x9E, 0x4E, 0xE6, 0xB6, 0x30, 0x00, 0xAE, 0x1A, 0xBE, 0xF7, 0x6D, 0x0D, 0x85, 0x51, 0xEF, 0xC6 }, - }, - { - { 0x12, 0x50, 0x6D, 0x3D, 0xE8, 0xC3, 0x19, 0xCC, 0x5B, 0x07, 0x90, 0x67, 0x7B, 0x90, 0x86, 0x36, - 0xE0, 0x86, 0x5B, 0x5F, 0xA1, 0x95, 0xDC, 0x87, 0xAF, 0x26, 0xF2, 0xAA, 0x05, 0xC2, 0x9F, 0xAD }, - }, { { 0x12, 0x6B, 0x1B, 0xA6, 0x38, 0xC7, 0xE6, 0x99, 0xBC, 0xBC, 0x54, 0xF5, 0x79, 0xAC, 0xD3, 0x9F, 0xE6, 0x1D, 0x08, 0x22, 0x5F, 0xE5, 0xB1, 0xF9, 0x01, 0x88, 0xB2, 0x3F, 0xD8, 0x43, 0x3E, 0x8E }, @@ -464,22 +144,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x13, 0x6A, 0x40, 0x09, 0x81, 0xB1, 0xA3, 0xE0, 0x5F, 0xDC, 0xAC, 0x20, 0xA2, 0x36, 0xF8, 0x6E, 0x94, 0xE5, 0xEE, 0x58, 0x59, 0xD8, 0xFD, 0x45, 0xE9, 0xE9, 0xC5, 0xA6, 0xC5, 0xC0, 0xA4, 0x13 }, }, - { - { 0x13, 0xBD, 0x07, 0x7B, 0x8A, 0x9F, 0x46, 0xFF, 0x8F, 0x2F, 0xFD, 0x23, 0x6E, 0x53, 0xA7, 0x2C, - 0x3B, 0x87, 0xF3, 0x4C, 0xC9, 0xDB, 0xB5, 0x81, 0x7E, 0x4D, 0xBA, 0x1B, 0xD3, 0xBC, 0x9E, 0x5F }, - }, - { - { 0x13, 0xCF, 0x4A, 0xC3, 0x21, 0x48, 0xB9, 0xC5, 0x61, 0x8A, 0x7D, 0xA6, 0x2F, 0x1C, 0xB8, 0x41, - 0x56, 0x68, 0xD5, 0x9F, 0xD3, 0xB3, 0x04, 0x1F, 0x50, 0x23, 0x20, 0xE5, 0x8E, 0x95, 0x1B, 0xC0 }, - }, - { - { 0x13, 0xE0, 0x1B, 0xE5, 0x72, 0xDC, 0x11, 0xFA, 0xC3, 0xB4, 0x7A, 0xE6, 0x8F, 0x92, 0xDC, 0x00, - 0xF1, 0x00, 0xBF, 0x77, 0x53, 0x7B, 0x89, 0x47, 0xF4, 0xC1, 0x1C, 0x25, 0xA0, 0xB6, 0xF9, 0xF6 }, - }, - { - { 0x13, 0xF7, 0xAC, 0xE5, 0xF5, 0x11, 0xC1, 0xF9, 0x43, 0x88, 0xE5, 0xC8, 0xA7, 0x25, 0x8A, 0x61, - 0x86, 0x14, 0xB0, 0x1C, 0xEA, 0xDC, 0xB0, 0x0A, 0x94, 0xB3, 0xCC, 0x7A, 0xE7, 0x01, 0xBE, 0xAE }, - }, { { 0x14, 0x21, 0x28, 0xA6, 0x65, 0x1C, 0xDC, 0x18, 0x70, 0xC2, 0x67, 0x5E, 0xC0, 0xB0, 0xEF, 0x32, 0xB5, 0xD4, 0xC1, 0x55, 0x35, 0x8E, 0x7E, 0xD9, 0x5A, 0x98, 0xE8, 0x3B, 0x1A, 0xD8, 0xBE, 0x4D }, @@ -488,18 +152,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x14, 0x47, 0x25, 0xA6, 0x79, 0x1C, 0x60, 0x0C, 0x4C, 0x2C, 0xF3, 0x94, 0x3F, 0x3E, 0xCF, 0x40, 0xD6, 0x31, 0xD7, 0x60, 0xE4, 0x51, 0xEF, 0x28, 0x29, 0xAF, 0xFB, 0xEE, 0x74, 0x80, 0xAD, 0x17 }, }, - { - { 0x14, 0x60, 0x80, 0x7B, 0x0D, 0x93, 0xDD, 0x79, 0xF4, 0xA3, 0xB9, 0x07, 0x45, 0xE9, 0xA7, 0x15, - 0x29, 0xF1, 0xEC, 0x26, 0x63, 0x30, 0x41, 0x57, 0x4A, 0x81, 0x80, 0xE0, 0xCE, 0x42, 0x81, 0xDF }, - }, - { - { 0x14, 0xB0, 0x98, 0x34, 0xE2, 0xA5, 0xBC, 0x61, 0x9A, 0x79, 0xA5, 0xD2, 0xCE, 0x48, 0x78, 0xFA, - 0xBC, 0xA0, 0x6D, 0x76, 0xC2, 0x37, 0x65, 0xFD, 0x45, 0x86, 0x3C, 0x22, 0xFE, 0xCE, 0x30, 0x38 }, - }, - { - { 0x14, 0xF3, 0xB4, 0x17, 0x3B, 0x9F, 0x8C, 0x81, 0x90, 0x39, 0x74, 0xE6, 0x4C, 0x68, 0xDF, 0xAE, - 0xB6, 0xB7, 0xD8, 0x4B, 0x94, 0x2A, 0xAE, 0x78, 0x89, 0x03, 0xA1, 0x54, 0x01, 0x08, 0x57, 0xE7 }, - }, { { 0x15, 0x27, 0x2A, 0xBC, 0x1F, 0x0C, 0x4D, 0x1D, 0x1A, 0x92, 0x08, 0x73, 0x55, 0xA1, 0xE0, 0x42, 0x6C, 0x2B, 0xB5, 0xB4, 0x37, 0x30, 0x00, 0xB8, 0x2C, 0x2C, 0xCA, 0xB7, 0xFA, 0xD6, 0xFA, 0x20 }, @@ -516,118 +168,22 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x15, 0x5D, 0x88, 0x6E, 0x99, 0x1D, 0x40, 0x0A, 0xBF, 0x2F, 0x83, 0xC2, 0x80, 0xD1, 0x24, 0x6D, 0xCE, 0x02, 0xA6, 0x28, 0x31, 0x26, 0xC6, 0x17, 0xE4, 0x17, 0xD2, 0xB7, 0xEA, 0xC1, 0x19, 0x24 }, }, - { - { 0x15, 0x75, 0x93, 0x18, 0x80, 0x19, 0x6D, 0xE8, 0x0D, 0x97, 0xFE, 0xF1, 0x85, 0xD2, 0x7A, 0xF6, - 0xAD, 0x6B, 0x5B, 0x04, 0x0D, 0x87, 0x6C, 0xDF, 0x4A, 0x39, 0xB5, 0xB7, 0x8E, 0x96, 0xB7, 0xD5 }, - }, - { - { 0x15, 0xB0, 0xD9, 0xBE, 0xD6, 0x2B, 0xD8, 0x96, 0x11, 0x59, 0xFE, 0x7E, 0x88, 0x92, 0xF8, 0xE8, - 0xEB, 0xB0, 0xCE, 0x81, 0xE6, 0x8D, 0xEA, 0xDD, 0x29, 0x0F, 0xDD, 0xCE, 0xD0, 0x9D, 0xE7, 0xF1 }, - }, - { - { 0x15, 0xC0, 0x27, 0x02, 0x53, 0x4E, 0xB0, 0x57, 0x23, 0x9F, 0xD7, 0x85, 0x8A, 0xE3, 0x42, 0x23, - 0xBC, 0x57, 0x78, 0xA8, 0xB7, 0x1F, 0x92, 0x50, 0xD5, 0xD3, 0x3B, 0x31, 0x3C, 0x30, 0x2A, 0x67 }, - }, - { - { 0x15, 0xC1, 0x73, 0xD2, 0xF3, 0x73, 0xC2, 0x27, 0xDC, 0xFF, 0x4E, 0xCC, 0x68, 0xE8, 0x56, 0x7C, - 0xDA, 0xE3, 0x5D, 0xDF, 0x1E, 0xF4, 0x55, 0xCE, 0x53, 0x4A, 0x15, 0x90, 0x28, 0x79, 0xF4, 0xFE }, - }, - { - { 0x15, 0xCF, 0x2F, 0x78, 0xE6, 0x79, 0x62, 0x2C, 0x06, 0x78, 0xDC, 0x5B, 0xA8, 0x03, 0x84, 0x7A, - 0xBD, 0xB5, 0xEA, 0x64, 0x31, 0x65, 0x3E, 0xC2, 0x5F, 0xDC, 0x8D, 0x2B, 0xB3, 0x3D, 0x12, 0x23 }, - }, - { - { 0x15, 0xEA, 0x55, 0xF0, 0x2C, 0x49, 0x02, 0xEC, 0x77, 0x72, 0x64, 0xE0, 0x81, 0x71, 0x41, 0x24, - 0x7C, 0x52, 0x00, 0xE1, 0x16, 0x56, 0xFD, 0xC2, 0x72, 0x9D, 0x59, 0x5C, 0x37, 0x79, 0x95, 0x6C }, - }, - { - { 0x16, 0x21, 0xEC, 0x14, 0xE0, 0xB4, 0x13, 0xFA, 0xB7, 0xD0, 0x27, 0x5A, 0x9A, 0xC3, 0xC3, 0xC9, - 0x85, 0x13, 0xFE, 0x18, 0xA2, 0x02, 0x86, 0xF6, 0x56, 0x59, 0x36, 0x9C, 0x8D, 0x34, 0x68, 0xDA }, - }, - { - { 0x16, 0x9A, 0xFA, 0x4C, 0x7D, 0x97, 0x78, 0xC7, 0x1D, 0xB5, 0x84, 0x6C, 0xCA, 0x8E, 0xB7, 0x19, - 0x12, 0x3D, 0x4B, 0x06, 0xB3, 0xFF, 0x98, 0x66, 0xD7, 0x4D, 0x6E, 0x18, 0x7C, 0x1E, 0xF9, 0x70 }, - }, - { - { 0x16, 0xE7, 0x66, 0x47, 0xB3, 0x97, 0xEB, 0x4E, 0xFD, 0x9A, 0x79, 0xF2, 0xFB, 0xBA, 0x9A, 0xCA, - 0x46, 0xCE, 0xAD, 0x95, 0x43, 0x05, 0xFE, 0xE5, 0xB1, 0x3B, 0x5D, 0x53, 0xDB, 0x7C, 0x1D, 0xB1 }, - }, - { - { 0x17, 0x29, 0xB3, 0x34, 0x7A, 0x7D, 0x93, 0x73, 0x17, 0xE3, 0xDA, 0x5C, 0xC7, 0xF7, 0xB0, 0xD8, - 0xFD, 0x97, 0x72, 0x24, 0x7A, 0x57, 0x99, 0x93, 0x9A, 0x44, 0xD3, 0xA9, 0x7A, 0x50, 0xB9, 0xD9 }, - }, - { - { 0x17, 0x46, 0x68, 0x4E, 0x66, 0x21, 0x77, 0x68, 0x70, 0xDE, 0x55, 0x65, 0xDF, 0xD3, 0x3A, 0x30, - 0x92, 0x77, 0x18, 0x59, 0x6C, 0x01, 0x30, 0xF8, 0x77, 0x4B, 0xE9, 0x9C, 0xD2, 0xA2, 0x51, 0x06 }, - }, - { - { 0x17, 0x59, 0x7E, 0x00, 0x45, 0x6C, 0x38, 0x32, 0xE1, 0x85, 0x1C, 0x30, 0x0C, 0xD5, 0x52, 0xC2, - 0xE7, 0x73, 0x35, 0x8C, 0xF0, 0xF6, 0x88, 0x58, 0xF3, 0x4F, 0xCA, 0x34, 0x45, 0xC6, 0x4D, 0xB7 }, - }, - { - { 0x17, 0x5A, 0x97, 0x05, 0x5C, 0x9E, 0x03, 0x88, 0x2A, 0xCD, 0x35, 0x40, 0x58, 0xE2, 0x43, 0xE3, - 0x3A, 0x84, 0x76, 0xEF, 0x83, 0xB4, 0xB2, 0x08, 0xFC, 0xF6, 0x64, 0xE8, 0x4F, 0x05, 0x08, 0xB5 }, - }, - { - { 0x17, 0x99, 0x63, 0xD2, 0x28, 0x4D, 0xEC, 0x64, 0xAC, 0x6C, 0xE5, 0x60, 0x0B, 0xE9, 0x9A, 0xC4, - 0xF0, 0x4D, 0xD3, 0x20, 0x35, 0xE4, 0xF1, 0x24, 0x28, 0xEC, 0x9E, 0x51, 0xED, 0xF6, 0xB0, 0x6C }, - }, - { - { 0x17, 0xD1, 0xF6, 0xE5, 0x1C, 0xB3, 0xAF, 0x91, 0x23, 0xD4, 0xFC, 0xB3, 0x84, 0x18, 0x39, 0x4D, - 0xE3, 0xE6, 0xC3, 0x33, 0x3F, 0x80, 0x20, 0xD5, 0x13, 0x48, 0xDE, 0xBA, 0xCC, 0x74, 0x70, 0x14 }, - }, - { - { 0x17, 0xF7, 0x25, 0xAC, 0x12, 0xCE, 0xA5, 0xE0, 0x86, 0x6F, 0xCC, 0x3E, 0x83, 0x4E, 0x9C, 0xB6, - 0x34, 0x14, 0x5C, 0xED, 0xC5, 0x6B, 0x61, 0x3D, 0x2A, 0x1F, 0xE1, 0x3C, 0xF4, 0x0E, 0xDF, 0xD4 }, - }, - { - { 0x18, 0x04, 0xF7, 0x1E, 0x2C, 0x7A, 0xDC, 0x93, 0x38, 0xCA, 0x1B, 0x71, 0xDF, 0x81, 0xF8, 0x3E, - 0x59, 0xD4, 0xF4, 0x1C, 0xAF, 0x1D, 0x9F, 0x17, 0xD7, 0x87, 0x22, 0x4B, 0x0A, 0xF6, 0x46, 0xF3 }, - }, { { 0x18, 0x1E, 0xBB, 0x29, 0x8D, 0x20, 0x68, 0x5C, 0x48, 0xF7, 0x53, 0x89, 0x80, 0xC5, 0x63, 0xC8, 0xF7, 0x48, 0x95, 0x4C, 0xF2, 0x64, 0x41, 0x9A, 0x72, 0xFC, 0xC6, 0x34, 0x0A, 0x10, 0x23, 0x80 }, }, - { - { 0x18, 0x41, 0x69, 0xC5, 0x5C, 0xA2, 0xE2, 0x44, 0xF5, 0xF3, 0x3E, 0x5E, 0x9B, 0x82, 0x89, 0x2B, - 0x88, 0x5F, 0xD0, 0x2B, 0x0C, 0xEA, 0xFF, 0x5E, 0xB7, 0xEC, 0x05, 0x30, 0x72, 0xE9, 0xF3, 0x39 }, - }, { { 0x19, 0x77, 0x3E, 0xE9, 0xE9, 0x35, 0x6B, 0x88, 0x11, 0xD6, 0x56, 0x79, 0x9C, 0x53, 0x16, 0x0B, 0x61, 0x73, 0xFA, 0x8A, 0x81, 0x47, 0x97, 0xDB, 0xCD, 0x55, 0xB2, 0x27, 0x38, 0x70, 0x60, 0x3E }, }, - { - { 0x19, 0xD5, 0x67, 0x31, 0x19, 0x02, 0xA4, 0xA2, 0x61, 0xF8, 0xA8, 0x3D, 0x0C, 0xFE, 0x10, 0x1D, - 0x9C, 0x5C, 0x1F, 0x68, 0x0F, 0xF8, 0xF4, 0xEC, 0x0D, 0xF2, 0x3D, 0x84, 0x41, 0x92, 0xFB, 0x3B }, - }, { { 0x1A, 0x9E, 0xC6, 0x8C, 0xED, 0xB6, 0xBD, 0x94, 0x0C, 0x95, 0x34, 0xE6, 0x84, 0xBB, 0x04, 0x9F, 0xF1, 0xE2, 0x3B, 0x66, 0xA1, 0x33, 0x01, 0x2F, 0xC3, 0x99, 0xEB, 0x4F, 0xB5, 0xD3, 0xAA, 0x35 }, }, - { - { 0x1A, 0xCD, 0x0A, 0x9E, 0x5E, 0x20, 0x22, 0xBE, 0xE5, 0xA4, 0xFC, 0x2E, 0x7F, 0x69, 0xF8, 0x82, - 0x3E, 0xDC, 0x26, 0x5B, 0x97, 0x6A, 0x7F, 0x61, 0x41, 0x16, 0x03, 0x98, 0x6B, 0x90, 0x24, 0xF8 }, - }, - { - { 0x1A, 0xFA, 0xB3, 0x15, 0x5B, 0x57, 0x17, 0xC0, 0x89, 0x82, 0xF9, 0x0C, 0x88, 0xA7, 0xAA, 0xC3, - 0x6B, 0xEB, 0x00, 0x03, 0xFA, 0xC4, 0x9B, 0xCA, 0x74, 0xA1, 0xCC, 0x52, 0x09, 0xB7, 0x04, 0x39 }, - }, - { - { 0x1B, 0x56, 0xBA, 0x1E, 0xFF, 0xAC, 0x97, 0x36, 0x60, 0x74, 0xCE, 0x07, 0x24, 0xE7, 0x04, 0x59, - 0xDF, 0x99, 0x82, 0x1C, 0x3F, 0xAF, 0x20, 0xDE, 0x5C, 0x05, 0x30, 0x52, 0x52, 0xBE, 0x64, 0x3A }, - }, - { - { 0x1B, 0x69, 0xC0, 0xDD, 0xB0, 0x9B, 0xC2, 0xF0, 0xE9, 0x65, 0x7F, 0xFA, 0x94, 0x83, 0x96, 0xAF, - 0xC0, 0xCB, 0x45, 0xC0, 0x19, 0x7E, 0xC0, 0x85, 0x78, 0xC5, 0x61, 0x83, 0xEE, 0xEF, 0x59, 0x7B }, - }, { { 0x1B, 0x7B, 0xF8, 0xD9, 0xE8, 0x29, 0x3C, 0x53, 0xDD, 0x59, 0xEC, 0x97, 0xFE, 0x16, 0xF0, 0xEA, 0xB4, 0x68, 0x5B, 0x95, 0xCE, 0x14, 0xD2, 0x62, 0x3E, 0x70, 0x94, 0x2C, 0xFF, 0x25, 0xE7, 0x30 }, }, - { - { 0x1B, 0xD6, 0xA6, 0xF7, 0x63, 0xD2, 0xF6, 0xD8, 0xBC, 0xEC, 0x91, 0xA6, 0x22, 0xAA, 0x37, 0x00, - 0xD7, 0xA4, 0x2D, 0x18, 0x8C, 0x5B, 0xD8, 0x64, 0x16, 0x57, 0x6F, 0xFD, 0x32, 0x50, 0x7C, 0x92 }, - }, { { 0x1B, 0xD7, 0xB3, 0x62, 0xBC, 0x14, 0x66, 0xFA, 0xC0, 0x5E, 0xC5, 0x9E, 0x12, 0xE8, 0x1B, 0xE7, 0x35, 0x38, 0xC4, 0x97, 0x28, 0xF5, 0xAD, 0xBA, 0x2D, 0x81, 0xFC, 0xDB, 0xC4, 0x65, 0x7C, 0x1B }, @@ -644,46 +200,14 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x1C, 0x04, 0x82, 0x0F, 0x7B, 0x4A, 0x2F, 0x1E, 0x38, 0x5D, 0xE1, 0xDE, 0x16, 0xB2, 0x22, 0x6E, 0x88, 0x3D, 0x9C, 0x34, 0x66, 0x3E, 0x1B, 0x64, 0xE8, 0x5B, 0x98, 0x0E, 0xAF, 0xF0, 0xB9, 0xD3 }, }, - { - { 0x1C, 0x74, 0xBA, 0x75, 0xE5, 0x1B, 0x48, 0x29, 0x54, 0xC3, 0x8B, 0xF4, 0xD5, 0x1E, 0xFC, 0x70, - 0xA0, 0xA0, 0x4D, 0x41, 0x3A, 0xC1, 0xFF, 0x8E, 0xB9, 0x90, 0x39, 0x9D, 0x1F, 0x1A, 0xA9, 0xC4 }, - }, - { - { 0x1C, 0x76, 0xBB, 0xCA, 0x37, 0x71, 0x77, 0x5B, 0xB9, 0xB0, 0xC3, 0x33, 0x71, 0x70, 0x32, 0x69, - 0x06, 0x16, 0x77, 0xCA, 0x7B, 0x18, 0x99, 0xEF, 0x8C, 0x77, 0xE4, 0x15, 0x22, 0x2B, 0x56, 0xB6 }, - }, - { - { 0x1D, 0x36, 0x08, 0xAC, 0x22, 0xF0, 0x09, 0x40, 0xEE, 0x08, 0x4A, 0x8B, 0x2F, 0xD7, 0x95, 0x89, - 0x72, 0x57, 0x79, 0x4E, 0x3E, 0x00, 0xC2, 0xD2, 0x67, 0x10, 0xD2, 0xEA, 0x02, 0x79, 0xAC, 0xB5 }, - }, - { - { 0x1D, 0x57, 0xA3, 0xC0, 0x97, 0x74, 0x07, 0xE1, 0x57, 0xDF, 0x71, 0x97, 0x48, 0x91, 0x16, 0xE5, - 0xFC, 0x17, 0xED, 0x2A, 0x90, 0xFE, 0xD9, 0x6B, 0x3D, 0x4D, 0x5A, 0x4E, 0x0A, 0x80, 0xE1, 0xFB }, - }, - { - { 0x1D, 0x72, 0xE5, 0x91, 0x26, 0xFD, 0x8B, 0x78, 0x8E, 0xA5, 0x39, 0x63, 0xAD, 0x02, 0x07, 0x6B, - 0x3B, 0x04, 0x0E, 0xE8, 0xCD, 0x4C, 0xB8, 0xBD, 0xCD, 0xF3, 0xE5, 0xA9, 0x9F, 0x63, 0x70, 0x02 }, - }, { { 0x1D, 0x9E, 0xC0, 0x06, 0xA5, 0x26, 0xFA, 0xB5, 0xCE, 0x2E, 0x71, 0xFD, 0xFC, 0x07, 0xC0, 0x11, 0xF7, 0x65, 0x7B, 0xF8, 0x5F, 0x5D, 0x03, 0x52, 0xB8, 0xCB, 0x21, 0x8D, 0x4F, 0xCB, 0xC4, 0x43 }, }, - { - { 0x1E, 0x50, 0x62, 0x19, 0x88, 0xA0, 0x25, 0x0F, 0x2A, 0xDE, 0x2A, 0x16, 0xFC, 0xD8, 0x38, 0x46, - 0xDB, 0xD7, 0xA9, 0x0B, 0x2A, 0x71, 0xC8, 0x0A, 0x1D, 0xB1, 0x94, 0x6B, 0x89, 0x89, 0x1C, 0x46 }, - }, { { 0x1E, 0x78, 0xF8, 0x08, 0x84, 0xE3, 0x2A, 0x2E, 0xA5, 0xAD, 0x1E, 0xE8, 0x35, 0x88, 0xAC, 0xDB, 0x18, 0x4A, 0x4A, 0x6E, 0x87, 0x56, 0x5B, 0xF5, 0x03, 0xB5, 0x69, 0x7A, 0xBF, 0xAE, 0x64, 0xA4 }, }, - { - { 0x1E, 0xFE, 0x6A, 0x78, 0x51, 0x41, 0x33, 0x39, 0x7B, 0x05, 0x9C, 0xE1, 0x3A, 0x4F, 0xC9, 0x88, - 0xAE, 0x38, 0x4E, 0x21, 0x12, 0x7F, 0x13, 0xA1, 0x0E, 0x96, 0x7B, 0x9A, 0xA2, 0xAC, 0xF8, 0x81 }, - }, - { - { 0x1F, 0x00, 0x4B, 0x82, 0x0C, 0xF6, 0x8B, 0x00, 0x7B, 0xB5, 0x72, 0xA0, 0xED, 0x42, 0x9C, 0x79, - 0x8F, 0x79, 0x44, 0x4F, 0x6F, 0x13, 0x29, 0x32, 0xEE, 0x5F, 0x8E, 0x28, 0xA4, 0x0A, 0xB9, 0x86 }, - }, { { 0x1F, 0x11, 0x85, 0xA5, 0x21, 0xE2, 0x8E, 0x95, 0x17, 0x1C, 0xF3, 0x86, 0x07, 0x8A, 0x76, 0x4A, 0x9A, 0x3E, 0x71, 0xC2, 0x59, 0xBC, 0xDC, 0x5F, 0x8E, 0x66, 0xE1, 0xB5, 0x20, 0x55, 0xA2, 0x6D }, @@ -692,122 +216,42 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x1F, 0x23, 0xD7, 0xA6, 0x38, 0x17, 0x1F, 0x6D, 0x09, 0x99, 0x64, 0xE0, 0xFA, 0x01, 0x72, 0x1C, 0x06, 0xCC, 0xEB, 0x8E, 0xA2, 0x98, 0xBF, 0xD0, 0x04, 0x8E, 0x13, 0x8D, 0x98, 0xFC, 0x36, 0x24 }, }, - { - { 0x1F, 0x68, 0x40, 0x10, 0xC1, 0x92, 0xAB, 0xFA, 0x85, 0xA7, 0x9B, 0xBA, 0x45, 0xCE, 0x76, 0x4B, - 0x2D, 0xA8, 0x1F, 0x99, 0x1F, 0x5F, 0x01, 0xD9, 0xEB, 0x7E, 0x3C, 0x99, 0x9B, 0x78, 0x75, 0x0E }, - }, - { - { 0x1F, 0x7D, 0x37, 0x52, 0x93, 0x22, 0x7D, 0x04, 0x97, 0x5B, 0x78, 0x97, 0xDC, 0x17, 0x25, 0x39, - 0x64, 0xDC, 0xD7, 0xD0, 0x06, 0x7E, 0x84, 0xC6, 0xD8, 0x47, 0x9D, 0xFA, 0x27, 0x6E, 0xBE, 0xD0 }, - }, - { - { 0x1F, 0x88, 0x42, 0x37, 0xFD, 0x5C, 0xE3, 0xD9, 0xBC, 0x02, 0x4D, 0x1B, 0x26, 0xAB, 0xCB, 0x94, - 0x07, 0xA4, 0x35, 0x13, 0x78, 0xE0, 0xBD, 0x89, 0xDB, 0x67, 0xBE, 0xF8, 0xEF, 0xC8, 0xA5, 0x6E }, - }, { { 0x1F, 0xC7, 0xF8, 0x10, 0x4E, 0x27, 0xFF, 0x2A, 0x45, 0x56, 0xF9, 0x1E, 0x05, 0x42, 0x17, 0xC5, 0x8F, 0x69, 0x3F, 0x70, 0x36, 0x25, 0x9E, 0x39, 0x80, 0xB5, 0x59, 0x5B, 0x04, 0x3D, 0x11, 0x92 }, }, - { - { 0x1F, 0xD4, 0xB6, 0xA0, 0xDE, 0x45, 0x04, 0x2B, 0xCA, 0x14, 0xE3, 0x4A, 0x83, 0x78, 0x7C, 0x59, - 0x95, 0x5D, 0x82, 0xA0, 0x1C, 0xE3, 0x20, 0x05, 0xAC, 0x48, 0x83, 0x72, 0xA8, 0xFD, 0x41, 0xA6 }, - }, { { 0x20, 0x0B, 0x49, 0xBD, 0xD6, 0x35, 0x02, 0x57, 0xCC, 0xD4, 0xE6, 0xAD, 0xE1, 0xCB, 0x75, 0x13, 0x8D, 0xD6, 0xD9, 0x06, 0xFE, 0xF3, 0x49, 0xC0, 0xC9, 0x86, 0xA5, 0x1B, 0x29, 0xB9, 0xE5, 0x2D }, }, { - { 0x20, 0x15, 0x60, 0x8B, 0x8E, 0x86, 0xBA, 0x63, 0x12, 0x01, 0xC2, 0x12, 0x20, 0x99, 0x57, 0xAF, - 0xCB, 0x6E, 0xDF, 0x27, 0x22, 0xC6, 0x1B, 0x00, 0xE2, 0xFC, 0x92, 0x46, 0xA8, 0xD5, 0x20, 0x4E }, + { 0x21, 0x09, 0xF3, 0x10, 0x7D, 0x97, 0xF8, 0x70, 0x48, 0x70, 0x8E, 0xC8, 0x7C, 0xA2, 0xDC, 0x31, + 0x8B, 0x2F, 0x2B, 0x57, 0x47, 0xC3, 0x38, 0xBD, 0x9C, 0x6D, 0xBC, 0xD6, 0x0F, 0xD6, 0xBE, 0xA2 }, }, { - { 0x20, 0x7A, 0xE5, 0xE6, 0x56, 0xB3, 0xB1, 0x26, 0x39, 0x41, 0x83, 0x54, 0x5D, 0xF9, 0x9C, 0xC8, - 0x36, 0x53, 0x7A, 0x16, 0x88, 0x58, 0xD8, 0xCE, 0xB4, 0x5A, 0x6A, 0x52, 0x65, 0x86, 0xCA, 0xAE }, + { 0x21, 0x78, 0xE8, 0x28, 0x3A, 0x73, 0x39, 0x6E, 0x08, 0xC0, 0xA1, 0x1A, 0x88, 0x72, 0xFA, 0x4A, + 0x9F, 0xCC, 0x05, 0x67, 0x0C, 0xEE, 0xFF, 0xB8, 0x95, 0x83, 0x8E, 0xB6, 0x59, 0xDE, 0x38, 0xDB }, }, { - { 0x20, 0x8A, 0x46, 0xD9, 0x07, 0xE6, 0xB4, 0x09, 0x0E, 0x31, 0x02, 0xE1, 0xC7, 0xF1, 0x81, 0x57, - 0x21, 0x6C, 0xFC, 0x9A, 0xB9, 0xD5, 0x0F, 0x47, 0x83, 0x25, 0x8D, 0x79, 0x35, 0x01, 0x34, 0xBD }, + { 0x22, 0x01, 0x71, 0xF7, 0x0E, 0x1F, 0xC3, 0xC4, 0xF7, 0x8D, 0xA6, 0xC8, 0xB1, 0xD7, 0x2C, 0x3B, + 0xA8, 0x31, 0x9A, 0x46, 0xF8, 0x19, 0x2D, 0x1E, 0x19, 0xB9, 0xE2, 0x9A, 0xBA, 0x18, 0xEE, 0x87 }, }, { - { 0x20, 0xF1, 0x85, 0xBC, 0x7F, 0xA7, 0x61, 0x16, 0x6E, 0xA3, 0xA9, 0x98, 0x8F, 0xB1, 0x0B, 0x24, - 0xC7, 0x01, 0xEF, 0xDD, 0xAB, 0xE4, 0x74, 0x05, 0x63, 0x43, 0xA1, 0x36, 0x11, 0xD5, 0x4D, 0x7D }, + { 0x23, 0x19, 0xCB, 0x3D, 0x58, 0xC6, 0xD5, 0x53, 0x62, 0x5D, 0xE5, 0xF4, 0x25, 0x2B, 0xF0, 0x29, + 0xAB, 0x83, 0x05, 0xEB, 0xF2, 0x2F, 0xA2, 0x3E, 0x99, 0x73, 0x04, 0x66, 0xDE, 0x24, 0xD6, 0xC3 }, }, { - { 0x21, 0x03, 0x9F, 0x99, 0x3D, 0xAE, 0x79, 0x03, 0xA0, 0xA7, 0xAA, 0x93, 0x5B, 0x96, 0x70, 0x1A, - 0xDD, 0x7E, 0xC5, 0xCA, 0x99, 0xE1, 0x7E, 0x65, 0x1C, 0x21, 0x29, 0x5B, 0x3B, 0x65, 0x70, 0x49 }, - }, - { - { 0x21, 0x05, 0xA5, 0xB7, 0x80, 0x1C, 0xE4, 0x55, 0xA2, 0xA9, 0x31, 0xA2, 0x23, 0xBB, 0x8B, 0xF4, - 0x11, 0x28, 0x16, 0x03, 0x70, 0xFD, 0x25, 0xFC, 0x11, 0x23, 0xAB, 0x57, 0x9E, 0x06, 0x29, 0x23 }, - }, - { - { 0x21, 0x09, 0xF3, 0x10, 0x7D, 0x97, 0xF8, 0x70, 0x48, 0x70, 0x8E, 0xC8, 0x7C, 0xA2, 0xDC, 0x31, - 0x8B, 0x2F, 0x2B, 0x57, 0x47, 0xC3, 0x38, 0xBD, 0x9C, 0x6D, 0xBC, 0xD6, 0x0F, 0xD6, 0xBE, 0xA2 }, - }, - { - { 0x21, 0x4A, 0xBC, 0x84, 0x5D, 0x66, 0x68, 0x76, 0xC4, 0x78, 0x12, 0x84, 0x14, 0x16, 0xC6, 0xFB, - 0xFF, 0x4A, 0x38, 0x32, 0x20, 0x61, 0xB6, 0x5D, 0x9C, 0x5F, 0x6B, 0x74, 0x98, 0x2B, 0xC6, 0xEA }, - }, - { - { 0x21, 0x62, 0xAB, 0xC2, 0x7D, 0x0C, 0x3D, 0xA0, 0xF6, 0xAF, 0xF9, 0x76, 0x95, 0xFB, 0x3D, 0x47, - 0x7F, 0x4C, 0x63, 0x34, 0xFF, 0xB3, 0xE5, 0xBC, 0xD0, 0xE3, 0x05, 0x49, 0xD5, 0xFE, 0xEB, 0x47 }, - }, - { - { 0x21, 0x78, 0xE8, 0x28, 0x3A, 0x73, 0x39, 0x6E, 0x08, 0xC0, 0xA1, 0x1A, 0x88, 0x72, 0xFA, 0x4A, - 0x9F, 0xCC, 0x05, 0x67, 0x0C, 0xEE, 0xFF, 0xB8, 0x95, 0x83, 0x8E, 0xB6, 0x59, 0xDE, 0x38, 0xDB }, - }, - { - { 0x21, 0x82, 0x84, 0x4F, 0xB2, 0x8F, 0xB4, 0x71, 0x78, 0xEB, 0x38, 0x1C, 0xDB, 0xF1, 0x18, 0x06, - 0x3D, 0x6A, 0x9E, 0x43, 0xCC, 0x04, 0xE4, 0x8A, 0xEF, 0x84, 0xCE, 0x9C, 0xCE, 0x58, 0x4A, 0x5C }, - }, - { - { 0x22, 0x01, 0x71, 0xF7, 0x0E, 0x1F, 0xC3, 0xC4, 0xF7, 0x8D, 0xA6, 0xC8, 0xB1, 0xD7, 0x2C, 0x3B, - 0xA8, 0x31, 0x9A, 0x46, 0xF8, 0x19, 0x2D, 0x1E, 0x19, 0xB9, 0xE2, 0x9A, 0xBA, 0x18, 0xEE, 0x87 }, - }, - { - { 0x22, 0x2E, 0xC2, 0x75, 0xE6, 0x8A, 0x31, 0x7D, 0x60, 0x80, 0x67, 0x9D, 0xDF, 0x56, 0x78, 0x6A, - 0xBD, 0x2B, 0x11, 0xF2, 0x5A, 0x17, 0x15, 0x33, 0xCF, 0xBD, 0x59, 0xEE, 0x0D, 0xFA, 0x4E, 0xE4 }, - }, - { - { 0x22, 0x7A, 0x2B, 0xFF, 0xAB, 0xDE, 0xE1, 0x8C, 0x2C, 0x54, 0xE6, 0xE9, 0xB5, 0x8A, 0xBD, 0xBF, - 0x93, 0x07, 0xA4, 0x06, 0x2E, 0xDA, 0x97, 0xD4, 0xF6, 0xC4, 0x48, 0x1B, 0xB6, 0xEC, 0xA9, 0xE4 }, - }, - { - { 0x23, 0x19, 0xCB, 0x3D, 0x58, 0xC6, 0xD5, 0x53, 0x62, 0x5D, 0xE5, 0xF4, 0x25, 0x2B, 0xF0, 0x29, - 0xAB, 0x83, 0x05, 0xEB, 0xF2, 0x2F, 0xA2, 0x3E, 0x99, 0x73, 0x04, 0x66, 0xDE, 0x24, 0xD6, 0xC3 }, - }, - { - { 0x23, 0x3F, 0xC6, 0xF9, 0x15, 0x1F, 0x05, 0x00, 0xBB, 0x38, 0xAD, 0x20, 0x7A, 0xF2, 0x42, 0x21, - 0x3A, 0x6A, 0x51, 0xCE, 0xB3, 0x8C, 0x73, 0x0F, 0xF1, 0xBF, 0xA1, 0x0A, 0x82, 0x4A, 0x71, 0xC7 }, - }, - { - { 0x23, 0x86, 0x51, 0xAB, 0x70, 0xB7, 0x11, 0xA0, 0x65, 0x55, 0x4E, 0x5D, 0x63, 0x6A, 0x34, 0x2C, - 0x8A, 0x6B, 0xFE, 0x46, 0x0E, 0x4E, 0x7B, 0x4C, 0x9E, 0xAF, 0xB4, 0x75, 0xD5, 0x68, 0x51, 0xD8 }, - }, - { - { 0x23, 0x8A, 0x80, 0xCC, 0x9B, 0x58, 0x9A, 0xDC, 0x89, 0xB7, 0xA8, 0xF3, 0x4D, 0xDF, 0x12, 0x48, - 0x73, 0x4B, 0x9F, 0x7F, 0x78, 0x20, 0xB6, 0x04, 0x07, 0x66, 0xC5, 0x41, 0x3A, 0xD2, 0xBD, 0xEF }, + { 0x23, 0x8A, 0x80, 0xCC, 0x9B, 0x58, 0x9A, 0xDC, 0x89, 0xB7, 0xA8, 0xF3, 0x4D, 0xDF, 0x12, 0x48, + 0x73, 0x4B, 0x9F, 0x7F, 0x78, 0x20, 0xB6, 0x04, 0x07, 0x66, 0xC5, 0x41, 0x3A, 0xD2, 0xBD, 0xEF }, }, { { 0x23, 0x9C, 0x79, 0x5F, 0x0C, 0x55, 0xA5, 0x53, 0x16, 0x2A, 0x9C, 0xA0, 0x6E, 0x88, 0x01, 0xE1, 0x19, 0xBD, 0xFF, 0x54, 0x35, 0x4A, 0x3F, 0x68, 0x43, 0xCF, 0x2A, 0x2F, 0xA6, 0x01, 0x75, 0x8E }, }, - { - { 0x23, 0xF0, 0xDD, 0xD8, 0x9B, 0x42, 0x82, 0xA6, 0x7F, 0xD0, 0x57, 0x56, 0xFD, 0xC5, 0xD1, 0x8C, - 0x1E, 0x5D, 0xCC, 0xEF, 0xCF, 0x42, 0x65, 0x06, 0x6D, 0xFB, 0x4A, 0xBD, 0x30, 0xD9, 0xE9, 0x77 }, - }, - { - { 0x23, 0xF7, 0xE4, 0xA3, 0x5B, 0xCC, 0xE7, 0x40, 0x36, 0xD9, 0xC8, 0x6F, 0x7F, 0x61, 0x1D, 0x85, - 0xF3, 0x7C, 0xB6, 0x2C, 0x43, 0x24, 0x7D, 0x13, 0x52, 0x22, 0x4E, 0xC3, 0xDC, 0x89, 0xED, 0x37 }, - }, { { 0x24, 0x62, 0x52, 0x48, 0x32, 0xC1, 0x54, 0xD8, 0x4D, 0xF5, 0x8E, 0xD7, 0x75, 0x22, 0x3B, 0xBE, 0x25, 0x7D, 0xEA, 0xF7, 0x0E, 0xF9, 0xD2, 0x08, 0x61, 0x4E, 0xC0, 0xF5, 0x97, 0x7F, 0x6D, 0x58 }, }, - { - { 0x24, 0x63, 0xCB, 0x2E, 0x47, 0x55, 0x71, 0xA8, 0x68, 0x74, 0xEE, 0x45, 0xAE, 0x27, 0x0B, 0x40, - 0x08, 0xD8, 0xBA, 0xF3, 0x65, 0x32, 0x57, 0x0E, 0x28, 0xE2, 0x47, 0xFF, 0x88, 0x7F, 0x86, 0x83 }, - }, { { 0x24, 0x6D, 0x0C, 0x31, 0x48, 0x72, 0x75, 0x59, 0xF9, 0x9A, 0xD0, 0xC1, 0x50, 0x37, 0x70, 0x06, 0xB7, 0xA1, 0x7A, 0x60, 0x3A, 0x47, 0x3B, 0x6A, 0xAC, 0xD2, 0x4E, 0x16, 0xC6, 0xC5, 0x1B, 0x42 }, @@ -816,50 +260,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x25, 0x1B, 0xB7, 0xC5, 0x42, 0x33, 0xDA, 0x44, 0xBF, 0x53, 0xB5, 0x8A, 0xF2, 0x9A, 0xE1, 0x74, 0xB9, 0x78, 0xBA, 0xDB, 0x89, 0xA9, 0x50, 0xAB, 0x3E, 0x5F, 0x9B, 0x4D, 0x0D, 0xCD, 0xBC, 0x62 }, }, - { - { 0x25, 0x1D, 0x5D, 0x22, 0x2F, 0x1E, 0x67, 0x1D, 0x72, 0x1E, 0x1C, 0x26, 0x39, 0xB3, 0xB6, 0xD2, - 0x30, 0xB5, 0xC6, 0xB3, 0x0C, 0x8E, 0x34, 0xC8, 0x08, 0x75, 0x38, 0x8C, 0xCF, 0x23, 0xFB, 0x38 }, - }, - { - { 0x25, 0x50, 0x90, 0x44, 0x10, 0xAE, 0x84, 0xA6, 0xF8, 0xAD, 0xF5, 0x40, 0x46, 0x38, 0x7E, 0xBC, - 0x92, 0x6F, 0x0B, 0x2F, 0x66, 0x94, 0x61, 0xD7, 0xE6, 0x1A, 0xEE, 0x8D, 0xCE, 0xB8, 0x71, 0x3B }, - }, - { - { 0x25, 0x5A, 0x49, 0x8B, 0xEB, 0x7C, 0x89, 0x42, 0x74, 0xE5, 0xE3, 0xD4, 0x3B, 0x27, 0xAD, 0x66, - 0x62, 0x0B, 0x90, 0xCB, 0x91, 0x62, 0xC4, 0x68, 0x5F, 0xA2, 0x6D, 0x85, 0xF5, 0xA4, 0x3A, 0xA0 }, - }, - { - { 0x25, 0x6F, 0xD8, 0x6F, 0x52, 0x51, 0x34, 0x36, 0x1D, 0xA8, 0x0C, 0x18, 0xE5, 0xE2, 0x9F, 0x75, - 0xF1, 0x10, 0xCA, 0x94, 0xB6, 0x2C, 0xD7, 0x18, 0x33, 0x1A, 0xDE, 0xBF, 0x81, 0x64, 0x6B, 0x3E }, - }, - { - { 0x25, 0x8C, 0x68, 0x91, 0xF0, 0x89, 0xB5, 0x09, 0x4B, 0xE3, 0x3D, 0x6C, 0x82, 0x21, 0x5E, 0x72, - 0x65, 0xAC, 0xA9, 0x3F, 0x7C, 0x9B, 0x41, 0x45, 0xD0, 0x8A, 0xFF, 0x1F, 0x48, 0x30, 0x58, 0xAA }, - }, { { 0x26, 0x03, 0xCB, 0xDF, 0x69, 0x75, 0xE3, 0x68, 0x83, 0x7F, 0x95, 0x1A, 0x00, 0x49, 0xFD, 0xC3, 0xC4, 0xB2, 0x39, 0xF0, 0x82, 0xF6, 0xBF, 0x89, 0x5D, 0xB8, 0xF3, 0x27, 0x05, 0xE6, 0x9C, 0xF3 }, }, - { - { 0x26, 0x33, 0xFD, 0x33, 0x50, 0xF8, 0x73, 0x50, 0x2D, 0x94, 0x53, 0x7A, 0xD8, 0x66, 0x3D, 0x2A, - 0xEF, 0xA5, 0x9A, 0x03, 0x57, 0x28, 0x8C, 0x64, 0x42, 0x3C, 0x74, 0xC8, 0x6F, 0x8C, 0x92, 0xB9 }, - }, - { - { 0x26, 0x5F, 0x09, 0x6C, 0x74, 0xF9, 0xC4, 0x5A, 0x3B, 0xD3, 0x7C, 0x2B, 0xC8, 0x23, 0xEE, 0x27, - 0x1A, 0x23, 0xF8, 0xF5, 0xC0, 0x9E, 0x1B, 0x71, 0x68, 0x7A, 0xEC, 0x17, 0xE3, 0x8E, 0x46, 0x91 }, - }, - { - { 0x26, 0xB2, 0x11, 0xCC, 0x34, 0x6D, 0x60, 0x37, 0x1B, 0x24, 0xBD, 0x0D, 0xBA, 0xB3, 0xF4, 0x3D, - 0x5D, 0xE3, 0xF2, 0x05, 0x47, 0xC1, 0x4C, 0x0B, 0xA1, 0xE0, 0xB2, 0xED, 0xDD, 0x73, 0x02, 0x64 }, - }, - { - { 0x26, 0xB9, 0x4C, 0xA0, 0x1E, 0x63, 0x4E, 0xD0, 0xCB, 0x4F, 0xF3, 0xC9, 0xBC, 0xC2, 0x8A, 0x5E, - 0x8F, 0x49, 0xCA, 0xCD, 0xE7, 0xEB, 0xA2, 0x63, 0x2D, 0x3D, 0x30, 0x3F, 0xB2, 0xED, 0xE8, 0x63 }, - }, - { - { 0x27, 0x16, 0xE1, 0x51, 0x81, 0x4B, 0xC2, 0x23, 0x49, 0x83, 0xF6, 0x53, 0xBF, 0x4D, 0x47, 0x1D, - 0x37, 0x5B, 0xDA, 0xCB, 0x3E, 0xAA, 0xEA, 0x96, 0xB4, 0x80, 0xCD, 0xDA, 0xCA, 0x0D, 0x4C, 0xDA }, - }, { { 0x27, 0x50, 0x11, 0x93, 0xE4, 0x61, 0xCA, 0xCE, 0x55, 0x32, 0xFA, 0xD5, 0xD5, 0xB2, 0x7E, 0x01, 0x16, 0x57, 0x92, 0xE0, 0x4F, 0x24, 0x21, 0x93, 0x2F, 0x39, 0x28, 0xAF, 0x9F, 0xCD, 0xA4, 0xF3 }, @@ -872,18 +276,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x28, 0x07, 0x10, 0x60, 0x44, 0x03, 0x45, 0xD0, 0x0E, 0x80, 0xB9, 0xD7, 0xCB, 0xE1, 0x87, 0xC1, 0xD8, 0xB0, 0xF2, 0xEF, 0x5D, 0x0A, 0xAC, 0x9C, 0xCE, 0xEF, 0x9A, 0x8C, 0x5A, 0x06, 0xF3, 0x02 }, }, - { - { 0x28, 0x16, 0x1F, 0x94, 0xD5, 0xA3, 0xFE, 0x36, 0x1F, 0x3C, 0xD8, 0xBB, 0xFA, 0x8D, 0x9D, 0xB7, - 0x11, 0x05, 0x8B, 0xA9, 0x67, 0xEE, 0xBD, 0x8D, 0x42, 0xEC, 0xB9, 0x27, 0xBF, 0x09, 0xF4, 0x40 }, - }, - { - { 0x28, 0x76, 0x00, 0xE8, 0x45, 0x25, 0xA9, 0xE2, 0xEF, 0xB3, 0xC3, 0x30, 0xD8, 0x0E, 0xC6, 0x0C, - 0x3F, 0x7D, 0x7B, 0xB2, 0x07, 0x89, 0x4E, 0xB6, 0xCD, 0x7B, 0x85, 0xEE, 0x74, 0xFF, 0x9A, 0x46 }, - }, - { - { 0x28, 0xC2, 0x4D, 0x7A, 0xEF, 0xCB, 0xA0, 0x50, 0x94, 0x94, 0xEF, 0x21, 0x06, 0x48, 0x17, 0xFB, - 0xAA, 0x89, 0x1F, 0xB3, 0xC5, 0x2F, 0xC7, 0x17, 0x81, 0xDD, 0x5E, 0xAC, 0x18, 0xD7, 0x4D, 0x7A }, - }, { { 0x28, 0xD9, 0x51, 0x84, 0xB5, 0xEA, 0x14, 0x0F, 0x47, 0x4F, 0x3A, 0xF6, 0xCE, 0x70, 0x52, 0xE8, 0x59, 0x3C, 0xF3, 0xA5, 0x01, 0x0F, 0x52, 0x24, 0x1A, 0x1E, 0x36, 0x64, 0x60, 0xE5, 0x91, 0x9E }, @@ -892,66 +284,14 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x29, 0x01, 0x93, 0xE3, 0x7A, 0x38, 0x87, 0xFD, 0x36, 0x15, 0xDF, 0x12, 0x2E, 0x95, 0x21, 0x17, 0x42, 0x15, 0xEE, 0x68, 0xF7, 0x44, 0xB2, 0xFA, 0x35, 0xD2, 0x9C, 0x5D, 0xF1, 0x08, 0xF5, 0x5B }, }, - { - { 0x29, 0x0C, 0x79, 0x6F, 0x6D, 0x23, 0xDE, 0x2A, 0xAE, 0x80, 0x77, 0xAB, 0xCC, 0xFC, 0x52, 0xEE, - 0x5C, 0x71, 0x35, 0x3F, 0x9A, 0xB6, 0xBD, 0x56, 0x5C, 0x6A, 0xBD, 0x26, 0x9F, 0xF5, 0xE9, 0xBA }, - }, - { - { 0x29, 0x4A, 0x2B, 0xF8, 0x7B, 0x50, 0x1D, 0x28, 0x4F, 0x37, 0x80, 0x96, 0x0E, 0x8E, 0x72, 0xA1, - 0x8A, 0xF1, 0xC6, 0x3B, 0xD7, 0xDE, 0x4C, 0x4D, 0xDE, 0xA3, 0x7B, 0xF0, 0x27, 0xD4, 0x2C, 0xB8 }, - }, - { - { 0x29, 0x54, 0x18, 0x23, 0xE0, 0x69, 0x14, 0xB4, 0xD6, 0x2A, 0x93, 0x8D, 0xC4, 0x9C, 0x8A, 0x0D, - 0x17, 0xD9, 0x94, 0x96, 0x0E, 0xEE, 0xC7, 0xD9, 0x75, 0x31, 0xAF, 0x71, 0x5E, 0xDE, 0x4A, 0xDF }, - }, - { - { 0x29, 0x74, 0x8A, 0x69, 0xE9, 0x42, 0xA0, 0x67, 0xE6, 0xA6, 0xA3, 0x5A, 0x9D, 0x40, 0x00, 0x0A, - 0x31, 0x8D, 0x7D, 0xDF, 0x5F, 0x5A, 0x2F, 0x4D, 0x3D, 0x18, 0xBE, 0xBA, 0xD3, 0x96, 0x91, 0xEC }, - }, - { - { 0x29, 0x7A, 0xC8, 0x25, 0xC1, 0x98, 0x06, 0xFB, 0x88, 0x1F, 0xD9, 0x1C, 0x61, 0x2D, 0x6C, 0xC2, - 0x1B, 0x28, 0xE4, 0xA5, 0x72, 0xCF, 0xB7, 0x16, 0x04, 0xE5, 0x54, 0x41, 0x4D, 0xFD, 0xEA, 0xDC }, - }, - { - { 0x29, 0xA8, 0x28, 0x26, 0x64, 0x3D, 0x5A, 0x98, 0xC4, 0x7D, 0xF3, 0xA7, 0x8F, 0xBB, 0x84, 0x49, - 0xB3, 0xE6, 0xD3, 0xCC, 0xE6, 0x2C, 0xF4, 0x57, 0x12, 0xA4, 0xCD, 0x99, 0x21, 0xF3, 0xC6, 0x88 }, - }, - { - { 0x29, 0xD4, 0x91, 0x44, 0x01, 0x60, 0x8A, 0xE7, 0x65, 0x51, 0x53, 0xB6, 0x23, 0x67, 0x1F, 0x75, - 0x92, 0x99, 0x4D, 0x4B, 0xE3, 0x88, 0x39, 0x59, 0x13, 0xA3, 0x60, 0x22, 0x1F, 0x90, 0xC0, 0x91 }, - }, { { 0x2A, 0x0F, 0x70, 0x67, 0x6E, 0x18, 0x4D, 0x49, 0x39, 0xA4, 0x04, 0xDE, 0x35, 0xAC, 0x84, 0xAB, 0x81, 0xAF, 0xEC, 0x36, 0x17, 0xE7, 0xE1, 0xBF, 0x34, 0x67, 0xD4, 0x19, 0x25, 0x5D, 0xD8, 0x17 }, }, - { - { 0x2A, 0x6B, 0x9F, 0x6F, 0xDC, 0x43, 0xBF, 0x65, 0xE2, 0xA1, 0x0E, 0xDE, 0x36, 0x64, 0xC8, 0x3F, - 0xCB, 0xEC, 0x13, 0x9A, 0x6E, 0x6C, 0xC5, 0xC8, 0x32, 0xD3, 0x27, 0x89, 0x5B, 0x52, 0x0E, 0xA2 }, - }, { { 0x2A, 0xA6, 0x47, 0x8C, 0xC7, 0x5D, 0x67, 0xA8, 0xCA, 0x55, 0xB2, 0xE1, 0x63, 0xFD, 0xBB, 0xBC, 0x9D, 0x74, 0xB4, 0xE5, 0xF3, 0x7B, 0x7D, 0xBD, 0x13, 0xC9, 0x4E, 0x85, 0x8D, 0x40, 0xDA, 0xD0 }, }, - { - { 0x2A, 0xC0, 0x65, 0xAE, 0x39, 0x6B, 0x87, 0x54, 0x9C, 0x3F, 0x09, 0xE5, 0x8F, 0x16, 0x4B, 0x24, - 0x2E, 0xC5, 0x9D, 0x13, 0x92, 0xB1, 0xB2, 0x50, 0x14, 0xBF, 0x47, 0x94, 0xAC, 0x13, 0x01, 0xB0 }, - }, - { - { 0x2B, 0x36, 0xDE, 0x39, 0xD5, 0xED, 0x42, 0xE1, 0xEC, 0x06, 0x57, 0x49, 0xD5, 0x82, 0xE0, 0x14, - 0xB5, 0xAF, 0xF2, 0x67, 0xF8, 0x7C, 0x03, 0x15, 0x27, 0xD9, 0x15, 0xAB, 0x43, 0x02, 0x88, 0x9E }, - }, - { - { 0x2B, 0x66, 0x75, 0xF5, 0x89, 0x9B, 0x2D, 0x3F, 0x36, 0xAF, 0x0A, 0x0F, 0xFB, 0xB6, 0xDC, 0x60, - 0x3E, 0x4C, 0x9E, 0x82, 0x8D, 0xA2, 0xB2, 0xD0, 0x24, 0xE3, 0x04, 0x30, 0x71, 0xAB, 0x15, 0xCE }, - }, - { - { 0x2B, 0x6E, 0x7A, 0xF1, 0xDE, 0x52, 0xF4, 0xAF, 0x97, 0xCC, 0x3A, 0x13, 0x6D, 0xCB, 0x82, 0xE0, - 0xF2, 0xCA, 0x06, 0xA8, 0x73, 0x16, 0x9C, 0x02, 0x87, 0x86, 0x10, 0x18, 0x44, 0xC3, 0x05, 0x15 }, - }, - { - { 0x2B, 0xDC, 0xF7, 0x06, 0x67, 0x7A, 0x3B, 0x68, 0xF1, 0x37, 0xF7, 0xF6, 0x9B, 0x36, 0x6B, 0x79, - 0xCA, 0x5A, 0xEB, 0xD3, 0x35, 0xBF, 0xB9, 0xD0, 0x3D, 0x58, 0xBD, 0x85, 0xA8, 0x66, 0x36, 0xBB }, - }, { { 0x2B, 0xF1, 0xE3, 0xF0, 0x37, 0x5A, 0x9A, 0x21, 0xC0, 0x7A, 0x92, 0x18, 0x04, 0x2F, 0x18, 0x77, 0x3F, 0x43, 0xEA, 0xB0, 0xF5, 0xC0, 0x00, 0x26, 0x45, 0x40, 0x48, 0x2F, 0x04, 0xAE, 0x18, 0xEF }, @@ -960,10 +300,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x2C, 0x82, 0x47, 0x4F, 0x0E, 0xF6, 0xCB, 0x65, 0x0A, 0x13, 0xEF, 0x20, 0x99, 0x6E, 0x65, 0x7B, 0x67, 0x24, 0xF0, 0xA0, 0xD5, 0xEE, 0x24, 0x6D, 0x26, 0xBB, 0xFA, 0x0A, 0xBB, 0x2C, 0x22, 0xE1 }, }, - { - { 0x2C, 0x8C, 0xDE, 0x6B, 0xB0, 0xD1, 0x2C, 0xD2, 0xDD, 0x63, 0xE9, 0x40, 0x09, 0x4F, 0xD2, 0x62, - 0x5D, 0x2C, 0xFD, 0x9A, 0x64, 0x7E, 0x0C, 0x64, 0x0E, 0xCF, 0x1C, 0x78, 0x92, 0x1E, 0xEA, 0x17 }, - }, { { 0x2C, 0x9B, 0xE1, 0x2D, 0xA4, 0x99, 0xEA, 0xBB, 0x2F, 0xFD, 0xF9, 0x91, 0x6F, 0x2B, 0x27, 0x18, 0x81, 0x19, 0x5B, 0x74, 0x19, 0xBD, 0x1E, 0xEF, 0x8D, 0x50, 0x77, 0x2A, 0xB9, 0x46, 0x4A, 0xA8 }, @@ -972,42 +308,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x2C, 0xBD, 0xD5, 0x6C, 0xE4, 0xB4, 0x06, 0x09, 0xE9, 0xAA, 0x52, 0x1E, 0xAA, 0x76, 0xAC, 0x7E, 0x55, 0x73, 0x7B, 0xF4, 0x3E, 0x2B, 0x0C, 0x30, 0xDD, 0xCF, 0x59, 0x87, 0x2E, 0xAB, 0xE7, 0x7B }, }, - { - { 0x2C, 0xF2, 0x6D, 0xA5, 0x76, 0x7E, 0xDE, 0x07, 0xC3, 0x73, 0x58, 0xCD, 0x5F, 0x71, 0xD1, 0x23, - 0xBB, 0x19, 0x77, 0x28, 0x85, 0x87, 0xC7, 0x3F, 0x84, 0xB0, 0x8F, 0xF8, 0xAA, 0x01, 0x9A, 0x69 }, - }, - { - { 0x2D, 0x0C, 0xE9, 0x16, 0x71, 0xC2, 0x54, 0x4C, 0xF6, 0xBD, 0x10, 0x30, 0x6F, 0x9B, 0x2C, 0x91, - 0x75, 0xF2, 0xC3, 0x1A, 0x23, 0x8E, 0x14, 0x68, 0x67, 0x65, 0x97, 0x89, 0x87, 0x3D, 0xC1, 0x75 }, - }, - { - { 0x2D, 0x5F, 0x95, 0xEF, 0x95, 0xAD, 0x1C, 0xCA, 0xC8, 0xE8, 0x25, 0xC1, 0x61, 0x5F, 0x82, 0x1F, - 0x0F, 0x44, 0xDF, 0xB8, 0xAA, 0x31, 0xDD, 0xF2, 0xC9, 0x83, 0x3E, 0x50, 0xC6, 0x95, 0x1C, 0xC0 }, - }, - { - { 0x2D, 0x9C, 0xC0, 0x3B, 0xC4, 0x51, 0xD1, 0xE0, 0xBA, 0x65, 0x11, 0xF4, 0x89, 0x31, 0x75, 0xD0, - 0x43, 0x46, 0x85, 0x6A, 0x41, 0x69, 0x86, 0x99, 0x4E, 0x94, 0x60, 0xD7, 0x4A, 0x48, 0x40, 0xB9 }, - }, - { - { 0x2D, 0xB5, 0x36, 0x48, 0xA6, 0x14, 0x69, 0x57, 0x01, 0xC7, 0xC5, 0x1E, 0x35, 0xFF, 0x38, 0xD6, - 0x4F, 0x27, 0xA2, 0x7D, 0x55, 0xDF, 0xF4, 0xB1, 0x4A, 0xC4, 0x50, 0xC7, 0x5E, 0xB1, 0x18, 0x6E }, - }, - { - { 0x2D, 0xD5, 0xE6, 0xD3, 0x73, 0x36, 0x34, 0x2F, 0x01, 0x1E, 0xB9, 0x7A, 0x2B, 0x77, 0x38, 0x9D, - 0xE6, 0xD2, 0x23, 0x8D, 0x87, 0x69, 0x65, 0x08, 0x2F, 0xD7, 0x94, 0x47, 0x00, 0x50, 0xBE, 0x12 }, - }, { { 0x2D, 0xDE, 0xE4, 0x5F, 0x72, 0x78, 0x38, 0xDE, 0xAD, 0xE6, 0x7E, 0x9C, 0xA7, 0x05, 0xEB, 0xB4, 0xC2, 0xE9, 0x40, 0xAE, 0x1B, 0x9D, 0x62, 0x35, 0x72, 0x18, 0x04, 0x58, 0x31, 0xE9, 0x8F, 0xDE }, }, - { - { 0x2E, 0x17, 0x46, 0x49, 0x4E, 0x86, 0xD6, 0x93, 0x0B, 0x24, 0x98, 0x8B, 0x12, 0x9B, 0x38, 0x6B, - 0xC2, 0x08, 0xE2, 0xFB, 0xC8, 0xD3, 0xEA, 0x27, 0x7A, 0x23, 0xE5, 0x46, 0x33, 0xAF, 0xF1, 0x8F }, - }, - { - { 0x2E, 0x43, 0x2A, 0x54, 0x5D, 0xFE, 0x2D, 0xA3, 0xAD, 0x00, 0xCC, 0x87, 0x89, 0x23, 0xA1, 0x85, - 0xD6, 0xA3, 0xF9, 0x67, 0x5C, 0x36, 0xDC, 0x3C, 0xD3, 0x70, 0x2A, 0xEF, 0xEB, 0x27, 0x0C, 0x85 }, - }, { { 0x2E, 0x5D, 0xD2, 0x55, 0x09, 0x6D, 0x64, 0x83, 0x10, 0x5C, 0xB6, 0x03, 0x6C, 0x59, 0x17, 0x57, 0xFD, 0x98, 0x49, 0x70, 0x66, 0x05, 0x3F, 0x83, 0x39, 0xE4, 0xD8, 0xD0, 0xC3, 0x75, 0x49, 0x03 }, @@ -1016,46 +320,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x2E, 0xD2, 0x05, 0x8F, 0x39, 0xEA, 0xBA, 0x5C, 0xB3, 0xD7, 0xDF, 0x24, 0xCA, 0x74, 0xA7, 0x7D, 0xDC, 0x12, 0x06, 0x01, 0x52, 0x7B, 0x0F, 0x51, 0x06, 0x91, 0x05, 0xCA, 0x88, 0x37, 0x6E, 0x20 }, }, - { - { 0x2F, 0x39, 0xBB, 0x30, 0xAA, 0x5C, 0xBB, 0x62, 0x01, 0x7C, 0x6C, 0x79, 0x90, 0xE3, 0xF9, 0xA4, - 0x0D, 0x46, 0x9F, 0x76, 0x50, 0x59, 0x81, 0xC8, 0x6F, 0x95, 0x55, 0x4F, 0x48, 0x7A, 0x52, 0x76 }, - }, - { - { 0x2F, 0x79, 0xD6, 0xF6, 0xA3, 0x2F, 0x1B, 0xEE, 0x22, 0x37, 0xA0, 0x18, 0xE6, 0xAE, 0xC4, 0xF4, - 0x9E, 0x2C, 0x5C, 0x3C, 0xDB, 0xB6, 0x99, 0xE1, 0x6F, 0x8E, 0xF4, 0x14, 0xEE, 0xFF, 0x8D, 0xA3 }, - }, - { - { 0x2F, 0x8B, 0xC9, 0x6F, 0x12, 0x95, 0x05, 0x6C, 0x10, 0x67, 0x20, 0x39, 0x57, 0xE3, 0xCB, 0xCC, - 0x3B, 0x16, 0xC4, 0x91, 0xD4, 0xDA, 0xC0, 0xA7, 0xDE, 0xE4, 0x2D, 0xD5, 0x4C, 0x10, 0xD4, 0x96 }, - }, - { - { 0x2F, 0x9B, 0x7B, 0x60, 0xA3, 0xE8, 0x74, 0x2C, 0x5D, 0xBE, 0x3E, 0xC6, 0x01, 0x69, 0xD7, 0xA4, - 0x4F, 0x1B, 0xB5, 0x6D, 0x51, 0xF6, 0x51, 0x37, 0x2C, 0x28, 0x32, 0x69, 0x33, 0x7B, 0xF8, 0x15 }, - }, - { - { 0x2F, 0xEF, 0xA7, 0xCB, 0x12, 0x6B, 0x81, 0xC9, 0x47, 0x4D, 0x3E, 0x2C, 0x9B, 0x97, 0x3A, 0x83, - 0x69, 0xBB, 0x08, 0x43, 0x41, 0xD3, 0x82, 0xD3, 0x7E, 0x9E, 0x95, 0xC4, 0xDB, 0xE3, 0x71, 0xEE }, - }, - { - { 0x30, 0x2B, 0xC4, 0xAF, 0xFB, 0x52, 0xA9, 0xA6, 0xB9, 0x7A, 0x1D, 0xBF, 0x87, 0x98, 0xFA, 0xB2, - 0xAD, 0x57, 0xD3, 0x6F, 0x75, 0x84, 0x88, 0x8E, 0x03, 0x67, 0x4A, 0x5D, 0xD6, 0xE1, 0x09, 0x91 }, - }, - { - { 0x30, 0x2F, 0x5D, 0xC8, 0xF0, 0x75, 0xED, 0x03, 0x99, 0xD4, 0xBB, 0x3E, 0xA1, 0x92, 0x25, 0xDA, - 0x56, 0x3C, 0x9E, 0x3C, 0xF3, 0xA6, 0xF8, 0x0D, 0x28, 0x4D, 0x55, 0x31, 0xC2, 0xD0, 0xDD, 0xF7 }, - }, - { - { 0x30, 0x35, 0x3B, 0x41, 0x90, 0x04, 0xDD, 0x1B, 0xA0, 0x64, 0x4A, 0x2A, 0x0B, 0x7B, 0xE9, 0x4F, - 0xB8, 0x6F, 0x5E, 0x27, 0x5D, 0x67, 0x94, 0xA6, 0xDB, 0xBA, 0xA3, 0x21, 0x32, 0x3E, 0xD8, 0xB7 }, - }, { { 0x30, 0x7B, 0x09, 0x34, 0xEF, 0x97, 0x85, 0xE7, 0x08, 0xED, 0x48, 0x1A, 0x99, 0x7A, 0x8A, 0x88, 0xB7, 0xBF, 0x22, 0xDD, 0x26, 0xAA, 0x17, 0x17, 0x31, 0xB8, 0xF7, 0xE0, 0xD5, 0x97, 0xB7, 0x08 }, }, - { - { 0x30, 0x9B, 0x6E, 0x00, 0x40, 0x46, 0x87, 0x96, 0x01, 0xA0, 0xD8, 0xA0, 0x42, 0x3F, 0x73, 0xB1, - 0x6A, 0x91, 0xA4, 0xBC, 0x16, 0xED, 0x2A, 0x84, 0x60, 0x66, 0xCD, 0xC0, 0x38, 0x2F, 0x97, 0x71 }, - }, { { 0x30, 0xCB, 0x41, 0x11, 0xFB, 0x10, 0x08, 0x6F, 0xC6, 0xA4, 0x1F, 0x04, 0xB7, 0xE9, 0xD4, 0xCF, 0x66, 0x10, 0xBB, 0x06, 0x59, 0xD8, 0xE2, 0xAC, 0x80, 0x4F, 0xC8, 0x96, 0xB0, 0x25, 0x42, 0xBB }, @@ -1072,74 +340,18 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x31, 0xB8, 0x3E, 0x01, 0x90, 0x98, 0x95, 0xBC, 0x74, 0x2D, 0x6B, 0xE8, 0x40, 0x0A, 0xDE, 0x51, 0xB2, 0x09, 0x83, 0xF6, 0x83, 0xA2, 0xAA, 0xEE, 0xB2, 0x5F, 0x58, 0xDF, 0x98, 0x1B, 0xDE, 0x0D }, }, - { - { 0x31, 0xED, 0x8A, 0x8C, 0xC6, 0xEE, 0x5E, 0x88, 0x4F, 0x21, 0x4F, 0x26, 0x7F, 0xE3, 0xA2, 0x27, - 0xD4, 0xE6, 0xED, 0x36, 0xA7, 0x7F, 0xA2, 0x24, 0x6F, 0x0A, 0xD0, 0x77, 0x8A, 0x6B, 0x3F, 0x97 }, - }, - { - { 0x32, 0x36, 0x98, 0x50, 0x9D, 0x8F, 0x8B, 0xFB, 0xD4, 0xF9, 0x04, 0xBD, 0x1D, 0x84, 0x64, 0x12, - 0xC5, 0x27, 0xB7, 0x70, 0x06, 0x2A, 0xAD, 0xDF, 0x9E, 0x91, 0x9D, 0x84, 0x10, 0xEA, 0xA4, 0x9F }, - }, - { - { 0x32, 0x8B, 0x9A, 0x45, 0xEF, 0xEF, 0x20, 0xB5, 0xD1, 0x57, 0x39, 0xDD, 0xFA, 0xC1, 0x0C, 0x7E, - 0xFE, 0x5F, 0xA7, 0x96, 0xBF, 0xE0, 0x1E, 0xD1, 0xA1, 0x25, 0xA9, 0x15, 0x8E, 0x2F, 0x1B, 0x17 }, - }, - { - { 0x32, 0x9B, 0x70, 0xBF, 0x79, 0xD8, 0x11, 0x7E, 0x95, 0x3B, 0x49, 0x97, 0xBB, 0x62, 0x72, 0xDF, - 0x50, 0x49, 0x5F, 0xA0, 0xB4, 0x5B, 0xAD, 0xB3, 0xEC, 0x0A, 0x83, 0x16, 0x33, 0x6F, 0xE3, 0xA2 }, - }, - { - { 0x32, 0xDB, 0xC4, 0x6B, 0x80, 0x80, 0x5A, 0x56, 0x97, 0x4B, 0x2A, 0x5D, 0xDE, 0x67, 0x34, 0x28, - 0xED, 0x03, 0xB0, 0x76, 0x5E, 0x15, 0xD9, 0x4C, 0x55, 0xE5, 0x4D, 0x2F, 0x55, 0x70, 0xF2, 0x0B }, - }, { { 0x32, 0xEF, 0x13, 0x33, 0x86, 0xBF, 0x0C, 0x63, 0xCF, 0x29, 0xD6, 0x2B, 0x0D, 0x76, 0x88, 0x9E, 0x9D, 0x9D, 0x53, 0x2E, 0xE4, 0x90, 0x38, 0x94, 0x4D, 0xBC, 0x21, 0x49, 0xD8, 0xCA, 0xA5, 0xD1 }, }, - { - { 0x33, 0x03, 0x23, 0x10, 0x4C, 0x25, 0x2F, 0xCE, 0xB9, 0xE6, 0x63, 0x0D, 0x9F, 0xE7, 0x1F, 0x17, - 0xB6, 0xC2, 0x25, 0xA6, 0x5C, 0x76, 0x08, 0x15, 0xE4, 0x08, 0x74, 0x6C, 0x33, 0x1A, 0xB4, 0xF6 }, - }, - { - { 0x33, 0x0D, 0x78, 0x66, 0xC2, 0x5F, 0x7C, 0xE3, 0x47, 0x3C, 0x6D, 0x55, 0x9C, 0xEA, 0x4B, 0x94, - 0x01, 0xF9, 0xE5, 0x2E, 0x4C, 0x24, 0x7A, 0x5E, 0x49, 0xA1, 0xF1, 0x44, 0x59, 0x9A, 0x5A, 0x79 }, - }, - { - { 0x33, 0xC9, 0x15, 0x03, 0xBC, 0x7E, 0xBE, 0x5A, 0x5D, 0xD0, 0xCF, 0xBB, 0x37, 0x52, 0x64, 0xDD, - 0x5A, 0x31, 0x1E, 0x48, 0xF4, 0x26, 0x6B, 0x32, 0x50, 0x8A, 0x02, 0x5D, 0x04, 0xFA, 0xDF, 0x38 }, - }, { { 0x34, 0x06, 0x4F, 0xF9, 0x3B, 0x27, 0x4C, 0xF5, 0xA7, 0x24, 0xEC, 0x19, 0x64, 0x50, 0x4A, 0x71, 0x0A, 0xB9, 0x7B, 0xA1, 0x10, 0x3C, 0xD9, 0xB9, 0x8C, 0x81, 0xD0, 0xAB, 0xCF, 0x3B, 0x19, 0xBD }, }, - { - { 0x34, 0x15, 0x1A, 0x33, 0x82, 0x78, 0xDA, 0x7E, 0xC2, 0x62, 0x33, 0x81, 0x7D, 0x96, 0x44, 0xB5, - 0x6F, 0x8F, 0x48, 0xC1, 0xC3, 0x70, 0xCD, 0x25, 0xFC, 0xE7, 0xDE, 0x64, 0x54, 0x4F, 0xE9, 0x36 }, - }, { { 0x34, 0x65, 0xC2, 0xF9, 0xA0, 0xCF, 0x36, 0xE5, 0xEE, 0xF0, 0x27, 0x1C, 0x52, 0x91, 0x2D, 0x58, 0x6F, 0xB2, 0x0B, 0x94, 0x43, 0xE7, 0xD5, 0x82, 0xA3, 0xE2, 0x23, 0x93, 0xFA, 0xC8, 0x1B, 0xB4 }, }, - { - { 0x34, 0x9B, 0x72, 0x1D, 0x0B, 0xB9, 0xA4, 0xC4, 0xAA, 0x33, 0x43, 0x60, 0xA6, 0x6A, 0xC3, 0xA7, - 0x3F, 0xA8, 0xD8, 0xD3, 0x60, 0x0D, 0x89, 0x4E, 0xB0, 0xC7, 0xD2, 0x84, 0x23, 0xC6, 0x78, 0x57 }, - }, - { - { 0x34, 0xE6, 0xF1, 0x7A, 0x14, 0xD3, 0xD2, 0x8A, 0xFD, 0x51, 0xCF, 0x40, 0x49, 0x3A, 0xB2, 0xCF, - 0xE0, 0x18, 0xEF, 0x98, 0x1E, 0x23, 0xF1, 0xFC, 0x91, 0x60, 0xFB, 0x91, 0x2C, 0xDC, 0x5C, 0xB9 }, - }, - { - { 0x35, 0x13, 0x6F, 0x88, 0xB4, 0x24, 0x76, 0x0E, 0x17, 0x5E, 0xFC, 0x19, 0x9B, 0x75, 0xE5, 0x25, - 0x35, 0xF2, 0xDF, 0x59, 0xFF, 0xD0, 0x69, 0x3A, 0x5A, 0x3F, 0x78, 0x1F, 0x6F, 0xF4, 0xB6, 0x50 }, - }, - { - { 0x35, 0x49, 0xB6, 0xEC, 0xBD, 0x8D, 0x25, 0x2B, 0xE7, 0x17, 0xB9, 0x22, 0x73, 0x27, 0x38, 0x08, - 0x0B, 0xAF, 0xD5, 0x60, 0xB4, 0x5A, 0x05, 0x40, 0x33, 0xBD, 0x11, 0x0B, 0x3C, 0x39, 0x48, 0x22 }, - }, - { - { 0x35, 0x58, 0x91, 0xA3, 0x12, 0x34, 0xFD, 0xD0, 0x84, 0x79, 0xB8, 0xAB, 0xA8, 0x58, 0x1E, 0x85, - 0x7C, 0x6B, 0x5C, 0x6B, 0x40, 0xCF, 0xFC, 0x7B, 0x67, 0x80, 0x92, 0x65, 0x1F, 0x06, 0x87, 0xC1 }, - }, { { 0x35, 0x98, 0x10, 0xFF, 0xFE, 0xD1, 0x3A, 0x2C, 0x25, 0xCD, 0x91, 0xFC, 0xF0, 0x85, 0x59, 0x33, 0xC9, 0x94, 0xA9, 0xDF, 0xC9, 0x39, 0x2D, 0x97, 0x07, 0xC3, 0xC0, 0xE7, 0x30, 0x0F, 0x90, 0x8D }, @@ -1160,38 +372,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x36, 0xF5, 0xA9, 0x7D, 0x79, 0x3F, 0x84, 0x97, 0x44, 0xD6, 0xAB, 0x39, 0xB7, 0xA8, 0x18, 0xF8, 0x17, 0x6E, 0x65, 0x20, 0xDC, 0x86, 0x3D, 0xCE, 0x43, 0xB3, 0x98, 0xC3, 0x0B, 0x5E, 0xDB, 0x09 }, }, - { - { 0x37, 0x07, 0x9D, 0x98, 0x72, 0x7C, 0x42, 0xA4, 0x1D, 0x66, 0x18, 0xFC, 0xCD, 0xC6, 0xFF, 0xA1, - 0x5E, 0xD3, 0xB2, 0xFE, 0xC7, 0xAC, 0x0A, 0x09, 0x7B, 0x74, 0xC5, 0x72, 0xBB, 0xCD, 0xA8, 0xD7 }, - }, - { - { 0x37, 0x87, 0x37, 0xCD, 0x85, 0x19, 0xBA, 0xC5, 0x32, 0x2F, 0xDB, 0x28, 0xF4, 0x4A, 0x43, 0xC5, - 0x09, 0xA5, 0x44, 0x7A, 0xD2, 0x68, 0x3B, 0xA1, 0x90, 0x05, 0xE3, 0x1B, 0x0D, 0x54, 0x8C, 0x6D }, - }, - { - { 0x37, 0x98, 0xB3, 0x35, 0x53, 0x40, 0xD2, 0x76, 0x2A, 0x02, 0x08, 0xF3, 0x47, 0x20, 0xD2, 0xA1, - 0x52, 0xEF, 0xA9, 0xE8, 0x96, 0x57, 0x18, 0xB8, 0x93, 0x06, 0xF6, 0x91, 0x33, 0x56, 0x32, 0xE9 }, - }, - { - { 0x37, 0x99, 0x0F, 0x5B, 0x5C, 0x71, 0x11, 0x89, 0x98, 0xF9, 0xC8, 0xE1, 0x54, 0x65, 0x69, 0x16, - 0x1A, 0x82, 0xBB, 0xFB, 0x4B, 0x4F, 0xC4, 0xCA, 0xA3, 0xF4, 0xB7, 0xE7, 0x4A, 0xF5, 0x15, 0xFE }, - }, - { - { 0x37, 0xC9, 0x7A, 0x48, 0xF5, 0xEE, 0x3E, 0x68, 0xCC, 0x24, 0xB5, 0x4E, 0x7C, 0x4D, 0x9F, 0x91, - 0xC7, 0xD1, 0x8B, 0x8D, 0xB6, 0x1E, 0x04, 0xEE, 0x64, 0x25, 0x1E, 0x75, 0xB0, 0xD1, 0x9F, 0xC5 }, - }, - { - { 0x37, 0xEC, 0xDB, 0x1E, 0x7A, 0xBA, 0x93, 0xBB, 0x83, 0xC8, 0xC4, 0xB7, 0xBB, 0xDE, 0xAF, 0xFF, - 0xB5, 0x95, 0xC7, 0x3C, 0xA4, 0x21, 0x88, 0xAA, 0xB5, 0x0F, 0x06, 0x27, 0xD3, 0xE1, 0x70, 0x18 }, - }, { { 0x38, 0x23, 0x4E, 0x55, 0x9D, 0x30, 0x27, 0xD1, 0x61, 0xDA, 0x8C, 0x98, 0x88, 0x04, 0x9A, 0x4D, 0x20, 0xAC, 0xF2, 0x00, 0x90, 0xAD, 0x1A, 0x22, 0x2B, 0x73, 0x9A, 0xC8, 0x6E, 0xB7, 0x6F, 0x06 }, }, - { - { 0x38, 0x68, 0xB9, 0x52, 0x53, 0xEF, 0xDB, 0x85, 0x46, 0x62, 0x00, 0xDD, 0xE5, 0x0B, 0x0D, 0x52, - 0xDA, 0x5A, 0x2B, 0x8A, 0x01, 0xB7, 0x26, 0xCE, 0xF6, 0xCE, 0x3B, 0x13, 0x7C, 0x80, 0x6C, 0x05 }, - }, { { 0x39, 0x02, 0x27, 0xCE, 0x88, 0x1C, 0x71, 0x8B, 0x59, 0xA6, 0xBC, 0x31, 0x90, 0xD5, 0x17, 0xE7, 0x1E, 0x1E, 0x58, 0x66, 0x93, 0xC8, 0xBF, 0x8A, 0x30, 0x27, 0x26, 0x20, 0x13, 0xFE, 0x16, 0x63 }, @@ -1200,10 +384,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x39, 0x21, 0x5C, 0xAA, 0x37, 0x1A, 0xBE, 0x57, 0x6A, 0xB9, 0x3B, 0x18, 0xC2, 0xF3, 0x75, 0x5E, 0xE2, 0x6F, 0x8C, 0x3A, 0xDB, 0x75, 0x9B, 0x6F, 0x34, 0x78, 0x9F, 0xB8, 0xEC, 0xF0, 0x54, 0x28 }, }, - { - { 0x39, 0x23, 0xD1, 0x9C, 0x31, 0x06, 0x03, 0xCD, 0xFD, 0x06, 0x23, 0x92, 0xD1, 0x76, 0xC0, 0xC6, - 0x92, 0x55, 0xEF, 0xFE, 0xE4, 0xEF, 0xF1, 0x09, 0x29, 0x1C, 0x03, 0xA2, 0x21, 0xBA, 0x91, 0xE2 }, - }, { { 0x39, 0x7B, 0xA8, 0x8A, 0x05, 0xDA, 0xFD, 0x7D, 0x58, 0xFA, 0xCF, 0x45, 0x60, 0xA6, 0x88, 0xAB, 0xEE, 0xD2, 0x13, 0xE0, 0xF8, 0x8C, 0x76, 0xB6, 0x2A, 0xB2, 0xFD, 0xE3, 0x67, 0xC3, 0x2D, 0x32 }, @@ -1212,42 +392,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x39, 0x7D, 0x00, 0x6E, 0xF8, 0xAF, 0xB2, 0x0F, 0x43, 0x61, 0xA6, 0xC9, 0x72, 0xF0, 0xC5, 0x7C, 0xC0, 0x87, 0x74, 0x01, 0x06, 0x12, 0x78, 0x3F, 0xBA, 0xBC, 0xB8, 0xD6, 0xF6, 0x03, 0x9E, 0x2C }, }, - { - { 0x39, 0x7D, 0x03, 0x62, 0xFA, 0xED, 0xE6, 0xFA, 0x94, 0x27, 0x4F, 0xFC, 0xF9, 0x8F, 0xF3, 0x52, - 0x55, 0x31, 0x58, 0x5D, 0x18, 0x33, 0xE0, 0x07, 0x3E, 0x5D, 0x20, 0x2D, 0xED, 0x62, 0x39, 0x55 }, - }, - { - { 0x39, 0xB1, 0x9F, 0x06, 0x65, 0xD6, 0x87, 0x8D, 0xD2, 0x5C, 0xA7, 0x30, 0x15, 0xBA, 0x0A, 0xE3, - 0xBD, 0xBA, 0x87, 0xDB, 0xCF, 0xAD, 0x38, 0x7A, 0x94, 0x52, 0x59, 0x4D, 0x73, 0x68, 0xEA, 0x85 }, - }, - { - { 0x39, 0xD7, 0x44, 0x77, 0x31, 0x72, 0x8B, 0xBA, 0x92, 0x36, 0x72, 0x7D, 0xBD, 0x7C, 0x7E, 0xE1, - 0x70, 0xE5, 0x9F, 0x3B, 0x53, 0x73, 0x79, 0x6D, 0x7D, 0xE1, 0xC6, 0xA2, 0xBE, 0x31, 0x22, 0x18 }, - }, - { - { 0x39, 0xDA, 0x1B, 0xE6, 0x56, 0x43, 0x55, 0x34, 0x6E, 0x46, 0x99, 0x66, 0x3C, 0x19, 0x95, 0x54, - 0x87, 0xA0, 0x88, 0x56, 0xFF, 0xBE, 0xEE, 0x74, 0x01, 0x67, 0x99, 0xC7, 0xA3, 0x4B, 0x48, 0xEE }, - }, - { - { 0x39, 0xFF, 0x6E, 0x31, 0x69, 0x9F, 0x5D, 0x68, 0x92, 0x97, 0x6D, 0x11, 0xDD, 0xBB, 0x14, 0x24, - 0xED, 0x0C, 0xEC, 0x48, 0x36, 0x3E, 0x94, 0xEA, 0xE3, 0xCD, 0x5F, 0x4C, 0xAF, 0x1C, 0xBD, 0x2F }, - }, - { - { 0x3A, 0x02, 0xEA, 0xD6, 0x33, 0x22, 0x6E, 0x1E, 0x45, 0x3A, 0x58, 0x50, 0xAE, 0x4D, 0x7C, 0x8D, - 0x3E, 0x0C, 0x25, 0xA4, 0xC9, 0x5C, 0x1E, 0x2D, 0xFB, 0xB7, 0xFF, 0xEB, 0x27, 0xE3, 0x64, 0x7A }, - }, - { - { 0x3A, 0x1F, 0xF2, 0x01, 0x71, 0x88, 0x3F, 0x4E, 0x9B, 0xA9, 0x96, 0x68, 0x79, 0x04, 0xCD, 0xDB, - 0x7A, 0x25, 0xAA, 0x35, 0xB0, 0xAD, 0x8E, 0xA8, 0x78, 0xFB, 0x88, 0x6D, 0xD8, 0xCF, 0x93, 0xCF }, - }, - { - { 0x3A, 0x2D, 0x31, 0x0F, 0x13, 0x05, 0xB4, 0xEB, 0x9D, 0x10, 0x3A, 0xA2, 0x9D, 0x47, 0x86, 0xF7, - 0xDF, 0x41, 0xD8, 0x5D, 0x56, 0xEB, 0xC9, 0x8C, 0x3C, 0xAA, 0xDD, 0x4B, 0xAA, 0x3D, 0x57, 0xF9 }, - }, - { - { 0x3A, 0xB9, 0x0F, 0xFD, 0x22, 0x10, 0xEB, 0x89, 0x9C, 0x6F, 0xB7, 0xFD, 0x26, 0x8D, 0xE0, 0x0B, - 0x00, 0x9F, 0x50, 0xE8, 0x18, 0x70, 0xA2, 0x20, 0xFF, 0xAE, 0xA2, 0x4E, 0x41, 0x76, 0xDE, 0x45 }, - }, { { 0x3A, 0xCF, 0x85, 0x3C, 0x4E, 0x45, 0x02, 0xBD, 0x82, 0xD5, 0x85, 0xD5, 0xE0, 0x82, 0xC4, 0xB3, 0xAD, 0x03, 0xCD, 0xB6, 0xB5, 0x05, 0xCA, 0x80, 0x47, 0x19, 0x88, 0xEC, 0x4C, 0x58, 0x99, 0x9E }, @@ -1260,18 +404,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x3B, 0x47, 0x85, 0x0B, 0xF8, 0x4C, 0x4C, 0xF2, 0xCA, 0x6C, 0x31, 0xB3, 0x78, 0x39, 0xC9, 0x50, 0x76, 0x63, 0x70, 0xD7, 0xF4, 0xB6, 0x4A, 0xD0, 0x18, 0x55, 0xCA, 0xCF, 0xE3, 0x51, 0x2F, 0xC3 }, }, - { - { 0x3B, 0x4A, 0x9F, 0x55, 0x6C, 0xCA, 0xC7, 0x0C, 0xA1, 0xF3, 0x3A, 0xF6, 0xDE, 0xCC, 0x66, 0xCA, - 0xFD, 0x2D, 0x30, 0x1D, 0x49, 0x7B, 0x49, 0x0B, 0x30, 0x80, 0x46, 0x35, 0xBA, 0xD2, 0x56, 0x94 }, - }, { { 0x3B, 0x6E, 0x3B, 0xB7, 0x00, 0x04, 0xBD, 0x78, 0xC9, 0x69, 0xA7, 0xFB, 0xD5, 0x11, 0x33, 0xA2, 0xB3, 0xC4, 0xDF, 0xB6, 0xBA, 0x38, 0x5D, 0xCE, 0x3F, 0xB8, 0x4D, 0x73, 0x6B, 0xEA, 0xB1, 0xD9 }, }, - { - { 0x3B, 0x93, 0xAC, 0x19, 0x6E, 0xC6, 0x7B, 0xF2, 0x78, 0x7F, 0x42, 0x40, 0xC0, 0xD1, 0x11, 0x37, - 0xEF, 0x79, 0xA4, 0xED, 0x1F, 0x5D, 0x1F, 0x3D, 0x04, 0x24, 0x1F, 0x03, 0xDC, 0x2D, 0xA3, 0x70 }, - }, { { 0x3B, 0xAA, 0x31, 0x31, 0x70, 0x68, 0xAC, 0xE0, 0x89, 0xAE, 0xB4, 0xA8, 0x8D, 0x7E, 0xDE, 0xBE, 0x94, 0xAB, 0x4A, 0xCE, 0x46, 0xBB, 0xD2, 0x68, 0x3E, 0x3F, 0xDF, 0xF5, 0x59, 0x30, 0x0F, 0x93 }, @@ -1280,54 +416,14 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x3C, 0x38, 0x36, 0x2E, 0x16, 0x8B, 0xB4, 0xA7, 0x59, 0xC4, 0x80, 0x55, 0x1C, 0xB1, 0x65, 0x6F, 0x6A, 0x96, 0x8B, 0x9B, 0x43, 0xCB, 0xE0, 0xD7, 0x39, 0x75, 0x4A, 0xB7, 0x8A, 0x28, 0x87, 0x0E }, }, - { - { 0x3C, 0xE3, 0xF1, 0x9C, 0x03, 0xB3, 0x44, 0x00, 0x75, 0x6F, 0x64, 0x18, 0xE0, 0x12, 0xE9, 0x42, - 0x26, 0x5C, 0x27, 0x11, 0x98, 0x43, 0xFE, 0x0F, 0x44, 0x34, 0x5B, 0x94, 0xC1, 0xB0, 0x6C, 0xEF }, - }, { { 0x3D, 0x14, 0x47, 0x2D, 0xCE, 0x4A, 0xFD, 0xC2, 0x27, 0x6C, 0x81, 0x47, 0x97, 0xC7, 0xBC, 0x7A, 0x6C, 0x14, 0xF7, 0x95, 0x3E, 0x7E, 0x9F, 0xEA, 0x69, 0x51, 0x04, 0x0F, 0x2D, 0xAF, 0xBE, 0x9A }, }, - { - { 0x3D, 0x45, 0xBF, 0x0F, 0x64, 0x9B, 0xF5, 0xD1, 0xF8, 0x91, 0x85, 0x31, 0xA7, 0x7C, 0xF9, 0xBF, - 0x5C, 0xA1, 0x85, 0x0C, 0x82, 0x02, 0x69, 0xD7, 0xB2, 0xC8, 0xEC, 0xD0, 0x54, 0x3A, 0x61, 0x65 }, - }, - { - { 0x3D, 0x77, 0xB1, 0xCC, 0x1C, 0x46, 0xF8, 0x58, 0x03, 0x50, 0x53, 0x33, 0xCA, 0x8D, 0xE4, 0x77, - 0x71, 0xDD, 0xE8, 0x94, 0x4A, 0x51, 0x4E, 0xF4, 0x47, 0x08, 0xBF, 0x0E, 0xA6, 0x27, 0x58, 0x50 }, - }, - { - { 0x3D, 0xC7, 0xB5, 0x72, 0xD3, 0xEE, 0xCE, 0xFD, 0x48, 0x07, 0x16, 0x30, 0x9D, 0x2E, 0xC9, 0x24, - 0x8D, 0x4D, 0x5D, 0xD1, 0xD8, 0x4F, 0xDB, 0x3E, 0x70, 0x1B, 0x58, 0x2E, 0x72, 0xB2, 0xDF, 0xE0 }, - }, - { - { 0x3D, 0xE9, 0xE2, 0xFF, 0xBA, 0x92, 0xFC, 0x57, 0xB7, 0x96, 0x4E, 0xE0, 0x59, 0xA3, 0x38, 0x37, - 0x96, 0x37, 0x4E, 0xD8, 0x0D, 0xBE, 0x7F, 0x67, 0x7E, 0xDE, 0x79, 0x98, 0x11, 0xE7, 0xAC, 0x16 }, - }, - { - { 0x3E, 0x6F, 0x37, 0x53, 0xF1, 0xAB, 0x10, 0x62, 0x60, 0xDB, 0xEF, 0xA6, 0x8E, 0xC5, 0x85, 0x01, - 0x29, 0x1D, 0x1E, 0xB4, 0x00, 0x28, 0x8F, 0x06, 0xED, 0xF2, 0x9F, 0x8F, 0x8F, 0x66, 0xB0, 0x1A }, - }, { { 0x3E, 0x8E, 0x9B, 0xAD, 0x8E, 0xD9, 0xB5, 0x72, 0x38, 0x2E, 0x59, 0x8D, 0x2D, 0x73, 0x67, 0xE1, 0xFD, 0x6A, 0xF6, 0x95, 0x25, 0x00, 0x9D, 0x67, 0xB4, 0xE8, 0xAF, 0x80, 0xD9, 0x15, 0x85, 0x49 }, }, - { - { 0x3E, 0xC1, 0xC3, 0x43, 0xC6, 0x60, 0x05, 0x10, 0x57, 0x97, 0x47, 0xA7, 0x1A, 0xEA, 0xB3, 0x04, - 0x1A, 0x71, 0x8E, 0x4F, 0xC6, 0xE2, 0x96, 0xFE, 0xB7, 0x50, 0xA3, 0x12, 0x38, 0x72, 0x6E, 0xA5 }, - }, - { - { 0x3E, 0xD6, 0x85, 0x47, 0x65, 0x07, 0x91, 0x35, 0xAA, 0xEE, 0xB7, 0xD8, 0xA3, 0x79, 0x17, 0xDC, - 0x71, 0x74, 0x5E, 0xA6, 0x0F, 0xA9, 0x62, 0x1B, 0xAA, 0x30, 0x7F, 0xBE, 0x71, 0xA7, 0x3C, 0x43 }, - }, - { - { 0x3F, 0x08, 0x40, 0x27, 0x4E, 0x66, 0x15, 0x90, 0xC1, 0x46, 0x75, 0x96, 0x0F, 0xCC, 0x42, 0x06, - 0x95, 0x36, 0x58, 0x6F, 0x07, 0x60, 0x92, 0x48, 0x76, 0x24, 0x0F, 0x09, 0x04, 0x31, 0x78, 0x91 }, - }, - { - { 0x3F, 0x1B, 0x41, 0x14, 0xF9, 0x89, 0xE8, 0x56, 0x8F, 0x1B, 0x04, 0x53, 0x46, 0x5C, 0x11, 0x3F, - 0x32, 0xC3, 0x85, 0x10, 0xF5, 0x81, 0x77, 0x01, 0x81, 0x3D, 0x69, 0x3E, 0xF1, 0xA6, 0x8F, 0xCB }, - }, { { 0x3F, 0x27, 0xBD, 0xCA, 0x9B, 0x0E, 0x42, 0xF3, 0xF6, 0xD0, 0x91, 0x2C, 0x92, 0xE2, 0xDA, 0x65, 0xCB, 0x35, 0x8F, 0x0B, 0x8F, 0x80, 0x5B, 0xEC, 0x5D, 0xE9, 0x32, 0x51, 0xD9, 0xC4, 0xB1, 0x99 }, @@ -1336,46 +432,18 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x3F, 0x2E, 0xA6, 0x4E, 0xFB, 0xD6, 0xBF, 0xC4, 0x0A, 0xF0, 0xAD, 0x46, 0xA4, 0xA2, 0x57, 0x84, 0x19, 0xD8, 0x68, 0x6E, 0x38, 0x98, 0x8B, 0x91, 0x47, 0x01, 0x8C, 0x36, 0x29, 0x31, 0xE4, 0xF9 }, }, - { - { 0x3F, 0x3F, 0x08, 0x2F, 0xAB, 0x0C, 0xBD, 0x83, 0x16, 0xEA, 0x9D, 0xC1, 0xC7, 0x7E, 0xC6, 0x4C, - 0x32, 0x4D, 0x9C, 0x3D, 0x86, 0x08, 0xC7, 0x79, 0x56, 0xF1, 0x27, 0xA9, 0xB8, 0xF4, 0x9C, 0x46 }, - }, { { 0x3F, 0x4F, 0x28, 0x8B, 0xAF, 0x5B, 0xDE, 0x86, 0x72, 0xD6, 0xAD, 0xD1, 0x50, 0xE3, 0x23, 0x79, 0x49, 0x9A, 0x16, 0xC5, 0x81, 0xFB, 0x77, 0x37, 0xEC, 0x49, 0x80, 0xE4, 0xF9, 0xC3, 0x3D, 0x4D }, }, - { - { 0x3F, 0x5C, 0xFC, 0xAB, 0x44, 0x1A, 0x30, 0xD8, 0xF0, 0x1A, 0xC1, 0xAE, 0x9E, 0x08, 0xA2, 0xDB, - 0x70, 0xC4, 0xC1, 0x6D, 0xED, 0x03, 0xA4, 0x21, 0xD4, 0x1B, 0x8F, 0x42, 0xD5, 0xC1, 0x89, 0x6E }, - }, { { 0x3F, 0x92, 0x54, 0x89, 0x64, 0xCC, 0xDE, 0xFB, 0x29, 0x96, 0x5A, 0x27, 0xC1, 0x6C, 0x2F, 0xED, 0x28, 0xD9, 0xB9, 0x14, 0x0E, 0x4F, 0xB5, 0x5B, 0x37, 0x22, 0x4C, 0x67, 0xB2, 0xA0, 0x55, 0x1F }, }, - { - { 0x3F, 0x93, 0x0A, 0x4E, 0xE4, 0x43, 0x8B, 0x20, 0xD0, 0x3B, 0xD6, 0x25, 0x6E, 0x18, 0xE1, 0x3D, - 0xB2, 0x45, 0x0E, 0x59, 0x38, 0xF9, 0x81, 0xA8, 0xC4, 0x19, 0x0D, 0x56, 0xF0, 0xD8, 0xAC, 0x88 }, - }, - { - { 0x3F, 0xB6, 0xC4, 0x03, 0x19, 0x63, 0xB9, 0x67, 0x28, 0xBF, 0x93, 0x8D, 0x9B, 0x59, 0xC9, 0x05, - 0x43, 0xA9, 0xA6, 0x3E, 0xA3, 0x9C, 0xD2, 0x76, 0x14, 0xF2, 0x41, 0x28, 0xA9, 0x64, 0xEF, 0x84 }, - }, - { - { 0x3F, 0xD9, 0x29, 0x81, 0x1E, 0x0A, 0x80, 0xA3, 0xF4, 0xCD, 0xA3, 0x50, 0x2E, 0x1C, 0x20, 0x29, - 0xA7, 0xA3, 0xC1, 0x61, 0x06, 0x95, 0x5D, 0x3D, 0x93, 0x16, 0x71, 0x15, 0xFE, 0x7B, 0xC6, 0xE2 }, - }, { { 0x40, 0x58, 0xEC, 0x4A, 0x7A, 0x7B, 0xA0, 0xB8, 0x65, 0xA7, 0x39, 0xA0, 0x0C, 0x85, 0xF3, 0x44, 0x58, 0x79, 0xD6, 0x5E, 0x1D, 0x42, 0x2E, 0xED, 0x07, 0x65, 0x5A, 0x8E, 0x3E, 0xC3, 0x18, 0xCF }, }, - { - { 0x40, 0x89, 0x12, 0x59, 0x8B, 0x4D, 0x99, 0x69, 0x1D, 0x46, 0xDC, 0x3C, 0x06, 0x19, 0x82, 0xB9, - 0x48, 0x74, 0x3F, 0x0C, 0x0D, 0x26, 0xFF, 0x38, 0x50, 0xA3, 0xCA, 0x6B, 0x78, 0x97, 0x91, 0x5E }, - }, - { - { 0x41, 0x1E, 0x5A, 0x18, 0x2A, 0x48, 0x3C, 0x67, 0x0F, 0x89, 0xAC, 0xEE, 0xA6, 0xDA, 0xA1, 0xF9, - 0xA6, 0x22, 0x7E, 0xDF, 0x04, 0x9C, 0x05, 0xE3, 0xC4, 0xCF, 0xF7, 0x28, 0x42, 0x45, 0x9A, 0xA2 }, - }, { { 0x41, 0x29, 0x6B, 0x9F, 0xAA, 0xD6, 0x41, 0x33, 0xFC, 0xCB, 0xA6, 0xBA, 0x74, 0x54, 0x11, 0xEC, 0xC9, 0x11, 0xFD, 0x8E, 0xD5, 0x41, 0x90, 0x0F, 0x9E, 0x20, 0x36, 0x08, 0xEE, 0xA3, 0x59, 0x2D }, @@ -1388,4201 +456,1129 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0x41, 0xA6, 0x8D, 0xFD, 0x90, 0xDA, 0x6D, 0x12, 0x09, 0x84, 0x85, 0xBF, 0x6F, 0x87, 0x24, 0x5F, 0x4E, 0xC0, 0x54, 0x71, 0xDA, 0x59, 0xD0, 0x81, 0x06, 0x01, 0x53, 0xA2, 0x22, 0x25, 0x23, 0x7F }, }, - { - { 0x41, 0xAB, 0x57, 0x74, 0x49, 0xA7, 0x50, 0xEF, 0x45, 0x0D, 0x86, 0x4D, 0xB0, 0x6B, 0x7C, 0xBA, - 0x1F, 0x63, 0xE1, 0x1D, 0x1D, 0x86, 0xB7, 0x8C, 0x70, 0x5B, 0xB4, 0x27, 0x34, 0xF5, 0x05, 0x2D }, - }, { { 0x42, 0x08, 0x71, 0xD8, 0xAC, 0x49, 0x3C, 0xF9, 0x46, 0x8B, 0xB3, 0x76, 0x97, 0x6D, 0x65, 0x5E, 0xF0, 0xAF, 0xAA, 0xC2, 0x3D, 0x77, 0x00, 0x92, 0x20, 0xC3, 0xAF, 0x8B, 0xDD, 0x37, 0x5A, 0x24 }, }, - { - { 0x42, 0x53, 0xEB, 0x35, 0x06, 0x2F, 0x32, 0x3B, 0x82, 0xDE, 0xD0, 0x0D, 0x53, 0x83, 0x18, 0x06, - 0x7F, 0xE0, 0xDF, 0x41, 0x2B, 0xC9, 0x20, 0x77, 0x92, 0x5B, 0x76, 0x92, 0xCC, 0xCB, 0x27, 0x29 }, - }, { { 0x42, 0x5D, 0x4E, 0xBF, 0x1B, 0xDE, 0x0B, 0xF8, 0xD1, 0xDB, 0xD3, 0x3D, 0x8D, 0x16, 0x34, 0xC4, 0xFA, 0xFE, 0xB6, 0xF8, 0x05, 0xF1, 0xCC, 0xB5, 0x34, 0xAC, 0xB7, 0x2A, 0xED, 0xA2, 0xCD, 0x0A }, }, { - { 0x42, 0x7B, 0x6D, 0x3D, 0x1F, 0x9E, 0xF7, 0x34, 0xC7, 0x3B, 0x89, 0x23, 0xD0, 0xE0, 0x9A, 0x7C, - 0xB2, 0xD4, 0x7C, 0x78, 0xE0, 0x26, 0x2B, 0x4E, 0x71, 0x32, 0xB4, 0xB8, 0xF0, 0xF7, 0xFB, 0x40 }, + { 0x44, 0x12, 0x63, 0x80, 0xA0, 0x73, 0xFE, 0xA1, 0xA2, 0x00, 0x4F, 0x71, 0x1D, 0xF2, 0xCA, 0x47, + 0xC2, 0xC4, 0xB4, 0xFF, 0x64, 0x4E, 0x76, 0xAF, 0xBE, 0x27, 0x97, 0xC9, 0x63, 0x7C, 0x6A, 0xF9 }, }, { - { 0x42, 0xB0, 0x75, 0xEB, 0xF9, 0xFF, 0x9D, 0x6F, 0xCD, 0xF1, 0xBA, 0x60, 0x80, 0x72, 0x8D, 0x21, - 0xC9, 0xCD, 0x6F, 0xBA, 0xA5, 0x45, 0xDA, 0x03, 0x6C, 0xC6, 0x59, 0xCF, 0x90, 0x5F, 0xB3, 0x0C }, + { 0x44, 0x25, 0xDD, 0xFB, 0xBA, 0xFB, 0xE1, 0xAA, 0xCE, 0x25, 0x85, 0x70, 0x48, 0x96, 0x9D, 0xC8, + 0x9D, 0xF5, 0x97, 0x7B, 0xB2, 0xE3, 0x34, 0x7C, 0x9C, 0xEB, 0x0E, 0x5A, 0x7B, 0x68, 0xC5, 0x31 }, }, { - { 0x43, 0x05, 0xD8, 0x7B, 0xE4, 0xB6, 0xCF, 0x63, 0xA5, 0x00, 0xEE, 0x4B, 0x8D, 0x09, 0x4F, 0x02, - 0x40, 0xAF, 0x3B, 0x0E, 0x9B, 0xF5, 0x9B, 0xB9, 0xAC, 0x20, 0x32, 0xEE, 0xB9, 0x1D, 0x23, 0xDF }, + { 0x45, 0x63, 0xCF, 0x13, 0xC2, 0x49, 0x2C, 0xAA, 0x92, 0xF5, 0x5B, 0x17, 0x26, 0x3A, 0xDD, 0x72, + 0x04, 0xA8, 0x0F, 0xE6, 0x24, 0x0C, 0x4D, 0x63, 0xE8, 0x39, 0x59, 0x58, 0xF6, 0x94, 0xCD, 0x33 }, }, { - { 0x43, 0x09, 0x9D, 0xB4, 0xCF, 0x34, 0x1D, 0x41, 0x3E, 0xCC, 0xEE, 0xFC, 0xAF, 0xCD, 0x58, 0xE7, - 0xE3, 0xB7, 0x77, 0xCF, 0x72, 0x80, 0xF3, 0x23, 0xF4, 0x72, 0x08, 0x61, 0x04, 0x9F, 0x55, 0xFE }, + { 0x45, 0xCB, 0x86, 0xCA, 0x97, 0x52, 0x29, 0xB7, 0xD5, 0xDA, 0xFC, 0x05, 0xEB, 0x0C, 0x53, 0x65, + 0x82, 0x3A, 0x91, 0xA9, 0x8B, 0x7D, 0xBE, 0x81, 0xAB, 0x5F, 0x17, 0x8B, 0x2D, 0xA4, 0xAD, 0x9E }, }, { - { 0x43, 0x13, 0x91, 0xE1, 0x14, 0x14, 0xEC, 0x0C, 0x5C, 0xF5, 0xE7, 0xB3, 0x9C, 0x65, 0xFE, 0xDB, - 0x2E, 0xC8, 0x8C, 0x54, 0x48, 0xBF, 0x35, 0xEE, 0x17, 0x0D, 0xC3, 0xB5, 0xE1, 0x7E, 0xD0, 0x88 }, + { 0x46, 0x9B, 0xD8, 0x04, 0xE9, 0x98, 0xAE, 0x27, 0x9A, 0xC3, 0xFE, 0x1B, 0x52, 0x88, 0x46, 0xE7, + 0xAE, 0xC7, 0x6C, 0x56, 0xB8, 0x0B, 0x40, 0xF3, 0x24, 0x20, 0x8F, 0x5A, 0x9F, 0x64, 0x5C, 0xB5 }, }, { - { 0x43, 0x30, 0xEB, 0xAF, 0x74, 0xBD, 0xD4, 0x36, 0x56, 0xA7, 0x2B, 0x3F, 0xAB, 0x4D, 0x66, 0xDF, - 0x0B, 0x45, 0xCA, 0xB4, 0x93, 0x7D, 0x01, 0xBE, 0xB8, 0xDE, 0x9B, 0x0F, 0x2F, 0xDA, 0xAE, 0xAD }, + { 0x46, 0xCD, 0x08, 0x08, 0x8D, 0x36, 0x06, 0x2C, 0x56, 0x71, 0x09, 0x2C, 0x02, 0x76, 0x7A, 0x25, + 0x0D, 0xE7, 0x0B, 0xF3, 0xE1, 0x53, 0x63, 0x69, 0x66, 0xE6, 0x6E, 0xC5, 0x7E, 0x8E, 0xE9, 0xF5 }, }, { - { 0x43, 0x71, 0x9B, 0x00, 0xB1, 0xEB, 0xBE, 0x02, 0xD2, 0x57, 0x72, 0xE8, 0x41, 0x22, 0x1E, 0xC7, - 0x53, 0x00, 0x02, 0x0B, 0x75, 0x8D, 0xEC, 0x19, 0xD4, 0x2E, 0x33, 0x8E, 0x92, 0xBA, 0x49, 0x4C }, + { 0x47, 0x84, 0xF6, 0xCD, 0x59, 0x3D, 0x7B, 0x31, 0x2E, 0xB1, 0xF6, 0x19, 0xE1, 0x11, 0xDF, 0x3B, + 0x48, 0x6D, 0x1B, 0xF8, 0x37, 0x15, 0xAD, 0x8D, 0xAB, 0xA5, 0x72, 0xAF, 0xB2, 0x61, 0xD5, 0xBE }, }, { - { 0x43, 0x9D, 0x38, 0x5E, 0x8B, 0x11, 0x68, 0x0E, 0x0F, 0xB7, 0x4F, 0x78, 0xA9, 0x74, 0xBD, 0x64, - 0x6D, 0xDE, 0xB5, 0x4E, 0x06, 0x71, 0x42, 0x25, 0x97, 0xB2, 0xFA, 0x88, 0x5D, 0x05, 0x59, 0x28 }, + { 0x48, 0xC5, 0xD4, 0xFF, 0x5D, 0x08, 0x4A, 0xC1, 0x95, 0xB1, 0xA6, 0xA2, 0x19, 0xF8, 0x1B, 0xBD, + 0xF9, 0xD2, 0xE5, 0xC0, 0x70, 0xEC, 0x97, 0xDF, 0x3C, 0xB0, 0xB7, 0x3E, 0xF4, 0x70, 0xDC, 0xE9 }, }, { - { 0x44, 0x12, 0x63, 0x80, 0xA0, 0x73, 0xFE, 0xA1, 0xA2, 0x00, 0x4F, 0x71, 0x1D, 0xF2, 0xCA, 0x47, - 0xC2, 0xC4, 0xB4, 0xFF, 0x64, 0x4E, 0x76, 0xAF, 0xBE, 0x27, 0x97, 0xC9, 0x63, 0x7C, 0x6A, 0xF9 }, + { 0x49, 0xDC, 0xF8, 0xFA, 0x68, 0xE9, 0x2B, 0x5C, 0x21, 0xFE, 0xF9, 0x3D, 0x26, 0x0C, 0x24, 0x8C, + 0xE3, 0xBE, 0x98, 0x62, 0x68, 0x68, 0xE7, 0x5A, 0x3F, 0x63, 0x34, 0xBB, 0x7D, 0xC1, 0x81, 0xEC }, }, { - { 0x44, 0x25, 0xDD, 0xFB, 0xBA, 0xFB, 0xE1, 0xAA, 0xCE, 0x25, 0x85, 0x70, 0x48, 0x96, 0x9D, 0xC8, - 0x9D, 0xF5, 0x97, 0x7B, 0xB2, 0xE3, 0x34, 0x7C, 0x9C, 0xEB, 0x0E, 0x5A, 0x7B, 0x68, 0xC5, 0x31 }, + { 0x4B, 0x1F, 0xC8, 0x2D, 0x24, 0x72, 0x92, 0x7A, 0xC1, 0x7C, 0x58, 0x43, 0x07, 0xCB, 0x96, 0xD6, + 0xFD, 0xDB, 0x8D, 0x50, 0xA5, 0x29, 0x53, 0x07, 0xD3, 0x0C, 0x75, 0x88, 0x59, 0x6A, 0xD4, 0x0B }, }, { - { 0x44, 0x5C, 0x03, 0x3A, 0x43, 0xC2, 0x23, 0x38, 0x8E, 0x1C, 0x54, 0x26, 0x92, 0xAB, 0xE5, 0x7D, - 0x27, 0xC3, 0x35, 0x6E, 0x40, 0x95, 0x0F, 0x1D, 0xBA, 0x03, 0x91, 0xAD, 0xC9, 0x1B, 0x10, 0xC8 }, + { 0x4B, 0x35, 0x02, 0xFF, 0xAD, 0x64, 0x16, 0x39, 0x4F, 0x2F, 0x78, 0x47, 0x76, 0x13, 0x39, 0x69, + 0xA5, 0x5C, 0xA8, 0xF3, 0x9F, 0x78, 0x3C, 0x26, 0x0F, 0xFE, 0xDB, 0xA8, 0xFC, 0xE4, 0x19, 0x70 }, }, { - { 0x44, 0xA0, 0x6E, 0xB4, 0x9A, 0x72, 0xBC, 0xA4, 0x4A, 0x58, 0x1F, 0x4F, 0x10, 0x91, 0xAB, 0xEF, - 0x33, 0x2D, 0x8A, 0x7C, 0xEF, 0x60, 0xE6, 0x8D, 0xAF, 0x84, 0x13, 0x23, 0x26, 0x12, 0x90, 0xF0 }, + { 0x4B, 0x51, 0xFC, 0x11, 0x4B, 0xAC, 0x8E, 0x2D, 0x2A, 0xF2, 0xAE, 0x56, 0x84, 0x42, 0x9C, 0xCA, + 0xAB, 0x21, 0x39, 0xC9, 0xB3, 0x51, 0xBF, 0x7E, 0x1B, 0x03, 0x0A, 0xE8, 0x62, 0x4A, 0xC1, 0x72 }, }, { - { 0x44, 0xC2, 0x00, 0x2E, 0xEA, 0xBE, 0x55, 0xAA, 0x9B, 0xF9, 0x7C, 0xF3, 0xEF, 0xD4, 0xFB, 0x06, - 0xEC, 0xE5, 0x10, 0xB4, 0xAB, 0xE9, 0xAC, 0xB8, 0x2C, 0x36, 0xEF, 0x23, 0x5B, 0x9D, 0xC8, 0xA1 }, + { 0x4C, 0xD0, 0xD6, 0x7E, 0xCC, 0x3B, 0x01, 0xC8, 0xC2, 0x63, 0x4E, 0x7A, 0x73, 0x76, 0x12, 0xF6, + 0x3A, 0x17, 0xFF, 0x51, 0x0A, 0x77, 0xA8, 0x04, 0xBB, 0x33, 0x1B, 0x2B, 0xE5, 0x8D, 0xFE, 0x0C }, }, { - { 0x44, 0xEB, 0x83, 0xC7, 0xEB, 0xD4, 0x1D, 0x2C, 0x09, 0x67, 0x45, 0xFA, 0x9D, 0x7B, 0x3B, 0xC9, - 0x4D, 0xA5, 0x61, 0x82, 0x92, 0xB7, 0x0E, 0x3A, 0xB2, 0x50, 0xE3, 0x83, 0x53, 0x98, 0xC6, 0x7C }, + { 0x4D, 0xCF, 0xEB, 0xDC, 0x15, 0x4B, 0x0C, 0x85, 0x46, 0x7F, 0x6F, 0x52, 0xAD, 0x80, 0x4E, 0x19, + 0x1D, 0x5B, 0xC8, 0x13, 0x51, 0x72, 0x0E, 0xC0, 0xD1, 0x9B, 0xD2, 0x5B, 0xF8, 0xF0, 0xA5, 0x53 }, }, { - { 0x45, 0x3E, 0x22, 0x73, 0x3C, 0xBF, 0xBD, 0xAC, 0x2F, 0xFD, 0x38, 0x74, 0x3D, 0x54, 0xB8, 0x88, - 0xD0, 0x8F, 0x9C, 0x44, 0xBB, 0x59, 0xDC, 0x55, 0x0D, 0xF0, 0x25, 0xC2, 0xA0, 0x0E, 0x4D, 0x3B }, + { 0x4F, 0x19, 0xDD, 0x12, 0x92, 0x4C, 0xE0, 0xC1, 0x4F, 0x82, 0xC0, 0x56, 0xC7, 0xD4, 0x2B, 0xAC, + 0x43, 0xD0, 0x13, 0x3A, 0xAF, 0x89, 0xC1, 0xEF, 0xDC, 0xFA, 0x3C, 0x3E, 0x47, 0x09, 0x7D, 0x59 }, }, { - { 0x45, 0x60, 0xDB, 0xDB, 0x1C, 0x43, 0x68, 0x50, 0xEF, 0xB0, 0x03, 0x1E, 0xF8, 0x2B, 0x9F, 0x70, - 0x88, 0x21, 0x9E, 0xCE, 0xD2, 0x69, 0x56, 0x1F, 0xB4, 0xD1, 0xB0, 0x18, 0x3C, 0x44, 0xC2, 0xB5 }, + { 0x4F, 0xFB, 0x59, 0x19, 0xBC, 0x38, 0x5C, 0x8C, 0x58, 0xE4, 0x62, 0xBF, 0x13, 0x22, 0x10, 0xD8, + 0xB7, 0x86, 0x12, 0xD0, 0xC2, 0x2A, 0x6B, 0x6A, 0x68, 0x2E, 0x0B, 0x9E, 0x9C, 0x9F, 0x9A, 0x44 }, }, { - { 0x45, 0x63, 0xCF, 0x13, 0xC2, 0x49, 0x2C, 0xAA, 0x92, 0xF5, 0x5B, 0x17, 0x26, 0x3A, 0xDD, 0x72, - 0x04, 0xA8, 0x0F, 0xE6, 0x24, 0x0C, 0x4D, 0x63, 0xE8, 0x39, 0x59, 0x58, 0xF6, 0x94, 0xCD, 0x33 }, + { 0x50, 0xF4, 0x78, 0x1E, 0xB1, 0xC1, 0x46, 0x70, 0xD9, 0xA5, 0x52, 0xC3, 0x49, 0x5F, 0xB9, 0xF6, + 0xAE, 0x86, 0x8A, 0xB1, 0xC9, 0xD9, 0x83, 0xE0, 0x82, 0x68, 0x65, 0xA1, 0x02, 0xEC, 0xA6, 0xD3 }, }, { - { 0x45, 0x86, 0xDA, 0x12, 0xA9, 0x43, 0xE6, 0x33, 0xD0, 0xD4, 0x43, 0x91, 0x85, 0x44, 0x39, 0x57, - 0x25, 0x58, 0x7F, 0x0A, 0xA8, 0x41, 0xCA, 0xFD, 0xC6, 0xC8, 0x5D, 0x26, 0x1D, 0x3C, 0xD6, 0x79 }, + { 0x51, 0x6A, 0x2F, 0x33, 0x60, 0xC7, 0x6F, 0xC4, 0x6A, 0xB2, 0x88, 0x7F, 0x88, 0xE8, 0xD0, 0x8E, + 0xFB, 0xD8, 0x44, 0x5A, 0xA7, 0xBB, 0xD2, 0x29, 0xDF, 0xC7, 0x1A, 0x90, 0x4F, 0x55, 0xAE, 0xB4 }, }, { - { 0x45, 0xA7, 0x1A, 0x5C, 0xC4, 0x37, 0xDF, 0x07, 0xE3, 0x86, 0x55, 0x43, 0x6D, 0x96, 0xD8, 0x49, - 0x66, 0xE4, 0x83, 0x9D, 0x37, 0xAD, 0xCC, 0xE9, 0xE9, 0xB2, 0x2B, 0x6E, 0xCB, 0x48, 0x92, 0x8E }, + { 0x52, 0x1F, 0x6C, 0x6A, 0x84, 0x36, 0x65, 0x79, 0xCA, 0x2D, 0xEA, 0xEB, 0x23, 0x15, 0xBF, 0x8E, + 0x53, 0x1C, 0x9F, 0xA4, 0x7B, 0x89, 0x9D, 0xA2, 0x72, 0x16, 0xA9, 0x98, 0x82, 0x86, 0xAF, 0xE5 }, }, { - { 0x45, 0xCB, 0x86, 0xCA, 0x97, 0x52, 0x29, 0xB7, 0xD5, 0xDA, 0xFC, 0x05, 0xEB, 0x0C, 0x53, 0x65, - 0x82, 0x3A, 0x91, 0xA9, 0x8B, 0x7D, 0xBE, 0x81, 0xAB, 0x5F, 0x17, 0x8B, 0x2D, 0xA4, 0xAD, 0x9E }, + { 0x52, 0xFF, 0x8B, 0x6E, 0x98, 0xB0, 0x96, 0x19, 0x90, 0x03, 0xDE, 0x97, 0xBC, 0xCF, 0xD2, 0xA7, + 0xF1, 0xAC, 0x57, 0xA8, 0x31, 0x35, 0xB9, 0x55, 0xFF, 0x68, 0x63, 0x36, 0xA6, 0x91, 0xD5, 0xCA }, }, { - { 0x45, 0xCC, 0x74, 0xA3, 0xDB, 0xCB, 0x59, 0xA1, 0x35, 0x35, 0x39, 0xFA, 0x5B, 0x1A, 0xF9, 0x74, - 0x6B, 0xA5, 0xC7, 0xF0, 0xF1, 0x6F, 0x7C, 0xC1, 0xF7, 0x0C, 0x71, 0x32, 0x38, 0x82, 0x7E, 0x37 }, + { 0x53, 0x79, 0x64, 0x58, 0xDA, 0x97, 0xCE, 0x36, 0x78, 0xF2, 0xD1, 0xD9, 0xB2, 0xA5, 0xB2, 0xFB, + 0x30, 0x75, 0xEA, 0xFA, 0xF6, 0xFF, 0x04, 0x78, 0xB5, 0x72, 0xDD, 0xFD, 0x70, 0x99, 0xAE, 0xE2 }, }, { - { 0x45, 0xD1, 0xF0, 0xB3, 0x4E, 0x90, 0xDC, 0x45, 0x86, 0x4E, 0x40, 0x4E, 0x21, 0xE4, 0x73, 0xF5, - 0x54, 0x2E, 0x6A, 0x07, 0x5A, 0x18, 0x9E, 0x6D, 0x9E, 0xF5, 0xC1, 0x16, 0xE0, 0xCE, 0x97, 0xFC }, + { 0x53, 0x9C, 0xA9, 0xE1, 0xF0, 0x6A, 0xF2, 0x10, 0x7F, 0x96, 0xBF, 0x4B, 0x7D, 0xD4, 0xCE, 0xCD, + 0x9E, 0xD1, 0x1A, 0x38, 0xD6, 0x70, 0x91, 0x69, 0x9C, 0x56, 0x26, 0xE2, 0x7A, 0x1F, 0x54, 0xA5 }, }, { - { 0x45, 0xD7, 0x98, 0xFB, 0xC7, 0x66, 0x6C, 0xD7, 0xA0, 0x39, 0x5E, 0x45, 0x0C, 0x5B, 0x4E, 0x1D, - 0x98, 0xFD, 0x0E, 0xDC, 0x7F, 0x97, 0xA0, 0x31, 0x3A, 0x3B, 0x13, 0x86, 0x27, 0x8D, 0xDB, 0x08 }, + { 0x55, 0x21, 0xF9, 0x63, 0x57, 0x81, 0x58, 0xB8, 0xD0, 0xE7, 0xC4, 0x91, 0xCD, 0xB8, 0x5C, 0x3D, + 0xE9, 0xD5, 0x2E, 0xA5, 0x1F, 0xFC, 0xB0, 0x93, 0xD3, 0x12, 0x28, 0x11, 0x13, 0x14, 0x97, 0xEB }, }, { - { 0x45, 0xE9, 0xCF, 0x0A, 0xF0, 0x43, 0xA3, 0xC2, 0xBB, 0x74, 0xD4, 0x63, 0x66, 0x93, 0x1C, 0x3D, - 0xFC, 0xA5, 0x3D, 0x36, 0x26, 0x64, 0x37, 0xD2, 0xA9, 0x46, 0x84, 0xFE, 0xE9, 0x4E, 0x0C, 0x0D }, + { 0x55, 0xD0, 0xEB, 0xE3, 0x2C, 0xBA, 0x09, 0xF6, 0x58, 0x4D, 0x9E, 0x7B, 0x57, 0x92, 0xA4, 0x03, + 0xC2, 0x1D, 0x39, 0xD6, 0xE1, 0xF5, 0xE8, 0xED, 0x37, 0xB9, 0x3F, 0xA6, 0x1D, 0x88, 0x35, 0x16 }, }, { - { 0x46, 0x9B, 0xD8, 0x04, 0xE9, 0x98, 0xAE, 0x27, 0x9A, 0xC3, 0xFE, 0x1B, 0x52, 0x88, 0x46, 0xE7, - 0xAE, 0xC7, 0x6C, 0x56, 0xB8, 0x0B, 0x40, 0xF3, 0x24, 0x20, 0x8F, 0x5A, 0x9F, 0x64, 0x5C, 0xB5 }, + { 0x58, 0x1A, 0xDE, 0x64, 0x84, 0x95, 0xB4, 0xB1, 0x62, 0x9C, 0x3C, 0x7C, 0x78, 0xEF, 0xBE, 0xF2, + 0x75, 0x06, 0x56, 0x65, 0xB2, 0x41, 0x1C, 0x0E, 0x5F, 0xCF, 0xBC, 0x7E, 0xB4, 0xBE, 0x34, 0x0B }, }, { - { 0x46, 0xCD, 0x08, 0x08, 0x8D, 0x36, 0x06, 0x2C, 0x56, 0x71, 0x09, 0x2C, 0x02, 0x76, 0x7A, 0x25, - 0x0D, 0xE7, 0x0B, 0xF3, 0xE1, 0x53, 0x63, 0x69, 0x66, 0xE6, 0x6E, 0xC5, 0x7E, 0x8E, 0xE9, 0xF5 }, + { 0x59, 0xC9, 0xE8, 0xDF, 0x03, 0x0B, 0x1C, 0xD5, 0x89, 0xA8, 0xB3, 0x4F, 0xE7, 0x42, 0x51, 0xEA, + 0xD5, 0xA5, 0xFB, 0xE9, 0xE6, 0x13, 0x67, 0xCA, 0x76, 0xAF, 0xD9, 0xDD, 0xD9, 0xC6, 0xF1, 0x6F }, }, { - { 0x46, 0xE3, 0x7D, 0x9C, 0x51, 0xC6, 0x40, 0x06, 0x4C, 0xD9, 0x5C, 0x8F, 0xEA, 0x7D, 0x65, 0x78, - 0x0C, 0x2C, 0x4F, 0x0E, 0xB8, 0xEE, 0x56, 0x67, 0xEF, 0x5D, 0xCC, 0xD3, 0x1F, 0x44, 0xE0, 0x8D }, + { 0x59, 0xE9, 0xFA, 0x2F, 0xF0, 0x76, 0x89, 0x33, 0x28, 0x33, 0xC6, 0x40, 0xF5, 0x05, 0xFA, 0x24, + 0x09, 0xEB, 0x88, 0x93, 0x32, 0x57, 0xC1, 0x93, 0xB0, 0x07, 0xD3, 0xA2, 0x89, 0x6A, 0x98, 0x50 }, }, { - { 0x46, 0xEC, 0x1D, 0x4F, 0x78, 0xCA, 0xA6, 0xEC, 0x0B, 0xCB, 0x5C, 0x8C, 0x60, 0x63, 0x04, 0x73, - 0x9B, 0xA5, 0x10, 0xB5, 0x97, 0xB4, 0xC8, 0x46, 0x30, 0x81, 0xF3, 0x1F, 0x7C, 0xDB, 0x4E, 0xC1 }, + { 0x59, 0xEE, 0x9B, 0x36, 0x80, 0xAE, 0x20, 0x56, 0x83, 0x9C, 0x0B, 0xF6, 0x9E, 0xE6, 0x63, 0x26, + 0x57, 0x16, 0xA8, 0xE2, 0x4C, 0xC6, 0x49, 0x95, 0xFB, 0xA6, 0xCB, 0x6F, 0x0C, 0x12, 0x39, 0xDC }, }, { - { 0x46, 0xED, 0x9B, 0x23, 0xA0, 0x9E, 0x91, 0x19, 0xD7, 0x96, 0xE4, 0xFE, 0xC1, 0x1C, 0x26, 0x3C, - 0x74, 0x89, 0x28, 0xB0, 0xA9, 0x90, 0x09, 0x5D, 0xA8, 0xA6, 0x3E, 0x71, 0x47, 0x19, 0x49, 0x1E }, + { 0x5A, 0x84, 0xAF, 0xE6, 0x74, 0x05, 0xAB, 0xE8, 0x4A, 0x0C, 0xD4, 0x2C, 0x2B, 0xA2, 0xE4, 0xC8, + 0x8F, 0x35, 0xE0, 0xA5, 0x95, 0xE5, 0x69, 0xA3, 0xE1, 0x86, 0x69, 0x44, 0x40, 0x5B, 0xE7, 0x36 }, }, { - { 0x47, 0x78, 0xD4, 0xA5, 0x37, 0x9B, 0x45, 0x4E, 0x69, 0x68, 0x79, 0x20, 0xC1, 0xFE, 0x05, 0xB9, - 0x17, 0xAD, 0x50, 0x0C, 0x00, 0x57, 0xE9, 0x07, 0x19, 0xDC, 0x26, 0x15, 0xAF, 0x97, 0x44, 0x22 }, + { 0x5A, 0x8E, 0x86, 0x21, 0x2C, 0x06, 0x33, 0x94, 0x94, 0xF8, 0x5B, 0x5F, 0x85, 0x11, 0xDF, 0x00, + 0x00, 0x23, 0x94, 0x07, 0x8F, 0xFC, 0x77, 0x4D, 0x43, 0x6F, 0x0D, 0x63, 0x86, 0xD7, 0xA6, 0xF7 }, }, { - { 0x47, 0x84, 0xF6, 0xCD, 0x59, 0x3D, 0x7B, 0x31, 0x2E, 0xB1, 0xF6, 0x19, 0xE1, 0x11, 0xDF, 0x3B, - 0x48, 0x6D, 0x1B, 0xF8, 0x37, 0x15, 0xAD, 0x8D, 0xAB, 0xA5, 0x72, 0xAF, 0xB2, 0x61, 0xD5, 0xBE }, + { 0x5A, 0xC0, 0x98, 0x2D, 0xA0, 0xC8, 0x3D, 0x0B, 0xA9, 0x38, 0x1A, 0x5C, 0xD8, 0x7B, 0x80, 0xD1, + 0x10, 0xF2, 0x6E, 0xE8, 0x39, 0x27, 0x1B, 0xC2, 0x70, 0x60, 0x8F, 0xD1, 0x43, 0x7F, 0x55, 0xB0 }, }, { - { 0x47, 0xB2, 0xF4, 0xD6, 0xB8, 0x4E, 0xB7, 0x44, 0x53, 0xA9, 0xEC, 0xDC, 0x2D, 0x21, 0xC9, 0xD6, - 0xBE, 0x8A, 0x3D, 0x83, 0xF8, 0xA3, 0x8B, 0x31, 0x8D, 0x87, 0x26, 0x1A, 0xA9, 0x86, 0x98, 0x5E }, + { 0x5B, 0x29, 0x3D, 0x30, 0x9F, 0x64, 0x24, 0xBC, 0x26, 0x4F, 0x4B, 0xB0, 0x18, 0xAE, 0xF5, 0x0E, + 0x63, 0xE3, 0x37, 0xD1, 0x4D, 0xF0, 0x64, 0xC5, 0x7A, 0x23, 0x52, 0x83, 0x42, 0x16, 0x1C, 0x68 }, }, { - { 0x48, 0x08, 0x68, 0xBA, 0xB4, 0x84, 0xC5, 0x05, 0x38, 0x7C, 0x95, 0x7E, 0xBC, 0x12, 0x2F, 0x01, - 0x4D, 0x79, 0xC5, 0xEC, 0x63, 0xA8, 0x74, 0xD7, 0x33, 0xCF, 0x81, 0x7E, 0x3D, 0xED, 0x0D, 0x46 }, + { 0x5C, 0x7F, 0xF0, 0x55, 0xC2, 0xFD, 0x03, 0x3F, 0x34, 0xC4, 0xC4, 0xF7, 0xC4, 0xFB, 0x7D, 0xDA, + 0xAA, 0xFB, 0x43, 0x56, 0xC5, 0x60, 0xC9, 0x9E, 0xDF, 0xF0, 0x74, 0xDA, 0x04, 0xAF, 0x65, 0x7C }, }, { - { 0x48, 0x09, 0x80, 0xFC, 0xEB, 0x50, 0xEB, 0x37, 0x4C, 0x91, 0x6C, 0xB2, 0xA4, 0x3A, 0xFB, 0xD5, - 0x35, 0x21, 0x1A, 0xEA, 0x9B, 0x12, 0xB7, 0xA4, 0x5A, 0xAF, 0x90, 0xBA, 0x9C, 0xA4, 0x70, 0x0F }, + { 0x5C, 0xD2, 0x44, 0x6A, 0x8E, 0x4A, 0x0F, 0xA7, 0xE3, 0xCD, 0xF8, 0x00, 0x5D, 0xED, 0xCE, 0xBA, + 0xE9, 0xE6, 0x81, 0x9A, 0x8A, 0x69, 0x87, 0x31, 0x55, 0x5B, 0x7D, 0xC9, 0xD0, 0xA2, 0x3F, 0xC0 }, }, { - { 0x48, 0x13, 0x2A, 0xF3, 0x5F, 0x2F, 0x63, 0x53, 0x2E, 0xAC, 0x4D, 0x64, 0x4B, 0xA3, 0x11, 0x09, - 0xCF, 0xEB, 0xE6, 0x56, 0x48, 0x3A, 0x76, 0x43, 0x7A, 0xDC, 0xA1, 0xD8, 0x44, 0x3C, 0x22, 0xCF }, + { 0x5C, 0xEB, 0xEB, 0xD8, 0x34, 0x01, 0xB7, 0x0B, 0xAC, 0xB5, 0x4F, 0x66, 0xA9, 0xB7, 0x78, 0x55, + 0x69, 0x6E, 0xCE, 0x16, 0x7F, 0xE6, 0xC6, 0x0A, 0x05, 0x16, 0x8B, 0xE4, 0x39, 0x19, 0xC8, 0x0F }, }, { - { 0x48, 0x1F, 0xEB, 0xED, 0xD0, 0x11, 0xFC, 0xB0, 0x3F, 0xBD, 0xD5, 0x8F, 0xC9, 0x97, 0x85, 0x20, - 0xF5, 0x00, 0x63, 0x83, 0x6D, 0x0F, 0xB0, 0x8E, 0x9F, 0xDC, 0x42, 0x7C, 0x14, 0xC7, 0x97, 0xB7 }, + { 0x5E, 0x23, 0xDB, 0xD4, 0xD0, 0xC9, 0xBF, 0xB1, 0x5F, 0x61, 0x6A, 0x95, 0x17, 0xA1, 0x30, 0xD8, + 0x66, 0xA8, 0xCB, 0x0B, 0x18, 0x96, 0x3D, 0x54, 0xE7, 0xED, 0xAE, 0xE2, 0x61, 0xCB, 0x1C, 0x19 }, }, { - { 0x48, 0x4B, 0x8B, 0xC1, 0xE6, 0xCB, 0xBA, 0x3F, 0x01, 0xF7, 0xA9, 0x34, 0x5A, 0x88, 0x4C, 0xF5, - 0xF1, 0x5D, 0x82, 0xDA, 0x56, 0x98, 0xB6, 0xB3, 0x71, 0xE4, 0xDC, 0x6B, 0xBD, 0x6C, 0x8A, 0xE8 }, + { 0x5F, 0x8B, 0x88, 0x8E, 0xE9, 0x6C, 0x0C, 0x0F, 0x5A, 0x91, 0x72, 0x90, 0xAC, 0xA6, 0x5A, 0xFD, + 0x6E, 0xBD, 0xAE, 0x05, 0xA0, 0x2A, 0xAF, 0x04, 0x29, 0xE9, 0x72, 0xEC, 0x01, 0x90, 0xEC, 0xFC }, }, { - { 0x48, 0x5C, 0xF2, 0xB0, 0xA5, 0xE6, 0x9A, 0x0A, 0x9A, 0xAB, 0x03, 0xFF, 0x82, 0xBD, 0x6B, 0x7B, - 0x2E, 0xDF, 0x8E, 0x1B, 0x54, 0x45, 0x8E, 0x14, 0x2A, 0xEB, 0x88, 0xBA, 0xA8, 0x84, 0x0E, 0x5B }, + { 0x62, 0x2E, 0xC3, 0xBE, 0x7C, 0xF5, 0xE4, 0xE6, 0x3F, 0x74, 0x18, 0x69, 0x28, 0x74, 0x40, 0x05, + 0xCB, 0xB7, 0x8D, 0xF3, 0x06, 0xB8, 0x67, 0xC3, 0xFC, 0xAD, 0x5E, 0x2B, 0xA7, 0x53, 0x96, 0x83 }, }, { - { 0x48, 0x61, 0x56, 0x1A, 0xE5, 0x65, 0x86, 0xB8, 0xCD, 0xA5, 0xC2, 0xF8, 0x75, 0x0B, 0x8D, 0x34, - 0x38, 0x51, 0x53, 0xE4, 0xB8, 0x44, 0x0A, 0x9A, 0x37, 0xD6, 0x6D, 0xF8, 0x76, 0x94, 0x5F, 0x3F }, + { 0x62, 0x6F, 0x7E, 0xB4, 0xFD, 0x9B, 0x71, 0xFF, 0xAA, 0x0C, 0x8E, 0xC9, 0x65, 0x54, 0x64, 0xE6, + 0x5E, 0x7F, 0x96, 0xCF, 0xA3, 0x82, 0x73, 0x97, 0x41, 0x35, 0x66, 0xAA, 0x2C, 0xC1, 0xE5, 0x72 }, }, { - { 0x48, 0xC5, 0xD4, 0xFF, 0x5D, 0x08, 0x4A, 0xC1, 0x95, 0xB1, 0xA6, 0xA2, 0x19, 0xF8, 0x1B, 0xBD, - 0xF9, 0xD2, 0xE5, 0xC0, 0x70, 0xEC, 0x97, 0xDF, 0x3C, 0xB0, 0xB7, 0x3E, 0xF4, 0x70, 0xDC, 0xE9 }, + { 0x63, 0x64, 0x15, 0x61, 0x77, 0xDC, 0xDF, 0x60, 0x4D, 0xF9, 0x1E, 0x31, 0x32, 0x2E, 0x57, 0x74, + 0x69, 0x1E, 0x0C, 0x41, 0xFA, 0x0D, 0x2F, 0x25, 0x7A, 0xD7, 0xF9, 0xF0, 0x25, 0x98, 0x14, 0x45 }, }, { - { 0x48, 0xE9, 0xC3, 0xDB, 0x3A, 0x8F, 0x3B, 0x82, 0x60, 0x20, 0x9F, 0x05, 0x13, 0x3D, 0xBA, 0xDB, - 0xF5, 0x11, 0x7F, 0xB1, 0x0D, 0x11, 0x14, 0xA8, 0xC9, 0x26, 0x83, 0x45, 0x41, 0x59, 0x41, 0x63 }, + { 0x65, 0x66, 0x00, 0xA4, 0x5E, 0x45, 0x6A, 0xBA, 0x5B, 0x00, 0x8D, 0x87, 0x91, 0x54, 0xB7, 0x69, + 0x0D, 0x7F, 0x27, 0x31, 0x02, 0x09, 0x7D, 0x8F, 0xD8, 0xC3, 0xDE, 0xAB, 0x30, 0xD8, 0x4A, 0xB2 }, }, { - { 0x49, 0x64, 0xF3, 0x85, 0xCC, 0x36, 0x3B, 0xF0, 0x61, 0x7E, 0x05, 0x66, 0xB2, 0xE0, 0xD3, 0x03, - 0x3E, 0xB1, 0x26, 0x27, 0x0E, 0x00, 0xD3, 0x22, 0xF0, 0x95, 0xEC, 0xBA, 0x13, 0x06, 0x88, 0x8C }, + { 0x65, 0xED, 0x61, 0xA8, 0x8C, 0x55, 0xEF, 0xB0, 0x38, 0x07, 0x1A, 0xEE, 0xDE, 0xF8, 0xE1, 0x83, + 0xE2, 0x37, 0x38, 0x46, 0x97, 0x26, 0xEB, 0x99, 0x68, 0x0C, 0xD2, 0x44, 0x72, 0x73, 0x6B, 0xEC }, }, { - { 0x49, 0xDC, 0xF8, 0xFA, 0x68, 0xE9, 0x2B, 0x5C, 0x21, 0xFE, 0xF9, 0x3D, 0x26, 0x0C, 0x24, 0x8C, - 0xE3, 0xBE, 0x98, 0x62, 0x68, 0x68, 0xE7, 0x5A, 0x3F, 0x63, 0x34, 0xBB, 0x7D, 0xC1, 0x81, 0xEC }, + { 0x66, 0x50, 0xB2, 0xEA, 0x64, 0x4C, 0x3F, 0x4E, 0x8C, 0x9E, 0x3C, 0x46, 0xAC, 0xEA, 0xC4, 0x52, + 0x33, 0xD8, 0x66, 0xE3, 0x98, 0xFF, 0x90, 0xEB, 0x59, 0xB2, 0xC6, 0x25, 0x20, 0x82, 0xAC, 0x04 }, }, { - { 0x49, 0xE0, 0xD6, 0x97, 0x5A, 0x23, 0x47, 0x67, 0x2C, 0xC4, 0x1A, 0x76, 0x86, 0x3A, 0xA9, 0x30, - 0xB6, 0x7C, 0x2A, 0xA4, 0xF6, 0x65, 0x1F, 0x9A, 0x28, 0xF7, 0xFB, 0x38, 0xB4, 0xA4, 0x41, 0x96 }, + { 0x66, 0xBE, 0x7E, 0xA1, 0x13, 0x8B, 0xCB, 0xA4, 0xDE, 0x0B, 0x41, 0x28, 0x5D, 0x9A, 0x13, 0x3F, + 0xA7, 0xF5, 0x70, 0xA3, 0xC8, 0x13, 0x55, 0x79, 0xB8, 0x60, 0x19, 0x9D, 0x0A, 0x51, 0x45, 0x7C }, }, { - { 0x49, 0xF3, 0x0D, 0xB3, 0x32, 0xF4, 0x53, 0x6A, 0xD4, 0x53, 0xBC, 0x68, 0x9C, 0x2C, 0x63, 0x10, - 0x6F, 0xFF, 0xC2, 0xB1, 0x86, 0x23, 0xAA, 0x0B, 0xDE, 0xAA, 0xB4, 0xF9, 0xEB, 0x7C, 0x0E, 0x42 }, + { 0x69, 0x01, 0x4B, 0xBC, 0x84, 0x29, 0xD8, 0x5F, 0x41, 0xC2, 0x22, 0xD9, 0x7F, 0x7E, 0xD5, 0x35, + 0xCF, 0x81, 0x23, 0x9A, 0xF2, 0x7A, 0xCC, 0x88, 0x70, 0xDC, 0xD4, 0x08, 0x34, 0x8B, 0x48, 0xBA }, }, { - { 0x4A, 0x10, 0xBC, 0x78, 0x52, 0x2D, 0xAA, 0x83, 0xF4, 0x55, 0x81, 0xE5, 0xFB, 0xF6, 0x3D, 0xE8, - 0x47, 0x92, 0x4F, 0x93, 0x78, 0x3C, 0xB0, 0x5C, 0xAE, 0x3C, 0x1C, 0x5B, 0x57, 0x01, 0x04, 0x69 }, + { 0x69, 0x21, 0x1F, 0x36, 0x3A, 0x2D, 0xBE, 0x01, 0x5B, 0x31, 0xCB, 0xD9, 0xFC, 0x5E, 0x94, 0xC2, + 0xF6, 0xF4, 0x3C, 0x58, 0xDB, 0xDE, 0xE9, 0xE3, 0xE4, 0x6B, 0x19, 0xD7, 0x59, 0xBB, 0xB8, 0x81 }, }, { - { 0x4A, 0x47, 0x5B, 0x01, 0xD5, 0xE2, 0x70, 0xAB, 0xEE, 0xA0, 0xCC, 0x08, 0xAF, 0x77, 0xB9, 0x6C, - 0x8A, 0xE2, 0x82, 0x6F, 0x32, 0x61, 0xA0, 0xFD, 0xA3, 0x7A, 0xCA, 0xD3, 0xC9, 0xC8, 0x60, 0x41 }, + { 0x69, 0x75, 0x67, 0xBB, 0xAC, 0x94, 0xEE, 0xC3, 0xE6, 0xFA, 0x4A, 0x4E, 0x46, 0xFA, 0x51, 0x74, + 0x05, 0xF3, 0x77, 0xC0, 0xDE, 0xE3, 0xD4, 0x29, 0x91, 0x4E, 0x6B, 0x7E, 0xA0, 0x8C, 0xB1, 0xA6 }, }, { - { 0x4A, 0x8E, 0x3A, 0xDB, 0xDC, 0xBE, 0x3E, 0x7E, 0xD8, 0x7D, 0x81, 0x4F, 0x60, 0x46, 0x1B, 0x82, - 0x36, 0x24, 0xF4, 0x9B, 0xE3, 0x5D, 0x66, 0x39, 0x09, 0xEC, 0xB1, 0x8F, 0xBF, 0x06, 0x01, 0x3F }, + { 0x6A, 0xAC, 0xC5, 0x09, 0x2F, 0x12, 0xBC, 0x94, 0xA0, 0xAD, 0x0E, 0x9E, 0xF6, 0x36, 0x43, 0x7D, + 0x36, 0x0D, 0xC7, 0xC9, 0xF1, 0x40, 0x44, 0x17, 0xA3, 0x36, 0x91, 0x94, 0x4E, 0x76, 0x31, 0x36 }, }, { - { 0x4A, 0x90, 0x3B, 0x61, 0xE8, 0x1B, 0x53, 0xDA, 0xEF, 0x8E, 0xD3, 0xF7, 0x72, 0x14, 0xC6, 0xB7, - 0x74, 0xD4, 0xD2, 0x9D, 0xD6, 0x75, 0xC9, 0x1C, 0xDB, 0x2E, 0x0C, 0xEB, 0x36, 0xBC, 0x66, 0xE7 }, + { 0x6B, 0x4A, 0x8C, 0xB6, 0x07, 0xF5, 0x1C, 0x83, 0x0D, 0xE7, 0x20, 0xF4, 0xBB, 0xDE, 0xDF, 0x49, + 0x10, 0x15, 0x13, 0xDF, 0xD1, 0xDB, 0x0B, 0x0A, 0x97, 0xCC, 0x3F, 0xDD, 0x9A, 0x39, 0xC6, 0xE7 }, }, { - { 0x4A, 0xA7, 0xD5, 0xCD, 0xB1, 0x8E, 0x5E, 0xAE, 0x05, 0x9D, 0x54, 0x10, 0xFD, 0x5B, 0x44, 0xA5, - 0x9E, 0xBA, 0x0D, 0xE9, 0x66, 0x3C, 0x42, 0x2F, 0x42, 0x35, 0x87, 0x04, 0xC3, 0x2C, 0x90, 0x2D }, + { 0x6C, 0x8F, 0xD1, 0xE6, 0xE1, 0x1B, 0xAF, 0xA6, 0x17, 0x78, 0x13, 0xA0, 0x44, 0x40, 0xB1, 0xB9, + 0x6A, 0x1C, 0xDB, 0x7C, 0x2D, 0x70, 0x3F, 0x55, 0xDE, 0x85, 0x7C, 0x80, 0xA8, 0x9E, 0x73, 0x25 }, }, { - { 0x4A, 0xCF, 0x9D, 0xA9, 0x05, 0x2F, 0x0B, 0x8C, 0xFF, 0xF7, 0x37, 0xCD, 0xA3, 0x39, 0x11, 0xC2, - 0x9E, 0xFC, 0xBF, 0xFD, 0x4B, 0xF4, 0xB7, 0x24, 0x83, 0xFA, 0xA7, 0xC7, 0x45, 0x1D, 0xFD, 0x42 }, + { 0x6C, 0xC6, 0xDC, 0xDA, 0x58, 0xC6, 0x1F, 0xB2, 0x86, 0x70, 0xD1, 0xC2, 0x01, 0x76, 0x57, 0xB0, + 0xC5, 0xD6, 0x1A, 0x26, 0xC9, 0xCB, 0xD1, 0xEA, 0x75, 0x5C, 0x68, 0x20, 0xB5, 0xF6, 0xD6, 0x7D }, }, { - { 0x4A, 0xD2, 0x17, 0xA9, 0x6E, 0x15, 0x30, 0xCB, 0xC5, 0xDE, 0xB8, 0x6A, 0xFF, 0x27, 0x63, 0x55, - 0x23, 0x59, 0xDA, 0x5B, 0x59, 0x82, 0xE5, 0x38, 0xBA, 0xB7, 0xC9, 0x2A, 0x15, 0x9C, 0xB8, 0x3C }, + { 0x6D, 0x32, 0xF4, 0x93, 0x40, 0x56, 0xEE, 0x17, 0x14, 0xCA, 0x72, 0x70, 0x3F, 0x64, 0x46, 0x9B, + 0x98, 0x58, 0xFC, 0x39, 0x96, 0x4B, 0x4C, 0x03, 0x93, 0xB3, 0x7D, 0xDE, 0xAB, 0x8B, 0x19, 0x75 }, }, { - { 0x4A, 0xE5, 0xE5, 0x1E, 0x7F, 0xF1, 0x67, 0x47, 0x77, 0x5E, 0x2B, 0x2C, 0x05, 0x72, 0x1D, 0x95, - 0xEB, 0xEB, 0x8C, 0x46, 0x01, 0xFD, 0xDC, 0xDC, 0x90, 0xFB, 0xCE, 0x69, 0x7E, 0x35, 0x01, 0x2C }, + { 0x6D, 0xC9, 0x87, 0x5C, 0xD3, 0x46, 0xA2, 0x2B, 0x47, 0xB2, 0x80, 0xB1, 0xB1, 0x45, 0x0D, 0x87, + 0x8E, 0x09, 0x8B, 0xB2, 0xE2, 0xA9, 0xE3, 0xC2, 0x5C, 0xC7, 0x6A, 0xFF, 0x93, 0xC0, 0xBE, 0xAB }, }, { - { 0x4B, 0x04, 0x83, 0x2E, 0x6C, 0x99, 0xEA, 0x3A, 0x31, 0xF4, 0x83, 0x76, 0x82, 0xB5, 0x43, 0x7C, - 0x09, 0x99, 0x78, 0x1E, 0x77, 0xCB, 0xDE, 0xB8, 0x93, 0xDB, 0xFE, 0xF3, 0x1E, 0x0E, 0xE3, 0x3E }, + { 0x6E, 0x1A, 0x88, 0x63, 0xF2, 0x93, 0x4B, 0x39, 0x01, 0x23, 0x7E, 0x84, 0xD0, 0x76, 0x27, 0x04, + 0x23, 0x06, 0x78, 0x7F, 0x2D, 0xE0, 0x66, 0x30, 0xBD, 0x37, 0xD8, 0x03, 0x94, 0x35, 0xBF, 0xCA }, }, { - { 0x4B, 0x1F, 0xC8, 0x2D, 0x24, 0x72, 0x92, 0x7A, 0xC1, 0x7C, 0x58, 0x43, 0x07, 0xCB, 0x96, 0xD6, - 0xFD, 0xDB, 0x8D, 0x50, 0xA5, 0x29, 0x53, 0x07, 0xD3, 0x0C, 0x75, 0x88, 0x59, 0x6A, 0xD4, 0x0B }, + { 0x6F, 0x3B, 0xB3, 0x4B, 0x5D, 0x32, 0x91, 0xDF, 0xB3, 0xE4, 0x12, 0x71, 0xA1, 0xD7, 0x30, 0xCD, + 0xBC, 0xFF, 0xC1, 0x0B, 0x68, 0x05, 0x9D, 0xCC, 0xD3, 0x1C, 0x47, 0x4B, 0xB7, 0x44, 0x16, 0xE5 }, }, { - { 0x4B, 0x2D, 0xF9, 0xFA, 0xF4, 0x2F, 0x2B, 0x06, 0x61, 0x28, 0x80, 0xD2, 0x69, 0x04, 0x2B, 0x6C, - 0x1C, 0x51, 0xE7, 0xAC, 0xF0, 0x45, 0x91, 0xB6, 0x68, 0x66, 0x33, 0x5F, 0xCE, 0x7C, 0xC6, 0x84 }, + { 0x6F, 0xBD, 0xCD, 0xF1, 0xB4, 0x37, 0x9F, 0xC4, 0x73, 0xAB, 0x5E, 0xEA, 0x4E, 0xC2, 0xF4, 0x84, + 0xCE, 0x91, 0xD1, 0x0E, 0x31, 0x34, 0x5F, 0x15, 0xA7, 0x6A, 0x84, 0x85, 0xB8, 0xFF, 0xFB, 0x7E }, }, { - { 0x4B, 0x35, 0x02, 0xFF, 0xAD, 0x64, 0x16, 0x39, 0x4F, 0x2F, 0x78, 0x47, 0x76, 0x13, 0x39, 0x69, - 0xA5, 0x5C, 0xA8, 0xF3, 0x9F, 0x78, 0x3C, 0x26, 0x0F, 0xFE, 0xDB, 0xA8, 0xFC, 0xE4, 0x19, 0x70 }, + { 0x6F, 0xDC, 0x18, 0xD6, 0x55, 0x14, 0xDD, 0xCE, 0xF0, 0x2F, 0xEA, 0x81, 0x7A, 0x1B, 0x70, 0x84, + 0x71, 0x95, 0xFF, 0x5C, 0x07, 0xB1, 0x3D, 0x6A, 0x97, 0x1E, 0x0E, 0x77, 0x4B, 0x44, 0x10, 0xA0 }, }, { - { 0x4B, 0x51, 0xFC, 0x11, 0x4B, 0xAC, 0x8E, 0x2D, 0x2A, 0xF2, 0xAE, 0x56, 0x84, 0x42, 0x9C, 0xCA, - 0xAB, 0x21, 0x39, 0xC9, 0xB3, 0x51, 0xBF, 0x7E, 0x1B, 0x03, 0x0A, 0xE8, 0x62, 0x4A, 0xC1, 0x72 }, + { 0x70, 0xB8, 0xEC, 0xD5, 0x62, 0xEC, 0x3D, 0x9F, 0x48, 0x64, 0x75, 0x2A, 0x3A, 0x8C, 0x54, 0x39, + 0x93, 0xB4, 0x38, 0x72, 0x8F, 0xE2, 0x71, 0x81, 0xF4, 0xC0, 0x8D, 0xE6, 0xA0, 0xD8, 0xB7, 0x9A }, }, { - { 0x4B, 0x5D, 0xBF, 0x01, 0x0B, 0x3E, 0x62, 0x78, 0x9C, 0x43, 0x8E, 0x07, 0x18, 0xEC, 0xB4, 0x4A, - 0x5D, 0xC0, 0x8F, 0xEB, 0xCF, 0xF7, 0x0A, 0xDF, 0x5B, 0xE0, 0x0A, 0x6E, 0x49, 0xE5, 0x71, 0xF7 }, + { 0x71, 0x1E, 0xF0, 0x96, 0x33, 0x43, 0x8A, 0xC5, 0xBE, 0x9D, 0xA8, 0x12, 0x2E, 0x7A, 0xCF, 0x0E, + 0xA2, 0x68, 0xB8, 0x72, 0xAD, 0xDC, 0x3E, 0xE8, 0x37, 0x2B, 0x91, 0x6D, 0x60, 0x65, 0xCF, 0xA8 }, }, { - { 0x4B, 0x92, 0xDC, 0xFD, 0x0E, 0xDA, 0x00, 0x5D, 0x9A, 0x37, 0x3D, 0x91, 0xA6, 0x1F, 0x23, 0x12, - 0x9D, 0x7B, 0x85, 0x3D, 0x79, 0x52, 0x87, 0xC9, 0x5C, 0x7E, 0x17, 0x24, 0xA9, 0x1C, 0x53, 0xB3 }, + { 0x72, 0x1B, 0x1F, 0x92, 0x9D, 0xA7, 0xEA, 0xF8, 0x96, 0x24, 0x64, 0x7B, 0xA3, 0xCC, 0x4E, 0x1E, + 0xD1, 0x57, 0x54, 0xAB, 0x83, 0x6E, 0x33, 0x58, 0xB0, 0x35, 0xA1, 0xF2, 0x27, 0x4A, 0x43, 0xBE }, }, { - { 0x4B, 0xB1, 0x83, 0xDE, 0xB1, 0x16, 0xAC, 0x82, 0xAD, 0xC2, 0xC1, 0x0F, 0x61, 0x4C, 0x13, 0x11, - 0xBF, 0xE9, 0xAA, 0xAB, 0x0D, 0x34, 0x87, 0x00, 0xC4, 0xD2, 0xD3, 0x52, 0xFD, 0xBA, 0x67, 0x7E }, + { 0x72, 0xE7, 0x49, 0x87, 0x21, 0x0C, 0x7E, 0xF6, 0x67, 0x46, 0xE4, 0x9A, 0x96, 0xDF, 0x55, 0xCC, + 0x6F, 0xAD, 0xF7, 0xA6, 0x31, 0xC7, 0xAE, 0x3F, 0x3E, 0x9E, 0x18, 0x72, 0x3D, 0xE5, 0x2A, 0x6E }, }, { - { 0x4C, 0x08, 0x8A, 0x68, 0x93, 0x6D, 0x5F, 0x6F, 0x12, 0xCB, 0x4A, 0x8F, 0x97, 0xA8, 0xF4, 0xAB, - 0x94, 0x96, 0x4C, 0xF6, 0xFB, 0x27, 0x6F, 0x0A, 0x9D, 0x78, 0x9E, 0xA6, 0x73, 0xB2, 0x7E, 0x04 }, + { 0x73, 0x3B, 0x42, 0x24, 0x25, 0x8D, 0xEE, 0x07, 0x0E, 0xDF, 0xA3, 0x41, 0x1F, 0xBC, 0x9B, 0xAD, + 0x31, 0x65, 0xBE, 0x66, 0x0F, 0x34, 0x0A, 0xA2, 0x30, 0x8A, 0x5A, 0x33, 0x23, 0xFA, 0xBF, 0xA7 }, }, { - { 0x4C, 0x33, 0x6E, 0x46, 0x9E, 0x9C, 0x01, 0xC3, 0x84, 0xAB, 0x9A, 0xA2, 0x2E, 0x9E, 0x3F, 0x36, - 0xF1, 0xE5, 0x9C, 0xFE, 0x05, 0x0F, 0x66, 0xEC, 0x07, 0xD0, 0xFD, 0x02, 0x30, 0xCC, 0xF4, 0x23 }, + { 0x76, 0x98, 0x67, 0x60, 0xAC, 0xFE, 0x55, 0x59, 0xA2, 0xA2, 0xAB, 0x2A, 0x4E, 0x85, 0x49, 0x83, + 0xC5, 0xFD, 0xE6, 0x73, 0xCE, 0x8E, 0xB1, 0x71, 0x23, 0x49, 0x48, 0x64, 0x86, 0x7A, 0x98, 0xB1 }, }, { - { 0x4C, 0x3A, 0x76, 0xD1, 0x2C, 0x70, 0x0C, 0x25, 0x1B, 0x02, 0x04, 0xBA, 0x9F, 0x27, 0xC0, 0xDA, - 0xCB, 0x2E, 0x47, 0x37, 0x72, 0x64, 0xCD, 0x31, 0xC4, 0xFE, 0xA4, 0xA4, 0x58, 0x5A, 0x99, 0x60 }, + { 0x77, 0xDD, 0xC8, 0x1B, 0xD2, 0x8B, 0x9D, 0x46, 0x1E, 0x7D, 0x3C, 0xD4, 0xA8, 0x12, 0x2A, 0xA9, + 0x8A, 0x24, 0x60, 0xFB, 0xA0, 0x8F, 0x1B, 0x7B, 0xAC, 0xB6, 0x6C, 0x92, 0xD7, 0x99, 0x1C, 0xCC }, }, { - { 0x4C, 0x3C, 0x7C, 0xBC, 0x42, 0x1C, 0xE0, 0xD1, 0x84, 0x4E, 0xA7, 0xB4, 0x6F, 0x61, 0xD7, 0x87, - 0xE0, 0x4F, 0x94, 0x01, 0x71, 0x49, 0xBE, 0xA3, 0x28, 0xED, 0xC3, 0x6C, 0x20, 0xE3, 0x2F, 0xAA }, + { 0x78, 0x0C, 0x33, 0xFE, 0x95, 0x4C, 0xC4, 0xDB, 0x39, 0x04, 0xD7, 0x6A, 0x68, 0x58, 0xBC, 0xD1, + 0x01, 0x7F, 0x52, 0xDA, 0x59, 0x9D, 0x36, 0xDA, 0xE6, 0x66, 0xC0, 0x4E, 0x41, 0xAF, 0x8D, 0xCD }, }, { - { 0x4C, 0x4B, 0xB6, 0x05, 0x65, 0xB5, 0xCA, 0x7F, 0x02, 0xF8, 0xF5, 0x9B, 0xFA, 0x1D, 0x1D, 0x62, - 0x71, 0xB2, 0xF1, 0x4D, 0x5C, 0xD3, 0xA0, 0x43, 0x51, 0xC3, 0xC4, 0x9D, 0x3F, 0xA0, 0x43, 0xB4 }, + { 0x78, 0xC9, 0x30, 0x40, 0x5A, 0x72, 0x0D, 0x9F, 0x00, 0x66, 0xDD, 0x88, 0xA2, 0xA8, 0xDA, 0xFB, + 0xBE, 0x6C, 0xD6, 0x5D, 0x54, 0xB7, 0x76, 0x06, 0x42, 0x1B, 0x45, 0x43, 0x8C, 0x65, 0x8A, 0xD4 }, }, { - { 0x4C, 0x8A, 0x29, 0xB5, 0x81, 0x7D, 0x90, 0x99, 0xA4, 0xFE, 0xD1, 0xE7, 0x93, 0xB2, 0x8E, 0x2F, - 0xAF, 0x6E, 0x87, 0x14, 0xEE, 0x77, 0x60, 0xA7, 0xD5, 0x3E, 0x31, 0x15, 0x2C, 0x18, 0xAC, 0xC2 }, + { 0x79, 0x8F, 0x83, 0xB1, 0xC4, 0xC6, 0x5C, 0x4D, 0x5D, 0xEA, 0x13, 0x03, 0x53, 0x53, 0xD8, 0xED, + 0xE5, 0xD7, 0x1D, 0x99, 0x47, 0xF4, 0x34, 0xFD, 0xEA, 0x0D, 0xBC, 0x1E, 0xC8, 0x2F, 0x45, 0x35 }, }, { - { 0x4C, 0xBA, 0x10, 0x70, 0x0C, 0x5F, 0xA6, 0xE0, 0x4F, 0x2E, 0xDF, 0xE5, 0x40, 0x2A, 0xDD, 0x82, - 0xBD, 0x8E, 0xAF, 0xAB, 0x38, 0x44, 0x71, 0x11, 0xBE, 0x62, 0x63, 0x7D, 0x64, 0x9F, 0xE3, 0xC6 }, + { 0x79, 0xA8, 0xFC, 0x72, 0x70, 0xB2, 0xE5, 0xF3, 0x35, 0x6B, 0x09, 0xC6, 0xB8, 0x64, 0xFC, 0x92, + 0xE5, 0xFB, 0xC9, 0xE6, 0x9B, 0xEC, 0x93, 0xA4, 0xE3, 0x3B, 0x8D, 0xF5, 0x75, 0x60, 0x17, 0xBE }, }, { - { 0x4C, 0xD0, 0xD6, 0x7E, 0xCC, 0x3B, 0x01, 0xC8, 0xC2, 0x63, 0x4E, 0x7A, 0x73, 0x76, 0x12, 0xF6, - 0x3A, 0x17, 0xFF, 0x51, 0x0A, 0x77, 0xA8, 0x04, 0xBB, 0x33, 0x1B, 0x2B, 0xE5, 0x8D, 0xFE, 0x0C }, + { 0x7B, 0xFE, 0x47, 0xAE, 0xBA, 0x8B, 0x0A, 0x3A, 0x94, 0x5A, 0x88, 0xD8, 0xEF, 0x18, 0x91, 0xC9, + 0x89, 0x97, 0x8A, 0xBF, 0x12, 0x2E, 0xC5, 0xE0, 0x51, 0x4B, 0xE3, 0x6C, 0x3A, 0x7F, 0x22, 0x9B }, }, { - { 0x4C, 0xD6, 0xDC, 0xC0, 0x71, 0xC6, 0x81, 0x56, 0x6F, 0x1F, 0xB5, 0x46, 0x95, 0x12, 0x67, 0xE3, - 0x2A, 0x36, 0x9D, 0x64, 0xAD, 0x95, 0x1A, 0xB4, 0xCA, 0x83, 0x36, 0xF6, 0xEE, 0x86, 0xC6, 0x08 }, + { 0x7D, 0x20, 0xC7, 0xA9, 0x27, 0x26, 0x2B, 0xE7, 0x38, 0xD2, 0x58, 0xD0, 0xFD, 0x97, 0x6E, 0x9A, + 0xF3, 0x6E, 0xF7, 0x99, 0x5F, 0x05, 0xE2, 0x87, 0x6A, 0x29, 0xAE, 0xBC, 0x3A, 0x24, 0xAA, 0xCE }, }, { - { 0x4C, 0xD8, 0x6A, 0xA6, 0x0C, 0xB3, 0x69, 0x00, 0xA9, 0xAA, 0x3B, 0x7B, 0x02, 0x7D, 0x71, 0x4C, - 0x0F, 0x76, 0x07, 0xC3, 0x56, 0x73, 0x3B, 0xA2, 0x21, 0xAA, 0xE4, 0x09, 0x47, 0xF7, 0xFA, 0xCB }, + { 0x7E, 0x2E, 0xDB, 0x9D, 0x38, 0xF9, 0x29, 0x3C, 0xDD, 0xD6, 0x03, 0xB1, 0x75, 0xC9, 0xB2, 0x05, + 0xAC, 0x0B, 0x55, 0x3A, 0x4B, 0xF5, 0xFB, 0x08, 0xC2, 0x46, 0xEC, 0xF9, 0xC8, 0x49, 0xDB, 0x28 }, }, { - { 0x4D, 0x25, 0x2E, 0x6E, 0x1A, 0x15, 0x9A, 0xC2, 0x22, 0xB3, 0x2E, 0x9D, 0xD0, 0x31, 0x56, 0x7B, - 0x69, 0x31, 0x4B, 0xE8, 0xE8, 0x21, 0x1C, 0x1F, 0xB3, 0xC8, 0xB5, 0x3C, 0x26, 0x0A, 0x74, 0xE5 }, + { 0x7F, 0x95, 0x9B, 0x06, 0x34, 0xDA, 0x94, 0xFA, 0xCA, 0xDA, 0xB0, 0x21, 0xCF, 0x94, 0x20, 0x78, + 0x16, 0x00, 0x36, 0x13, 0xEF, 0x09, 0xEB, 0x54, 0xF6, 0x48, 0x60, 0x50, 0x08, 0x19, 0x02, 0x75 }, }, { - { 0x4D, 0x54, 0x4D, 0x4E, 0x41, 0xC0, 0xFB, 0x15, 0x5F, 0x04, 0x7D, 0x7F, 0xB1, 0xEF, 0x29, 0xD1, - 0x1B, 0xDF, 0xEC, 0xA9, 0xD4, 0x11, 0xAF, 0x8B, 0x12, 0x54, 0x1F, 0x11, 0x50, 0xC0, 0xB4, 0x44 }, + { 0x7F, 0x9A, 0x69, 0xCF, 0xA2, 0xF5, 0x0C, 0x13, 0xE1, 0xB7, 0x11, 0xDD, 0x6B, 0x14, 0x69, 0x2B, + 0xDB, 0x77, 0xD9, 0xFF, 0xD8, 0xC1, 0x10, 0xAE, 0x5D, 0x05, 0xA4, 0xCB, 0x73, 0x12, 0x37, 0x48 }, }, { - { 0x4D, 0xCF, 0xEB, 0xDC, 0x15, 0x4B, 0x0C, 0x85, 0x46, 0x7F, 0x6F, 0x52, 0xAD, 0x80, 0x4E, 0x19, - 0x1D, 0x5B, 0xC8, 0x13, 0x51, 0x72, 0x0E, 0xC0, 0xD1, 0x9B, 0xD2, 0x5B, 0xF8, 0xF0, 0xA5, 0x53 }, + { 0x80, 0x20, 0x56, 0xE1, 0xDB, 0x9D, 0x9B, 0x73, 0x21, 0xD1, 0xFF, 0xBB, 0xE1, 0x2F, 0x5C, 0xBE, + 0xDE, 0xC3, 0x6D, 0x0B, 0x5E, 0xC2, 0xA4, 0xE1, 0x8D, 0x99, 0x54, 0x36, 0x4C, 0xEC, 0x81, 0x29 }, }, { - { 0x4D, 0xE2, 0x4B, 0x7F, 0xE2, 0x6D, 0x50, 0x6E, 0x76, 0xAC, 0x3A, 0xCB, 0x32, 0x53, 0x3D, 0x50, - 0x1B, 0xC1, 0x6A, 0x2D, 0x50, 0xB5, 0x6D, 0x65, 0x96, 0xB3, 0x0B, 0x21, 0xB0, 0x1E, 0x4D, 0x09 }, + { 0x80, 0x97, 0x63, 0x4C, 0xE3, 0x3D, 0x41, 0x53, 0x3D, 0x41, 0x5D, 0xAF, 0xDB, 0x8B, 0xA1, 0x91, + 0xC0, 0x30, 0x52, 0xAC, 0x8B, 0xAA, 0x25, 0x54, 0x34, 0x77, 0x3A, 0x16, 0x4B, 0x91, 0x1D, 0x6E }, }, { - { 0x4D, 0xE5, 0xA5, 0xDE, 0x12, 0x4E, 0x27, 0x69, 0x81, 0x79, 0x67, 0x53, 0xDD, 0x20, 0x20, 0xB1, - 0x10, 0x54, 0x09, 0x32, 0xF7, 0x4F, 0x97, 0x41, 0xD9, 0x6C, 0x1D, 0xB9, 0x50, 0x5D, 0x5F, 0xF1 }, + { 0x80, 0xD0, 0x17, 0x09, 0x34, 0xD2, 0x2A, 0xEA, 0x73, 0x3F, 0x11, 0x5E, 0x52, 0x42, 0xC6, 0xB8, + 0x6D, 0x7F, 0xCF, 0xB4, 0x90, 0x4E, 0x65, 0xB7, 0xB7, 0xB9, 0x07, 0xF2, 0xCA, 0x94, 0xED, 0x71 }, }, { - { 0x4E, 0x33, 0x78, 0xEC, 0x23, 0x7C, 0x01, 0xA3, 0xCD, 0x85, 0x9E, 0x1D, 0xC9, 0x29, 0xD6, 0xA6, - 0xEF, 0xB6, 0x36, 0x7A, 0x72, 0x58, 0x41, 0xCF, 0x54, 0x13, 0x25, 0xC0, 0x61, 0xF8, 0xBF, 0xD4 }, + { 0x81, 0x1D, 0xF2, 0xF4, 0x73, 0x6F, 0x85, 0x62, 0xE2, 0x02, 0xFD, 0x00, 0x75, 0x32, 0xF1, 0xDE, + 0x40, 0x17, 0x86, 0x1E, 0xFA, 0xBE, 0x67, 0x34, 0x20, 0xC2, 0x7F, 0x2E, 0x2A, 0x33, 0xFA, 0xC1 }, }, { - { 0x4E, 0x48, 0xC1, 0x6C, 0x9D, 0x0D, 0xE5, 0xDD, 0x8C, 0x9C, 0x36, 0x37, 0x35, 0xDD, 0xFB, 0xC3, - 0xDB, 0xD2, 0x6E, 0xA0, 0xAE, 0xCD, 0xE1, 0xC7, 0x62, 0xBB, 0x56, 0xBB, 0x3F, 0xE4, 0xFA, 0x74 }, + { 0x81, 0x1E, 0x37, 0x86, 0x37, 0xB1, 0xD2, 0xCB, 0xB1, 0x89, 0xAF, 0xD6, 0x74, 0x95, 0xFE, 0x8A, + 0xB9, 0xD8, 0x3A, 0x74, 0x2E, 0x35, 0x8C, 0xBB, 0xDB, 0xD1, 0x54, 0x98, 0xBF, 0x9C, 0x7B, 0x56 }, }, { - { 0x4E, 0x56, 0x28, 0x87, 0x76, 0x0B, 0xA6, 0xC0, 0x2C, 0x8B, 0x1D, 0x54, 0xC6, 0x05, 0xD2, 0x67, - 0x5A, 0xC9, 0x9B, 0x13, 0x24, 0x52, 0xDE, 0x6F, 0xE9, 0x6B, 0xAE, 0x54, 0x75, 0x5E, 0xD8, 0x90 }, + { 0x81, 0xA0, 0xF1, 0xD0, 0x29, 0x46, 0x8E, 0xE8, 0x66, 0x36, 0x4A, 0x19, 0x8A, 0x26, 0x08, 0x58, + 0x30, 0xC2, 0xA4, 0x16, 0xE4, 0x9E, 0x22, 0x4C, 0xE8, 0x09, 0x66, 0xFC, 0xC4, 0x99, 0xD6, 0x36 }, }, { - { 0x4E, 0x59, 0x82, 0xAC, 0x8E, 0xB9, 0x51, 0x12, 0x2D, 0x08, 0x77, 0xBB, 0xED, 0x12, 0x8C, 0x14, - 0xC3, 0x30, 0xE4, 0xFE, 0x98, 0xB9, 0x20, 0x04, 0x91, 0x58, 0x75, 0x10, 0x38, 0x26, 0xDE, 0x30 }, + { 0x82, 0x56, 0x8B, 0x3B, 0xB3, 0xC6, 0x55, 0xD7, 0xF2, 0x2D, 0x8C, 0x97, 0xA5, 0x66, 0x9C, 0xC8, + 0x34, 0xA2, 0xDD, 0x7C, 0xDA, 0xE7, 0x5A, 0x26, 0x45, 0x59, 0x55, 0x16, 0x46, 0x55, 0x8E, 0x14 }, }, { - { 0x4E, 0x6F, 0xB7, 0x05, 0x5D, 0xA4, 0x37, 0xEB, 0x46, 0x8D, 0x77, 0x94, 0x59, 0x96, 0xBE, 0x17, - 0x7E, 0x97, 0xDD, 0xA8, 0x9E, 0xF9, 0xA4, 0xB0, 0x61, 0x17, 0xB4, 0xE9, 0x75, 0xE1, 0xC5, 0x50 }, + { 0x82, 0x7C, 0x8C, 0x80, 0x11, 0x1F, 0xF2, 0x21, 0xC3, 0xEB, 0x1E, 0xF5, 0xC0, 0xD5, 0xD4, 0x34, + 0x48, 0x31, 0x86, 0xE2, 0x09, 0x00, 0x75, 0x63, 0x15, 0x8E, 0x9E, 0x76, 0xD2, 0x79, 0x0F, 0x1C }, }, { - { 0x4E, 0xF1, 0x31, 0x9C, 0x31, 0x26, 0xF0, 0x22, 0xAD, 0x27, 0xE5, 0xC4, 0x1A, 0x6C, 0x03, 0xFE, - 0x93, 0x05, 0x70, 0x7B, 0xF2, 0x02, 0x9A, 0xF3, 0x7F, 0x9F, 0x89, 0xE0, 0xF2, 0x5A, 0x93, 0x1C }, + { 0x82, 0x92, 0x67, 0xC5, 0xAD, 0x70, 0xE5, 0x45, 0x18, 0x02, 0x3A, 0xB7, 0x85, 0xFA, 0x3C, 0xDE, + 0xD6, 0x6F, 0x42, 0x5D, 0xE1, 0xF3, 0x2F, 0xCD, 0x72, 0x1B, 0x49, 0x46, 0x3A, 0x5A, 0x5F, 0x5B }, }, { - { 0x4F, 0x19, 0xDD, 0x12, 0x92, 0x4C, 0xE0, 0xC1, 0x4F, 0x82, 0xC0, 0x56, 0xC7, 0xD4, 0x2B, 0xAC, - 0x43, 0xD0, 0x13, 0x3A, 0xAF, 0x89, 0xC1, 0xEF, 0xDC, 0xFA, 0x3C, 0x3E, 0x47, 0x09, 0x7D, 0x59 }, + { 0x83, 0x34, 0xEA, 0xB8, 0x1C, 0x60, 0x4E, 0x99, 0xD5, 0x40, 0x51, 0x3E, 0xF2, 0xE3, 0x7A, 0xBA, + 0x71, 0x4F, 0x07, 0xB2, 0xBA, 0x01, 0x0A, 0xD7, 0x1D, 0xC4, 0xE1, 0x1A, 0x92, 0x18, 0xC1, 0x8C }, }, { - { 0x4F, 0x23, 0xC6, 0x87, 0x0C, 0x7C, 0xFA, 0x6D, 0x31, 0x92, 0x70, 0x3D, 0xCA, 0xFD, 0x8F, 0x46, - 0xB7, 0xBC, 0xC3, 0x72, 0xDC, 0x6D, 0x1C, 0x61, 0x00, 0x9A, 0x01, 0x75, 0x20, 0xE9, 0xF3, 0xDF }, + { 0x83, 0x54, 0x7A, 0xCA, 0x3C, 0xED, 0x73, 0xDF, 0x99, 0x14, 0xF3, 0x15, 0x60, 0x74, 0x63, 0x79, + 0x29, 0x4C, 0x76, 0x0E, 0xF9, 0xA8, 0xB7, 0x6E, 0x00, 0x06, 0x46, 0xC7, 0x39, 0x07, 0x21, 0x65 }, }, { - { 0x4F, 0x54, 0x31, 0xA9, 0xA1, 0x5E, 0x08, 0x9B, 0x70, 0x53, 0xB6, 0x61, 0x47, 0xE2, 0xB6, 0x23, - 0xD5, 0x87, 0x6F, 0x9A, 0x04, 0x56, 0x44, 0x67, 0xAE, 0x16, 0x13, 0xF6, 0xA8, 0x15, 0x98, 0x38 }, + { 0x83, 0x89, 0xC8, 0x79, 0xB6, 0x3B, 0x82, 0x9D, 0x2D, 0x39, 0xA8, 0xCF, 0xB7, 0x87, 0xE7, 0x72, + 0x77, 0xD5, 0xCF, 0xA3, 0xE3, 0x6F, 0xDA, 0xCB, 0xAB, 0x4D, 0x18, 0xB2, 0xB0, 0x4E, 0x32, 0x94 }, }, { - { 0x4F, 0x79, 0xC7, 0x9D, 0x52, 0x62, 0x28, 0xB1, 0x0C, 0x70, 0xD3, 0xD7, 0x2A, 0xAA, 0x71, 0x87, - 0xB7, 0x2C, 0x7E, 0xCD, 0x48, 0xF9, 0x16, 0x95, 0xCA, 0x41, 0xA3, 0x6C, 0x55, 0x5C, 0x6C, 0x43 }, + { 0x84, 0x23, 0xB3, 0xF1, 0xCC, 0x85, 0x2B, 0x49, 0xCF, 0x81, 0xB7, 0xD5, 0xFF, 0x51, 0xA7, 0xA5, + 0x6A, 0x84, 0x78, 0x3A, 0x2D, 0xF7, 0x43, 0x61, 0xFF, 0x2E, 0xEE, 0x0F, 0x92, 0x12, 0xC1, 0x59 }, }, { - { 0x4F, 0x9A, 0xCC, 0x0B, 0x75, 0xCE, 0xAA, 0x7C, 0xB3, 0x88, 0x47, 0x09, 0x52, 0xC9, 0x98, 0x08, - 0xE4, 0xF3, 0xCB, 0x99, 0xA7, 0x73, 0xA6, 0x00, 0xCD, 0xDF, 0x2C, 0xF3, 0x1A, 0xE7, 0xEC, 0x72 }, + { 0x84, 0x7B, 0x5F, 0x1E, 0xEB, 0x2A, 0x44, 0x13, 0xC8, 0xFA, 0x37, 0x98, 0x21, 0x97, 0x37, 0xE1, + 0x92, 0xBA, 0x72, 0x72, 0xA1, 0x08, 0xB7, 0x17, 0x28, 0xA8, 0xD1, 0x65, 0x17, 0xF6, 0x1E, 0x9D }, }, { - { 0x4F, 0xAF, 0xAE, 0xBC, 0x7E, 0x20, 0x21, 0xC8, 0x43, 0x86, 0xEC, 0x9D, 0x82, 0xA4, 0x9C, 0x24, - 0xDB, 0xEF, 0xEB, 0x71, 0x2E, 0xA7, 0x2C, 0x0D, 0x64, 0x73, 0x51, 0x86, 0x13, 0x53, 0xCD, 0x69 }, + { 0x85, 0x31, 0xB2, 0xBF, 0xC5, 0x45, 0x79, 0xE8, 0xF1, 0x8F, 0x27, 0xB2, 0xE6, 0xEC, 0xC0, 0xF8, + 0x90, 0x64, 0xEE, 0x86, 0x87, 0x0E, 0xCC, 0x8B, 0xBE, 0x0C, 0xE6, 0x86, 0xEC, 0xDA, 0x2C, 0x17 }, }, { - { 0x4F, 0xE9, 0xF1, 0x68, 0x70, 0x6A, 0x07, 0x5D, 0xA9, 0x6C, 0x71, 0x3D, 0xA4, 0x32, 0x61, 0xE3, - 0x39, 0xA9, 0x93, 0x6E, 0xDD, 0xD5, 0x88, 0x8B, 0xD6, 0x35, 0x00, 0xCA, 0xA6, 0xEF, 0xBF, 0xA8 }, + { 0x85, 0x76, 0x0F, 0x59, 0x51, 0x90, 0xE9, 0xB4, 0x67, 0x8B, 0xBF, 0x44, 0xEF, 0xB5, 0xCF, 0x8F, + 0x6B, 0x19, 0x37, 0xA9, 0xB8, 0x6B, 0x31, 0xB7, 0x51, 0xBE, 0xCF, 0x72, 0x18, 0x03, 0xB0, 0x1C }, }, { - { 0x4F, 0xFB, 0x59, 0x19, 0xBC, 0x38, 0x5C, 0x8C, 0x58, 0xE4, 0x62, 0xBF, 0x13, 0x22, 0x10, 0xD8, - 0xB7, 0x86, 0x12, 0xD0, 0xC2, 0x2A, 0x6B, 0x6A, 0x68, 0x2E, 0x0B, 0x9E, 0x9C, 0x9F, 0x9A, 0x44 }, + { 0x85, 0xF0, 0x79, 0x36, 0xB4, 0x29, 0x1F, 0x36, 0xD9, 0xB7, 0x5F, 0x42, 0xE8, 0xB7, 0xEE, 0x8A, + 0x64, 0xE6, 0x32, 0xA1, 0x18, 0x11, 0x65, 0xFE, 0x72, 0xB4, 0x88, 0x23, 0xC3, 0xD9, 0x9D, 0x9D }, }, { - { 0x50, 0x15, 0xB9, 0xC9, 0x92, 0xC8, 0x87, 0xC2, 0x4C, 0x99, 0x15, 0x38, 0xDD, 0xD5, 0x1D, 0x01, - 0x49, 0xCD, 0x9F, 0xF3, 0x60, 0x49, 0xF3, 0xD8, 0xA0, 0xB2, 0xD2, 0x92, 0x23, 0xF7, 0x91, 0x38 }, + { 0x86, 0x12, 0x9F, 0xE7, 0x61, 0x99, 0x4D, 0x7B, 0x64, 0xE4, 0x02, 0x85, 0x8F, 0x88, 0xC5, 0x2B, + 0x3E, 0xB9, 0xC0, 0x71, 0xFF, 0xBE, 0x80, 0x02, 0x80, 0xAC, 0x8C, 0x0C, 0x6F, 0x79, 0xE7, 0xA6 }, }, { - { 0x50, 0x30, 0x55, 0x80, 0x8F, 0x4C, 0x49, 0xCF, 0xFC, 0xDE, 0x02, 0x27, 0x3C, 0x13, 0x16, 0x38, - 0xF4, 0x3D, 0x38, 0x56, 0x13, 0xE0, 0x73, 0x3D, 0xB4, 0x5F, 0xBD, 0x2A, 0x29, 0x11, 0xD6, 0xE4 }, + { 0x86, 0x19, 0x6B, 0x0F, 0xD3, 0x0F, 0x8F, 0x57, 0x56, 0x98, 0xB5, 0xEE, 0xF2, 0x69, 0xD0, 0x69, + 0x2F, 0x88, 0xAD, 0xEA, 0xC4, 0x83, 0x6A, 0x62, 0x67, 0xAB, 0xC8, 0x36, 0x23, 0x34, 0x00, 0x86 }, }, { - { 0x50, 0x3C, 0x0A, 0xE6, 0x83, 0x4E, 0x46, 0xCA, 0xED, 0x49, 0x7C, 0x43, 0x73, 0x3F, 0x39, 0x7E, - 0x04, 0xD3, 0x06, 0xD5, 0xF8, 0x10, 0x11, 0xD2, 0x0E, 0x5A, 0x03, 0xC5, 0x6B, 0x89, 0xDA, 0x15 }, + { 0x86, 0xD1, 0x8B, 0xCD, 0xDE, 0x16, 0x45, 0x42, 0x48, 0x6E, 0x56, 0x44, 0x2C, 0xE1, 0xB8, 0x8B, + 0x1A, 0x10, 0x73, 0x7C, 0xBD, 0x5E, 0xA4, 0xAA, 0xB8, 0xD5, 0xB8, 0xAF, 0x51, 0xF5, 0x29, 0x09 }, }, { - { 0x50, 0x81, 0x1D, 0x6E, 0x9D, 0xAF, 0x31, 0x2A, 0x6A, 0xC2, 0xAF, 0x6B, 0x52, 0x13, 0xC9, 0x56, - 0x20, 0xE0, 0x24, 0xE0, 0x87, 0xAE, 0x5E, 0xB0, 0xCC, 0x8A, 0xA2, 0x6F, 0xBE, 0xD9, 0xD9, 0x85 }, + { 0x88, 0x8D, 0x6D, 0x77, 0xD8, 0x1C, 0x62, 0x91, 0xCB, 0x84, 0xD9, 0xD6, 0x56, 0x27, 0x82, 0xFD, + 0x2E, 0xB3, 0x42, 0x5D, 0x49, 0x1E, 0x68, 0x74, 0x20, 0x28, 0x4B, 0x76, 0xA1, 0xDE, 0xBF, 0xAB }, }, { - { 0x50, 0xF4, 0x78, 0x1E, 0xB1, 0xC1, 0x46, 0x70, 0xD9, 0xA5, 0x52, 0xC3, 0x49, 0x5F, 0xB9, 0xF6, - 0xAE, 0x86, 0x8A, 0xB1, 0xC9, 0xD9, 0x83, 0xE0, 0x82, 0x68, 0x65, 0xA1, 0x02, 0xEC, 0xA6, 0xD3 }, + { 0x89, 0xAF, 0x0E, 0x54, 0xC7, 0x62, 0x77, 0x86, 0x93, 0x52, 0x9D, 0x0A, 0x95, 0x0B, 0x78, 0x33, + 0xF5, 0xEA, 0xBA, 0xF3, 0x42, 0x79, 0x72, 0x60, 0x7F, 0xB2, 0xC7, 0x0C, 0x96, 0xA3, 0x21, 0x61 }, }, { - { 0x51, 0x19, 0xB5, 0x19, 0x01, 0x56, 0xDD, 0x6D, 0x6B, 0x34, 0x16, 0x60, 0xF8, 0xA3, 0xC6, 0x25, - 0x0A, 0xC5, 0x2D, 0x82, 0xBD, 0x26, 0xC3, 0x30, 0x7E, 0x28, 0xB4, 0x03, 0xD3, 0x84, 0x94, 0x9F }, + { 0x89, 0xDA, 0xC7, 0x89, 0x6B, 0x46, 0xF2, 0xFC, 0x8B, 0xEA, 0x62, 0x11, 0xFF, 0x98, 0xB6, 0x1F, + 0xAA, 0x15, 0x7B, 0xA8, 0xC4, 0xAD, 0x6F, 0xD1, 0x75, 0x92, 0x75, 0xCE, 0x39, 0x41, 0xC3, 0x28 }, }, { - { 0x51, 0x3E, 0x76, 0xB7, 0xBF, 0xB0, 0xF4, 0xEE, 0x3F, 0x09, 0x94, 0xC9, 0x56, 0xB9, 0xCD, 0x4F, - 0xFF, 0x03, 0xFA, 0x14, 0x38, 0x68, 0xCF, 0x3C, 0x59, 0x9B, 0x7C, 0x33, 0xCC, 0x41, 0xA2, 0xF4 }, + { 0x8A, 0x09, 0x85, 0xBF, 0x86, 0xE8, 0xC9, 0xB9, 0x17, 0xEC, 0x84, 0xDA, 0x2A, 0x56, 0x73, 0x1E, + 0x75, 0x2A, 0xA0, 0xDC, 0x52, 0x87, 0xC2, 0xBF, 0x39, 0x51, 0x0B, 0xB3, 0xF0, 0xF2, 0x0A, 0xD1 }, }, { - { 0x51, 0x45, 0x0F, 0x2B, 0x44, 0x5C, 0x6D, 0xED, 0x83, 0x9C, 0xD9, 0x97, 0x86, 0xD4, 0x03, 0x01, - 0x1C, 0x2D, 0xBE, 0xDC, 0x72, 0x96, 0xDB, 0xC8, 0x55, 0x44, 0xAC, 0x1B, 0x71, 0xDA, 0x4A, 0x95 }, + { 0x8A, 0xAF, 0x36, 0x3C, 0xC9, 0xD8, 0x44, 0x15, 0xA7, 0xEB, 0x0D, 0x72, 0xDA, 0x08, 0xB3, 0x58, + 0x80, 0x68, 0x55, 0x9C, 0xB0, 0xA9, 0xAE, 0x92, 0xB8, 0xF4, 0x60, 0x2E, 0xDA, 0x23, 0x82, 0xAA }, }, { - { 0x51, 0x6A, 0x2F, 0x33, 0x60, 0xC7, 0x6F, 0xC4, 0x6A, 0xB2, 0x88, 0x7F, 0x88, 0xE8, 0xD0, 0x8E, - 0xFB, 0xD8, 0x44, 0x5A, 0xA7, 0xBB, 0xD2, 0x29, 0xDF, 0xC7, 0x1A, 0x90, 0x4F, 0x55, 0xAE, 0xB4 }, + { 0x8A, 0xB2, 0x77, 0x62, 0xF4, 0xA2, 0xE3, 0x11, 0x22, 0x04, 0x96, 0x98, 0x39, 0x99, 0xC8, 0xC4, + 0x60, 0x96, 0x3D, 0xFC, 0x1B, 0x88, 0x51, 0x11, 0x1D, 0xA4, 0x1D, 0x3F, 0x3B, 0x0A, 0x6E, 0x94 }, }, { - { 0x51, 0xC5, 0x2A, 0x80, 0xBC, 0x2E, 0x24, 0xFB, 0x47, 0x1F, 0xE4, 0x5E, 0x78, 0xCF, 0x01, 0x84, - 0xE0, 0xC4, 0x67, 0x0E, 0x20, 0xE6, 0xCA, 0xDA, 0x20, 0xBD, 0xF9, 0x6E, 0x2D, 0x71, 0x20, 0xF7 }, + { 0x8A, 0xD1, 0xD5, 0x48, 0x95, 0x27, 0xB5, 0x28, 0xE5, 0xB5, 0xD6, 0xA5, 0x95, 0x78, 0x87, 0x08, + 0x88, 0x8A, 0x3F, 0xB1, 0x9F, 0x2C, 0x7C, 0x8B, 0x38, 0x07, 0x0E, 0x1F, 0x38, 0x98, 0x96, 0x8B }, }, { - { 0x52, 0x1F, 0x6C, 0x6A, 0x84, 0x36, 0x65, 0x79, 0xCA, 0x2D, 0xEA, 0xEB, 0x23, 0x15, 0xBF, 0x8E, - 0x53, 0x1C, 0x9F, 0xA4, 0x7B, 0x89, 0x9D, 0xA2, 0x72, 0x16, 0xA9, 0x98, 0x82, 0x86, 0xAF, 0xE5 }, + { 0x8A, 0xDB, 0x49, 0xD4, 0x15, 0x53, 0x56, 0x70, 0x5B, 0x64, 0x42, 0x6A, 0x99, 0x0F, 0x58, 0xB3, + 0xA0, 0x71, 0xEF, 0x78, 0x2E, 0x6C, 0x09, 0x53, 0x07, 0xD7, 0x74, 0x74, 0xD5, 0xB5, 0x7A, 0x62 }, }, { - { 0x52, 0x75, 0xC2, 0x38, 0x02, 0x7B, 0x22, 0xAA, 0x51, 0x9B, 0x36, 0xA8, 0x03, 0xAF, 0xF5, 0x6E, - 0xBB, 0x4E, 0x1A, 0x6C, 0x56, 0x9A, 0x81, 0xEA, 0xDE, 0xD5, 0x86, 0x35, 0xA7, 0x7B, 0x15, 0x80 }, + { 0x8B, 0x3A, 0x10, 0x35, 0xC3, 0xFD, 0xF3, 0x45, 0xFB, 0x70, 0x80, 0x44, 0x83, 0xA5, 0x04, 0x49, + 0xA3, 0xD7, 0x60, 0xC6, 0xBA, 0x48, 0xF5, 0xB8, 0x2D, 0x6B, 0xB2, 0x62, 0xED, 0x9D, 0xE3, 0x73 }, }, { - { 0x52, 0xE4, 0x38, 0x85, 0x10, 0x91, 0xB9, 0x8C, 0x01, 0xFE, 0x1A, 0x5E, 0xC5, 0x4F, 0xA9, 0x8A, - 0xA0, 0x64, 0xAB, 0xA6, 0xE1, 0xB3, 0x3D, 0xD9, 0x83, 0xC4, 0x15, 0x15, 0x28, 0x96, 0xF0, 0xB8 }, + { 0x8B, 0x3A, 0x75, 0xCB, 0xC3, 0x62, 0xD2, 0x35, 0x57, 0x0E, 0x5D, 0xE7, 0x04, 0x29, 0x38, 0x70, + 0x8A, 0x1B, 0x0F, 0xCE, 0xB4, 0x59, 0x86, 0x2A, 0x38, 0x67, 0xB7, 0x34, 0xCD, 0xCB, 0x97, 0x94 }, }, { - { 0x52, 0xFF, 0x8B, 0x6E, 0x98, 0xB0, 0x96, 0x19, 0x90, 0x03, 0xDE, 0x97, 0xBC, 0xCF, 0xD2, 0xA7, - 0xF1, 0xAC, 0x57, 0xA8, 0x31, 0x35, 0xB9, 0x55, 0xFF, 0x68, 0x63, 0x36, 0xA6, 0x91, 0xD5, 0xCA }, + { 0x8C, 0x3E, 0x7C, 0x1D, 0xCC, 0x7D, 0xD8, 0xE7, 0xD8, 0xBF, 0x7B, 0x5B, 0x3A, 0xE5, 0xE0, 0x27, + 0x2E, 0x81, 0x1A, 0xB9, 0xF3, 0xC3, 0xC5, 0x38, 0xE5, 0x74, 0x71, 0x77, 0xE6, 0x2D, 0x62, 0x92 }, }, { - { 0x53, 0x49, 0x98, 0x5A, 0x83, 0x22, 0xC0, 0xA9, 0x54, 0x1F, 0xB6, 0x81, 0x31, 0xC2, 0xA4, 0xF4, - 0x7D, 0x46, 0xC5, 0xBB, 0x3B, 0xAC, 0x23, 0x76, 0x6A, 0x26, 0x55, 0x17, 0x43, 0x71, 0x40, 0xB6 }, + { 0x8C, 0x7C, 0x65, 0x7B, 0xDA, 0x13, 0xCA, 0x62, 0xF2, 0x9A, 0x65, 0xC6, 0xD5, 0x19, 0x3A, 0x93, + 0xCF, 0x6C, 0x58, 0x77, 0x18, 0xAD, 0xCA, 0x67, 0x15, 0x8E, 0x97, 0xD3, 0x6A, 0x62, 0x3E, 0xCA }, }, { - { 0x53, 0x79, 0x64, 0x58, 0xDA, 0x97, 0xCE, 0x36, 0x78, 0xF2, 0xD1, 0xD9, 0xB2, 0xA5, 0xB2, 0xFB, - 0x30, 0x75, 0xEA, 0xFA, 0xF6, 0xFF, 0x04, 0x78, 0xB5, 0x72, 0xDD, 0xFD, 0x70, 0x99, 0xAE, 0xE2 }, + { 0x8C, 0xA6, 0x79, 0x62, 0xC4, 0xA8, 0x09, 0x13, 0x33, 0xF2, 0x4E, 0xFD, 0x60, 0xEE, 0x70, 0xCF, + 0xED, 0xDB, 0xD6, 0x41, 0x59, 0x04, 0x70, 0x9E, 0x78, 0x5C, 0x33, 0x1B, 0x1E, 0xF5, 0x8F, 0x8E }, }, { - { 0x53, 0x96, 0x8B, 0x36, 0x22, 0x80, 0xFE, 0xB7, 0x27, 0x51, 0xF6, 0xED, 0xB9, 0xB2, 0x7C, 0x5F, - 0x50, 0xDD, 0x4C, 0x0E, 0x43, 0x4A, 0x54, 0x09, 0x76, 0xA5, 0xBE, 0xE3, 0x40, 0x3C, 0x92, 0x7E }, + { 0x8E, 0x18, 0xFD, 0xBD, 0xB0, 0x08, 0x16, 0x00, 0x35, 0xFA, 0xF5, 0x01, 0x5B, 0xE7, 0xDA, 0xF4, + 0x63, 0xB5, 0xC4, 0x14, 0xEA, 0xBC, 0x8B, 0x89, 0xF3, 0xDB, 0xA2, 0x05, 0xAB, 0x09, 0xA6, 0x43 }, }, { - { 0x53, 0x96, 0xB9, 0x32, 0x9D, 0xE7, 0xB3, 0x55, 0x2E, 0x18, 0x0D, 0xDD, 0x33, 0x17, 0x63, 0x53, - 0xBA, 0xCD, 0x65, 0x66, 0x18, 0x2B, 0x2B, 0x23, 0x05, 0x71, 0x67, 0x0A, 0xCE, 0xB0, 0xC1, 0x91 }, + { 0x8F, 0x10, 0x10, 0x47, 0x93, 0xE8, 0x55, 0x42, 0xBC, 0x06, 0x04, 0xD6, 0xCF, 0x21, 0x5F, 0x78, + 0x80, 0xBD, 0x6A, 0x4D, 0xD0, 0xFD, 0xF1, 0xE7, 0xA5, 0xB9, 0xCA, 0x12, 0x46, 0xF5, 0xC4, 0x09 }, }, { - { 0x53, 0x9C, 0xA9, 0xE1, 0xF0, 0x6A, 0xF2, 0x10, 0x7F, 0x96, 0xBF, 0x4B, 0x7D, 0xD4, 0xCE, 0xCD, - 0x9E, 0xD1, 0x1A, 0x38, 0xD6, 0x70, 0x91, 0x69, 0x9C, 0x56, 0x26, 0xE2, 0x7A, 0x1F, 0x54, 0xA5 }, + { 0x8F, 0x71, 0x27, 0x76, 0x2E, 0xE7, 0x51, 0x69, 0xBD, 0xC3, 0x5B, 0x04, 0xA7, 0x28, 0xE9, 0xD3, + 0x1B, 0x7E, 0x4D, 0x37, 0x89, 0xAA, 0x2C, 0x46, 0xD8, 0xA3, 0x1B, 0x3D, 0xFA, 0x81, 0xA9, 0x7E }, }, { - { 0x53, 0xAF, 0xBD, 0xDB, 0xFA, 0xC7, 0x4E, 0xBC, 0xA1, 0xBE, 0xF4, 0xBA, 0xCD, 0xEB, 0x45, 0x29, - 0x7C, 0x43, 0xF0, 0xF7, 0x4E, 0x8D, 0x04, 0xBA, 0x81, 0x79, 0xB4, 0xF3, 0x72, 0x41, 0xBE, 0x6C }, + { 0x8F, 0x94, 0x15, 0x92, 0x6F, 0x40, 0x49, 0xEA, 0x41, 0x8A, 0x30, 0x7C, 0x76, 0x36, 0xE4, 0x9B, + 0x14, 0x4F, 0xA5, 0x3E, 0x52, 0xE1, 0x04, 0x15, 0x5F, 0x58, 0x03, 0x5E, 0x45, 0x41, 0xCD, 0x6E }, }, { - { 0x53, 0xB6, 0xE2, 0xAA, 0xA6, 0x2D, 0x18, 0x5A, 0x42, 0x3E, 0x92, 0x9D, 0x8C, 0x75, 0xD7, 0xE3, - 0x2B, 0x37, 0x2F, 0x5D, 0xF0, 0x06, 0x0A, 0x73, 0xBA, 0xFA, 0xC4, 0x9A, 0xA8, 0x51, 0x1E, 0x24 }, + { 0x90, 0xB3, 0xA1, 0x85, 0x36, 0x86, 0xAF, 0xEB, 0x15, 0x4A, 0xEF, 0x7E, 0x84, 0x0D, 0x38, 0x04, + 0x4E, 0x7D, 0x7F, 0x6D, 0xC4, 0xCE, 0x82, 0x8C, 0xE3, 0x97, 0x55, 0xAC, 0x88, 0xE4, 0x2E, 0x07 }, }, { - { 0x53, 0xEB, 0xD5, 0x29, 0x2D, 0x32, 0xCE, 0xA0, 0x08, 0x60, 0x96, 0x78, 0xC4, 0x3B, 0xDD, 0xAB, - 0x90, 0x28, 0xBA, 0x6C, 0x17, 0x68, 0x4C, 0x51, 0x22, 0x42, 0x62, 0x43, 0xCB, 0x61, 0x2A, 0x29 }, + { 0x90, 0xE2, 0x51, 0x86, 0x7F, 0x6B, 0x0C, 0x14, 0xBD, 0x9B, 0x51, 0x0C, 0xFD, 0xA8, 0x48, 0x49, + 0x72, 0xFD, 0xF0, 0xE0, 0x6D, 0xC1, 0x1F, 0x5D, 0x1D, 0x59, 0x0B, 0xE3, 0xFC, 0x38, 0xDF, 0xF0 }, }, { - { 0x53, 0xED, 0x84, 0xE5, 0xC9, 0xAD, 0x2B, 0xD1, 0xCB, 0x2C, 0xC8, 0x36, 0x52, 0xEA, 0x0C, 0xC3, - 0x71, 0xCD, 0x53, 0x4B, 0xD5, 0x97, 0xCE, 0x7E, 0x07, 0x37, 0xA0, 0xAB, 0x10, 0x65, 0x73, 0xAA }, + { 0x91, 0x90, 0xF8, 0x25, 0x51, 0x0C, 0x65, 0x98, 0xE1, 0x9D, 0x17, 0xDB, 0xBE, 0x6E, 0x7C, 0x82, + 0x31, 0x86, 0x9C, 0xA7, 0xF6, 0xE3, 0x07, 0xA2, 0xC2, 0xCC, 0x54, 0x77, 0x8D, 0x4A, 0x89, 0xB3 }, }, { - { 0x54, 0x1B, 0xED, 0x16, 0x7D, 0x7D, 0xE0, 0x5F, 0x80, 0x63, 0x73, 0xA3, 0x86, 0x8F, 0x73, 0x4C, - 0xBD, 0xF7, 0x09, 0x53, 0x6B, 0x3B, 0xCF, 0x20, 0x64, 0xB2, 0x59, 0xFE, 0x2A, 0x83, 0x76, 0xAA }, + { 0x91, 0xC7, 0x6E, 0xF8, 0xC7, 0x05, 0x3B, 0x2A, 0x27, 0x0B, 0x97, 0x19, 0x78, 0x3C, 0x85, 0x10, + 0xA2, 0x89, 0x0A, 0x48, 0x40, 0x18, 0x63, 0x72, 0x6E, 0x23, 0x3A, 0x82, 0xBF, 0x9A, 0x0B, 0xCF }, }, { - { 0x54, 0x41, 0xFB, 0xB0, 0x5D, 0x6D, 0x4A, 0xED, 0xE0, 0x3B, 0x48, 0x2F, 0x51, 0x95, 0x1C, 0x7E, - 0xF0, 0x73, 0x45, 0x53, 0xCE, 0xC7, 0x80, 0xFB, 0xDC, 0xFA, 0x30, 0x0C, 0xC1, 0x79, 0x0D, 0x66 }, + { 0x92, 0x3F, 0x0F, 0x8C, 0x40, 0x5A, 0x02, 0xE6, 0x82, 0xC4, 0xB4, 0x66, 0x5A, 0x7E, 0xE7, 0x16, + 0xAA, 0x57, 0xE0, 0xA5, 0x86, 0xC2, 0x4A, 0x16, 0x5A, 0xAD, 0x7E, 0x5B, 0xDA, 0x22, 0x78, 0x24 }, }, { - { 0x54, 0xA5, 0x1F, 0x64, 0xD6, 0x28, 0x61, 0x49, 0xF2, 0x3A, 0x43, 0xCC, 0x73, 0x67, 0x00, 0x0E, - 0xF0, 0x16, 0x03, 0x89, 0x9C, 0xBC, 0x94, 0xA1, 0xA4, 0xE3, 0xBE, 0xEC, 0xFE, 0xE8, 0x40, 0x66 }, + { 0x92, 0x71, 0x44, 0x12, 0x1C, 0x23, 0x63, 0x57, 0x07, 0xE9, 0x40, 0x7F, 0x7F, 0xFF, 0x6A, 0x64, + 0x63, 0x5D, 0x7C, 0xE9, 0x06, 0x66, 0xD4, 0x29, 0x94, 0x09, 0x7A, 0xF4, 0x0C, 0x31, 0x36, 0xFB }, }, { - { 0x55, 0x21, 0xF9, 0x63, 0x57, 0x81, 0x58, 0xB8, 0xD0, 0xE7, 0xC4, 0x91, 0xCD, 0xB8, 0x5C, 0x3D, - 0xE9, 0xD5, 0x2E, 0xA5, 0x1F, 0xFC, 0xB0, 0x93, 0xD3, 0x12, 0x28, 0x11, 0x13, 0x14, 0x97, 0xEB }, - }, - { - { 0x55, 0x54, 0xEC, 0x61, 0xF2, 0x57, 0x6E, 0x34, 0xE7, 0x21, 0x56, 0xA6, 0xF6, 0xFD, 0x5E, 0xE8, - 0xF4, 0x26, 0x2A, 0xB5, 0x3F, 0x7B, 0xC9, 0xF1, 0x8B, 0xB6, 0xD7, 0xEB, 0x3E, 0x16, 0x28, 0xDE }, - }, - { - { 0x55, 0xB2, 0x84, 0x5F, 0x48, 0x44, 0xA7, 0x72, 0x46, 0x36, 0x41, 0x78, 0xA1, 0x71, 0xC2, 0x26, - 0xFC, 0xFD, 0x75, 0xC7, 0x63, 0xBA, 0xD0, 0x87, 0xF6, 0x02, 0xE7, 0xB4, 0xAC, 0xD9, 0xEC, 0xB3 }, - }, - { - { 0x55, 0xD0, 0xEB, 0xE3, 0x2C, 0xBA, 0x09, 0xF6, 0x58, 0x4D, 0x9E, 0x7B, 0x57, 0x92, 0xA4, 0x03, - 0xC2, 0x1D, 0x39, 0xD6, 0xE1, 0xF5, 0xE8, 0xED, 0x37, 0xB9, 0x3F, 0xA6, 0x1D, 0x88, 0x35, 0x16 }, - }, - { - { 0x56, 0x65, 0xC2, 0xE5, 0x64, 0x33, 0x29, 0x85, 0xB8, 0xD2, 0xC4, 0xFB, 0x61, 0x14, 0x57, 0xD8, - 0xD5, 0x65, 0x9A, 0xE0, 0x05, 0x87, 0x4C, 0x6F, 0x30, 0x34, 0xD2, 0x9F, 0x2A, 0x9A, 0x78, 0x32 }, - }, - { - { 0x56, 0x81, 0x4B, 0xB4, 0x69, 0xC3, 0x87, 0x31, 0xFC, 0x0D, 0x84, 0xB8, 0x6F, 0x87, 0xB3, 0x5B, - 0xAF, 0xF3, 0x2A, 0x0F, 0x13, 0xC2, 0x61, 0x64, 0x02, 0x70, 0x36, 0xC9, 0x4E, 0x8D, 0x64, 0x3F }, - }, - { - { 0x56, 0x8F, 0x37, 0xB3, 0xAB, 0xBD, 0xA3, 0xE8, 0x03, 0x12, 0xB1, 0xB1, 0x43, 0x27, 0x2C, 0x44, - 0xE1, 0xFB, 0x78, 0xEE, 0x3F, 0x30, 0x0F, 0x5B, 0x54, 0xF5, 0xB2, 0x9A, 0x7A, 0xD8, 0xD7, 0x43 }, - }, - { - { 0x56, 0x96, 0x18, 0xD5, 0x4E, 0x3C, 0x61, 0x1B, 0x79, 0x7E, 0xEB, 0x01, 0xDF, 0x9C, 0x1C, 0x5C, - 0x14, 0x6D, 0x87, 0xB3, 0xB1, 0x29, 0xBA, 0x42, 0x29, 0x88, 0x88, 0x82, 0x10, 0x04, 0xFD, 0xCB }, - }, - { - { 0x57, 0xB8, 0xBF, 0xB7, 0x22, 0x41, 0x15, 0xB7, 0xF2, 0xAE, 0x12, 0x89, 0x74, 0xB6, 0xD0, 0x74, - 0x1B, 0xB2, 0x8F, 0x48, 0x0B, 0xE8, 0x96, 0xEE, 0x09, 0x7C, 0xEE, 0x68, 0x6E, 0xA3, 0xAA, 0xAB }, - }, - { - { 0x57, 0xC1, 0x4C, 0x78, 0x2C, 0xF5, 0x8C, 0x3B, 0x72, 0x28, 0x0F, 0xEF, 0x7D, 0xA9, 0xE2, 0xD9, - 0x71, 0xE5, 0x25, 0x03, 0xC4, 0x15, 0x99, 0x59, 0x68, 0xB6, 0x04, 0x37, 0x2A, 0x18, 0x96, 0xBF }, - }, - { - { 0x58, 0x0C, 0x45, 0xD6, 0xE2, 0x55, 0x8E, 0x7C, 0x7D, 0xA8, 0x19, 0xA5, 0x99, 0xD5, 0xB1, 0x6F, - 0x0E, 0x18, 0x79, 0xF0, 0xCB, 0x58, 0x31, 0xDF, 0xDB, 0x9A, 0xB2, 0xFF, 0x6E, 0x8E, 0x4B, 0xA0 }, - }, - { - { 0x58, 0x1A, 0xDE, 0x64, 0x84, 0x95, 0xB4, 0xB1, 0x62, 0x9C, 0x3C, 0x7C, 0x78, 0xEF, 0xBE, 0xF2, - 0x75, 0x06, 0x56, 0x65, 0xB2, 0x41, 0x1C, 0x0E, 0x5F, 0xCF, 0xBC, 0x7E, 0xB4, 0xBE, 0x34, 0x0B }, - }, - { - { 0x58, 0x36, 0x98, 0x46, 0xC0, 0x25, 0x15, 0x0E, 0xCF, 0xB2, 0x2C, 0xCE, 0xB8, 0xE4, 0xDE, 0x9A, - 0xC3, 0xD0, 0x2D, 0x9E, 0x23, 0x6C, 0x02, 0xEF, 0xB5, 0x5F, 0x63, 0xEB, 0xAF, 0xEA, 0xF7, 0x5B }, - }, - { - { 0x58, 0x98, 0xBE, 0xD1, 0x46, 0x1E, 0x18, 0x9D, 0xC5, 0x97, 0x73, 0x75, 0x9C, 0xB6, 0x9B, 0xE3, - 0x36, 0x86, 0xB2, 0xD8, 0x0E, 0x73, 0x21, 0x9F, 0x07, 0x96, 0xEB, 0x8F, 0x0F, 0x79, 0x59, 0x09 }, - }, - { - { 0x59, 0x3F, 0x23, 0x88, 0x0B, 0x59, 0xED, 0x5A, 0xA4, 0x8A, 0x2D, 0xB5, 0x01, 0x44, 0xFC, 0x8E, - 0xAB, 0xB7, 0xB5, 0x35, 0xA6, 0x2A, 0x61, 0x7B, 0x28, 0x82, 0xB8, 0x5D, 0xCF, 0x50, 0xB8, 0x02 }, - }, - { - { 0x59, 0x43, 0x09, 0x51, 0x02, 0x8B, 0x87, 0x78, 0x01, 0x67, 0xC9, 0x56, 0x47, 0x9A, 0x81, 0x5F, - 0x91, 0xBC, 0x6C, 0x00, 0xC2, 0xE5, 0x0C, 0x35, 0xF0, 0x5F, 0xCF, 0xF5, 0x27, 0x68, 0xC7, 0x37 }, - }, - { - { 0x59, 0xC9, 0xE8, 0xDF, 0x03, 0x0B, 0x1C, 0xD5, 0x89, 0xA8, 0xB3, 0x4F, 0xE7, 0x42, 0x51, 0xEA, - 0xD5, 0xA5, 0xFB, 0xE9, 0xE6, 0x13, 0x67, 0xCA, 0x76, 0xAF, 0xD9, 0xDD, 0xD9, 0xC6, 0xF1, 0x6F }, - }, - { - { 0x59, 0xE8, 0x20, 0x27, 0xA5, 0xF6, 0x28, 0x1A, 0xBC, 0xFB, 0x41, 0xA9, 0x9F, 0xFC, 0xB5, 0xBA, - 0xB1, 0x3A, 0xA1, 0x32, 0x57, 0xFC, 0x12, 0xE1, 0xDD, 0x4C, 0x38, 0x08, 0xB9, 0x64, 0x27, 0x39 }, - }, - { - { 0x59, 0xE9, 0xFA, 0x2F, 0xF0, 0x76, 0x89, 0x33, 0x28, 0x33, 0xC6, 0x40, 0xF5, 0x05, 0xFA, 0x24, - 0x09, 0xEB, 0x88, 0x93, 0x32, 0x57, 0xC1, 0x93, 0xB0, 0x07, 0xD3, 0xA2, 0x89, 0x6A, 0x98, 0x50 }, - }, - { - { 0x59, 0xEE, 0x2C, 0xB6, 0x0C, 0x80, 0xE7, 0x37, 0x33, 0x72, 0x1C, 0xA6, 0xCD, 0x0C, 0x88, 0x63, - 0xDD, 0x9A, 0xF6, 0xB8, 0x2F, 0x35, 0x0C, 0xE9, 0x88, 0x72, 0xF2, 0x2E, 0x23, 0x89, 0x5A, 0x55 }, - }, - { - { 0x59, 0xEE, 0x9B, 0x36, 0x80, 0xAE, 0x20, 0x56, 0x83, 0x9C, 0x0B, 0xF6, 0x9E, 0xE6, 0x63, 0x26, - 0x57, 0x16, 0xA8, 0xE2, 0x4C, 0xC6, 0x49, 0x95, 0xFB, 0xA6, 0xCB, 0x6F, 0x0C, 0x12, 0x39, 0xDC }, - }, - { - { 0x5A, 0x28, 0x15, 0x08, 0x72, 0x33, 0x83, 0xE1, 0x3D, 0x56, 0x37, 0x61, 0x41, 0x19, 0x23, 0xFB, - 0x20, 0xD5, 0xC2, 0x83, 0x56, 0x64, 0xAB, 0xFC, 0x9C, 0x02, 0x4E, 0x54, 0xE9, 0x5B, 0xCA, 0x87 }, - }, - { - { 0x5A, 0x2A, 0x8B, 0xCB, 0xEF, 0x60, 0xF7, 0x79, 0x13, 0xB1, 0xB6, 0xAE, 0xDF, 0xD3, 0xAE, 0x8F, - 0xE5, 0xFC, 0x42, 0x2F, 0xDB, 0x3B, 0xA7, 0x9E, 0xF7, 0x17, 0xA9, 0xBE, 0x19, 0xFA, 0x89, 0xDC }, - }, - { - { 0x5A, 0x6B, 0xB1, 0x1F, 0x2E, 0xFD, 0x5E, 0x60, 0x25, 0xC6, 0x06, 0xF5, 0x58, 0x81, 0x30, 0xE1, - 0x7C, 0x88, 0xED, 0xAE, 0xDC, 0x2A, 0xA9, 0x41, 0xE2, 0x54, 0x3A, 0xDD, 0x77, 0x25, 0x31, 0xBE }, - }, - { - { 0x5A, 0x84, 0xAF, 0xE6, 0x74, 0x05, 0xAB, 0xE8, 0x4A, 0x0C, 0xD4, 0x2C, 0x2B, 0xA2, 0xE4, 0xC8, - 0x8F, 0x35, 0xE0, 0xA5, 0x95, 0xE5, 0x69, 0xA3, 0xE1, 0x86, 0x69, 0x44, 0x40, 0x5B, 0xE7, 0x36 }, - }, - { - { 0x5A, 0x87, 0x99, 0x5F, 0x97, 0xBB, 0x5A, 0x55, 0x61, 0x7F, 0x5F, 0x8B, 0xE9, 0x53, 0xB9, 0x5E, - 0x3C, 0x45, 0xE2, 0x51, 0x5E, 0x7D, 0x38, 0xB6, 0xA4, 0x33, 0xD8, 0xC4, 0xA4, 0xAA, 0x4E, 0xF4 }, - }, - { - { 0x5A, 0x8C, 0x3A, 0x7D, 0x66, 0xEA, 0x0F, 0x6E, 0x88, 0xBE, 0x15, 0xD3, 0x28, 0x62, 0xFB, 0x39, - 0xF2, 0x5F, 0xEA, 0xAC, 0x12, 0xC2, 0xCD, 0x6A, 0x68, 0xE8, 0x9C, 0x4C, 0x30, 0xEE, 0x73, 0x63 }, - }, - { - { 0x5A, 0x8E, 0x86, 0x21, 0x2C, 0x06, 0x33, 0x94, 0x94, 0xF8, 0x5B, 0x5F, 0x85, 0x11, 0xDF, 0x00, - 0x00, 0x23, 0x94, 0x07, 0x8F, 0xFC, 0x77, 0x4D, 0x43, 0x6F, 0x0D, 0x63, 0x86, 0xD7, 0xA6, 0xF7 }, - }, - { - { 0x5A, 0xC0, 0x98, 0x2D, 0xA0, 0xC8, 0x3D, 0x0B, 0xA9, 0x38, 0x1A, 0x5C, 0xD8, 0x7B, 0x80, 0xD1, - 0x10, 0xF2, 0x6E, 0xE8, 0x39, 0x27, 0x1B, 0xC2, 0x70, 0x60, 0x8F, 0xD1, 0x43, 0x7F, 0x55, 0xB0 }, - }, - { - { 0x5A, 0xD0, 0x17, 0xDD, 0x25, 0x23, 0xF2, 0x51, 0xAF, 0x5E, 0xDC, 0xE4, 0x2A, 0x8F, 0x18, 0x5E, - 0x6D, 0x0E, 0x7D, 0xC8, 0x00, 0xF4, 0xA5, 0x9A, 0xF7, 0x7C, 0x12, 0x47, 0x37, 0x69, 0xD9, 0x37 }, - }, - { - { 0x5A, 0xE2, 0xFA, 0x90, 0x43, 0x53, 0x46, 0x3B, 0xAE, 0xE6, 0x96, 0x53, 0xB2, 0x19, 0xC1, 0x5B, - 0xC9, 0xCD, 0x80, 0xE7, 0x01, 0x40, 0x08, 0xE7, 0x26, 0x31, 0x09, 0x79, 0x52, 0x54, 0x8C, 0x60 }, - }, - { - { 0x5A, 0xED, 0x28, 0x2D, 0x88, 0x21, 0xAA, 0xDF, 0x6E, 0x01, 0x0D, 0x94, 0x66, 0x66, 0x09, 0x25, - 0x7C, 0xA0, 0xAF, 0x4C, 0xE5, 0xBD, 0x7F, 0xC9, 0xCD, 0x8C, 0x9F, 0x32, 0x5F, 0xEB, 0xAE, 0x6D }, - }, - { - { 0x5B, 0x1F, 0x32, 0x78, 0x8D, 0xD9, 0xD7, 0xE9, 0x06, 0x80, 0x7D, 0x03, 0x01, 0x45, 0xC8, 0xAD, - 0x20, 0x11, 0x03, 0x0C, 0xDB, 0xF0, 0xA6, 0x03, 0x08, 0x14, 0x93, 0x7E, 0x54, 0xD1, 0x54, 0x68 }, - }, - { - { 0x5B, 0x1F, 0x32, 0xF6, 0x88, 0x12, 0xD9, 0xC3, 0xD3, 0x34, 0x99, 0x39, 0x48, 0x4E, 0x3E, 0xDF, - 0xC6, 0xC2, 0x33, 0xB6, 0x5F, 0x9D, 0xDB, 0x3D, 0x4B, 0x30, 0xFC, 0x4B, 0xE2, 0x0E, 0x0D, 0x84 }, - }, - { - { 0x5B, 0x29, 0x3D, 0x30, 0x9F, 0x64, 0x24, 0xBC, 0x26, 0x4F, 0x4B, 0xB0, 0x18, 0xAE, 0xF5, 0x0E, - 0x63, 0xE3, 0x37, 0xD1, 0x4D, 0xF0, 0x64, 0xC5, 0x7A, 0x23, 0x52, 0x83, 0x42, 0x16, 0x1C, 0x68 }, - }, - { - { 0x5C, 0x06, 0x2F, 0x0D, 0x7E, 0x21, 0x91, 0xDF, 0xC1, 0x60, 0xE4, 0xC0, 0x59, 0xAE, 0xD4, 0xD1, - 0x83, 0xBD, 0x2D, 0x0F, 0x40, 0x98, 0x3D, 0x03, 0xB4, 0xE8, 0xDA, 0xA1, 0x1F, 0xF5, 0xE8, 0x95 }, - }, - { - { 0x5C, 0x35, 0x91, 0x21, 0x9B, 0x7A, 0x55, 0x9A, 0x0D, 0x78, 0xAF, 0xE0, 0x6D, 0xFC, 0x80, 0x85, - 0x78, 0x23, 0xD2, 0x49, 0x56, 0x30, 0x08, 0x22, 0xBB, 0x1D, 0x6E, 0x60, 0x01, 0x98, 0x11, 0xE8 }, - }, - { - { 0x5C, 0x7F, 0xF0, 0x55, 0xC2, 0xFD, 0x03, 0x3F, 0x34, 0xC4, 0xC4, 0xF7, 0xC4, 0xFB, 0x7D, 0xDA, - 0xAA, 0xFB, 0x43, 0x56, 0xC5, 0x60, 0xC9, 0x9E, 0xDF, 0xF0, 0x74, 0xDA, 0x04, 0xAF, 0x65, 0x7C }, - }, - { - { 0x5C, 0xD2, 0x44, 0x6A, 0x8E, 0x4A, 0x0F, 0xA7, 0xE3, 0xCD, 0xF8, 0x00, 0x5D, 0xED, 0xCE, 0xBA, - 0xE9, 0xE6, 0x81, 0x9A, 0x8A, 0x69, 0x87, 0x31, 0x55, 0x5B, 0x7D, 0xC9, 0xD0, 0xA2, 0x3F, 0xC0 }, - }, - { - { 0x5C, 0xEB, 0xEB, 0xD8, 0x34, 0x01, 0xB7, 0x0B, 0xAC, 0xB5, 0x4F, 0x66, 0xA9, 0xB7, 0x78, 0x55, - 0x69, 0x6E, 0xCE, 0x16, 0x7F, 0xE6, 0xC6, 0x0A, 0x05, 0x16, 0x8B, 0xE4, 0x39, 0x19, 0xC8, 0x0F }, - }, - { - { 0x5D, 0x01, 0x5E, 0x1F, 0xF4, 0x40, 0xD8, 0x3E, 0x1E, 0x1C, 0xE0, 0x99, 0x9C, 0x42, 0x6C, 0xED, - 0xD8, 0x75, 0xEE, 0x22, 0x6F, 0x79, 0xA6, 0xD6, 0xB8, 0xFB, 0xBF, 0x14, 0x6A, 0x43, 0xF4, 0x2D }, - }, - { - { 0x5D, 0x69, 0x52, 0x4D, 0xE6, 0x3A, 0x8B, 0xE0, 0x1A, 0x82, 0x31, 0xB4, 0x33, 0x3E, 0xC8, 0x97, - 0x74, 0xC5, 0x8D, 0x82, 0xB4, 0xAD, 0xBD, 0x20, 0x91, 0x42, 0x84, 0x06, 0xA0, 0x6B, 0x16, 0xB0 }, - }, - { - { 0x5E, 0x23, 0xDB, 0xD4, 0xD0, 0xC9, 0xBF, 0xB1, 0x5F, 0x61, 0x6A, 0x95, 0x17, 0xA1, 0x30, 0xD8, - 0x66, 0xA8, 0xCB, 0x0B, 0x18, 0x96, 0x3D, 0x54, 0xE7, 0xED, 0xAE, 0xE2, 0x61, 0xCB, 0x1C, 0x19 }, - }, - { - { 0x5E, 0xAE, 0xD7, 0x13, 0x5C, 0x21, 0x69, 0x76, 0xAD, 0x4E, 0xDC, 0x4D, 0xBB, 0x3F, 0x1F, 0xA1, - 0xF7, 0xC2, 0x85, 0x54, 0xF1, 0x4F, 0x1A, 0xD1, 0xC6, 0x2A, 0xBA, 0xBB, 0x00, 0xCF, 0x7B, 0x66 }, - }, - { - { 0x5F, 0x1E, 0xAE, 0xF6, 0xB7, 0xE3, 0x2F, 0x26, 0xC8, 0x7A, 0xD9, 0x4A, 0x10, 0xF9, 0x0B, 0xF2, - 0xB3, 0x4F, 0x0E, 0x21, 0x13, 0x71, 0x37, 0x0C, 0xB3, 0xDA, 0xCD, 0xE1, 0x00, 0x63, 0x9D, 0xBE }, - }, - { - { 0x5F, 0x30, 0xF0, 0x3A, 0x89, 0xBF, 0x8F, 0x2B, 0x9B, 0x82, 0xC9, 0x35, 0xF8, 0x8E, 0xC6, 0x87, - 0xEC, 0x07, 0xBC, 0xC8, 0x0E, 0xC8, 0x24, 0xE5, 0x74, 0x51, 0x72, 0xB4, 0x50, 0x29, 0x90, 0xBE }, - }, - { - { 0x5F, 0x5C, 0xCA, 0x19, 0x1E, 0xC9, 0x2F, 0x4D, 0xAD, 0x96, 0x6D, 0xAA, 0xFD, 0x6D, 0xE7, 0x56, - 0x34, 0x44, 0x18, 0x60, 0x4D, 0x8A, 0xD5, 0x0A, 0x78, 0x14, 0xF4, 0x39, 0xF4, 0xF2, 0x0A, 0xF1 }, - }, - { - { 0x5F, 0x85, 0xDE, 0xA9, 0xBB, 0x0D, 0x94, 0x81, 0xC2, 0x47, 0x23, 0x2E, 0xF2, 0x5C, 0x77, 0xE8, - 0x4E, 0x68, 0x95, 0x60, 0x0D, 0x0B, 0xDA, 0xF8, 0xE7, 0x0E, 0x82, 0x8A, 0xDC, 0x6F, 0xD4, 0xFF }, - }, - { - { 0x5F, 0x8B, 0x88, 0x8E, 0xE9, 0x6C, 0x0C, 0x0F, 0x5A, 0x91, 0x72, 0x90, 0xAC, 0xA6, 0x5A, 0xFD, - 0x6E, 0xBD, 0xAE, 0x05, 0xA0, 0x2A, 0xAF, 0x04, 0x29, 0xE9, 0x72, 0xEC, 0x01, 0x90, 0xEC, 0xFC }, - }, - { - { 0x60, 0x1A, 0xF7, 0x2F, 0xB0, 0x6F, 0xE6, 0x68, 0x79, 0x92, 0xC5, 0x8F, 0xAC, 0x32, 0xE3, 0x0C, - 0x01, 0x9E, 0xAF, 0x41, 0xE0, 0xB3, 0x85, 0x7E, 0xA9, 0x00, 0xA1, 0x61, 0x08, 0xEB, 0x34, 0xDE }, - }, - { - { 0x60, 0x28, 0x6B, 0x5F, 0xB1, 0xA4, 0x7F, 0x8C, 0x79, 0x3E, 0xBE, 0x0A, 0x4F, 0x9E, 0xA0, 0xEF, - 0xB6, 0xFF, 0xF7, 0xD0, 0x1C, 0x79, 0x10, 0xEF, 0xF7, 0x4E, 0xD3, 0xB2, 0x88, 0xF4, 0xE6, 0x27 }, - }, - { - { 0x60, 0x38, 0x42, 0xEB, 0x89, 0xDA, 0xAD, 0xF7, 0x17, 0xF7, 0xE0, 0x91, 0x22, 0xA0, 0x6A, 0xC8, - 0x19, 0x04, 0x51, 0x2C, 0x2D, 0xA1, 0xCB, 0xC2, 0x90, 0xCC, 0x52, 0xD4, 0xDC, 0x0C, 0x7F, 0xEC }, - }, - { - { 0x60, 0x47, 0xA1, 0x61, 0x21, 0xDA, 0x00, 0xB4, 0x31, 0x60, 0x6D, 0x15, 0xE8, 0x40, 0x5F, 0x0D, - 0x19, 0xCF, 0xFE, 0x7C, 0xDE, 0x91, 0x69, 0x8C, 0x79, 0x4B, 0x3A, 0x35, 0x1D, 0xB1, 0x4D, 0x6B }, - }, - { - { 0x60, 0x4C, 0xE5, 0x2B, 0x8F, 0xC5, 0x72, 0xF0, 0xEC, 0x55, 0xF1, 0xC6, 0x37, 0x08, 0xDF, 0xD9, - 0x7E, 0xF1, 0xC7, 0x99, 0xD4, 0x8C, 0x27, 0x6B, 0x37, 0x34, 0x75, 0xE3, 0xA4, 0x61, 0xF3, 0x12 }, - }, - { - { 0x60, 0x69, 0xE0, 0x4E, 0xF3, 0x7E, 0xE3, 0x29, 0xCF, 0x15, 0xE9, 0xFD, 0x64, 0x1F, 0x18, 0x24, - 0xB8, 0x4B, 0x34, 0x4B, 0x63, 0x80, 0x30, 0x05, 0x81, 0x66, 0x2B, 0x2D, 0x44, 0x31, 0x3A, 0x95 }, - }, - { - { 0x60, 0xA3, 0xFB, 0x74, 0x7C, 0xF6, 0x5B, 0x04, 0xE9, 0xBE, 0x15, 0xDA, 0x26, 0xA9, 0xDD, 0x99, - 0x59, 0x71, 0xA9, 0x1A, 0x6F, 0x02, 0xE0, 0x14, 0xA9, 0xD7, 0x4D, 0x1F, 0x69, 0x45, 0xE1, 0x2E }, - }, - { - { 0x60, 0xCA, 0x81, 0xE3, 0x5B, 0x9A, 0x6F, 0x07, 0xE1, 0x3C, 0x02, 0xAE, 0x41, 0x15, 0xB0, 0x00, - 0x54, 0x30, 0xCF, 0x46, 0x0E, 0xFC, 0x7D, 0xBA, 0xF1, 0x5F, 0x51, 0xF7, 0xA9, 0x4A, 0xD1, 0x6A }, - }, - { - { 0x60, 0xDF, 0xF2, 0xAB, 0xA6, 0x5C, 0x74, 0xB5, 0x07, 0x49, 0x16, 0x32, 0xAD, 0x81, 0xC0, 0x9A, - 0x54, 0x71, 0xAE, 0xE8, 0x7C, 0xA1, 0x58, 0x03, 0x5D, 0x66, 0x79, 0x47, 0x83, 0x5E, 0xA8, 0xBF }, - }, - { - { 0x61, 0x65, 0xFD, 0x7A, 0x3D, 0xCB, 0x29, 0xAD, 0x23, 0xCC, 0x44, 0x64, 0x4F, 0xC2, 0x23, 0x25, - 0x94, 0x5D, 0xDF, 0xED, 0x0C, 0x18, 0xB3, 0x5B, 0x17, 0x43, 0xAD, 0x96, 0x28, 0x43, 0x69, 0xBE }, - }, - { - { 0x61, 0x91, 0x5B, 0xC8, 0xDF, 0x67, 0x8C, 0x52, 0xA2, 0x3C, 0x2D, 0x53, 0xC6, 0x47, 0x31, 0x4E, - 0x63, 0x6E, 0xEF, 0xC5, 0x40, 0x81, 0xA7, 0x0D, 0x3A, 0xC1, 0x45, 0x28, 0x66, 0x1D, 0x62, 0xFF }, - }, - { - { 0x61, 0xA7, 0x62, 0xEF, 0x47, 0xBC, 0xA4, 0xEE, 0x77, 0xA5, 0xC8, 0xAF, 0x03, 0x98, 0x9A, 0x9D, - 0xEA, 0xCA, 0x4D, 0x82, 0x8A, 0x53, 0xD9, 0x23, 0xE7, 0x0B, 0xFB, 0xC7, 0x25, 0x4A, 0xC7, 0x70 }, - }, - { - { 0x61, 0xC8, 0xF2, 0xE2, 0x97, 0xD0, 0x51, 0x91, 0x32, 0x07, 0xEF, 0x02, 0x93, 0x63, 0xB8, 0xE7, - 0x33, 0x7A, 0x39, 0x6E, 0x09, 0x9C, 0xA9, 0xDC, 0xF8, 0x07, 0x33, 0x97, 0x32, 0x66, 0x4B, 0x74 }, - }, - { - { 0x62, 0x2E, 0xC3, 0xBE, 0x7C, 0xF5, 0xE4, 0xE6, 0x3F, 0x74, 0x18, 0x69, 0x28, 0x74, 0x40, 0x05, - 0xCB, 0xB7, 0x8D, 0xF3, 0x06, 0xB8, 0x67, 0xC3, 0xFC, 0xAD, 0x5E, 0x2B, 0xA7, 0x53, 0x96, 0x83 }, - }, - { - { 0x62, 0x61, 0x3D, 0xA8, 0x69, 0xE5, 0xA2, 0x36, 0xC1, 0x29, 0x21, 0x73, 0x87, 0x25, 0xE9, 0x7C, - 0x68, 0x05, 0x8D, 0x04, 0x0A, 0x07, 0xE9, 0x65, 0x4B, 0x2D, 0xF5, 0xE2, 0xD8, 0x7D, 0x05, 0x1F }, - }, - { - { 0x62, 0x6F, 0x7E, 0xB4, 0xFD, 0x9B, 0x71, 0xFF, 0xAA, 0x0C, 0x8E, 0xC9, 0x65, 0x54, 0x64, 0xE6, - 0x5E, 0x7F, 0x96, 0xCF, 0xA3, 0x82, 0x73, 0x97, 0x41, 0x35, 0x66, 0xAA, 0x2C, 0xC1, 0xE5, 0x72 }, - }, - { - { 0x63, 0x35, 0x8C, 0x6D, 0xEB, 0xDF, 0x48, 0x2B, 0xB2, 0xD3, 0x21, 0x13, 0xD3, 0xF0, 0xB1, 0x73, - 0x77, 0xE2, 0xF7, 0xC9, 0x25, 0xB9, 0xFE, 0xB3, 0x47, 0x8B, 0xD9, 0x94, 0x56, 0x31, 0x3E, 0x78 }, - }, - { - { 0x63, 0x64, 0x15, 0x61, 0x77, 0xDC, 0xDF, 0x60, 0x4D, 0xF9, 0x1E, 0x31, 0x32, 0x2E, 0x57, 0x74, - 0x69, 0x1E, 0x0C, 0x41, 0xFA, 0x0D, 0x2F, 0x25, 0x7A, 0xD7, 0xF9, 0xF0, 0x25, 0x98, 0x14, 0x45 }, - }, - { - { 0x63, 0x65, 0xEB, 0x4E, 0x37, 0xEA, 0x23, 0x8B, 0xBC, 0x40, 0xA7, 0x65, 0x1E, 0xDD, 0x9A, 0x1C, - 0x65, 0xFC, 0x54, 0xE3, 0xB8, 0x8F, 0xA7, 0xA0, 0x6D, 0x92, 0xC6, 0x13, 0xAE, 0xDE, 0xD6, 0x5D }, - }, - { - { 0x63, 0x6A, 0x25, 0xBD, 0xDB, 0xB6, 0x5E, 0x7C, 0xC0, 0xE6, 0x1F, 0x91, 0xCA, 0xFE, 0xB1, 0xFE, - 0x5D, 0xD2, 0x67, 0xAC, 0x67, 0x32, 0x25, 0xCC, 0x81, 0x8E, 0xA0, 0x2B, 0x9C, 0xC9, 0x4B, 0xE2 }, - }, - { - { 0x63, 0x80, 0x65, 0xEC, 0x95, 0xF1, 0xEA, 0x81, 0xD9, 0x5B, 0xA4, 0xDB, 0x9E, 0xA9, 0xA2, 0xEF, - 0xE2, 0xD6, 0xCD, 0x78, 0x75, 0x88, 0x67, 0x04, 0x5C, 0x06, 0xB6, 0x48, 0xA5, 0xDA, 0x89, 0xB2 }, - }, - { - { 0x63, 0xEA, 0x63, 0x4F, 0x3C, 0x84, 0x62, 0x3C, 0xF7, 0xB0, 0x61, 0x29, 0xE2, 0x7A, 0xCD, 0xF2, - 0x13, 0xD2, 0x52, 0xBE, 0x85, 0x87, 0xEB, 0xB0, 0x7A, 0x63, 0x68, 0x07, 0x78, 0x2B, 0xBD, 0x61 }, - }, - { - { 0x64, 0x87, 0xC9, 0x20, 0xB1, 0x30, 0x16, 0xF4, 0xA0, 0xAA, 0xD3, 0x9F, 0xE1, 0x97, 0x8B, 0xEC, - 0xE9, 0xF4, 0xFA, 0x13, 0xED, 0x0C, 0x42, 0x4D, 0xAA, 0x41, 0x6B, 0xAA, 0x75, 0x89, 0x62, 0x01 }, - }, - { - { 0x64, 0xD4, 0x92, 0x41, 0x6E, 0xE0, 0x55, 0x57, 0x9C, 0x46, 0x3B, 0x21, 0x1A, 0xFE, 0xF7, 0x46, - 0xC3, 0x30, 0xCA, 0x05, 0xF4, 0x4D, 0x85, 0x90, 0x85, 0x59, 0x5D, 0x6F, 0x10, 0xE5, 0x0E, 0xC4 }, - }, - { - { 0x64, 0xDE, 0xB1, 0x36, 0xA4, 0x3E, 0x7D, 0x21, 0x62, 0x29, 0x9B, 0x82, 0xA4, 0xFE, 0x8D, 0xB9, - 0x60, 0xC6, 0x61, 0x7C, 0x60, 0x3B, 0x7D, 0x96, 0x72, 0xA6, 0x2C, 0xA1, 0x40, 0xA6, 0xDA, 0x6A }, - }, - { - { 0x65, 0x66, 0x00, 0xA4, 0x5E, 0x45, 0x6A, 0xBA, 0x5B, 0x00, 0x8D, 0x87, 0x91, 0x54, 0xB7, 0x69, - 0x0D, 0x7F, 0x27, 0x31, 0x02, 0x09, 0x7D, 0x8F, 0xD8, 0xC3, 0xDE, 0xAB, 0x30, 0xD8, 0x4A, 0xB2 }, - }, - { - { 0x65, 0xC1, 0x3A, 0x93, 0x7F, 0xCD, 0x1E, 0xAC, 0x7D, 0x52, 0x33, 0x03, 0xB9, 0x09, 0x91, 0x75, - 0xFE, 0xB7, 0xC3, 0x57, 0x0F, 0xBD, 0xA2, 0xE5, 0x7D, 0x57, 0xD3, 0xFC, 0x47, 0x24, 0xDC, 0xB5 }, - }, - { - { 0x65, 0xEB, 0x8A, 0x1C, 0x57, 0x67, 0x6D, 0x21, 0x53, 0xF2, 0x1A, 0x34, 0x11, 0xB8, 0x9C, 0xCD, - 0x71, 0xBC, 0xC8, 0xC9, 0xDC, 0x2C, 0xC6, 0x1F, 0x83, 0x65, 0x27, 0xE0, 0x81, 0xC0, 0x56, 0x72 }, - }, - { - { 0x65, 0xED, 0x61, 0xA8, 0x8C, 0x55, 0xEF, 0xB0, 0x38, 0x07, 0x1A, 0xEE, 0xDE, 0xF8, 0xE1, 0x83, - 0xE2, 0x37, 0x38, 0x46, 0x97, 0x26, 0xEB, 0x99, 0x68, 0x0C, 0xD2, 0x44, 0x72, 0x73, 0x6B, 0xEC }, - }, - { - { 0x66, 0x07, 0xDF, 0xFF, 0x5D, 0x0B, 0xD3, 0xC9, 0x75, 0x92, 0xCC, 0x75, 0x39, 0x4D, 0x8B, 0x58, - 0x59, 0xF7, 0x5D, 0xA5, 0x12, 0x31, 0x34, 0xD7, 0xC7, 0xE2, 0x1A, 0xA7, 0x48, 0x91, 0x84, 0xEB }, - }, - { - { 0x66, 0x30, 0xB4, 0x4A, 0x1A, 0x28, 0xDE, 0xCB, 0x3B, 0x58, 0xED, 0xCE, 0xEC, 0x13, 0xB2, 0xC5, - 0xA7, 0x4F, 0x38, 0x6A, 0x1B, 0xF1, 0x18, 0x73, 0x75, 0xDE, 0x17, 0x8E, 0x4E, 0x9B, 0xB2, 0x8E }, - }, - { - { 0x66, 0x49, 0xE0, 0x34, 0xC6, 0x9D, 0x14, 0x24, 0xD2, 0x8C, 0x42, 0x68, 0xBA, 0x95, 0x1E, 0xE1, - 0xB4, 0x8A, 0xE1, 0x5F, 0xEB, 0xE7, 0xD6, 0xBE, 0x9D, 0x75, 0xF6, 0xA4, 0xAC, 0x7A, 0xC2, 0x53 }, - }, - { - { 0x66, 0x50, 0xB2, 0xEA, 0x64, 0x4C, 0x3F, 0x4E, 0x8C, 0x9E, 0x3C, 0x46, 0xAC, 0xEA, 0xC4, 0x52, - 0x33, 0xD8, 0x66, 0xE3, 0x98, 0xFF, 0x90, 0xEB, 0x59, 0xB2, 0xC6, 0x25, 0x20, 0x82, 0xAC, 0x04 }, - }, - { - { 0x66, 0x72, 0x1F, 0xE0, 0x69, 0xF1, 0xAA, 0x25, 0x32, 0x11, 0x68, 0x0E, 0xAD, 0x5C, 0x9E, 0x3D, - 0x12, 0x3C, 0x21, 0x24, 0xD3, 0xA2, 0xA4, 0xBD, 0x78, 0x82, 0xF7, 0x36, 0x5A, 0x33, 0x05, 0xA3 }, - }, - { - { 0x66, 0x79, 0x28, 0x7E, 0xBB, 0xC5, 0x67, 0x48, 0xEE, 0xD6, 0x8F, 0x9E, 0x4C, 0xCF, 0x24, 0xEF, - 0x96, 0xA4, 0x1F, 0x73, 0xBB, 0x83, 0x4A, 0x51, 0x71, 0x64, 0xF0, 0x41, 0xCC, 0x5D, 0x86, 0x05 }, - }, - { - { 0x66, 0xBE, 0x7E, 0xA1, 0x13, 0x8B, 0xCB, 0xA4, 0xDE, 0x0B, 0x41, 0x28, 0x5D, 0x9A, 0x13, 0x3F, - 0xA7, 0xF5, 0x70, 0xA3, 0xC8, 0x13, 0x55, 0x79, 0xB8, 0x60, 0x19, 0x9D, 0x0A, 0x51, 0x45, 0x7C }, - }, - { - { 0x66, 0xC9, 0x9A, 0x49, 0x61, 0x2E, 0x60, 0x18, 0x90, 0x02, 0xE2, 0x03, 0x04, 0xD2, 0xFC, 0xC5, - 0xBE, 0x07, 0x59, 0xDF, 0xBA, 0x84, 0x04, 0x70, 0x7E, 0x85, 0x37, 0x00, 0x26, 0x51, 0x84, 0x85 }, - }, - { - { 0x67, 0xA1, 0xBD, 0x09, 0x91, 0x6A, 0x22, 0xC0, 0x53, 0x3D, 0x0B, 0xF6, 0xCA, 0x1F, 0x3B, 0x03, - 0x3F, 0xAD, 0xCA, 0xC1, 0xFF, 0x8A, 0x89, 0x94, 0xD7, 0xF5, 0xC4, 0x79, 0xAD, 0x3A, 0x2E, 0xF5 }, - }, - { - { 0x67, 0xC3, 0xC0, 0xA1, 0x60, 0xE9, 0x28, 0x5E, 0x35, 0xA4, 0x22, 0xBB, 0x43, 0x4B, 0xFF, 0xFF, - 0xEE, 0x28, 0x79, 0xC6, 0xC0, 0xA5, 0x69, 0x36, 0x56, 0xE7, 0x73, 0xA6, 0xDD, 0x68, 0x5F, 0x0E }, - }, - { - { 0x67, 0xCF, 0x34, 0x6C, 0xF2, 0x46, 0x77, 0x1B, 0x3F, 0x5F, 0x3E, 0x51, 0xCD, 0x75, 0x4E, 0x10, - 0x93, 0x27, 0x3D, 0x35, 0x69, 0x88, 0x80, 0x84, 0x26, 0xF5, 0xDD, 0x2E, 0xD4, 0x8B, 0xBF, 0x49 }, - }, - { - { 0x68, 0x6E, 0xA9, 0xA7, 0x73, 0x2C, 0x5A, 0x6E, 0xDC, 0xA8, 0x44, 0xA6, 0x1F, 0x9D, 0xFD, 0x05, - 0xAC, 0x2F, 0x80, 0xF6, 0xC7, 0xED, 0x5E, 0xDF, 0x19, 0x9B, 0x8B, 0xD2, 0x78, 0x5D, 0x92, 0xFC }, - }, - { - { 0x68, 0x99, 0x4C, 0xFE, 0x06, 0x8D, 0xE8, 0x75, 0xEC, 0x56, 0x82, 0xBE, 0x3C, 0x5C, 0xB3, 0x25, - 0x47, 0x3B, 0x21, 0x25, 0xE6, 0xF1, 0xF3, 0xEA, 0x57, 0xCC, 0x09, 0xFE, 0x25, 0xB5, 0xB6, 0x93 }, - }, - { - { 0x68, 0xD3, 0x49, 0x5B, 0x3C, 0xAE, 0xE4, 0x1A, 0x70, 0x9A, 0x41, 0x65, 0xD4, 0x9D, 0xFE, 0xE7, - 0x4D, 0xCF, 0xB6, 0xD1, 0x3F, 0x7C, 0xF9, 0x43, 0xAA, 0xFF, 0xB9, 0xE6, 0xDC, 0x81, 0xDB, 0x04 }, - }, - { - { 0x69, 0x01, 0x4B, 0xBC, 0x84, 0x29, 0xD8, 0x5F, 0x41, 0xC2, 0x22, 0xD9, 0x7F, 0x7E, 0xD5, 0x35, - 0xCF, 0x81, 0x23, 0x9A, 0xF2, 0x7A, 0xCC, 0x88, 0x70, 0xDC, 0xD4, 0x08, 0x34, 0x8B, 0x48, 0xBA }, - }, - { - { 0x69, 0x21, 0x1F, 0x36, 0x3A, 0x2D, 0xBE, 0x01, 0x5B, 0x31, 0xCB, 0xD9, 0xFC, 0x5E, 0x94, 0xC2, - 0xF6, 0xF4, 0x3C, 0x58, 0xDB, 0xDE, 0xE9, 0xE3, 0xE4, 0x6B, 0x19, 0xD7, 0x59, 0xBB, 0xB8, 0x81 }, - }, - { - { 0x69, 0x44, 0xFE, 0x2E, 0xFD, 0x6C, 0x78, 0xE1, 0x40, 0x74, 0xBC, 0x3D, 0x9A, 0xC2, 0x3C, 0x8A, - 0x65, 0x7D, 0x0E, 0x8E, 0xBD, 0xF7, 0x4E, 0xC2, 0xCD, 0x26, 0x67, 0x74, 0x9D, 0x9D, 0xAD, 0xCB }, - }, - { - { 0x69, 0x52, 0x89, 0x99, 0x34, 0xD7, 0x23, 0x2B, 0xF9, 0xF6, 0x96, 0x8B, 0xCA, 0x13, 0x43, 0x92, - 0x47, 0xBF, 0xC3, 0x65, 0x92, 0x98, 0x00, 0x3D, 0xB1, 0xEE, 0xB7, 0x43, 0x92, 0x81, 0xB1, 0xD6 }, - }, - { - { 0x69, 0x54, 0x0E, 0x3B, 0xAB, 0x9A, 0x6E, 0x46, 0x58, 0x62, 0xCF, 0x2B, 0xCA, 0x5A, 0x63, 0x62, - 0x55, 0xF6, 0x9D, 0x46, 0x26, 0x39, 0xD3, 0xD9, 0x23, 0xFF, 0x93, 0x91, 0x90, 0x1B, 0x6C, 0x92 }, - }, - { - { 0x69, 0x75, 0x67, 0xBB, 0xAC, 0x94, 0xEE, 0xC3, 0xE6, 0xFA, 0x4A, 0x4E, 0x46, 0xFA, 0x51, 0x74, - 0x05, 0xF3, 0x77, 0xC0, 0xDE, 0xE3, 0xD4, 0x29, 0x91, 0x4E, 0x6B, 0x7E, 0xA0, 0x8C, 0xB1, 0xA6 }, - }, - { - { 0x69, 0xD3, 0x38, 0xE5, 0xD8, 0xC0, 0x69, 0xE7, 0xDC, 0x10, 0xD3, 0x82, 0x1F, 0x7A, 0x83, 0x0D, - 0xEB, 0x5D, 0x95, 0x7C, 0x8E, 0xC6, 0xEC, 0xD2, 0x5A, 0xF7, 0x24, 0x3E, 0xD0, 0xE4, 0xDC, 0x26 }, - }, - { - { 0x6A, 0x9C, 0x89, 0x45, 0x1E, 0xF3, 0xC9, 0xE3, 0xA2, 0x96, 0x2F, 0x8D, 0xB6, 0xF8, 0x7D, 0x20, - 0x77, 0x8D, 0x05, 0xA8, 0x74, 0x34, 0xA0, 0x78, 0x2B, 0x02, 0x53, 0x6D, 0xCD, 0x02, 0x4B, 0x4B }, - }, - { - { 0x6A, 0xAC, 0xC5, 0x09, 0x2F, 0x12, 0xBC, 0x94, 0xA0, 0xAD, 0x0E, 0x9E, 0xF6, 0x36, 0x43, 0x7D, - 0x36, 0x0D, 0xC7, 0xC9, 0xF1, 0x40, 0x44, 0x17, 0xA3, 0x36, 0x91, 0x94, 0x4E, 0x76, 0x31, 0x36 }, - }, - { - { 0x6A, 0xC3, 0x2D, 0xA9, 0x16, 0x8F, 0x70, 0xD0, 0x9F, 0xE9, 0xF7, 0x55, 0x3E, 0x67, 0x0F, 0xA4, - 0xAA, 0xAC, 0xE8, 0x7B, 0x5A, 0x0B, 0x9A, 0x3F, 0x22, 0x2D, 0x7A, 0x8B, 0xBA, 0x76, 0xD2, 0xF2 }, - }, - { - { 0x6A, 0xE7, 0x98, 0xD7, 0xDE, 0x07, 0x84, 0x90, 0xA5, 0x0F, 0x73, 0x89, 0x86, 0xD4, 0x03, 0x39, - 0x42, 0x97, 0x9D, 0xE2, 0x42, 0x6A, 0xFA, 0x95, 0x42, 0x24, 0x2E, 0x76, 0x3F, 0xEC, 0xF4, 0xA6 }, - }, - { - { 0x6B, 0x15, 0x66, 0xBF, 0x94, 0xA2, 0x26, 0xEE, 0x7C, 0xF3, 0x67, 0x5D, 0x63, 0x92, 0x73, 0x16, - 0x54, 0x56, 0x4B, 0x05, 0xC7, 0x2F, 0xCD, 0x7F, 0x6A, 0x97, 0xBA, 0xA1, 0x53, 0xE7, 0x6A, 0x18 }, - }, - { - { 0x6B, 0x37, 0xDD, 0x56, 0xDB, 0xC9, 0x97, 0x01, 0xEE, 0x6B, 0x55, 0x75, 0x23, 0x8B, 0x1E, 0xCF, - 0x35, 0xDF, 0x1B, 0x5E, 0x85, 0x91, 0x09, 0x1D, 0xB6, 0x8C, 0xC3, 0x5B, 0xD5, 0xA3, 0x6C, 0xE4 }, - }, - { - { 0x6B, 0x4A, 0x8C, 0xB6, 0x07, 0xF5, 0x1C, 0x83, 0x0D, 0xE7, 0x20, 0xF4, 0xBB, 0xDE, 0xDF, 0x49, - 0x10, 0x15, 0x13, 0xDF, 0xD1, 0xDB, 0x0B, 0x0A, 0x97, 0xCC, 0x3F, 0xDD, 0x9A, 0x39, 0xC6, 0xE7 }, - }, - { - { 0x6C, 0x07, 0x12, 0x67, 0x53, 0x03, 0x6A, 0x21, 0xBD, 0x20, 0xFC, 0x64, 0xEC, 0x6B, 0xA6, 0xE7, - 0x32, 0x59, 0x19, 0x1C, 0xBB, 0xBB, 0xFF, 0x21, 0x03, 0x74, 0xC8, 0x9E, 0x64, 0xF4, 0xD8, 0xD6 }, - }, - { - { 0x6C, 0x21, 0xDC, 0xB3, 0x38, 0x5C, 0x2B, 0x75, 0xA1, 0x5B, 0x2F, 0x61, 0x22, 0xFB, 0x58, 0xA1, - 0x24, 0x86, 0xAA, 0x4A, 0x4D, 0x23, 0x9E, 0xD0, 0x16, 0x74, 0x35, 0x8C, 0x9C, 0x71, 0x48, 0x6D }, - }, - { - { 0x6C, 0x67, 0xE6, 0x03, 0x63, 0x52, 0x5A, 0x65, 0x0A, 0x86, 0xB5, 0xE9, 0x46, 0x09, 0xDE, 0x13, - 0xF6, 0xBD, 0xB9, 0x0E, 0xCC, 0x2B, 0xB2, 0xA1, 0x8F, 0xDA, 0x99, 0x59, 0x52, 0x3A, 0x18, 0xD9 }, - }, - { - { 0x6C, 0x72, 0x94, 0x87, 0xC9, 0x02, 0x5D, 0x18, 0x10, 0x51, 0x29, 0xFA, 0x0B, 0xA2, 0x94, 0x4D, - 0xA8, 0x6A, 0xF1, 0xDB, 0x2D, 0x03, 0x4B, 0xE2, 0xBB, 0x73, 0x64, 0x50, 0x0C, 0x05, 0xA6, 0xDE }, - }, - { - { 0x6C, 0x8D, 0x4E, 0x52, 0x7E, 0x74, 0x08, 0x82, 0x6D, 0xB8, 0x4D, 0x04, 0x1A, 0x0E, 0x29, 0xD6, - 0xDE, 0x13, 0xA6, 0x1E, 0x63, 0x6B, 0xF6, 0xB6, 0xF5, 0xF6, 0x75, 0x42, 0x7A, 0xCE, 0xCE, 0x9E }, - }, - { - { 0x6C, 0x8F, 0xD1, 0xE6, 0xE1, 0x1B, 0xAF, 0xA6, 0x17, 0x78, 0x13, 0xA0, 0x44, 0x40, 0xB1, 0xB9, - 0x6A, 0x1C, 0xDB, 0x7C, 0x2D, 0x70, 0x3F, 0x55, 0xDE, 0x85, 0x7C, 0x80, 0xA8, 0x9E, 0x73, 0x25 }, - }, - { - { 0x6C, 0xC6, 0xDC, 0xDA, 0x58, 0xC6, 0x1F, 0xB2, 0x86, 0x70, 0xD1, 0xC2, 0x01, 0x76, 0x57, 0xB0, - 0xC5, 0xD6, 0x1A, 0x26, 0xC9, 0xCB, 0xD1, 0xEA, 0x75, 0x5C, 0x68, 0x20, 0xB5, 0xF6, 0xD6, 0x7D }, - }, - { - { 0x6C, 0xC8, 0x0F, 0x47, 0x96, 0x4E, 0x0D, 0xCB, 0x39, 0xE4, 0xD0, 0x1B, 0x3B, 0x3E, 0xBC, 0x8B, - 0x9C, 0x77, 0xB4, 0x08, 0x59, 0xBB, 0x5D, 0x5C, 0x31, 0x27, 0x4D, 0xA5, 0x39, 0xFA, 0xCA, 0x8D }, - }, - { - { 0x6D, 0x32, 0xF4, 0x93, 0x40, 0x56, 0xEE, 0x17, 0x14, 0xCA, 0x72, 0x70, 0x3F, 0x64, 0x46, 0x9B, - 0x98, 0x58, 0xFC, 0x39, 0x96, 0x4B, 0x4C, 0x03, 0x93, 0xB3, 0x7D, 0xDE, 0xAB, 0x8B, 0x19, 0x75 }, - }, - { - { 0x6D, 0x4E, 0xD4, 0x29, 0x38, 0x15, 0x90, 0xBD, 0x3C, 0x6B, 0x7C, 0xB7, 0xE4, 0xE4, 0x25, 0xC8, - 0xE2, 0x1F, 0x79, 0xFF, 0x4D, 0x40, 0x00, 0xB9, 0x65, 0x3F, 0xA1, 0x27, 0xE1, 0x41, 0xD3, 0x50 }, - }, - { - { 0x6D, 0x4E, 0xE5, 0x3B, 0xF9, 0x9F, 0xFA, 0xBB, 0x1C, 0x9B, 0x77, 0x96, 0x66, 0xEF, 0xC4, 0x5E, - 0x6A, 0xB3, 0xFA, 0x74, 0xAB, 0x37, 0x30, 0x9F, 0x8C, 0xDE, 0xF7, 0x2C, 0x94, 0x39, 0x23, 0xEE }, - }, - { - { 0x6D, 0x84, 0x0B, 0xBB, 0xA9, 0x3F, 0x53, 0x9B, 0xE0, 0x84, 0x9D, 0x26, 0xD5, 0x27, 0x7B, 0xD7, - 0xF2, 0x4B, 0xBA, 0x93, 0x5E, 0x05, 0x0D, 0x11, 0x26, 0xD7, 0x78, 0x22, 0xB5, 0x90, 0x26, 0x83 }, - }, - { - { 0x6D, 0xC9, 0x87, 0x5C, 0xD3, 0x46, 0xA2, 0x2B, 0x47, 0xB2, 0x80, 0xB1, 0xB1, 0x45, 0x0D, 0x87, - 0x8E, 0x09, 0x8B, 0xB2, 0xE2, 0xA9, 0xE3, 0xC2, 0x5C, 0xC7, 0x6A, 0xFF, 0x93, 0xC0, 0xBE, 0xAB }, - }, - { - { 0x6E, 0x0C, 0x0B, 0x5D, 0x7B, 0x82, 0x23, 0x21, 0x87, 0x41, 0xE6, 0x7B, 0x87, 0x6C, 0xCB, 0x8C, - 0xB5, 0x81, 0x11, 0x48, 0x82, 0x87, 0xDA, 0x8C, 0x30, 0x64, 0xE8, 0x2E, 0xCC, 0xC2, 0x70, 0x12 }, - }, - { - { 0x6E, 0x16, 0x35, 0x9E, 0x05, 0xEB, 0x14, 0xEC, 0x86, 0xEE, 0xE5, 0x9D, 0x01, 0x0C, 0xD6, 0x4F, - 0x1D, 0x1B, 0x4B, 0xA1, 0xEF, 0x46, 0xA2, 0x0F, 0x35, 0xC6, 0xA6, 0x3D, 0xC5, 0x3A, 0x2A, 0xCB }, - }, - { - { 0x6E, 0x1A, 0x88, 0x63, 0xF2, 0x93, 0x4B, 0x39, 0x01, 0x23, 0x7E, 0x84, 0xD0, 0x76, 0x27, 0x04, - 0x23, 0x06, 0x78, 0x7F, 0x2D, 0xE0, 0x66, 0x30, 0xBD, 0x37, 0xD8, 0x03, 0x94, 0x35, 0xBF, 0xCA }, - }, - { - { 0x6E, 0x1C, 0xB1, 0x2A, 0x08, 0x3C, 0x89, 0x08, 0xFB, 0x06, 0x04, 0x56, 0xEE, 0xE8, 0x74, 0xED, - 0xD9, 0xFA, 0x71, 0x3F, 0x26, 0x95, 0xEE, 0x5E, 0xE8, 0x59, 0x84, 0x83, 0xE3, 0x02, 0x8F, 0x0B }, - }, - { - { 0x6E, 0x8D, 0x55, 0xEE, 0x2F, 0x72, 0x5A, 0x0B, 0xA5, 0xDF, 0x43, 0x43, 0xA0, 0x6F, 0xD3, 0x71, - 0x54, 0x25, 0x6B, 0xCF, 0xF7, 0xCE, 0xE0, 0xB7, 0x00, 0xAC, 0xDD, 0x91, 0x56, 0x49, 0x79, 0x99 }, - }, - { - { 0x6E, 0xB8, 0xA7, 0xBA, 0x7F, 0xC2, 0x1C, 0x62, 0x40, 0x3F, 0x63, 0x76, 0xBB, 0x10, 0x44, 0x82, - 0x48, 0x8D, 0xA9, 0xC1, 0x41, 0x4A, 0xE3, 0xAB, 0x06, 0xE0, 0x1E, 0xD7, 0x32, 0x42, 0xAB, 0xD7 }, - }, - { - { 0x6E, 0xEB, 0x39, 0xDA, 0xD7, 0x3F, 0xC5, 0x99, 0x72, 0x42, 0x17, 0xCF, 0xF0, 0x21, 0xD5, 0xAC, - 0x4E, 0x7E, 0x2B, 0xF4, 0x76, 0xEA, 0xF4, 0xFD, 0x4D, 0x7B, 0xFB, 0x6E, 0x4F, 0x18, 0xC1, 0x73 }, - }, - { - { 0x6F, 0x1C, 0x4A, 0x29, 0x79, 0xFC, 0xBE, 0xAD, 0xC5, 0xD5, 0x80, 0xE5, 0xBF, 0xDB, 0xF8, 0x4C, - 0xC6, 0xA0, 0xF2, 0xA9, 0x2E, 0xB1, 0xC6, 0x88, 0xD5, 0x31, 0x3A, 0x0F, 0xDA, 0xCF, 0x0B, 0x56 }, - }, - { - { 0x6F, 0x3B, 0xB3, 0x4B, 0x5D, 0x32, 0x91, 0xDF, 0xB3, 0xE4, 0x12, 0x71, 0xA1, 0xD7, 0x30, 0xCD, - 0xBC, 0xFF, 0xC1, 0x0B, 0x68, 0x05, 0x9D, 0xCC, 0xD3, 0x1C, 0x47, 0x4B, 0xB7, 0x44, 0x16, 0xE5 }, - }, - { - { 0x6F, 0x7E, 0x99, 0xB2, 0x6C, 0xF2, 0x57, 0x61, 0xCA, 0x87, 0xD7, 0x0E, 0xB1, 0xDD, 0x32, 0xCD, - 0x0D, 0x2B, 0xD1, 0xFE, 0x7F, 0x62, 0x2E, 0xF6, 0x47, 0x18, 0x9C, 0xEB, 0x91, 0x43, 0x8D, 0x99 }, - }, - { - { 0x6F, 0x92, 0x7B, 0x13, 0xE5, 0x9C, 0xA9, 0x87, 0x61, 0x82, 0x07, 0xAF, 0xED, 0xE2, 0xE8, 0xE1, - 0xD9, 0xC3, 0x03, 0xE1, 0xF1, 0x2F, 0x19, 0x2D, 0xF3, 0xF7, 0x0E, 0x5D, 0x1D, 0x4D, 0x2C, 0x18 }, - }, - { - { 0x6F, 0x95, 0xDB, 0x28, 0x26, 0x61, 0x3C, 0xA6, 0x12, 0x0D, 0x81, 0x15, 0xFB, 0xA3, 0xDD, 0x0A, - 0x2A, 0x22, 0x31, 0x2D, 0x74, 0x88, 0xBF, 0x77, 0x0F, 0x9C, 0x57, 0x96, 0xC9, 0x02, 0xBC, 0xC3 }, - }, - { - { 0x6F, 0xB0, 0x06, 0xB4, 0x5F, 0x4A, 0xB6, 0xF5, 0x28, 0x12, 0xBD, 0x1F, 0x9D, 0x8C, 0xF1, 0x0E, - 0x2B, 0x4C, 0x8C, 0xE5, 0x2A, 0x4D, 0xF6, 0x56, 0x84, 0xF3, 0x08, 0x48, 0x1C, 0xEE, 0xC8, 0x93 }, - }, - { - { 0x6F, 0xBD, 0xCD, 0xF1, 0xB4, 0x37, 0x9F, 0xC4, 0x73, 0xAB, 0x5E, 0xEA, 0x4E, 0xC2, 0xF4, 0x84, - 0xCE, 0x91, 0xD1, 0x0E, 0x31, 0x34, 0x5F, 0x15, 0xA7, 0x6A, 0x84, 0x85, 0xB8, 0xFF, 0xFB, 0x7E }, - }, - { - { 0x6F, 0xDC, 0x18, 0xD6, 0x55, 0x14, 0xDD, 0xCE, 0xF0, 0x2F, 0xEA, 0x81, 0x7A, 0x1B, 0x70, 0x84, - 0x71, 0x95, 0xFF, 0x5C, 0x07, 0xB1, 0x3D, 0x6A, 0x97, 0x1E, 0x0E, 0x77, 0x4B, 0x44, 0x10, 0xA0 }, - }, - { - { 0x70, 0xB8, 0xEC, 0xD5, 0x62, 0xEC, 0x3D, 0x9F, 0x48, 0x64, 0x75, 0x2A, 0x3A, 0x8C, 0x54, 0x39, - 0x93, 0xB4, 0x38, 0x72, 0x8F, 0xE2, 0x71, 0x81, 0xF4, 0xC0, 0x8D, 0xE6, 0xA0, 0xD8, 0xB7, 0x9A }, - }, - { - { 0x70, 0xE0, 0xB7, 0xF5, 0xC7, 0xA3, 0xD1, 0xF3, 0x96, 0x85, 0x84, 0x5D, 0x94, 0xFC, 0x9E, 0x77, - 0x7C, 0x12, 0x69, 0xCF, 0x15, 0x31, 0x68, 0x51, 0x98, 0x3D, 0x60, 0x58, 0x76, 0x1C, 0xF0, 0x63 }, - }, - { - { 0x70, 0xED, 0x64, 0x0C, 0xBC, 0xE7, 0x84, 0xA6, 0x8E, 0xCD, 0xD6, 0x32, 0x0B, 0x61, 0x3C, 0x88, - 0x42, 0xE6, 0xD7, 0x09, 0xBD, 0x96, 0xF1, 0xD2, 0x43, 0xE4, 0xB2, 0x1E, 0xED, 0x8B, 0x12, 0x8C }, - }, - { - { 0x71, 0x1E, 0xF0, 0x96, 0x33, 0x43, 0x8A, 0xC5, 0xBE, 0x9D, 0xA8, 0x12, 0x2E, 0x7A, 0xCF, 0x0E, - 0xA2, 0x68, 0xB8, 0x72, 0xAD, 0xDC, 0x3E, 0xE8, 0x37, 0x2B, 0x91, 0x6D, 0x60, 0x65, 0xCF, 0xA8 }, - }, - { - { 0x71, 0xCF, 0x8D, 0x5C, 0x16, 0xF0, 0xDF, 0x67, 0xD2, 0x3F, 0x67, 0x06, 0xAE, 0xB9, 0x7C, 0x8E, - 0xAE, 0x2C, 0xAF, 0xC6, 0xBE, 0xC9, 0x4A, 0x4D, 0xB2, 0x40, 0x5A, 0x37, 0xFF, 0x30, 0x92, 0x5F }, - }, - { - { 0x72, 0x1B, 0x1F, 0x92, 0x9D, 0xA7, 0xEA, 0xF8, 0x96, 0x24, 0x64, 0x7B, 0xA3, 0xCC, 0x4E, 0x1E, - 0xD1, 0x57, 0x54, 0xAB, 0x83, 0x6E, 0x33, 0x58, 0xB0, 0x35, 0xA1, 0xF2, 0x27, 0x4A, 0x43, 0xBE }, - }, - { - { 0x72, 0xAA, 0x1A, 0xF2, 0x9A, 0xB0, 0x96, 0x5B, 0x34, 0x57, 0x14, 0x79, 0x84, 0x9B, 0x84, 0x74, - 0xB8, 0x81, 0x80, 0xE2, 0x1B, 0x98, 0x58, 0x92, 0x9B, 0xD6, 0x3E, 0x30, 0x91, 0x9C, 0xFC, 0xD9 }, - }, - { - { 0x72, 0xB6, 0x11, 0x01, 0x0E, 0xA4, 0x7D, 0x3D, 0x1E, 0x24, 0x53, 0xD7, 0x9D, 0x19, 0x03, 0x15, - 0x53, 0x4E, 0x55, 0x31, 0x2A, 0x7E, 0xBC, 0xAA, 0xB0, 0xE5, 0x5F, 0xF0, 0x03, 0x41, 0xD7, 0x14 }, - }, - { - { 0x72, 0xE7, 0x49, 0x87, 0x21, 0x0C, 0x7E, 0xF6, 0x67, 0x46, 0xE4, 0x9A, 0x96, 0xDF, 0x55, 0xCC, - 0x6F, 0xAD, 0xF7, 0xA6, 0x31, 0xC7, 0xAE, 0x3F, 0x3E, 0x9E, 0x18, 0x72, 0x3D, 0xE5, 0x2A, 0x6E }, - }, - { - { 0x73, 0x06, 0x2E, 0xFC, 0x20, 0xB4, 0x17, 0xF7, 0x4C, 0xD1, 0xA4, 0xE6, 0xA6, 0x36, 0x9F, 0x97, - 0x18, 0x86, 0x94, 0xFF, 0x9D, 0xCE, 0xFF, 0x1F, 0x5E, 0x4C, 0x11, 0x99, 0x74, 0x44, 0x6A, 0x3F }, - }, - { - { 0x73, 0x29, 0x62, 0x43, 0xC0, 0xDD, 0x61, 0xB1, 0x7F, 0x5C, 0x58, 0x89, 0x4C, 0x31, 0x3E, 0xF7, - 0xA8, 0x48, 0xAE, 0xE3, 0x1B, 0x08, 0x96, 0xE0, 0xB3, 0xE1, 0x51, 0x7F, 0x6E, 0x6D, 0x9F, 0x2F }, - }, - { - { 0x73, 0x3B, 0x42, 0x24, 0x25, 0x8D, 0xEE, 0x07, 0x0E, 0xDF, 0xA3, 0x41, 0x1F, 0xBC, 0x9B, 0xAD, - 0x31, 0x65, 0xBE, 0x66, 0x0F, 0x34, 0x0A, 0xA2, 0x30, 0x8A, 0x5A, 0x33, 0x23, 0xFA, 0xBF, 0xA7 }, - }, - { - { 0x73, 0x46, 0x99, 0x89, 0x4A, 0xD4, 0xB5, 0xA8, 0xA2, 0xDD, 0x9A, 0xB4, 0xFD, 0x5F, 0x63, 0x25, - 0x30, 0x3B, 0x49, 0x16, 0x4C, 0xA8, 0xD8, 0xE7, 0xBA, 0x99, 0x77, 0x81, 0x7E, 0x4A, 0xE2, 0x4F }, - }, - { - { 0x73, 0x9D, 0x17, 0x23, 0x23, 0xF2, 0xB2, 0x84, 0x07, 0x0A, 0xCE, 0x43, 0x09, 0x8C, 0x8B, 0x21, - 0xC4, 0x7A, 0x53, 0xF9, 0x98, 0x5F, 0x2F, 0xAD, 0x5F, 0x8B, 0x2E, 0xB7, 0x03, 0x4F, 0xDB, 0x21 }, - }, - { - { 0x73, 0xB4, 0x34, 0x22, 0x97, 0x6D, 0xAE, 0x7F, 0x98, 0x1E, 0xE5, 0x0A, 0xD7, 0x5B, 0xE2, 0x3A, - 0x41, 0xFF, 0x77, 0x09, 0xA7, 0x25, 0x2A, 0x4D, 0x15, 0x98, 0x52, 0x5F, 0x9D, 0x88, 0x22, 0x97 }, - }, - { - { 0x73, 0xBF, 0x46, 0xA8, 0x4B, 0x39, 0x94, 0xC7, 0x08, 0xA8, 0x2C, 0xD7, 0xC5, 0xB7, 0xAF, 0xFC, - 0xF9, 0x09, 0xF9, 0x6F, 0x16, 0x8E, 0x8D, 0xD1, 0xBD, 0x1A, 0xDB, 0xC7, 0x15, 0x99, 0xEC, 0xAA }, - }, - { - { 0x74, 0x2F, 0xCF, 0x73, 0x56, 0x51, 0xCE, 0xB1, 0x84, 0x3C, 0xE3, 0xD6, 0x56, 0x72, 0x34, 0x68, - 0xAB, 0x22, 0x85, 0x6C, 0x6A, 0x80, 0x56, 0xB9, 0x1C, 0x75, 0xC5, 0x8A, 0x67, 0xEC, 0xA8, 0xBE }, - }, - { - { 0x74, 0x54, 0x0F, 0xA5, 0x0A, 0x36, 0x2E, 0x68, 0x6D, 0x99, 0x17, 0x98, 0x18, 0x35, 0x09, 0x83, - 0x6C, 0x95, 0xA3, 0xFB, 0x04, 0x58, 0x00, 0x22, 0xF9, 0x68, 0x58, 0x4F, 0x8A, 0xCF, 0x60, 0x1F }, - }, - { - { 0x74, 0x8D, 0x42, 0x49, 0x6D, 0xA9, 0x25, 0x45, 0x90, 0x54, 0xE1, 0x3E, 0x38, 0xEC, 0x9F, 0x8E, - 0x6C, 0x5F, 0x97, 0x29, 0x7A, 0xB3, 0xA0, 0x14, 0x58, 0x99, 0x85, 0x26, 0xB0, 0xFD, 0x3A, 0xED }, - }, - { - { 0x74, 0xA9, 0x27, 0xE7, 0xB2, 0xF1, 0xF6, 0x48, 0x3D, 0xC2, 0x59, 0x21, 0xAB, 0xBE, 0x2F, 0x97, - 0x74, 0xA2, 0x0C, 0xB8, 0x96, 0xBA, 0xB5, 0x64, 0x8C, 0x2A, 0xB0, 0xF9, 0xDB, 0xDA, 0x3D, 0xA6 }, - }, - { - { 0x75, 0x83, 0x10, 0x84, 0x6A, 0xD5, 0x74, 0x05, 0x71, 0x1A, 0xDC, 0x4A, 0x1A, 0xF0, 0xEC, 0x51, - 0x8F, 0x82, 0x2D, 0x1A, 0x6C, 0xA9, 0x1E, 0xC2, 0x51, 0xF1, 0x22, 0xD4, 0x10, 0x6F, 0x99, 0xD9 }, - }, - { - { 0x75, 0x86, 0x5A, 0xA6, 0xFC, 0x45, 0x8E, 0x5A, 0x7B, 0x63, 0x04, 0x07, 0x07, 0x4F, 0x43, 0x11, - 0x1D, 0xD9, 0x21, 0x24, 0xB7, 0x7C, 0xE4, 0x02, 0x6D, 0x82, 0x41, 0xCF, 0x23, 0x71, 0xD9, 0xCC }, - }, - { - { 0x75, 0xBB, 0x15, 0x25, 0x09, 0xB7, 0x19, 0x04, 0xE4, 0x40, 0x0F, 0xB4, 0x23, 0xA5, 0x80, 0xAA, - 0xE1, 0xDD, 0xB7, 0x68, 0xF6, 0xFD, 0x36, 0xE6, 0x30, 0x94, 0xEB, 0xE3, 0x92, 0x15, 0xF3, 0x90 }, - }, - { - { 0x75, 0xC1, 0x6D, 0x87, 0x10, 0x9A, 0x9D, 0x86, 0xE3, 0x90, 0x2E, 0xE1, 0xE0, 0x7B, 0xE1, 0x13, - 0xB4, 0x15, 0x53, 0x0D, 0xC7, 0x3F, 0x7F, 0x7F, 0x1D, 0x7F, 0xE0, 0xDB, 0x7B, 0x02, 0x50, 0x30 }, - }, - { - { 0x75, 0xE9, 0xA1, 0x5D, 0x94, 0x88, 0x0C, 0x66, 0x14, 0x82, 0xCF, 0xC1, 0x96, 0x4C, 0xBC, 0xE2, - 0xB1, 0xCA, 0x7A, 0x9F, 0x81, 0xD4, 0x07, 0x30, 0x12, 0x47, 0x1F, 0x27, 0x23, 0xCB, 0x72, 0x8A }, - }, - { - { 0x76, 0x73, 0x18, 0x0F, 0x9D, 0x9A, 0x85, 0x48, 0x4B, 0x5C, 0x16, 0x99, 0xA2, 0xDC, 0x17, 0xFC, - 0x61, 0x13, 0xA3, 0xED, 0x5B, 0xC9, 0xC0, 0x55, 0x8C, 0xB8, 0x2D, 0xFF, 0x9E, 0x50, 0x32, 0x09 }, - }, - { - { 0x76, 0x98, 0x67, 0x60, 0xAC, 0xFE, 0x55, 0x59, 0xA2, 0xA2, 0xAB, 0x2A, 0x4E, 0x85, 0x49, 0x83, - 0xC5, 0xFD, 0xE6, 0x73, 0xCE, 0x8E, 0xB1, 0x71, 0x23, 0x49, 0x48, 0x64, 0x86, 0x7A, 0x98, 0xB1 }, - }, - { - { 0x76, 0xBC, 0x5D, 0x17, 0xFE, 0x9F, 0x0E, 0x89, 0x7E, 0x4D, 0xDB, 0x87, 0xD5, 0xB8, 0xDD, 0x2E, - 0xB2, 0xAC, 0x82, 0xF6, 0xA3, 0x11, 0x06, 0xED, 0xFD, 0x67, 0xDD, 0xCD, 0xE6, 0xA4, 0x3F, 0x17 }, - }, - { - { 0x76, 0xCA, 0x72, 0xCC, 0x37, 0xAB, 0x2A, 0xA3, 0x83, 0x98, 0x71, 0x0F, 0x02, 0x20, 0xFA, 0xF3, - 0x30, 0x1D, 0x54, 0x49, 0x38, 0xFB, 0x24, 0x19, 0x2D, 0xEC, 0x32, 0xF7, 0x44, 0xE4, 0x22, 0x10 }, - }, - { - { 0x76, 0xCD, 0xF0, 0x78, 0xA8, 0x89, 0x1F, 0x1B, 0x3D, 0x0A, 0xA7, 0x1D, 0x6E, 0x18, 0xD7, 0x6A, - 0x4D, 0x20, 0x7A, 0xAF, 0x84, 0xC6, 0x12, 0x95, 0x0E, 0xDF, 0xCD, 0x92, 0x82, 0xA1, 0x11, 0x44 }, - }, - { - { 0x77, 0x4F, 0x40, 0x72, 0x98, 0x9C, 0xA1, 0x55, 0x18, 0x17, 0x73, 0xB0, 0x55, 0x07, 0x6F, 0xFD, - 0x10, 0x21, 0x82, 0xC6, 0xAB, 0xE2, 0xA9, 0xCE, 0x03, 0x0F, 0x8D, 0xF2, 0x99, 0x56, 0xE1, 0x48 }, - }, - { - { 0x77, 0x59, 0x71, 0xD4, 0x48, 0x9D, 0xBE, 0x27, 0x72, 0xDB, 0x72, 0xAC, 0x28, 0xB8, 0xB3, 0x71, - 0xB0, 0x21, 0xC3, 0xD6, 0x26, 0x14, 0xD0, 0x7B, 0x6F, 0x5B, 0x8C, 0x2A, 0x57, 0x70, 0x25, 0xAE }, - }, - { - { 0x77, 0x95, 0x6B, 0x48, 0xCD, 0xD9, 0x15, 0x0B, 0xD8, 0x7D, 0x8D, 0x81, 0x50, 0x60, 0xAC, 0x8C, - 0x84, 0x81, 0x3A, 0x53, 0x87, 0x1A, 0x58, 0x6A, 0x69, 0x8B, 0x18, 0x79, 0x89, 0x13, 0xD3, 0xB8 }, - }, - { - { 0x77, 0xAC, 0x72, 0x54, 0x6A, 0x39, 0xCA, 0x2F, 0x24, 0xE2, 0xD1, 0x3C, 0x0D, 0x74, 0x91, 0x5F, - 0x67, 0xBC, 0xD4, 0x37, 0x09, 0xA9, 0xE5, 0xDB, 0x8B, 0x33, 0x1A, 0x55, 0x77, 0xFD, 0x50, 0x88 }, - }, - { - { 0x77, 0xB7, 0xCC, 0x99, 0xCE, 0x02, 0x4E, 0x0B, 0x7E, 0xD5, 0x33, 0xC9, 0x9C, 0xC8, 0x25, 0x08, - 0xEB, 0xA6, 0xAC, 0x3A, 0x0B, 0xE5, 0xBC, 0xBF, 0x7A, 0xC9, 0x94, 0x95, 0x2B, 0x6D, 0x35, 0x07 }, - }, - { - { 0x77, 0xB9, 0x6A, 0x00, 0x77, 0x15, 0xA0, 0x8C, 0x6A, 0x22, 0xDB, 0x14, 0xC7, 0xF4, 0xF1, 0xD7, - 0xF4, 0xA7, 0x41, 0xCE, 0x47, 0x32, 0xEC, 0xF8, 0x3E, 0x74, 0xC1, 0xC9, 0x63, 0x22, 0x83, 0xCD }, - }, - { - { 0x77, 0xDD, 0xC8, 0x1B, 0xD2, 0x8B, 0x9D, 0x46, 0x1E, 0x7D, 0x3C, 0xD4, 0xA8, 0x12, 0x2A, 0xA9, - 0x8A, 0x24, 0x60, 0xFB, 0xA0, 0x8F, 0x1B, 0x7B, 0xAC, 0xB6, 0x6C, 0x92, 0xD7, 0x99, 0x1C, 0xCC }, - }, - { - { 0x78, 0x0C, 0x33, 0xFE, 0x95, 0x4C, 0xC4, 0xDB, 0x39, 0x04, 0xD7, 0x6A, 0x68, 0x58, 0xBC, 0xD1, - 0x01, 0x7F, 0x52, 0xDA, 0x59, 0x9D, 0x36, 0xDA, 0xE6, 0x66, 0xC0, 0x4E, 0x41, 0xAF, 0x8D, 0xCD }, - }, - { - { 0x78, 0x41, 0x36, 0x37, 0x9B, 0xA0, 0xDB, 0xD7, 0xB3, 0xBA, 0xDC, 0x52, 0xDC, 0xE6, 0xBB, 0x81, - 0x07, 0xA3, 0x56, 0xC8, 0x48, 0x3F, 0x13, 0xE1, 0x69, 0x75, 0x0B, 0xC2, 0x07, 0x0A, 0x67, 0xD9 }, - }, - { - { 0x78, 0xC9, 0x30, 0x40, 0x5A, 0x72, 0x0D, 0x9F, 0x00, 0x66, 0xDD, 0x88, 0xA2, 0xA8, 0xDA, 0xFB, - 0xBE, 0x6C, 0xD6, 0x5D, 0x54, 0xB7, 0x76, 0x06, 0x42, 0x1B, 0x45, 0x43, 0x8C, 0x65, 0x8A, 0xD4 }, - }, - { - { 0x79, 0x17, 0x21, 0x35, 0x7E, 0x4B, 0xA1, 0x38, 0xE0, 0x3D, 0x59, 0xBA, 0xC1, 0x41, 0x42, 0x80, - 0x52, 0xE9, 0x88, 0x42, 0x39, 0x84, 0x7A, 0x4D, 0x92, 0xCA, 0xC0, 0x9F, 0xEB, 0xFE, 0x6A, 0xA4 }, - }, - { - { 0x79, 0x44, 0x5A, 0x43, 0x7B, 0xBE, 0xB4, 0xA5, 0x59, 0xC8, 0x1C, 0x8E, 0x57, 0xBB, 0xFB, 0x18, - 0x66, 0xE2, 0xE2, 0xBF, 0x6E, 0x70, 0xA5, 0x63, 0x22, 0x1B, 0x62, 0x7B, 0x71, 0x7D, 0xE6, 0xB1 }, - }, - { - { 0x79, 0x8F, 0x83, 0xB1, 0xC4, 0xC6, 0x5C, 0x4D, 0x5D, 0xEA, 0x13, 0x03, 0x53, 0x53, 0xD8, 0xED, - 0xE5, 0xD7, 0x1D, 0x99, 0x47, 0xF4, 0x34, 0xFD, 0xEA, 0x0D, 0xBC, 0x1E, 0xC8, 0x2F, 0x45, 0x35 }, - }, - { - { 0x79, 0x94, 0x68, 0xFC, 0x28, 0x7D, 0x4F, 0x78, 0x13, 0xBD, 0xC1, 0x53, 0xF2, 0x8F, 0x77, 0x91, - 0x24, 0xCB, 0x79, 0xAE, 0xC9, 0x35, 0xB2, 0x2C, 0x7A, 0x6A, 0xAC, 0xB9, 0x8D, 0xD5, 0x14, 0x0C }, - }, - { - { 0x79, 0xA8, 0xFC, 0x72, 0x70, 0xB2, 0xE5, 0xF3, 0x35, 0x6B, 0x09, 0xC6, 0xB8, 0x64, 0xFC, 0x92, - 0xE5, 0xFB, 0xC9, 0xE6, 0x9B, 0xEC, 0x93, 0xA4, 0xE3, 0x3B, 0x8D, 0xF5, 0x75, 0x60, 0x17, 0xBE }, - }, - { - { 0x79, 0xBE, 0x4E, 0x3A, 0x42, 0x2B, 0x14, 0x29, 0x92, 0xEA, 0x5B, 0xAB, 0xFC, 0x3A, 0xAD, 0x5F, - 0x31, 0xDB, 0x1C, 0x40, 0xEF, 0x82, 0x9A, 0x38, 0x03, 0xF7, 0xF5, 0xCF, 0xEF, 0xEF, 0xD1, 0x60 }, - }, - { - { 0x7A, 0x1E, 0x5E, 0xA4, 0xE9, 0x74, 0xEB, 0x10, 0x8A, 0xDA, 0x2D, 0xDF, 0xBD, 0x06, 0x8A, 0xC3, - 0x5D, 0x0F, 0x9D, 0xFA, 0xE6, 0x70, 0xF3, 0xE3, 0x95, 0xD4, 0x03, 0x7C, 0x3F, 0x8C, 0x4D, 0xD0 }, - }, - { - { 0x7A, 0x31, 0xB7, 0x14, 0x7A, 0x27, 0x75, 0x33, 0x8B, 0xFA, 0x3D, 0x0B, 0xBB, 0x68, 0x56, 0x33, - 0xFE, 0xB8, 0x5E, 0x2A, 0xF9, 0x4D, 0x71, 0xBF, 0x2B, 0x64, 0x0B, 0xE1, 0xE7, 0x1C, 0xE8, 0x34 }, - }, - { - { 0x7A, 0x33, 0x5D, 0x4D, 0xB3, 0x54, 0x8B, 0xA0, 0xA4, 0x73, 0x79, 0x7D, 0x3A, 0x5B, 0xE2, 0x58, - 0x4B, 0x42, 0x55, 0x83, 0xAD, 0x6F, 0x28, 0x69, 0xD4, 0x79, 0xB9, 0x72, 0xBD, 0x0F, 0x53, 0xCA }, - }, - { - { 0x7A, 0x42, 0xD5, 0x7B, 0x05, 0x32, 0x4E, 0x85, 0x83, 0x55, 0x05, 0x58, 0x26, 0xB1, 0x55, 0x17, - 0x42, 0x5B, 0x5A, 0x18, 0x9C, 0x17, 0xB4, 0x7C, 0x18, 0x4C, 0xAC, 0xE7, 0xAC, 0x63, 0x18, 0xD0 }, - }, - { - { 0x7A, 0x4C, 0x08, 0x9A, 0x75, 0xD1, 0x85, 0x93, 0x3C, 0xA0, 0xB8, 0x24, 0xB3, 0x86, 0x08, 0xE2, - 0x6F, 0x2D, 0xF0, 0x15, 0x01, 0x62, 0x26, 0xD2, 0x15, 0x8A, 0x7B, 0x3B, 0x82, 0x02, 0x9A, 0x05 }, - }, - { - { 0x7A, 0x5B, 0x68, 0x1E, 0x54, 0x45, 0x1D, 0xCB, 0x0A, 0xA6, 0x0D, 0x9F, 0x02, 0xFD, 0x13, 0x7F, - 0xA5, 0xC1, 0x9E, 0x2B, 0xF7, 0x30, 0xC8, 0x9F, 0x36, 0xC9, 0x1C, 0xC6, 0xE7, 0x8C, 0xC6, 0xFB }, - }, - { - { 0x7B, 0x2C, 0x84, 0x1F, 0x5A, 0x96, 0x35, 0x28, 0xC8, 0x79, 0x9F, 0x4B, 0x71, 0x48, 0xF9, 0xF2, - 0xA5, 0x05, 0x15, 0x76, 0x06, 0x9D, 0xEF, 0xD9, 0xF6, 0xC0, 0xCA, 0x31, 0x3D, 0xF2, 0xDB, 0x99 }, - }, - { - { 0x7B, 0x78, 0xBF, 0x4D, 0x71, 0x4E, 0xDF, 0xD5, 0xCE, 0x84, 0xA3, 0x86, 0x6D, 0xDF, 0x14, 0x82, - 0x36, 0xBD, 0x80, 0xFC, 0xCA, 0x6B, 0x9E, 0xF2, 0x6D, 0xC5, 0xB0, 0xDF, 0x9F, 0xE3, 0xE2, 0x0F }, - }, - { - { 0x7B, 0x8D, 0xD4, 0xFC, 0x3F, 0xC9, 0xA9, 0x00, 0x77, 0x96, 0x0E, 0x15, 0x32, 0x2F, 0x9C, 0xD2, - 0x29, 0x8C, 0xF2, 0xED, 0x16, 0xC0, 0xDD, 0x3D, 0xDA, 0xB2, 0x3E, 0xDD, 0xBF, 0x4E, 0x28, 0xC0 }, - }, - { - { 0x7B, 0x93, 0xA8, 0x76, 0x2E, 0x89, 0x97, 0x0B, 0xFB, 0x19, 0xEC, 0x06, 0xE9, 0x39, 0x1E, 0x87, - 0x48, 0xB1, 0x69, 0x95, 0x1A, 0x8D, 0xA9, 0x86, 0x8F, 0x07, 0xEC, 0x68, 0xD0, 0x6A, 0x57, 0x34 }, - }, - { - { 0x7B, 0xFE, 0x47, 0xAE, 0xBA, 0x8B, 0x0A, 0x3A, 0x94, 0x5A, 0x88, 0xD8, 0xEF, 0x18, 0x91, 0xC9, - 0x89, 0x97, 0x8A, 0xBF, 0x12, 0x2E, 0xC5, 0xE0, 0x51, 0x4B, 0xE3, 0x6C, 0x3A, 0x7F, 0x22, 0x9B }, - }, - { - { 0x7C, 0x30, 0xFF, 0x35, 0xE7, 0x8A, 0xBA, 0x08, 0xF8, 0xA9, 0xB4, 0xD9, 0x8E, 0xA2, 0x9A, 0xE4, - 0xA5, 0xA4, 0x24, 0x72, 0xF5, 0x91, 0xCA, 0x11, 0xFB, 0x5E, 0x11, 0x21, 0x06, 0x28, 0x63, 0x96 }, - }, - { - { 0x7C, 0x63, 0xB8, 0x8E, 0x58, 0x19, 0x07, 0x0F, 0xC1, 0x4A, 0xDB, 0x67, 0xD6, 0xDA, 0xA1, 0x29, - 0x83, 0x14, 0x30, 0x4A, 0x9C, 0x05, 0x30, 0x18, 0x02, 0x7D, 0xF8, 0x36, 0x91, 0x4D, 0x73, 0xD4 }, - }, - { - { 0x7C, 0xA0, 0x86, 0x8B, 0xEB, 0xAE, 0x8A, 0xCA, 0x9D, 0x0F, 0x75, 0x38, 0x65, 0xC3, 0x2A, 0x0D, - 0x2D, 0xD4, 0xF1, 0x48, 0x6E, 0x37, 0x34, 0xA6, 0xA3, 0x71, 0x0E, 0xCC, 0x3E, 0x57, 0xF9, 0xED }, - }, - { - { 0x7C, 0xF9, 0x2F, 0x75, 0xBB, 0xE7, 0xA1, 0x4D, 0x86, 0x93, 0xF9, 0x93, 0xC3, 0xD1, 0xA6, 0x08, - 0xDB, 0xE0, 0xD1, 0x8F, 0x80, 0x8E, 0x21, 0x2D, 0xC8, 0xE1, 0xF5, 0xDA, 0x58, 0x04, 0xB3, 0x07 }, - }, - { - { 0x7D, 0x0D, 0x63, 0xAC, 0x53, 0x9B, 0xB6, 0xC1, 0x0F, 0x2C, 0xAC, 0x34, 0xC4, 0xE8, 0x08, 0xC5, - 0x23, 0xCB, 0x5F, 0xE2, 0x79, 0x44, 0xF3, 0xD1, 0x58, 0x84, 0x95, 0xCC, 0xB3, 0xFC, 0xF8, 0xE0 }, - }, - { - { 0x7D, 0x20, 0xC7, 0xA9, 0x27, 0x26, 0x2B, 0xE7, 0x38, 0xD2, 0x58, 0xD0, 0xFD, 0x97, 0x6E, 0x9A, - 0xF3, 0x6E, 0xF7, 0x99, 0x5F, 0x05, 0xE2, 0x87, 0x6A, 0x29, 0xAE, 0xBC, 0x3A, 0x24, 0xAA, 0xCE }, - }, - { - { 0x7D, 0x27, 0x04, 0xF3, 0x8E, 0x5D, 0x3F, 0x86, 0x0E, 0x58, 0xE9, 0x5F, 0xBD, 0x13, 0x57, 0x37, - 0xE6, 0x29, 0xE3, 0xF5, 0x3C, 0x07, 0xE2, 0x11, 0xBF, 0x48, 0x33, 0x86, 0x0C, 0xA5, 0x40, 0xC3 }, - }, - { - { 0x7D, 0x2D, 0x31, 0x2B, 0xA8, 0x5E, 0x81, 0xC4, 0xC5, 0xF0, 0x4B, 0xCB, 0x48, 0x3F, 0xF8, 0xCB, - 0x62, 0xFA, 0xF8, 0x32, 0xBE, 0x9F, 0x1E, 0xA0, 0x95, 0x0A, 0x12, 0x6E, 0xA2, 0x52, 0xBC, 0xE6 }, - }, - { - { 0x7D, 0xB2, 0x70, 0xBC, 0xAC, 0xD6, 0x26, 0x5D, 0x05, 0x05, 0x60, 0x85, 0x24, 0xA9, 0x03, 0xF9, - 0x87, 0xC1, 0xC8, 0xC9, 0xEA, 0xF5, 0x1F, 0x66, 0x65, 0x5E, 0xB8, 0x36, 0xB5, 0x05, 0xA6, 0xDA }, - }, - { - { 0x7D, 0xF7, 0x1C, 0x35, 0x19, 0x78, 0x05, 0x7A, 0x4D, 0x30, 0x0E, 0x15, 0xAD, 0xB7, 0xCF, 0x28, - 0xF1, 0xA5, 0xBB, 0x76, 0x92, 0x9C, 0x58, 0xA2, 0x50, 0x25, 0x3C, 0x30, 0x48, 0xF2, 0x88, 0xDB }, - }, - { - { 0x7E, 0x2E, 0xDB, 0x9D, 0x38, 0xF9, 0x29, 0x3C, 0xDD, 0xD6, 0x03, 0xB1, 0x75, 0xC9, 0xB2, 0x05, - 0xAC, 0x0B, 0x55, 0x3A, 0x4B, 0xF5, 0xFB, 0x08, 0xC2, 0x46, 0xEC, 0xF9, 0xC8, 0x49, 0xDB, 0x28 }, - }, - { - { 0x7E, 0x70, 0x13, 0x07, 0x36, 0xAE, 0xD9, 0xBC, 0xD2, 0x18, 0x44, 0x96, 0x6D, 0x0D, 0x1E, 0x2F, - 0xBA, 0x58, 0xE7, 0xC3, 0x9E, 0xA1, 0x47, 0x76, 0x13, 0xF7, 0x9E, 0x0F, 0x60, 0x40, 0xB5, 0x44 }, - }, - { - { 0x7E, 0x8A, 0x44, 0x80, 0xAB, 0x99, 0xAB, 0x10, 0x36, 0x89, 0xF4, 0x6F, 0xC9, 0xB7, 0x9F, 0xA0, - 0xD9, 0xFD, 0xA4, 0x64, 0xAF, 0x96, 0xEC, 0x20, 0xCC, 0xE6, 0xA2, 0x5B, 0x9C, 0xF7, 0xDC, 0xD3 }, - }, - { - { 0x7F, 0x41, 0xA6, 0x10, 0x7E, 0x34, 0x2B, 0x5D, 0x73, 0x80, 0x8D, 0xB0, 0x2A, 0x86, 0x8B, 0xB0, - 0xA8, 0xCB, 0xDE, 0xA3, 0x6A, 0x70, 0x54, 0x54, 0xAA, 0x8D, 0x86, 0xC8, 0xDE, 0x5C, 0x40, 0x55 }, - }, - { - { 0x7F, 0x83, 0xAC, 0xEF, 0xC5, 0x22, 0xD2, 0xAC, 0x23, 0xB2, 0x22, 0x10, 0xAF, 0x23, 0xE2, 0x99, - 0xEB, 0x69, 0x9A, 0x32, 0x1C, 0xBF, 0xDC, 0x78, 0xE4, 0x3A, 0x8C, 0xCB, 0x8F, 0x08, 0x6A, 0x84 }, - }, - { - { 0x7F, 0x86, 0xD3, 0xAA, 0x7E, 0xA7, 0x5C, 0x18, 0x03, 0x9D, 0x6A, 0xF9, 0x9C, 0xEF, 0x75, 0x04, - 0xCE, 0x7B, 0x05, 0x05, 0x9B, 0xBF, 0xE7, 0x3F, 0xCD, 0xEC, 0xFC, 0x71, 0xB2, 0x53, 0x8D, 0x72 }, - }, - { - { 0x7F, 0x95, 0x9B, 0x06, 0x34, 0xDA, 0x94, 0xFA, 0xCA, 0xDA, 0xB0, 0x21, 0xCF, 0x94, 0x20, 0x78, - 0x16, 0x00, 0x36, 0x13, 0xEF, 0x09, 0xEB, 0x54, 0xF6, 0x48, 0x60, 0x50, 0x08, 0x19, 0x02, 0x75 }, - }, - { - { 0x7F, 0x9A, 0x69, 0xCF, 0xA2, 0xF5, 0x0C, 0x13, 0xE1, 0xB7, 0x11, 0xDD, 0x6B, 0x14, 0x69, 0x2B, - 0xDB, 0x77, 0xD9, 0xFF, 0xD8, 0xC1, 0x10, 0xAE, 0x5D, 0x05, 0xA4, 0xCB, 0x73, 0x12, 0x37, 0x48 }, - }, - { - { 0x7F, 0xDD, 0xAE, 0x79, 0x7D, 0xA7, 0x9C, 0x9F, 0xA8, 0xD6, 0x9C, 0x15, 0x79, 0x31, 0x69, 0x22, - 0x13, 0x64, 0xEA, 0x95, 0xE7, 0xC1, 0xB2, 0x39, 0x71, 0x32, 0x3D, 0xB1, 0xB0, 0x88, 0xDE, 0x9C }, - }, - { - { 0x7F, 0xE5, 0x74, 0x9C, 0xA3, 0xF3, 0xDB, 0x71, 0xD5, 0xC7, 0x40, 0xD9, 0x75, 0x87, 0x16, 0x3D, - 0x21, 0x1E, 0xFF, 0xAF, 0x79, 0x40, 0xDA, 0x62, 0xA6, 0xAA, 0x07, 0xEC, 0x64, 0xBD, 0xFB, 0x2D }, - }, - { - { 0x80, 0x20, 0x56, 0xE1, 0xDB, 0x9D, 0x9B, 0x73, 0x21, 0xD1, 0xFF, 0xBB, 0xE1, 0x2F, 0x5C, 0xBE, - 0xDE, 0xC3, 0x6D, 0x0B, 0x5E, 0xC2, 0xA4, 0xE1, 0x8D, 0x99, 0x54, 0x36, 0x4C, 0xEC, 0x81, 0x29 }, - }, - { - { 0x80, 0x47, 0x74, 0x1D, 0x79, 0x7E, 0xB4, 0xED, 0x49, 0xE5, 0x1E, 0xD6, 0x77, 0x45, 0xA4, 0xE4, - 0xEE, 0x90, 0x23, 0xC4, 0x37, 0xAE, 0x53, 0x23, 0xCB, 0xEE, 0x97, 0x05, 0xEF, 0x9C, 0x4C, 0xD6 }, - }, - { - { 0x80, 0x58, 0x7F, 0x37, 0x5E, 0xA1, 0x5D, 0x52, 0x19, 0x26, 0xD7, 0x0B, 0x35, 0x26, 0xC0, 0x80, - 0xF4, 0x8C, 0x05, 0x6E, 0x9B, 0x13, 0x40, 0xCB, 0xBA, 0x1F, 0x9E, 0x11, 0xBB, 0xE8, 0x78, 0x96 }, - }, - { - { 0x80, 0x97, 0x63, 0x4C, 0xE3, 0x3D, 0x41, 0x53, 0x3D, 0x41, 0x5D, 0xAF, 0xDB, 0x8B, 0xA1, 0x91, - 0xC0, 0x30, 0x52, 0xAC, 0x8B, 0xAA, 0x25, 0x54, 0x34, 0x77, 0x3A, 0x16, 0x4B, 0x91, 0x1D, 0x6E }, - }, - { - { 0x80, 0xD0, 0x17, 0x09, 0x34, 0xD2, 0x2A, 0xEA, 0x73, 0x3F, 0x11, 0x5E, 0x52, 0x42, 0xC6, 0xB8, - 0x6D, 0x7F, 0xCF, 0xB4, 0x90, 0x4E, 0x65, 0xB7, 0xB7, 0xB9, 0x07, 0xF2, 0xCA, 0x94, 0xED, 0x71 }, - }, - { - { 0x80, 0xDC, 0xF7, 0x3D, 0xE4, 0x85, 0x8B, 0xDC, 0x49, 0x33, 0x9C, 0x62, 0xA6, 0xB6, 0x96, 0x93, - 0x31, 0x10, 0x03, 0x6E, 0x4F, 0x9E, 0xFD, 0x83, 0x4F, 0x22, 0xA7, 0xB6, 0x62, 0xF9, 0x5C, 0x6A }, - }, - { - { 0x80, 0xE7, 0x3A, 0x40, 0x88, 0xF2, 0x8A, 0x18, 0x67, 0xD5, 0x5D, 0xA9, 0x87, 0x67, 0xEF, 0x22, - 0xA5, 0xAE, 0xE8, 0xF4, 0x45, 0x0B, 0x61, 0x1B, 0x4B, 0x32, 0x78, 0xEF, 0x25, 0x87, 0xB6, 0x6B }, - }, - { - { 0x80, 0xF3, 0xEB, 0x58, 0xEA, 0x6A, 0xA2, 0x85, 0x11, 0xB0, 0x9B, 0x68, 0xF2, 0xDE, 0xF9, 0xB4, - 0xAF, 0xA9, 0x9C, 0x97, 0x44, 0xC0, 0xBE, 0x4E, 0x23, 0x94, 0x89, 0xF0, 0x4F, 0x75, 0xA3, 0xA5 }, - }, - { - { 0x80, 0xF6, 0xC1, 0xE5, 0x6A, 0xEC, 0x30, 0x64, 0x72, 0x50, 0x23, 0x05, 0x61, 0x06, 0x61, 0xF9, - 0x8A, 0x00, 0xA5, 0xAD, 0x10, 0x33, 0x1D, 0x57, 0xBE, 0xF0, 0xD9, 0x7F, 0x32, 0x2A, 0xD8, 0x48 }, - }, - { - { 0x81, 0x1D, 0xF2, 0xF4, 0x73, 0x6F, 0x85, 0x62, 0xE2, 0x02, 0xFD, 0x00, 0x75, 0x32, 0xF1, 0xDE, - 0x40, 0x17, 0x86, 0x1E, 0xFA, 0xBE, 0x67, 0x34, 0x20, 0xC2, 0x7F, 0x2E, 0x2A, 0x33, 0xFA, 0xC1 }, - }, - { - { 0x81, 0x1E, 0x37, 0x86, 0x37, 0xB1, 0xD2, 0xCB, 0xB1, 0x89, 0xAF, 0xD6, 0x74, 0x95, 0xFE, 0x8A, - 0xB9, 0xD8, 0x3A, 0x74, 0x2E, 0x35, 0x8C, 0xBB, 0xDB, 0xD1, 0x54, 0x98, 0xBF, 0x9C, 0x7B, 0x56 }, - }, - { - { 0x81, 0x21, 0x5F, 0x4C, 0x05, 0x58, 0x6C, 0x90, 0x8B, 0xA6, 0x65, 0x15, 0xD6, 0xA2, 0x64, 0x81, - 0xED, 0xDC, 0xD9, 0x89, 0x44, 0xAC, 0x01, 0x98, 0x40, 0xE9, 0xE3, 0x32, 0x2E, 0x35, 0x8D, 0xD2 }, - }, - { - { 0x81, 0xA0, 0xF1, 0xD0, 0x29, 0x46, 0x8E, 0xE8, 0x66, 0x36, 0x4A, 0x19, 0x8A, 0x26, 0x08, 0x58, - 0x30, 0xC2, 0xA4, 0x16, 0xE4, 0x9E, 0x22, 0x4C, 0xE8, 0x09, 0x66, 0xFC, 0xC4, 0x99, 0xD6, 0x36 }, - }, - { - { 0x81, 0xA9, 0x15, 0x6B, 0x26, 0x47, 0xCA, 0xFA, 0x38, 0xB2, 0xE3, 0x15, 0x1A, 0x5A, 0x5D, 0x17, - 0xDB, 0xED, 0x81, 0xE9, 0x07, 0x54, 0xD1, 0xE8, 0x25, 0xF0, 0xBF, 0xC9, 0x13, 0x7C, 0x8B, 0xBF }, - }, - { - { 0x81, 0xD4, 0xB0, 0x8A, 0xCD, 0x90, 0xF2, 0xDE, 0xE1, 0x8A, 0xC4, 0x20, 0xF5, 0x1D, 0xA9, 0x91, - 0x05, 0x35, 0x82, 0x47, 0xBB, 0x03, 0x87, 0xCF, 0xA9, 0x4D, 0xD9, 0x67, 0xA9, 0xCC, 0x18, 0x68 }, - }, - { - { 0x81, 0xEE, 0x8C, 0x58, 0x6E, 0xC3, 0xE4, 0x77, 0xC8, 0x1E, 0xF4, 0x44, 0xDF, 0x09, 0x5A, 0xE0, - 0x99, 0xD8, 0x06, 0x9B, 0x89, 0xFF, 0xB1, 0xD0, 0x8F, 0xAD, 0x75, 0x3E, 0xE4, 0xE9, 0x4F, 0x71 }, - }, - { - { 0x82, 0x2E, 0xBE, 0x7B, 0x2E, 0x8A, 0xF1, 0x78, 0x8A, 0x36, 0x08, 0x83, 0x84, 0xF4, 0xC0, 0x6A, - 0x6D, 0x65, 0x9D, 0x95, 0x56, 0x83, 0xF0, 0x99, 0xE2, 0x54, 0x2D, 0x97, 0x58, 0xE1, 0xA6, 0x21 }, - }, - { - { 0x82, 0x33, 0xDE, 0x42, 0x18, 0xE4, 0xEF, 0x19, 0x38, 0xE6, 0xA8, 0xA3, 0x8A, 0xB0, 0xBC, 0x1A, - 0x96, 0x4B, 0xA5, 0x76, 0x1A, 0x52, 0x99, 0x50, 0x22, 0x15, 0x0C, 0x86, 0x02, 0x6B, 0x90, 0xC9 }, - }, - { - { 0x82, 0x42, 0x7C, 0x6E, 0xF1, 0x1E, 0xCE, 0x3B, 0x94, 0x0B, 0xE6, 0xB3, 0x93, 0x62, 0x2F, 0xC9, - 0x51, 0x7D, 0xBC, 0xE1, 0xC0, 0x0C, 0xF9, 0x18, 0x50, 0x89, 0x64, 0x43, 0xF5, 0x38, 0x2F, 0x89 }, - }, - { - { 0x82, 0x4E, 0xF3, 0x18, 0x7F, 0x9C, 0xFE, 0x14, 0x27, 0x10, 0x13, 0xBC, 0xFB, 0x85, 0xE1, 0x4B, - 0x5A, 0x8E, 0x0D, 0x72, 0x1C, 0x3F, 0x53, 0x6E, 0x0F, 0xDD, 0xFF, 0x42, 0x4D, 0x1F, 0xA0, 0xD8 }, - }, - { - { 0x82, 0x56, 0x8B, 0x3B, 0xB3, 0xC6, 0x55, 0xD7, 0xF2, 0x2D, 0x8C, 0x97, 0xA5, 0x66, 0x9C, 0xC8, - 0x34, 0xA2, 0xDD, 0x7C, 0xDA, 0xE7, 0x5A, 0x26, 0x45, 0x59, 0x55, 0x16, 0x46, 0x55, 0x8E, 0x14 }, - }, - { - { 0x82, 0x7C, 0x8C, 0x80, 0x11, 0x1F, 0xF2, 0x21, 0xC3, 0xEB, 0x1E, 0xF5, 0xC0, 0xD5, 0xD4, 0x34, - 0x48, 0x31, 0x86, 0xE2, 0x09, 0x00, 0x75, 0x63, 0x15, 0x8E, 0x9E, 0x76, 0xD2, 0x79, 0x0F, 0x1C }, - }, - { - { 0x82, 0x92, 0x67, 0xC5, 0xAD, 0x70, 0xE5, 0x45, 0x18, 0x02, 0x3A, 0xB7, 0x85, 0xFA, 0x3C, 0xDE, - 0xD6, 0x6F, 0x42, 0x5D, 0xE1, 0xF3, 0x2F, 0xCD, 0x72, 0x1B, 0x49, 0x46, 0x3A, 0x5A, 0x5F, 0x5B }, - }, - { - { 0x82, 0xAF, 0x5C, 0xB6, 0xAD, 0x08, 0x2A, 0xDA, 0x2C, 0x25, 0x2F, 0x74, 0x96, 0x7B, 0xED, 0x01, - 0xAB, 0xA0, 0x87, 0x88, 0x42, 0x02, 0xD4, 0x5D, 0xD4, 0x80, 0xFB, 0x1C, 0x3D, 0x1C, 0x0C, 0x63 }, - }, - { - { 0x82, 0xB1, 0xDD, 0x9C, 0x01, 0xE8, 0xCD, 0x57, 0xDD, 0xA5, 0x1C, 0xCC, 0x29, 0x0B, 0x32, 0xE2, - 0xBB, 0xFD, 0x08, 0x8C, 0x2B, 0xDF, 0x75, 0x46, 0xA8, 0x9C, 0x60, 0x99, 0x78, 0xC8, 0x1B, 0xC2 }, - }, - { - { 0x82, 0xC0, 0x7B, 0x94, 0x4B, 0xBA, 0xC1, 0xB2, 0x95, 0xE2, 0x5F, 0x91, 0xA5, 0xFB, 0x0F, 0x2A, - 0xFC, 0xBA, 0x7E, 0x09, 0xB2, 0x17, 0x27, 0xEE, 0xD8, 0x13, 0x0C, 0xDE, 0x8F, 0x08, 0x0F, 0xCA }, - }, - { - { 0x82, 0xD1, 0x9B, 0xD8, 0x0A, 0x88, 0x6B, 0x28, 0x61, 0xC3, 0x09, 0x97, 0x4C, 0x1C, 0x99, 0x3D, - 0xBE, 0xC3, 0x7E, 0x30, 0x85, 0xC1, 0x47, 0xC4, 0x1F, 0x23, 0xD9, 0xF1, 0x20, 0xD8, 0x9B, 0x68 }, - }, - { - { 0x82, 0xE1, 0xBD, 0xB3, 0xDC, 0x4F, 0x02, 0x36, 0x3A, 0x79, 0x6B, 0x60, 0xA8, 0x8E, 0x4E, 0x71, - 0xBD, 0x33, 0xB0, 0xBE, 0x4C, 0xC5, 0xB8, 0x33, 0x25, 0x2B, 0x83, 0x27, 0xB8, 0x0B, 0xD7, 0xE2 }, - }, - { - { 0x83, 0x23, 0xBD, 0x61, 0x09, 0xFD, 0x94, 0xD5, 0x5F, 0x57, 0xA9, 0x60, 0x42, 0xA2, 0x16, 0xD8, - 0x6A, 0x04, 0xEC, 0xDB, 0x65, 0x7C, 0xEF, 0xEE, 0x62, 0x8C, 0x35, 0xF2, 0x1F, 0x29, 0x4A, 0x68 }, - }, - { - { 0x83, 0x25, 0x41, 0x78, 0xAE, 0x2C, 0x8B, 0xAA, 0x1A, 0xCB, 0xB9, 0x99, 0x82, 0x63, 0x8C, 0x79, - 0x9B, 0x9B, 0x37, 0x9D, 0xA4, 0xD0, 0x2B, 0x28, 0x91, 0x86, 0x20, 0xE2, 0xF1, 0xD8, 0x35, 0xC5 }, - }, - { - { 0x83, 0x34, 0xEA, 0xB8, 0x1C, 0x60, 0x4E, 0x99, 0xD5, 0x40, 0x51, 0x3E, 0xF2, 0xE3, 0x7A, 0xBA, - 0x71, 0x4F, 0x07, 0xB2, 0xBA, 0x01, 0x0A, 0xD7, 0x1D, 0xC4, 0xE1, 0x1A, 0x92, 0x18, 0xC1, 0x8C }, - }, - { - { 0x83, 0x54, 0x7A, 0xCA, 0x3C, 0xED, 0x73, 0xDF, 0x99, 0x14, 0xF3, 0x15, 0x60, 0x74, 0x63, 0x79, - 0x29, 0x4C, 0x76, 0x0E, 0xF9, 0xA8, 0xB7, 0x6E, 0x00, 0x06, 0x46, 0xC7, 0x39, 0x07, 0x21, 0x65 }, - }, - { - { 0x83, 0x89, 0xC8, 0x79, 0xB6, 0x3B, 0x82, 0x9D, 0x2D, 0x39, 0xA8, 0xCF, 0xB7, 0x87, 0xE7, 0x72, - 0x77, 0xD5, 0xCF, 0xA3, 0xE3, 0x6F, 0xDA, 0xCB, 0xAB, 0x4D, 0x18, 0xB2, 0xB0, 0x4E, 0x32, 0x94 }, - }, - { - { 0x83, 0xF8, 0x00, 0xB3, 0xE5, 0x28, 0x52, 0xDE, 0xBC, 0xC5, 0x04, 0xC2, 0x5B, 0x63, 0x58, 0x34, - 0x30, 0x7B, 0x14, 0x5E, 0x38, 0x87, 0x50, 0xAA, 0xC1, 0x63, 0x90, 0x9D, 0x30, 0x4B, 0xE3, 0xD2 }, - }, - { - { 0x84, 0x23, 0xB3, 0xF1, 0xCC, 0x85, 0x2B, 0x49, 0xCF, 0x81, 0xB7, 0xD5, 0xFF, 0x51, 0xA7, 0xA5, - 0x6A, 0x84, 0x78, 0x3A, 0x2D, 0xF7, 0x43, 0x61, 0xFF, 0x2E, 0xEE, 0x0F, 0x92, 0x12, 0xC1, 0x59 }, - }, - { - { 0x84, 0x26, 0xBC, 0x06, 0xDB, 0xB5, 0x18, 0x71, 0x34, 0x66, 0xC7, 0x6A, 0xEA, 0x52, 0x1B, 0xCE, - 0x39, 0xD3, 0x91, 0xA8, 0x89, 0xCB, 0xBA, 0x9B, 0x7B, 0x72, 0xDC, 0xDA, 0x89, 0xF3, 0x46, 0x55 }, - }, - { - { 0x84, 0x3D, 0x84, 0x33, 0x2B, 0x42, 0xAB, 0xBA, 0xB3, 0x71, 0xC9, 0xD9, 0xEF, 0xEC, 0xEB, 0x34, - 0x21, 0x8B, 0x72, 0xF5, 0xD8, 0x79, 0x29, 0xE2, 0xE5, 0x6C, 0xA2, 0xFD, 0x0A, 0x60, 0x41, 0xB6 }, - }, - { - { 0x84, 0x7B, 0x5F, 0x1E, 0xEB, 0x2A, 0x44, 0x13, 0xC8, 0xFA, 0x37, 0x98, 0x21, 0x97, 0x37, 0xE1, - 0x92, 0xBA, 0x72, 0x72, 0xA1, 0x08, 0xB7, 0x17, 0x28, 0xA8, 0xD1, 0x65, 0x17, 0xF6, 0x1E, 0x9D }, - }, - { - { 0x84, 0x88, 0x61, 0x71, 0x6D, 0x7A, 0xD3, 0xF9, 0x6F, 0xFF, 0x73, 0xF8, 0x2E, 0x6C, 0x75, 0x7C, - 0x43, 0x35, 0xAE, 0x5D, 0x3A, 0x1F, 0x52, 0xC4, 0xB6, 0x24, 0x08, 0xDB, 0x51, 0xDF, 0x9E, 0xB2 }, - }, - { - { 0x85, 0x04, 0x81, 0x97, 0xF0, 0x2B, 0xF1, 0xA0, 0x38, 0x81, 0x27, 0xE3, 0x2B, 0x5F, 0x0A, 0xD5, - 0xBC, 0xD9, 0x39, 0x89, 0x14, 0x1E, 0x2C, 0xF3, 0x2B, 0x04, 0x6F, 0x19, 0x01, 0x50, 0x59, 0xC8 }, - }, - { - { 0x85, 0x09, 0xCC, 0xB8, 0x81, 0xDB, 0x1D, 0x96, 0x1D, 0xD9, 0xA0, 0x6C, 0xE9, 0x8A, 0xA6, 0x2F, - 0x19, 0xC9, 0x5F, 0x3C, 0x2A, 0xC3, 0x60, 0x2E, 0x0C, 0xD3, 0xC6, 0xC3, 0x8E, 0x68, 0x6E, 0xD4 }, - }, - { - { 0x85, 0x31, 0xB2, 0xBF, 0xC5, 0x45, 0x79, 0xE8, 0xF1, 0x8F, 0x27, 0xB2, 0xE6, 0xEC, 0xC0, 0xF8, - 0x90, 0x64, 0xEE, 0x86, 0x87, 0x0E, 0xCC, 0x8B, 0xBE, 0x0C, 0xE6, 0x86, 0xEC, 0xDA, 0x2C, 0x17 }, - }, - { - { 0x85, 0x76, 0x0F, 0x59, 0x51, 0x90, 0xE9, 0xB4, 0x67, 0x8B, 0xBF, 0x44, 0xEF, 0xB5, 0xCF, 0x8F, - 0x6B, 0x19, 0x37, 0xA9, 0xB8, 0x6B, 0x31, 0xB7, 0x51, 0xBE, 0xCF, 0x72, 0x18, 0x03, 0xB0, 0x1C }, - }, - { - { 0x85, 0xF0, 0x79, 0x36, 0xB4, 0x29, 0x1F, 0x36, 0xD9, 0xB7, 0x5F, 0x42, 0xE8, 0xB7, 0xEE, 0x8A, - 0x64, 0xE6, 0x32, 0xA1, 0x18, 0x11, 0x65, 0xFE, 0x72, 0xB4, 0x88, 0x23, 0xC3, 0xD9, 0x9D, 0x9D }, - }, - { - { 0x86, 0x12, 0x9F, 0xE7, 0x61, 0x99, 0x4D, 0x7B, 0x64, 0xE4, 0x02, 0x85, 0x8F, 0x88, 0xC5, 0x2B, - 0x3E, 0xB9, 0xC0, 0x71, 0xFF, 0xBE, 0x80, 0x02, 0x80, 0xAC, 0x8C, 0x0C, 0x6F, 0x79, 0xE7, 0xA6 }, - }, - { - { 0x86, 0x19, 0x6B, 0x0F, 0xD3, 0x0F, 0x8F, 0x57, 0x56, 0x98, 0xB5, 0xEE, 0xF2, 0x69, 0xD0, 0x69, - 0x2F, 0x88, 0xAD, 0xEA, 0xC4, 0x83, 0x6A, 0x62, 0x67, 0xAB, 0xC8, 0x36, 0x23, 0x34, 0x00, 0x86 }, - }, - { - { 0x86, 0xD1, 0x8B, 0xCD, 0xDE, 0x16, 0x45, 0x42, 0x48, 0x6E, 0x56, 0x44, 0x2C, 0xE1, 0xB8, 0x8B, - 0x1A, 0x10, 0x73, 0x7C, 0xBD, 0x5E, 0xA4, 0xAA, 0xB8, 0xD5, 0xB8, 0xAF, 0x51, 0xF5, 0x29, 0x09 }, - }, - { - { 0x87, 0x09, 0x8D, 0x69, 0x5D, 0xA4, 0xA2, 0x84, 0x8D, 0xD4, 0x18, 0xF2, 0xC6, 0x4A, 0xDF, 0x3B, - 0xD7, 0x11, 0x7C, 0x98, 0xE9, 0xB7, 0x2E, 0x0F, 0x46, 0xA3, 0x67, 0x80, 0x64, 0x5E, 0x4F, 0x80 }, - }, - { - { 0x87, 0xEB, 0xCB, 0xB0, 0x73, 0x7A, 0xE3, 0x27, 0xC6, 0xBE, 0x9D, 0x3F, 0xA2, 0xC7, 0x5D, 0x1E, - 0xEA, 0x0A, 0xE6, 0x6D, 0x20, 0xD3, 0x8A, 0xF6, 0xED, 0x76, 0xE6, 0xB1, 0x49, 0x9C, 0x83, 0x1F }, - }, - { - { 0x87, 0xEB, 0xCD, 0x34, 0x6C, 0xBF, 0xD5, 0x3E, 0x1A, 0x0E, 0x38, 0x25, 0x69, 0x69, 0x07, 0xE2, - 0x9F, 0x26, 0x9F, 0xEB, 0x06, 0x64, 0xA9, 0x42, 0x67, 0x78, 0xF5, 0x73, 0xC0, 0x68, 0xA6, 0x96 }, - }, - { - { 0x88, 0x51, 0x76, 0x78, 0x61, 0xC9, 0x72, 0x7D, 0x92, 0x77, 0x63, 0x62, 0x78, 0xFB, 0x94, 0x1B, - 0x88, 0x85, 0xD9, 0x99, 0x02, 0x48, 0xBF, 0x91, 0x45, 0x9E, 0x52, 0x7C, 0xE7, 0xF0, 0x6C, 0xF6 }, - }, - { - { 0x88, 0x76, 0x88, 0xDC, 0x6E, 0x9F, 0xE3, 0xDB, 0x05, 0x05, 0x7F, 0xC6, 0x38, 0xEB, 0x8B, 0x29, - 0x4C, 0x3D, 0x8E, 0x0A, 0xAE, 0x17, 0x51, 0xF7, 0x58, 0xF6, 0x36, 0x70, 0x37, 0x2E, 0x66, 0x6D }, - }, - { - { 0x88, 0x8D, 0x6D, 0x77, 0xD8, 0x1C, 0x62, 0x91, 0xCB, 0x84, 0xD9, 0xD6, 0x56, 0x27, 0x82, 0xFD, - 0x2E, 0xB3, 0x42, 0x5D, 0x49, 0x1E, 0x68, 0x74, 0x20, 0x28, 0x4B, 0x76, 0xA1, 0xDE, 0xBF, 0xAB }, - }, - { - { 0x88, 0xB0, 0x25, 0x04, 0x88, 0x31, 0x94, 0xB9, 0x9F, 0xD1, 0xB8, 0x1D, 0x5D, 0x5D, 0xC4, 0x99, - 0xD3, 0x97, 0x65, 0x62, 0x1F, 0x7F, 0x43, 0x0C, 0x73, 0x46, 0xA7, 0x7B, 0x23, 0x39, 0x43, 0x82 }, - }, - { - { 0x89, 0x76, 0xB5, 0x94, 0xAC, 0xDD, 0xC1, 0xB2, 0xAB, 0xD7, 0x5F, 0xA1, 0xA1, 0xEA, 0x24, 0x59, - 0x92, 0x9A, 0x7E, 0x81, 0x4C, 0x9E, 0xE3, 0xF7, 0xBA, 0x21, 0xB3, 0x80, 0x82, 0x88, 0xBE, 0xBB }, - }, - { - { 0x89, 0xAF, 0x0E, 0x54, 0xC7, 0x62, 0x77, 0x86, 0x93, 0x52, 0x9D, 0x0A, 0x95, 0x0B, 0x78, 0x33, - 0xF5, 0xEA, 0xBA, 0xF3, 0x42, 0x79, 0x72, 0x60, 0x7F, 0xB2, 0xC7, 0x0C, 0x96, 0xA3, 0x21, 0x61 }, - }, - { - { 0x89, 0xB6, 0xA4, 0x32, 0x03, 0xD5, 0x82, 0x55, 0xD9, 0x1C, 0xC4, 0x67, 0x25, 0x4B, 0x85, 0x2F, - 0xE6, 0x43, 0x47, 0x38, 0x97, 0x44, 0x79, 0xCE, 0x21, 0x64, 0x0B, 0x7E, 0xC3, 0x5F, 0x24, 0xAC }, - }, - { - { 0x89, 0xCE, 0x0F, 0xE0, 0xE0, 0xB3, 0xE3, 0xAC, 0x38, 0x6E, 0x3A, 0xD6, 0x70, 0xF3, 0x45, 0x57, - 0xE4, 0x73, 0xB8, 0x01, 0xBC, 0x56, 0xE4, 0x1D, 0xBD, 0x91, 0xD7, 0x5A, 0xA1, 0x9A, 0x47, 0x31 }, - }, - { - { 0x89, 0xDA, 0xC7, 0x89, 0x6B, 0x46, 0xF2, 0xFC, 0x8B, 0xEA, 0x62, 0x11, 0xFF, 0x98, 0xB6, 0x1F, - 0xAA, 0x15, 0x7B, 0xA8, 0xC4, 0xAD, 0x6F, 0xD1, 0x75, 0x92, 0x75, 0xCE, 0x39, 0x41, 0xC3, 0x28 }, - }, - { - { 0x8A, 0x09, 0x85, 0xBF, 0x86, 0xE8, 0xC9, 0xB9, 0x17, 0xEC, 0x84, 0xDA, 0x2A, 0x56, 0x73, 0x1E, - 0x75, 0x2A, 0xA0, 0xDC, 0x52, 0x87, 0xC2, 0xBF, 0x39, 0x51, 0x0B, 0xB3, 0xF0, 0xF2, 0x0A, 0xD1 }, - }, - { - { 0x8A, 0x1A, 0xD8, 0x6B, 0xC0, 0x1D, 0x05, 0x9D, 0x53, 0xD7, 0x8D, 0xE1, 0x97, 0xAC, 0x42, 0x99, - 0x8F, 0xEE, 0x20, 0x88, 0x8A, 0xF0, 0xF2, 0x5F, 0x2F, 0x79, 0x7D, 0x62, 0x00, 0xAF, 0xF0, 0xBE }, - }, - { - { 0x8A, 0x59, 0x4E, 0xB2, 0xF8, 0x23, 0x64, 0x65, 0xF0, 0x91, 0x8A, 0xED, 0x99, 0xA7, 0x36, 0x48, - 0x2B, 0x80, 0xAF, 0xD3, 0xD3, 0x3E, 0x9F, 0x17, 0x46, 0x90, 0x8C, 0x21, 0x57, 0xCA, 0xD2, 0x89 }, - }, - { - { 0x8A, 0x74, 0xC4, 0x83, 0xDB, 0x8B, 0x72, 0xDC, 0x6A, 0x59, 0x80, 0xA4, 0x8E, 0x26, 0x2A, 0x5F, - 0x3B, 0x7D, 0xB2, 0xBF, 0xF7, 0xAE, 0xB2, 0xB9, 0xC7, 0xD7, 0x28, 0xF5, 0x4E, 0x55, 0xD6, 0xDD }, - }, - { - { 0x8A, 0xAF, 0x36, 0x3C, 0xC9, 0xD8, 0x44, 0x15, 0xA7, 0xEB, 0x0D, 0x72, 0xDA, 0x08, 0xB3, 0x58, - 0x80, 0x68, 0x55, 0x9C, 0xB0, 0xA9, 0xAE, 0x92, 0xB8, 0xF4, 0x60, 0x2E, 0xDA, 0x23, 0x82, 0xAA }, - }, - { - { 0x8A, 0xB2, 0x77, 0x62, 0xF4, 0xA2, 0xE3, 0x11, 0x22, 0x04, 0x96, 0x98, 0x39, 0x99, 0xC8, 0xC4, - 0x60, 0x96, 0x3D, 0xFC, 0x1B, 0x88, 0x51, 0x11, 0x1D, 0xA4, 0x1D, 0x3F, 0x3B, 0x0A, 0x6E, 0x94 }, - }, - { - { 0x8A, 0xB4, 0x2A, 0x77, 0xBE, 0x55, 0x99, 0xD7, 0x0E, 0x6F, 0xDB, 0xB7, 0x87, 0xE6, 0xA0, 0xFF, - 0x21, 0xC5, 0x09, 0x5F, 0x86, 0xE2, 0xD7, 0x62, 0x34, 0x0D, 0x3D, 0xDD, 0xCC, 0x75, 0x87, 0x0C }, - }, - { - { 0x8A, 0xC9, 0x1B, 0x83, 0x10, 0x9D, 0x39, 0x9C, 0xC2, 0xBC, 0x69, 0x98, 0x49, 0x03, 0x73, 0x37, - 0x9B, 0xDD, 0xE4, 0xDA, 0x04, 0xBA, 0x8B, 0xAA, 0x3B, 0x22, 0x5C, 0x37, 0xDD, 0x21, 0x3C, 0xD9 }, - }, - { - { 0x8A, 0xD1, 0xD5, 0x48, 0x95, 0x27, 0xB5, 0x28, 0xE5, 0xB5, 0xD6, 0xA5, 0x95, 0x78, 0x87, 0x08, - 0x88, 0x8A, 0x3F, 0xB1, 0x9F, 0x2C, 0x7C, 0x8B, 0x38, 0x07, 0x0E, 0x1F, 0x38, 0x98, 0x96, 0x8B }, - }, - { - { 0x8A, 0xDB, 0x49, 0xD4, 0x15, 0x53, 0x56, 0x70, 0x5B, 0x64, 0x42, 0x6A, 0x99, 0x0F, 0x58, 0xB3, - 0xA0, 0x71, 0xEF, 0x78, 0x2E, 0x6C, 0x09, 0x53, 0x07, 0xD7, 0x74, 0x74, 0xD5, 0xB5, 0x7A, 0x62 }, - }, - { - { 0x8B, 0x00, 0xC4, 0x18, 0xC1, 0x50, 0x94, 0x4B, 0x2B, 0x53, 0x2F, 0x5D, 0x87, 0x9F, 0x7D, 0x42, - 0xF8, 0xFE, 0x71, 0x1E, 0x77, 0x35, 0xC6, 0x5D, 0x3C, 0xA0, 0x68, 0x50, 0x74, 0xA2, 0xEA, 0x48 }, - }, - { - { 0x8B, 0x1B, 0x7C, 0x94, 0xB9, 0x94, 0x4F, 0x59, 0xA3, 0xDE, 0x10, 0x21, 0x3B, 0xF6, 0x2B, 0xDC, - 0x50, 0x15, 0x79, 0x0D, 0xDB, 0x18, 0x6F, 0x63, 0x18, 0x24, 0x1A, 0x01, 0x51, 0x51, 0x3C, 0xF6 }, - }, - { - { 0x8B, 0x3A, 0x10, 0x35, 0xC3, 0xFD, 0xF3, 0x45, 0xFB, 0x70, 0x80, 0x44, 0x83, 0xA5, 0x04, 0x49, - 0xA3, 0xD7, 0x60, 0xC6, 0xBA, 0x48, 0xF5, 0xB8, 0x2D, 0x6B, 0xB2, 0x62, 0xED, 0x9D, 0xE3, 0x73 }, - }, - { - { 0x8B, 0x3A, 0x75, 0xCB, 0xC3, 0x62, 0xD2, 0x35, 0x57, 0x0E, 0x5D, 0xE7, 0x04, 0x29, 0x38, 0x70, - 0x8A, 0x1B, 0x0F, 0xCE, 0xB4, 0x59, 0x86, 0x2A, 0x38, 0x67, 0xB7, 0x34, 0xCD, 0xCB, 0x97, 0x94 }, - }, - { - { 0x8B, 0x59, 0x74, 0x2D, 0xFF, 0xF2, 0xD5, 0xBF, 0x70, 0x92, 0x6D, 0x1F, 0xE8, 0x00, 0x7D, 0x35, - 0x57, 0x91, 0x63, 0xFA, 0x4E, 0xEE, 0x1D, 0x03, 0x38, 0xF4, 0x4E, 0xD8, 0xD9, 0xFB, 0x67, 0x28 }, - }, - { - { 0x8B, 0xBE, 0x23, 0x92, 0xCB, 0xCE, 0xEF, 0x09, 0x75, 0xC2, 0xF4, 0xAE, 0xA1, 0xC6, 0x5A, 0xFD, - 0x27, 0x53, 0x0C, 0x9B, 0x05, 0x67, 0x6E, 0x31, 0xA1, 0x17, 0xAF, 0x44, 0xDC, 0x0A, 0x26, 0x98 }, - }, - { - { 0x8B, 0xD6, 0x24, 0xA6, 0x83, 0x99, 0x17, 0xA1, 0x9B, 0x87, 0x13, 0x50, 0xE7, 0x88, 0x98, 0x0C, - 0xA8, 0xF4, 0x2B, 0xA0, 0x96, 0x64, 0x22, 0xE8, 0xB7, 0xDD, 0xB3, 0x75, 0xB4, 0xC3, 0x50, 0xD3 }, - }, - { - { 0x8C, 0x3E, 0x7C, 0x1D, 0xCC, 0x7D, 0xD8, 0xE7, 0xD8, 0xBF, 0x7B, 0x5B, 0x3A, 0xE5, 0xE0, 0x27, - 0x2E, 0x81, 0x1A, 0xB9, 0xF3, 0xC3, 0xC5, 0x38, 0xE5, 0x74, 0x71, 0x77, 0xE6, 0x2D, 0x62, 0x92 }, - }, - { - { 0x8C, 0x3F, 0x58, 0x3D, 0xA8, 0x5F, 0x57, 0x4D, 0xBA, 0x1F, 0xD1, 0xE2, 0x70, 0x28, 0xFF, 0x93, - 0x42, 0x32, 0x2E, 0xF9, 0x08, 0xBB, 0xFA, 0x8B, 0x66, 0x40, 0x65, 0x2C, 0x4A, 0x73, 0x93, 0x7E }, - }, - { - { 0x8C, 0x7C, 0x65, 0x7B, 0xDA, 0x13, 0xCA, 0x62, 0xF2, 0x9A, 0x65, 0xC6, 0xD5, 0x19, 0x3A, 0x93, - 0xCF, 0x6C, 0x58, 0x77, 0x18, 0xAD, 0xCA, 0x67, 0x15, 0x8E, 0x97, 0xD3, 0x6A, 0x62, 0x3E, 0xCA }, - }, - { - { 0x8C, 0xA6, 0x79, 0x62, 0xC4, 0xA8, 0x09, 0x13, 0x33, 0xF2, 0x4E, 0xFD, 0x60, 0xEE, 0x70, 0xCF, - 0xED, 0xDB, 0xD6, 0x41, 0x59, 0x04, 0x70, 0x9E, 0x78, 0x5C, 0x33, 0x1B, 0x1E, 0xF5, 0x8F, 0x8E }, - }, - { - { 0x8C, 0xB4, 0x26, 0x39, 0x8A, 0xD9, 0x7B, 0x04, 0x5D, 0x6A, 0xE9, 0x75, 0x3E, 0x4D, 0x48, 0xB1, - 0x79, 0x23, 0xB9, 0x36, 0x5A, 0x6B, 0x4B, 0x97, 0xC4, 0xEC, 0xAC, 0x4A, 0x4B, 0x37, 0x03, 0x4B }, - }, - { - { 0x8C, 0xCD, 0x79, 0x41, 0x63, 0x00, 0xCA, 0x61, 0xEE, 0x56, 0xA6, 0x0D, 0xA1, 0xC8, 0x09, 0x35, - 0xB8, 0x6E, 0x27, 0x91, 0x93, 0xAD, 0x3D, 0x05, 0x65, 0x72, 0x9D, 0x69, 0xE0, 0x8C, 0x86, 0x96 }, - }, - { - { 0x8C, 0xFA, 0x92, 0x51, 0xB4, 0xDA, 0xEF, 0x50, 0x81, 0x0D, 0x6E, 0x19, 0xF5, 0xF8, 0x8E, 0xA2, - 0xC6, 0x5D, 0xB7, 0xA2, 0xE8, 0xA5, 0x06, 0xF7, 0xDF, 0x99, 0x55, 0x81, 0x7D, 0xDD, 0xEB, 0xC8 }, - }, - { - { 0x8D, 0x44, 0xD4, 0x17, 0x60, 0x46, 0x06, 0x3E, 0x2E, 0xB3, 0xC7, 0x50, 0x38, 0x13, 0xBB, 0xBB, - 0xF6, 0xCA, 0x6D, 0x54, 0x3F, 0x40, 0xB3, 0x99, 0xCC, 0x43, 0xF1, 0x12, 0x4B, 0x28, 0xFB, 0x97 }, - }, - { - { 0x8D, 0x73, 0x19, 0x48, 0x17, 0xF0, 0x97, 0x86, 0x15, 0x84, 0x61, 0x36, 0xC9, 0x8A, 0x59, 0x01, - 0x72, 0x8A, 0xB7, 0xFE, 0x11, 0x92, 0xE4, 0xED, 0x6D, 0x59, 0xB1, 0xDA, 0x5A, 0x42, 0x7D, 0xDA }, - }, - { - { 0x8D, 0x74, 0xC0, 0xD6, 0x6B, 0xB2, 0xEE, 0xB2, 0x6B, 0x9A, 0x55, 0x74, 0x38, 0x5D, 0xA7, 0xB4, - 0x14, 0x0A, 0xF0, 0x70, 0x47, 0xD2, 0xFE, 0x64, 0x3D, 0x1D, 0x1A, 0xE5, 0xB1, 0x96, 0x90, 0x43 }, - }, - { - { 0x8D, 0x85, 0xDA, 0x44, 0x6F, 0x5C, 0x79, 0x54, 0xBD, 0xF7, 0x6C, 0x09, 0x0C, 0xD2, 0x46, 0x68, - 0xFF, 0x23, 0x3C, 0xCD, 0xF6, 0x6B, 0x94, 0xDA, 0xD9, 0x92, 0x98, 0xEB, 0xCB, 0x16, 0x8D, 0xC5 }, - }, - { - { 0x8D, 0x8A, 0xD7, 0xC2, 0x60, 0x58, 0x16, 0xDD, 0x44, 0xB4, 0x29, 0x77, 0x9E, 0xD3, 0x62, 0xB9, - 0x88, 0x37, 0x5B, 0x65, 0x90, 0x46, 0x36, 0x04, 0xF0, 0x86, 0x07, 0x6E, 0x30, 0xE0, 0xA9, 0x5D }, - }, - { - { 0x8D, 0xF5, 0x42, 0x29, 0x9F, 0x9B, 0xDD, 0xF5, 0xAD, 0x42, 0xEE, 0x39, 0x88, 0xDD, 0x21, 0xBF, - 0x21, 0x6B, 0x82, 0x70, 0x91, 0x47, 0xB1, 0x43, 0x1D, 0x08, 0x20, 0xA0, 0x10, 0xD1, 0xC6, 0xBE }, - }, - { - { 0x8D, 0xFE, 0x05, 0xBF, 0x3B, 0x70, 0x65, 0xA3, 0x6F, 0x66, 0xB4, 0xA9, 0x80, 0x6A, 0xBF, 0x8A, - 0x7F, 0x37, 0xF6, 0xD9, 0x2D, 0x3E, 0xB7, 0x11, 0x49, 0xCE, 0x49, 0x21, 0x42, 0xCC, 0x85, 0x79 }, - }, - { - { 0x8E, 0x18, 0xFD, 0xBD, 0xB0, 0x08, 0x16, 0x00, 0x35, 0xFA, 0xF5, 0x01, 0x5B, 0xE7, 0xDA, 0xF4, - 0x63, 0xB5, 0xC4, 0x14, 0xEA, 0xBC, 0x8B, 0x89, 0xF3, 0xDB, 0xA2, 0x05, 0xAB, 0x09, 0xA6, 0x43 }, - }, - { - { 0x8E, 0x2E, 0x4E, 0x29, 0xA3, 0xB4, 0x7F, 0x9B, 0x4A, 0xF7, 0xF6, 0x02, 0xE9, 0xD2, 0xBA, 0xBA, - 0xED, 0xC3, 0x2D, 0x4A, 0x9E, 0xF2, 0x1A, 0x74, 0x1B, 0x07, 0xCE, 0xC1, 0xE4, 0x24, 0x90, 0xCF }, - }, - { - { 0x8E, 0x38, 0x31, 0x6E, 0x38, 0x8B, 0x56, 0x17, 0x8E, 0x60, 0x10, 0xAD, 0xC2, 0xCA, 0xBB, 0x40, - 0x24, 0x92, 0x64, 0xB3, 0x34, 0x42, 0x20, 0xCE, 0xD9, 0xF6, 0xEC, 0xBC, 0xF0, 0x71, 0x1C, 0x34 }, - }, - { - { 0x8E, 0x57, 0x12, 0xC7, 0x5E, 0xC1, 0xE0, 0x31, 0x73, 0x15, 0x96, 0x35, 0x60, 0xF2, 0x6C, 0x8E, - 0xCB, 0x29, 0xA7, 0xA0, 0x28, 0x7F, 0x84, 0xE7, 0xCC, 0x29, 0x99, 0x67, 0x5E, 0x41, 0xA0, 0x5D }, - }, - { - { 0x8E, 0xB9, 0x24, 0x0B, 0x19, 0xA3, 0xCC, 0x2F, 0xF2, 0xCD, 0xF9, 0xAD, 0x2C, 0x71, 0x2E, 0x23, - 0xF4, 0x1E, 0x35, 0x2A, 0xE1, 0xDA, 0x79, 0x29, 0xD6, 0x08, 0xCB, 0xBC, 0x81, 0xA9, 0xE0, 0xC3 }, - }, - { - { 0x8F, 0x01, 0xE1, 0x2E, 0xF4, 0x24, 0x16, 0x9D, 0x2D, 0x5C, 0x2D, 0x25, 0x73, 0xD4, 0x97, 0x36, - 0xE6, 0x9B, 0x05, 0x74, 0x1D, 0x31, 0xB1, 0x62, 0x61, 0xB5, 0xBD, 0xB3, 0xB4, 0x48, 0x77, 0xE2 }, - }, - { - { 0x8F, 0x10, 0x10, 0x47, 0x93, 0xE8, 0x55, 0x42, 0xBC, 0x06, 0x04, 0xD6, 0xCF, 0x21, 0x5F, 0x78, - 0x80, 0xBD, 0x6A, 0x4D, 0xD0, 0xFD, 0xF1, 0xE7, 0xA5, 0xB9, 0xCA, 0x12, 0x46, 0xF5, 0xC4, 0x09 }, - }, - { - { 0x8F, 0x71, 0x27, 0x76, 0x2E, 0xE7, 0x51, 0x69, 0xBD, 0xC3, 0x5B, 0x04, 0xA7, 0x28, 0xE9, 0xD3, - 0x1B, 0x7E, 0x4D, 0x37, 0x89, 0xAA, 0x2C, 0x46, 0xD8, 0xA3, 0x1B, 0x3D, 0xFA, 0x81, 0xA9, 0x7E }, - }, - { - { 0x8F, 0x93, 0xC5, 0xA7, 0xC0, 0x96, 0x66, 0x8B, 0xD4, 0x51, 0x56, 0xBA, 0xD5, 0x6F, 0x06, 0x12, - 0x04, 0x5D, 0x63, 0x65, 0xB6, 0xBB, 0xAA, 0x63, 0xBA, 0xCB, 0xF2, 0xBE, 0x01, 0xB5, 0x2C, 0xD3 }, - }, - { - { 0x8F, 0x94, 0x15, 0x92, 0x6F, 0x40, 0x49, 0xEA, 0x41, 0x8A, 0x30, 0x7C, 0x76, 0x36, 0xE4, 0x9B, - 0x14, 0x4F, 0xA5, 0x3E, 0x52, 0xE1, 0x04, 0x15, 0x5F, 0x58, 0x03, 0x5E, 0x45, 0x41, 0xCD, 0x6E }, - }, - { - { 0x8F, 0x9F, 0x3E, 0x59, 0xD3, 0x6A, 0x9F, 0x33, 0x15, 0x04, 0x9B, 0x99, 0x1C, 0x89, 0xC3, 0x21, - 0xE1, 0xF1, 0xF6, 0x78, 0xE0, 0xA2, 0xA4, 0x2F, 0xC1, 0x44, 0xE5, 0xFF, 0xF2, 0x3B, 0x62, 0xA5 }, - }, - { - { 0x8F, 0xA2, 0x4B, 0x76, 0xD7, 0xAA, 0xD1, 0x53, 0x3F, 0xEA, 0xFE, 0x73, 0xE0, 0x0F, 0xFA, 0x8B, - 0x89, 0x4B, 0x95, 0xB4, 0xE7, 0x01, 0x59, 0x54, 0x9E, 0xAD, 0xA6, 0x58, 0xF6, 0xA2, 0x2B, 0x88 }, - }, - { - { 0x8F, 0xCB, 0x3C, 0x28, 0xE8, 0x1E, 0xFA, 0x6A, 0x1F, 0xE3, 0x4D, 0x03, 0x8A, 0x3B, 0xFB, 0x00, - 0x72, 0x96, 0xA0, 0x48, 0x24, 0xB3, 0xA2, 0x06, 0xE9, 0xEF, 0x28, 0x97, 0xE6, 0x97, 0x51, 0x10 }, - }, - { - { 0x90, 0x30, 0xEC, 0x29, 0x71, 0x10, 0x6A, 0x7C, 0x68, 0x8B, 0xBE, 0xA9, 0x1D, 0x70, 0xF3, 0x4D, - 0x75, 0xD6, 0x74, 0x5B, 0x30, 0x48, 0xFB, 0x1D, 0x9D, 0x3B, 0xC4, 0x9F, 0x9F, 0xC8, 0x78, 0xBA }, - }, - { - { 0x90, 0xB3, 0xA1, 0x85, 0x36, 0x86, 0xAF, 0xEB, 0x15, 0x4A, 0xEF, 0x7E, 0x84, 0x0D, 0x38, 0x04, - 0x4E, 0x7D, 0x7F, 0x6D, 0xC4, 0xCE, 0x82, 0x8C, 0xE3, 0x97, 0x55, 0xAC, 0x88, 0xE4, 0x2E, 0x07 }, - }, - { - { 0x90, 0xE2, 0x51, 0x86, 0x7F, 0x6B, 0x0C, 0x14, 0xBD, 0x9B, 0x51, 0x0C, 0xFD, 0xA8, 0x48, 0x49, - 0x72, 0xFD, 0xF0, 0xE0, 0x6D, 0xC1, 0x1F, 0x5D, 0x1D, 0x59, 0x0B, 0xE3, 0xFC, 0x38, 0xDF, 0xF0 }, - }, - { - { 0x90, 0xF2, 0xF3, 0x73, 0xB9, 0xA6, 0x2E, 0x3C, 0xC8, 0x15, 0x87, 0x57, 0x58, 0x13, 0x18, 0x9B, - 0xA6, 0x9C, 0x67, 0x28, 0x1F, 0x41, 0x93, 0xE4, 0x9B, 0x31, 0x68, 0x9A, 0xA3, 0x7C, 0x3C, 0x21 }, - }, - { - { 0x91, 0x02, 0x41, 0xA2, 0xDD, 0x40, 0xA2, 0x83, 0xEA, 0x1F, 0x0F, 0x4F, 0x31, 0xC9, 0x48, 0x9D, - 0x38, 0x45, 0x0F, 0x08, 0xCA, 0x8B, 0xCC, 0x21, 0x87, 0xF6, 0x90, 0xB4, 0x4F, 0x37, 0x30, 0x17 }, - }, - { - { 0x91, 0x31, 0x4F, 0xF3, 0xFB, 0x23, 0xD3, 0x41, 0x44, 0x63, 0x17, 0xF1, 0xC6, 0xCA, 0x9D, 0x6C, - 0x6D, 0xCB, 0x7A, 0x95, 0x65, 0x1D, 0xA7, 0xE3, 0xF1, 0x56, 0x00, 0xF4, 0x3A, 0x25, 0x8A, 0xF3 }, - }, - { - { 0x91, 0x3B, 0xE0, 0x71, 0xEC, 0x66, 0x46, 0x91, 0x37, 0x98, 0x38, 0x6E, 0x69, 0x4F, 0x08, 0x8B, - 0xF0, 0x9D, 0x48, 0xA3, 0x97, 0xF9, 0x79, 0xE1, 0x24, 0x4C, 0x20, 0x2F, 0x3C, 0x8E, 0x13, 0x8D }, - }, - { - { 0x91, 0x6B, 0x1A, 0x6B, 0x61, 0x6C, 0x6D, 0x8A, 0xC1, 0x49, 0xA3, 0x31, 0x04, 0x83, 0x51, 0x1A, - 0xF7, 0xA7, 0xD5, 0x3C, 0x60, 0x17, 0x9E, 0x7F, 0xA7, 0x93, 0x1E, 0x59, 0x70, 0xB7, 0x82, 0xF1 }, - }, - { - { 0x91, 0x90, 0xF8, 0x25, 0x51, 0x0C, 0x65, 0x98, 0xE1, 0x9D, 0x17, 0xDB, 0xBE, 0x6E, 0x7C, 0x82, - 0x31, 0x86, 0x9C, 0xA7, 0xF6, 0xE3, 0x07, 0xA2, 0xC2, 0xCC, 0x54, 0x77, 0x8D, 0x4A, 0x89, 0xB3 }, - }, - { - { 0x91, 0xC7, 0x6E, 0xF8, 0xC7, 0x05, 0x3B, 0x2A, 0x27, 0x0B, 0x97, 0x19, 0x78, 0x3C, 0x85, 0x10, - 0xA2, 0x89, 0x0A, 0x48, 0x40, 0x18, 0x63, 0x72, 0x6E, 0x23, 0x3A, 0x82, 0xBF, 0x9A, 0x0B, 0xCF }, - }, - { - { 0x92, 0x3F, 0x0F, 0x8C, 0x40, 0x5A, 0x02, 0xE6, 0x82, 0xC4, 0xB4, 0x66, 0x5A, 0x7E, 0xE7, 0x16, - 0xAA, 0x57, 0xE0, 0xA5, 0x86, 0xC2, 0x4A, 0x16, 0x5A, 0xAD, 0x7E, 0x5B, 0xDA, 0x22, 0x78, 0x24 }, - }, - { - { 0x92, 0x71, 0x44, 0x12, 0x1C, 0x23, 0x63, 0x57, 0x07, 0xE9, 0x40, 0x7F, 0x7F, 0xFF, 0x6A, 0x64, - 0x63, 0x5D, 0x7C, 0xE9, 0x06, 0x66, 0xD4, 0x29, 0x94, 0x09, 0x7A, 0xF4, 0x0C, 0x31, 0x36, 0xFB }, - }, - { - { 0x92, 0x83, 0x70, 0x07, 0x63, 0x1B, 0x8F, 0xFA, 0x02, 0x91, 0xD9, 0xE9, 0xC4, 0xB0, 0x8A, 0x5B, - 0xFA, 0x84, 0x5B, 0xA1, 0x7E, 0x79, 0xA2, 0x2D, 0x9D, 0x9D, 0x44, 0xB9, 0x02, 0x23, 0x3D, 0x16 }, - }, - { - { 0x92, 0x8C, 0x1C, 0xD7, 0x50, 0x82, 0x84, 0x1A, 0x02, 0xEF, 0x8B, 0x49, 0x45, 0x6D, 0x6D, 0x3B, - 0x72, 0xB9, 0x79, 0xFF, 0xDA, 0xFB, 0xFD, 0xE2, 0xC6, 0x50, 0xD3, 0x53, 0xDC, 0xD4, 0xF8, 0xFE }, - }, - { - { 0x93, 0x03, 0x43, 0xB5, 0xE8, 0xC1, 0x5D, 0x6D, 0x93, 0x9D, 0x0F, 0x39, 0xF0, 0x53, 0x7A, 0xA6, - 0x23, 0x3F, 0x61, 0x17, 0x93, 0x79, 0xCE, 0xBC, 0x8D, 0x7C, 0x62, 0x01, 0x09, 0x9F, 0xFD, 0xE2 }, - }, - { - { 0x93, 0x8A, 0xE3, 0xE7, 0x15, 0x48, 0xA9, 0xC3, 0x14, 0x27, 0xCB, 0xA7, 0x40, 0xBE, 0x2E, 0xB9, - 0x26, 0x88, 0x68, 0xBD, 0xAC, 0xC1, 0xDA, 0xA8, 0x67, 0x02, 0xFA, 0xB7, 0x93, 0x70, 0xB8, 0xF9 }, - }, - { - { 0x93, 0xAC, 0x4B, 0xBC, 0x6E, 0xBD, 0x52, 0x7E, 0xA9, 0x42, 0xAF, 0x29, 0x4A, 0x5D, 0xAB, 0xD1, - 0x4F, 0xE7, 0x7C, 0x5E, 0x6A, 0x4E, 0xEB, 0x14, 0xB8, 0x0D, 0x42, 0x9F, 0x39, 0xFD, 0xCC, 0xE7 }, - }, - { - { 0x94, 0x18, 0xEF, 0x6D, 0x9F, 0xF6, 0x06, 0xFD, 0xC7, 0x55, 0x78, 0xF0, 0xF5, 0xDE, 0xEA, 0xB1, - 0x39, 0x69, 0x80, 0xF5, 0xB5, 0xD3, 0x96, 0x9D, 0x7A, 0x0F, 0x23, 0x83, 0x70, 0x3F, 0x9B, 0xB1 }, - }, - { - { 0x94, 0x77, 0xCF, 0xEC, 0xDA, 0x46, 0x1D, 0xBC, 0x01, 0xA3, 0xA3, 0x0E, 0xA2, 0x64, 0x31, 0x42, - 0x5B, 0xD1, 0xB1, 0x0C, 0xF7, 0xC2, 0xF2, 0x06, 0x0E, 0xCB, 0x39, 0xF7, 0xD4, 0x15, 0x5B, 0x0D }, - }, - { - { 0x94, 0x97, 0xDC, 0x04, 0xAA, 0xBB, 0xED, 0xF0, 0xD9, 0xE7, 0x65, 0x40, 0x60, 0x02, 0x55, 0x76, - 0x7D, 0xF3, 0xB9, 0x70, 0x59, 0x67, 0x02, 0x86, 0x70, 0x7D, 0x85, 0x85, 0xE4, 0xD8, 0x2C, 0x63 }, - }, - { - { 0x94, 0x9E, 0x13, 0x59, 0x7F, 0x32, 0x06, 0x9F, 0xF3, 0xA6, 0xCF, 0x49, 0x07, 0x1E, 0x70, 0xF4, - 0x0C, 0x4A, 0x2E, 0x07, 0x2E, 0x98, 0x69, 0xFE, 0x15, 0x97, 0xEE, 0x8E, 0xB7, 0x16, 0x34, 0x09 }, - }, - { - { 0x94, 0xC5, 0x29, 0xAA, 0x2D, 0xFE, 0xB3, 0x9F, 0x5E, 0x6C, 0x66, 0xD3, 0x53, 0x37, 0x1E, 0xBC, - 0xD2, 0xCA, 0xED, 0xBD, 0x1F, 0x0E, 0x6C, 0x79, 0x75, 0x5E, 0xEE, 0x61, 0xE9, 0xE6, 0x24, 0xF4 }, - }, - { - { 0x94, 0xDC, 0x80, 0x07, 0x49, 0x1D, 0xA8, 0xBF, 0xB7, 0x39, 0x14, 0xAD, 0xCE, 0xF7, 0x1A, 0x12, - 0x41, 0x58, 0xBA, 0xD1, 0x7B, 0xA8, 0x8F, 0xA9, 0x46, 0x57, 0x9B, 0xBC, 0x2D, 0x64, 0x97, 0x8D }, - }, - { - { 0x95, 0x68, 0x33, 0xAE, 0xE6, 0x61, 0x19, 0x26, 0xE9, 0x52, 0x72, 0xA1, 0xF5, 0x88, 0xF9, 0x2A, - 0xF5, 0x2C, 0xAE, 0x70, 0x7A, 0xCD, 0xCC, 0x82, 0x63, 0x99, 0x7B, 0xFA, 0x8C, 0x71, 0x9C, 0xA8 }, - }, - { - { 0x95, 0x6D, 0xBC, 0x65, 0x57, 0x62, 0xCE, 0x49, 0xE5, 0xE8, 0x46, 0x99, 0x2C, 0x26, 0xEB, 0xF5, - 0x66, 0x60, 0x42, 0xD2, 0xC0, 0xD7, 0xE7, 0xCF, 0x74, 0x04, 0x26, 0xBE, 0x3C, 0x51, 0x99, 0x72 }, - }, - { - { 0x95, 0x89, 0xDA, 0xC9, 0xEC, 0xE7, 0x6D, 0xF5, 0x72, 0x01, 0x96, 0xDC, 0x58, 0x6D, 0x17, 0x9D, - 0x73, 0x5D, 0xF7, 0x17, 0x92, 0x6C, 0x06, 0x1E, 0xA7, 0x0C, 0x40, 0x85, 0x64, 0x8F, 0xF3, 0x12 }, - }, - { - { 0x95, 0xF4, 0x59, 0xAC, 0xF2, 0x57, 0x64, 0x4C, 0x90, 0x9A, 0xDC, 0xAE, 0xAD, 0xD8, 0x8A, 0x3C, - 0x57, 0x76, 0x2E, 0xCB, 0x09, 0x2C, 0x50, 0xB4, 0x51, 0xC1, 0x58, 0x6B, 0x21, 0x8E, 0x6B, 0x26 }, - }, - { - { 0x96, 0xA4, 0x59, 0x90, 0xFC, 0xD0, 0x1C, 0x9C, 0x2A, 0xF0, 0x64, 0x5F, 0x87, 0xB9, 0x69, 0x8B, - 0x05, 0xAF, 0xE6, 0x94, 0x32, 0xEB, 0x57, 0x01, 0x08, 0x20, 0x13, 0xBA, 0xC5, 0xB0, 0x55, 0x60 }, - }, - { - { 0x96, 0xEB, 0x44, 0xAA, 0x6A, 0x20, 0x49, 0xE6, 0xBA, 0xFF, 0xE6, 0xB5, 0x21, 0xC4, 0xAD, 0x8C, - 0x58, 0x77, 0x26, 0xCA, 0xA0, 0x12, 0xE8, 0xFB, 0x8E, 0x8E, 0x21, 0x89, 0x77, 0xBF, 0x1D, 0xF6 }, - }, - { - { 0x97, 0x4F, 0x51, 0xA6, 0x04, 0x68, 0x48, 0xFA, 0xA7, 0xB3, 0x3F, 0xD2, 0x39, 0x13, 0x86, 0x42, - 0x8B, 0xD5, 0x24, 0xEA, 0xEB, 0xA8, 0x01, 0x4E, 0x6D, 0x1F, 0xE2, 0x54, 0x38, 0x3F, 0x41, 0x79 }, - }, - { - { 0x97, 0x83, 0x7F, 0xE4, 0xCF, 0xBF, 0x4F, 0xF0, 0x37, 0x63, 0x1C, 0xF4, 0xB5, 0x3F, 0x9F, 0xA8, - 0xAB, 0x37, 0xA8, 0x30, 0x1C, 0xAB, 0x9E, 0x48, 0x71, 0x5F, 0x53, 0x7D, 0xD0, 0x8A, 0x68, 0x48 }, - }, - { - { 0x97, 0x8D, 0x6F, 0x1E, 0x9A, 0xA3, 0xA3, 0xCE, 0xB1, 0xAD, 0xA6, 0x09, 0xE2, 0x00, 0x95, 0xFB, - 0xC3, 0x3A, 0x6B, 0xBC, 0x6A, 0x21, 0xD8, 0x0A, 0x4E, 0xCB, 0x27, 0x3C, 0x60, 0xAC, 0x2A, 0xC7 }, - }, - { - { 0x97, 0xD6, 0x24, 0xEA, 0xC8, 0x80, 0x91, 0x03, 0x4A, 0x84, 0xB4, 0xDC, 0x63, 0x33, 0x92, 0x37, - 0xDA, 0xF4, 0xA2, 0xB0, 0xF6, 0xC6, 0xE2, 0x55, 0xE7, 0xEC, 0xE6, 0x82, 0x59, 0x1D, 0x5E, 0xDC }, - }, - { - { 0x97, 0xE2, 0x11, 0x70, 0x95, 0x44, 0x9C, 0xDF, 0xC0, 0xA8, 0x3E, 0xD4, 0x9E, 0x65, 0x0A, 0xDF, - 0xD9, 0xBC, 0x0B, 0x3C, 0x50, 0x04, 0x9D, 0x7B, 0x93, 0x24, 0x5A, 0xCC, 0x3A, 0x0C, 0x16, 0xAF }, - }, - { - { 0x98, 0x15, 0x9D, 0xD1, 0x88, 0x39, 0xFD, 0xF4, 0x3E, 0xC0, 0x00, 0x23, 0xAD, 0x1D, 0x4E, 0x27, - 0xD8, 0xF9, 0x50, 0xBE, 0xC8, 0x60, 0x40, 0x11, 0x1E, 0x84, 0x54, 0xCE, 0x44, 0x6F, 0xAB, 0x75 }, - }, - { - { 0x98, 0x39, 0xE6, 0x09, 0x46, 0xEF, 0x20, 0xE2, 0x44, 0x68, 0xC1, 0x81, 0x88, 0xBB, 0xB3, 0xC6, - 0xE8, 0x80, 0xF3, 0x6D, 0x0D, 0xED, 0xE8, 0xD2, 0x4A, 0x23, 0x05, 0x86, 0x3A, 0x5B, 0x5D, 0xFE }, - }, - { - { 0x98, 0x57, 0x02, 0xC0, 0x55, 0x05, 0xD9, 0xBA, 0xE0, 0xCE, 0x23, 0xAB, 0x2C, 0xB8, 0x65, 0xA1, - 0xD1, 0x3F, 0x7B, 0xE0, 0x4F, 0xAB, 0xC1, 0x19, 0x49, 0x4B, 0x4C, 0xC1, 0x0A, 0x7D, 0x9A, 0xDB }, - }, - { - { 0x98, 0x76, 0x8D, 0x66, 0x7E, 0x4D, 0xFC, 0x1D, 0x99, 0x5E, 0x42, 0xC7, 0x1E, 0x31, 0x93, 0x31, - 0x6C, 0xEF, 0x8C, 0x2A, 0xF5, 0x9A, 0x0E, 0xA6, 0x19, 0x81, 0xFB, 0x42, 0x00, 0x72, 0x57, 0xC7 }, - }, - { - { 0x98, 0x7A, 0xD4, 0x70, 0x5F, 0x65, 0x65, 0xAF, 0x64, 0x53, 0x0D, 0x09, 0x60, 0xB8, 0x82, 0x74, - 0x0A, 0xFB, 0x8A, 0x74, 0xD5, 0xCC, 0x3C, 0x68, 0x19, 0x34, 0x69, 0x83, 0xF2, 0x51, 0x33, 0x37 }, - }, - { - { 0x98, 0xAA, 0xB4, 0xED, 0x43, 0x89, 0xF3, 0x5E, 0x74, 0x23, 0x74, 0x90, 0x68, 0x01, 0x15, 0x3D, - 0xC7, 0xC8, 0xE3, 0x2D, 0x18, 0xB4, 0xD7, 0x81, 0x88, 0x28, 0x3A, 0x55, 0x77, 0xCB, 0x55, 0xFB }, - }, - { - { 0x98, 0xB5, 0x92, 0x4E, 0x06, 0xCD, 0xEA, 0x1B, 0xA1, 0x7F, 0xDB, 0x1B, 0x13, 0x97, 0x90, 0x24, - 0xB1, 0xC2, 0x5B, 0x0A, 0x69, 0x0C, 0xFE, 0x87, 0x8D, 0x4C, 0xB4, 0x07, 0x76, 0xB9, 0x6F, 0xB0 }, - }, - { - { 0x98, 0xEB, 0xC4, 0x98, 0xBD, 0x91, 0x23, 0x5E, 0xDF, 0xC2, 0xDC, 0x7B, 0xE1, 0x8D, 0x88, 0xF3, - 0x5E, 0x9F, 0x33, 0x41, 0xD8, 0x8E, 0xF4, 0x38, 0xA8, 0xD4, 0x11, 0xF1, 0x88, 0x11, 0x54, 0x56 }, - }, - { - { 0x99, 0x05, 0x0A, 0x48, 0x01, 0x8D, 0x00, 0xB3, 0xBF, 0xE5, 0xA8, 0x09, 0x24, 0x6E, 0x25, 0x54, - 0x5F, 0x36, 0xD2, 0x17, 0x8F, 0xD2, 0x02, 0xAE, 0x5D, 0xC8, 0xE7, 0xFF, 0x4D, 0x5A, 0x07, 0xF9 }, - }, - { - { 0x99, 0x08, 0xA8, 0xDD, 0x06, 0x0C, 0x74, 0xFA, 0xB2, 0x0C, 0x2F, 0x44, 0x17, 0x26, 0x0A, 0xFA, - 0xF0, 0x6D, 0x6C, 0x10, 0x81, 0xB2, 0x6C, 0x5F, 0x5F, 0x51, 0x5C, 0x2D, 0x04, 0xEB, 0x4A, 0x52 }, - }, - { - { 0x99, 0x45, 0xBA, 0x12, 0xC4, 0x4B, 0x5A, 0x01, 0x4D, 0xBC, 0x4D, 0xBB, 0xCA, 0x86, 0x10, 0x87, - 0xC1, 0x9E, 0xDD, 0x6D, 0xCE, 0xB1, 0x6D, 0x52, 0x88, 0x63, 0x63, 0xA7, 0xCD, 0xC8, 0x69, 0x5F }, - }, - { - { 0x99, 0xA5, 0x5F, 0x76, 0xCB, 0xEA, 0x0F, 0x3E, 0x60, 0x71, 0xD3, 0x82, 0x18, 0x1A, 0xF6, 0xCB, - 0x25, 0xBD, 0xC5, 0x87, 0x5E, 0x29, 0xF0, 0xF4, 0xD7, 0x19, 0xA9, 0xD3, 0x5B, 0x5B, 0xD6, 0xBF }, - }, - { - { 0x99, 0xB1, 0x38, 0xBB, 0x53, 0xC5, 0x4D, 0x1C, 0x7A, 0xC2, 0x9A, 0x57, 0x85, 0xC8, 0xB1, 0x9F, - 0xDD, 0xC3, 0x7D, 0x99, 0x4A, 0x3E, 0x6C, 0x31, 0xF7, 0x50, 0xA1, 0xBF, 0xEB, 0xE9, 0xFE, 0xF9 }, - }, - { - { 0x99, 0xB4, 0x6C, 0x68, 0x90, 0x62, 0x37, 0x40, 0x23, 0xDB, 0x68, 0x19, 0xF8, 0x89, 0xD3, 0xC1, - 0xBB, 0x8A, 0x83, 0x8C, 0x6B, 0x51, 0x7E, 0x32, 0x7E, 0xD9, 0x1C, 0x6C, 0x96, 0x2D, 0x06, 0x49 }, - }, - { - { 0x99, 0xE1, 0xFB, 0x3E, 0xEB, 0x89, 0x1E, 0xBA, 0x4F, 0x9B, 0xD4, 0x7F, 0x04, 0xBC, 0x9A, 0x62, - 0xBD, 0x3B, 0x61, 0x85, 0x45, 0x4B, 0xF5, 0x35, 0x9E, 0x39, 0x37, 0xE0, 0xB8, 0xA5, 0xFF, 0xB7 }, - }, - { - { 0x9A, 0x4B, 0x49, 0x93, 0xB4, 0xED, 0x8C, 0x27, 0xE7, 0x7F, 0x3C, 0x8A, 0xAF, 0xDB, 0xDC, 0x11, - 0x1A, 0x36, 0xB7, 0x3C, 0xCA, 0xDB, 0x87, 0x04, 0x98, 0x25, 0x00, 0xD1, 0xB0, 0xF1, 0x09, 0xF2 }, - }, - { - { 0x9A, 0x4C, 0xA1, 0x75, 0xC4, 0x6F, 0x5C, 0x17, 0x05, 0x5E, 0x28, 0x16, 0xC8, 0x37, 0x98, 0x54, - 0x89, 0x46, 0x76, 0xEE, 0xB3, 0x4C, 0xF7, 0x2A, 0x14, 0x83, 0x04, 0x97, 0xD8, 0x4A, 0x4F, 0x6C }, - }, - { - { 0x9A, 0x5D, 0x7A, 0xF0, 0xF3, 0xF4, 0x34, 0xBA, 0x6E, 0x67, 0x37, 0x65, 0x2C, 0x42, 0x87, 0x6A, - 0x8E, 0xC1, 0x9A, 0xCE, 0x0C, 0x7C, 0xBF, 0x3E, 0xCE, 0x5C, 0x32, 0x62, 0xAE, 0xEB, 0x77, 0xD4 }, - }, - { - { 0x9A, 0x5F, 0xAB, 0xE5, 0x8A, 0x1E, 0xAE, 0x4B, 0x20, 0xBA, 0xB3, 0xA7, 0xEB, 0x5E, 0x42, 0xA2, - 0xDA, 0x83, 0x11, 0x59, 0x25, 0x7D, 0xD4, 0xE3, 0x55, 0x2E, 0xC6, 0xF7, 0xD2, 0x67, 0xFA, 0xBA }, - }, - { - { 0x9A, 0x9F, 0x50, 0x16, 0x20, 0x70, 0x69, 0x62, 0xE5, 0x07, 0xF7, 0x57, 0xB2, 0xFE, 0x76, 0x44, - 0xA3, 0xF4, 0x96, 0x90, 0x57, 0x1A, 0x30, 0x34, 0xDB, 0xBC, 0x35, 0x96, 0xA4, 0xC1, 0x60, 0x2C }, - }, - { - { 0x9A, 0xA3, 0xBC, 0xD0, 0x80, 0x11, 0xE2, 0xF9, 0x0A, 0x59, 0x2A, 0xD7, 0xA4, 0x9D, 0xB2, 0x7F, - 0xAA, 0xD8, 0xA7, 0x3C, 0xEA, 0x24, 0x6C, 0x21, 0x65, 0x09, 0xBB, 0x36, 0x27, 0xE8, 0x2A, 0x22 }, - }, - { - { 0x9A, 0xAE, 0x9D, 0x45, 0xAA, 0x04, 0x03, 0x06, 0x4B, 0xC5, 0xA7, 0x4D, 0xD0, 0x32, 0x5D, 0xA4, - 0x1E, 0x12, 0xCF, 0x58, 0x6C, 0x46, 0x2E, 0xE0, 0x6C, 0x2B, 0xB4, 0x56, 0xF8, 0x44, 0x1C, 0x4F }, - }, - { - { 0x9A, 0xC0, 0xD1, 0x78, 0x82, 0x0B, 0xC5, 0x49, 0x96, 0x0A, 0xA1, 0x52, 0xBC, 0x17, 0x3D, 0x70, - 0xBA, 0x6B, 0x36, 0x24, 0x7E, 0x18, 0xA0, 0x42, 0xEB, 0x83, 0x05, 0x41, 0x96, 0x84, 0xA7, 0x2C }, - }, - { - { 0x9A, 0xC1, 0x48, 0xB3, 0x72, 0x12, 0xAD, 0x5D, 0xDE, 0xC4, 0x36, 0xB5, 0x65, 0x77, 0xF5, 0x4B, - 0x99, 0xEA, 0xFC, 0x69, 0x2C, 0x4E, 0x6F, 0xFD, 0x75, 0x85, 0x39, 0xCD, 0xAE, 0xFE, 0x30, 0x4D }, - }, - { - { 0x9A, 0xEE, 0x05, 0x8D, 0x61, 0x51, 0xE2, 0x65, 0xE2, 0x5F, 0x9A, 0x82, 0x34, 0x54, 0x38, 0xC5, - 0xA7, 0x42, 0x8C, 0xD6, 0xD8, 0xE2, 0xB4, 0xF3, 0x39, 0xC4, 0x7F, 0xB2, 0x38, 0xC0, 0x93, 0x3F }, - }, - { - { 0x9B, 0x4B, 0xBC, 0xEA, 0x3E, 0x22, 0xA4, 0x3B, 0xC5, 0xD6, 0x58, 0x7F, 0x58, 0x1D, 0x0A, 0x14, - 0x38, 0xD2, 0xEE, 0xA6, 0xDA, 0xD9, 0xF1, 0xAA, 0x23, 0xFC, 0x23, 0x09, 0x7A, 0xDF, 0x4D, 0x75 }, - }, - { - { 0x9B, 0x8F, 0x9F, 0xC4, 0xAF, 0xA7, 0x04, 0x0D, 0x4E, 0x59, 0x4D, 0x66, 0x7C, 0x44, 0x44, 0xB5, - 0x25, 0x88, 0x20, 0xC0, 0x8F, 0x89, 0x91, 0x0E, 0xD3, 0x42, 0x1C, 0xB4, 0xA9, 0x7B, 0xB7, 0x9E }, - }, - { - { 0x9B, 0xC8, 0xF4, 0xCD, 0x33, 0xB9, 0x19, 0xCF, 0xFC, 0x0B, 0x71, 0x72, 0x63, 0x1A, 0x87, 0xD3, - 0x5B, 0xAF, 0x27, 0xB8, 0xA4, 0x75, 0x28, 0xAE, 0x25, 0x29, 0x35, 0x8F, 0x42, 0x1A, 0xCC, 0xB1 }, - }, - { - { 0x9B, 0xD6, 0x5A, 0xC4, 0x0A, 0x62, 0x5A, 0x81, 0x90, 0x4F, 0xE7, 0x8F, 0x89, 0x35, 0x25, 0x1E, - 0x5C, 0x66, 0x91, 0xF0, 0xB3, 0xD7, 0x24, 0x54, 0xD3, 0x84, 0x12, 0x01, 0xF3, 0x9F, 0xCD, 0x1E }, - }, - { - { 0x9C, 0x70, 0x8D, 0x5B, 0xAB, 0x37, 0xF5, 0xB6, 0xBC, 0x8A, 0x77, 0x53, 0x12, 0x57, 0x2A, 0xB2, - 0x79, 0x21, 0x6D, 0x55, 0x6D, 0xA7, 0x4A, 0xC2, 0xA7, 0xC0, 0x41, 0xE8, 0xCE, 0xB0, 0xBE, 0x0A }, - }, - { - { 0x9C, 0x85, 0x31, 0xE7, 0xC8, 0xFB, 0xDA, 0xB8, 0x61, 0x4D, 0x56, 0x17, 0x79, 0x9E, 0x00, 0x6B, - 0x69, 0x42, 0xE4, 0x20, 0xC4, 0x07, 0x1D, 0x7D, 0xB8, 0x9C, 0xD7, 0x72, 0x81, 0x69, 0x16, 0x70 }, - }, - { - { 0x9C, 0xCA, 0x23, 0x7C, 0xDF, 0xCA, 0x2C, 0x72, 0xC6, 0x09, 0x25, 0x4A, 0x72, 0x57, 0xFE, 0xD5, - 0x3A, 0xF1, 0x44, 0xAB, 0xC2, 0x5E, 0xCD, 0x8E, 0xF7, 0x01, 0x30, 0x8C, 0xB1, 0x3C, 0xF7, 0x69 }, - }, - { - { 0x9C, 0xF9, 0x96, 0xC5, 0x3A, 0x2A, 0x7B, 0x1A, 0x99, 0xAE, 0x53, 0x0F, 0xC4, 0x36, 0x19, 0x62, - 0x28, 0xEA, 0xE4, 0x79, 0x72, 0xAE, 0x9C, 0xB0, 0x69, 0xB1, 0x8C, 0x29, 0xE3, 0x30, 0x40, 0x9C }, - }, - { - { 0x9D, 0x32, 0x0D, 0x7B, 0x3D, 0x46, 0x34, 0x5F, 0x0F, 0x2D, 0xEC, 0xB7, 0x62, 0xA4, 0x81, 0x7B, - 0x26, 0xA9, 0xA7, 0xCF, 0xE8, 0x71, 0xB1, 0x3E, 0x84, 0xE7, 0xEC, 0x81, 0x0A, 0xAE, 0xB6, 0x2C }, - }, - { - { 0x9D, 0x50, 0xB9, 0x1D, 0xB0, 0x1B, 0xD1, 0x89, 0x9A, 0xF8, 0x17, 0xAD, 0xBF, 0xDC, 0x24, 0x8F, - 0x75, 0xC8, 0x43, 0x53, 0xA9, 0xAE, 0x7A, 0x0B, 0xB4, 0xD1, 0x56, 0x32, 0x9B, 0xDB, 0x51, 0xE0 }, - }, - { - { 0x9D, 0x6B, 0xDF, 0xCF, 0x0C, 0xBF, 0xFE, 0xEA, 0x3B, 0x1A, 0xC7, 0xE9, 0x63, 0xCB, 0xB5, 0xF2, - 0x7F, 0xBD, 0xA8, 0x9D, 0x27, 0x77, 0xF6, 0x0E, 0x56, 0x5B, 0x27, 0x78, 0x54, 0xEF, 0xB0, 0x19 }, - }, - { - { 0x9D, 0xAC, 0x33, 0x14, 0xB2, 0x5B, 0xB7, 0x9A, 0x39, 0xCD, 0x01, 0xEC, 0x4B, 0x33, 0xA1, 0x2F, - 0x47, 0x51, 0x2F, 0x54, 0x09, 0xFF, 0x09, 0x5D, 0x40, 0xAA, 0xD6, 0x20, 0x84, 0xEF, 0x15, 0xBE }, - }, - { - { 0x9D, 0xAC, 0x9D, 0x66, 0xDE, 0xD0, 0xC1, 0x5D, 0x23, 0x24, 0x1A, 0x90, 0x78, 0xA9, 0x1E, 0xC1, - 0xE9, 0x40, 0x70, 0xA1, 0x5C, 0x70, 0x29, 0x45, 0x02, 0xFE, 0x73, 0x8D, 0x12, 0x1C, 0xCA, 0xAC }, - }, - { - { 0x9E, 0x0B, 0xF3, 0x1A, 0xC8, 0x33, 0xF8, 0xB1, 0x40, 0x4C, 0xCA, 0xB1, 0x23, 0x84, 0x63, 0x48, - 0xA0, 0x3C, 0x0F, 0xF5, 0x11, 0xC6, 0xEC, 0x05, 0xA8, 0x6D, 0xF0, 0xDB, 0x51, 0x92, 0xA5, 0x2B }, - }, - { - { 0x9E, 0x2E, 0xC8, 0xE6, 0x1C, 0x76, 0x0D, 0x8E, 0x1B, 0x94, 0x2C, 0xEA, 0x8C, 0x2D, 0x55, 0xA9, - 0xF1, 0x8D, 0x3C, 0xD8, 0x4C, 0x0B, 0x9B, 0x5B, 0x23, 0x4D, 0x15, 0xAC, 0x56, 0x8E, 0x0E, 0xCD }, - }, - { - { 0x9E, 0x80, 0xD0, 0x33, 0xE6, 0x10, 0x90, 0x7B, 0xFE, 0x1F, 0xD8, 0xDF, 0x2D, 0x36, 0xDD, 0xEF, - 0x00, 0xC8, 0xFC, 0x7B, 0xF7, 0xB7, 0xFD, 0x7E, 0x8D, 0x45, 0x92, 0xAB, 0xF3, 0xC4, 0x21, 0xDE }, - }, - { - { 0x9E, 0x85, 0xD4, 0xAC, 0x8B, 0x36, 0x0E, 0x4D, 0xB2, 0xED, 0x37, 0x34, 0x10, 0x16, 0xE3, 0x7B, - 0xD5, 0x5C, 0x2D, 0x59, 0x79, 0x5D, 0x0A, 0x7C, 0x26, 0xA4, 0x4E, 0x7E, 0x80, 0x98, 0x3E, 0x75 }, - }, - { - { 0x9E, 0x98, 0xF7, 0xDA, 0x04, 0x74, 0xD4, 0x86, 0x5A, 0xC7, 0x05, 0xD4, 0xD7, 0xAB, 0xBE, 0xB7, - 0x1A, 0xEF, 0xBA, 0x2C, 0xF2, 0xE0, 0x82, 0xF0, 0x5F, 0xED, 0x53, 0x62, 0x41, 0x4B, 0xD3, 0x93 }, - }, - { - { 0x9E, 0xEA, 0x28, 0xDF, 0x01, 0x4D, 0x91, 0x24, 0x4F, 0xF9, 0x31, 0x4F, 0x43, 0x4A, 0x84, 0x7B, - 0x65, 0x89, 0xC1, 0xF2, 0x03, 0x58, 0x33, 0x9D, 0x79, 0xFC, 0xA6, 0x76, 0x63, 0x2D, 0xFF, 0xFE }, - }, - { - { 0x9F, 0x24, 0x5C, 0x0A, 0x0E, 0xC6, 0x3A, 0xAA, 0xCB, 0xF9, 0x69, 0xC6, 0xFC, 0x24, 0xA1, 0x07, - 0x15, 0x83, 0xB7, 0x79, 0xA5, 0x8A, 0xB6, 0x23, 0xDD, 0x15, 0x31, 0xA2, 0xCA, 0x9F, 0x87, 0x51 }, - }, - { - { 0x9F, 0x41, 0xC4, 0x19, 0xDA, 0x0B, 0xE3, 0x20, 0x5E, 0xA3, 0x84, 0xF9, 0x08, 0xF0, 0x5F, 0x42, - 0x8E, 0xD9, 0x13, 0xB1, 0x49, 0x93, 0x3A, 0x67, 0x2F, 0x79, 0x67, 0x60, 0x0C, 0x02, 0x0F, 0x1E }, - }, - { - { 0x9F, 0xAF, 0x1C, 0x11, 0xA3, 0xC7, 0xE2, 0x41, 0xF8, 0x63, 0x71, 0x97, 0xE8, 0x99, 0x68, 0xDB, - 0x86, 0x6A, 0xD0, 0x1A, 0x5D, 0x4E, 0xD5, 0x34, 0x59, 0x48, 0x65, 0xB9, 0x70, 0x75, 0xF2, 0x60 }, - }, - { - { 0x9F, 0xC3, 0xA4, 0xDD, 0xD9, 0x8A, 0xDD, 0xB2, 0xCE, 0x89, 0x3B, 0xD6, 0x84, 0x2C, 0x48, 0x89, - 0xA3, 0x1F, 0x4B, 0x95, 0xE1, 0x69, 0xD2, 0x3D, 0xC5, 0x54, 0xE6, 0x02, 0x4D, 0xEC, 0x98, 0xA9 }, - }, - { - { 0x9F, 0xE0, 0x91, 0x58, 0x70, 0x38, 0x5D, 0xDB, 0xB6, 0x2F, 0xA6, 0xE3, 0x23, 0x95, 0xEB, 0xE8, - 0x33, 0x34, 0x46, 0x00, 0x43, 0x6D, 0xAC, 0xC9, 0xB5, 0x69, 0x21, 0x4E, 0xEB, 0x8C, 0x0A, 0xF0 }, - }, - { - { 0x9F, 0xF9, 0x38, 0x40, 0xB0, 0x1F, 0x96, 0xB6, 0xF3, 0xC3, 0x10, 0xA0, 0x21, 0x90, 0xAD, 0xC3, - 0x3A, 0x15, 0x69, 0x39, 0x5B, 0xBC, 0xEE, 0x11, 0x6A, 0x15, 0xE1, 0x58, 0xA6, 0x2B, 0xA5, 0x0B }, - }, - { - { 0x9F, 0xFA, 0x4E, 0xF4, 0xFC, 0xF2, 0xCF, 0xD1, 0xB2, 0x7C, 0x6A, 0x62, 0xE3, 0xC4, 0x23, 0x5B, - 0xD8, 0x3C, 0xC5, 0xE0, 0x06, 0xE9, 0x2A, 0x55, 0xE4, 0xA9, 0x86, 0xE6, 0x30, 0x53, 0x57, 0xE3 }, - }, - { - { 0xA0, 0x44, 0xF2, 0xC0, 0x41, 0xF4, 0x18, 0x5B, 0xC0, 0xFE, 0x1A, 0xD3, 0xE0, 0xA3, 0xE0, 0xC2, - 0x7E, 0x24, 0xF4, 0x58, 0xDC, 0xB7, 0xD9, 0x07, 0x39, 0xB6, 0x4A, 0x68, 0x94, 0x45, 0xD4, 0xB6 }, - }, - { - { 0xA0, 0x77, 0x42, 0xD5, 0xB2, 0x99, 0x96, 0x65, 0x06, 0x76, 0x2E, 0x02, 0xE4, 0x20, 0xF1, 0xA9, - 0xC4, 0xAB, 0x73, 0x29, 0xAE, 0x29, 0x5F, 0x01, 0x5F, 0x74, 0x7D, 0xA1, 0x82, 0xA9, 0xC3, 0x9C }, - }, - { - { 0xA0, 0xAB, 0x9F, 0x42, 0xD0, 0x9D, 0x06, 0x44, 0x23, 0x8C, 0x63, 0xF2, 0x19, 0x26, 0x52, 0x8F, - 0xA5, 0x3E, 0x56, 0x6D, 0x83, 0x3E, 0xF1, 0xB0, 0x8D, 0x9E, 0xE7, 0xF3, 0x4D, 0x2B, 0x6D, 0x8E }, - }, - { - { 0xA0, 0xC2, 0xD2, 0x07, 0xA4, 0x7E, 0x18, 0xD0, 0x37, 0x14, 0xD5, 0xB3, 0x44, 0x5D, 0x88, 0xBE, - 0x81, 0xFF, 0x5E, 0x1D, 0x16, 0x07, 0x3D, 0xC1, 0x16, 0x6B, 0xB5, 0x44, 0x8F, 0xF6, 0x52, 0xDF }, - }, - { - { 0xA0, 0xC8, 0xA5, 0x3F, 0xD7, 0x58, 0x3E, 0x43, 0x91, 0xBE, 0xB8, 0xD0, 0xFE, 0xD8, 0x43, 0x1F, - 0x61, 0xB8, 0x52, 0xC1, 0xBE, 0x43, 0xAB, 0x91, 0x61, 0x4B, 0xBB, 0xEB, 0x3B, 0x4F, 0x47, 0x4E }, - }, - { - { 0xA0, 0xFE, 0xF8, 0x2E, 0xAD, 0xF5, 0xFE, 0xEC, 0xF8, 0x99, 0x16, 0xDA, 0x89, 0x4B, 0x2F, 0xA5, - 0x18, 0x29, 0x25, 0x6E, 0xB9, 0x59, 0x01, 0x8D, 0x8B, 0xC5, 0x1C, 0x88, 0xB4, 0x50, 0xC9, 0xD3 }, - }, - { - { 0xA1, 0x14, 0xA3, 0x50, 0x0A, 0x66, 0x1C, 0x15, 0x5A, 0xB1, 0xA8, 0x99, 0x7E, 0xFC, 0xFD, 0xD7, - 0xA1, 0x38, 0x3E, 0xA0, 0x5E, 0x45, 0x2C, 0x55, 0x1B, 0xB0, 0xC8, 0xBD, 0x8E, 0x4A, 0xAA, 0xDA }, - }, - { - { 0xA1, 0x97, 0x7D, 0x0C, 0x92, 0x7C, 0x21, 0xEB, 0x47, 0x6F, 0x67, 0xBE, 0xFE, 0xD6, 0xCF, 0x2C, - 0x61, 0xB7, 0x45, 0xF0, 0xCE, 0x8D, 0x26, 0x58, 0x3D, 0x03, 0xB2, 0x70, 0x02, 0xD5, 0xCD, 0xAF }, - }, - { - { 0xA1, 0xA3, 0xF6, 0x88, 0xFF, 0x45, 0xF6, 0x56, 0x75, 0x7A, 0x24, 0x52, 0xD5, 0xDB, 0xCD, 0x15, - 0x39, 0x4A, 0xC1, 0x1A, 0xF3, 0x8C, 0x2F, 0xEA, 0x0C, 0x7C, 0x39, 0x07, 0xFE, 0xC4, 0xB7, 0x8C }, - }, - { - { 0xA1, 0xF7, 0xA0, 0x7A, 0x4A, 0x67, 0xF6, 0xFF, 0x96, 0xCB, 0x97, 0xB8, 0xAD, 0x2B, 0x59, 0xBE, - 0xF6, 0xB1, 0xF3, 0x03, 0x80, 0xAB, 0x38, 0x3F, 0xAD, 0xF1, 0x23, 0x95, 0xA4, 0xBB, 0x08, 0x14 }, - }, - { - { 0xA2, 0x39, 0x3F, 0x9C, 0x59, 0x6C, 0x5F, 0xE2, 0xC6, 0x49, 0x39, 0xC6, 0x00, 0x43, 0x70, 0x8D, - 0x5F, 0xC6, 0x5F, 0x0C, 0xE8, 0x3E, 0x00, 0x73, 0x9D, 0x75, 0xA3, 0x31, 0xCC, 0xEA, 0x84, 0x45 }, - }, - { - { 0xA2, 0x3E, 0xD1, 0xB5, 0x14, 0x44, 0x95, 0xF7, 0x29, 0xD1, 0x90, 0xAD, 0xE0, 0x7C, 0xA9, 0x38, - 0xBC, 0x7D, 0x9F, 0x6D, 0x26, 0xF7, 0xE4, 0xF6, 0x0B, 0x50, 0x52, 0xDE, 0x66, 0x64, 0xDD, 0x64 }, - }, - { - { 0xA2, 0x6B, 0xA6, 0x8B, 0xD5, 0x7F, 0x66, 0x70, 0x89, 0xB7, 0x52, 0x56, 0x1D, 0x87, 0x12, 0xF0, - 0x8C, 0x7D, 0x96, 0x3D, 0x0F, 0xCD, 0x36, 0xAC, 0x58, 0x99, 0x8E, 0x4C, 0x1F, 0xD3, 0xE2, 0xDA }, - }, - { - { 0xA2, 0x6C, 0x37, 0x5E, 0xB3, 0x19, 0x6E, 0x28, 0x3B, 0xEC, 0x60, 0x3D, 0xB6, 0xBB, 0xDA, 0xE2, - 0x49, 0x55, 0xE4, 0xBA, 0x91, 0x0C, 0xD4, 0x2D, 0x9E, 0xAC, 0x55, 0xCA, 0xC6, 0x10, 0x3A, 0xB9 }, - }, - { - { 0xA3, 0x36, 0x7E, 0xDD, 0x97, 0xBE, 0x14, 0x34, 0xBA, 0x2C, 0x9C, 0xD0, 0x05, 0xF0, 0x1F, 0x5C, - 0x91, 0xA9, 0x32, 0x78, 0xFA, 0x14, 0xAB, 0xEF, 0x73, 0x3C, 0x43, 0xA6, 0x9F, 0xCA, 0x09, 0x6E }, - }, - { - { 0xA3, 0x75, 0x46, 0x27, 0x03, 0x85, 0x5B, 0x0F, 0x31, 0x40, 0xFD, 0xA3, 0xB5, 0x3A, 0xC4, 0x2C, - 0x0E, 0x09, 0x0E, 0xA4, 0x91, 0x20, 0x21, 0xB0, 0x4B, 0x1E, 0xB4, 0xF2, 0xB2, 0xD5, 0xD9, 0xC6 }, - }, - { - { 0xA3, 0xA4, 0xFC, 0x03, 0xE1, 0x75, 0xF2, 0x68, 0x02, 0x57, 0x46, 0x34, 0xDE, 0x70, 0x7D, 0x2F, - 0x92, 0xF4, 0xD0, 0xCB, 0x90, 0xCD, 0xB6, 0x1D, 0xD1, 0x95, 0x8B, 0xCF, 0x0C, 0x55, 0x20, 0x86 }, - }, - { - { 0xA4, 0x46, 0x9F, 0x13, 0x11, 0x77, 0xD7, 0xFD, 0xAB, 0x22, 0x64, 0xB2, 0xC9, 0xFA, 0x76, 0xAC, - 0x05, 0x0F, 0x42, 0xC6, 0xD6, 0x80, 0x2B, 0xA4, 0x07, 0x22, 0xD6, 0x48, 0x51, 0x24, 0x25, 0x1C }, - }, - { - { 0xA4, 0x55, 0x6D, 0x49, 0x3B, 0x52, 0x03, 0xAD, 0xE9, 0xAC, 0x0A, 0xAB, 0x86, 0xE4, 0x21, 0xDB, - 0xCF, 0xB2, 0x61, 0x00, 0x84, 0x07, 0xF3, 0xC6, 0x7B, 0x10, 0xD7, 0xCF, 0x48, 0x9D, 0xB8, 0x83 }, - }, - { - { 0xA4, 0xB4, 0xE2, 0xA5, 0x14, 0x66, 0xB8, 0x81, 0x06, 0xD3, 0xA0, 0xCB, 0x4C, 0x75, 0x26, 0xF1, - 0x0D, 0x21, 0x80, 0x90, 0x30, 0x82, 0x80, 0x98, 0xF4, 0x87, 0x78, 0x5E, 0x98, 0x78, 0xE6, 0x9C }, - }, - { - { 0xA5, 0x22, 0xAD, 0x4E, 0x88, 0x20, 0xD2, 0x31, 0x0D, 0xF1, 0x36, 0x76, 0x2B, 0x25, 0x32, 0x41, - 0x2D, 0x00, 0xA5, 0x03, 0x1B, 0x70, 0x28, 0x9A, 0xE6, 0x06, 0xC9, 0xA5, 0x8B, 0xFB, 0xDB, 0xD7 }, - }, - { - { 0xA5, 0x58, 0xCC, 0x2E, 0x2F, 0xE1, 0x06, 0x81, 0x12, 0x0B, 0xD2, 0x57, 0x94, 0xF8, 0xCA, 0x20, - 0xB0, 0x94, 0x3F, 0xBD, 0x13, 0x6E, 0x4B, 0x36, 0x77, 0x30, 0xF0, 0x5E, 0x71, 0x21, 0xF8, 0x97 }, - }, - { - { 0xA5, 0x60, 0x81, 0x15, 0x27, 0xB1, 0xFC, 0x3E, 0x25, 0xAF, 0x12, 0xC6, 0x10, 0xD3, 0x58, 0x18, - 0x43, 0x32, 0x10, 0xD3, 0x15, 0x27, 0x56, 0x45, 0x67, 0xDB, 0x9F, 0xF1, 0xA2, 0xED, 0x66, 0x90 }, - }, - { - { 0xA5, 0x61, 0x59, 0x83, 0x9A, 0x9E, 0x88, 0xA6, 0x18, 0xED, 0xB3, 0xCE, 0x3B, 0x8F, 0x16, 0x52, - 0x35, 0x22, 0xAF, 0x8B, 0x0C, 0x53, 0xEE, 0x1E, 0xA0, 0x85, 0x38, 0xB8, 0x88, 0x29, 0xC9, 0x2D }, - }, - { - { 0xA5, 0x67, 0x98, 0x6C, 0xE0, 0xE3, 0x36, 0xF8, 0x4F, 0xDC, 0x08, 0x15, 0xB8, 0x6E, 0xA3, 0x03, - 0x34, 0x3C, 0xF8, 0xC1, 0x0F, 0x37, 0x27, 0x83, 0x27, 0x14, 0x86, 0xB9, 0xC9, 0x3B, 0x63, 0x67 }, - }, - { - { 0xA5, 0x6A, 0x64, 0x81, 0xFE, 0x83, 0xDA, 0xB2, 0xEB, 0xA7, 0x01, 0x1D, 0x91, 0x3D, 0xB1, 0xA5, - 0x65, 0x83, 0xB1, 0x3A, 0xA9, 0x69, 0xC8, 0x32, 0xE7, 0x7E, 0x22, 0xFE, 0xBC, 0xC9, 0xE1, 0x30 }, - }, - { - { 0xA5, 0x9C, 0xAE, 0xC7, 0x30, 0x06, 0xB3, 0x36, 0x8F, 0x19, 0x6D, 0x6E, 0x12, 0x17, 0x48, 0x2D, - 0xD6, 0x61, 0x0E, 0x39, 0x5F, 0x27, 0x1F, 0x91, 0x31, 0x51, 0x9C, 0x02, 0x2B, 0xE2, 0x1A, 0x02 }, - }, - { - { 0xA5, 0xDB, 0xAF, 0x01, 0xD3, 0xD5, 0x79, 0xEE, 0x8A, 0x48, 0x8E, 0xE8, 0xD7, 0x44, 0x09, 0x58, - 0xF7, 0xBF, 0x97, 0xA2, 0xBC, 0xA8, 0xD9, 0x71, 0xF6, 0xF8, 0x97, 0x10, 0xBC, 0x2D, 0x10, 0x6F }, - }, - { - { 0xA6, 0x13, 0x01, 0x30, 0x19, 0xBB, 0x3E, 0xEC, 0x44, 0xCC, 0xBA, 0x1B, 0x46, 0xBD, 0x14, 0x09, - 0x62, 0x5D, 0x25, 0x82, 0x4E, 0x88, 0x2A, 0x5F, 0xF8, 0x63, 0x5B, 0x4C, 0x41, 0x83, 0x2E, 0x3C }, - }, - { - { 0xA6, 0x21, 0xAE, 0x36, 0x54, 0xAC, 0xFD, 0x17, 0x23, 0x30, 0x70, 0xE9, 0xB1, 0x8D, 0xFD, 0x91, - 0x6A, 0x55, 0x2E, 0x6A, 0x8B, 0x82, 0x42, 0xBD, 0x57, 0xBB, 0xCD, 0xF4, 0xE6, 0x5E, 0x99, 0x76 }, - }, - { - { 0xA6, 0x26, 0x87, 0xDE, 0x88, 0x0C, 0xF3, 0x35, 0xAE, 0x42, 0x4D, 0x4A, 0xDE, 0x29, 0xC7, 0xEC, - 0x33, 0xBF, 0xB9, 0xF8, 0x6E, 0xC7, 0xFC, 0xAF, 0x61, 0x9D, 0x71, 0x7C, 0x86, 0xB8, 0xFB, 0xBC }, - }, - { - { 0xA6, 0x33, 0x5D, 0xF3, 0xAB, 0xA5, 0xEA, 0xDF, 0xBD, 0xC9, 0xC2, 0xDC, 0x9D, 0x6B, 0xE6, 0x0B, - 0xB6, 0x2D, 0xF2, 0xFE, 0x24, 0xEC, 0x7B, 0xA7, 0x67, 0xBE, 0x65, 0xD3, 0x7F, 0x3C, 0x90, 0xF8 }, - }, - { - { 0xA6, 0x5C, 0xAE, 0x6C, 0x12, 0xE4, 0x7F, 0x8F, 0x67, 0x0C, 0x69, 0x37, 0xB1, 0xF0, 0xE1, 0x5C, - 0xF3, 0xA4, 0x4C, 0x11, 0x9C, 0xAF, 0x5E, 0x32, 0x6D, 0x8D, 0xB0, 0x81, 0xBE, 0x4F, 0xC3, 0x0A }, - }, - { - { 0xA6, 0x62, 0xFC, 0x81, 0xC9, 0x09, 0x34, 0xB9, 0xB4, 0xD6, 0x30, 0xB5, 0xD8, 0x2E, 0x86, 0xF2, - 0x36, 0x3E, 0xC1, 0x5C, 0xCF, 0xCD, 0xAF, 0xA7, 0xA2, 0x0C, 0x9B, 0x4E, 0x3A, 0x90, 0x0D, 0xD1 }, - }, - { - { 0xA6, 0x90, 0xB4, 0x5E, 0x85, 0xD9, 0x97, 0xF3, 0x3C, 0xBE, 0x1B, 0xE7, 0x5B, 0xC3, 0xD8, 0xE7, - 0x66, 0x3A, 0xFC, 0x0B, 0x62, 0x00, 0xBF, 0x4D, 0x74, 0x79, 0x0C, 0x17, 0x9F, 0xF0, 0x6A, 0x10 }, - }, - { - { 0xA6, 0xA4, 0xA3, 0xF6, 0x1F, 0xA5, 0x8C, 0xE9, 0x70, 0xB4, 0x58, 0xB7, 0xC3, 0x7C, 0x05, 0x2E, - 0xAD, 0x1E, 0xB2, 0x0B, 0x85, 0x67, 0xE3, 0x51, 0xAD, 0x8E, 0x6F, 0xBA, 0x49, 0xC2, 0x69, 0x2C }, - }, - { - { 0xA6, 0xB6, 0xDA, 0xD4, 0x51, 0x5B, 0x1C, 0xFC, 0x70, 0x37, 0x1C, 0xFC, 0xFC, 0x32, 0x30, 0x71, - 0x0E, 0x30, 0xEF, 0xE4, 0x0F, 0x95, 0xD5, 0x20, 0xAF, 0xC8, 0x65, 0x31, 0xE8, 0xC8, 0xF8, 0x41 }, - }, - { - { 0xA6, 0xDE, 0x6C, 0x3B, 0x8C, 0x14, 0x05, 0xCB, 0xE1, 0x2D, 0xB4, 0x09, 0x97, 0x61, 0x71, 0xAC, - 0xB5, 0x1F, 0xB3, 0xDC, 0xFB, 0xB7, 0x6E, 0xE3, 0x84, 0x95, 0x39, 0xCD, 0x8A, 0xB0, 0x66, 0xDF }, - }, - { - { 0xA6, 0xF1, 0xFA, 0xC9, 0x75, 0x7D, 0xFC, 0xB0, 0x66, 0x9F, 0x1F, 0x54, 0x68, 0xAC, 0xF6, 0xEA, - 0x83, 0x84, 0xB7, 0xC2, 0xC3, 0x0E, 0x40, 0xAA, 0xA9, 0x39, 0x21, 0xF2, 0x38, 0x72, 0xCA, 0xED }, - }, - { - { 0xA7, 0x08, 0x0D, 0xEB, 0x9A, 0xFE, 0x85, 0xBA, 0x27, 0xFE, 0xB4, 0xA9, 0xC2, 0xF9, 0xA7, 0x54, - 0xF3, 0xD5, 0xFF, 0xE6, 0xC3, 0xC4, 0xEE, 0x95, 0x56, 0x63, 0x1C, 0xE7, 0xEA, 0x20, 0x22, 0x72 }, - }, - { - { 0xA7, 0x0F, 0x0C, 0xE2, 0xD4, 0xFB, 0xE6, 0x63, 0x6A, 0x7A, 0x48, 0x94, 0x3C, 0xBD, 0x2D, 0x99, - 0x0E, 0x40, 0xFA, 0xA6, 0xD8, 0x56, 0x87, 0x7F, 0x45, 0x5B, 0xF0, 0x15, 0xF5, 0x45, 0x11, 0x3C }, - }, - { - { 0xA7, 0x36, 0xB1, 0x97, 0xE6, 0xFB, 0x3B, 0x62, 0x32, 0xED, 0xB3, 0xC8, 0xD6, 0x8C, 0xE1, 0x35, - 0x1A, 0x48, 0xB5, 0x6F, 0x70, 0x11, 0xBB, 0x99, 0x20, 0xCF, 0xCA, 0x75, 0x7E, 0x57, 0xC6, 0xC4 }, - }, - { - { 0xA7, 0x5D, 0x18, 0x19, 0x6F, 0x2F, 0x30, 0xF0, 0x36, 0x12, 0x7C, 0x67, 0x58, 0x14, 0x9D, 0x1E, - 0xE3, 0xDC, 0x4F, 0x03, 0x02, 0x68, 0x74, 0x05, 0x9E, 0xA4, 0x58, 0x7C, 0x77, 0x5A, 0x65, 0x21 }, - }, - { - { 0xA7, 0x7C, 0x12, 0x1C, 0xCE, 0x27, 0x74, 0xBC, 0xDD, 0x8C, 0xD5, 0x64, 0x71, 0x8C, 0x83, 0x18, - 0xF8, 0x1A, 0xEC, 0x99, 0x97, 0x00, 0xD9, 0xB9, 0x85, 0x9C, 0x2D, 0xB7, 0x63, 0x8A, 0xAC, 0xC0 }, - }, - { - { 0xA7, 0x7E, 0x5C, 0x39, 0xEB, 0x66, 0xA9, 0x48, 0x74, 0x88, 0xC7, 0xD1, 0x44, 0xC6, 0x37, 0xB6, - 0xB4, 0xC5, 0xCD, 0xA2, 0x09, 0x02, 0xD8, 0x22, 0x95, 0xB7, 0x5B, 0xFF, 0xD5, 0xB9, 0x61, 0x98 }, - }, - { - { 0xA7, 0x86, 0x18, 0xD8, 0xA7, 0xF0, 0x08, 0xAF, 0xDC, 0x72, 0x44, 0x98, 0x2C, 0x11, 0x34, 0xC5, - 0xDC, 0x91, 0xEC, 0x94, 0x25, 0xBF, 0xEF, 0xC8, 0xCC, 0x0A, 0xF8, 0xF8, 0xC7, 0x59, 0x61, 0xC2 }, - }, - { - { 0xA8, 0x53, 0xAD, 0xC1, 0xC2, 0x18, 0x59, 0xAF, 0x7C, 0x46, 0x2B, 0x4A, 0xA0, 0xA5, 0x74, 0xCA, - 0x9F, 0xEE, 0xFB, 0x18, 0x5A, 0x1F, 0xDB, 0xB6, 0xC1, 0x0E, 0x17, 0xD6, 0x01, 0xB7, 0x09, 0x8F }, - }, - { - { 0xA8, 0x7F, 0x0D, 0xF3, 0xEB, 0x2C, 0x90, 0x1F, 0x11, 0x6F, 0x6A, 0x8B, 0x01, 0xE2, 0x95, 0xCD, - 0x60, 0x72, 0x69, 0x5A, 0xB1, 0x65, 0x4B, 0x7B, 0xF9, 0xC4, 0x7E, 0x06, 0x20, 0x25, 0x6F, 0x81 }, - }, - { - { 0xA8, 0xC6, 0xB0, 0x72, 0x2A, 0x0D, 0x13, 0xDC, 0x8B, 0x7F, 0xBB, 0x20, 0xBC, 0x66, 0xE6, 0x03, - 0x0E, 0x4B, 0xDE, 0x99, 0xEA, 0xCA, 0x9C, 0x96, 0x5D, 0x34, 0x65, 0xC9, 0xAB, 0xFF, 0x64, 0x11 }, - }, - { - { 0xA8, 0xDF, 0xF0, 0x6A, 0x17, 0x35, 0xB4, 0x6D, 0x17, 0xDA, 0xEB, 0xC3, 0x43, 0x43, 0x18, 0x31, - 0x3B, 0x2D, 0x9E, 0x7C, 0x3E, 0xF4, 0x8F, 0x28, 0x53, 0x75, 0x35, 0x13, 0xE1, 0xB2, 0x53, 0xA8 }, - }, - { - { 0xA8, 0xE3, 0x8C, 0x6E, 0xC0, 0x93, 0xF5, 0xAF, 0x53, 0x88, 0xF1, 0xE7, 0x66, 0xD7, 0x5F, 0xFB, - 0x57, 0xDD, 0xBE, 0x3E, 0x9D, 0xC2, 0xE0, 0xBE, 0x57, 0xBB, 0x88, 0x36, 0x46, 0xC5, 0xC0, 0x32 }, - }, - { - { 0xA9, 0x0B, 0x8D, 0xE1, 0x7F, 0x6B, 0x68, 0x37, 0x56, 0x21, 0x2D, 0xB3, 0xAB, 0x34, 0x89, 0x6E, - 0x91, 0x70, 0x93, 0x11, 0x3E, 0x47, 0xCA, 0x35, 0x96, 0x2E, 0xAC, 0xCA, 0x9C, 0xB3, 0x86, 0xF0 }, - }, - { - { 0xA9, 0x20, 0x6F, 0x6D, 0x45, 0x43, 0xED, 0x74, 0x4A, 0x5F, 0x15, 0x4A, 0xCB, 0x44, 0x50, 0x89, - 0x6B, 0x62, 0x5D, 0x7E, 0x32, 0x33, 0x85, 0xA9, 0xFD, 0x25, 0x63, 0x93, 0x2F, 0x9C, 0xCC, 0x1B }, - }, - { - { 0xA9, 0x4C, 0xC9, 0xDE, 0x55, 0x52, 0xA6, 0xD9, 0x6F, 0xE4, 0x10, 0xBE, 0x03, 0x97, 0x6F, 0x6B, - 0x0D, 0x4D, 0xA0, 0x5D, 0x73, 0x7A, 0xD2, 0xA3, 0x1E, 0x0B, 0xAD, 0x90, 0x82, 0xA5, 0x77, 0xB1 }, - }, - { - { 0xA9, 0x5C, 0x06, 0x3E, 0x9E, 0x35, 0x84, 0xE5, 0x99, 0x88, 0xF0, 0x73, 0x86, 0x4C, 0x18, 0x76, - 0xB5, 0xDF, 0x9B, 0x44, 0xC6, 0x1B, 0x4A, 0x8B, 0xE4, 0x83, 0xBE, 0x05, 0xCF, 0xD1, 0xA1, 0xA6 }, - }, - { - { 0xA9, 0x67, 0x07, 0x76, 0x47, 0x9A, 0xB3, 0xA1, 0x4F, 0xCD, 0x01, 0x56, 0x63, 0x86, 0xCC, 0x45, - 0xCF, 0xA0, 0x53, 0x5A, 0xE0, 0xE9, 0x54, 0x5F, 0x86, 0x3B, 0xCF, 0x7A, 0x7C, 0xD6, 0x1A, 0x2B }, - }, - { - { 0xA9, 0x71, 0x2F, 0x85, 0xED, 0x2E, 0x25, 0xAD, 0xA5, 0x7D, 0xC1, 0xF0, 0xF8, 0x6D, 0xE1, 0x07, - 0xB5, 0xE2, 0xF0, 0x36, 0x09, 0x53, 0xF1, 0xED, 0x12, 0x5E, 0x37, 0x07, 0x59, 0x47, 0x1D, 0x09 }, - }, - { - { 0xA9, 0x7C, 0x77, 0xCA, 0x22, 0xEB, 0x80, 0xCC, 0x7B, 0xA9, 0x62, 0xEB, 0x58, 0x03, 0xBF, 0xCE, - 0x89, 0x6D, 0x57, 0x43, 0xDB, 0x12, 0x84, 0xC8, 0xAD, 0xBA, 0x37, 0x91, 0x7D, 0xF8, 0x03, 0xB1 }, - }, - { - { 0xA9, 0x94, 0xC9, 0x09, 0x10, 0x60, 0x9A, 0xF5, 0x0A, 0x4C, 0x09, 0x22, 0x97, 0xC9, 0xB4, 0xC7, - 0xF1, 0x03, 0x96, 0xAF, 0x73, 0x95, 0xE9, 0xE1, 0xBF, 0xB8, 0x99, 0x53, 0xFA, 0x15, 0x25, 0x9B }, - }, - { - { 0xA9, 0xE2, 0x85, 0xD1, 0xC2, 0xE8, 0xCA, 0x53, 0xCE, 0x97, 0xBB, 0xA6, 0x54, 0x8C, 0xA2, 0xF8, - 0x59, 0xE4, 0xC1, 0xF5, 0xF3, 0x57, 0x6C, 0xA3, 0x2D, 0x03, 0x30, 0x6E, 0x42, 0x3E, 0xF2, 0x5E }, - }, - { - { 0xAA, 0x0E, 0x12, 0x52, 0x43, 0x6D, 0xEF, 0x79, 0x07, 0xFB, 0x99, 0xF7, 0x64, 0x15, 0x50, 0xD8, - 0x0F, 0xAF, 0xFB, 0xF3, 0x01, 0x71, 0x1C, 0x7B, 0x6B, 0xEF, 0x59, 0x6F, 0x94, 0x10, 0xEF, 0xD2 }, - }, - { - { 0xAA, 0xEB, 0xFE, 0x2D, 0x21, 0xB7, 0xE5, 0x35, 0x1B, 0xB9, 0x99, 0x69, 0x44, 0x44, 0x19, 0xEF, - 0x21, 0xC9, 0x68, 0x8C, 0xE0, 0x53, 0x24, 0x88, 0x84, 0xCA, 0xB0, 0xB8, 0x95, 0x10, 0x30, 0xFF }, - }, - { - { 0xAB, 0x41, 0x28, 0x10, 0x9C, 0xAB, 0x8A, 0x58, 0x7C, 0x8F, 0xF4, 0xC7, 0xF6, 0x87, 0x34, 0x49, - 0x98, 0x18, 0xD1, 0x3F, 0x52, 0x26, 0x76, 0xD0, 0x66, 0xB3, 0x52, 0x17, 0x6F, 0xD2, 0x35, 0x96 }, - }, - { - { 0xAB, 0x80, 0xD9, 0xBA, 0x0A, 0xEF, 0xAD, 0x7B, 0xEC, 0xCE, 0x7F, 0x5E, 0x61, 0x59, 0x9A, 0xF5, - 0x26, 0x69, 0xBF, 0x59, 0x50, 0x7F, 0x8E, 0xF1, 0x99, 0x13, 0xC4, 0x2E, 0xE1, 0x29, 0xDA, 0xF0 }, - }, - { - { 0xAB, 0xA1, 0x08, 0xA4, 0xB1, 0x89, 0x3D, 0x18, 0xA3, 0x88, 0xB7, 0x22, 0x54, 0x1C, 0xA2, 0xC0, - 0x05, 0xC2, 0x69, 0x9A, 0x61, 0xFE, 0xAB, 0xBF, 0x61, 0x7A, 0xAA, 0xDD, 0xD4, 0x9E, 0xA9, 0x4D }, - }, - { - { 0xAB, 0xA7, 0x8E, 0x90, 0xF3, 0x24, 0x17, 0xAE, 0xC2, 0x8E, 0xEA, 0x30, 0x22, 0xA2, 0xE2, 0xB7, - 0x66, 0x1A, 0xC7, 0x23, 0xC8, 0x7E, 0x0D, 0xBC, 0xE2, 0x33, 0xE2, 0x16, 0x8F, 0xCF, 0x91, 0xB3 }, - }, - { - { 0xAB, 0xDD, 0x1E, 0xA9, 0x43, 0xC2, 0x32, 0x71, 0x63, 0x8E, 0x8F, 0x96, 0xFC, 0xD0, 0xDD, 0x3D, - 0xF5, 0x45, 0x07, 0x9D, 0xB7, 0x08, 0xEA, 0x64, 0x92, 0x5B, 0x62, 0xAD, 0x92, 0x3C, 0x43, 0xD5 }, - }, - { - { 0xAB, 0xEB, 0x6A, 0xA0, 0xD1, 0xB0, 0xE0, 0x49, 0xD6, 0x9D, 0xF8, 0x3A, 0xDD, 0x19, 0xF7, 0x26, - 0x8A, 0x38, 0xDE, 0x6C, 0x00, 0x72, 0x60, 0x68, 0xC2, 0xEE, 0xE4, 0x55, 0x44, 0xF6, 0xD6, 0x7A }, - }, - { - { 0xAB, 0xED, 0xE5, 0xB0, 0xE2, 0xB1, 0x5F, 0xFE, 0xF1, 0x84, 0x71, 0xC4, 0x53, 0xF0, 0xC4, 0x85, - 0xD2, 0x78, 0xFD, 0xE6, 0x3F, 0x82, 0x74, 0x13, 0xCC, 0x10, 0xDE, 0x4B, 0x82, 0xDE, 0xF6, 0x8D }, - }, - { - { 0xAC, 0x1B, 0x4C, 0x64, 0x6C, 0xAE, 0xFB, 0x10, 0x8A, 0x54, 0xCA, 0xB5, 0x4A, 0x96, 0xE9, 0x66, - 0x6E, 0x72, 0xA8, 0x20, 0x22, 0x44, 0xEF, 0x3D, 0x7C, 0xA9, 0x34, 0xDF, 0xCC, 0x24, 0xFC, 0xA7 }, - }, - { - { 0xAC, 0x7C, 0x14, 0xB9, 0x56, 0x8F, 0x92, 0x07, 0x5A, 0xD4, 0xA3, 0xBA, 0x3D, 0x4B, 0x01, 0x84, - 0x91, 0xF3, 0x66, 0x1A, 0x37, 0x9B, 0x3D, 0xFE, 0xDD, 0x6F, 0xD3, 0xC3, 0x2E, 0xFA, 0x84, 0x7D }, - }, - { - { 0xAC, 0x8C, 0x6F, 0x03, 0xE4, 0xBA, 0xCF, 0x72, 0x20, 0x25, 0xDB, 0x54, 0xD0, 0xFA, 0xAE, 0x7D, - 0xBE, 0x51, 0x37, 0x97, 0x37, 0x39, 0x45, 0x05, 0xF0, 0x86, 0xAA, 0x89, 0xE2, 0xD4, 0xF7, 0x3B }, - }, - { - { 0xAC, 0x90, 0x98, 0xF6, 0x4F, 0xE1, 0x03, 0xC8, 0xC1, 0x40, 0x30, 0xDB, 0xCE, 0xDD, 0x63, 0xD1, - 0xD1, 0x7C, 0x33, 0x8E, 0xBD, 0x1D, 0x7D, 0xE5, 0x6C, 0x79, 0xD2, 0x1A, 0x6F, 0x2E, 0x47, 0xA7 }, - }, - { - { 0xAC, 0x91, 0x0B, 0x02, 0xB4, 0xAB, 0x08, 0x16, 0xF0, 0xD9, 0x52, 0x0C, 0x94, 0xD3, 0x6C, 0x28, - 0x93, 0x38, 0x8C, 0x6A, 0xE1, 0xCA, 0x37, 0xA2, 0x4D, 0x48, 0x92, 0x70, 0x2A, 0xC7, 0xCD, 0x0C }, - }, - { - { 0xAD, 0x4B, 0x2F, 0x8E, 0xF2, 0xDE, 0xFB, 0x01, 0x92, 0x3C, 0x9C, 0x0F, 0xE2, 0x5A, 0x9A, 0xCE, - 0x41, 0xFA, 0x9E, 0x69, 0x75, 0x85, 0xFC, 0x3D, 0xDF, 0x8D, 0x34, 0xE7, 0x45, 0xFF, 0x0F, 0x12 }, - }, - { - { 0xAD, 0x69, 0x54, 0x5F, 0x9F, 0x85, 0x25, 0x5F, 0xE4, 0x16, 0x51, 0x3D, 0x94, 0xDB, 0x31, 0x50, - 0x5F, 0x38, 0x4B, 0x52, 0x3C, 0x2C, 0xA2, 0x6E, 0xDC, 0x0A, 0x54, 0x9A, 0x8F, 0x16, 0x26, 0xF9 }, - }, - { - { 0xAD, 0xB7, 0xF8, 0xE5, 0x75, 0x00, 0x60, 0xD5, 0x87, 0xD6, 0x02, 0x54, 0x58, 0xFC, 0xB0, 0xB6, - 0xCE, 0x4F, 0x3D, 0x86, 0x79, 0x2B, 0xAF, 0xF0, 0xAA, 0xCC, 0x19, 0x0A, 0xB7, 0x0C, 0xB6, 0x2C }, - }, - { - { 0xAD, 0xF9, 0x1E, 0x85, 0x6E, 0xCA, 0xA9, 0xB5, 0x1C, 0x0A, 0x4A, 0x93, 0xA1, 0xAA, 0x53, 0xE5, - 0x2C, 0x31, 0x85, 0xB6, 0x7A, 0x72, 0xBD, 0x2F, 0x8F, 0x5B, 0x14, 0xB5, 0x84, 0x0E, 0x52, 0x9F }, - }, - { - { 0xAE, 0x03, 0x19, 0xFE, 0xA6, 0xA6, 0x5E, 0x84, 0xE8, 0x54, 0xB5, 0x15, 0x50, 0xEA, 0x44, 0x4F, - 0xA3, 0xB8, 0xBB, 0x50, 0xAE, 0x93, 0x74, 0x01, 0x3C, 0xFE, 0xF3, 0x88, 0x73, 0x5D, 0x0B, 0xD3 }, - }, - { - { 0xAE, 0x2F, 0x15, 0xEA, 0x4A, 0xA5, 0x39, 0x81, 0x41, 0x0F, 0x98, 0x93, 0x81, 0xA4, 0x41, 0x5A, - 0xF1, 0x84, 0x3D, 0x19, 0xE4, 0x39, 0x07, 0xAF, 0x53, 0xB2, 0x0F, 0x7F, 0xA7, 0x73, 0x2A, 0x93 }, - }, - { - { 0xAE, 0x4D, 0xF3, 0x97, 0x9B, 0x74, 0x27, 0x34, 0xA3, 0x39, 0xC4, 0x70, 0x1D, 0x5E, 0x13, 0x21, - 0x26, 0x3F, 0xF4, 0x4E, 0x67, 0x56, 0x49, 0x05, 0xF4, 0x9E, 0x25, 0x34, 0x62, 0xB8, 0x02, 0x25 }, - }, - { - { 0xAE, 0xE7, 0xD6, 0x4C, 0x89, 0x7A, 0x32, 0xDB, 0xCA, 0xF1, 0x15, 0x6F, 0xC7, 0xBF, 0xC8, 0x00, - 0x96, 0x73, 0x85, 0xD5, 0xB1, 0xE3, 0x25, 0xD8, 0xFA, 0x3B, 0x9C, 0x16, 0x25, 0xBC, 0x29, 0x92 }, - }, - { - { 0xAF, 0x0B, 0x21, 0x86, 0x24, 0x61, 0xD1, 0xF3, 0x9B, 0x07, 0x44, 0xFD, 0xC9, 0x28, 0x77, 0x99, - 0x62, 0x01, 0x1D, 0xFE, 0x0B, 0xD8, 0xD9, 0x56, 0xC2, 0x47, 0xB5, 0xF5, 0xB4, 0x43, 0x63, 0x1C }, - }, - { - { 0xAF, 0x1F, 0x37, 0x1F, 0x34, 0x84, 0x57, 0x51, 0x65, 0x2D, 0xC7, 0x48, 0x23, 0xF3, 0x01, 0x5C, - 0x5A, 0x11, 0xCA, 0x65, 0x3F, 0x28, 0x70, 0x1E, 0xDD, 0x4A, 0x7E, 0x0D, 0x23, 0x17, 0x1B, 0xBB }, - }, - { - { 0xAF, 0x6A, 0x9D, 0x88, 0xAD, 0xE1, 0x24, 0xDB, 0xF9, 0x50, 0xB2, 0xC4, 0x27, 0xBC, 0x40, 0x19, - 0x63, 0xB9, 0x61, 0x25, 0xC0, 0xA2, 0xAE, 0xBB, 0x7F, 0xB3, 0xF9, 0x8E, 0x48, 0x7A, 0x7F, 0xA6 }, - }, - { - { 0xAF, 0x6B, 0x80, 0x51, 0x47, 0x14, 0x0A, 0x0E, 0x41, 0x81, 0xD8, 0x6A, 0x7E, 0x8F, 0x07, 0x69, - 0xB6, 0x1D, 0x46, 0xD7, 0xB6, 0xFA, 0xC6, 0xE6, 0xF9, 0x59, 0x6D, 0xE9, 0x4A, 0xA8, 0xE2, 0xE8 }, - }, - { - { 0xAF, 0xB5, 0x7F, 0x89, 0x64, 0x9A, 0xB3, 0x0A, 0xF4, 0x88, 0x43, 0x05, 0xAF, 0x88, 0xEE, 0x56, - 0x5B, 0xA8, 0xD3, 0xC5, 0xC3, 0x57, 0x4A, 0xB8, 0x59, 0xFC, 0x07, 0x23, 0x2F, 0xC6, 0x73, 0xB9 }, - }, - { - { 0xAF, 0xBB, 0x40, 0x3C, 0xAD, 0x0D, 0x19, 0xCC, 0x26, 0xAE, 0x5B, 0x1E, 0x31, 0x0A, 0xC1, 0xAE, - 0x79, 0x47, 0x1B, 0xAD, 0x2B, 0xD7, 0x7B, 0xE4, 0x0F, 0x12, 0x50, 0x4C, 0x42, 0xE5, 0x22, 0x0B }, - }, - { - { 0xAF, 0xE7, 0xB8, 0xEE, 0xFD, 0xF5, 0x4E, 0x7F, 0x1C, 0x5A, 0x6B, 0xED, 0xF7, 0x54, 0xCE, 0x97, - 0x0F, 0xA1, 0x19, 0x59, 0xE7, 0x80, 0x38, 0xCC, 0x36, 0x8A, 0xC7, 0x78, 0xB7, 0x5C, 0x92, 0x4B }, - }, - { - { 0xAF, 0xE9, 0x28, 0xC5, 0x84, 0x8E, 0xCE, 0x02, 0xC2, 0xBD, 0xDC, 0xD9, 0x4B, 0x5A, 0x59, 0x30, - 0x31, 0x50, 0x9D, 0x78, 0x2B, 0xEB, 0x50, 0x20, 0xAC, 0xB3, 0x33, 0x71, 0x49, 0x18, 0xF0, 0x39 }, - }, - { - { 0xB0, 0x16, 0x77, 0xD9, 0xCA, 0x50, 0x46, 0x3F, 0x21, 0x8A, 0x5D, 0x33, 0x9E, 0x72, 0xF8, 0x59, - 0xF8, 0xB4, 0x1A, 0xE7, 0x9D, 0xCB, 0x8F, 0xA1, 0x65, 0x08, 0x45, 0xCE, 0xC4, 0xD8, 0xCB, 0x87 }, - }, - { - { 0xB0, 0x1E, 0xB1, 0x82, 0x68, 0x1A, 0xA9, 0x5D, 0x7B, 0xEA, 0xAF, 0x53, 0xBA, 0x75, 0x5B, 0x7F, - 0x3D, 0x0F, 0xB7, 0x97, 0x76, 0xD5, 0x62, 0xB9, 0x93, 0x8F, 0xFE, 0x98, 0x8D, 0x99, 0xB3, 0x13 }, - }, - { - { 0xB0, 0x5C, 0x14, 0x33, 0x61, 0x75, 0x9B, 0xE1, 0x52, 0xFD, 0x76, 0xA5, 0xFF, 0xA4, 0x87, 0x2D, - 0xD4, 0x2E, 0xA0, 0x60, 0xAE, 0x40, 0xA3, 0x83, 0x13, 0xB7, 0xB5, 0x4A, 0xEC, 0x06, 0x73, 0xC2 }, - }, - { - { 0xB0, 0x62, 0x43, 0x51, 0xFD, 0x68, 0x51, 0x23, 0x01, 0x38, 0x56, 0xEC, 0x40, 0x63, 0x25, 0xFC, - 0xCB, 0x16, 0x45, 0x76, 0x50, 0xA8, 0x71, 0xF5, 0xFB, 0x91, 0x5D, 0xDD, 0x75, 0x4A, 0x3B, 0xC9 }, - }, - { - { 0xB0, 0xB6, 0x32, 0x1C, 0x45, 0x9B, 0xDB, 0x78, 0x91, 0x8E, 0xC3, 0x16, 0xBD, 0x36, 0xEC, 0x5F, - 0x30, 0x55, 0x8E, 0xE0, 0x2E, 0xCC, 0x51, 0xE3, 0x77, 0xC5, 0xF8, 0xAB, 0xA4, 0x1D, 0xBA, 0x6D }, - }, - { - { 0xB0, 0xE0, 0xE1, 0x6C, 0x5F, 0x69, 0x1F, 0x66, 0xA9, 0x57, 0x3B, 0xD3, 0xCF, 0x43, 0xF9, 0xDF, - 0xD2, 0xAD, 0x3E, 0x56, 0x15, 0x54, 0x63, 0x7F, 0x1E, 0x7B, 0x71, 0x91, 0x4D, 0x62, 0x73, 0x38 }, - }, - { - { 0xB1, 0x61, 0xD6, 0x09, 0x5B, 0x6E, 0x9B, 0x1D, 0xB5, 0x16, 0xDA, 0x1C, 0x2D, 0xEF, 0x9C, 0xE9, - 0x11, 0xC7, 0xA5, 0xBB, 0x55, 0xEF, 0xF5, 0x05, 0x66, 0xD5, 0xD1, 0xE0, 0xDC, 0x4F, 0x45, 0xCD }, - }, - { - { 0xB1, 0x91, 0x9D, 0x6C, 0xFA, 0xC2, 0x0D, 0x03, 0x47, 0x76, 0x87, 0x1A, 0xB0, 0xA2, 0x57, 0x8A, - 0xC0, 0xB2, 0xDD, 0xB6, 0x8B, 0xE1, 0xDC, 0x75, 0x91, 0x80, 0x44, 0x1F, 0x05, 0x3A, 0x27, 0x2C }, - }, - { - { 0xB1, 0x92, 0x30, 0x7C, 0xFA, 0xEE, 0x42, 0x7B, 0x76, 0x7B, 0xC2, 0xF9, 0x9B, 0xC2, 0x26, 0x74, - 0x26, 0x0A, 0x4E, 0x8E, 0x1E, 0x6B, 0x36, 0x19, 0x8C, 0x2F, 0x4E, 0xEA, 0x67, 0xCA, 0x85, 0xEF }, - }, - { - { 0xB1, 0xA5, 0x89, 0x8E, 0x3B, 0x0D, 0x0A, 0x7A, 0x80, 0x76, 0x79, 0x3D, 0x6C, 0x63, 0xA3, 0x22, - 0xEA, 0xB7, 0x1F, 0x7E, 0x28, 0x74, 0x5D, 0xEF, 0xF5, 0xA0, 0xC3, 0x3A, 0x8E, 0xEC, 0xE4, 0xFA }, - }, - { - { 0xB2, 0xAF, 0x84, 0x2D, 0x01, 0x52, 0x07, 0x85, 0x37, 0x0E, 0x3E, 0xB5, 0x9C, 0xB8, 0x89, 0x29, - 0xDE, 0x38, 0xA7, 0x15, 0xBF, 0x4C, 0xEF, 0x45, 0xE5, 0x95, 0xCE, 0xED, 0x3F, 0xEA, 0x26, 0x79 }, - }, - { - { 0xB2, 0xBA, 0x3B, 0x49, 0xB8, 0xE5, 0x84, 0x51, 0x81, 0x6B, 0x10, 0x83, 0x6C, 0x4F, 0x1C, 0xA6, - 0xA3, 0x39, 0x37, 0xCE, 0xB8, 0xF0, 0xC0, 0x4B, 0x9F, 0x75, 0x8C, 0x5E, 0xB4, 0x78, 0x41, 0x1F }, - }, - { - { 0xB2, 0xC6, 0xF7, 0xC6, 0x2F, 0xA5, 0x6A, 0x4E, 0x57, 0xB7, 0x62, 0xA8, 0x9C, 0x3C, 0x55, 0xDD, - 0x81, 0xC1, 0x82, 0x7E, 0xDF, 0xB0, 0xD4, 0x41, 0x80, 0xE4, 0xFA, 0xDC, 0xEB, 0x23, 0x72, 0x73 }, - }, - { - { 0xB2, 0xDC, 0x86, 0x25, 0x6C, 0xCF, 0xF4, 0xBB, 0x14, 0xFD, 0x70, 0x27, 0x9F, 0xCC, 0x3C, 0xE9, - 0x25, 0xC5, 0x1F, 0xB7, 0x17, 0xE5, 0x87, 0x6F, 0x29, 0x1B, 0xA1, 0x70, 0x73, 0x43, 0x85, 0x68 }, - }, - { - { 0xB2, 0xE5, 0xFA, 0xF7, 0xEE, 0xBE, 0xD8, 0xC2, 0x9C, 0x7B, 0x83, 0x65, 0x3A, 0xF3, 0xFC, 0x9F, - 0x8D, 0xE4, 0x6E, 0xE5, 0x3B, 0x64, 0x9C, 0x94, 0x53, 0x87, 0xB0, 0xCF, 0xF8, 0xB7, 0x14, 0x93 }, - }, - { - { 0xB3, 0x07, 0x32, 0xE7, 0x56, 0x52, 0x9E, 0x38, 0x59, 0xC4, 0x31, 0x23, 0x86, 0x19, 0x53, 0x34, - 0x79, 0x8E, 0x43, 0xC4, 0xBE, 0xBC, 0xC4, 0xCF, 0xED, 0xFB, 0x2E, 0xBF, 0xA0, 0xDD, 0x80, 0x0E }, - }, - { - { 0xB3, 0x0D, 0x88, 0x44, 0x30, 0x43, 0xF5, 0xF3, 0x72, 0x32, 0xBB, 0x9B, 0xAC, 0xB9, 0x94, 0xC5, - 0xBA, 0xE9, 0x3A, 0x46, 0xFC, 0x87, 0xF1, 0x51, 0x29, 0xC9, 0x74, 0x69, 0xA5, 0x81, 0x4E, 0xCA }, - }, - { - { 0xB3, 0x19, 0xAF, 0x08, 0x28, 0x68, 0x1F, 0x97, 0x35, 0xA4, 0x8D, 0x11, 0x17, 0x39, 0xB8, 0x62, - 0x89, 0xAE, 0xF7, 0xFB, 0x81, 0x7C, 0x04, 0x7F, 0x12, 0x75, 0xA5, 0x87, 0xA7, 0x32, 0x2C, 0x0B }, - }, - { - { 0xB3, 0x1A, 0xF0, 0xC2, 0xE5, 0x1E, 0xA2, 0x1C, 0x91, 0x04, 0xF9, 0x4F, 0xAA, 0x66, 0xE0, 0xCC, - 0xC0, 0x41, 0x34, 0xD5, 0x80, 0x9A, 0x2A, 0x26, 0x70, 0xA3, 0xB7, 0xBC, 0x7D, 0xD9, 0x64, 0xF8 }, - }, - { - { 0xB3, 0x35, 0x93, 0x3F, 0xC9, 0x72, 0x3E, 0x9D, 0xAA, 0x0D, 0x0C, 0xE7, 0x1C, 0x66, 0x5A, 0xDD, - 0xA5, 0xAB, 0xDA, 0xF3, 0x5A, 0xDB, 0x10, 0xD7, 0x6E, 0xDC, 0x9C, 0x8E, 0x4E, 0xBA, 0x05, 0x6E }, - }, - { - { 0xB3, 0x95, 0x0E, 0x0B, 0xD2, 0x2C, 0x39, 0xFA, 0xB1, 0xDB, 0xD7, 0xBE, 0xB7, 0x42, 0x56, 0xAF, - 0xB1, 0x1D, 0xCB, 0x26, 0x35, 0x69, 0x70, 0x83, 0xD6, 0x8F, 0xDB, 0xEE, 0x80, 0xB0, 0x5F, 0x54 }, - }, - { - { 0xB3, 0xE6, 0x42, 0x06, 0x6E, 0x41, 0x78, 0x67, 0xD9, 0x0F, 0xB9, 0xB2, 0xBA, 0x15, 0x41, 0x98, - 0xA5, 0xC5, 0xF6, 0xCC, 0x82, 0x9B, 0x51, 0x39, 0xDF, 0xD6, 0x91, 0xE5, 0x1A, 0xD3, 0x74, 0xAD }, - }, - { - { 0xB3, 0xF4, 0xB1, 0x6F, 0x8E, 0xCE, 0xBB, 0x41, 0x47, 0x4F, 0x92, 0x4F, 0xEE, 0xF9, 0xB0, 0xBD, - 0x97, 0x9B, 0x36, 0x36, 0xC3, 0x4F, 0xF2, 0x72, 0x3F, 0x67, 0x3C, 0x8E, 0xEE, 0x2A, 0xF1, 0x52 }, - }, - { - { 0xB4, 0x02, 0x2C, 0x24, 0x25, 0xA5, 0xB7, 0x5A, 0x9B, 0x5E, 0x80, 0x08, 0x1C, 0x95, 0x3A, 0xD3, - 0xDB, 0x93, 0xB2, 0x52, 0xDA, 0x0E, 0x25, 0xEC, 0x8B, 0xAD, 0x0C, 0x36, 0xAA, 0x11, 0x09, 0x2E }, - }, - { - { 0xB4, 0x2A, 0x78, 0xB0, 0x6F, 0x28, 0x15, 0xD4, 0xA0, 0x49, 0xFE, 0x83, 0xF3, 0xD2, 0x9B, 0x38, - 0x5B, 0x90, 0xD3, 0xD0, 0x0B, 0xA8, 0x57, 0xD6, 0x2F, 0x19, 0x67, 0x81, 0xDD, 0xA3, 0xD1, 0x85 }, - }, - { - { 0xB4, 0x2C, 0x64, 0xF0, 0x25, 0xDF, 0x8F, 0x37, 0x0E, 0xB7, 0xA4, 0x69, 0x94, 0x2B, 0x97, 0xE2, - 0xF8, 0xB5, 0xF4, 0xBF, 0xAC, 0xC4, 0xCF, 0x17, 0xD2, 0xA0, 0x8F, 0xCA, 0x57, 0xBB, 0xC4, 0x9B }, - }, - { - { 0xB4, 0xAE, 0x2A, 0x6B, 0xFC, 0xA5, 0x31, 0xC9, 0x9C, 0x69, 0xB3, 0x5A, 0xFE, 0x67, 0x54, 0xFC, - 0x49, 0x27, 0x5B, 0x6C, 0xCA, 0xCD, 0xC8, 0x26, 0x9C, 0x27, 0x0C, 0xDB, 0x2B, 0x58, 0xC0, 0x8F }, - }, - { - { 0xB4, 0xD4, 0x67, 0xFC, 0x5E, 0x97, 0xDB, 0x25, 0xA1, 0xFD, 0xB0, 0x06, 0xD2, 0x77, 0x66, 0xB9, - 0x99, 0x5B, 0xB9, 0xC7, 0x7B, 0x66, 0x43, 0x97, 0x08, 0xA4, 0x59, 0xB0, 0x43, 0xD0, 0x33, 0x24 }, - }, - { - { 0xB4, 0xED, 0xCD, 0x6F, 0x8A, 0x01, 0x82, 0xB7, 0x17, 0xF0, 0x6F, 0xE1, 0xD7, 0xAC, 0x9C, 0x62, - 0x33, 0xD4, 0x38, 0x22, 0xE9, 0xFD, 0x14, 0xDB, 0x98, 0xF7, 0xF8, 0x4E, 0x32, 0x79, 0x6D, 0x08 }, - }, - { - { 0xB4, 0xF1, 0xEF, 0x4A, 0xA5, 0x1F, 0x02, 0x1E, 0xD2, 0x66, 0x26, 0x44, 0xCE, 0xDA, 0x31, 0x1D, - 0x86, 0xF5, 0x64, 0x0D, 0xAF, 0xE9, 0xA4, 0x39, 0x18, 0x89, 0x37, 0xD8, 0x09, 0x13, 0x90, 0x75 }, - }, - { - { 0xB5, 0x25, 0x36, 0x2F, 0x68, 0x54, 0x4A, 0xC1, 0x8C, 0x2F, 0x5C, 0x19, 0x51, 0x47, 0x94, 0x40, - 0x45, 0x8C, 0x59, 0xD7, 0xBB, 0x00, 0x5F, 0x19, 0x91, 0x17, 0x51, 0xB4, 0xD3, 0x97, 0x1D, 0x5C }, - }, - { - { 0xB5, 0x3B, 0x30, 0x01, 0x2D, 0xBC, 0xA0, 0x5E, 0x6A, 0xF7, 0xEB, 0x9C, 0xA2, 0xA7, 0xDD, 0xA7, - 0xDB, 0x0F, 0x61, 0x21, 0x6C, 0x9C, 0xA4, 0x7D, 0x48, 0x4F, 0xA0, 0x97, 0xCF, 0xBA, 0x2C, 0x46 }, - }, - { - { 0xB5, 0x53, 0x5E, 0x99, 0x84, 0x36, 0xBF, 0x17, 0x42, 0xCF, 0x3F, 0xB1, 0xC1, 0x9A, 0x66, 0x6B, - 0xDE, 0x55, 0x09, 0x4B, 0x3E, 0xD5, 0xCF, 0xB2, 0x09, 0x5D, 0xF0, 0x8E, 0xC6, 0xDD, 0xF6, 0x76 }, - }, - { - { 0xB5, 0xB8, 0xD0, 0x08, 0x69, 0xDD, 0x78, 0x64, 0x9D, 0xAB, 0xD4, 0x41, 0x14, 0x08, 0xA8, 0xFF, - 0x1A, 0xC5, 0x43, 0xEC, 0xA8, 0x80, 0xAE, 0xED, 0xB5, 0x83, 0x28, 0xED, 0xDA, 0x47, 0x1B, 0xFC }, - }, - { - { 0xB5, 0xE2, 0xAA, 0x4C, 0x7F, 0xA4, 0x65, 0xA9, 0x72, 0xAF, 0x17, 0x0E, 0x21, 0x76, 0xD1, 0x83, - 0x51, 0xE6, 0x8D, 0x94, 0x95, 0x0D, 0x87, 0x55, 0x9C, 0x65, 0x20, 0x43, 0xFE, 0xCB, 0x05, 0x2D }, - }, - { - { 0xB5, 0xE5, 0xDC, 0xDE, 0xCB, 0x8D, 0xEB, 0x27, 0x13, 0x4F, 0x02, 0xA5, 0x18, 0x79, 0x43, 0x16, - 0xF0, 0x8F, 0xAF, 0x9C, 0x2B, 0x1F, 0xDA, 0xD6, 0xD4, 0x86, 0x61, 0xF5, 0x7E, 0xA6, 0x45, 0xD9 }, - }, - { - { 0xB5, 0xEF, 0x42, 0xC4, 0xBC, 0xED, 0xF1, 0x7B, 0xEC, 0xC7, 0x5B, 0xF4, 0x63, 0x66, 0x49, 0xCE, - 0xBF, 0xF8, 0x71, 0x1B, 0xCE, 0xFF, 0xFA, 0x69, 0x5C, 0xC2, 0x52, 0xFA, 0x57, 0x4D, 0x42, 0x18 }, - }, - { - { 0xB6, 0x60, 0x21, 0xDE, 0x5D, 0xE8, 0x81, 0x36, 0xBB, 0x09, 0x49, 0x1A, 0x46, 0xE0, 0xFC, 0x6B, - 0x69, 0x33, 0x9B, 0xD9, 0xAC, 0xC9, 0xA4, 0xEA, 0x84, 0xCC, 0x76, 0x4C, 0x39, 0xF5, 0x70, 0xA3 }, - }, - { - { 0xB6, 0x66, 0x7D, 0x8E, 0xD2, 0x85, 0x85, 0x10, 0x8D, 0x3D, 0x97, 0x12, 0x72, 0xBC, 0xB5, 0x17, - 0x82, 0x84, 0x5B, 0xDD, 0xEB, 0x32, 0xFA, 0xBA, 0x96, 0x31, 0xE5, 0x0C, 0x0C, 0x04, 0x0B, 0x54 }, - }, - { - { 0xB6, 0x67, 0xDC, 0x46, 0x65, 0x60, 0x6A, 0xCA, 0xEE, 0xA4, 0xC1, 0x4D, 0xA9, 0x1D, 0xEC, 0x87, - 0x6C, 0x2E, 0xA3, 0x76, 0x0B, 0xCB, 0x1B, 0x1D, 0x50, 0xD7, 0x55, 0x98, 0xA2, 0x61, 0x8C, 0x56 }, - }, - { - { 0xB6, 0x82, 0x3C, 0x9D, 0xBC, 0x8E, 0x8C, 0x05, 0x4B, 0xCF, 0x60, 0xF2, 0x38, 0x21, 0xAC, 0x6C, - 0x58, 0x19, 0x73, 0x51, 0xEA, 0xCF, 0xA5, 0x57, 0x4C, 0xF0, 0x41, 0xB4, 0xCE, 0x6B, 0x84, 0x04 }, - }, - { - { 0xB6, 0x8D, 0x56, 0xB6, 0x8C, 0xC0, 0x99, 0xFF, 0xDE, 0xE7, 0xD5, 0x70, 0x1F, 0x1E, 0x1E, 0x97, - 0x26, 0xDC, 0x75, 0x7C, 0x22, 0x22, 0xB0, 0xA0, 0x1E, 0x4A, 0x32, 0x72, 0xF8, 0xB3, 0x84, 0xF2 }, - }, - { - { 0xB6, 0x90, 0x8F, 0xAB, 0x0C, 0xA2, 0xD7, 0xD6, 0x5D, 0xCA, 0x8B, 0x10, 0xD0, 0x1F, 0x08, 0x48, - 0x13, 0x1C, 0x1C, 0x32, 0x10, 0xA2, 0x5B, 0x47, 0xC7, 0x9E, 0x33, 0xC4, 0xAC, 0x09, 0x5F, 0x7E }, - }, - { - { 0xB6, 0xCD, 0x3F, 0x77, 0x3A, 0xE4, 0x02, 0xE5, 0x2D, 0xFE, 0x4F, 0x14, 0xBD, 0x11, 0x49, 0x5C, - 0x9C, 0xA8, 0x80, 0xF5, 0x3D, 0x4F, 0x5A, 0x7A, 0x24, 0x96, 0xE4, 0xA9, 0xAE, 0x29, 0x53, 0x80 }, - }, - { - { 0xB7, 0x02, 0x1A, 0x28, 0x5D, 0x89, 0xA7, 0xE9, 0xDE, 0x1A, 0xFC, 0xFA, 0x8F, 0x66, 0x6A, 0x55, - 0x92, 0xBB, 0xA6, 0xD2, 0xAC, 0x28, 0xDD, 0x62, 0x74, 0x7E, 0xC1, 0x86, 0x19, 0x1C, 0x57, 0xF7 }, - }, - { - { 0xB7, 0x06, 0xDE, 0x1B, 0xD1, 0xEE, 0x2F, 0x4C, 0xEC, 0x6C, 0xE0, 0x92, 0x02, 0x2B, 0x49, 0x32, - 0x81, 0xE2, 0x9A, 0x21, 0x73, 0x50, 0x8C, 0x9B, 0xD0, 0xFB, 0xC2, 0xC3, 0xD9, 0x68, 0xE3, 0xE7 }, - }, - { - { 0xB7, 0x1F, 0x29, 0x1E, 0x6E, 0xC6, 0xBD, 0x6C, 0x4F, 0x2B, 0x81, 0xF7, 0xF7, 0x21, 0x06, 0x73, - 0xE9, 0x73, 0x08, 0xAF, 0xF1, 0x24, 0x3F, 0x26, 0x99, 0x5A, 0x25, 0xFA, 0x23, 0x0C, 0xFE, 0x4C }, - }, - { - { 0xB7, 0x45, 0x85, 0x05, 0xC5, 0x17, 0x90, 0x14, 0x9C, 0x5E, 0x98, 0x00, 0xFD, 0x22, 0x74, 0x8A, - 0x1D, 0x44, 0x66, 0x5F, 0x68, 0x34, 0xBA, 0x84, 0x4E, 0x9A, 0x0C, 0x32, 0x31, 0x4A, 0x57, 0x21 }, - }, - { - { 0xB7, 0x4C, 0x89, 0x90, 0x0B, 0xBC, 0x4C, 0xE2, 0x8D, 0xCA, 0x03, 0x3F, 0x80, 0x08, 0x70, 0x03, - 0xD1, 0x89, 0xEC, 0xDD, 0x54, 0xC3, 0xFD, 0x23, 0x79, 0xDA, 0x5E, 0x22, 0x17, 0x57, 0xBC, 0x73 }, - }, - { - { 0xB7, 0x65, 0xC9, 0x6B, 0x69, 0x18, 0xAB, 0x88, 0xBF, 0xBE, 0xC4, 0x32, 0xA7, 0x5B, 0x79, 0x97, - 0xDF, 0xFA, 0x55, 0x96, 0xD1, 0x13, 0xD1, 0x6F, 0x13, 0x7E, 0xFE, 0x7D, 0x76, 0x2B, 0xE1, 0x52 }, - }, - { - { 0xB7, 0x9F, 0xCA, 0x4D, 0x47, 0x92, 0xEC, 0x5E, 0x5A, 0x74, 0x06, 0x59, 0x81, 0x3A, 0x0F, 0x46, - 0x08, 0xEA, 0xF9, 0xBA, 0x9C, 0xBB, 0xA8, 0xA0, 0xF8, 0xDA, 0xE1, 0xDD, 0xBB, 0xE6, 0x1E, 0x77 }, - }, - { - { 0xB8, 0x30, 0xC5, 0x8C, 0x49, 0x50, 0x7D, 0xD9, 0x85, 0x7C, 0xC0, 0xCE, 0x37, 0xFA, 0xC7, 0xFA, - 0x3C, 0xDE, 0xA0, 0x4E, 0x9B, 0x64, 0x3E, 0x38, 0xD5, 0x3B, 0x38, 0x1D, 0xB8, 0xFB, 0x89, 0x5D }, - }, - { - { 0xB8, 0x37, 0xC3, 0x7E, 0xE9, 0x9C, 0x18, 0x2B, 0x07, 0xAD, 0x6D, 0x79, 0x1F, 0x53, 0x9E, 0x22, - 0xE0, 0x4E, 0x0D, 0xDB, 0x16, 0xF9, 0xC1, 0x57, 0xA1, 0x35, 0x20, 0xAC, 0xAE, 0xD0, 0x7D, 0xCA }, - }, - { - { 0xB8, 0x74, 0x36, 0x95, 0x1C, 0xEC, 0x37, 0x7E, 0xEF, 0x73, 0xDE, 0x4B, 0x74, 0xF2, 0x83, 0xC4, - 0x2B, 0x2C, 0xCB, 0x1C, 0xA3, 0x7C, 0x5B, 0x30, 0xAA, 0xD6, 0x55, 0xA7, 0x40, 0x1A, 0x3D, 0x2F }, - }, - { - { 0xB8, 0x8C, 0xE8, 0x1A, 0x7B, 0x4B, 0x62, 0x65, 0x71, 0x0F, 0x38, 0xD0, 0xCA, 0x3E, 0x01, 0xFF, - 0xAB, 0xDE, 0x0F, 0xC2, 0x48, 0x3E, 0x21, 0xB8, 0xF1, 0xA5, 0xFF, 0x48, 0x3B, 0x2D, 0x60, 0xCE }, - }, - { - { 0xB9, 0x42, 0x94, 0x19, 0xF2, 0x9F, 0xE3, 0x5C, 0xD8, 0xCF, 0x94, 0x92, 0xD5, 0xA9, 0xB5, 0xD2, - 0x24, 0x1D, 0xDA, 0x4E, 0x12, 0x15, 0x6F, 0x37, 0x4C, 0xEC, 0x78, 0x4F, 0x44, 0x5B, 0x43, 0xF2 }, - }, - { - { 0xB9, 0x8D, 0x83, 0x38, 0x55, 0xC3, 0x67, 0x88, 0x62, 0xB6, 0x2F, 0x36, 0x50, 0xDB, 0x00, 0xA3, - 0x45, 0xF4, 0x6A, 0x0E, 0x8E, 0x01, 0x1A, 0x20, 0x01, 0x3F, 0xD8, 0xED, 0xCE, 0x25, 0x27, 0x0D }, - }, - { - { 0xB9, 0x9C, 0xDB, 0x82, 0xA9, 0x77, 0x31, 0x12, 0xC0, 0x67, 0x17, 0xD7, 0x74, 0x50, 0x51, 0xA7, - 0x01, 0xF3, 0x00, 0xD5, 0x25, 0xD0, 0x55, 0x6E, 0x67, 0x5A, 0x04, 0xCA, 0xEF, 0x26, 0x22, 0x89 }, - }, - { - { 0xB9, 0xCC, 0x92, 0xF7, 0x8C, 0x2C, 0x19, 0x57, 0xDB, 0xB6, 0xC4, 0xA5, 0xE4, 0x25, 0x44, 0x68, - 0xFB, 0xCD, 0x88, 0xB1, 0xFD, 0x9F, 0x98, 0xFA, 0x6D, 0x76, 0x08, 0x70, 0x9E, 0xBE, 0x92, 0x8D }, - }, - { - { 0xBA, 0x0A, 0x8C, 0xC1, 0xC2, 0xF6, 0x62, 0x9B, 0x78, 0xAF, 0xEF, 0x1D, 0x22, 0xD5, 0x57, 0x7A, - 0x13, 0x81, 0x13, 0xC4, 0xC6, 0x21, 0x89, 0x48, 0x47, 0x44, 0xC2, 0x92, 0x50, 0x24, 0x49, 0x7C }, - }, - { - { 0xBA, 0x18, 0x2C, 0x1B, 0x75, 0xD8, 0xDF, 0xD1, 0x18, 0x92, 0xE4, 0x77, 0x59, 0x59, 0xAD, 0x8A, - 0x8C, 0x78, 0x2C, 0xEF, 0x60, 0xEC, 0xEA, 0xBE, 0x56, 0x19, 0x72, 0x9B, 0xB8, 0x1B, 0x4A, 0x10 }, - }, - { - { 0xBA, 0x2F, 0xDE, 0x44, 0xDD, 0xAE, 0x01, 0x8A, 0x51, 0x06, 0xC5, 0x0C, 0x36, 0xA2, 0x33, 0x0D, - 0xF4, 0x30, 0x68, 0x9E, 0x0A, 0x6D, 0xCA, 0x6A, 0xBF, 0x85, 0x7F, 0xA2, 0xFD, 0xED, 0xE8, 0xD4 }, - }, - { - { 0xBA, 0x51, 0xAF, 0xF5, 0xD5, 0xD3, 0x10, 0x5F, 0x34, 0xA2, 0xB3, 0x3A, 0x83, 0xE3, 0xAD, 0xFD, - 0x12, 0xD7, 0x9C, 0xA6, 0x05, 0x90, 0x9D, 0x96, 0x03, 0x3E, 0x32, 0xA5, 0xCF, 0x2F, 0x71, 0xF6 }, - }, - { - { 0xBA, 0xCF, 0x5E, 0x99, 0xF5, 0x7F, 0x78, 0xCC, 0x32, 0xF2, 0xAF, 0x8D, 0x4E, 0x80, 0x6A, 0x0A, - 0x36, 0xCE, 0x9B, 0x42, 0xE9, 0xC7, 0x5C, 0x54, 0x8D, 0xED, 0x55, 0xD2, 0x48, 0x62, 0xCA, 0x17 }, - }, - { - { 0xBB, 0x0B, 0xD1, 0xE6, 0x9F, 0xF4, 0xA3, 0x89, 0x51, 0x61, 0x13, 0x55, 0x2C, 0x17, 0xAB, 0x77, - 0x82, 0xA7, 0xEB, 0xBA, 0xEA, 0x0B, 0xE3, 0x9F, 0x58, 0x92, 0x84, 0x1F, 0x1F, 0x74, 0xD2, 0x98 }, - }, - { - { 0xBB, 0x13, 0xDF, 0x73, 0xB6, 0xE8, 0x89, 0x77, 0x7C, 0x4D, 0x85, 0xEC, 0x93, 0xB8, 0x3E, 0xA8, - 0xBB, 0x95, 0x43, 0xF9, 0xFC, 0x08, 0xC2, 0xB3, 0x1C, 0x02, 0xAC, 0x72, 0xB3, 0x1A, 0x09, 0x0D }, - }, - { - { 0xBB, 0x48, 0x13, 0xED, 0xFC, 0xF7, 0x4A, 0x4F, 0x12, 0xD9, 0x8F, 0x99, 0x6B, 0xF7, 0x98, 0xD4, - 0xED, 0xE3, 0xCB, 0xB7, 0x00, 0x07, 0x31, 0x7A, 0x2C, 0x6B, 0x54, 0x9D, 0xBF, 0x92, 0xA8, 0x5E }, - }, - { - { 0xBB, 0x5C, 0xB3, 0x78, 0xB7, 0xB9, 0x48, 0x7F, 0xA6, 0x1B, 0xC0, 0x91, 0x3D, 0xA1, 0xDF, 0x26, - 0xA1, 0xCF, 0xEF, 0xF7, 0x45, 0x2D, 0x9B, 0xA3, 0x6C, 0xAC, 0x47, 0xA8, 0x5C, 0x7F, 0xF3, 0x48 }, - }, - { - { 0xBB, 0x77, 0x41, 0x99, 0x17, 0x89, 0x5C, 0x74, 0x0F, 0x39, 0x61, 0x60, 0x1B, 0x99, 0xB5, 0xC2, - 0x25, 0x67, 0x37, 0xAA, 0x6C, 0x6E, 0x88, 0x27, 0x48, 0x5E, 0x44, 0x8E, 0x69, 0x74, 0xB1, 0x6B }, - }, - { - { 0xBB, 0xAA, 0x32, 0x35, 0x0E, 0x2D, 0xC5, 0x06, 0x07, 0xAA, 0xC6, 0x5B, 0x29, 0x81, 0xD3, 0x97, - 0xC8, 0xB9, 0xAF, 0x51, 0x22, 0x38, 0xCA, 0xD4, 0xCB, 0xB3, 0x10, 0x07, 0x64, 0xE7, 0xA3, 0x94 }, - }, - { - { 0xBB, 0xAD, 0x8A, 0x81, 0x54, 0xD7, 0xAB, 0x8E, 0x3F, 0x3A, 0x67, 0x09, 0x7B, 0x4D, 0xB7, 0x44, - 0x8F, 0x4B, 0x07, 0xE4, 0x7C, 0xDA, 0xA6, 0xB8, 0x36, 0xED, 0xD2, 0x67, 0x68, 0xF9, 0x64, 0x92 }, - }, - { - { 0xBB, 0xE6, 0xB5, 0x24, 0x36, 0x69, 0x0A, 0x58, 0x57, 0x74, 0x91, 0x27, 0xCC, 0xB6, 0xAB, 0x5B, - 0x16, 0xD6, 0xB3, 0x06, 0x6C, 0x71, 0x27, 0x25, 0xA2, 0xC5, 0xFC, 0x4F, 0x61, 0xB8, 0xA9, 0x88 }, - }, - { - { 0xBC, 0x14, 0x2E, 0xBA, 0xC2, 0x78, 0xA8, 0xFE, 0x8C, 0xA8, 0xBC, 0x2C, 0x62, 0xFB, 0xCC, 0x40, - 0x17, 0xFF, 0x24, 0x96, 0x98, 0xBE, 0xED, 0xFB, 0x1E, 0xF3, 0x6F, 0x37, 0x5F, 0xB3, 0x9F, 0x72 }, - }, - { - { 0xBC, 0x1A, 0x3B, 0x83, 0x46, 0xA5, 0x18, 0x4E, 0x8F, 0xE2, 0xA9, 0x36, 0xD6, 0xD9, 0xCE, 0x2C, - 0xBE, 0x3A, 0x92, 0x05, 0x54, 0xE0, 0x60, 0xF9, 0x07, 0x97, 0xF9, 0x8F, 0xEE, 0x62, 0xA8, 0x52 }, - }, - { - { 0xBC, 0x3F, 0x40, 0xAE, 0xDC, 0x2D, 0xDF, 0x00, 0x3F, 0x3A, 0x5C, 0xCA, 0x77, 0xBF, 0x3B, 0x63, - 0x26, 0xC9, 0x3C, 0xCF, 0xA1, 0x6D, 0x1C, 0xC1, 0xBC, 0xF1, 0x3D, 0x5E, 0x46, 0xEA, 0x0D, 0xB6 }, - }, - { - { 0xBC, 0x98, 0x39, 0xC8, 0xB9, 0x22, 0xF6, 0x54, 0x57, 0x67, 0xA2, 0xBA, 0x46, 0x5A, 0x5B, 0xEA, - 0x9A, 0xA1, 0x84, 0x11, 0x52, 0x99, 0x4A, 0x6C, 0xF4, 0x67, 0x83, 0xAE, 0x49, 0x98, 0xAF, 0xCC }, - }, - { - { 0xBC, 0xE9, 0x07, 0x86, 0x57, 0x91, 0xAE, 0x71, 0x57, 0x9C, 0x64, 0xEE, 0x76, 0xB1, 0xAE, 0x09, - 0xF6, 0x55, 0x22, 0x2D, 0x38, 0x7B, 0xA7, 0xC1, 0x11, 0xF6, 0xA3, 0x0B, 0x7C, 0xD3, 0x98, 0x4D }, - }, - { - { 0xBD, 0x20, 0x20, 0x24, 0x96, 0x06, 0xC0, 0x1C, 0xE7, 0x70, 0xB2, 0x56, 0xE3, 0x8E, 0x82, 0x6B, - 0x87, 0x42, 0x04, 0xCD, 0x70, 0x44, 0x69, 0x6E, 0x6F, 0xBA, 0x53, 0x58, 0xBD, 0x44, 0xD6, 0x9A }, - }, - { - { 0xBD, 0x2E, 0x2F, 0x37, 0xC9, 0x66, 0xC3, 0x86, 0xD9, 0x70, 0x44, 0xFD, 0xE3, 0xE3, 0xF9, 0x00, - 0xFB, 0x1A, 0x0B, 0x04, 0x03, 0xB5, 0x81, 0x72, 0x5F, 0x34, 0xE3, 0xC1, 0x90, 0x05, 0x60, 0x56 }, - }, - { - { 0xBD, 0x4F, 0x30, 0xA1, 0x05, 0xD4, 0xC4, 0x5A, 0x36, 0x7F, 0x55, 0xDA, 0xE7, 0x33, 0x84, 0x75, - 0x5E, 0x01, 0x67, 0x8A, 0x32, 0x1F, 0xF0, 0x4C, 0x99, 0xD2, 0xD5, 0x2A, 0x2B, 0xFD, 0x7A, 0xCF }, - }, - { - { 0xBD, 0xD5, 0x42, 0x49, 0xDD, 0xD5, 0x4B, 0xC7, 0x2A, 0xA7, 0xA7, 0x5F, 0x77, 0x63, 0xA8, 0x38, - 0xCF, 0x4B, 0xA1, 0x7F, 0xB3, 0x64, 0x72, 0xBA, 0x12, 0x69, 0x8C, 0x45, 0xDF, 0x88, 0xE8, 0x46 }, - }, - { - { 0xBE, 0x2E, 0x88, 0xC5, 0xEE, 0x30, 0x7B, 0xA5, 0x41, 0x73, 0xA6, 0x00, 0x2B, 0x99, 0x16, 0x92, - 0xC8, 0xBD, 0x1D, 0x40, 0x8A, 0x59, 0x2F, 0x70, 0x7B, 0xB1, 0xAF, 0x56, 0xF5, 0xB9, 0xD7, 0x42 }, - }, - { - { 0xBE, 0x34, 0x75, 0x8B, 0x19, 0xD4, 0x31, 0x2D, 0x65, 0xB9, 0xE0, 0x78, 0xB6, 0xF8, 0xD9, 0x27, - 0x7C, 0x5E, 0x52, 0x1B, 0xA1, 0xF0, 0xD3, 0x15, 0x20, 0x9B, 0x2B, 0x56, 0x2D, 0x73, 0x91, 0x89 }, - }, - { - { 0xBE, 0x41, 0x0A, 0x51, 0xD3, 0x44, 0x17, 0x76, 0x91, 0xB3, 0x42, 0x64, 0x10, 0xA4, 0x41, 0xAF, - 0xD1, 0xC9, 0x40, 0xB1, 0xB2, 0x7C, 0xF5, 0x29, 0xEE, 0x87, 0xA1, 0x40, 0x3B, 0xB0, 0x16, 0xF4 }, - }, - { - { 0xBE, 0x5C, 0x3C, 0xD0, 0x6E, 0x3C, 0x58, 0x1A, 0x4E, 0x67, 0xAB, 0x8F, 0x77, 0x85, 0x51, 0xBB, - 0x0F, 0x41, 0x24, 0x4C, 0x6B, 0xBB, 0x41, 0x1D, 0x9B, 0xF1, 0x27, 0x19, 0x0F, 0x60, 0x99, 0x9D }, - }, - { - { 0xBE, 0x68, 0x35, 0x4F, 0x7C, 0x36, 0x24, 0x2D, 0xB6, 0x20, 0x4F, 0x20, 0x13, 0x1B, 0x01, 0xFF, - 0x28, 0xB7, 0xDD, 0xFF, 0x36, 0x2E, 0x42, 0x9B, 0xFD, 0xF8, 0x8F, 0x36, 0x37, 0x58, 0x24, 0x51 }, - }, - { - { 0xBE, 0xAC, 0x00, 0x60, 0x68, 0x7E, 0xB2, 0x5A, 0x9B, 0xED, 0x21, 0xA1, 0x99, 0x97, 0xAF, 0xFF, - 0x67, 0x7C, 0x89, 0x61, 0xDC, 0x00, 0xE2, 0x3B, 0x4C, 0x1E, 0x27, 0x7F, 0xF8, 0x58, 0xC0, 0x92 }, - }, - { - { 0xBE, 0xB7, 0x1D, 0xAF, 0x38, 0x97, 0x76, 0xCE, 0x8B, 0x4A, 0xC8, 0x18, 0x90, 0x1E, 0x02, 0xC0, - 0x6C, 0xFE, 0xF5, 0x22, 0x34, 0xFC, 0x49, 0x20, 0x3B, 0x4A, 0xA7, 0x73, 0x35, 0xB6, 0x63, 0x9B }, - }, - { - { 0xBE, 0xB9, 0x09, 0x0C, 0x92, 0xD1, 0x6B, 0xD0, 0x5A, 0xF3, 0x91, 0x5A, 0x39, 0xCC, 0x2A, 0xFA, - 0x9F, 0x6A, 0x8A, 0x6F, 0xBE, 0xD4, 0xFE, 0x54, 0xD9, 0xDE, 0x32, 0x49, 0x23, 0xB3, 0x93, 0x5A }, - }, - { - { 0xBE, 0xD5, 0xB6, 0xAD, 0xE6, 0xC9, 0xC2, 0x15, 0xE4, 0x14, 0x53, 0x21, 0x9A, 0xF2, 0x9A, 0x8B, - 0x8D, 0x76, 0x9D, 0x36, 0x43, 0x8C, 0x3F, 0x96, 0x61, 0x76, 0xE3, 0xBC, 0xC9, 0x1F, 0x2E, 0xE8 }, - }, - { - { 0xBE, 0xD6, 0xF8, 0x1A, 0xD8, 0x5E, 0x71, 0x6B, 0x60, 0xD3, 0xE9, 0x7D, 0x8B, 0x90, 0x81, 0xE9, - 0xC1, 0xB9, 0xEC, 0x3B, 0xE8, 0xF3, 0xFD, 0x5B, 0xAD, 0x55, 0x40, 0x2B, 0x79, 0x78, 0x5B, 0x37 }, - }, - { - { 0xBE, 0xE1, 0xD6, 0x40, 0x7D, 0x2F, 0xE3, 0xDB, 0x76, 0x64, 0x4C, 0x58, 0xA4, 0xF2, 0xB6, 0x4E, - 0x62, 0xF8, 0x93, 0xF8, 0x04, 0xFB, 0x9A, 0x87, 0xFE, 0xA3, 0x2C, 0x4C, 0x76, 0x45, 0x7F, 0x3B }, - }, - { - { 0xBE, 0xE5, 0x93, 0x20, 0xCE, 0x39, 0xB6, 0xBB, 0x7A, 0xC7, 0x72, 0xCD, 0xF3, 0xD3, 0x0D, 0xFE, - 0x57, 0xE0, 0x60, 0xCC, 0xA9, 0xE5, 0x4A, 0x62, 0x99, 0x96, 0xAA, 0x4F, 0xCB, 0xD4, 0xAF, 0x0E }, - }, - { - { 0xBE, 0xE9, 0x05, 0xD6, 0xA4, 0x20, 0x55, 0x47, 0x66, 0x90, 0xD3, 0x89, 0xD4, 0x80, 0x66, 0x5D, - 0x10, 0x29, 0xD0, 0xA0, 0x24, 0x75, 0x35, 0xE0, 0xA1, 0x4A, 0x79, 0x8E, 0xE3, 0xF5, 0xA3, 0x3D }, - }, - { - { 0xBF, 0x38, 0xE6, 0xAE, 0x32, 0x0F, 0x69, 0x16, 0x16, 0x0D, 0xA6, 0x06, 0x86, 0x83, 0xBF, 0x49, - 0xF2, 0xB2, 0x2B, 0x25, 0x24, 0x84, 0x63, 0x68, 0xF5, 0x04, 0x51, 0x81, 0x52, 0x40, 0x25, 0x9A }, - }, - { - { 0xBF, 0x60, 0xAE, 0xB3, 0x91, 0xC0, 0xFB, 0xD0, 0x49, 0x53, 0x52, 0x6D, 0xA9, 0xFD, 0x59, 0x96, - 0x9A, 0x82, 0xF1, 0xEE, 0x81, 0xA7, 0x97, 0x98, 0xA4, 0x17, 0x1E, 0x14, 0x59, 0x39, 0x19, 0x67 }, - }, - { - { 0xBF, 0xC6, 0x2C, 0x0A, 0x05, 0x85, 0xBC, 0x32, 0xD4, 0x0C, 0xBC, 0x2E, 0x24, 0xA4, 0x8E, 0x26, - 0x43, 0x4A, 0xE3, 0x33, 0x27, 0xD7, 0xE9, 0x8D, 0x1C, 0x57, 0xB6, 0xC5, 0x28, 0x4B, 0x95, 0x7A }, - }, - { - { 0xBF, 0xF4, 0x3A, 0x97, 0x20, 0x48, 0x2D, 0x13, 0x4C, 0xD5, 0xEE, 0x8A, 0x88, 0x99, 0xE1, 0xA7, - 0x36, 0xBF, 0x54, 0xA2, 0xB7, 0x86, 0x26, 0x9C, 0x0D, 0xCB, 0x8B, 0xA1, 0x92, 0xA8, 0x1F, 0xA4 }, - }, - { - { 0xC0, 0x09, 0xA1, 0xBE, 0x5B, 0xE8, 0xAF, 0xB5, 0x25, 0x8E, 0x12, 0x85, 0x5C, 0x64, 0xD0, 0x4D, - 0x13, 0xE8, 0xCC, 0xC4, 0x7B, 0x02, 0xBF, 0x3B, 0x51, 0xC6, 0xE1, 0x18, 0x05, 0xAE, 0xEC, 0xEB }, - }, - { - { 0xC0, 0x52, 0xE0, 0x98, 0xDD, 0x04, 0x2B, 0x3D, 0x44, 0x0F, 0x8F, 0xFB, 0xEE, 0x31, 0x91, 0x67, - 0x1F, 0x5F, 0x78, 0x4B, 0x94, 0x9C, 0x2D, 0x23, 0x3D, 0x60, 0xDA, 0x66, 0xC5, 0xC3, 0x6C, 0xFD }, - }, - { - { 0xC0, 0x9F, 0xFA, 0x0E, 0xDD, 0x16, 0xBA, 0x55, 0xF2, 0x3C, 0xEA, 0xF7, 0x2B, 0x11, 0x34, 0xE9, - 0x28, 0xDB, 0xA1, 0xC2, 0x34, 0x5A, 0x5A, 0xB5, 0x63, 0x1E, 0x25, 0x41, 0x24, 0x05, 0x4A, 0xDB }, - }, - { - { 0xC0, 0xAB, 0xD1, 0xC3, 0x56, 0x2F, 0xBC, 0x7F, 0xF7, 0xBD, 0x38, 0x95, 0x54, 0x60, 0xC3, 0xFC, - 0x43, 0x55, 0x0D, 0x97, 0x7F, 0x25, 0xE3, 0x43, 0xD4, 0x9C, 0xD4, 0xAF, 0xAD, 0xF2, 0x09, 0x3C }, - }, - { - { 0xC0, 0xD3, 0xDC, 0x9A, 0x2D, 0x13, 0x9D, 0x38, 0xCE, 0x02, 0xC0, 0x78, 0xF3, 0xC2, 0x92, 0x5D, - 0x89, 0x1D, 0x24, 0xE4, 0x36, 0x13, 0xCB, 0xEE, 0x3F, 0x18, 0xA2, 0xC8, 0x60, 0x98, 0x84, 0xB2 }, - }, - { - { 0xC0, 0xFE, 0xB7, 0x2A, 0x5F, 0x33, 0x16, 0x5C, 0x0D, 0xC7, 0xC4, 0x24, 0x7E, 0x23, 0xF3, 0x8C, - 0xC6, 0x1F, 0x25, 0x24, 0x42, 0xB2, 0xF6, 0x13, 0x40, 0x92, 0xDE, 0x3B, 0xAD, 0x7E, 0x45, 0x0D }, - }, - { - { 0xC1, 0x36, 0x56, 0xB8, 0xB3, 0xDD, 0x77, 0xCB, 0x97, 0x0D, 0xB1, 0x38, 0x81, 0x10, 0x6F, 0xB0, - 0x99, 0x8E, 0xC5, 0x4E, 0x94, 0xF8, 0x2E, 0xE4, 0x4D, 0xEA, 0x1B, 0x1A, 0x65, 0x90, 0xFC, 0xE7 }, - }, - { - { 0xC1, 0x53, 0xE6, 0x04, 0xED, 0xD6, 0x55, 0x50, 0x5D, 0xFF, 0x3F, 0x04, 0xB4, 0xAA, 0x95, 0xA4, - 0x73, 0xCD, 0x3F, 0xAB, 0x0A, 0x4D, 0xBC, 0xB9, 0x85, 0x84, 0xCD, 0x4B, 0x66, 0x46, 0x32, 0xF9 }, - }, - { - { 0xC1, 0x63, 0x98, 0xBA, 0xC4, 0xEA, 0x08, 0x39, 0xDF, 0x12, 0xEB, 0x3D, 0x6B, 0xF3, 0x98, 0x6D, - 0x4C, 0x69, 0x78, 0x04, 0xE0, 0x2A, 0xB9, 0x78, 0x8D, 0x3C, 0xF3, 0xB0, 0x38, 0x6E, 0x64, 0x10 }, - }, - { - { 0xC1, 0x73, 0xB2, 0x9F, 0x14, 0x85, 0xEE, 0x0F, 0x3F, 0xE6, 0x24, 0xDA, 0xAE, 0xBF, 0x21, 0x45, - 0x14, 0x1F, 0x7C, 0xD0, 0xE4, 0xC5, 0xEA, 0x2F, 0x46, 0xB7, 0xAF, 0xE3, 0x74, 0x8C, 0xC5, 0x03 }, - }, - { - { 0xC1, 0x77, 0x12, 0x97, 0xA4, 0xE8, 0xDC, 0x53, 0x75, 0x19, 0x5E, 0x1B, 0x63, 0x04, 0x2B, 0x59, - 0x19, 0x09, 0xF1, 0xD7, 0xEB, 0x5D, 0x25, 0xF2, 0x97, 0xAE, 0x7A, 0x61, 0xC1, 0x53, 0x8F, 0x9E }, - }, - { - { 0xC1, 0x7C, 0xE3, 0xBE, 0xF9, 0xCC, 0x61, 0x0B, 0x71, 0x3C, 0xFF, 0x47, 0xCC, 0xBE, 0x95, 0x8A, - 0xA7, 0x78, 0x35, 0x8D, 0xCC, 0x7C, 0x52, 0x63, 0xC1, 0xAA, 0x7F, 0xE4, 0x22, 0xF3, 0x9B, 0xC6 }, - }, - { - { 0xC1, 0x86, 0xBE, 0x26, 0xE4, 0x47, 0x89, 0x7C, 0x48, 0x3C, 0x43, 0xFD, 0xC0, 0x86, 0xE2, 0x60, - 0x74, 0x17, 0xEB, 0x3E, 0xA7, 0x88, 0xEC, 0x03, 0x10, 0xA7, 0x9D, 0xA9, 0x24, 0x1D, 0x16, 0xDE }, - }, - { - { 0xC1, 0xC3, 0x03, 0x06, 0x23, 0x16, 0x38, 0xEA, 0x57, 0x60, 0xAF, 0xBE, 0xF1, 0x44, 0x50, 0x68, - 0x22, 0x6C, 0xA0, 0x25, 0xF5, 0xE0, 0x86, 0xE2, 0x21, 0x21, 0x54, 0xDA, 0xC2, 0xE5, 0x48, 0x49 }, - }, - { - { 0xC1, 0xDE, 0x5F, 0xA3, 0x92, 0x13, 0x68, 0x58, 0x11, 0xA5, 0xBA, 0x93, 0x12, 0x1D, 0xE7, 0xA3, - 0x95, 0x98, 0x4E, 0x84, 0x44, 0x4E, 0x58, 0xF1, 0x63, 0xB7, 0xA6, 0x20, 0xAE, 0x3B, 0xBF, 0xA8 }, - }, - { - { 0xC1, 0xE8, 0x95, 0xA8, 0x27, 0x96, 0x4B, 0x9C, 0x04, 0x91, 0x69, 0xAD, 0xFF, 0x9A, 0x30, 0x32, - 0xD8, 0x70, 0x6A, 0x71, 0x7A, 0xCD, 0xB6, 0xF3, 0x39, 0x44, 0xFF, 0xA9, 0x62, 0xC6, 0x0D, 0x44 }, - }, - { - { 0xC2, 0x17, 0x03, 0x01, 0xD2, 0x2F, 0x8D, 0xC0, 0x42, 0xDC, 0xED, 0xD8, 0x3A, 0x92, 0x05, 0xC6, - 0x95, 0x25, 0x6F, 0x18, 0x4E, 0xD4, 0xBD, 0x5B, 0x52, 0x98, 0x28, 0x0A, 0xA6, 0x73, 0xB3, 0x7F }, - }, - { - { 0xC2, 0x29, 0xEE, 0xBB, 0x9E, 0x1A, 0x91, 0x38, 0x80, 0x87, 0xA3, 0xE0, 0x5F, 0x0C, 0x8A, 0x6B, - 0xB6, 0x84, 0x25, 0x6E, 0x34, 0x06, 0x68, 0xEE, 0xA2, 0x14, 0x01, 0x1D, 0x75, 0x2E, 0xF6, 0xB2 }, - }, - { - { 0xC2, 0xAD, 0xDF, 0x99, 0xCF, 0xC4, 0x2C, 0xE0, 0xE5, 0xA0, 0x93, 0xBC, 0xBF, 0x87, 0x40, 0x7C, - 0x61, 0x1F, 0x9D, 0x0A, 0xBF, 0x2A, 0x35, 0xD6, 0xE8, 0x03, 0xA3, 0x8E, 0xCB, 0x92, 0xC7, 0xB3 }, - }, - { - { 0xC2, 0xE7, 0x92, 0x11, 0x6A, 0x05, 0x00, 0x00, 0xBD, 0x47, 0x59, 0x1D, 0x93, 0x04, 0x71, 0xE6, - 0x17, 0x4C, 0x93, 0x85, 0xF5, 0xDC, 0x32, 0xB7, 0x62, 0x31, 0x65, 0x5F, 0xC8, 0x5E, 0x22, 0xE2 }, - }, - { - { 0xC2, 0xE8, 0x7A, 0xF9, 0xFE, 0x26, 0x55, 0x64, 0xE1, 0x09, 0xA3, 0x9D, 0x73, 0xBC, 0xD4, 0x7A, - 0x4E, 0x98, 0x75, 0x6F, 0x76, 0xEB, 0xDF, 0xB7, 0xA6, 0x57, 0x0A, 0xDA, 0xB9, 0xDD, 0xDD, 0xFB }, - }, - { - { 0xC3, 0x3A, 0x14, 0x69, 0x59, 0xF3, 0x02, 0x8B, 0x97, 0x1A, 0x8D, 0x3B, 0xF0, 0x30, 0x38, 0x7E, - 0x33, 0xBC, 0xC5, 0xB5, 0x2B, 0xA9, 0xA6, 0x8A, 0x7F, 0x76, 0x34, 0x39, 0x23, 0x6D, 0x61, 0x1A }, - }, - { - { 0xC3, 0x79, 0x03, 0xC5, 0x3A, 0xE6, 0x02, 0xEC, 0x96, 0x9E, 0xC3, 0x3F, 0x63, 0xFE, 0x9A, 0xB2, - 0x0C, 0x39, 0x5F, 0x83, 0x0D, 0x30, 0xE4, 0xEE, 0x9D, 0x8D, 0xD9, 0x05, 0x92, 0x1E, 0xC1, 0xA0 }, - }, - { - { 0xC3, 0xCF, 0x54, 0x16, 0xA5, 0x31, 0xAF, 0x4B, 0xFA, 0xE8, 0x9C, 0x45, 0x14, 0x3F, 0x20, 0xCC, - 0x1B, 0x3E, 0x18, 0x1D, 0x29, 0xC2, 0xD0, 0xE8, 0xFF, 0x7D, 0x3F, 0x2A, 0x66, 0xB1, 0x82, 0xFE }, - }, - { - { 0xC3, 0xDE, 0xF4, 0xB0, 0xD7, 0xF0, 0x81, 0xC7, 0xFB, 0x88, 0x91, 0x0D, 0xBD, 0xA3, 0x14, 0xDE, - 0x57, 0xA9, 0xCF, 0xDB, 0x40, 0xF8, 0x64, 0x7E, 0xF2, 0x88, 0xCE, 0xC9, 0x67, 0x3E, 0x00, 0x0C }, - }, - { - { 0xC4, 0x21, 0x98, 0x61, 0x93, 0xF8, 0x62, 0xFF, 0x25, 0x8C, 0x1C, 0xCC, 0x94, 0x9D, 0x1B, 0x3A, - 0xCB, 0x67, 0xB4, 0xF6, 0x38, 0x31, 0xC6, 0x32, 0xE6, 0x9B, 0xD0, 0xFB, 0x08, 0xA2, 0x69, 0x67 }, - }, - { - { 0xC4, 0x85, 0x0E, 0x1C, 0x62, 0xB1, 0x7C, 0xEF, 0xD0, 0xDC, 0x64, 0xD4, 0xA8, 0x66, 0x95, 0x3E, - 0x11, 0x54, 0xDC, 0x88, 0xD9, 0xBD, 0x96, 0x16, 0x47, 0xB6, 0xB2, 0x34, 0x1D, 0x85, 0xD9, 0xBA }, - }, - { - { 0xC4, 0x87, 0xA2, 0x59, 0x81, 0x9B, 0x56, 0xD3, 0x15, 0x9D, 0xD1, 0x73, 0x15, 0x7E, 0x86, 0x45, - 0xB7, 0x0B, 0xCA, 0x29, 0x08, 0xCB, 0x2C, 0x5B, 0xAE, 0x34, 0x48, 0x6E, 0xA4, 0xF6, 0x14, 0xFF }, - }, - { - { 0xC4, 0x98, 0xA1, 0xB6, 0x9F, 0x54, 0x40, 0x86, 0x17, 0x47, 0x47, 0x71, 0x5A, 0x27, 0x4D, 0x3F, - 0xB5, 0x90, 0x19, 0xBE, 0x09, 0x21, 0x31, 0xBC, 0xFA, 0xA8, 0x3A, 0x39, 0x5F, 0x7E, 0x57, 0x3C }, - }, - { - { 0xC4, 0xE2, 0x8D, 0xD8, 0x3F, 0xE3, 0x0C, 0x96, 0x33, 0x8C, 0xEF, 0x77, 0x73, 0xC6, 0xDF, 0xCA, - 0x6C, 0xE4, 0xFA, 0x96, 0x41, 0xBE, 0xAB, 0x38, 0x05, 0xA8, 0xEF, 0xB6, 0xCD, 0xC3, 0xCF, 0x0A }, - }, - { - { 0xC4, 0xF4, 0x79, 0x81, 0xF4, 0x5D, 0x90, 0x3B, 0x56, 0x2F, 0x39, 0xF6, 0x17, 0x45, 0xF4, 0xE1, - 0x90, 0x48, 0x1C, 0x4B, 0x56, 0xA4, 0xBD, 0xF5, 0xA0, 0xE1, 0x61, 0xE3, 0xE9, 0x42, 0x83, 0x89 }, - }, - { - { 0xC5, 0x00, 0xB8, 0x3F, 0x3E, 0x06, 0x6C, 0xD1, 0xDD, 0x0E, 0xBC, 0xD7, 0x3D, 0xD4, 0x01, 0x61, - 0xB9, 0x25, 0x9A, 0xA7, 0x7A, 0xB8, 0xA6, 0x47, 0xE8, 0x57, 0x1F, 0xF3, 0x37, 0xCF, 0x94, 0x6D }, - }, - { - { 0xC5, 0x1E, 0x9B, 0x95, 0x9A, 0xCF, 0x0D, 0xDA, 0xFF, 0x54, 0x64, 0x9C, 0xB5, 0xFC, 0x68, 0xFC, - 0xDC, 0xB2, 0x70, 0xB2, 0x7A, 0x53, 0xD4, 0x0A, 0xDA, 0xBE, 0xD0, 0x8B, 0x79, 0x7B, 0x14, 0xB6 }, - }, - { - { 0xC5, 0x29, 0x5B, 0xA6, 0xE2, 0x7E, 0x72, 0x10, 0x22, 0xFE, 0xB2, 0x1E, 0x78, 0xEB, 0x7B, 0x03, - 0x57, 0xC9, 0xCD, 0x56, 0x5B, 0xD0, 0xE5, 0x96, 0x72, 0xF6, 0x66, 0x34, 0x2B, 0x79, 0x94, 0x9D }, - }, - { - { 0xC5, 0x82, 0x1F, 0xA0, 0x9B, 0x7A, 0x3F, 0x59, 0x65, 0xF3, 0xC6, 0x37, 0xC6, 0xDC, 0x91, 0x40, - 0xF4, 0xC4, 0x29, 0x00, 0x10, 0x78, 0xA5, 0xEE, 0x2B, 0x10, 0x6F, 0x87, 0xBF, 0xA2, 0xC3, 0x1A }, - }, - { - { 0xC5, 0x9F, 0x27, 0xDF, 0x84, 0x0B, 0xC2, 0x18, 0x71, 0x35, 0xCD, 0x17, 0xB6, 0xF4, 0x75, 0x23, - 0xB4, 0xD5, 0x5C, 0x47, 0xBD, 0x4D, 0x8C, 0x2C, 0x4B, 0x15, 0x4C, 0x14, 0x65, 0xC8, 0x06, 0xFE }, - }, - { - { 0xC6, 0x12, 0x75, 0x6B, 0xA5, 0x42, 0x34, 0x4A, 0xDC, 0x1B, 0x80, 0xE9, 0x38, 0x84, 0x5A, 0x1E, - 0xD6, 0xE9, 0x38, 0xFE, 0xF4, 0x0D, 0x04, 0xEC, 0x86, 0x55, 0x8F, 0x4B, 0x21, 0x05, 0x2F, 0xD2 }, - }, - { - { 0xC6, 0x17, 0xE0, 0x85, 0x5B, 0xF1, 0x4F, 0xBF, 0x21, 0xAF, 0x00, 0x82, 0x25, 0xCA, 0xBE, 0x40, - 0x4F, 0x73, 0x8C, 0x27, 0x8A, 0x4A, 0x42, 0x87, 0xF1, 0xEE, 0x38, 0x01, 0x27, 0xC5, 0x61, 0xFA }, - }, - { - { 0xC6, 0x41, 0x82, 0xD6, 0x05, 0xC1, 0xCB, 0xE1, 0x9B, 0xD3, 0xB7, 0xFE, 0x55, 0x7F, 0x58, 0xCD, - 0x52, 0x10, 0x30, 0x97, 0xA3, 0x3B, 0xF8, 0x4A, 0xF2, 0x22, 0xC8, 0xCE, 0x72, 0x52, 0x61, 0x15 }, - }, - { - { 0xC6, 0x48, 0x76, 0x70, 0x78, 0x83, 0x67, 0x74, 0x64, 0x11, 0xC9, 0x38, 0xBD, 0xDB, 0x5C, 0xFC, - 0x0D, 0x20, 0xAC, 0xF8, 0x29, 0xD2, 0xA1, 0x39, 0x12, 0x7A, 0x22, 0x7B, 0xC0, 0x06, 0x03, 0xDC }, - }, - { - { 0xC6, 0x67, 0x05, 0xFC, 0xA8, 0x55, 0x10, 0xFD, 0x14, 0x58, 0xE2, 0xF4, 0x51, 0xD4, 0x54, 0x43, - 0x55, 0xD0, 0xB1, 0x03, 0xFE, 0x6D, 0xB4, 0x73, 0x78, 0xE7, 0x28, 0x37, 0xED, 0x9A, 0x2E, 0x6F }, - }, - { - { 0xC6, 0x81, 0x77, 0x4B, 0x31, 0x13, 0x72, 0x97, 0x0C, 0x4E, 0xCA, 0xED, 0x00, 0x22, 0xEB, 0x5E, - 0xF9, 0xC2, 0x32, 0x80, 0x35, 0xC2, 0x5B, 0x00, 0xD8, 0xFA, 0xF0, 0x1E, 0xCF, 0x2C, 0x03, 0x9C }, - }, - { - { 0xC6, 0x89, 0xB9, 0x95, 0x6C, 0x73, 0x11, 0xD7, 0x34, 0x6A, 0x7F, 0xA3, 0x8B, 0x2C, 0xCD, 0xE3, - 0xEF, 0xEE, 0x85, 0x3D, 0x7C, 0x2C, 0x41, 0x4F, 0x81, 0xF3, 0xB0, 0x64, 0xE6, 0xAF, 0x1F, 0x49 }, - }, - { - { 0xC6, 0xA4, 0x24, 0xBF, 0x7C, 0xFE, 0x31, 0x72, 0x74, 0x7A, 0x47, 0x14, 0xA0, 0xEF, 0xB9, 0x17, - 0x93, 0x8C, 0x5E, 0xBD, 0x59, 0x12, 0x9D, 0xED, 0x7A, 0x81, 0x18, 0xC7, 0xF6, 0x59, 0xD1, 0x33 }, - }, - { - { 0xC6, 0xAD, 0x1D, 0x7A, 0x14, 0x1A, 0x91, 0x75, 0x2D, 0x31, 0xFB, 0xC1, 0x06, 0x16, 0xBF, 0x1C, - 0xA2, 0xFB, 0x5B, 0x02, 0xE8, 0x46, 0xB5, 0x9E, 0x63, 0x34, 0x6B, 0x31, 0x92, 0xA7, 0x52, 0x92 }, - }, - { - { 0xC6, 0xC6, 0xB0, 0x9A, 0xFA, 0x64, 0x6E, 0x4E, 0x1D, 0x75, 0xC9, 0x23, 0xAE, 0xB0, 0x2B, 0x39, - 0xF8, 0xF0, 0x7A, 0x74, 0x33, 0x59, 0xDD, 0x22, 0xB4, 0xB5, 0x32, 0x41, 0xB7, 0xB0, 0x3D, 0x63 }, - }, - { - { 0xC7, 0x01, 0x83, 0x64, 0x38, 0xF3, 0x7B, 0xEA, 0x8A, 0x88, 0x16, 0x10, 0x63, 0x70, 0x86, 0xF8, - 0x8D, 0x9A, 0x11, 0x5E, 0x00, 0x92, 0x46, 0xD2, 0x7F, 0x48, 0x9F, 0xA7, 0x18, 0x51, 0x88, 0xA8 }, - }, - { - { 0xC7, 0xA6, 0xF4, 0xE6, 0xAC, 0xFA, 0x70, 0x88, 0x7A, 0xEF, 0xEC, 0x5C, 0x75, 0x66, 0x9E, 0x04, - 0x43, 0xDB, 0x00, 0x2D, 0xBD, 0xB5, 0xED, 0x95, 0xFB, 0xBE, 0x52, 0xC5, 0xC9, 0xB8, 0xF2, 0x01 }, - }, - { - { 0xC7, 0xF8, 0x85, 0xE4, 0x1A, 0xA5, 0x3B, 0x8C, 0xB8, 0xE4, 0xE5, 0x59, 0xC4, 0x04, 0x3A, 0x87, - 0xDA, 0xFB, 0x78, 0x7A, 0x0D, 0x2B, 0x2E, 0xF1, 0xBC, 0xC0, 0x55, 0x71, 0xB7, 0x5D, 0x4E, 0x29 }, - }, - { - { 0xC7, 0xFF, 0x8E, 0xFD, 0xEC, 0xDF, 0x00, 0xD1, 0xFC, 0x8D, 0x55, 0x2D, 0x2A, 0x70, 0x70, 0xE5, - 0xE3, 0x3D, 0x42, 0xE5, 0x90, 0xF5, 0x86, 0xC6, 0xAE, 0xDE, 0x03, 0x2B, 0x2D, 0x86, 0x7B, 0xD5 }, - }, - { - { 0xC7, 0xFF, 0xB4, 0x9F, 0xBC, 0x94, 0x72, 0x24, 0x5C, 0x8E, 0x95, 0xDE, 0x62, 0x9A, 0xF5, 0xC1, - 0xBF, 0xEA, 0xC5, 0x50, 0x04, 0xC1, 0x54, 0x82, 0x3A, 0x58, 0xBA, 0xE8, 0x05, 0x6E, 0x3C, 0x64 }, - }, - { - { 0xC8, 0x26, 0xBE, 0xDD, 0x88, 0x6A, 0x87, 0x1D, 0xD5, 0xCF, 0x3A, 0x2A, 0xE0, 0xA5, 0x1C, 0x93, - 0xBC, 0x2C, 0xFF, 0x31, 0x90, 0xD1, 0xCB, 0x2C, 0x13, 0x13, 0x97, 0x29, 0x5A, 0x81, 0x76, 0xB5 }, - }, - { - { 0xC8, 0x37, 0xD6, 0xF2, 0xAB, 0x14, 0x79, 0x91, 0x42, 0xED, 0x3C, 0x79, 0xBE, 0xD9, 0x44, 0x1E, - 0x92, 0x50, 0xBD, 0x05, 0x20, 0x25, 0xAD, 0x8A, 0xF4, 0x40, 0x41, 0xAC, 0x19, 0xEF, 0xBB, 0x4C }, - }, - { - { 0xC8, 0xC6, 0x92, 0x81, 0xBE, 0x05, 0xC4, 0x14, 0xEA, 0xA3, 0x1C, 0x61, 0xB6, 0x52, 0x93, 0xBE, - 0x72, 0xB5, 0x89, 0xD1, 0xD5, 0xE4, 0xB7, 0x59, 0xD5, 0xED, 0xAF, 0x54, 0x63, 0x99, 0xA2, 0xEF }, - }, - { - { 0xC8, 0xF2, 0x99, 0x18, 0xD3, 0x41, 0xEE, 0x02, 0x20, 0xA4, 0x4D, 0xB0, 0xF0, 0xC2, 0xD9, 0xC4, - 0x16, 0x6E, 0x02, 0x3A, 0x66, 0xCA, 0x6D, 0x1D, 0x3F, 0x78, 0xF1, 0x58, 0x93, 0x61, 0x90, 0x8E }, - }, - { - { 0xC9, 0x43, 0x10, 0x03, 0xBB, 0xEA, 0xB5, 0x8E, 0x35, 0x2F, 0xDE, 0xB4, 0x5B, 0x7F, 0xCF, 0x15, - 0xC7, 0x3F, 0x07, 0x34, 0xA0, 0x7D, 0x6C, 0xBD, 0xF6, 0x32, 0x92, 0x92, 0xEB, 0x81, 0x2C, 0x93 }, - }, - { - { 0xC9, 0x72, 0xF4, 0xF9, 0x6E, 0x71, 0x33, 0xE1, 0x6E, 0x55, 0x57, 0xA0, 0x57, 0xB1, 0xD4, 0x2B, - 0xA9, 0x2D, 0x98, 0x5C, 0xAE, 0xE7, 0x3C, 0xAF, 0xDA, 0xEB, 0x55, 0xEC, 0xA2, 0xE4, 0xAB, 0xB0 }, - }, - { - { 0xC9, 0x78, 0x37, 0x2C, 0x9E, 0x11, 0x60, 0x71, 0xB6, 0x1B, 0x90, 0x92, 0xA9, 0xAA, 0x96, 0x81, - 0x62, 0x36, 0x55, 0xA6, 0x6F, 0x4F, 0xCB, 0xC4, 0xD3, 0xA6, 0x7E, 0xFD, 0x56, 0x72, 0x48, 0x30 }, - }, - { - { 0xC9, 0x7E, 0x4D, 0x81, 0xE7, 0x4E, 0x3D, 0x0A, 0x5E, 0xE0, 0x9C, 0x6F, 0x76, 0x9B, 0x95, 0x7E, - 0x70, 0x04, 0xAD, 0x2C, 0x9F, 0xC6, 0x66, 0x8A, 0x69, 0xD6, 0xCA, 0x29, 0xE0, 0x66, 0xE7, 0xFE }, - }, - { - { 0xC9, 0x84, 0x0B, 0xFB, 0x2C, 0x2D, 0x46, 0x82, 0x7C, 0xC7, 0x55, 0xC7, 0x5B, 0x12, 0x8A, 0x4F, - 0x0B, 0x7E, 0x06, 0xE5, 0xAC, 0x44, 0xEE, 0x8F, 0xFB, 0x92, 0x9A, 0xAC, 0xD9, 0x58, 0x3F, 0x39 }, - }, - { - { 0xC9, 0xE5, 0x7C, 0x8F, 0xE0, 0x00, 0x40, 0x58, 0x58, 0xBA, 0x46, 0xBE, 0xCB, 0x84, 0x78, 0xAA, - 0x8A, 0xD8, 0x24, 0x90, 0x8B, 0x90, 0xC4, 0xB5, 0xF4, 0x73, 0x8F, 0xEB, 0xD3, 0x11, 0x3B, 0xE0 }, - }, - { - { 0xCA, 0x18, 0x88, 0xDC, 0x1C, 0xEE, 0xC3, 0x5F, 0x92, 0x31, 0xD4, 0x1D, 0x23, 0x07, 0x77, 0x82, - 0x91, 0xDF, 0x33, 0x81, 0xAE, 0x6F, 0x3B, 0xC4, 0x17, 0xA9, 0xD9, 0x94, 0x4D, 0xE3, 0x06, 0x48 }, - }, - { - { 0xCA, 0x21, 0x0B, 0x73, 0x5D, 0xC0, 0x7F, 0xFB, 0xD2, 0x3C, 0x5B, 0x61, 0x30, 0x76, 0xE3, 0xD5, - 0x1B, 0xB3, 0xCE, 0x53, 0x52, 0x6A, 0x1A, 0xDF, 0xC7, 0x32, 0x54, 0x25, 0x49, 0xD8, 0xF9, 0xDA }, - }, - { - { 0xCA, 0x55, 0x6F, 0x82, 0xC9, 0x68, 0x4C, 0x9A, 0xF3, 0x55, 0x7D, 0x3E, 0x2D, 0x88, 0xAF, 0x92, - 0xED, 0x25, 0x9C, 0x20, 0xFF, 0xD1, 0xDD, 0xE9, 0xF7, 0x9D, 0x6B, 0x92, 0xC6, 0x1E, 0xE1, 0xB9 }, - }, - { - { 0xCA, 0x5A, 0x11, 0x99, 0xC9, 0xA7, 0xA3, 0x7F, 0xAD, 0xCF, 0x8D, 0xE9, 0x88, 0xDC, 0xFE, 0x55, - 0xBF, 0x80, 0x39, 0x38, 0x6D, 0x60, 0x34, 0xC1, 0xBD, 0xD8, 0x69, 0x2D, 0x49, 0x2F, 0x4C, 0x6C }, - }, - { - { 0xCA, 0x5F, 0x30, 0x7A, 0x0A, 0xA2, 0x8F, 0xF4, 0x33, 0x29, 0xCC, 0xFD, 0xC0, 0x0D, 0xE3, 0x5E, - 0xED, 0x83, 0xDA, 0x0E, 0x4B, 0x15, 0x1A, 0x76, 0xEC, 0x9E, 0x1E, 0x93, 0x5A, 0x5E, 0x36, 0xB0 }, - }, - { - { 0xCA, 0x5F, 0x8F, 0x8A, 0xF0, 0xD9, 0xFA, 0x3F, 0x80, 0x03, 0x88, 0x49, 0x54, 0xE8, 0xAA, 0x1B, - 0x8A, 0xAD, 0x4E, 0xE8, 0xD1, 0x4E, 0x82, 0xF3, 0x3F, 0xBA, 0xE3, 0xB4, 0x59, 0x8B, 0x5F, 0x90 }, - }, - { - { 0xCA, 0x6C, 0xC4, 0xBA, 0x92, 0x04, 0x14, 0x20, 0x7A, 0xA0, 0xE0, 0xF3, 0x3F, 0x27, 0x44, 0xC3, - 0x1A, 0x37, 0x78, 0x27, 0x50, 0x89, 0x24, 0x6E, 0x9E, 0x98, 0x4C, 0xB7, 0x2C, 0x58, 0x72, 0xFC }, - }, - { - { 0xCA, 0x91, 0x6E, 0xA3, 0xFA, 0x04, 0xFA, 0x3D, 0xA0, 0xC0, 0xB9, 0x27, 0xE8, 0x1D, 0xBD, 0x77, - 0xC0, 0xE4, 0x1C, 0xB8, 0xFF, 0x04, 0xAD, 0x95, 0x33, 0xB8, 0x5D, 0x87, 0xBD, 0x63, 0x30, 0x92 }, - }, - { - { 0xCA, 0xBE, 0x25, 0x56, 0xF1, 0xBB, 0x56, 0x57, 0x0C, 0xEF, 0x3A, 0x87, 0x03, 0x32, 0x71, 0xA1, - 0xF2, 0x1D, 0x09, 0xB7, 0xFD, 0x04, 0x12, 0x83, 0x18, 0xE5, 0xE7, 0xBC, 0xE3, 0xA2, 0x01, 0xE2 }, - }, - { - { 0xCA, 0xC4, 0xBB, 0x2C, 0x3D, 0x5F, 0xC7, 0xCB, 0x19, 0xC5, 0x41, 0x06, 0x79, 0x59, 0xD7, 0x20, - 0xEF, 0x4C, 0xBF, 0x52, 0x98, 0x01, 0xBE, 0xE1, 0xC8, 0xDE, 0xBF, 0x42, 0x75, 0xFC, 0x08, 0x3B }, - }, - { - { 0xCA, 0xDC, 0xD5, 0xAE, 0x1B, 0x75, 0x6A, 0xB7, 0x41, 0xB3, 0x56, 0x9C, 0x42, 0xA5, 0x41, 0x1F, - 0x09, 0x3E, 0x4E, 0x1F, 0x01, 0x2E, 0xC5, 0x79, 0x91, 0xCB, 0xD6, 0xDB, 0xE0, 0x8F, 0xAA, 0xC1 }, - }, - { - { 0xCB, 0x51, 0x19, 0xD5, 0x1A, 0x4E, 0xE8, 0x5D, 0x7D, 0x4B, 0xD0, 0xD7, 0xEC, 0xBA, 0xAD, 0x4E, - 0xC4, 0x43, 0x65, 0x4D, 0xA8, 0x5D, 0xD2, 0x46, 0xBB, 0x5E, 0x03, 0x7F, 0xE7, 0x70, 0x79, 0xB6 }, - }, - { - { 0xCB, 0x7A, 0x43, 0x8D, 0x16, 0xE4, 0xA5, 0xF3, 0xC5, 0x6F, 0xDF, 0x19, 0x1E, 0x1D, 0xAF, 0x9F, - 0x32, 0x5C, 0x65, 0x0B, 0xD6, 0x2F, 0x07, 0xC4, 0x67, 0x71, 0x72, 0x07, 0x35, 0x1A, 0xE3, 0x29 }, - }, - { - { 0xCB, 0x9C, 0x10, 0xF2, 0xCB, 0x7F, 0x7C, 0xDB, 0xFD, 0xB1, 0xF8, 0xED, 0x6A, 0x42, 0x32, 0xB4, - 0x4D, 0x6F, 0x7C, 0x32, 0x57, 0xA5, 0x94, 0x99, 0xE2, 0x37, 0xEC, 0x11, 0x3A, 0x2D, 0xDC, 0x1D }, - }, - { - { 0xCC, 0x2A, 0x70, 0x6F, 0xE6, 0x8F, 0x5D, 0x17, 0xF4, 0xAB, 0xAF, 0x60, 0x86, 0xE5, 0xBD, 0x97, - 0xAE, 0x35, 0xEB, 0x35, 0x9F, 0x75, 0xC0, 0x92, 0xBB, 0xA4, 0x93, 0xFE, 0x11, 0xF2, 0x69, 0xFD }, - }, - { - { 0xCC, 0x30, 0xD8, 0x19, 0xDE, 0x54, 0x05, 0xF6, 0x49, 0xC8, 0xB7, 0xA8, 0x14, 0x8F, 0x26, 0xD7, - 0x71, 0x08, 0x3E, 0xC5, 0x18, 0xF9, 0xB6, 0x6F, 0xF5, 0x47, 0xF2, 0x82, 0x2D, 0x11, 0x93, 0x6D }, - }, - { - { 0xCC, 0x4E, 0x09, 0x63, 0x13, 0xDF, 0xA0, 0xCC, 0x24, 0x77, 0xA3, 0xA5, 0xB7, 0x9A, 0xEF, 0x0A, - 0x45, 0x54, 0x58, 0x69, 0xA7, 0xF8, 0x8A, 0x29, 0x14, 0x96, 0x06, 0x4B, 0x69, 0x76, 0xE1, 0x4D }, - }, - { - { 0xCC, 0x5C, 0xBD, 0xDB, 0x14, 0x85, 0x91, 0x00, 0xF8, 0x46, 0x23, 0xAF, 0xBB, 0x00, 0x6D, 0x90, - 0x6B, 0x71, 0xBC, 0xC3, 0xAA, 0x84, 0x07, 0x44, 0x0C, 0x7F, 0x10, 0x47, 0x0C, 0xA9, 0x29, 0x21 }, - }, - { - { 0xCC, 0x65, 0xCD, 0xC5, 0x33, 0x62, 0xD4, 0x21, 0x62, 0x7E, 0xAE, 0xF5, 0xD0, 0xC8, 0xE4, 0xC4, - 0xE2, 0x40, 0xAD, 0xE0, 0xC9, 0xD4, 0x20, 0xBE, 0x67, 0x1E, 0x70, 0xF0, 0xFB, 0xAC, 0x8D, 0x0A }, - }, - { - { 0xCC, 0xA9, 0x7F, 0x5E, 0x4E, 0x65, 0xB6, 0x11, 0x97, 0x5F, 0xC4, 0x4A, 0xAC, 0xD4, 0x3F, 0x49, - 0x0E, 0xB9, 0x47, 0x4D, 0x15, 0xFF, 0x07, 0x40, 0x55, 0xB5, 0x93, 0x28, 0x81, 0xF1, 0x1F, 0x3F }, - }, - { - { 0xCC, 0xCB, 0x6F, 0xA7, 0xEF, 0x62, 0x78, 0x99, 0xFA, 0x6F, 0xCC, 0x96, 0x50, 0x9B, 0x22, 0x55, - 0x77, 0x4E, 0xD9, 0x94, 0xA0, 0xB7, 0xA5, 0x74, 0xB8, 0x4E, 0xBD, 0xC1, 0xAE, 0x59, 0xA4, 0xA8 }, - }, - { - { 0xCD, 0x12, 0x53, 0xFF, 0xC5, 0x8D, 0xC6, 0x3D, 0x0B, 0xAF, 0xBD, 0xDE, 0x1B, 0xBF, 0xF0, 0x33, - 0xAE, 0xAB, 0x63, 0x30, 0x9B, 0x4D, 0x72, 0xE7, 0x59, 0xC4, 0x79, 0xC2, 0xE5, 0x5D, 0x39, 0xBD }, - }, - { - { 0xCD, 0x51, 0xED, 0x79, 0xB6, 0x39, 0x06, 0x32, 0x75, 0x7F, 0x8A, 0xAD, 0x39, 0xD3, 0xBE, 0xBD, - 0xDC, 0x79, 0xBB, 0x90, 0xD0, 0x46, 0xFD, 0xF1, 0x46, 0xDA, 0x62, 0xF6, 0x9D, 0x28, 0x41, 0x34 }, - }, - { - { 0xCD, 0x8E, 0xA1, 0x1F, 0xF5, 0x9F, 0x00, 0x9F, 0xD3, 0x02, 0xD7, 0x90, 0xA2, 0x89, 0xB7, 0x04, - 0x76, 0x1E, 0x01, 0xCF, 0x27, 0x3F, 0xD9, 0x70, 0xD9, 0xC7, 0xC1, 0xEC, 0xA4, 0x9D, 0x48, 0x51 }, - }, - { - { 0xCD, 0xB1, 0x62, 0x53, 0xD2, 0x2E, 0xD5, 0xD4, 0x26, 0xCF, 0xA1, 0xB0, 0x5C, 0xEC, 0xD8, 0x6E, - 0xF1, 0xB7, 0xDE, 0xAA, 0x07, 0xC5, 0x70, 0x5E, 0xBB, 0xAF, 0x7D, 0x9A, 0x80, 0x7D, 0x56, 0x16 }, - }, - { - { 0xCD, 0xC0, 0x39, 0xF3, 0xA2, 0xD1, 0xBB, 0xA5, 0xE8, 0x09, 0x4E, 0x55, 0x23, 0xCF, 0x60, 0x47, - 0x09, 0x7D, 0x4B, 0x3C, 0xD4, 0xEC, 0x4E, 0xD6, 0xAA, 0x8E, 0xB7, 0xB4, 0xD8, 0xB5, 0x77, 0x7D }, - }, - { - { 0xCD, 0xC4, 0xEA, 0x92, 0x02, 0xE3, 0x3E, 0xDD, 0x0F, 0x2D, 0x3A, 0xE8, 0x6A, 0xCA, 0xC7, 0xFB, - 0x25, 0x35, 0x4B, 0x02, 0x23, 0x5B, 0x09, 0x33, 0xAA, 0x81, 0xA3, 0x13, 0xB5, 0xFD, 0xFE, 0xEC }, - }, - { - { 0xCE, 0x2C, 0xF2, 0x55, 0x72, 0x57, 0x21, 0x30, 0x71, 0x73, 0x68, 0x19, 0xB7, 0xD2, 0x88, 0xA9, - 0x30, 0x77, 0x2B, 0x9B, 0x78, 0x2E, 0x61, 0x60, 0x03, 0x8F, 0xC6, 0x7A, 0x76, 0x0D, 0x7C, 0xDC }, - }, - { - { 0xCE, 0x47, 0xD5, 0x29, 0x14, 0xEF, 0xAA, 0xBE, 0x41, 0x80, 0xD4, 0xA0, 0xF7, 0xE1, 0xBC, 0xA4, - 0x72, 0x0B, 0x35, 0xA4, 0x43, 0x11, 0x93, 0x61, 0x26, 0x57, 0x99, 0x71, 0xBF, 0x16, 0x8C, 0x71 }, - }, - { - { 0xCE, 0x4C, 0x2F, 0x8F, 0x16, 0x46, 0x8A, 0x58, 0x88, 0xE9, 0x0F, 0x73, 0x4E, 0x4D, 0x22, 0x02, - 0xDF, 0xAD, 0xBF, 0xA6, 0x6F, 0x5B, 0x35, 0x75, 0x2B, 0xAA, 0x76, 0x21, 0xA7, 0x60, 0xB0, 0x88 }, - }, - { - { 0xCE, 0x52, 0x40, 0xCB, 0xAC, 0x28, 0x6B, 0x4E, 0x87, 0x69, 0xCE, 0xDC, 0x3F, 0x79, 0xD0, 0x6D, - 0x9C, 0x8D, 0x15, 0xD3, 0xD6, 0xC6, 0x84, 0x50, 0xF7, 0xC2, 0x9D, 0x44, 0x1D, 0x02, 0xFA, 0x50 }, - }, - { - { 0xCE, 0x81, 0x44, 0x58, 0x54, 0x03, 0x1F, 0x3D, 0x0F, 0x5C, 0x88, 0x75, 0x46, 0x4D, 0xCD, 0x5B, - 0xA6, 0xC8, 0x90, 0xF4, 0x49, 0xB3, 0x20, 0x7B, 0xCA, 0x2B, 0xC9, 0x61, 0x82, 0x2D, 0x27, 0xC4 }, - }, - { - { 0xCE, 0x83, 0x25, 0x83, 0x1D, 0xA3, 0xAF, 0x4D, 0x77, 0xAC, 0x41, 0xCE, 0xD9, 0x2A, 0xED, 0x17, - 0x95, 0x8A, 0x2B, 0x27, 0xAA, 0xFD, 0xEF, 0x64, 0xDB, 0x3E, 0xA2, 0x26, 0x03, 0x2C, 0x0F, 0x87 }, - }, - { - { 0xCE, 0x84, 0x19, 0xA7, 0xC8, 0x87, 0xFD, 0x59, 0x48, 0xB1, 0x0D, 0xC2, 0x64, 0x5C, 0x05, 0xCF, - 0xA1, 0xE1, 0x69, 0x06, 0xAC, 0x83, 0x35, 0x02, 0xA3, 0x0C, 0x42, 0xAD, 0x3F, 0x00, 0x7F, 0x17 }, - }, - { - { 0xCE, 0x9D, 0xE7, 0xAC, 0x2E, 0x0B, 0x8A, 0x4F, 0x85, 0xF5, 0xB6, 0x4E, 0x65, 0x22, 0x8D, 0x03, - 0xFC, 0x77, 0x93, 0xD9, 0x49, 0x42, 0xF8, 0x8A, 0x1C, 0x72, 0xBB, 0x7B, 0x61, 0x14, 0x51, 0xD5 }, - }, - { - { 0xCF, 0x03, 0x40, 0x17, 0x5B, 0x25, 0x03, 0xC8, 0xFA, 0x5D, 0x52, 0xED, 0x42, 0x5B, 0xF3, 0x7E, - 0x69, 0xC1, 0x80, 0xE5, 0x75, 0xAD, 0xC1, 0xA2, 0x6A, 0x47, 0x81, 0x97, 0x71, 0xB6, 0x8F, 0x7D }, - }, - { - { 0xCF, 0x10, 0xFA, 0xC3, 0x54, 0x4D, 0xCE, 0xE1, 0xBB, 0x98, 0x7E, 0x92, 0xE7, 0x35, 0x48, 0xB1, - 0xC6, 0xA8, 0x65, 0xE6, 0x9C, 0xD2, 0x91, 0x8A, 0xD0, 0x1D, 0xAF, 0x89, 0xB1, 0x04, 0x6A, 0x51 }, - }, - { - { 0xCF, 0x3C, 0x62, 0x0B, 0x39, 0xA4, 0x91, 0xB1, 0xBD, 0xC0, 0x33, 0x5F, 0xA1, 0x15, 0xB4, 0xF5, - 0xAE, 0xD7, 0xD8, 0xCD, 0x8E, 0xBB, 0xF2, 0xCA, 0x73, 0x7E, 0x7C, 0x6A, 0xC2, 0x00, 0x68, 0x0E }, - }, - { - { 0xCF, 0x3E, 0xCB, 0x41, 0xA4, 0xE8, 0x1B, 0x3A, 0xC8, 0x27, 0xDC, 0xBE, 0x4E, 0xB6, 0xD1, 0xCD, - 0x4C, 0x53, 0x4A, 0xDF, 0x8C, 0x87, 0xE4, 0xAA, 0x0C, 0xB2, 0x97, 0x15, 0x74, 0x6F, 0x04, 0x0B }, - }, - { - { 0xCF, 0x55, 0x5E, 0x56, 0x05, 0xDF, 0xA7, 0x42, 0x35, 0x33, 0xDD, 0xDA, 0xF7, 0x48, 0x72, 0xD1, - 0x68, 0x46, 0xE2, 0xCB, 0xF0, 0x30, 0x7D, 0x33, 0xA1, 0x0D, 0xF5, 0x72, 0x40, 0x67, 0x2F, 0x42 }, - }, - { - { 0xCF, 0x92, 0x77, 0xCE, 0xEA, 0x50, 0x1A, 0x49, 0x66, 0x04, 0x3E, 0xF2, 0xB0, 0xF8, 0x86, 0x2A, - 0xC9, 0x00, 0x93, 0x89, 0x78, 0x08, 0x26, 0x22, 0xC5, 0x7A, 0x50, 0x07, 0xC9, 0xC6, 0x53, 0x9D }, - }, - { - { 0xCF, 0xA0, 0xC0, 0x0C, 0xB2, 0xFB, 0x4B, 0x85, 0x7A, 0xAD, 0x22, 0xB1, 0x3A, 0x90, 0xE3, 0x46, - 0xA0, 0x3E, 0x6B, 0x79, 0xAB, 0xD5, 0xD2, 0x75, 0xB5, 0x43, 0x24, 0x68, 0x17, 0x92, 0xD6, 0xD1 }, - }, - { - { 0xCF, 0xFC, 0x37, 0x2D, 0xB5, 0xDA, 0x47, 0xAC, 0xDD, 0xF3, 0x1A, 0x84, 0x9B, 0xD2, 0xE2, 0xBD, - 0x25, 0xB6, 0x58, 0xEE, 0xB8, 0xDA, 0x82, 0x51, 0x59, 0x9A, 0x97, 0x51, 0x89, 0xB5, 0xF8, 0x24 }, - }, - { - { 0xD0, 0x71, 0x14, 0xB2, 0x97, 0xB2, 0x9F, 0xA2, 0xE0, 0xEC, 0xCD, 0xF1, 0x58, 0x7C, 0x0F, 0x03, - 0xF8, 0x81, 0x63, 0x95, 0x46, 0x1D, 0x01, 0x1C, 0x47, 0x7B, 0xD7, 0xFE, 0x83, 0x8A, 0x3D, 0x0B }, - }, - { - { 0xD0, 0xC4, 0x74, 0xE4, 0x47, 0xE3, 0x38, 0xA5, 0x4D, 0x31, 0xB3, 0xA0, 0xF4, 0x47, 0x43, 0x75, - 0x1E, 0x45, 0xCB, 0x92, 0x87, 0xA0, 0x1F, 0x2B, 0x0A, 0x51, 0xE6, 0x4F, 0x16, 0xC9, 0xA7, 0x5C }, - }, - { - { 0xD0, 0xEA, 0x0E, 0x9F, 0xD1, 0x80, 0x10, 0x0D, 0xCA, 0xC8, 0xB1, 0xB3, 0xFB, 0x95, 0xCE, 0xCB, - 0x9E, 0xCB, 0x1D, 0xFD, 0xCD, 0x6D, 0xF6, 0x16, 0xD8, 0xE1, 0x17, 0x50, 0x8A, 0x5C, 0xEE, 0xFD }, - }, - { - { 0xD0, 0xF5, 0x93, 0xC1, 0xA8, 0x1B, 0x1E, 0xF8, 0x51, 0x69, 0x81, 0xEE, 0x56, 0xF1, 0xD5, 0x98, - 0xA2, 0xA6, 0x03, 0x48, 0x8C, 0x67, 0x8C, 0x1B, 0x7B, 0xBE, 0xA6, 0x44, 0x6B, 0x00, 0x83, 0xAD }, - }, - { - { 0xD1, 0x07, 0x9A, 0x99, 0xF7, 0x3A, 0x01, 0xC9, 0x6E, 0xA6, 0x78, 0x84, 0x16, 0x62, 0xDA, 0x5E, - 0x74, 0xCA, 0xB2, 0xC4, 0x1D, 0x1F, 0x83, 0x45, 0x47, 0xFE, 0x65, 0x0F, 0x28, 0x50, 0xCD, 0x27 }, - }, - { - { 0xD1, 0x24, 0xFC, 0x30, 0x54, 0x79, 0x1F, 0x76, 0xBB, 0x8B, 0xAF, 0x57, 0xF5, 0xC4, 0x5B, 0x69, - 0x16, 0x8C, 0x3A, 0x6E, 0xE3, 0xFB, 0xCD, 0xF3, 0xEC, 0x2A, 0x77, 0xE8, 0x7C, 0x7C, 0x50, 0x09 }, - }, - { - { 0xD1, 0xBA, 0x62, 0xAC, 0x65, 0x17, 0x92, 0x3B, 0x96, 0x74, 0xF6, 0xA9, 0x73, 0xA1, 0x13, 0x17, - 0xC3, 0x0C, 0x20, 0x4F, 0x63, 0x65, 0xD1, 0x03, 0x00, 0x21, 0xB6, 0xF1, 0xF7, 0xFF, 0xBA, 0xA5 }, - }, - { - { 0xD1, 0xFA, 0xD9, 0xA8, 0xE6, 0x2E, 0x06, 0xCF, 0x9B, 0x40, 0x3A, 0xDF, 0x51, 0xED, 0x60, 0x75, - 0xEC, 0xE7, 0x61, 0xA1, 0x0D, 0xD6, 0xA4, 0xD8, 0xDE, 0x08, 0x82, 0x2F, 0xBB, 0x08, 0x22, 0xFD }, - }, - { - { 0xD2, 0x29, 0x2E, 0x6F, 0x6C, 0x3A, 0xF8, 0xAE, 0xEE, 0x62, 0xA8, 0x14, 0xB3, 0x17, 0x1D, 0xE4, - 0xA6, 0xD6, 0x60, 0xED, 0x25, 0xA2, 0x01, 0xB9, 0xBA, 0x7D, 0xE8, 0x3F, 0xDB, 0xE3, 0x95, 0x5E }, - }, - { - { 0xD2, 0x3F, 0xEB, 0x93, 0x47, 0x60, 0xB8, 0xDF, 0x4E, 0xE6, 0xB0, 0xE8, 0xBB, 0x4F, 0x5D, 0x31, - 0x5D, 0x40, 0x5B, 0xF0, 0x56, 0x18, 0x2E, 0x5D, 0x5F, 0x70, 0x20, 0x31, 0x94, 0x61, 0x8A, 0x05 }, - }, - { - { 0xD2, 0x56, 0x79, 0xCB, 0x58, 0x3B, 0xA0, 0x10, 0x8F, 0x74, 0x97, 0xE3, 0x21, 0xC6, 0x5C, 0x4D, - 0xC2, 0xCA, 0x0F, 0x28, 0x20, 0xC7, 0xFC, 0xDB, 0x11, 0x3F, 0x05, 0x72, 0xDF, 0x44, 0x79, 0x34 }, - }, - { - { 0xD2, 0x90, 0x3C, 0xA2, 0x55, 0x17, 0x27, 0xED, 0x01, 0x71, 0xCC, 0x4A, 0x43, 0xB3, 0xCA, 0xE0, - 0x09, 0xB7, 0x47, 0xB9, 0xF4, 0xF8, 0x48, 0x72, 0x92, 0x27, 0xBF, 0x59, 0x02, 0xF2, 0x3E, 0x47 }, - }, - { - { 0xD2, 0xB9, 0x70, 0xF3, 0x30, 0x65, 0x03, 0xE7, 0xD4, 0xBC, 0x63, 0x04, 0x64, 0xB2, 0xAF, 0x39, - 0x20, 0x66, 0x06, 0xD3, 0x6F, 0xF0, 0x51, 0xD9, 0x7D, 0x40, 0xD5, 0x8A, 0xB5, 0x37, 0x72, 0x83 }, - }, - { - { 0xD2, 0xC7, 0x0A, 0x4C, 0x52, 0xFB, 0xFC, 0x7B, 0x4C, 0x2D, 0xFE, 0x94, 0xCB, 0x44, 0x50, 0x37, - 0x1E, 0x72, 0x36, 0xBD, 0xBD, 0x1C, 0x81, 0x13, 0xFF, 0x36, 0x0F, 0xA4, 0xA1, 0x58, 0x1E, 0xFC }, - }, - { - { 0xD2, 0xD1, 0x84, 0xCA, 0x5B, 0x97, 0xAC, 0x7B, 0xD3, 0x4E, 0x78, 0x42, 0x4C, 0xA0, 0xC2, 0xB3, - 0x9C, 0x35, 0x08, 0x52, 0xCC, 0xB1, 0x33, 0xE5, 0xA1, 0x87, 0xF7, 0x61, 0x7D, 0x00, 0xB0, 0x2C }, - }, - { - { 0xD2, 0xE8, 0xA1, 0x23, 0x7A, 0x93, 0xF5, 0x78, 0xD1, 0xBA, 0x8F, 0x09, 0xE4, 0xFF, 0x10, 0x7B, - 0x62, 0x35, 0x78, 0x85, 0x42, 0xAA, 0x61, 0x83, 0xD1, 0x76, 0xDB, 0xF1, 0xC8, 0x8D, 0xCF, 0xB6 }, - }, - { - { 0xD3, 0x10, 0x0B, 0xC8, 0x42, 0x8B, 0xA2, 0x3A, 0xE1, 0x3B, 0x41, 0xEA, 0xA2, 0x95, 0xBF, 0xBF, - 0xD6, 0x97, 0xF5, 0x0B, 0x81, 0xCA, 0xEF, 0x6A, 0x30, 0xA4, 0xD1, 0x99, 0x47, 0x1B, 0x9F, 0x32 }, - }, - { - { 0xD3, 0x22, 0xE0, 0xC4, 0x4E, 0xA7, 0x92, 0xC0, 0x00, 0x13, 0x01, 0xA6, 0x32, 0xA1, 0x1D, 0x50, - 0x6E, 0xA9, 0x17, 0xDE, 0xED, 0xCA, 0x8E, 0xD0, 0x5F, 0x9E, 0x7A, 0xF0, 0xB6, 0x08, 0x55, 0x8B }, - }, - { - { 0xD3, 0x8E, 0x25, 0x54, 0xA9, 0xEE, 0x9B, 0x6D, 0xBC, 0xC4, 0x89, 0x2D, 0x71, 0x44, 0x7E, 0xF1, - 0x78, 0x92, 0xF3, 0xBC, 0xA3, 0x33, 0x95, 0x2D, 0xAA, 0x12, 0x16, 0xC9, 0xE9, 0x56, 0x22, 0x27 }, - }, - { - { 0xD3, 0xFF, 0x14, 0xAD, 0xD8, 0x86, 0x5F, 0xAA, 0x9C, 0x30, 0x3A, 0xED, 0xF9, 0x34, 0x53, 0x85, - 0x49, 0x8D, 0x44, 0xE1, 0xCD, 0xE0, 0x45, 0x6F, 0x1F, 0x33, 0xB4, 0x54, 0xC3, 0x95, 0x04, 0x58 }, - }, - { - { 0xD4, 0xA8, 0x3C, 0x51, 0x04, 0x29, 0x4F, 0x6A, 0xEC, 0x2A, 0xA0, 0x9F, 0xA6, 0xEF, 0x5F, 0xA0, - 0xF1, 0x72, 0xFD, 0xE6, 0xC4, 0xAC, 0xD9, 0x97, 0x2F, 0x39, 0xFE, 0xE2, 0x92, 0x4B, 0xE2, 0x74 }, - }, - { - { 0xD4, 0xC3, 0xFD, 0x99, 0x41, 0x39, 0x82, 0x2A, 0xF3, 0x4D, 0xED, 0xF2, 0xC0, 0xE6, 0x2A, 0xE5, - 0xEC, 0x67, 0x28, 0xAA, 0x6E, 0xAE, 0x4B, 0x65, 0x8D, 0x93, 0xBD, 0xAF, 0x3E, 0x4A, 0x7C, 0x0C }, - }, - { - { 0xD5, 0x04, 0x88, 0x96, 0x86, 0x07, 0x29, 0xA8, 0xFA, 0x5D, 0x23, 0x57, 0x81, 0x2B, 0xA5, 0x6C, - 0xBE, 0x84, 0xC9, 0xAB, 0x7D, 0x14, 0xDF, 0x47, 0x64, 0xE0, 0xB6, 0x62, 0x0F, 0xA3, 0x20, 0x10 }, - }, - { - { 0xD5, 0x07, 0x55, 0x61, 0x65, 0x49, 0x1E, 0xB1, 0x24, 0x3D, 0x9A, 0x61, 0xE2, 0x5D, 0x20, 0x84, - 0x7C, 0x57, 0xBC, 0xB2, 0x98, 0xE6, 0xD8, 0x5B, 0x7C, 0x45, 0xBE, 0xFB, 0x3D, 0x9C, 0x7B, 0x35 }, - }, - { - { 0xD5, 0x41, 0xA7, 0x7E, 0x13, 0x6E, 0x9E, 0x70, 0x3B, 0xB9, 0x9F, 0x80, 0x68, 0xCF, 0xEE, 0x86, - 0xA4, 0xB9, 0xF0, 0x89, 0xE0, 0x2D, 0x0C, 0x6C, 0xB6, 0xD4, 0xA3, 0x94, 0x6C, 0x6B, 0x16, 0x7A }, - }, - { - { 0xD5, 0x50, 0xB9, 0xA6, 0xD5, 0xC3, 0xF5, 0x25, 0x7C, 0x99, 0xB9, 0x94, 0x43, 0x69, 0x88, 0x3D, - 0xA1, 0x1D, 0xBE, 0x23, 0xB9, 0x6E, 0x19, 0x34, 0xED, 0xED, 0x52, 0x1B, 0x73, 0x55, 0xE4, 0x44 }, - }, - { - { 0xD5, 0x83, 0x7F, 0x79, 0xAD, 0xB8, 0x27, 0x89, 0x70, 0xDF, 0x46, 0x7E, 0xDF, 0x42, 0x5B, 0x8A, - 0x31, 0xB7, 0x50, 0xBC, 0x3B, 0x9C, 0x07, 0x57, 0xD4, 0xDA, 0x14, 0xC5, 0x0F, 0xCF, 0x76, 0x88 }, - }, - { - { 0xD5, 0x83, 0x94, 0x96, 0xCD, 0xC8, 0x5B, 0xE3, 0xD1, 0xF1, 0xAC, 0x65, 0x2E, 0xFA, 0x92, 0xBE, - 0xA3, 0xB0, 0x61, 0xC1, 0x3D, 0xAD, 0x5A, 0x82, 0x11, 0x22, 0xCF, 0xE9, 0xC7, 0x1A, 0x5A, 0x32 }, - }, - { - { 0xD5, 0xA4, 0xEE, 0x46, 0x95, 0xB5, 0x65, 0xA6, 0x7E, 0x50, 0x48, 0x66, 0xFE, 0x5B, 0xA3, 0xC0, - 0xED, 0xCA, 0xEE, 0xD5, 0x2A, 0xD0, 0xAF, 0x07, 0xE6, 0x79, 0x17, 0x73, 0x85, 0x12, 0xC8, 0xF5 }, - }, - { - { 0xD5, 0xCB, 0xAB, 0xC2, 0x61, 0x1A, 0x6C, 0x55, 0xAF, 0xB0, 0x43, 0x27, 0xE2, 0x60, 0x8C, 0xEC, - 0xF3, 0x45, 0x6C, 0x9F, 0xD8, 0xC7, 0x66, 0x58, 0x18, 0xA5, 0x4D, 0x5D, 0x93, 0x24, 0x97, 0xAB }, - }, - { - { 0xD6, 0x25, 0xC0, 0x59, 0x2B, 0x25, 0xDC, 0x03, 0xAA, 0x7E, 0x87, 0x8E, 0x6A, 0x85, 0x09, 0x1B, - 0xAA, 0x07, 0x8D, 0x26, 0x8B, 0xBD, 0xB4, 0x9F, 0x09, 0x67, 0x94, 0x08, 0x61, 0x2D, 0x1E, 0xFE }, - }, - { - { 0xD6, 0x46, 0x08, 0xB1, 0x5F, 0x71, 0xFC, 0x3B, 0x91, 0x90, 0xA2, 0x00, 0xEE, 0x3C, 0xB5, 0xBC, - 0xD9, 0xFC, 0x5B, 0x99, 0xFB, 0x67, 0x74, 0x9D, 0x18, 0x87, 0xD9, 0x17, 0xD8, 0x50, 0x01, 0x0B }, - }, - { - { 0xD6, 0x83, 0xD0, 0x6E, 0xB9, 0x28, 0x74, 0x43, 0xE5, 0x01, 0xEC, 0xF7, 0x1D, 0xAD, 0xA6, 0x80, - 0x35, 0x88, 0x71, 0xD1, 0x2A, 0x53, 0xFB, 0xCC, 0x44, 0x09, 0x2E, 0x76, 0x4E, 0xE5, 0xBA, 0x08 }, - }, - { - { 0xD6, 0xD1, 0xB3, 0x5C, 0xBC, 0x12, 0xFB, 0x1C, 0x70, 0xA0, 0xB4, 0x3B, 0xA5, 0x9A, 0xB3, 0xD3, - 0x22, 0x5F, 0x37, 0x32, 0x64, 0xDD, 0x87, 0xFB, 0xCA, 0x00, 0x61, 0xEC, 0x1C, 0x4D, 0xA1, 0x1A }, - }, - { - { 0xD7, 0x0E, 0xB9, 0xB3, 0xFE, 0xAD, 0xD3, 0x05, 0x3F, 0x5B, 0xBC, 0xD5, 0xBB, 0xDE, 0x27, 0x48, - 0xCC, 0xCF, 0xB3, 0xE4, 0x41, 0x36, 0x7C, 0xE9, 0x3B, 0x76, 0xCC, 0x46, 0xCC, 0xE3, 0x76, 0xC8 }, - }, - { - { 0xD7, 0x2C, 0x0E, 0x02, 0xA8, 0x71, 0xA9, 0xC2, 0x86, 0x7D, 0xB5, 0x13, 0x63, 0x62, 0x56, 0x98, - 0x32, 0xDC, 0x3B, 0x85, 0xAA, 0x05, 0x4A, 0x6C, 0x9E, 0xCC, 0x19, 0x01, 0x0E, 0xBA, 0x39, 0x3A }, - }, - { - { 0xD7, 0x32, 0x49, 0x74, 0xB5, 0x60, 0x09, 0x62, 0x17, 0x61, 0xF7, 0xC0, 0xFF, 0x68, 0x9D, 0xDE, - 0x47, 0x74, 0x99, 0x85, 0xE1, 0xEE, 0x8B, 0x5C, 0x89, 0x61, 0xDD, 0x8F, 0x6A, 0x78, 0xBB, 0xF5 }, - }, - { - { 0xD8, 0x0D, 0x49, 0xD7, 0xC6, 0x7A, 0x19, 0x3D, 0xE4, 0x4C, 0x4A, 0xD0, 0xA2, 0xF1, 0x0D, 0x04, - 0x33, 0xBD, 0x28, 0xFF, 0x57, 0x46, 0xB4, 0x2D, 0x8D, 0x27, 0x7F, 0x60, 0x8D, 0xAB, 0x7E, 0xFD }, - }, - { - { 0xD8, 0x18, 0xA4, 0x72, 0x70, 0xFD, 0xCD, 0x56, 0x4C, 0x8C, 0xEF, 0xBC, 0x28, 0xF7, 0x6D, 0x93, - 0x0B, 0x6C, 0x0D, 0xAE, 0x09, 0xD9, 0x3D, 0x24, 0x20, 0xEB, 0x7C, 0xDE, 0x20, 0x59, 0xAD, 0xBA }, - }, - { - { 0xD8, 0x29, 0xD3, 0x8A, 0xF1, 0xC4, 0x45, 0x73, 0x8B, 0xD8, 0x12, 0xE2, 0x8E, 0x38, 0x26, 0xB3, - 0x32, 0x27, 0x32, 0xAB, 0xE0, 0x02, 0x32, 0x89, 0xFE, 0x5A, 0x9E, 0xA6, 0x15, 0xF4, 0xF8, 0x97 }, - }, - { - { 0xD8, 0x32, 0x8D, 0x2F, 0xF8, 0x7E, 0xC3, 0xE9, 0x0B, 0x84, 0xD9, 0xA1, 0x7B, 0x1E, 0x90, 0x24, - 0xF6, 0x27, 0xC1, 0xEC, 0xC3, 0x5E, 0xC7, 0xE6, 0x71, 0xC1, 0x42, 0x92, 0xA7, 0xB8, 0x8B, 0x43 }, - }, - { - { 0xD8, 0x55, 0x49, 0xFC, 0xD2, 0x4D, 0x36, 0xCB, 0x3F, 0x7C, 0x18, 0x06, 0x3F, 0x97, 0x5A, 0x16, - 0x9F, 0xE3, 0xA1, 0xFB, 0x8D, 0x0A, 0x35, 0x9F, 0xD3, 0x5C, 0x28, 0x7B, 0xB2, 0xAF, 0x50, 0xCA }, - }, - { - { 0xD8, 0x7A, 0x9D, 0xF7, 0x19, 0x1E, 0x29, 0xC8, 0x04, 0x1E, 0x4C, 0x19, 0x3C, 0x03, 0xA8, 0xA7, - 0x12, 0x5F, 0x16, 0x6E, 0xA6, 0xCB, 0x21, 0x1F, 0xFF, 0x4B, 0xEE, 0x45, 0x0D, 0x72, 0x58, 0x09 }, - }, - { - { 0xD8, 0x83, 0xDD, 0x00, 0x1C, 0x4E, 0x5C, 0x22, 0x6E, 0xE2, 0xC1, 0xF1, 0x0A, 0x66, 0x6F, 0xA1, - 0x6E, 0x5A, 0xA9, 0x12, 0x30, 0x58, 0x38, 0xED, 0x9C, 0xDD, 0xC1, 0x56, 0x4D, 0xC6, 0x49, 0x64 }, - }, - { - { 0xD8, 0xF0, 0xE4, 0x50, 0x14, 0xD7, 0x09, 0x7D, 0xB4, 0xD6, 0xF7, 0x65, 0xEF, 0xE8, 0xB2, 0xB1, - 0x3A, 0x18, 0xDD, 0xE7, 0x39, 0xDF, 0x2A, 0xF7, 0x72, 0x73, 0x50, 0x26, 0x47, 0x04, 0xF7, 0x90 }, - }, - { - { 0xD8, 0xFF, 0x73, 0x93, 0x1F, 0x89, 0x1D, 0x94, 0x70, 0xBD, 0x60, 0xF4, 0xC7, 0x4A, 0x0E, 0x28, - 0x88, 0xC8, 0x0D, 0xCB, 0x1E, 0xCF, 0xB1, 0x18, 0xC3, 0xDC, 0x81, 0x90, 0xDA, 0x99, 0x1A, 0x70 }, - }, - { - { 0xD9, 0x2E, 0x3E, 0xE3, 0x82, 0xC8, 0xDC, 0xAF, 0xA0, 0x39, 0x3D, 0x9F, 0x9A, 0x00, 0xBF, 0x4C, - 0xD9, 0xD5, 0x64, 0x26, 0x2B, 0x18, 0x0F, 0x68, 0x16, 0x0B, 0x20, 0x34, 0xC5, 0x44, 0xD1, 0x0A }, - }, - { - { 0xD9, 0x41, 0x01, 0xB0, 0xDF, 0x02, 0xCD, 0xFE, 0xEA, 0xD5, 0x21, 0xD0, 0xE2, 0xCF, 0x3A, 0x69, - 0x46, 0x1F, 0x82, 0x6B, 0xB7, 0xA4, 0xAB, 0x50, 0xBA, 0x36, 0xA3, 0xC1, 0xF8, 0x3A, 0x52, 0xC4 }, - }, - { - { 0xD9, 0x65, 0xF7, 0x41, 0x62, 0x04, 0xDA, 0x83, 0x1A, 0xF6, 0x6B, 0xFA, 0x8F, 0x90, 0xD1, 0x41, - 0xE9, 0x93, 0xF0, 0x00, 0x21, 0x33, 0xF2, 0x8D, 0xE9, 0x7F, 0x56, 0x4A, 0x1D, 0x60, 0x4E, 0xCC }, - }, - { - { 0xD9, 0x7F, 0x55, 0xB9, 0x57, 0x9B, 0x05, 0xAE, 0x4A, 0x3E, 0xD7, 0xFC, 0x55, 0x8C, 0x58, 0x45, - 0x64, 0x51, 0x60, 0xDA, 0xB3, 0x53, 0x85, 0xC1, 0x38, 0xBC, 0x89, 0x9C, 0x4D, 0xAD, 0x8B, 0x36 }, - }, - { - { 0xD9, 0x81, 0x67, 0x9E, 0x4E, 0xCD, 0xE9, 0xC5, 0xAB, 0x5B, 0xEF, 0x9D, 0x5F, 0x97, 0x7B, 0x0F, - 0x32, 0xF9, 0x25, 0x56, 0xE2, 0x06, 0xB1, 0x51, 0x09, 0xA9, 0xBB, 0xEC, 0x59, 0x16, 0xE2, 0xD7 }, - }, - { - { 0xD9, 0x89, 0x73, 0x8D, 0x2D, 0xE5, 0x06, 0x5B, 0x8E, 0x7A, 0x8C, 0x07, 0x44, 0x88, 0xBE, 0x8E, - 0x7D, 0x93, 0xAA, 0x82, 0xA8, 0x35, 0x96, 0x49, 0x24, 0xC5, 0x8F, 0x32, 0x09, 0xFB, 0x56, 0x9E }, - }, - { - { 0xD9, 0xD0, 0xD9, 0x6E, 0xB3, 0x28, 0xE0, 0xC1, 0x77, 0x8B, 0x56, 0xA9, 0x2F, 0x71, 0x24, 0x3B, - 0x6C, 0x0D, 0xB4, 0x5C, 0x62, 0x51, 0x32, 0xDD, 0x82, 0xCA, 0x11, 0xA0, 0x97, 0xE7, 0x91, 0xC6 }, - }, - { - { 0xD9, 0xE8, 0xCC, 0xDA, 0x78, 0xFB, 0x8D, 0x5D, 0xBC, 0xE6, 0x94, 0x15, 0x57, 0x61, 0xF4, 0xD0, - 0x2C, 0x30, 0xCC, 0x8D, 0x7A, 0xEA, 0x0E, 0x11, 0x88, 0x2D, 0x79, 0x37, 0x6C, 0x72, 0x90, 0xFF }, - }, - { - { 0xDA, 0x1D, 0x8C, 0x2F, 0xE5, 0x25, 0xA6, 0xAD, 0xD6, 0xCD, 0x0F, 0xB4, 0x0F, 0xCD, 0xBF, 0xCE, - 0x0D, 0x19, 0x72, 0xED, 0x61, 0xAC, 0xDD, 0x5A, 0x0F, 0xE0, 0x19, 0x7F, 0x01, 0x07, 0x8D, 0x7F }, - }, - { - { 0xDA, 0xA3, 0x09, 0xDA, 0xEF, 0xCB, 0x5C, 0xD3, 0xBD, 0xF6, 0xE1, 0x4B, 0xA6, 0x89, 0x0B, 0x4F, - 0x73, 0xF2, 0xEC, 0x1C, 0xEF, 0xC1, 0xD5, 0x1F, 0x45, 0xCD, 0x9F, 0xC2, 0x2B, 0x01, 0x9A, 0x1E }, - }, - { - { 0xDA, 0xB2, 0xF9, 0xE8, 0xB5, 0xF8, 0x56, 0x47, 0x90, 0x93, 0x2D, 0x6B, 0xDB, 0x34, 0x29, 0x16, - 0x2D, 0x5E, 0x2C, 0xB5, 0xD0, 0x10, 0x2D, 0x79, 0xD8, 0x89, 0xAD, 0x5A, 0xB6, 0xEE, 0xC4, 0x77 }, - }, - { - { 0xDA, 0xDF, 0x97, 0x13, 0x34, 0x14, 0xAD, 0x51, 0x3F, 0xC7, 0x50, 0x14, 0xE9, 0x56, 0x65, 0xDA, - 0xD7, 0x76, 0xB1, 0x50, 0x4B, 0x15, 0x67, 0x43, 0x4F, 0xD8, 0x2A, 0x79, 0xA2, 0x20, 0xE9, 0xA1 }, - }, - { - { 0xDB, 0x1B, 0x33, 0x54, 0x93, 0xBE, 0x68, 0xD2, 0x8E, 0x3C, 0x4D, 0x3D, 0x11, 0x84, 0x99, 0x42, - 0x26, 0x17, 0x93, 0x49, 0xDA, 0xF1, 0x79, 0x5B, 0x77, 0x39, 0x3E, 0x2D, 0xD9, 0x87, 0xBB, 0x43 }, - }, - { - { 0xDB, 0x1D, 0x05, 0x4E, 0xEF, 0x12, 0xBD, 0x34, 0xA5, 0xBD, 0x99, 0xCD, 0xC5, 0xB8, 0x64, 0x8D, - 0x8E, 0x10, 0xDE, 0xF9, 0xC7, 0x8A, 0xFD, 0x90, 0xA4, 0xB4, 0xAD, 0x1E, 0xD1, 0xD9, 0x09, 0x06 }, - }, - { - { 0xDB, 0x2D, 0xB8, 0x4B, 0x17, 0x3C, 0xE2, 0x83, 0xBA, 0x18, 0x0F, 0xA2, 0x2F, 0x15, 0xC5, 0x5F, - 0x6A, 0x2A, 0x27, 0x66, 0x9C, 0xA8, 0x14, 0xA0, 0x3B, 0x9E, 0xD0, 0x31, 0x90, 0xCF, 0x92, 0xF6 }, - }, - { - { 0xDB, 0x57, 0x78, 0x2A, 0x14, 0xE1, 0x3C, 0x3B, 0xE5, 0x38, 0x9A, 0x26, 0x08, 0x1C, 0x99, 0x8B, - 0x5F, 0xFA, 0x67, 0xDD, 0x45, 0x97, 0xF8, 0xCA, 0x67, 0xEF, 0x10, 0x6A, 0xD7, 0x5F, 0x34, 0x9F }, - }, - { - { 0xDB, 0xA1, 0x23, 0x67, 0x1F, 0xED, 0x4B, 0x28, 0x70, 0x33, 0xA4, 0xB0, 0x06, 0x8F, 0xC7, 0x14, - 0xA5, 0xFC, 0x9C, 0x02, 0x6E, 0xF5, 0x65, 0x0B, 0x42, 0xDE, 0x25, 0x85, 0x9A, 0x12, 0x6A, 0xD1 }, - }, - { - { 0xDB, 0xA2, 0x21, 0xC2, 0xAB, 0x44, 0xB5, 0x2C, 0x0B, 0x83, 0x36, 0xC4, 0x69, 0xFA, 0xA8, 0x56, - 0xD6, 0xC3, 0xEC, 0xDC, 0x6C, 0x24, 0x6B, 0xE3, 0xCA, 0xC7, 0xE0, 0xF6, 0x28, 0x4B, 0x5B, 0xDA }, - }, - { - { 0xDC, 0x30, 0x45, 0x1C, 0xFB, 0x1A, 0x68, 0x3F, 0xC5, 0xB2, 0xF3, 0x16, 0x56, 0x02, 0x49, 0x6A, - 0x8F, 0xC1, 0xED, 0xA7, 0xCD, 0x1E, 0x61, 0xB3, 0xE1, 0x67, 0x47, 0x71, 0xD1, 0x4F, 0x7A, 0x0E }, - }, - { - { 0xDC, 0x3D, 0x81, 0xC3, 0x01, 0xBC, 0xDE, 0xC5, 0x38, 0xEF, 0xC7, 0xFA, 0x6A, 0x4E, 0x5A, 0x13, - 0xE5, 0x17, 0xD2, 0xA4, 0x61, 0x22, 0x2D, 0xED, 0x98, 0x3E, 0x75, 0x56, 0x4D, 0x0E, 0x68, 0x84 }, - }, - { - { 0xDC, 0x42, 0x4A, 0x70, 0x87, 0x80, 0x95, 0x98, 0x7A, 0x5B, 0xCD, 0x17, 0x1A, 0xA5, 0x13, 0x67, - 0x7B, 0xDA, 0x56, 0xDF, 0x35, 0xB6, 0x81, 0xC7, 0x07, 0x84, 0x0F, 0xDC, 0xEA, 0xC5, 0xE4, 0x0F }, - }, - { - { 0xDC, 0x69, 0x58, 0x6C, 0xCD, 0x6D, 0x51, 0x0D, 0xD1, 0xCF, 0x79, 0x56, 0xA6, 0x71, 0xD0, 0x84, - 0xEE, 0x14, 0x99, 0xDA, 0x54, 0xB8, 0xBC, 0x79, 0xEB, 0x07, 0x28, 0x71, 0xA9, 0x18, 0xC4, 0x06 }, - }, - { - { 0xDC, 0x90, 0x90, 0x55, 0x0C, 0x93, 0x42, 0xE2, 0xFA, 0xE2, 0x42, 0x26, 0xA4, 0xF9, 0xB3, 0xF6, - 0x93, 0xF4, 0xD1, 0x46, 0x52, 0x79, 0xC3, 0x7B, 0x46, 0x14, 0x38, 0xF4, 0xF5, 0x3C, 0x0E, 0x0B }, - }, - { - { 0xDC, 0xB2, 0x1D, 0xEF, 0x3C, 0x26, 0x0B, 0x20, 0x50, 0xF3, 0x4C, 0x5F, 0x51, 0xBE, 0x30, 0x9C, - 0x3C, 0x76, 0x36, 0x30, 0x6D, 0x51, 0xB9, 0xBE, 0x43, 0xD8, 0x9D, 0xE0, 0x8F, 0x60, 0xD9, 0x4A }, - }, - { - { 0xDD, 0x30, 0xCB, 0x75, 0xC9, 0x3E, 0x01, 0xFC, 0xC6, 0xE8, 0x44, 0x63, 0xFD, 0x47, 0x78, 0x15, - 0x8F, 0x3A, 0x18, 0xCE, 0x89, 0x67, 0x7B, 0x01, 0xE6, 0xFF, 0x5B, 0xA7, 0x2F, 0xA4, 0xD0, 0xF6 }, - }, - { - { 0xDD, 0x9D, 0xD7, 0xC1, 0x80, 0xB2, 0x73, 0x50, 0x83, 0xF5, 0xC7, 0x29, 0x3E, 0xC8, 0x64, 0x07, - 0x4B, 0x42, 0x27, 0xFE, 0x0E, 0xAE, 0x8D, 0x4D, 0xAF, 0x66, 0x54, 0x0D, 0x82, 0x2F, 0x81, 0xA1 }, - }, - { - { 0xDE, 0x01, 0xA7, 0x27, 0x1A, 0x95, 0x3D, 0xA2, 0xF0, 0xFD, 0xDB, 0x6B, 0x37, 0xFE, 0x00, 0x28, - 0xDE, 0x8B, 0x7D, 0x3C, 0xE5, 0x79, 0x1B, 0x45, 0x0D, 0xD2, 0x83, 0xB2, 0x0A, 0xDB, 0x05, 0xD2 }, - }, - { - { 0xDE, 0x45, 0x46, 0xC0, 0x24, 0x51, 0xA5, 0xB5, 0xAD, 0x85, 0xEA, 0x53, 0x2F, 0x09, 0x6F, 0xDF, - 0x1E, 0x2B, 0x41, 0x71, 0xD9, 0x6A, 0x1D, 0xC3, 0x93, 0x6A, 0x19, 0x74, 0xF0, 0x58, 0xF0, 0xB2 }, - }, - { - { 0xDE, 0x5C, 0x3D, 0x09, 0x58, 0xA6, 0x12, 0xBD, 0x6D, 0x48, 0x09, 0x15, 0x03, 0x3D, 0x97, 0x15, - 0x58, 0xDF, 0x35, 0xCE, 0xB1, 0xC9, 0x18, 0xE6, 0x9A, 0x01, 0x34, 0x51, 0xE4, 0x50, 0x95, 0xB8 }, - }, - { - { 0xDE, 0x77, 0xEA, 0xDB, 0xCB, 0xC2, 0x05, 0xDD, 0x55, 0xA0, 0xE1, 0x18, 0xCA, 0x67, 0x74, 0xF9, - 0x58, 0x09, 0xA8, 0x2C, 0xA0, 0x1B, 0x2D, 0x5E, 0x85, 0x72, 0xE6, 0x17, 0xB6, 0xAB, 0xF4, 0x72 }, + { 0x94, 0xDC, 0x80, 0x07, 0x49, 0x1D, 0xA8, 0xBF, 0xB7, 0x39, 0x14, 0xAD, 0xCE, 0xF7, 0x1A, 0x12, + 0x41, 0x58, 0xBA, 0xD1, 0x7B, 0xA8, 0x8F, 0xA9, 0x46, 0x57, 0x9B, 0xBC, 0x2D, 0x64, 0x97, 0x8D }, }, { - { 0xDE, 0xCD, 0xB9, 0xFC, 0x1D, 0xDE, 0xC9, 0x7E, 0x09, 0xC3, 0x02, 0x6A, 0xCE, 0xB7, 0x6B, 0xDA, - 0xE9, 0xDE, 0xB6, 0x62, 0x75, 0x1D, 0xDA, 0x34, 0x9D, 0x2F, 0xA6, 0xBD, 0x75, 0xCA, 0x59, 0x14 }, + { 0x95, 0x68, 0x33, 0xAE, 0xE6, 0x61, 0x19, 0x26, 0xE9, 0x52, 0x72, 0xA1, 0xF5, 0x88, 0xF9, 0x2A, + 0xF5, 0x2C, 0xAE, 0x70, 0x7A, 0xCD, 0xCC, 0x82, 0x63, 0x99, 0x7B, 0xFA, 0x8C, 0x71, 0x9C, 0xA8 }, }, { - { 0xDE, 0xD1, 0x9A, 0xD5, 0xDE, 0x99, 0x65, 0xD9, 0x22, 0x5C, 0x1B, 0xBA, 0x5F, 0xB4, 0xD8, 0x90, - 0xC8, 0xE5, 0xC0, 0x35, 0xE4, 0x85, 0x27, 0x52, 0xB6, 0x69, 0xB0, 0x40, 0x0F, 0x24, 0xF1, 0x74 }, + { 0x95, 0x89, 0xDA, 0xC9, 0xEC, 0xE7, 0x6D, 0xF5, 0x72, 0x01, 0x96, 0xDC, 0x58, 0x6D, 0x17, 0x9D, + 0x73, 0x5D, 0xF7, 0x17, 0x92, 0x6C, 0x06, 0x1E, 0xA7, 0x0C, 0x40, 0x85, 0x64, 0x8F, 0xF3, 0x12 }, }, { - { 0xDF, 0x12, 0x39, 0x4E, 0x73, 0xCB, 0x8C, 0x95, 0xC5, 0x7E, 0x49, 0x8B, 0x96, 0xFF, 0x65, 0x2C, - 0x06, 0xAC, 0x62, 0xA9, 0xA8, 0xED, 0x83, 0x85, 0x39, 0x93, 0xDC, 0xBD, 0xEB, 0xC0, 0x16, 0xAA }, + { 0x96, 0xA4, 0x59, 0x90, 0xFC, 0xD0, 0x1C, 0x9C, 0x2A, 0xF0, 0x64, 0x5F, 0x87, 0xB9, 0x69, 0x8B, + 0x05, 0xAF, 0xE6, 0x94, 0x32, 0xEB, 0x57, 0x01, 0x08, 0x20, 0x13, 0xBA, 0xC5, 0xB0, 0x55, 0x60 }, }, { - { 0xDF, 0x30, 0xBF, 0x8D, 0x1B, 0xF9, 0x37, 0x8E, 0x43, 0x3E, 0xF9, 0xE1, 0xB3, 0xA2, 0x28, 0xA0, - 0x7E, 0x36, 0x58, 0xA5, 0xBC, 0x43, 0x88, 0x23, 0x45, 0x4D, 0xB0, 0x6A, 0x67, 0x94, 0x4C, 0x6E }, + { 0x96, 0xEB, 0x44, 0xAA, 0x6A, 0x20, 0x49, 0xE6, 0xBA, 0xFF, 0xE6, 0xB5, 0x21, 0xC4, 0xAD, 0x8C, + 0x58, 0x77, 0x26, 0xCA, 0xA0, 0x12, 0xE8, 0xFB, 0x8E, 0x8E, 0x21, 0x89, 0x77, 0xBF, 0x1D, 0xF6 }, }, { - { 0xDF, 0x51, 0x6D, 0xA3, 0xC8, 0x2D, 0x2D, 0x71, 0x17, 0x77, 0x76, 0x59, 0xCC, 0x9D, 0xBE, 0x7C, - 0xEC, 0x22, 0x70, 0x8F, 0x22, 0x59, 0x47, 0x6F, 0xFC, 0x48, 0x60, 0x34, 0x94, 0xFC, 0x87, 0xD3 }, + { 0x97, 0x4F, 0x51, 0xA6, 0x04, 0x68, 0x48, 0xFA, 0xA7, 0xB3, 0x3F, 0xD2, 0x39, 0x13, 0x86, 0x42, + 0x8B, 0xD5, 0x24, 0xEA, 0xEB, 0xA8, 0x01, 0x4E, 0x6D, 0x1F, 0xE2, 0x54, 0x38, 0x3F, 0x41, 0x79 }, }, { - { 0xDF, 0x69, 0xF9, 0x6A, 0x85, 0x67, 0x8F, 0x6C, 0xAF, 0x3F, 0xDE, 0x25, 0xEC, 0xFB, 0x5D, 0xF4, - 0x74, 0x70, 0x87, 0xC2, 0xAF, 0x3B, 0x00, 0x65, 0xFB, 0x15, 0x10, 0x55, 0xCB, 0xCB, 0xA8, 0xC1 }, + { 0x97, 0x8D, 0x6F, 0x1E, 0x9A, 0xA3, 0xA3, 0xCE, 0xB1, 0xAD, 0xA6, 0x09, 0xE2, 0x00, 0x95, 0xFB, + 0xC3, 0x3A, 0x6B, 0xBC, 0x6A, 0x21, 0xD8, 0x0A, 0x4E, 0xCB, 0x27, 0x3C, 0x60, 0xAC, 0x2A, 0xC7 }, }, { - { 0xDF, 0xE5, 0xE5, 0x4F, 0x77, 0x04, 0xBE, 0xA9, 0xCE, 0xC9, 0xC3, 0x36, 0x85, 0xE8, 0x93, 0x37, - 0x6F, 0xE0, 0x65, 0xD3, 0x3B, 0xBC, 0x23, 0x5D, 0x16, 0xA4, 0x35, 0x3D, 0x3C, 0x28, 0x41, 0xED }, + { 0x98, 0xB5, 0x92, 0x4E, 0x06, 0xCD, 0xEA, 0x1B, 0xA1, 0x7F, 0xDB, 0x1B, 0x13, 0x97, 0x90, 0x24, + 0xB1, 0xC2, 0x5B, 0x0A, 0x69, 0x0C, 0xFE, 0x87, 0x8D, 0x4C, 0xB4, 0x07, 0x76, 0xB9, 0x6F, 0xB0 }, }, { - { 0xDF, 0xFB, 0x15, 0x21, 0xAA, 0x2D, 0x83, 0x65, 0x9A, 0x85, 0x8E, 0x14, 0x62, 0x82, 0x43, 0xD7, - 0x23, 0x14, 0x5E, 0xA8, 0x13, 0x77, 0xDE, 0xD7, 0x99, 0x1A, 0x3C, 0x00, 0xA3, 0x88, 0x9B, 0xF5 }, + { 0x99, 0xA5, 0x5F, 0x76, 0xCB, 0xEA, 0x0F, 0x3E, 0x60, 0x71, 0xD3, 0x82, 0x18, 0x1A, 0xF6, 0xCB, + 0x25, 0xBD, 0xC5, 0x87, 0x5E, 0x29, 0xF0, 0xF4, 0xD7, 0x19, 0xA9, 0xD3, 0x5B, 0x5B, 0xD6, 0xBF }, }, { - { 0xE0, 0x0B, 0xD7, 0x86, 0xD1, 0xF2, 0xF4, 0x46, 0xC4, 0xBA, 0x83, 0x99, 0xD4, 0xD8, 0xD5, 0xA0, - 0xD1, 0x98, 0x57, 0x8F, 0x42, 0x99, 0xFD, 0xFD, 0xAF, 0xF7, 0x8C, 0x3F, 0x67, 0x71, 0xF3, 0x94 }, + { 0x9A, 0x4B, 0x49, 0x93, 0xB4, 0xED, 0x8C, 0x27, 0xE7, 0x7F, 0x3C, 0x8A, 0xAF, 0xDB, 0xDC, 0x11, + 0x1A, 0x36, 0xB7, 0x3C, 0xCA, 0xDB, 0x87, 0x04, 0x98, 0x25, 0x00, 0xD1, 0xB0, 0xF1, 0x09, 0xF2 }, }, { - { 0xE0, 0x65, 0x19, 0x10, 0x41, 0x74, 0x08, 0xBE, 0x2B, 0x0C, 0xFD, 0x3D, 0x9E, 0xAA, 0xEB, 0xCA, - 0x32, 0x1F, 0x61, 0x6D, 0xDA, 0x48, 0xCB, 0x4F, 0x09, 0x10, 0x9D, 0x67, 0x19, 0x45, 0xA1, 0x1C }, + { 0x9A, 0x5F, 0xAB, 0xE5, 0x8A, 0x1E, 0xAE, 0x4B, 0x20, 0xBA, 0xB3, 0xA7, 0xEB, 0x5E, 0x42, 0xA2, + 0xDA, 0x83, 0x11, 0x59, 0x25, 0x7D, 0xD4, 0xE3, 0x55, 0x2E, 0xC6, 0xF7, 0xD2, 0x67, 0xFA, 0xBA }, }, { - { 0xE0, 0x8B, 0x2C, 0xC2, 0x7A, 0xE8, 0xE2, 0xEF, 0x1A, 0x33, 0x01, 0x7A, 0x9A, 0xC2, 0x5D, 0xDA, - 0xFB, 0x5E, 0xA1, 0x12, 0xC9, 0x56, 0xB0, 0x02, 0xFE, 0x6C, 0x79, 0x80, 0x14, 0xAA, 0x90, 0x65 }, + { 0x9A, 0xAE, 0x9D, 0x45, 0xAA, 0x04, 0x03, 0x06, 0x4B, 0xC5, 0xA7, 0x4D, 0xD0, 0x32, 0x5D, 0xA4, + 0x1E, 0x12, 0xCF, 0x58, 0x6C, 0x46, 0x2E, 0xE0, 0x6C, 0x2B, 0xB4, 0x56, 0xF8, 0x44, 0x1C, 0x4F }, }, { - { 0xE0, 0xA0, 0x7B, 0x39, 0x6D, 0x25, 0x7F, 0xAB, 0xB4, 0xE3, 0x22, 0xD8, 0x79, 0x94, 0x88, 0x37, - 0x28, 0x7A, 0xAA, 0x99, 0xAD, 0x14, 0xD7, 0x8D, 0x3A, 0x2F, 0x9D, 0xFE, 0x5C, 0x97, 0x28, 0xBF }, + { 0x9B, 0x8F, 0x9F, 0xC4, 0xAF, 0xA7, 0x04, 0x0D, 0x4E, 0x59, 0x4D, 0x66, 0x7C, 0x44, 0x44, 0xB5, + 0x25, 0x88, 0x20, 0xC0, 0x8F, 0x89, 0x91, 0x0E, 0xD3, 0x42, 0x1C, 0xB4, 0xA9, 0x7B, 0xB7, 0x9E }, }, { - { 0xE0, 0xA9, 0xD9, 0x63, 0x6E, 0xFA, 0x36, 0xA7, 0x72, 0xAC, 0xB5, 0xD0, 0x22, 0xFC, 0xA9, 0x73, - 0x71, 0xB4, 0x4F, 0x7B, 0x80, 0x4B, 0x03, 0x97, 0xFB, 0x6C, 0x37, 0x1A, 0x22, 0x5B, 0xDA, 0x78 }, + { 0x9C, 0x70, 0x8D, 0x5B, 0xAB, 0x37, 0xF5, 0xB6, 0xBC, 0x8A, 0x77, 0x53, 0x12, 0x57, 0x2A, 0xB2, + 0x79, 0x21, 0x6D, 0x55, 0x6D, 0xA7, 0x4A, 0xC2, 0xA7, 0xC0, 0x41, 0xE8, 0xCE, 0xB0, 0xBE, 0x0A }, }, { - { 0xE0, 0xBB, 0xEF, 0x7E, 0xE4, 0x37, 0xB0, 0x59, 0xE0, 0x3B, 0x52, 0x9B, 0xE6, 0xB4, 0x09, 0x6D, - 0x56, 0xC7, 0x4E, 0x90, 0x67, 0xB0, 0x5F, 0x87, 0xAA, 0x6A, 0x5A, 0x61, 0x93, 0x40, 0xA7, 0xC3 }, + { 0x9C, 0xCA, 0x23, 0x7C, 0xDF, 0xCA, 0x2C, 0x72, 0xC6, 0x09, 0x25, 0x4A, 0x72, 0x57, 0xFE, 0xD5, + 0x3A, 0xF1, 0x44, 0xAB, 0xC2, 0x5E, 0xCD, 0x8E, 0xF7, 0x01, 0x30, 0x8C, 0xB1, 0x3C, 0xF7, 0x69 }, }, { - { 0xE0, 0xDD, 0xE1, 0x29, 0xD2, 0x60, 0xC3, 0xDA, 0xB6, 0x91, 0xD8, 0x1D, 0xAB, 0xAD, 0x73, 0x4C, - 0x9A, 0xDC, 0x61, 0xD2, 0x0C, 0x1A, 0xE1, 0xB6, 0x72, 0x4E, 0x7B, 0x27, 0x92, 0x75, 0xDA, 0x35 }, + { 0x9D, 0x6B, 0xDF, 0xCF, 0x0C, 0xBF, 0xFE, 0xEA, 0x3B, 0x1A, 0xC7, 0xE9, 0x63, 0xCB, 0xB5, 0xF2, + 0x7F, 0xBD, 0xA8, 0x9D, 0x27, 0x77, 0xF6, 0x0E, 0x56, 0x5B, 0x27, 0x78, 0x54, 0xEF, 0xB0, 0x19 }, }, { - { 0xE1, 0xB2, 0xE8, 0x6B, 0x0D, 0xA8, 0x69, 0xE9, 0x25, 0x26, 0x6C, 0x1B, 0x56, 0x88, 0x34, 0x5A, - 0x17, 0xB0, 0xF6, 0xE2, 0xA2, 0x14, 0x94, 0x54, 0x7E, 0xAC, 0x09, 0x7C, 0x8B, 0xF5, 0x3C, 0x5A }, + { 0x9D, 0xAC, 0x33, 0x14, 0xB2, 0x5B, 0xB7, 0x9A, 0x39, 0xCD, 0x01, 0xEC, 0x4B, 0x33, 0xA1, 0x2F, + 0x47, 0x51, 0x2F, 0x54, 0x09, 0xFF, 0x09, 0x5D, 0x40, 0xAA, 0xD6, 0x20, 0x84, 0xEF, 0x15, 0xBE }, }, { - { 0xE1, 0xD4, 0xBB, 0x78, 0x58, 0x58, 0x9E, 0x08, 0x7E, 0x01, 0xAE, 0x85, 0x99, 0x5A, 0x5C, 0x2F, - 0xD0, 0xAC, 0xED, 0xF4, 0x40, 0x55, 0xFF, 0x96, 0x73, 0x8F, 0x2B, 0x32, 0xB3, 0x31, 0x6E, 0xB0 }, + { 0x9F, 0x24, 0x5C, 0x0A, 0x0E, 0xC6, 0x3A, 0xAA, 0xCB, 0xF9, 0x69, 0xC6, 0xFC, 0x24, 0xA1, 0x07, + 0x15, 0x83, 0xB7, 0x79, 0xA5, 0x8A, 0xB6, 0x23, 0xDD, 0x15, 0x31, 0xA2, 0xCA, 0x9F, 0x87, 0x51 }, }, { - { 0xE1, 0xD6, 0x44, 0xA0, 0x96, 0xBD, 0x8A, 0x6C, 0xAC, 0xBB, 0xDA, 0x3E, 0x7F, 0xC3, 0x38, 0xEA, - 0xDD, 0xC1, 0x2F, 0x23, 0x6C, 0x72, 0x61, 0xE4, 0x5F, 0x8A, 0xD2, 0xD8, 0x42, 0x42, 0x4F, 0x72 }, + { 0x9F, 0xAF, 0x1C, 0x11, 0xA3, 0xC7, 0xE2, 0x41, 0xF8, 0x63, 0x71, 0x97, 0xE8, 0x99, 0x68, 0xDB, + 0x86, 0x6A, 0xD0, 0x1A, 0x5D, 0x4E, 0xD5, 0x34, 0x59, 0x48, 0x65, 0xB9, 0x70, 0x75, 0xF2, 0x60 }, }, { - { 0xE2, 0x24, 0x10, 0xB5, 0xA6, 0x7F, 0xED, 0xC2, 0x64, 0x69, 0x4C, 0x44, 0x9D, 0x84, 0xFA, 0x1A, - 0x02, 0xBC, 0x8B, 0x21, 0x28, 0xC1, 0x25, 0x60, 0x71, 0x58, 0xC9, 0x1B, 0x05, 0x38, 0x6C, 0x6A }, + { 0x9F, 0xFA, 0x4E, 0xF4, 0xFC, 0xF2, 0xCF, 0xD1, 0xB2, 0x7C, 0x6A, 0x62, 0xE3, 0xC4, 0x23, 0x5B, + 0xD8, 0x3C, 0xC5, 0xE0, 0x06, 0xE9, 0x2A, 0x55, 0xE4, 0xA9, 0x86, 0xE6, 0x30, 0x53, 0x57, 0xE3 }, }, { - { 0xE2, 0xA8, 0x47, 0xC3, 0xF0, 0x9B, 0xEB, 0x6F, 0x05, 0x68, 0x6F, 0x17, 0x79, 0x1B, 0x05, 0xF1, - 0xFE, 0x25, 0xF7, 0x71, 0x86, 0x9C, 0x42, 0x63, 0xA5, 0x5B, 0x94, 0x18, 0x77, 0xE4, 0x79, 0x04 }, + { 0xA0, 0xC2, 0xD2, 0x07, 0xA4, 0x7E, 0x18, 0xD0, 0x37, 0x14, 0xD5, 0xB3, 0x44, 0x5D, 0x88, 0xBE, + 0x81, 0xFF, 0x5E, 0x1D, 0x16, 0x07, 0x3D, 0xC1, 0x16, 0x6B, 0xB5, 0x44, 0x8F, 0xF6, 0x52, 0xDF }, }, { - { 0xE2, 0xB4, 0x03, 0x32, 0x0B, 0x01, 0xF6, 0x03, 0xD7, 0xB0, 0xCA, 0x1F, 0x89, 0xF0, 0x8E, 0x25, - 0xA7, 0x95, 0xE8, 0xB6, 0x04, 0x36, 0x8B, 0xA0, 0x78, 0x69, 0x68, 0x46, 0x8C, 0x18, 0xC3, 0xF0 }, + { 0xA1, 0x97, 0x7D, 0x0C, 0x92, 0x7C, 0x21, 0xEB, 0x47, 0x6F, 0x67, 0xBE, 0xFE, 0xD6, 0xCF, 0x2C, + 0x61, 0xB7, 0x45, 0xF0, 0xCE, 0x8D, 0x26, 0x58, 0x3D, 0x03, 0xB2, 0x70, 0x02, 0xD5, 0xCD, 0xAF }, }, { - { 0xE2, 0xDE, 0x18, 0x3E, 0xAE, 0x35, 0x4C, 0xCF, 0x68, 0xF2, 0x52, 0x56, 0x76, 0xD7, 0x26, 0x46, - 0x06, 0x01, 0x38, 0x43, 0xAC, 0xB1, 0xFB, 0xFF, 0xA0, 0x22, 0x99, 0xA7, 0x4E, 0xA0, 0xDF, 0x62 }, + { 0xA2, 0x6C, 0x37, 0x5E, 0xB3, 0x19, 0x6E, 0x28, 0x3B, 0xEC, 0x60, 0x3D, 0xB6, 0xBB, 0xDA, 0xE2, + 0x49, 0x55, 0xE4, 0xBA, 0x91, 0x0C, 0xD4, 0x2D, 0x9E, 0xAC, 0x55, 0xCA, 0xC6, 0x10, 0x3A, 0xB9 }, }, { - { 0xE2, 0xF3, 0x9A, 0x9D, 0x48, 0xA3, 0x22, 0x10, 0x55, 0xB3, 0xC8, 0xA3, 0xEB, 0x14, 0x39, 0xD6, - 0xB8, 0x73, 0x01, 0x3E, 0xE4, 0xD0, 0x97, 0x12, 0x20, 0x64, 0xF2, 0x7E, 0xC0, 0x3D, 0xD4, 0xDA }, + { 0xA3, 0xA4, 0xFC, 0x03, 0xE1, 0x75, 0xF2, 0x68, 0x02, 0x57, 0x46, 0x34, 0xDE, 0x70, 0x7D, 0x2F, + 0x92, 0xF4, 0xD0, 0xCB, 0x90, 0xCD, 0xB6, 0x1D, 0xD1, 0x95, 0x8B, 0xCF, 0x0C, 0x55, 0x20, 0x86 }, }, { - { 0xE2, 0xF5, 0xDE, 0x57, 0xCD, 0x67, 0x24, 0x9A, 0x7E, 0x1F, 0x45, 0x5B, 0x85, 0xC0, 0x6F, 0x0D, - 0x80, 0x9E, 0x75, 0xA5, 0x5C, 0x6B, 0x05, 0x48, 0x16, 0xE0, 0x19, 0x89, 0x9A, 0x3A, 0x02, 0xFF }, + { 0xA6, 0x62, 0xFC, 0x81, 0xC9, 0x09, 0x34, 0xB9, 0xB4, 0xD6, 0x30, 0xB5, 0xD8, 0x2E, 0x86, 0xF2, + 0x36, 0x3E, 0xC1, 0x5C, 0xCF, 0xCD, 0xAF, 0xA7, 0xA2, 0x0C, 0x9B, 0x4E, 0x3A, 0x90, 0x0D, 0xD1 }, }, { - { 0xE3, 0x1F, 0xA0, 0xBD, 0xE8, 0x58, 0x9E, 0xDD, 0xDA, 0x1C, 0x5D, 0x1A, 0xA9, 0xC5, 0x81, 0x86, - 0xC3, 0x14, 0x36, 0x85, 0x67, 0xBD, 0xF9, 0xDC, 0xD5, 0x37, 0xAA, 0xE3, 0xCF, 0xF8, 0x77, 0x52 }, + { 0xA6, 0xA4, 0xA3, 0xF6, 0x1F, 0xA5, 0x8C, 0xE9, 0x70, 0xB4, 0x58, 0xB7, 0xC3, 0x7C, 0x05, 0x2E, + 0xAD, 0x1E, 0xB2, 0x0B, 0x85, 0x67, 0xE3, 0x51, 0xAD, 0x8E, 0x6F, 0xBA, 0x49, 0xC2, 0x69, 0x2C }, }, { - { 0xE3, 0xC8, 0xFC, 0x63, 0x7B, 0x7B, 0xB0, 0xCC, 0x67, 0x4A, 0x5A, 0x4C, 0x3B, 0x4D, 0x35, 0x62, - 0xEB, 0x8A, 0xA0, 0x0D, 0x7A, 0xD2, 0xC8, 0xA9, 0xC6, 0x37, 0x09, 0xE4, 0x51, 0x06, 0x52, 0xD5 }, + { 0xA6, 0xDE, 0x6C, 0x3B, 0x8C, 0x14, 0x05, 0xCB, 0xE1, 0x2D, 0xB4, 0x09, 0x97, 0x61, 0x71, 0xAC, + 0xB5, 0x1F, 0xB3, 0xDC, 0xFB, 0xB7, 0x6E, 0xE3, 0x84, 0x95, 0x39, 0xCD, 0x8A, 0xB0, 0x66, 0xDF }, }, { - { 0xE4, 0x6C, 0x8D, 0x7E, 0x4D, 0x59, 0x76, 0x83, 0x0B, 0xE3, 0x7A, 0x22, 0x25, 0x75, 0x55, 0x42, - 0x20, 0x81, 0xE1, 0xA8, 0x4B, 0x72, 0x6B, 0xCF, 0x17, 0xB0, 0x43, 0x54, 0x1E, 0x7C, 0xA7, 0x15 }, + { 0xA8, 0x53, 0xAD, 0xC1, 0xC2, 0x18, 0x59, 0xAF, 0x7C, 0x46, 0x2B, 0x4A, 0xA0, 0xA5, 0x74, 0xCA, + 0x9F, 0xEE, 0xFB, 0x18, 0x5A, 0x1F, 0xDB, 0xB6, 0xC1, 0x0E, 0x17, 0xD6, 0x01, 0xB7, 0x09, 0x8F }, }, { - { 0xE5, 0x3C, 0x7E, 0xA6, 0xB1, 0x2D, 0x3E, 0xCA, 0xBF, 0xB0, 0x2F, 0xE4, 0x88, 0x56, 0xE6, 0x38, - 0xBD, 0x0C, 0x6F, 0xEB, 0x35, 0x75, 0x7C, 0x19, 0xAE, 0xFA, 0x3D, 0x51, 0x92, 0x17, 0xE2, 0x9E }, + { 0xA8, 0xDF, 0xF0, 0x6A, 0x17, 0x35, 0xB4, 0x6D, 0x17, 0xDA, 0xEB, 0xC3, 0x43, 0x43, 0x18, 0x31, + 0x3B, 0x2D, 0x9E, 0x7C, 0x3E, 0xF4, 0x8F, 0x28, 0x53, 0x75, 0x35, 0x13, 0xE1, 0xB2, 0x53, 0xA8 }, }, { - { 0xE5, 0x6B, 0xF9, 0xFA, 0xF8, 0xEE, 0x91, 0xD8, 0x2F, 0xAF, 0xDF, 0x9B, 0x51, 0x20, 0x64, 0x7F, - 0x0D, 0x67, 0xF7, 0x18, 0xD7, 0x55, 0x49, 0x87, 0xFA, 0x06, 0x4B, 0xB2, 0x38, 0xCB, 0xE3, 0x9A }, + { 0xA8, 0xE3, 0x8C, 0x6E, 0xC0, 0x93, 0xF5, 0xAF, 0x53, 0x88, 0xF1, 0xE7, 0x66, 0xD7, 0x5F, 0xFB, + 0x57, 0xDD, 0xBE, 0x3E, 0x9D, 0xC2, 0xE0, 0xBE, 0x57, 0xBB, 0x88, 0x36, 0x46, 0xC5, 0xC0, 0x32 }, }, { - { 0xE5, 0x70, 0x93, 0x54, 0xAF, 0x05, 0x47, 0x26, 0x95, 0x3F, 0xC5, 0xC3, 0xBB, 0x13, 0x3E, 0x16, - 0xC7, 0xBB, 0xB7, 0xC3, 0x5A, 0xFC, 0xC3, 0x21, 0xCD, 0xA0, 0x35, 0x0B, 0xEB, 0x57, 0x17, 0x77 }, + { 0xA9, 0x0B, 0x8D, 0xE1, 0x7F, 0x6B, 0x68, 0x37, 0x56, 0x21, 0x2D, 0xB3, 0xAB, 0x34, 0x89, 0x6E, + 0x91, 0x70, 0x93, 0x11, 0x3E, 0x47, 0xCA, 0x35, 0x96, 0x2E, 0xAC, 0xCA, 0x9C, 0xB3, 0x86, 0xF0 }, }, { - { 0xE5, 0x9A, 0x43, 0xB8, 0x41, 0x20, 0x26, 0x84, 0x36, 0xC3, 0x5E, 0xD8, 0x6D, 0x73, 0x21, 0x38, - 0x5F, 0xB9, 0x1F, 0x89, 0x82, 0x83, 0x3E, 0x5F, 0x54, 0xD2, 0xAE, 0xE2, 0x09, 0x56, 0x2F, 0x2F }, + { 0xA9, 0x71, 0x2F, 0x85, 0xED, 0x2E, 0x25, 0xAD, 0xA5, 0x7D, 0xC1, 0xF0, 0xF8, 0x6D, 0xE1, 0x07, + 0xB5, 0xE2, 0xF0, 0x36, 0x09, 0x53, 0xF1, 0xED, 0x12, 0x5E, 0x37, 0x07, 0x59, 0x47, 0x1D, 0x09 }, }, { - { 0xE5, 0xAF, 0x76, 0xA5, 0xA0, 0xCC, 0x06, 0x75, 0x0E, 0x8C, 0x17, 0x76, 0x9A, 0xF3, 0x4D, 0x72, - 0x43, 0x76, 0x7F, 0xBE, 0x2A, 0x9F, 0x4A, 0xBC, 0x17, 0x08, 0xEA, 0x1C, 0x86, 0x2A, 0x38, 0xEB }, + { 0xAA, 0xEB, 0xFE, 0x2D, 0x21, 0xB7, 0xE5, 0x35, 0x1B, 0xB9, 0x99, 0x69, 0x44, 0x44, 0x19, 0xEF, + 0x21, 0xC9, 0x68, 0x8C, 0xE0, 0x53, 0x24, 0x88, 0x84, 0xCA, 0xB0, 0xB8, 0x95, 0x10, 0x30, 0xFF }, }, { - { 0xE5, 0xF1, 0x20, 0xB8, 0x78, 0x63, 0x43, 0x1A, 0xD8, 0x34, 0xD8, 0x47, 0x94, 0x86, 0x4A, 0x90, - 0x0E, 0x39, 0x30, 0xE0, 0xCE, 0xCE, 0xA1, 0x4B, 0x0D, 0x31, 0x33, 0xA9, 0x87, 0x74, 0x48, 0x89 }, + { 0xAB, 0x41, 0x28, 0x10, 0x9C, 0xAB, 0x8A, 0x58, 0x7C, 0x8F, 0xF4, 0xC7, 0xF6, 0x87, 0x34, 0x49, + 0x98, 0x18, 0xD1, 0x3F, 0x52, 0x26, 0x76, 0xD0, 0x66, 0xB3, 0x52, 0x17, 0x6F, 0xD2, 0x35, 0x96 }, }, { - { 0xE6, 0x17, 0x7C, 0x86, 0xB8, 0x35, 0x58, 0x0A, 0x7A, 0x09, 0x50, 0x34, 0x78, 0x98, 0xAB, 0x63, - 0xAF, 0x11, 0xEC, 0x99, 0x60, 0x64, 0x45, 0x4C, 0x04, 0x62, 0xBE, 0x5D, 0x4E, 0xD5, 0x22, 0x48 }, + { 0xAB, 0x80, 0xD9, 0xBA, 0x0A, 0xEF, 0xAD, 0x7B, 0xEC, 0xCE, 0x7F, 0x5E, 0x61, 0x59, 0x9A, 0xF5, + 0x26, 0x69, 0xBF, 0x59, 0x50, 0x7F, 0x8E, 0xF1, 0x99, 0x13, 0xC4, 0x2E, 0xE1, 0x29, 0xDA, 0xF0 }, }, { - { 0xE6, 0x44, 0xD1, 0x1C, 0x37, 0x07, 0x0F, 0x89, 0x69, 0x33, 0x08, 0x17, 0x8D, 0x6B, 0xE4, 0x95, - 0x94, 0x96, 0x92, 0xC1, 0xFB, 0xEB, 0x30, 0xED, 0x32, 0x9B, 0x74, 0x02, 0x7F, 0xCF, 0xFD, 0x48 }, + { 0xAB, 0xEB, 0x6A, 0xA0, 0xD1, 0xB0, 0xE0, 0x49, 0xD6, 0x9D, 0xF8, 0x3A, 0xDD, 0x19, 0xF7, 0x26, + 0x8A, 0x38, 0xDE, 0x6C, 0x00, 0x72, 0x60, 0x68, 0xC2, 0xEE, 0xE4, 0x55, 0x44, 0xF6, 0xD6, 0x7A }, }, { - { 0xE6, 0x7E, 0x9D, 0xC8, 0x17, 0x8E, 0x8D, 0xAD, 0x62, 0x91, 0x40, 0x22, 0xAE, 0x76, 0xD4, 0x75, - 0x1E, 0x9E, 0x26, 0xC6, 0x32, 0x68, 0xD3, 0xB9, 0xDF, 0xC8, 0x86, 0xE6, 0x7A, 0xAA, 0x9E, 0xEB }, + { 0xAC, 0x1B, 0x4C, 0x64, 0x6C, 0xAE, 0xFB, 0x10, 0x8A, 0x54, 0xCA, 0xB5, 0x4A, 0x96, 0xE9, 0x66, + 0x6E, 0x72, 0xA8, 0x20, 0x22, 0x44, 0xEF, 0x3D, 0x7C, 0xA9, 0x34, 0xDF, 0xCC, 0x24, 0xFC, 0xA7 }, }, { - { 0xE6, 0xA7, 0x10, 0x85, 0x6E, 0x43, 0x3D, 0x4F, 0x5F, 0xAA, 0xD2, 0xAE, 0xF4, 0x38, 0x6F, 0x17, - 0x46, 0x02, 0xC8, 0xFA, 0xE4, 0x50, 0x0F, 0x34, 0x40, 0xDD, 0x3C, 0x78, 0xF6, 0xE8, 0xDA, 0x6C }, + { 0xAC, 0x7C, 0x14, 0xB9, 0x56, 0x8F, 0x92, 0x07, 0x5A, 0xD4, 0xA3, 0xBA, 0x3D, 0x4B, 0x01, 0x84, + 0x91, 0xF3, 0x66, 0x1A, 0x37, 0x9B, 0x3D, 0xFE, 0xDD, 0x6F, 0xD3, 0xC3, 0x2E, 0xFA, 0x84, 0x7D }, }, { - { 0xE6, 0xB0, 0xF2, 0xE2, 0x5B, 0xD5, 0x16, 0xE4, 0xBB, 0xA3, 0x7A, 0x2B, 0xF2, 0xE2, 0xC7, 0x2A, - 0x1E, 0x53, 0x9C, 0x60, 0x30, 0xF3, 0xCF, 0x9B, 0xBE, 0x5E, 0x79, 0x72, 0x8D, 0x68, 0x64, 0x78 }, + { 0xAD, 0x69, 0x54, 0x5F, 0x9F, 0x85, 0x25, 0x5F, 0xE4, 0x16, 0x51, 0x3D, 0x94, 0xDB, 0x31, 0x50, + 0x5F, 0x38, 0x4B, 0x52, 0x3C, 0x2C, 0xA2, 0x6E, 0xDC, 0x0A, 0x54, 0x9A, 0x8F, 0x16, 0x26, 0xF9 }, }, { - { 0xE6, 0xC9, 0x32, 0x43, 0x98, 0x7B, 0x3B, 0xB2, 0x8A, 0xB8, 0x6F, 0xDD, 0x6B, 0xF4, 0xD9, 0xA5, - 0x94, 0xF8, 0xD5, 0xBC, 0xE3, 0xB2, 0xF6, 0xAF, 0x51, 0x97, 0x15, 0x53, 0x08, 0xC6, 0x03, 0x2D }, + { 0xAE, 0x03, 0x19, 0xFE, 0xA6, 0xA6, 0x5E, 0x84, 0xE8, 0x54, 0xB5, 0x15, 0x50, 0xEA, 0x44, 0x4F, + 0xA3, 0xB8, 0xBB, 0x50, 0xAE, 0x93, 0x74, 0x01, 0x3C, 0xFE, 0xF3, 0x88, 0x73, 0x5D, 0x0B, 0xD3 }, }, { - { 0xE6, 0xE5, 0x4D, 0xE7, 0xB4, 0x97, 0x54, 0xD3, 0x57, 0xB0, 0xA8, 0xD9, 0x4A, 0x4D, 0x4F, 0x80, - 0xAC, 0xD1, 0x99, 0x4C, 0xCC, 0x1C, 0x99, 0x08, 0xE9, 0xF0, 0xD9, 0x21, 0xE4, 0x28, 0xB8, 0x38 }, + { 0xAE, 0x4D, 0xF3, 0x97, 0x9B, 0x74, 0x27, 0x34, 0xA3, 0x39, 0xC4, 0x70, 0x1D, 0x5E, 0x13, 0x21, + 0x26, 0x3F, 0xF4, 0x4E, 0x67, 0x56, 0x49, 0x05, 0xF4, 0x9E, 0x25, 0x34, 0x62, 0xB8, 0x02, 0x25 }, }, { - { 0xE7, 0x0C, 0xBB, 0x7A, 0xF7, 0xAA, 0x20, 0xB9, 0x89, 0x0B, 0xC1, 0xF9, 0xFA, 0x00, 0xD8, 0x09, - 0x0B, 0x5A, 0xC9, 0x82, 0x5E, 0xA9, 0xD2, 0xFD, 0xF7, 0x7C, 0xA4, 0xDA, 0xE9, 0x44, 0x51, 0xB2 }, + { 0xAF, 0x1F, 0x37, 0x1F, 0x34, 0x84, 0x57, 0x51, 0x65, 0x2D, 0xC7, 0x48, 0x23, 0xF3, 0x01, 0x5C, + 0x5A, 0x11, 0xCA, 0x65, 0x3F, 0x28, 0x70, 0x1E, 0xDD, 0x4A, 0x7E, 0x0D, 0x23, 0x17, 0x1B, 0xBB }, }, { - { 0xE7, 0x5D, 0x32, 0x90, 0xA6, 0x9A, 0xB5, 0x96, 0xEE, 0x17, 0x9D, 0xC1, 0x34, 0xAA, 0x07, 0x1E, - 0x69, 0xFD, 0x98, 0x25, 0xFC, 0x06, 0x2E, 0x33, 0x8B, 0xA2, 0x23, 0x5E, 0xE3, 0x25, 0x56, 0xD2 }, + { 0xAF, 0x6B, 0x80, 0x51, 0x47, 0x14, 0x0A, 0x0E, 0x41, 0x81, 0xD8, 0x6A, 0x7E, 0x8F, 0x07, 0x69, + 0xB6, 0x1D, 0x46, 0xD7, 0xB6, 0xFA, 0xC6, 0xE6, 0xF9, 0x59, 0x6D, 0xE9, 0x4A, 0xA8, 0xE2, 0xE8 }, }, { - { 0xE7, 0xD5, 0x73, 0x8A, 0xCD, 0x7F, 0x56, 0x3D, 0xD6, 0x8E, 0x86, 0x75, 0xC8, 0x78, 0xC6, 0xC6, - 0x80, 0x02, 0xD6, 0x40, 0x60, 0x46, 0xAF, 0x40, 0x56, 0x01, 0x3A, 0xA4, 0x6E, 0xA0, 0x37, 0x54 }, + { 0xB0, 0x5C, 0x14, 0x33, 0x61, 0x75, 0x9B, 0xE1, 0x52, 0xFD, 0x76, 0xA5, 0xFF, 0xA4, 0x87, 0x2D, + 0xD4, 0x2E, 0xA0, 0x60, 0xAE, 0x40, 0xA3, 0x83, 0x13, 0xB7, 0xB5, 0x4A, 0xEC, 0x06, 0x73, 0xC2 }, }, { - { 0xE7, 0xFD, 0x58, 0x39, 0x86, 0x80, 0xFA, 0xBD, 0x43, 0x21, 0xCD, 0xBE, 0x23, 0x33, 0xCB, 0xC2, - 0xC5, 0x4A, 0x32, 0xFF, 0x76, 0x6C, 0x4A, 0x94, 0x43, 0xC3, 0x6E, 0x2C, 0xEB, 0x46, 0xC5, 0xF0 }, + { 0xB0, 0xE0, 0xE1, 0x6C, 0x5F, 0x69, 0x1F, 0x66, 0xA9, 0x57, 0x3B, 0xD3, 0xCF, 0x43, 0xF9, 0xDF, + 0xD2, 0xAD, 0x3E, 0x56, 0x15, 0x54, 0x63, 0x7F, 0x1E, 0x7B, 0x71, 0x91, 0x4D, 0x62, 0x73, 0x38 }, }, { - { 0xE8, 0x02, 0xCB, 0x32, 0x13, 0x85, 0x51, 0xE5, 0x57, 0x44, 0xD4, 0x11, 0xC4, 0x8C, 0x7D, 0x5F, - 0x47, 0xB8, 0x15, 0x47, 0xB1, 0x23, 0x47, 0x90, 0xDA, 0x5D, 0xA4, 0x33, 0x97, 0x2E, 0x57, 0x27 }, + { 0xB2, 0xDC, 0x86, 0x25, 0x6C, 0xCF, 0xF4, 0xBB, 0x14, 0xFD, 0x70, 0x27, 0x9F, 0xCC, 0x3C, 0xE9, + 0x25, 0xC5, 0x1F, 0xB7, 0x17, 0xE5, 0x87, 0x6F, 0x29, 0x1B, 0xA1, 0x70, 0x73, 0x43, 0x85, 0x68 }, }, { - { 0xE8, 0x16, 0xF9, 0x92, 0x94, 0xA1, 0x3A, 0xC2, 0xFA, 0x2B, 0xFB, 0x76, 0xC2, 0x2D, 0xFA, 0x71, - 0xBC, 0x3D, 0xA4, 0x8F, 0x67, 0x1E, 0xF7, 0x7C, 0x00, 0xAA, 0x8E, 0x45, 0x9B, 0x7C, 0xC8, 0x2A }, + { 0xB3, 0x0D, 0x88, 0x44, 0x30, 0x43, 0xF5, 0xF3, 0x72, 0x32, 0xBB, 0x9B, 0xAC, 0xB9, 0x94, 0xC5, + 0xBA, 0xE9, 0x3A, 0x46, 0xFC, 0x87, 0xF1, 0x51, 0x29, 0xC9, 0x74, 0x69, 0xA5, 0x81, 0x4E, 0xCA }, }, { - { 0xE8, 0x1A, 0x87, 0x45, 0xAD, 0x86, 0xF6, 0x5F, 0xA0, 0xD8, 0x51, 0xFC, 0xB7, 0x2E, 0x3E, 0xF5, - 0x4D, 0x51, 0xBC, 0x60, 0xB9, 0x68, 0x0C, 0xB2, 0x5E, 0xB2, 0xF3, 0xAC, 0x44, 0xEA, 0xA7, 0xA4 }, + { 0xB3, 0x1A, 0xF0, 0xC2, 0xE5, 0x1E, 0xA2, 0x1C, 0x91, 0x04, 0xF9, 0x4F, 0xAA, 0x66, 0xE0, 0xCC, + 0xC0, 0x41, 0x34, 0xD5, 0x80, 0x9A, 0x2A, 0x26, 0x70, 0xA3, 0xB7, 0xBC, 0x7D, 0xD9, 0x64, 0xF8 }, }, { - { 0xE8, 0x21, 0x3C, 0x45, 0x51, 0x81, 0x61, 0xBC, 0x36, 0x37, 0x3D, 0xCD, 0x2D, 0x4B, 0x21, 0xB7, - 0x6A, 0x7C, 0x06, 0x6D, 0xF5, 0x52, 0x6E, 0x88, 0x8B, 0x6E, 0xED, 0x09, 0xA9, 0xEE, 0xD0, 0x62 }, + { 0xB3, 0xE6, 0x42, 0x06, 0x6E, 0x41, 0x78, 0x67, 0xD9, 0x0F, 0xB9, 0xB2, 0xBA, 0x15, 0x41, 0x98, + 0xA5, 0xC5, 0xF6, 0xCC, 0x82, 0x9B, 0x51, 0x39, 0xDF, 0xD6, 0x91, 0xE5, 0x1A, 0xD3, 0x74, 0xAD }, }, { - { 0xE8, 0x68, 0xE4, 0xE2, 0x52, 0xDC, 0x95, 0x87, 0x75, 0x75, 0x6E, 0xC0, 0x10, 0xFA, 0xCF, 0xB8, - 0x79, 0x63, 0x6A, 0x35, 0x27, 0xB3, 0xB8, 0xDB, 0x9B, 0xF9, 0x26, 0x03, 0x6A, 0xD4, 0x0E, 0x92 }, + { 0xB3, 0xF4, 0xB1, 0x6F, 0x8E, 0xCE, 0xBB, 0x41, 0x47, 0x4F, 0x92, 0x4F, 0xEE, 0xF9, 0xB0, 0xBD, + 0x97, 0x9B, 0x36, 0x36, 0xC3, 0x4F, 0xF2, 0x72, 0x3F, 0x67, 0x3C, 0x8E, 0xEE, 0x2A, 0xF1, 0x52 }, }, { - { 0xE8, 0x6E, 0xE6, 0x9D, 0x51, 0xBE, 0x64, 0xF8, 0x28, 0xFC, 0x22, 0xCC, 0xE5, 0xBC, 0xC1, 0x1D, - 0x24, 0xA5, 0xF1, 0x77, 0xF9, 0xBA, 0x99, 0x51, 0x92, 0x71, 0xA4, 0xF3, 0x9F, 0x0C, 0x51, 0x7C }, + { 0xB4, 0xD4, 0x67, 0xFC, 0x5E, 0x97, 0xDB, 0x25, 0xA1, 0xFD, 0xB0, 0x06, 0xD2, 0x77, 0x66, 0xB9, + 0x99, 0x5B, 0xB9, 0xC7, 0x7B, 0x66, 0x43, 0x97, 0x08, 0xA4, 0x59, 0xB0, 0x43, 0xD0, 0x33, 0x24 }, }, { - { 0xE8, 0xA6, 0x09, 0xEC, 0x44, 0xF9, 0x3C, 0x12, 0xE0, 0x81, 0xE5, 0x94, 0x3B, 0x5E, 0xA0, 0x48, - 0x68, 0x14, 0x48, 0x33, 0x32, 0x5D, 0xAA, 0x64, 0x4F, 0x3F, 0x9F, 0xB7, 0x6A, 0xA2, 0x77, 0xC8 }, + { 0xB4, 0xED, 0xCD, 0x6F, 0x8A, 0x01, 0x82, 0xB7, 0x17, 0xF0, 0x6F, 0xE1, 0xD7, 0xAC, 0x9C, 0x62, + 0x33, 0xD4, 0x38, 0x22, 0xE9, 0xFD, 0x14, 0xDB, 0x98, 0xF7, 0xF8, 0x4E, 0x32, 0x79, 0x6D, 0x08 }, }, { - { 0xE9, 0x52, 0x76, 0x76, 0x30, 0x2F, 0xFB, 0x14, 0x91, 0x15, 0x65, 0x19, 0x28, 0xF0, 0x4D, 0x9C, - 0x96, 0xAF, 0xEF, 0x18, 0xB5, 0x72, 0x12, 0x37, 0x52, 0x75, 0x4B, 0x38, 0xA9, 0x7C, 0x8E, 0xF0 }, + { 0xB5, 0xE5, 0xDC, 0xDE, 0xCB, 0x8D, 0xEB, 0x27, 0x13, 0x4F, 0x02, 0xA5, 0x18, 0x79, 0x43, 0x16, + 0xF0, 0x8F, 0xAF, 0x9C, 0x2B, 0x1F, 0xDA, 0xD6, 0xD4, 0x86, 0x61, 0xF5, 0x7E, 0xA6, 0x45, 0xD9 }, }, { - { 0xE9, 0x65, 0xDB, 0x91, 0x44, 0x8E, 0xFF, 0xC5, 0x3D, 0xEF, 0x1B, 0x72, 0x68, 0xA2, 0xF5, 0xAB, - 0x95, 0xB1, 0x4A, 0x2A, 0x90, 0x2C, 0x6A, 0xC9, 0xB2, 0x54, 0xEC, 0xAF, 0xC7, 0x9F, 0x08, 0xD8 }, + { 0xB5, 0xEF, 0x42, 0xC4, 0xBC, 0xED, 0xF1, 0x7B, 0xEC, 0xC7, 0x5B, 0xF4, 0x63, 0x66, 0x49, 0xCE, + 0xBF, 0xF8, 0x71, 0x1B, 0xCE, 0xFF, 0xFA, 0x69, 0x5C, 0xC2, 0x52, 0xFA, 0x57, 0x4D, 0x42, 0x18 }, }, { - { 0xE9, 0xC2, 0x8F, 0x7A, 0x33, 0xFB, 0xC5, 0xB4, 0x49, 0xC9, 0x5A, 0x88, 0x47, 0x1D, 0x3F, 0x71, - 0xFB, 0x34, 0x7A, 0x02, 0xCE, 0xB0, 0x5E, 0xB0, 0xE7, 0x1C, 0x7B, 0xB7, 0x46, 0x45, 0xC8, 0x92 }, + { 0xB6, 0x82, 0x3C, 0x9D, 0xBC, 0x8E, 0x8C, 0x05, 0x4B, 0xCF, 0x60, 0xF2, 0x38, 0x21, 0xAC, 0x6C, + 0x58, 0x19, 0x73, 0x51, 0xEA, 0xCF, 0xA5, 0x57, 0x4C, 0xF0, 0x41, 0xB4, 0xCE, 0x6B, 0x84, 0x04 }, }, { - { 0xE9, 0xF5, 0x71, 0xC7, 0x71, 0x64, 0xAB, 0xEA, 0xE1, 0x85, 0x28, 0x37, 0x5C, 0xFD, 0xC7, 0x21, - 0x9A, 0x6B, 0xDE, 0x46, 0x1B, 0x19, 0x73, 0xBE, 0x2B, 0xB8, 0xBD, 0xF0, 0xDA, 0x78, 0xB2, 0xB4 }, + { 0xB7, 0x06, 0xDE, 0x1B, 0xD1, 0xEE, 0x2F, 0x4C, 0xEC, 0x6C, 0xE0, 0x92, 0x02, 0x2B, 0x49, 0x32, + 0x81, 0xE2, 0x9A, 0x21, 0x73, 0x50, 0x8C, 0x9B, 0xD0, 0xFB, 0xC2, 0xC3, 0xD9, 0x68, 0xE3, 0xE7 }, }, { - { 0xEA, 0x2E, 0x8C, 0x23, 0xAA, 0x7C, 0xC3, 0x7D, 0x64, 0xCF, 0xC3, 0x03, 0xDD, 0x9F, 0x3F, 0x92, - 0x1B, 0xAE, 0x11, 0x8C, 0xA3, 0xDF, 0x81, 0xE5, 0x92, 0xE3, 0x0B, 0xBB, 0x03, 0x71, 0x4D, 0x96 }, + { 0xB8, 0x74, 0x36, 0x95, 0x1C, 0xEC, 0x37, 0x7E, 0xEF, 0x73, 0xDE, 0x4B, 0x74, 0xF2, 0x83, 0xC4, + 0x2B, 0x2C, 0xCB, 0x1C, 0xA3, 0x7C, 0x5B, 0x30, 0xAA, 0xD6, 0x55, 0xA7, 0x40, 0x1A, 0x3D, 0x2F }, }, { - { 0xEA, 0x51, 0x8B, 0x42, 0x91, 0x89, 0x39, 0xA6, 0x22, 0x63, 0xA7, 0xCC, 0xD2, 0xA9, 0xB5, 0x44, - 0x9C, 0x58, 0x1C, 0x2E, 0xA9, 0x9C, 0x2B, 0x74, 0x3F, 0x6F, 0x18, 0x3D, 0xFC, 0x19, 0xED, 0xFF }, + { 0xB9, 0x8D, 0x83, 0x38, 0x55, 0xC3, 0x67, 0x88, 0x62, 0xB6, 0x2F, 0x36, 0x50, 0xDB, 0x00, 0xA3, + 0x45, 0xF4, 0x6A, 0x0E, 0x8E, 0x01, 0x1A, 0x20, 0x01, 0x3F, 0xD8, 0xED, 0xCE, 0x25, 0x27, 0x0D }, }, { - { 0xEA, 0x5A, 0xB6, 0x6C, 0xAF, 0xDE, 0x63, 0x38, 0xC0, 0x67, 0x8D, 0x74, 0x54, 0xD0, 0x79, 0x6D, - 0xDE, 0xA0, 0xD2, 0x84, 0xDD, 0xAA, 0x79, 0x4D, 0x04, 0x42, 0x0E, 0xDA, 0x97, 0x71, 0xC5, 0x1A }, + { 0xBA, 0x51, 0xAF, 0xF5, 0xD5, 0xD3, 0x10, 0x5F, 0x34, 0xA2, 0xB3, 0x3A, 0x83, 0xE3, 0xAD, 0xFD, + 0x12, 0xD7, 0x9C, 0xA6, 0x05, 0x90, 0x9D, 0x96, 0x03, 0x3E, 0x32, 0xA5, 0xCF, 0x2F, 0x71, 0xF6 }, }, { - { 0xEA, 0x76, 0x8A, 0xF7, 0x9B, 0x07, 0xCE, 0x21, 0xC2, 0x64, 0x90, 0xE9, 0x4B, 0xC0, 0x7A, 0x2A, - 0xAE, 0x96, 0xBD, 0x60, 0xA4, 0x19, 0xE9, 0x8B, 0x03, 0x63, 0x87, 0xF2, 0x10, 0x2D, 0x28, 0xF6 }, + { 0xBB, 0x5C, 0xB3, 0x78, 0xB7, 0xB9, 0x48, 0x7F, 0xA6, 0x1B, 0xC0, 0x91, 0x3D, 0xA1, 0xDF, 0x26, + 0xA1, 0xCF, 0xEF, 0xF7, 0x45, 0x2D, 0x9B, 0xA3, 0x6C, 0xAC, 0x47, 0xA8, 0x5C, 0x7F, 0xF3, 0x48 }, }, { - { 0xEA, 0x81, 0xEE, 0xEB, 0x60, 0x6B, 0xC9, 0x1C, 0x0E, 0x07, 0xDA, 0x1F, 0x86, 0x04, 0x89, 0x3C, - 0x1D, 0x17, 0x84, 0x60, 0xDE, 0xE8, 0x7E, 0xD5, 0x37, 0xFF, 0x8D, 0x85, 0xE4, 0x00, 0x02, 0xF5 }, + { 0xBC, 0x14, 0x2E, 0xBA, 0xC2, 0x78, 0xA8, 0xFE, 0x8C, 0xA8, 0xBC, 0x2C, 0x62, 0xFB, 0xCC, 0x40, + 0x17, 0xFF, 0x24, 0x96, 0x98, 0xBE, 0xED, 0xFB, 0x1E, 0xF3, 0x6F, 0x37, 0x5F, 0xB3, 0x9F, 0x72 }, }, { - { 0xEA, 0xC1, 0x29, 0xDC, 0x3A, 0xE7, 0xF5, 0xCC, 0x0F, 0x13, 0x46, 0x57, 0x0D, 0x06, 0x92, 0x6A, - 0x85, 0x01, 0xB0, 0xD2, 0x06, 0x9B, 0xF7, 0x17, 0xAF, 0x69, 0xD1, 0xBE, 0x0E, 0x3E, 0x30, 0xDE }, + { 0xBD, 0x2E, 0x2F, 0x37, 0xC9, 0x66, 0xC3, 0x86, 0xD9, 0x70, 0x44, 0xFD, 0xE3, 0xE3, 0xF9, 0x00, + 0xFB, 0x1A, 0x0B, 0x04, 0x03, 0xB5, 0x81, 0x72, 0x5F, 0x34, 0xE3, 0xC1, 0x90, 0x05, 0x60, 0x56 }, }, { - { 0xEB, 0x11, 0x63, 0xAA, 0xEF, 0xE8, 0xFD, 0x88, 0xE1, 0x32, 0x7B, 0x48, 0xA9, 0xC0, 0x06, 0x2E, - 0x06, 0xF0, 0xA6, 0xEA, 0xA0, 0xA0, 0x18, 0x24, 0x7F, 0x9F, 0xA4, 0xE3, 0x4E, 0x3A, 0x47, 0x4C }, + { 0xBE, 0xB9, 0x09, 0x0C, 0x92, 0xD1, 0x6B, 0xD0, 0x5A, 0xF3, 0x91, 0x5A, 0x39, 0xCC, 0x2A, 0xFA, + 0x9F, 0x6A, 0x8A, 0x6F, 0xBE, 0xD4, 0xFE, 0x54, 0xD9, 0xDE, 0x32, 0x49, 0x23, 0xB3, 0x93, 0x5A }, }, { - { 0xEB, 0x43, 0x76, 0xB1, 0xD2, 0x38, 0x2A, 0xC1, 0xC3, 0xEE, 0x27, 0xBE, 0x86, 0x67, 0xEC, 0xF5, - 0xAB, 0x36, 0x25, 0x5A, 0x3C, 0x36, 0xC7, 0x22, 0x74, 0x33, 0x8A, 0xD7, 0x17, 0x56, 0x25, 0x11 }, + { 0xBF, 0x38, 0xE6, 0xAE, 0x32, 0x0F, 0x69, 0x16, 0x16, 0x0D, 0xA6, 0x06, 0x86, 0x83, 0xBF, 0x49, + 0xF2, 0xB2, 0x2B, 0x25, 0x24, 0x84, 0x63, 0x68, 0xF5, 0x04, 0x51, 0x81, 0x52, 0x40, 0x25, 0x9A }, }, { - { 0xEB, 0x5B, 0x21, 0x0F, 0x76, 0xA3, 0xC4, 0x5E, 0x5A, 0x76, 0x07, 0x64, 0x3E, 0x15, 0x26, 0x0D, - 0x1C, 0x93, 0xFD, 0x9B, 0xE0, 0xFA, 0xB1, 0x0B, 0x76, 0xDC, 0x96, 0x86, 0xF6, 0x54, 0xC6, 0xE5 }, + { 0xBF, 0x60, 0xAE, 0xB3, 0x91, 0xC0, 0xFB, 0xD0, 0x49, 0x53, 0x52, 0x6D, 0xA9, 0xFD, 0x59, 0x96, + 0x9A, 0x82, 0xF1, 0xEE, 0x81, 0xA7, 0x97, 0x98, 0xA4, 0x17, 0x1E, 0x14, 0x59, 0x39, 0x19, 0x67 }, }, { - { 0xEB, 0x89, 0x84, 0xD1, 0xA9, 0xFE, 0x26, 0x7C, 0x07, 0x9A, 0xE2, 0xF2, 0xF1, 0x6F, 0x01, 0xE6, - 0x0C, 0x4C, 0xEA, 0x94, 0x34, 0xC5, 0x29, 0x7A, 0x71, 0x88, 0xAA, 0x09, 0x25, 0x1D, 0x03, 0xE0 }, + { 0xBF, 0xF4, 0x3A, 0x97, 0x20, 0x48, 0x2D, 0x13, 0x4C, 0xD5, 0xEE, 0x8A, 0x88, 0x99, 0xE1, 0xA7, + 0x36, 0xBF, 0x54, 0xA2, 0xB7, 0x86, 0x26, 0x9C, 0x0D, 0xCB, 0x8B, 0xA1, 0x92, 0xA8, 0x1F, 0xA4 }, }, { - { 0xEB, 0xB7, 0xC4, 0x12, 0x58, 0x17, 0x82, 0x26, 0xAD, 0x37, 0xCC, 0xAF, 0x01, 0x1F, 0xCF, 0xF0, - 0x54, 0xB7, 0x7A, 0xC4, 0x9F, 0xCE, 0x28, 0x13, 0x5F, 0x5A, 0xFC, 0x51, 0x63, 0x15, 0xEA, 0x4D }, + { 0xC0, 0x09, 0xA1, 0xBE, 0x5B, 0xE8, 0xAF, 0xB5, 0x25, 0x8E, 0x12, 0x85, 0x5C, 0x64, 0xD0, 0x4D, + 0x13, 0xE8, 0xCC, 0xC4, 0x7B, 0x02, 0xBF, 0x3B, 0x51, 0xC6, 0xE1, 0x18, 0x05, 0xAE, 0xEC, 0xEB }, }, { - { 0xEC, 0x01, 0x78, 0xD1, 0xCA, 0x3B, 0x94, 0x52, 0xAA, 0x5C, 0xD5, 0xD3, 0x75, 0x45, 0x6B, 0xAB, - 0xF0, 0xDC, 0x0E, 0xD2, 0x29, 0x91, 0x5D, 0x1A, 0x8F, 0x49, 0x6D, 0xF2, 0xA2, 0xA0, 0x98, 0x71 }, + { 0xC0, 0x9F, 0xFA, 0x0E, 0xDD, 0x16, 0xBA, 0x55, 0xF2, 0x3C, 0xEA, 0xF7, 0x2B, 0x11, 0x34, 0xE9, + 0x28, 0xDB, 0xA1, 0xC2, 0x34, 0x5A, 0x5A, 0xB5, 0x63, 0x1E, 0x25, 0x41, 0x24, 0x05, 0x4A, 0xDB }, }, { - { 0xEC, 0x27, 0x05, 0x63, 0xB0, 0x5A, 0x06, 0xE5, 0xAA, 0xA5, 0xE6, 0xD5, 0xBB, 0xCC, 0x17, 0xCD, - 0x1C, 0xB5, 0xB2, 0xA9, 0x4D, 0x93, 0x84, 0x75, 0xF1, 0x58, 0x17, 0x6F, 0x4D, 0x84, 0xF4, 0x53 }, + { 0xC0, 0xAB, 0xD1, 0xC3, 0x56, 0x2F, 0xBC, 0x7F, 0xF7, 0xBD, 0x38, 0x95, 0x54, 0x60, 0xC3, 0xFC, + 0x43, 0x55, 0x0D, 0x97, 0x7F, 0x25, 0xE3, 0x43, 0xD4, 0x9C, 0xD4, 0xAF, 0xAD, 0xF2, 0x09, 0x3C }, }, { - { 0xEC, 0x4B, 0xBD, 0xEB, 0x15, 0x12, 0x1D, 0x96, 0x76, 0x4D, 0x6C, 0x01, 0xB2, 0x7E, 0xD5, 0xAE, - 0x86, 0x46, 0x5C, 0x46, 0xD5, 0xA4, 0x0E, 0x34, 0xAE, 0xFC, 0x09, 0x2D, 0x3E, 0x8B, 0xB1, 0x76 }, + { 0xC0, 0xFE, 0xB7, 0x2A, 0x5F, 0x33, 0x16, 0x5C, 0x0D, 0xC7, 0xC4, 0x24, 0x7E, 0x23, 0xF3, 0x8C, + 0xC6, 0x1F, 0x25, 0x24, 0x42, 0xB2, 0xF6, 0x13, 0x40, 0x92, 0xDE, 0x3B, 0xAD, 0x7E, 0x45, 0x0D }, }, { - { 0xEC, 0x5F, 0xA4, 0x73, 0x12, 0x1E, 0x3F, 0x49, 0xF0, 0x95, 0x3A, 0x2A, 0x91, 0x83, 0x39, 0xE3, - 0x6F, 0x3C, 0xB6, 0xB8, 0xD8, 0xB8, 0x9E, 0x91, 0x74, 0x23, 0xDA, 0xCE, 0xAC, 0xE6, 0xD5, 0x8A }, + { 0xC1, 0x77, 0x12, 0x97, 0xA4, 0xE8, 0xDC, 0x53, 0x75, 0x19, 0x5E, 0x1B, 0x63, 0x04, 0x2B, 0x59, + 0x19, 0x09, 0xF1, 0xD7, 0xEB, 0x5D, 0x25, 0xF2, 0x97, 0xAE, 0x7A, 0x61, 0xC1, 0x53, 0x8F, 0x9E }, }, { - { 0xEC, 0x79, 0x76, 0xC2, 0xB8, 0x10, 0x31, 0xF5, 0x88, 0x49, 0x5B, 0xC1, 0x9F, 0x51, 0xB0, 0x36, - 0xF8, 0x4F, 0x48, 0x1D, 0x9B, 0x15, 0x73, 0xD9, 0x8A, 0x7C, 0x32, 0x67, 0xC0, 0x63, 0x1E, 0x00 }, + { 0xC1, 0x86, 0xBE, 0x26, 0xE4, 0x47, 0x89, 0x7C, 0x48, 0x3C, 0x43, 0xFD, 0xC0, 0x86, 0xE2, 0x60, + 0x74, 0x17, 0xEB, 0x3E, 0xA7, 0x88, 0xEC, 0x03, 0x10, 0xA7, 0x9D, 0xA9, 0x24, 0x1D, 0x16, 0xDE }, }, { - { 0xEC, 0xCE, 0x4E, 0x52, 0x82, 0xFD, 0x2E, 0xE0, 0x03, 0xA4, 0x03, 0x2C, 0x80, 0xD3, 0x32, 0x1A, - 0x69, 0x47, 0x25, 0x98, 0x94, 0x59, 0x09, 0xCB, 0x25, 0x55, 0x7A, 0xA8, 0x47, 0x74, 0x2D, 0xDF }, + { 0xC1, 0xDE, 0x5F, 0xA3, 0x92, 0x13, 0x68, 0x58, 0x11, 0xA5, 0xBA, 0x93, 0x12, 0x1D, 0xE7, 0xA3, + 0x95, 0x98, 0x4E, 0x84, 0x44, 0x4E, 0x58, 0xF1, 0x63, 0xB7, 0xA6, 0x20, 0xAE, 0x3B, 0xBF, 0xA8 }, }, { - { 0xED, 0x2B, 0x81, 0xA0, 0xF8, 0xF1, 0x46, 0x5E, 0xA2, 0xF4, 0x17, 0xA4, 0xE8, 0x34, 0xC2, 0x2A, - 0x22, 0xEE, 0x7A, 0x9D, 0xDF, 0x59, 0xA8, 0x3B, 0x89, 0x82, 0xB0, 0xE1, 0x07, 0x19, 0x64, 0x42 }, + { 0xC2, 0xAD, 0xDF, 0x99, 0xCF, 0xC4, 0x2C, 0xE0, 0xE5, 0xA0, 0x93, 0xBC, 0xBF, 0x87, 0x40, 0x7C, + 0x61, 0x1F, 0x9D, 0x0A, 0xBF, 0x2A, 0x35, 0xD6, 0xE8, 0x03, 0xA3, 0x8E, 0xCB, 0x92, 0xC7, 0xB3 }, }, { - { 0xED, 0x50, 0xC1, 0x22, 0xAA, 0x2A, 0x49, 0x53, 0xF0, 0x51, 0xB7, 0x81, 0x41, 0x33, 0xAB, 0xBC, - 0x37, 0xA0, 0xC2, 0x21, 0x1B, 0xF7, 0x44, 0x0D, 0x75, 0xB3, 0x5E, 0xE5, 0x4E, 0x5A, 0x98, 0x86 }, + { 0xC2, 0xE7, 0x92, 0x11, 0x6A, 0x05, 0x00, 0x00, 0xBD, 0x47, 0x59, 0x1D, 0x93, 0x04, 0x71, 0xE6, + 0x17, 0x4C, 0x93, 0x85, 0xF5, 0xDC, 0x32, 0xB7, 0x62, 0x31, 0x65, 0x5F, 0xC8, 0x5E, 0x22, 0xE2 }, }, { - { 0xED, 0x57, 0xFB, 0x37, 0xD8, 0x73, 0xD5, 0x26, 0xB1, 0xB6, 0xFD, 0xC3, 0x38, 0x0F, 0xA9, 0x30, - 0x0D, 0xA6, 0x25, 0x81, 0x4C, 0x35, 0xF1, 0x0A, 0x04, 0x93, 0xEE, 0x19, 0xFF, 0x09, 0x60, 0x29 }, + { 0xC3, 0x79, 0x03, 0xC5, 0x3A, 0xE6, 0x02, 0xEC, 0x96, 0x9E, 0xC3, 0x3F, 0x63, 0xFE, 0x9A, 0xB2, + 0x0C, 0x39, 0x5F, 0x83, 0x0D, 0x30, 0xE4, 0xEE, 0x9D, 0x8D, 0xD9, 0x05, 0x92, 0x1E, 0xC1, 0xA0 }, }, { - { 0xED, 0x5B, 0xB8, 0x6A, 0x95, 0xA5, 0xFE, 0x2B, 0x17, 0x08, 0xF2, 0x56, 0x75, 0x4A, 0x89, 0xC4, - 0x29, 0x67, 0x9B, 0x30, 0x75, 0x8E, 0xE0, 0x12, 0x2B, 0x9E, 0x50, 0x85, 0x8D, 0xE2, 0x10, 0x4B }, + { 0xC3, 0xCF, 0x54, 0x16, 0xA5, 0x31, 0xAF, 0x4B, 0xFA, 0xE8, 0x9C, 0x45, 0x14, 0x3F, 0x20, 0xCC, + 0x1B, 0x3E, 0x18, 0x1D, 0x29, 0xC2, 0xD0, 0xE8, 0xFF, 0x7D, 0x3F, 0x2A, 0x66, 0xB1, 0x82, 0xFE }, }, { - { 0xED, 0x6D, 0xDA, 0xE4, 0xF4, 0xAF, 0xCE, 0x6B, 0xAF, 0x3A, 0x63, 0x7D, 0x89, 0x0A, 0x0D, 0x65, - 0x75, 0x3E, 0x45, 0x97, 0x14, 0x5A, 0xF8, 0x97, 0x53, 0x9B, 0xF9, 0xF7, 0xD3, 0x42, 0xA1, 0xD1 }, + { 0xC4, 0x98, 0xA1, 0xB6, 0x9F, 0x54, 0x40, 0x86, 0x17, 0x47, 0x47, 0x71, 0x5A, 0x27, 0x4D, 0x3F, + 0xB5, 0x90, 0x19, 0xBE, 0x09, 0x21, 0x31, 0xBC, 0xFA, 0xA8, 0x3A, 0x39, 0x5F, 0x7E, 0x57, 0x3C }, }, { - { 0xED, 0xC1, 0xBF, 0x3E, 0xFB, 0xF7, 0xE1, 0xD9, 0x5E, 0x19, 0xC5, 0x5E, 0xCA, 0xE7, 0x7E, 0x83, - 0x69, 0x46, 0xAB, 0x0A, 0x26, 0xA7, 0x8E, 0x32, 0xA4, 0x72, 0xC9, 0xD3, 0x6C, 0x69, 0xCE, 0xCD }, + { 0xC4, 0xE2, 0x8D, 0xD8, 0x3F, 0xE3, 0x0C, 0x96, 0x33, 0x8C, 0xEF, 0x77, 0x73, 0xC6, 0xDF, 0xCA, + 0x6C, 0xE4, 0xFA, 0x96, 0x41, 0xBE, 0xAB, 0x38, 0x05, 0xA8, 0xEF, 0xB6, 0xCD, 0xC3, 0xCF, 0x0A }, }, { - { 0xED, 0xF4, 0xDF, 0x97, 0x2C, 0xAD, 0x6C, 0x47, 0x0B, 0xAB, 0x5D, 0x66, 0x42, 0xF6, 0x60, 0xB8, - 0x42, 0xD6, 0xC9, 0x73, 0x07, 0x44, 0x93, 0xE4, 0xEF, 0x1B, 0xBF, 0x31, 0x1A, 0x92, 0x79, 0x95 }, + { 0xC5, 0x00, 0xB8, 0x3F, 0x3E, 0x06, 0x6C, 0xD1, 0xDD, 0x0E, 0xBC, 0xD7, 0x3D, 0xD4, 0x01, 0x61, + 0xB9, 0x25, 0x9A, 0xA7, 0x7A, 0xB8, 0xA6, 0x47, 0xE8, 0x57, 0x1F, 0xF3, 0x37, 0xCF, 0x94, 0x6D }, }, { - { 0xEE, 0x0C, 0xF6, 0x2B, 0x9D, 0x8E, 0x42, 0xA2, 0x23, 0xB9, 0xA9, 0x60, 0xB5, 0xE9, 0x67, 0x0C, - 0xCC, 0x34, 0x6D, 0x89, 0x93, 0x8F, 0xFA, 0x5D, 0xF7, 0x98, 0x65, 0xE4, 0x13, 0xD6, 0x31, 0x54 }, + { 0xC5, 0x29, 0x5B, 0xA6, 0xE2, 0x7E, 0x72, 0x10, 0x22, 0xFE, 0xB2, 0x1E, 0x78, 0xEB, 0x7B, 0x03, + 0x57, 0xC9, 0xCD, 0x56, 0x5B, 0xD0, 0xE5, 0x96, 0x72, 0xF6, 0x66, 0x34, 0x2B, 0x79, 0x94, 0x9D }, }, { - { 0xEE, 0x1A, 0x2F, 0xA9, 0x58, 0x37, 0x5E, 0x11, 0x06, 0xE2, 0xC9, 0x05, 0xED, 0x8A, 0x26, 0x4F, - 0x28, 0x19, 0xCB, 0xB5, 0x26, 0x11, 0x8D, 0x30, 0x68, 0x9D, 0x17, 0x90, 0x42, 0x9A, 0x46, 0xA1 }, + { 0xC6, 0x12, 0x75, 0x6B, 0xA5, 0x42, 0x34, 0x4A, 0xDC, 0x1B, 0x80, 0xE9, 0x38, 0x84, 0x5A, 0x1E, + 0xD6, 0xE9, 0x38, 0xFE, 0xF4, 0x0D, 0x04, 0xEC, 0x86, 0x55, 0x8F, 0x4B, 0x21, 0x05, 0x2F, 0xD2 }, }, { - { 0xEE, 0x34, 0xE1, 0xA1, 0x9B, 0xC8, 0x89, 0xF8, 0x5F, 0x7F, 0x0F, 0x5B, 0xF8, 0x72, 0xB1, 0xAC, - 0x56, 0x5E, 0xC6, 0xF1, 0x9D, 0xB5, 0x17, 0xBA, 0x4E, 0xD7, 0x55, 0xC4, 0x18, 0x5F, 0x69, 0xE8 }, + { 0xC6, 0x17, 0xE0, 0x85, 0x5B, 0xF1, 0x4F, 0xBF, 0x21, 0xAF, 0x00, 0x82, 0x25, 0xCA, 0xBE, 0x40, + 0x4F, 0x73, 0x8C, 0x27, 0x8A, 0x4A, 0x42, 0x87, 0xF1, 0xEE, 0x38, 0x01, 0x27, 0xC5, 0x61, 0xFA }, }, { - { 0xEE, 0x35, 0x71, 0x37, 0x61, 0x52, 0x7A, 0xE4, 0x8E, 0x7E, 0x40, 0x94, 0xB2, 0xB9, 0x1D, 0x3D, - 0xD2, 0x64, 0x3F, 0x38, 0xE2, 0x6D, 0x34, 0x36, 0x36, 0x52, 0xFE, 0x5C, 0x2B, 0xBC, 0x41, 0x6B }, + { 0xC6, 0xA4, 0x24, 0xBF, 0x7C, 0xFE, 0x31, 0x72, 0x74, 0x7A, 0x47, 0x14, 0xA0, 0xEF, 0xB9, 0x17, + 0x93, 0x8C, 0x5E, 0xBD, 0x59, 0x12, 0x9D, 0xED, 0x7A, 0x81, 0x18, 0xC7, 0xF6, 0x59, 0xD1, 0x33 }, }, { - { 0xEE, 0x3D, 0x0B, 0xC5, 0xA6, 0x5A, 0xF5, 0x8D, 0x43, 0x2D, 0x08, 0x63, 0x7B, 0xE0, 0xB7, 0xBA, - 0x49, 0xC2, 0x32, 0x61, 0x8D, 0xA9, 0xC8, 0x97, 0x3F, 0x88, 0x56, 0x8C, 0x88, 0x89, 0xD1, 0xAD }, + { 0xC6, 0xAD, 0x1D, 0x7A, 0x14, 0x1A, 0x91, 0x75, 0x2D, 0x31, 0xFB, 0xC1, 0x06, 0x16, 0xBF, 0x1C, + 0xA2, 0xFB, 0x5B, 0x02, 0xE8, 0x46, 0xB5, 0x9E, 0x63, 0x34, 0x6B, 0x31, 0x92, 0xA7, 0x52, 0x92 }, }, { - { 0xEE, 0xE4, 0x9F, 0xCF, 0x29, 0x63, 0x9E, 0xD8, 0x82, 0xE0, 0x1A, 0xD1, 0xF0, 0xF5, 0xA1, 0xC5, - 0x55, 0x09, 0x26, 0xAF, 0xD4, 0x23, 0x4E, 0xF1, 0x46, 0xBC, 0x47, 0x09, 0xFE, 0x5D, 0x90, 0xE8 }, + { 0xC7, 0x01, 0x83, 0x64, 0x38, 0xF3, 0x7B, 0xEA, 0x8A, 0x88, 0x16, 0x10, 0x63, 0x70, 0x86, 0xF8, + 0x8D, 0x9A, 0x11, 0x5E, 0x00, 0x92, 0x46, 0xD2, 0x7F, 0x48, 0x9F, 0xA7, 0x18, 0x51, 0x88, 0xA8 }, }, { - { 0xEF, 0x36, 0xA2, 0x29, 0x89, 0x65, 0xE4, 0x98, 0x84, 0x59, 0xB9, 0x21, 0x6A, 0xB3, 0x3C, 0x3C, - 0xA8, 0x42, 0xD2, 0x16, 0x83, 0xB6, 0x2A, 0x2B, 0xF1, 0x53, 0x0D, 0x30, 0xB0, 0xAE, 0x78, 0x25 }, + { 0xC7, 0xFF, 0x8E, 0xFD, 0xEC, 0xDF, 0x00, 0xD1, 0xFC, 0x8D, 0x55, 0x2D, 0x2A, 0x70, 0x70, 0xE5, + 0xE3, 0x3D, 0x42, 0xE5, 0x90, 0xF5, 0x86, 0xC6, 0xAE, 0xDE, 0x03, 0x2B, 0x2D, 0x86, 0x7B, 0xD5 }, }, { - { 0xEF, 0x6D, 0xE0, 0xC4, 0x85, 0x70, 0xBD, 0x71, 0x51, 0x6B, 0xF6, 0x39, 0x5D, 0xBD, 0x29, 0x33, - 0x7C, 0xFC, 0xB7, 0xD4, 0x26, 0x64, 0x10, 0xA1, 0xF5, 0xDA, 0x08, 0x08, 0xE0, 0x96, 0xF4, 0x55 }, + { 0xC7, 0xFF, 0xB4, 0x9F, 0xBC, 0x94, 0x72, 0x24, 0x5C, 0x8E, 0x95, 0xDE, 0x62, 0x9A, 0xF5, 0xC1, + 0xBF, 0xEA, 0xC5, 0x50, 0x04, 0xC1, 0x54, 0x82, 0x3A, 0x58, 0xBA, 0xE8, 0x05, 0x6E, 0x3C, 0x64 }, }, { - { 0xEF, 0x7E, 0x8C, 0xCD, 0x7B, 0xCF, 0xB7, 0x1D, 0x2A, 0xA7, 0xBC, 0xDD, 0x8F, 0xD2, 0xD2, 0xD1, - 0x55, 0x77, 0x9D, 0xE8, 0x68, 0x43, 0x20, 0x44, 0x35, 0x1E, 0x98, 0x02, 0xCC, 0xA2, 0x90, 0xAF }, + { 0xC8, 0x37, 0xD6, 0xF2, 0xAB, 0x14, 0x79, 0x91, 0x42, 0xED, 0x3C, 0x79, 0xBE, 0xD9, 0x44, 0x1E, + 0x92, 0x50, 0xBD, 0x05, 0x20, 0x25, 0xAD, 0x8A, 0xF4, 0x40, 0x41, 0xAC, 0x19, 0xEF, 0xBB, 0x4C }, }, { - { 0xEF, 0xAF, 0xCA, 0x84, 0x90, 0x30, 0x7B, 0x0F, 0x62, 0x2B, 0xF4, 0x3A, 0x0E, 0xB3, 0xC5, 0x1A, - 0xCB, 0xDD, 0xDE, 0xDC, 0x23, 0x92, 0xF1, 0x61, 0xAC, 0xED, 0x16, 0x71, 0xA6, 0x53, 0x60, 0x7E }, + { 0xC9, 0x43, 0x10, 0x03, 0xBB, 0xEA, 0xB5, 0x8E, 0x35, 0x2F, 0xDE, 0xB4, 0x5B, 0x7F, 0xCF, 0x15, + 0xC7, 0x3F, 0x07, 0x34, 0xA0, 0x7D, 0x6C, 0xBD, 0xF6, 0x32, 0x92, 0x92, 0xEB, 0x81, 0x2C, 0x93 }, }, { - { 0xEF, 0xB5, 0xBE, 0x9F, 0xA2, 0xC6, 0xEE, 0x48, 0x9F, 0x9E, 0xB3, 0xDD, 0x55, 0x42, 0xA7, 0x0C, - 0x22, 0x57, 0xB5, 0x6B, 0x24, 0x0B, 0x3B, 0x4B, 0x29, 0xF3, 0xB4, 0xE6, 0xBA, 0x8A, 0xED, 0xE3 }, + { 0xC9, 0x72, 0xF4, 0xF9, 0x6E, 0x71, 0x33, 0xE1, 0x6E, 0x55, 0x57, 0xA0, 0x57, 0xB1, 0xD4, 0x2B, + 0xA9, 0x2D, 0x98, 0x5C, 0xAE, 0xE7, 0x3C, 0xAF, 0xDA, 0xEB, 0x55, 0xEC, 0xA2, 0xE4, 0xAB, 0xB0 }, }, { - { 0xEF, 0xC1, 0x72, 0xEE, 0xAB, 0xE2, 0xAE, 0x26, 0xBC, 0xBF, 0x0E, 0xDD, 0x22, 0x19, 0xE6, 0x62, - 0xE4, 0x63, 0xF9, 0x58, 0x03, 0x40, 0xF3, 0x47, 0x3D, 0xAD, 0x35, 0xE7, 0x50, 0xB0, 0x70, 0x68 }, + { 0xC9, 0x78, 0x37, 0x2C, 0x9E, 0x11, 0x60, 0x71, 0xB6, 0x1B, 0x90, 0x92, 0xA9, 0xAA, 0x96, 0x81, + 0x62, 0x36, 0x55, 0xA6, 0x6F, 0x4F, 0xCB, 0xC4, 0xD3, 0xA6, 0x7E, 0xFD, 0x56, 0x72, 0x48, 0x30 }, }, { - { 0xEF, 0xCE, 0x18, 0x13, 0x67, 0x41, 0x03, 0xC4, 0x43, 0xAF, 0x12, 0x8F, 0x84, 0x81, 0x8E, 0x33, - 0x85, 0x3E, 0x3B, 0x69, 0x03, 0x55, 0x35, 0x36, 0x57, 0x98, 0xEA, 0xF7, 0x5F, 0x7E, 0xAF, 0x79 }, + { 0xCA, 0x55, 0x6F, 0x82, 0xC9, 0x68, 0x4C, 0x9A, 0xF3, 0x55, 0x7D, 0x3E, 0x2D, 0x88, 0xAF, 0x92, + 0xED, 0x25, 0x9C, 0x20, 0xFF, 0xD1, 0xDD, 0xE9, 0xF7, 0x9D, 0x6B, 0x92, 0xC6, 0x1E, 0xE1, 0xB9 }, }, { - { 0xEF, 0xD1, 0xE0, 0xE7, 0x3F, 0xA8, 0x71, 0x00, 0xB7, 0x6A, 0x93, 0x23, 0x49, 0xC4, 0x5D, 0x09, - 0xB2, 0x8B, 0x2D, 0x8A, 0x00, 0x17, 0x19, 0xA5, 0x8D, 0xFA, 0xCC, 0x74, 0x84, 0xC7, 0xCF, 0x42 }, + { 0xCA, 0xBE, 0x25, 0x56, 0xF1, 0xBB, 0x56, 0x57, 0x0C, 0xEF, 0x3A, 0x87, 0x03, 0x32, 0x71, 0xA1, + 0xF2, 0x1D, 0x09, 0xB7, 0xFD, 0x04, 0x12, 0x83, 0x18, 0xE5, 0xE7, 0xBC, 0xE3, 0xA2, 0x01, 0xE2 }, }, { - { 0xF0, 0x11, 0xAD, 0x9E, 0xDD, 0x4F, 0xE7, 0x18, 0x8D, 0x77, 0x2E, 0xBA, 0xFA, 0x5B, 0xF5, 0x32, - 0x92, 0x47, 0x77, 0x88, 0xDC, 0x12, 0x80, 0x32, 0x76, 0xB0, 0x00, 0xC4, 0x41, 0x91, 0x03, 0xF0 }, + { 0xCA, 0xDC, 0xD5, 0xAE, 0x1B, 0x75, 0x6A, 0xB7, 0x41, 0xB3, 0x56, 0x9C, 0x42, 0xA5, 0x41, 0x1F, + 0x09, 0x3E, 0x4E, 0x1F, 0x01, 0x2E, 0xC5, 0x79, 0x91, 0xCB, 0xD6, 0xDB, 0xE0, 0x8F, 0xAA, 0xC1 }, }, { - { 0xF0, 0x15, 0x95, 0xF5, 0xA4, 0x66, 0x88, 0x78, 0xF6, 0xC7, 0x98, 0xA5, 0xD2, 0xF1, 0x35, 0x23, - 0xF3, 0xAF, 0xB2, 0x0E, 0xF7, 0x6F, 0xE5, 0x77, 0x6F, 0xCE, 0x47, 0xD3, 0x40, 0x9D, 0xF3, 0xC2 }, + { 0xCB, 0x7A, 0x43, 0x8D, 0x16, 0xE4, 0xA5, 0xF3, 0xC5, 0x6F, 0xDF, 0x19, 0x1E, 0x1D, 0xAF, 0x9F, + 0x32, 0x5C, 0x65, 0x0B, 0xD6, 0x2F, 0x07, 0xC4, 0x67, 0x71, 0x72, 0x07, 0x35, 0x1A, 0xE3, 0x29 }, }, { - { 0xF0, 0x2F, 0x9D, 0xA4, 0x5D, 0x9E, 0xB9, 0x86, 0x19, 0x4E, 0x06, 0xF5, 0xE6, 0x18, 0x95, 0x45, - 0x12, 0xC9, 0x02, 0x6E, 0x7C, 0xA7, 0xB5, 0x1E, 0x66, 0x5D, 0xB6, 0xAD, 0xBA, 0xC1, 0xF6, 0x00 }, + { 0xCC, 0x2A, 0x70, 0x6F, 0xE6, 0x8F, 0x5D, 0x17, 0xF4, 0xAB, 0xAF, 0x60, 0x86, 0xE5, 0xBD, 0x97, + 0xAE, 0x35, 0xEB, 0x35, 0x9F, 0x75, 0xC0, 0x92, 0xBB, 0xA4, 0x93, 0xFE, 0x11, 0xF2, 0x69, 0xFD }, }, { - { 0xF0, 0x6B, 0x35, 0x95, 0x36, 0xD1, 0x34, 0x32, 0x8B, 0x36, 0x00, 0x4D, 0xA9, 0xA9, 0x19, 0x0C, - 0x3A, 0x76, 0x69, 0xE8, 0x27, 0x8D, 0xB9, 0xF7, 0x58, 0x57, 0xC4, 0x8D, 0x64, 0x4B, 0xE2, 0x03 }, + { 0xCC, 0x30, 0xD8, 0x19, 0xDE, 0x54, 0x05, 0xF6, 0x49, 0xC8, 0xB7, 0xA8, 0x14, 0x8F, 0x26, 0xD7, + 0x71, 0x08, 0x3E, 0xC5, 0x18, 0xF9, 0xB6, 0x6F, 0xF5, 0x47, 0xF2, 0x82, 0x2D, 0x11, 0x93, 0x6D }, }, { - { 0xF0, 0xCF, 0xC7, 0x79, 0x13, 0x39, 0x7D, 0xE2, 0x38, 0xED, 0xB5, 0x9F, 0x0F, 0x99, 0x23, 0xC6, - 0xD4, 0x11, 0x0A, 0x4B, 0x3A, 0xC8, 0xAC, 0x76, 0x55, 0x6A, 0x0C, 0x92, 0x44, 0xF0, 0x3F, 0xC1 }, + { 0xCC, 0x65, 0xCD, 0xC5, 0x33, 0x62, 0xD4, 0x21, 0x62, 0x7E, 0xAE, 0xF5, 0xD0, 0xC8, 0xE4, 0xC4, + 0xE2, 0x40, 0xAD, 0xE0, 0xC9, 0xD4, 0x20, 0xBE, 0x67, 0x1E, 0x70, 0xF0, 0xFB, 0xAC, 0x8D, 0x0A }, }, { - { 0xF1, 0x13, 0x93, 0xAF, 0xAA, 0xCB, 0x50, 0x3A, 0xE4, 0xAC, 0xCC, 0x3E, 0xDF, 0xC5, 0x8F, 0x9A, - 0xD8, 0xA9, 0x6A, 0x01, 0x2E, 0x3A, 0xC3, 0x8E, 0xCB, 0xAA, 0x28, 0x62, 0xB8, 0x05, 0x69, 0x8B }, + { 0xCD, 0xB1, 0x62, 0x53, 0xD2, 0x2E, 0xD5, 0xD4, 0x26, 0xCF, 0xA1, 0xB0, 0x5C, 0xEC, 0xD8, 0x6E, + 0xF1, 0xB7, 0xDE, 0xAA, 0x07, 0xC5, 0x70, 0x5E, 0xBB, 0xAF, 0x7D, 0x9A, 0x80, 0x7D, 0x56, 0x16 }, }, { - { 0xF1, 0x46, 0x85, 0xC4, 0xC1, 0x0C, 0x79, 0xFC, 0x97, 0xE1, 0x84, 0xEA, 0x7D, 0x22, 0xF8, 0xEE, - 0x4A, 0x81, 0xD0, 0x56, 0x95, 0xAB, 0x08, 0xD2, 0x5D, 0x4A, 0x73, 0x3B, 0x60, 0xB4, 0x70, 0xDF }, + { 0xCD, 0xC0, 0x39, 0xF3, 0xA2, 0xD1, 0xBB, 0xA5, 0xE8, 0x09, 0x4E, 0x55, 0x23, 0xCF, 0x60, 0x47, + 0x09, 0x7D, 0x4B, 0x3C, 0xD4, 0xEC, 0x4E, 0xD6, 0xAA, 0x8E, 0xB7, 0xB4, 0xD8, 0xB5, 0x77, 0x7D }, }, { - { 0xF1, 0x4B, 0xF7, 0x41, 0x19, 0x15, 0xEF, 0x83, 0x96, 0xCC, 0x04, 0x0A, 0x6F, 0x30, 0x12, 0xBD, - 0x81, 0x8C, 0x11, 0x9D, 0x03, 0x98, 0xCE, 0xD6, 0x1D, 0x80, 0x9E, 0xF9, 0x4B, 0xD8, 0x62, 0xD8 }, + { 0xCD, 0xC4, 0xEA, 0x92, 0x02, 0xE3, 0x3E, 0xDD, 0x0F, 0x2D, 0x3A, 0xE8, 0x6A, 0xCA, 0xC7, 0xFB, + 0x25, 0x35, 0x4B, 0x02, 0x23, 0x5B, 0x09, 0x33, 0xAA, 0x81, 0xA3, 0x13, 0xB5, 0xFD, 0xFE, 0xEC }, }, { - { 0xF1, 0x9A, 0xE4, 0x7D, 0x93, 0x67, 0x16, 0x52, 0x78, 0xE1, 0x66, 0xED, 0x44, 0xFF, 0xC3, 0x7E, - 0x5B, 0x28, 0x19, 0x6C, 0x01, 0x4B, 0xF1, 0x18, 0xCF, 0xC6, 0x4E, 0xD5, 0xFA, 0x18, 0x19, 0x4D }, + { 0xCE, 0x4C, 0x2F, 0x8F, 0x16, 0x46, 0x8A, 0x58, 0x88, 0xE9, 0x0F, 0x73, 0x4E, 0x4D, 0x22, 0x02, + 0xDF, 0xAD, 0xBF, 0xA6, 0x6F, 0x5B, 0x35, 0x75, 0x2B, 0xAA, 0x76, 0x21, 0xA7, 0x60, 0xB0, 0x88 }, }, { - { 0xF1, 0xB5, 0xF4, 0xB2, 0x1E, 0xA3, 0x2D, 0x06, 0x26, 0xAA, 0x5A, 0x6B, 0xF5, 0xC4, 0xDE, 0x59, - 0x1C, 0xF1, 0x65, 0x0F, 0xA8, 0x22, 0xF1, 0x34, 0xD9, 0x2D, 0x54, 0x8F, 0x15, 0x77, 0x73, 0xD6 }, + { 0xCE, 0x81, 0x44, 0x58, 0x54, 0x03, 0x1F, 0x3D, 0x0F, 0x5C, 0x88, 0x75, 0x46, 0x4D, 0xCD, 0x5B, + 0xA6, 0xC8, 0x90, 0xF4, 0x49, 0xB3, 0x20, 0x7B, 0xCA, 0x2B, 0xC9, 0x61, 0x82, 0x2D, 0x27, 0xC4 }, }, { - { 0xF2, 0x06, 0x59, 0x72, 0x49, 0x8D, 0x5E, 0x12, 0x79, 0x8E, 0x1E, 0x1F, 0xF3, 0xE1, 0x1D, 0xE4, - 0x23, 0x3A, 0xBB, 0xBD, 0x30, 0x8A, 0x58, 0x07, 0x60, 0x58, 0x48, 0x18, 0x6E, 0x44, 0x11, 0x7F }, + { 0xCF, 0xA0, 0xC0, 0x0C, 0xB2, 0xFB, 0x4B, 0x85, 0x7A, 0xAD, 0x22, 0xB1, 0x3A, 0x90, 0xE3, 0x46, + 0xA0, 0x3E, 0x6B, 0x79, 0xAB, 0xD5, 0xD2, 0x75, 0xB5, 0x43, 0x24, 0x68, 0x17, 0x92, 0xD6, 0xD1 }, }, { - { 0xF2, 0x54, 0x76, 0xF3, 0xAB, 0x8E, 0x5E, 0x0B, 0x9B, 0xB6, 0x1D, 0x4C, 0xE4, 0x50, 0x7F, 0xA3, - 0x52, 0x93, 0xC6, 0x64, 0x15, 0xD7, 0xD1, 0x91, 0x9B, 0x29, 0xBB, 0x8C, 0xBF, 0xFD, 0xA5, 0x00 }, + { 0xD0, 0xF5, 0x93, 0xC1, 0xA8, 0x1B, 0x1E, 0xF8, 0x51, 0x69, 0x81, 0xEE, 0x56, 0xF1, 0xD5, 0x98, + 0xA2, 0xA6, 0x03, 0x48, 0x8C, 0x67, 0x8C, 0x1B, 0x7B, 0xBE, 0xA6, 0x44, 0x6B, 0x00, 0x83, 0xAD }, }, { - { 0xF2, 0x6F, 0x08, 0x73, 0x87, 0xBC, 0x9B, 0x62, 0xF5, 0x38, 0xB0, 0x76, 0xD6, 0xBD, 0xFD, 0x15, - 0x87, 0x36, 0xDE, 0x71, 0x61, 0xC6, 0xBC, 0xA3, 0x86, 0xF5, 0x7D, 0xD2, 0xB0, 0x0B, 0x8F, 0xE0 }, + { 0xD2, 0x90, 0x3C, 0xA2, 0x55, 0x17, 0x27, 0xED, 0x01, 0x71, 0xCC, 0x4A, 0x43, 0xB3, 0xCA, 0xE0, + 0x09, 0xB7, 0x47, 0xB9, 0xF4, 0xF8, 0x48, 0x72, 0x92, 0x27, 0xBF, 0x59, 0x02, 0xF2, 0x3E, 0x47 }, }, { - { 0xF2, 0xB1, 0x95, 0x84, 0x6E, 0xE2, 0xB9, 0xAB, 0x5F, 0x18, 0xE6, 0x80, 0x21, 0xF8, 0xDF, 0x7C, - 0x0B, 0x60, 0x58, 0xDE, 0xDE, 0x86, 0xC5, 0xD5, 0x90, 0xF2, 0xE8, 0x64, 0x3A, 0xFE, 0x04, 0x52 }, + { 0xD2, 0xE8, 0xA1, 0x23, 0x7A, 0x93, 0xF5, 0x78, 0xD1, 0xBA, 0x8F, 0x09, 0xE4, 0xFF, 0x10, 0x7B, + 0x62, 0x35, 0x78, 0x85, 0x42, 0xAA, 0x61, 0x83, 0xD1, 0x76, 0xDB, 0xF1, 0xC8, 0x8D, 0xCF, 0xB6 }, }, { - { 0xF2, 0xE3, 0x0F, 0xB6, 0xCD, 0x91, 0x67, 0x54, 0x84, 0x72, 0xCC, 0xDF, 0x58, 0x9F, 0x3D, 0x00, - 0x43, 0x0C, 0x22, 0xB8, 0x33, 0x44, 0xA1, 0x16, 0x5B, 0x64, 0xE6, 0x87, 0x4D, 0xF3, 0x5E, 0xDC }, + { 0xD5, 0x04, 0x88, 0x96, 0x86, 0x07, 0x29, 0xA8, 0xFA, 0x5D, 0x23, 0x57, 0x81, 0x2B, 0xA5, 0x6C, + 0xBE, 0x84, 0xC9, 0xAB, 0x7D, 0x14, 0xDF, 0x47, 0x64, 0xE0, 0xB6, 0x62, 0x0F, 0xA3, 0x20, 0x10 }, }, { - { 0xF2, 0xE5, 0x30, 0x0C, 0x39, 0xF2, 0x86, 0xC6, 0x78, 0x99, 0x90, 0x9C, 0x7C, 0xE7, 0x35, 0x9B, - 0x09, 0x45, 0xD2, 0xAF, 0xD3, 0x4A, 0x6D, 0xD6, 0x9E, 0x08, 0xCD, 0xA5, 0x44, 0xC8, 0x7B, 0x3A }, + { 0xD5, 0x41, 0xA7, 0x7E, 0x13, 0x6E, 0x9E, 0x70, 0x3B, 0xB9, 0x9F, 0x80, 0x68, 0xCF, 0xEE, 0x86, + 0xA4, 0xB9, 0xF0, 0x89, 0xE0, 0x2D, 0x0C, 0x6C, 0xB6, 0xD4, 0xA3, 0x94, 0x6C, 0x6B, 0x16, 0x7A }, }, { - { 0xF3, 0x0C, 0x0A, 0xED, 0x70, 0x6D, 0x22, 0x55, 0x5F, 0x07, 0x09, 0x6A, 0xF4, 0xB8, 0xBE, 0xDC, - 0x16, 0x3C, 0x0F, 0x6E, 0xD5, 0x34, 0x6E, 0xFC, 0x28, 0xE8, 0xCF, 0xAF, 0x84, 0x2F, 0xA5, 0xD9 }, + { 0xD5, 0x83, 0x94, 0x96, 0xCD, 0xC8, 0x5B, 0xE3, 0xD1, 0xF1, 0xAC, 0x65, 0x2E, 0xFA, 0x92, 0xBE, + 0xA3, 0xB0, 0x61, 0xC1, 0x3D, 0xAD, 0x5A, 0x82, 0x11, 0x22, 0xCF, 0xE9, 0xC7, 0x1A, 0x5A, 0x32 }, }, { - { 0xF3, 0x25, 0x58, 0x52, 0x53, 0xD2, 0x8E, 0x72, 0x02, 0x3F, 0x04, 0xDA, 0x0A, 0x2C, 0xB5, 0x0F, - 0xBD, 0x4B, 0x75, 0xC2, 0x5A, 0x3A, 0x80, 0x25, 0x3F, 0x70, 0x36, 0xCE, 0x71, 0x74, 0x1B, 0x9B }, + { 0xD5, 0xA4, 0xEE, 0x46, 0x95, 0xB5, 0x65, 0xA6, 0x7E, 0x50, 0x48, 0x66, 0xFE, 0x5B, 0xA3, 0xC0, + 0xED, 0xCA, 0xEE, 0xD5, 0x2A, 0xD0, 0xAF, 0x07, 0xE6, 0x79, 0x17, 0x73, 0x85, 0x12, 0xC8, 0xF5 }, }, { - { 0xF3, 0x48, 0x7E, 0x13, 0xEA, 0xB9, 0x5D, 0xA9, 0xAF, 0xED, 0xE0, 0x74, 0x84, 0x4B, 0xDE, 0x4C, - 0xA0, 0x31, 0x48, 0x26, 0xCC, 0xBD, 0x06, 0x96, 0x29, 0x8C, 0x35, 0x32, 0x4A, 0x91, 0xCB, 0xEB }, + { 0xD6, 0x25, 0xC0, 0x59, 0x2B, 0x25, 0xDC, 0x03, 0xAA, 0x7E, 0x87, 0x8E, 0x6A, 0x85, 0x09, 0x1B, + 0xAA, 0x07, 0x8D, 0x26, 0x8B, 0xBD, 0xB4, 0x9F, 0x09, 0x67, 0x94, 0x08, 0x61, 0x2D, 0x1E, 0xFE }, }, { - { 0xF3, 0x5F, 0xE6, 0x61, 0xD1, 0x88, 0x65, 0x29, 0x35, 0xE2, 0xC0, 0xE5, 0x19, 0x11, 0x8F, 0x7C, - 0x4E, 0x45, 0x7B, 0x0C, 0x65, 0xC8, 0xE1, 0x4B, 0xCE, 0xDC, 0x7D, 0x4C, 0xC5, 0x1E, 0x81, 0xD0 }, + { 0xD6, 0xD1, 0xB3, 0x5C, 0xBC, 0x12, 0xFB, 0x1C, 0x70, 0xA0, 0xB4, 0x3B, 0xA5, 0x9A, 0xB3, 0xD3, + 0x22, 0x5F, 0x37, 0x32, 0x64, 0xDD, 0x87, 0xFB, 0xCA, 0x00, 0x61, 0xEC, 0x1C, 0x4D, 0xA1, 0x1A }, }, { - { 0xF3, 0xCB, 0x8E, 0xA4, 0xE8, 0xF2, 0xA7, 0x00, 0x9C, 0x23, 0x3A, 0x64, 0x88, 0x71, 0xDB, 0x46, - 0x04, 0xD5, 0x45, 0x4B, 0xC5, 0x55, 0x9E, 0x9B, 0xF1, 0xBB, 0x2E, 0xB0, 0x00, 0x99, 0x3B, 0xDF }, + { 0xD7, 0x32, 0x49, 0x74, 0xB5, 0x60, 0x09, 0x62, 0x17, 0x61, 0xF7, 0xC0, 0xFF, 0x68, 0x9D, 0xDE, + 0x47, 0x74, 0x99, 0x85, 0xE1, 0xEE, 0x8B, 0x5C, 0x89, 0x61, 0xDD, 0x8F, 0x6A, 0x78, 0xBB, 0xF5 }, }, { - { 0xF4, 0x0C, 0x5A, 0x4F, 0xE5, 0xA7, 0x08, 0x81, 0x08, 0x7E, 0x61, 0x6A, 0xAD, 0x68, 0x23, 0x09, - 0x21, 0xDA, 0xF0, 0x31, 0x01, 0xEB, 0x91, 0x2F, 0x13, 0x3A, 0x8B, 0xD1, 0xC5, 0xCF, 0x0A, 0xD0 }, + { 0xD9, 0x2E, 0x3E, 0xE3, 0x82, 0xC8, 0xDC, 0xAF, 0xA0, 0x39, 0x3D, 0x9F, 0x9A, 0x00, 0xBF, 0x4C, + 0xD9, 0xD5, 0x64, 0x26, 0x2B, 0x18, 0x0F, 0x68, 0x16, 0x0B, 0x20, 0x34, 0xC5, 0x44, 0xD1, 0x0A }, }, { - { 0xF4, 0x2A, 0x12, 0xA1, 0x43, 0x57, 0xC0, 0xCF, 0x12, 0x2B, 0xBD, 0x82, 0x77, 0x69, 0xFB, 0x56, - 0xDB, 0xF5, 0xB6, 0xEE, 0x89, 0x4F, 0x02, 0x5B, 0x9A, 0xDE, 0x25, 0x88, 0xA9, 0xB5, 0x5D, 0x9B }, + { 0xD9, 0x65, 0xF7, 0x41, 0x62, 0x04, 0xDA, 0x83, 0x1A, 0xF6, 0x6B, 0xFA, 0x8F, 0x90, 0xD1, 0x41, + 0xE9, 0x93, 0xF0, 0x00, 0x21, 0x33, 0xF2, 0x8D, 0xE9, 0x7F, 0x56, 0x4A, 0x1D, 0x60, 0x4E, 0xCC }, }, { - { 0xF4, 0x83, 0x3E, 0x73, 0x82, 0x42, 0x02, 0x18, 0xFF, 0xA7, 0x8D, 0xFA, 0x23, 0x50, 0x0E, 0x7D, - 0x34, 0x8F, 0x80, 0xFB, 0x87, 0xE9, 0x82, 0x48, 0x61, 0x3B, 0x59, 0x24, 0x2D, 0x99, 0x1A, 0x78 }, + { 0xD9, 0x7F, 0x55, 0xB9, 0x57, 0x9B, 0x05, 0xAE, 0x4A, 0x3E, 0xD7, 0xFC, 0x55, 0x8C, 0x58, 0x45, + 0x64, 0x51, 0x60, 0xDA, 0xB3, 0x53, 0x85, 0xC1, 0x38, 0xBC, 0x89, 0x9C, 0x4D, 0xAD, 0x8B, 0x36 }, }, { - { 0xF4, 0x91, 0x32, 0x07, 0xAD, 0xC7, 0x68, 0xEC, 0x7C, 0xA6, 0xB1, 0xFE, 0x03, 0xEF, 0x9C, 0xF1, - 0x0B, 0x7D, 0xB6, 0x01, 0xD7, 0xF6, 0x6C, 0x10, 0x2C, 0x84, 0xE4, 0x70, 0x92, 0x9E, 0xE4, 0xA1 }, + { 0xDA, 0xDF, 0x97, 0x13, 0x34, 0x14, 0xAD, 0x51, 0x3F, 0xC7, 0x50, 0x14, 0xE9, 0x56, 0x65, 0xDA, + 0xD7, 0x76, 0xB1, 0x50, 0x4B, 0x15, 0x67, 0x43, 0x4F, 0xD8, 0x2A, 0x79, 0xA2, 0x20, 0xE9, 0xA1 }, }, { - { 0xF4, 0xCC, 0xA7, 0x7F, 0x70, 0x42, 0xD6, 0x78, 0x8A, 0x04, 0x5E, 0xAD, 0x54, 0x95, 0x1A, 0x25, - 0x4A, 0x26, 0x9E, 0xD9, 0x85, 0x4A, 0x62, 0x06, 0xB4, 0xAA, 0x5B, 0xE9, 0x9F, 0xC7, 0xD9, 0xAC }, + { 0xDE, 0xCD, 0xB9, 0xFC, 0x1D, 0xDE, 0xC9, 0x7E, 0x09, 0xC3, 0x02, 0x6A, 0xCE, 0xB7, 0x6B, 0xDA, + 0xE9, 0xDE, 0xB6, 0x62, 0x75, 0x1D, 0xDA, 0x34, 0x9D, 0x2F, 0xA6, 0xBD, 0x75, 0xCA, 0x59, 0x14 }, }, { - { 0xF4, 0xD1, 0xD1, 0x3C, 0xFD, 0x04, 0x31, 0x16, 0x09, 0x38, 0xE8, 0xE9, 0xB2, 0xE3, 0x80, 0x61, - 0x97, 0xCA, 0x7F, 0xFD, 0xEC, 0x7A, 0xAD, 0xFE, 0xAF, 0xFB, 0x4D, 0xA4, 0x72, 0x92, 0x4E, 0xDF }, + { 0xDE, 0xD1, 0x9A, 0xD5, 0xDE, 0x99, 0x65, 0xD9, 0x22, 0x5C, 0x1B, 0xBA, 0x5F, 0xB4, 0xD8, 0x90, + 0xC8, 0xE5, 0xC0, 0x35, 0xE4, 0x85, 0x27, 0x52, 0xB6, 0x69, 0xB0, 0x40, 0x0F, 0x24, 0xF1, 0x74 }, }, { - { 0xF5, 0x12, 0x02, 0xF2, 0xDD, 0x4C, 0x4A, 0xD1, 0x04, 0x3A, 0xF5, 0xA3, 0x75, 0xAD, 0xD0, 0x69, - 0xE7, 0x4B, 0x4C, 0x3E, 0xFA, 0xB5, 0xE0, 0xF6, 0xDD, 0xA9, 0x20, 0xD2, 0x3D, 0xB7, 0xCC, 0x73 }, + { 0xDF, 0x30, 0xBF, 0x8D, 0x1B, 0xF9, 0x37, 0x8E, 0x43, 0x3E, 0xF9, 0xE1, 0xB3, 0xA2, 0x28, 0xA0, + 0x7E, 0x36, 0x58, 0xA5, 0xBC, 0x43, 0x88, 0x23, 0x45, 0x4D, 0xB0, 0x6A, 0x67, 0x94, 0x4C, 0x6E }, }, { - { 0xF5, 0x82, 0xF1, 0x66, 0xB8, 0x2B, 0xED, 0x47, 0xEF, 0xE3, 0x66, 0x1A, 0xA8, 0x02, 0x32, 0xFA, - 0x81, 0x67, 0xD2, 0xE8, 0x97, 0x96, 0xA3, 0x66, 0xEA, 0x35, 0xAD, 0x40, 0xA1, 0xBA, 0x2F, 0x66 }, + { 0xDF, 0x69, 0xF9, 0x6A, 0x85, 0x67, 0x8F, 0x6C, 0xAF, 0x3F, 0xDE, 0x25, 0xEC, 0xFB, 0x5D, 0xF4, + 0x74, 0x70, 0x87, 0xC2, 0xAF, 0x3B, 0x00, 0x65, 0xFB, 0x15, 0x10, 0x55, 0xCB, 0xCB, 0xA8, 0xC1 }, }, { - { 0xF5, 0x98, 0x77, 0xC3, 0xC9, 0x03, 0xF2, 0x02, 0xDD, 0xB7, 0x2C, 0xE9, 0x9B, 0x18, 0x02, 0x63, - 0x9A, 0xA6, 0x53, 0x9B, 0x08, 0x6E, 0xAA, 0x74, 0xCA, 0xAB, 0x16, 0xAB, 0x9B, 0xF3, 0x0D, 0x95 }, + { 0xE0, 0x0B, 0xD7, 0x86, 0xD1, 0xF2, 0xF4, 0x46, 0xC4, 0xBA, 0x83, 0x99, 0xD4, 0xD8, 0xD5, 0xA0, + 0xD1, 0x98, 0x57, 0x8F, 0x42, 0x99, 0xFD, 0xFD, 0xAF, 0xF7, 0x8C, 0x3F, 0x67, 0x71, 0xF3, 0x94 }, }, { - { 0xF5, 0xCA, 0x51, 0xE5, 0xB2, 0x72, 0xD3, 0x77, 0x52, 0x4A, 0x38, 0xD1, 0xA0, 0x3B, 0x51, 0x23, - 0x7C, 0xA0, 0x89, 0x47, 0x24, 0x19, 0xE5, 0x61, 0x9F, 0xFD, 0x71, 0x7A, 0x09, 0x8B, 0x5B, 0x42 }, + { 0xE0, 0x8B, 0x2C, 0xC2, 0x7A, 0xE8, 0xE2, 0xEF, 0x1A, 0x33, 0x01, 0x7A, 0x9A, 0xC2, 0x5D, 0xDA, + 0xFB, 0x5E, 0xA1, 0x12, 0xC9, 0x56, 0xB0, 0x02, 0xFE, 0x6C, 0x79, 0x80, 0x14, 0xAA, 0x90, 0x65 }, }, { - { 0xF5, 0xE1, 0xF7, 0xDA, 0x24, 0x9D, 0xB8, 0x7D, 0x6B, 0xB8, 0xF9, 0x6E, 0xE7, 0x3D, 0xD1, 0x31, - 0xBD, 0xDF, 0xAF, 0x62, 0xCC, 0x0B, 0x46, 0x5F, 0x3A, 0x47, 0x4F, 0x91, 0xD3, 0xE3, 0xB5, 0xEC }, + { 0xE1, 0xB2, 0xE8, 0x6B, 0x0D, 0xA8, 0x69, 0xE9, 0x25, 0x26, 0x6C, 0x1B, 0x56, 0x88, 0x34, 0x5A, + 0x17, 0xB0, 0xF6, 0xE2, 0xA2, 0x14, 0x94, 0x54, 0x7E, 0xAC, 0x09, 0x7C, 0x8B, 0xF5, 0x3C, 0x5A }, }, { - { 0xF6, 0x13, 0xD5, 0x90, 0x46, 0xD1, 0x66, 0x71, 0xD3, 0xC5, 0x60, 0x17, 0x6F, 0x3D, 0x77, 0xFD, - 0xC5, 0x1E, 0x5F, 0x57, 0xB5, 0xE4, 0x8A, 0xE7, 0xA4, 0xB9, 0x70, 0x0A, 0x11, 0xD4, 0x69, 0x3A }, + { 0xE1, 0xD6, 0x44, 0xA0, 0x96, 0xBD, 0x8A, 0x6C, 0xAC, 0xBB, 0xDA, 0x3E, 0x7F, 0xC3, 0x38, 0xEA, + 0xDD, 0xC1, 0x2F, 0x23, 0x6C, 0x72, 0x61, 0xE4, 0x5F, 0x8A, 0xD2, 0xD8, 0x42, 0x42, 0x4F, 0x72 }, }, { - { 0xF6, 0x1E, 0x88, 0xE4, 0x31, 0x76, 0x13, 0x50, 0x00, 0x62, 0x99, 0x19, 0xD9, 0x39, 0x82, 0xDB, - 0x67, 0xE9, 0xD1, 0x77, 0x4E, 0x7E, 0xD0, 0xB4, 0xFA, 0x03, 0x8E, 0x1B, 0x24, 0xEC, 0x0A, 0xCF }, + { 0xE2, 0x24, 0x10, 0xB5, 0xA6, 0x7F, 0xED, 0xC2, 0x64, 0x69, 0x4C, 0x44, 0x9D, 0x84, 0xFA, 0x1A, + 0x02, 0xBC, 0x8B, 0x21, 0x28, 0xC1, 0x25, 0x60, 0x71, 0x58, 0xC9, 0x1B, 0x05, 0x38, 0x6C, 0x6A }, }, { - { 0xF6, 0x41, 0xE7, 0xE0, 0x1B, 0xF4, 0xF2, 0xB0, 0xD0, 0xC4, 0x8B, 0xA6, 0x38, 0xA0, 0x2E, 0x26, - 0xBD, 0xDB, 0xD7, 0x7B, 0xC5, 0xE9, 0x72, 0x61, 0x94, 0xDB, 0x1A, 0xEA, 0x4F, 0x2F, 0xD7, 0x71 }, + { 0xE2, 0xA8, 0x47, 0xC3, 0xF0, 0x9B, 0xEB, 0x6F, 0x05, 0x68, 0x6F, 0x17, 0x79, 0x1B, 0x05, 0xF1, + 0xFE, 0x25, 0xF7, 0x71, 0x86, 0x9C, 0x42, 0x63, 0xA5, 0x5B, 0x94, 0x18, 0x77, 0xE4, 0x79, 0x04 }, }, { - { 0xF6, 0x54, 0x6B, 0x2F, 0xFE, 0x2B, 0xAE, 0xF7, 0x35, 0xE8, 0x25, 0x67, 0xA6, 0xE2, 0x36, 0x75, - 0x03, 0x94, 0xC1, 0x19, 0x14, 0x09, 0x87, 0x0C, 0x6F, 0xBE, 0x95, 0x2D, 0x08, 0xA3, 0x3A, 0xBA }, + { 0xE2, 0xF3, 0x9A, 0x9D, 0x48, 0xA3, 0x22, 0x10, 0x55, 0xB3, 0xC8, 0xA3, 0xEB, 0x14, 0x39, 0xD6, + 0xB8, 0x73, 0x01, 0x3E, 0xE4, 0xD0, 0x97, 0x12, 0x20, 0x64, 0xF2, 0x7E, 0xC0, 0x3D, 0xD4, 0xDA }, }, { - { 0xF6, 0x6E, 0xDF, 0xF6, 0xA3, 0x94, 0xC6, 0x6D, 0xF5, 0xBF, 0x9F, 0xE7, 0x84, 0xE6, 0x31, 0xF7, - 0x9A, 0xF3, 0x9C, 0xB1, 0x4F, 0x3A, 0xC5, 0x16, 0x11, 0xF6, 0xFE, 0x1D, 0x9D, 0x1E, 0x1C, 0xE9 }, + { 0xE2, 0xF5, 0xDE, 0x57, 0xCD, 0x67, 0x24, 0x9A, 0x7E, 0x1F, 0x45, 0x5B, 0x85, 0xC0, 0x6F, 0x0D, + 0x80, 0x9E, 0x75, 0xA5, 0x5C, 0x6B, 0x05, 0x48, 0x16, 0xE0, 0x19, 0x89, 0x9A, 0x3A, 0x02, 0xFF }, }, { - { 0xF6, 0x93, 0x79, 0x9B, 0xBD, 0xF1, 0xFF, 0x89, 0xBA, 0x48, 0xF2, 0xBF, 0xE2, 0x8F, 0x89, 0x36, - 0x6A, 0xC3, 0xB4, 0x13, 0x54, 0x7D, 0xB8, 0x06, 0x0D, 0xB5, 0x07, 0xAB, 0xC9, 0x42, 0x0B, 0xA8 }, + { 0xE6, 0x44, 0xD1, 0x1C, 0x37, 0x07, 0x0F, 0x89, 0x69, 0x33, 0x08, 0x17, 0x8D, 0x6B, 0xE4, 0x95, + 0x94, 0x96, 0x92, 0xC1, 0xFB, 0xEB, 0x30, 0xED, 0x32, 0x9B, 0x74, 0x02, 0x7F, 0xCF, 0xFD, 0x48 }, }, { - { 0xF6, 0x9D, 0x95, 0x42, 0xDB, 0x97, 0xEC, 0x65, 0xBF, 0xF8, 0x45, 0x23, 0x0A, 0xDC, 0x76, 0xB0, - 0x3C, 0x15, 0x91, 0x2F, 0x6F, 0x09, 0x97, 0x32, 0x9D, 0x5C, 0x2D, 0x14, 0xF6, 0xB2, 0x5E, 0xDF }, + { 0xE6, 0xB0, 0xF2, 0xE2, 0x5B, 0xD5, 0x16, 0xE4, 0xBB, 0xA3, 0x7A, 0x2B, 0xF2, 0xE2, 0xC7, 0x2A, + 0x1E, 0x53, 0x9C, 0x60, 0x30, 0xF3, 0xCF, 0x9B, 0xBE, 0x5E, 0x79, 0x72, 0x8D, 0x68, 0x64, 0x78 }, }, { - { 0xF6, 0xA8, 0x1F, 0x59, 0xB1, 0x13, 0xBA, 0xB9, 0x52, 0xD6, 0x2B, 0xDA, 0xB9, 0x70, 0xC8, 0xEE, - 0xD9, 0xF7, 0x26, 0x22, 0xFA, 0x8A, 0xC6, 0xD8, 0x48, 0xC3, 0xE2, 0xC6, 0x14, 0x62, 0xEF, 0x95 }, + { 0xE6, 0xE5, 0x4D, 0xE7, 0xB4, 0x97, 0x54, 0xD3, 0x57, 0xB0, 0xA8, 0xD9, 0x4A, 0x4D, 0x4F, 0x80, + 0xAC, 0xD1, 0x99, 0x4C, 0xCC, 0x1C, 0x99, 0x08, 0xE9, 0xF0, 0xD9, 0x21, 0xE4, 0x28, 0xB8, 0x38 }, }, { - { 0xF6, 0xAA, 0xEF, 0x12, 0xFC, 0x25, 0x2D, 0xD9, 0xE7, 0xF7, 0x75, 0x2C, 0x2F, 0x74, 0x5D, 0x59, - 0xD6, 0x37, 0x57, 0xC6, 0xCC, 0x14, 0xD2, 0x25, 0x3A, 0x64, 0x7C, 0xD1, 0x81, 0x49, 0x39, 0x93 }, + { 0xE7, 0x0C, 0xBB, 0x7A, 0xF7, 0xAA, 0x20, 0xB9, 0x89, 0x0B, 0xC1, 0xF9, 0xFA, 0x00, 0xD8, 0x09, + 0x0B, 0x5A, 0xC9, 0x82, 0x5E, 0xA9, 0xD2, 0xFD, 0xF7, 0x7C, 0xA4, 0xDA, 0xE9, 0x44, 0x51, 0xB2 }, }, { - { 0xF6, 0xE3, 0x03, 0x5A, 0xEC, 0xC9, 0xC9, 0x6B, 0x03, 0xE9, 0x73, 0x71, 0xF3, 0x60, 0xF5, 0xBA, - 0x02, 0x14, 0x13, 0x81, 0x27, 0x5D, 0x71, 0xC1, 0x41, 0xEA, 0xF6, 0x3A, 0x06, 0x55, 0x23, 0x07 }, + { 0xE8, 0x16, 0xF9, 0x92, 0x94, 0xA1, 0x3A, 0xC2, 0xFA, 0x2B, 0xFB, 0x76, 0xC2, 0x2D, 0xFA, 0x71, + 0xBC, 0x3D, 0xA4, 0x8F, 0x67, 0x1E, 0xF7, 0x7C, 0x00, 0xAA, 0x8E, 0x45, 0x9B, 0x7C, 0xC8, 0x2A }, }, { - { 0xF6, 0xFE, 0xB3, 0x88, 0x25, 0xE6, 0xEE, 0x7B, 0xA5, 0xBF, 0xD9, 0x4B, 0xB5, 0x77, 0x12, 0xA4, - 0x14, 0x1E, 0xB8, 0xD0, 0x92, 0xBB, 0x2D, 0x5D, 0xD1, 0x64, 0xF6, 0x74, 0xA2, 0xE5, 0xB0, 0x64 }, + { 0xE8, 0x21, 0x3C, 0x45, 0x51, 0x81, 0x61, 0xBC, 0x36, 0x37, 0x3D, 0xCD, 0x2D, 0x4B, 0x21, 0xB7, + 0x6A, 0x7C, 0x06, 0x6D, 0xF5, 0x52, 0x6E, 0x88, 0x8B, 0x6E, 0xED, 0x09, 0xA9, 0xEE, 0xD0, 0x62 }, }, { - { 0xF7, 0x22, 0xE3, 0x21, 0x67, 0xF0, 0x0D, 0x96, 0xEB, 0x35, 0xF9, 0xB9, 0x43, 0xD2, 0x56, 0x26, - 0x5B, 0xA5, 0x5E, 0x70, 0x34, 0x6D, 0x8C, 0xEE, 0x54, 0x48, 0x29, 0xC2, 0xB0, 0x9B, 0x95, 0x90 }, + { 0xE9, 0xF5, 0x71, 0xC7, 0x71, 0x64, 0xAB, 0xEA, 0xE1, 0x85, 0x28, 0x37, 0x5C, 0xFD, 0xC7, 0x21, + 0x9A, 0x6B, 0xDE, 0x46, 0x1B, 0x19, 0x73, 0xBE, 0x2B, 0xB8, 0xBD, 0xF0, 0xDA, 0x78, 0xB2, 0xB4 }, }, { - { 0xF7, 0x76, 0x3B, 0xE8, 0x7E, 0x67, 0x8B, 0x31, 0x18, 0x66, 0x11, 0x9A, 0xD5, 0xAC, 0xDF, 0x8F, - 0xDB, 0x3B, 0xBB, 0x46, 0x5B, 0x83, 0x40, 0x61, 0x64, 0xAC, 0x21, 0x30, 0x34, 0xE8, 0xAD, 0x0E }, + { 0xEB, 0x11, 0x63, 0xAA, 0xEF, 0xE8, 0xFD, 0x88, 0xE1, 0x32, 0x7B, 0x48, 0xA9, 0xC0, 0x06, 0x2E, + 0x06, 0xF0, 0xA6, 0xEA, 0xA0, 0xA0, 0x18, 0x24, 0x7F, 0x9F, 0xA4, 0xE3, 0x4E, 0x3A, 0x47, 0x4C }, }, { - { 0xF7, 0x77, 0x35, 0xCE, 0xE3, 0x38, 0x5C, 0xEC, 0xBC, 0x88, 0x4A, 0x54, 0xCE, 0x7F, 0xB1, 0x78, - 0xA0, 0x40, 0x3C, 0x3E, 0x2B, 0x16, 0x9E, 0x49, 0xF9, 0x38, 0xA8, 0x1D, 0xAD, 0x15, 0xDC, 0x1C }, + { 0xEC, 0x4B, 0xBD, 0xEB, 0x15, 0x12, 0x1D, 0x96, 0x76, 0x4D, 0x6C, 0x01, 0xB2, 0x7E, 0xD5, 0xAE, + 0x86, 0x46, 0x5C, 0x46, 0xD5, 0xA4, 0x0E, 0x34, 0xAE, 0xFC, 0x09, 0x2D, 0x3E, 0x8B, 0xB1, 0x76 }, }, { - { 0xF7, 0xB5, 0x97, 0x11, 0xCA, 0xE9, 0x11, 0xEF, 0x56, 0xC8, 0x1B, 0x54, 0x03, 0x6F, 0x21, 0x32, - 0xEC, 0xFA, 0x0F, 0x09, 0x08, 0x90, 0xAF, 0xCA, 0x7E, 0x16, 0x39, 0x4E, 0xD4, 0x99, 0xE8, 0x0C }, + { 0xEC, 0x5F, 0xA4, 0x73, 0x12, 0x1E, 0x3F, 0x49, 0xF0, 0x95, 0x3A, 0x2A, 0x91, 0x83, 0x39, 0xE3, + 0x6F, 0x3C, 0xB6, 0xB8, 0xD8, 0xB8, 0x9E, 0x91, 0x74, 0x23, 0xDA, 0xCE, 0xAC, 0xE6, 0xD5, 0x8A }, }, { - { 0xF7, 0xD9, 0x10, 0xBC, 0xE2, 0xAB, 0x1A, 0xCA, 0xA6, 0x7B, 0x66, 0x3A, 0x8A, 0xDD, 0xBD, 0xA2, - 0x93, 0xB5, 0x1C, 0xED, 0xE7, 0x86, 0x8B, 0x69, 0xA3, 0xCE, 0xA7, 0xFF, 0xD0, 0x10, 0xB3, 0xA8 }, + { 0xEC, 0xCE, 0x4E, 0x52, 0x82, 0xFD, 0x2E, 0xE0, 0x03, 0xA4, 0x03, 0x2C, 0x80, 0xD3, 0x32, 0x1A, + 0x69, 0x47, 0x25, 0x98, 0x94, 0x59, 0x09, 0xCB, 0x25, 0x55, 0x7A, 0xA8, 0x47, 0x74, 0x2D, 0xDF }, }, { - { 0xF8, 0x0C, 0x71, 0x5B, 0x84, 0x49, 0x5D, 0xBE, 0xDA, 0xBF, 0xEB, 0x1B, 0x05, 0x7F, 0xA0, 0x80, - 0x93, 0x10, 0x5D, 0x74, 0x6F, 0x8D, 0x4F, 0x10, 0x35, 0xD4, 0xE1, 0xD8, 0x6B, 0xE2, 0xB4, 0x80 }, + { 0xED, 0x5B, 0xB8, 0x6A, 0x95, 0xA5, 0xFE, 0x2B, 0x17, 0x08, 0xF2, 0x56, 0x75, 0x4A, 0x89, 0xC4, + 0x29, 0x67, 0x9B, 0x30, 0x75, 0x8E, 0xE0, 0x12, 0x2B, 0x9E, 0x50, 0x85, 0x8D, 0xE2, 0x10, 0x4B }, }, { - { 0xF8, 0x24, 0x21, 0x09, 0xF2, 0x80, 0xE3, 0x51, 0xBF, 0xD6, 0x11, 0x95, 0xF8, 0x84, 0x52, 0x5D, - 0xC8, 0xE0, 0x64, 0xD6, 0x85, 0x07, 0x57, 0x49, 0x52, 0x08, 0x3F, 0xAD, 0xCD, 0xCB, 0x91, 0x4B }, + { 0xED, 0xC1, 0xBF, 0x3E, 0xFB, 0xF7, 0xE1, 0xD9, 0x5E, 0x19, 0xC5, 0x5E, 0xCA, 0xE7, 0x7E, 0x83, + 0x69, 0x46, 0xAB, 0x0A, 0x26, 0xA7, 0x8E, 0x32, 0xA4, 0x72, 0xC9, 0xD3, 0x6C, 0x69, 0xCE, 0xCD }, }, { - { 0xF8, 0x2C, 0xC3, 0xC4, 0x5E, 0x9F, 0x62, 0x42, 0x7D, 0xFF, 0xE7, 0x8F, 0x48, 0x8D, 0x5B, 0x5F, - 0x79, 0x2A, 0xF0, 0xBE, 0x06, 0x5D, 0xDD, 0x59, 0xCA, 0x2C, 0x28, 0x61, 0xFB, 0x32, 0xC3, 0x2A }, + { 0xED, 0xF4, 0xDF, 0x97, 0x2C, 0xAD, 0x6C, 0x47, 0x0B, 0xAB, 0x5D, 0x66, 0x42, 0xF6, 0x60, 0xB8, + 0x42, 0xD6, 0xC9, 0x73, 0x07, 0x44, 0x93, 0xE4, 0xEF, 0x1B, 0xBF, 0x31, 0x1A, 0x92, 0x79, 0x95 }, }, { - { 0xF8, 0x64, 0x44, 0x3E, 0x2F, 0x63, 0x9E, 0x7C, 0xFF, 0xD2, 0x42, 0x21, 0xF6, 0x1B, 0xBF, 0xF0, - 0x7C, 0xCE, 0x5C, 0x61, 0xDD, 0xB1, 0x68, 0xB3, 0xB4, 0x04, 0xD7, 0xC8, 0xCD, 0xCA, 0x18, 0xB2 }, + { 0xEE, 0x0C, 0xF6, 0x2B, 0x9D, 0x8E, 0x42, 0xA2, 0x23, 0xB9, 0xA9, 0x60, 0xB5, 0xE9, 0x67, 0x0C, + 0xCC, 0x34, 0x6D, 0x89, 0x93, 0x8F, 0xFA, 0x5D, 0xF7, 0x98, 0x65, 0xE4, 0x13, 0xD6, 0x31, 0x54 }, }, { - { 0xF8, 0x76, 0xC7, 0x3F, 0xAE, 0x72, 0x52, 0x5D, 0x4A, 0xD5, 0x26, 0x69, 0xBC, 0x5A, 0x34, 0xDC, - 0x8D, 0x46, 0x14, 0xE9, 0x3B, 0xFD, 0xEE, 0xEC, 0xA3, 0xD9, 0xBE, 0xCA, 0x97, 0x2E, 0xC6, 0xB8 }, + { 0xEE, 0x34, 0xE1, 0xA1, 0x9B, 0xC8, 0x89, 0xF8, 0x5F, 0x7F, 0x0F, 0x5B, 0xF8, 0x72, 0xB1, 0xAC, + 0x56, 0x5E, 0xC6, 0xF1, 0x9D, 0xB5, 0x17, 0xBA, 0x4E, 0xD7, 0x55, 0xC4, 0x18, 0x5F, 0x69, 0xE8 }, }, { - { 0xF8, 0x81, 0x51, 0xC3, 0xD8, 0x91, 0x6B, 0x1D, 0x03, 0xA0, 0x5F, 0x55, 0x85, 0xEC, 0x38, 0xAD, - 0x1C, 0xC0, 0x3A, 0x36, 0x2E, 0x68, 0x60, 0x8E, 0x39, 0x13, 0xED, 0xDF, 0xB1, 0xFD, 0xF1, 0x27 }, + { 0xEF, 0x36, 0xA2, 0x29, 0x89, 0x65, 0xE4, 0x98, 0x84, 0x59, 0xB9, 0x21, 0x6A, 0xB3, 0x3C, 0x3C, + 0xA8, 0x42, 0xD2, 0x16, 0x83, 0xB6, 0x2A, 0x2B, 0xF1, 0x53, 0x0D, 0x30, 0xB0, 0xAE, 0x78, 0x25 }, }, { - { 0xF8, 0x94, 0xF9, 0x67, 0x36, 0x9C, 0xE7, 0xCF, 0xA3, 0x1A, 0xC1, 0x9A, 0x66, 0x65, 0xB0, 0xC4, - 0x24, 0xBA, 0x40, 0x8A, 0xD5, 0xD3, 0x65, 0xF1, 0x68, 0xD8, 0xBE, 0xEB, 0x79, 0xF4, 0x89, 0xF3 }, + { 0xEF, 0xAF, 0xCA, 0x84, 0x90, 0x30, 0x7B, 0x0F, 0x62, 0x2B, 0xF4, 0x3A, 0x0E, 0xB3, 0xC5, 0x1A, + 0xCB, 0xDD, 0xDE, 0xDC, 0x23, 0x92, 0xF1, 0x61, 0xAC, 0xED, 0x16, 0x71, 0xA6, 0x53, 0x60, 0x7E }, }, { - { 0xF8, 0xCF, 0x1E, 0x08, 0x6A, 0x6A, 0x06, 0x3F, 0xAD, 0x25, 0x74, 0x25, 0xAA, 0xE7, 0x20, 0x01, - 0x40, 0x05, 0xB4, 0x15, 0x91, 0x2D, 0xBB, 0x8C, 0x0B, 0xC9, 0x99, 0xAF, 0x48, 0x48, 0xCF, 0xE5 }, + { 0xEF, 0xD1, 0xE0, 0xE7, 0x3F, 0xA8, 0x71, 0x00, 0xB7, 0x6A, 0x93, 0x23, 0x49, 0xC4, 0x5D, 0x09, + 0xB2, 0x8B, 0x2D, 0x8A, 0x00, 0x17, 0x19, 0xA5, 0x8D, 0xFA, 0xCC, 0x74, 0x84, 0xC7, 0xCF, 0x42 }, }, { - { 0xF9, 0x0E, 0x7C, 0x21, 0x81, 0xBA, 0x53, 0x4D, 0xCF, 0x5B, 0xB6, 0xDB, 0xF7, 0xF9, 0xAD, 0xA3, - 0xFF, 0x98, 0xDE, 0x50, 0x0C, 0xBD, 0x42, 0x12, 0xC0, 0xD1, 0xFA, 0x05, 0x82, 0x80, 0xFD, 0x57 }, + { 0xF0, 0x11, 0xAD, 0x9E, 0xDD, 0x4F, 0xE7, 0x18, 0x8D, 0x77, 0x2E, 0xBA, 0xFA, 0x5B, 0xF5, 0x32, + 0x92, 0x47, 0x77, 0x88, 0xDC, 0x12, 0x80, 0x32, 0x76, 0xB0, 0x00, 0xC4, 0x41, 0x91, 0x03, 0xF0 }, }, { - { 0xF9, 0x29, 0xC1, 0x0E, 0x66, 0x15, 0xB3, 0xE7, 0x1F, 0xDA, 0x31, 0xF1, 0xB7, 0x1A, 0x44, 0x47, - 0x00, 0x7E, 0xE3, 0x7A, 0x39, 0x3C, 0x32, 0xE0, 0xFB, 0x34, 0xFC, 0xF1, 0x05, 0x5D, 0x51, 0x8F }, + { 0xF0, 0x2F, 0x9D, 0xA4, 0x5D, 0x9E, 0xB9, 0x86, 0x19, 0x4E, 0x06, 0xF5, 0xE6, 0x18, 0x95, 0x45, + 0x12, 0xC9, 0x02, 0x6E, 0x7C, 0xA7, 0xB5, 0x1E, 0x66, 0x5D, 0xB6, 0xAD, 0xBA, 0xC1, 0xF6, 0x00 }, }, { - { 0xF9, 0x8B, 0x43, 0x93, 0xF7, 0xC3, 0x1D, 0x37, 0x03, 0x49, 0x81, 0x63, 0xE7, 0x77, 0x9F, 0x75, - 0xDE, 0xF6, 0xAF, 0x44, 0x10, 0x44, 0x6A, 0x03, 0x4D, 0x52, 0x8C, 0xB7, 0x14, 0x3A, 0xA0, 0x13 }, + { 0xF0, 0x6B, 0x35, 0x95, 0x36, 0xD1, 0x34, 0x32, 0x8B, 0x36, 0x00, 0x4D, 0xA9, 0xA9, 0x19, 0x0C, + 0x3A, 0x76, 0x69, 0xE8, 0x27, 0x8D, 0xB9, 0xF7, 0x58, 0x57, 0xC4, 0x8D, 0x64, 0x4B, 0xE2, 0x03 }, }, { - { 0xF9, 0xA7, 0xDD, 0xD3, 0xFF, 0x51, 0xAF, 0x30, 0x7F, 0x95, 0x4F, 0x7B, 0x44, 0xDB, 0xD2, 0x42, - 0x83, 0xCF, 0x97, 0xB6, 0x25, 0xBE, 0x76, 0x6B, 0x43, 0x5E, 0x6C, 0x26, 0xD9, 0xCC, 0xAC, 0xC3 }, + { 0xF0, 0xCF, 0xC7, 0x79, 0x13, 0x39, 0x7D, 0xE2, 0x38, 0xED, 0xB5, 0x9F, 0x0F, 0x99, 0x23, 0xC6, + 0xD4, 0x11, 0x0A, 0x4B, 0x3A, 0xC8, 0xAC, 0x76, 0x55, 0x6A, 0x0C, 0x92, 0x44, 0xF0, 0x3F, 0xC1 }, }, { - { 0xF9, 0xAF, 0xE7, 0x1B, 0xF1, 0xF4, 0x1B, 0xCD, 0xE6, 0x4F, 0x3F, 0x35, 0x82, 0x60, 0xE7, 0x74, - 0x18, 0x76, 0x18, 0x8D, 0xE6, 0x99, 0x04, 0xA6, 0xD0, 0xB6, 0x3A, 0x32, 0x93, 0x02, 0xFA, 0x3D }, + { 0xF2, 0xB1, 0x95, 0x84, 0x6E, 0xE2, 0xB9, 0xAB, 0x5F, 0x18, 0xE6, 0x80, 0x21, 0xF8, 0xDF, 0x7C, + 0x0B, 0x60, 0x58, 0xDE, 0xDE, 0x86, 0xC5, 0xD5, 0x90, 0xF2, 0xE8, 0x64, 0x3A, 0xFE, 0x04, 0x52 }, }, { - { 0xF9, 0xF5, 0xFD, 0xAE, 0x79, 0x59, 0x07, 0x40, 0xB3, 0x85, 0xA8, 0x33, 0x12, 0x7A, 0x28, 0x21, - 0xFB, 0x9D, 0x03, 0xC0, 0xC6, 0xA1, 0xBE, 0x42, 0xEB, 0x2A, 0xBF, 0xD2, 0x0D, 0xF6, 0xB7, 0xB9 }, + { 0xF2, 0xE5, 0x30, 0x0C, 0x39, 0xF2, 0x86, 0xC6, 0x78, 0x99, 0x90, 0x9C, 0x7C, 0xE7, 0x35, 0x9B, + 0x09, 0x45, 0xD2, 0xAF, 0xD3, 0x4A, 0x6D, 0xD6, 0x9E, 0x08, 0xCD, 0xA5, 0x44, 0xC8, 0x7B, 0x3A }, }, { - { 0xF9, 0xFB, 0xFD, 0xD0, 0x91, 0x50, 0x4F, 0x93, 0x08, 0xBC, 0xA0, 0xE3, 0x03, 0x1B, 0xDE, 0x76, - 0x36, 0x62, 0x6B, 0x1E, 0x53, 0x6E, 0xCF, 0xAE, 0x7B, 0xB7, 0x34, 0xC2, 0xE6, 0xD0, 0xE9, 0xDE }, + { 0xF3, 0x0C, 0x0A, 0xED, 0x70, 0x6D, 0x22, 0x55, 0x5F, 0x07, 0x09, 0x6A, 0xF4, 0xB8, 0xBE, 0xDC, + 0x16, 0x3C, 0x0F, 0x6E, 0xD5, 0x34, 0x6E, 0xFC, 0x28, 0xE8, 0xCF, 0xAF, 0x84, 0x2F, 0xA5, 0xD9 }, }, { - { 0xFA, 0x2A, 0x2F, 0x77, 0x8C, 0xBE, 0xF9, 0xF1, 0xB4, 0xA8, 0xFC, 0x57, 0xBF, 0x79, 0x5F, 0x1F, - 0x8C, 0xF6, 0x23, 0xDB, 0x15, 0xBE, 0x65, 0x81, 0xEB, 0xA3, 0x6B, 0x2A, 0x86, 0x49, 0xD2, 0x1E }, + { 0xF6, 0x13, 0xD5, 0x90, 0x46, 0xD1, 0x66, 0x71, 0xD3, 0xC5, 0x60, 0x17, 0x6F, 0x3D, 0x77, 0xFD, + 0xC5, 0x1E, 0x5F, 0x57, 0xB5, 0xE4, 0x8A, 0xE7, 0xA4, 0xB9, 0x70, 0x0A, 0x11, 0xD4, 0x69, 0x3A }, }, { - { 0xFA, 0x50, 0x6B, 0xD0, 0x69, 0x4B, 0x92, 0x94, 0xB9, 0x9F, 0x7B, 0x5C, 0x90, 0x07, 0xCE, 0x13, - 0xA6, 0x03, 0x07, 0xF4, 0xC5, 0x94, 0xEB, 0xFB, 0xE7, 0xB3, 0x4A, 0x05, 0x50, 0xAE, 0x3D, 0x4F }, + { 0xF6, 0x54, 0x6B, 0x2F, 0xFE, 0x2B, 0xAE, 0xF7, 0x35, 0xE8, 0x25, 0x67, 0xA6, 0xE2, 0x36, 0x75, + 0x03, 0x94, 0xC1, 0x19, 0x14, 0x09, 0x87, 0x0C, 0x6F, 0xBE, 0x95, 0x2D, 0x08, 0xA3, 0x3A, 0xBA }, }, { - { 0xFA, 0x83, 0xFB, 0xD3, 0x29, 0x80, 0xB9, 0x55, 0x23, 0xDA, 0xFA, 0xED, 0xFE, 0x15, 0x0E, 0x91, - 0xFF, 0x80, 0xEB, 0xDC, 0xB2, 0xB7, 0x8D, 0x9E, 0x9C, 0x3A, 0x70, 0xFD, 0x79, 0x85, 0x1B, 0x69 }, + { 0xF6, 0xAA, 0xEF, 0x12, 0xFC, 0x25, 0x2D, 0xD9, 0xE7, 0xF7, 0x75, 0x2C, 0x2F, 0x74, 0x5D, 0x59, + 0xD6, 0x37, 0x57, 0xC6, 0xCC, 0x14, 0xD2, 0x25, 0x3A, 0x64, 0x7C, 0xD1, 0x81, 0x49, 0x39, 0x93 }, }, { - { 0xFA, 0x95, 0xB3, 0xF9, 0x6F, 0xC9, 0xC2, 0xD3, 0xA7, 0x9B, 0x05, 0x48, 0x67, 0x6C, 0x18, 0x48, - 0x5A, 0xF1, 0x10, 0x4C, 0xCA, 0x9B, 0xB6, 0xB8, 0xDD, 0x9B, 0x5A, 0x54, 0x3C, 0xB6, 0xC6, 0x2E }, + { 0xF8, 0x64, 0x44, 0x3E, 0x2F, 0x63, 0x9E, 0x7C, 0xFF, 0xD2, 0x42, 0x21, 0xF6, 0x1B, 0xBF, 0xF0, + 0x7C, 0xCE, 0x5C, 0x61, 0xDD, 0xB1, 0x68, 0xB3, 0xB4, 0x04, 0xD7, 0xC8, 0xCD, 0xCA, 0x18, 0xB2 }, }, { - { 0xFA, 0xE4, 0x72, 0x1E, 0x39, 0x47, 0xA5, 0x0D, 0xD0, 0x4D, 0x16, 0xAC, 0xEF, 0xF3, 0x55, 0xC0, - 0x87, 0xB7, 0xE2, 0x24, 0x6B, 0xE6, 0x0F, 0xBC, 0x26, 0x2A, 0x53, 0x52, 0xAD, 0xAC, 0x18, 0x01 }, + { 0xF8, 0x94, 0xF9, 0x67, 0x36, 0x9C, 0xE7, 0xCF, 0xA3, 0x1A, 0xC1, 0x9A, 0x66, 0x65, 0xB0, 0xC4, + 0x24, 0xBA, 0x40, 0x8A, 0xD5, 0xD3, 0x65, 0xF1, 0x68, 0xD8, 0xBE, 0xEB, 0x79, 0xF4, 0x89, 0xF3 }, }, { - { 0xFB, 0x44, 0x15, 0x70, 0x4C, 0x1D, 0x61, 0x55, 0x10, 0x6D, 0x88, 0xF3, 0xB2, 0x0F, 0xEC, 0x9F, - 0x6E, 0x82, 0x0C, 0x82, 0x24, 0xFE, 0xE3, 0x5E, 0x45, 0x22, 0x85, 0x19, 0x05, 0xF3, 0x28, 0xD7 }, + { 0xF8, 0xCF, 0x1E, 0x08, 0x6A, 0x6A, 0x06, 0x3F, 0xAD, 0x25, 0x74, 0x25, 0xAA, 0xE7, 0x20, 0x01, + 0x40, 0x05, 0xB4, 0x15, 0x91, 0x2D, 0xBB, 0x8C, 0x0B, 0xC9, 0x99, 0xAF, 0x48, 0x48, 0xCF, 0xE5 }, }, { { 0xFB, 0x9A, 0xF7, 0x9D, 0xEA, 0x18, 0xAF, 0x62, 0x99, 0x85, 0x0E, 0x25, 0x15, 0x9B, 0x4F, 0xB2, @@ -5592,10 +1588,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0xFB, 0xC4, 0xC9, 0xBA, 0xCF, 0xE3, 0xDA, 0x64, 0x13, 0x18, 0x26, 0x6B, 0x72, 0x58, 0x56, 0x00, 0x35, 0xBC, 0x64, 0x60, 0x8E, 0x34, 0xB9, 0x90, 0xCA, 0x92, 0xA5, 0x52, 0xF3, 0x14, 0x21, 0x61 }, }, - { - { 0xFB, 0xDD, 0x65, 0xD5, 0x6E, 0x48, 0x0C, 0xD2, 0x53, 0x1B, 0xAB, 0xFB, 0x98, 0xAD, 0x6E, 0x35, - 0x22, 0x1E, 0xB9, 0x8A, 0xE4, 0x63, 0x2C, 0x43, 0x12, 0xDB, 0x75, 0x17, 0xB1, 0x36, 0x54, 0x72 }, - }, { { 0xFB, 0xED, 0xD3, 0x88, 0x89, 0xF0, 0xB4, 0x1F, 0x73, 0x4D, 0xE2, 0xF4, 0xC9, 0xD6, 0xF2, 0x7C, 0x8D, 0x4A, 0xA9, 0xAB, 0x73, 0x64, 0x91, 0xE1, 0x64, 0xE1, 0x21, 0xB7, 0xBC, 0xAF, 0x44, 0xE8 }, @@ -5604,26 +1596,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0xFC, 0x01, 0xA5, 0x5A, 0x36, 0xCC, 0x8B, 0x7B, 0x7C, 0xA2, 0xEA, 0xB0, 0x84, 0x60, 0xC2, 0x8D, 0x1D, 0x6C, 0xD8, 0x9C, 0x57, 0x59, 0x94, 0x05, 0xD5, 0x37, 0x4B, 0x91, 0xAA, 0xEB, 0xC8, 0x79 }, }, - { - { 0xFC, 0x11, 0xD0, 0x51, 0xC2, 0x7A, 0x33, 0xA2, 0xE8, 0x1C, 0xB7, 0x20, 0xA9, 0xE6, 0xD8, 0xA7, - 0xFE, 0x3C, 0x5D, 0x94, 0x13, 0x9C, 0xBA, 0x0F, 0x5E, 0xAA, 0x61, 0xBA, 0xBE, 0x34, 0x1A, 0x8B }, - }, - { - { 0xFC, 0x2F, 0x1E, 0x84, 0x29, 0x82, 0xC9, 0x3B, 0x85, 0xD2, 0x79, 0xA8, 0x3D, 0xF2, 0x13, 0xC1, - 0xA3, 0x33, 0x29, 0x7D, 0x42, 0xA3, 0x1A, 0x8C, 0xC7, 0x8A, 0x3F, 0x73, 0xCD, 0xF8, 0xAF, 0x9A }, - }, { { 0xFC, 0x4D, 0x9A, 0x37, 0xE5, 0xF7, 0x32, 0x72, 0xD0, 0xA9, 0xDF, 0xCC, 0xE9, 0x03, 0x12, 0xC7, 0x52, 0xE1, 0xB5, 0x2E, 0xB6, 0x54, 0xC4, 0x2C, 0x36, 0x94, 0x4B, 0x90, 0x2A, 0x30, 0x41, 0x07 }, }, - { - { 0xFC, 0x53, 0x0D, 0x33, 0x87, 0x60, 0xB5, 0x92, 0x47, 0x55, 0xE1, 0x55, 0x62, 0x34, 0xF0, 0x2D, - 0x84, 0x04, 0x71, 0x11, 0x08, 0xF1, 0xB7, 0xC8, 0xE4, 0x8C, 0x05, 0xDB, 0x84, 0xF8, 0xBA, 0x7F }, - }, - { - { 0xFC, 0x55, 0x86, 0x91, 0xDA, 0xFF, 0xE1, 0xE3, 0x53, 0x8D, 0x38, 0xA6, 0xD3, 0xA9, 0xE6, 0xE7, - 0xC9, 0x9D, 0x24, 0x0C, 0x86, 0x89, 0x66, 0x73, 0x56, 0x27, 0x99, 0x72, 0xFB, 0x4F, 0x30, 0x85 }, - }, { { 0xFC, 0x56, 0xDB, 0xA1, 0xE7, 0xAF, 0xBD, 0xAA, 0x07, 0x33, 0xC6, 0x91, 0x1C, 0x5F, 0x1F, 0x18, 0x28, 0xCB, 0x12, 0x98, 0x31, 0x40, 0x1A, 0x3C, 0xFD, 0xEA, 0xA7, 0x24, 0x62, 0x95, 0x35, 0x94 }, @@ -5636,30 +1612,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0xFC, 0xA6, 0x23, 0x5D, 0x2A, 0xA4, 0xB1, 0xB2, 0x51, 0x50, 0x78, 0x57, 0xB4, 0xF0, 0x08, 0xDF, 0xD5, 0x27, 0x04, 0x2C, 0xE0, 0x45, 0x01, 0xAA, 0xE2, 0x9D, 0xD2, 0x05, 0xBB, 0xEF, 0xCE, 0x0D }, }, - { - { 0xFC, 0xB7, 0xFE, 0x6D, 0x32, 0x2D, 0x87, 0xC7, 0x51, 0x59, 0x47, 0x79, 0x50, 0x88, 0x95, 0x8A, - 0x5F, 0x75, 0xBF, 0xF1, 0x18, 0x40, 0x21, 0xEF, 0x05, 0xD6, 0xF4, 0xD3, 0xC4, 0x3B, 0x85, 0xC5 }, - }, - { - { 0xFC, 0xE5, 0x47, 0xE1, 0x43, 0x54, 0x87, 0x7F, 0xED, 0x93, 0x0B, 0x19, 0xFD, 0xE7, 0xC6, 0xF9, - 0xCB, 0xF5, 0xD4, 0xB5, 0x7B, 0xA5, 0x34, 0x4A, 0x0D, 0x40, 0x10, 0xFF, 0x70, 0x5A, 0x03, 0xDE }, - }, { { 0xFC, 0xE7, 0x34, 0xE1, 0x2B, 0x8E, 0xFB, 0x43, 0x12, 0x71, 0xBF, 0xF6, 0x7A, 0x7A, 0x0A, 0x93, 0xB2, 0x19, 0xDD, 0x5E, 0x5D, 0xCC, 0x12, 0x58, 0x59, 0x4D, 0x96, 0xFC, 0xE1, 0x93, 0xB8, 0x60 }, }, - { - { 0xFC, 0xF6, 0x81, 0x39, 0x64, 0x2F, 0x8D, 0x79, 0xA4, 0x86, 0x15, 0xE4, 0x44, 0xCE, 0xD6, 0x90, - 0xFA, 0x60, 0xEB, 0xFD, 0x0A, 0x06, 0x0A, 0x49, 0x93, 0x89, 0x98, 0x8A, 0x2C, 0x2C, 0x05, 0xCE }, - }, - { - { 0xFD, 0x44, 0x89, 0xF0, 0x27, 0x27, 0xDB, 0x36, 0xC1, 0x84, 0x35, 0xE5, 0xC4, 0xA9, 0xF8, 0x63, - 0xAC, 0xD8, 0x04, 0xAE, 0x1B, 0x39, 0x7F, 0xBB, 0x83, 0xD4, 0x27, 0x5A, 0xF5, 0x6D, 0xF8, 0x9F }, - }, - { - { 0xFD, 0x85, 0xCC, 0x72, 0x1B, 0x77, 0xC4, 0x41, 0xC8, 0xB1, 0xF1, 0x4A, 0xDE, 0x34, 0x8A, 0x3E, - 0xC9, 0xFA, 0xA6, 0x26, 0x4A, 0x91, 0x3F, 0xB8, 0xD3, 0x4C, 0x98, 0x3B, 0x43, 0x60, 0xE9, 0x7B }, - }, { { 0xFD, 0x9C, 0xFE, 0x14, 0xDA, 0xD8, 0x97, 0x8C, 0x5B, 0xC8, 0x88, 0x93, 0x8F, 0x16, 0xF3, 0xB3, 0x98, 0xF7, 0x63, 0xA3, 0xAD, 0xAF, 0xAA, 0x4A, 0xD9, 0x41, 0xB7, 0xE3, 0x87, 0xEB, 0x4F, 0x4A }, @@ -5668,10 +1624,6 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0xFD, 0xED, 0x92, 0xCB, 0x40, 0x91, 0x66, 0x82, 0x3A, 0x35, 0xE2, 0x17, 0xF3, 0x0B, 0x38, 0xC4, 0x86, 0xF8, 0x3E, 0xF2, 0xD4, 0xF2, 0x7B, 0x05, 0xF1, 0x8C, 0x74, 0x49, 0x81, 0x33, 0x9A, 0x1C }, }, - { - { 0xFE, 0x0F, 0x6A, 0xDC, 0x4C, 0xB9, 0xA1, 0x3F, 0xCB, 0xAF, 0xD8, 0x98, 0xC1, 0xBB, 0x53, 0xB3, - 0xD9, 0x33, 0x74, 0x49, 0x9D, 0xF3, 0x47, 0xB7, 0x1F, 0x13, 0x4C, 0x94, 0x3C, 0x4F, 0xF1, 0x20 }, - }, { { 0xFE, 0x26, 0xB2, 0xA6, 0x45, 0xA3, 0x1A, 0x91, 0x11, 0x00, 0x09, 0x9A, 0xA9, 0xA2, 0x93, 0x9F, 0x49, 0xE9, 0xFB, 0xEA, 0x64, 0x48, 0x7B, 0xDF, 0x68, 0xA5, 0x23, 0x70, 0x32, 0x92, 0xD6, 0xA0 }, @@ -5684,42 +1636,10 @@ static const struct WhitelistedCNNICHash WhitelistedCNNICHashes[] = { { 0xFE, 0x4F, 0x35, 0x6C, 0x7F, 0x9B, 0xFC, 0x17, 0xFF, 0xCB, 0x68, 0xD0, 0x76, 0x4E, 0xCB, 0x2A, 0x87, 0xCA, 0xA0, 0xAE, 0x4C, 0xB5, 0x66, 0x62, 0x21, 0x04, 0xD3, 0x6F, 0xFB, 0x52, 0xCB, 0x29 }, }, - { - { 0xFE, 0xAA, 0xBD, 0xD7, 0x92, 0xA4, 0x31, 0x68, 0x99, 0x98, 0x3E, 0xF5, 0x7B, 0xEA, 0x99, 0xBE, - 0x81, 0x15, 0x6D, 0x47, 0x9C, 0xDF, 0x7B, 0x81, 0xF5, 0x58, 0x49, 0x60, 0x92, 0xD3, 0x17, 0x16 }, - }, - { - { 0xFE, 0xB8, 0xF0, 0x0C, 0x83, 0xEA, 0x05, 0xBD, 0xA2, 0x85, 0x0E, 0xC5, 0xBB, 0x77, 0x43, 0xE4, - 0x42, 0xEB, 0xF4, 0x31, 0xE3, 0xBA, 0x75, 0x4A, 0xA2, 0xD9, 0x47, 0x5E, 0x98, 0x0B, 0x6E, 0x3A }, - }, - { - { 0xFE, 0xC5, 0xFF, 0x1D, 0x4E, 0x56, 0x49, 0xB0, 0x1F, 0xBA, 0xAB, 0xD9, 0x02, 0x2D, 0xBF, 0x86, - 0xA7, 0x60, 0x2D, 0x89, 0x04, 0x45, 0x1B, 0xF4, 0x93, 0xC4, 0xAF, 0xE1, 0x1C, 0x99, 0xAE, 0x07 }, - }, - { - { 0xFE, 0xFF, 0x60, 0xF2, 0xDA, 0x22, 0xC9, 0xDB, 0xBC, 0x3D, 0x10, 0x13, 0x1E, 0xE4, 0x39, 0xBA, - 0xE3, 0xE0, 0x0E, 0x58, 0xCC, 0xE0, 0xBD, 0x07, 0x4F, 0x55, 0xF7, 0x7C, 0x3B, 0x00, 0xF9, 0x35 }, - }, - { - { 0xFF, 0x0E, 0x31, 0x58, 0x55, 0x2A, 0x28, 0x10, 0xA9, 0x71, 0x3D, 0xE8, 0x3B, 0x03, 0x25, 0xA1, - 0x16, 0x4A, 0xA6, 0x0E, 0x9C, 0xE5, 0x74, 0x20, 0x1D, 0x6B, 0x9B, 0x8B, 0xEA, 0xBA, 0x1F, 0x47 }, - }, - { - { 0xFF, 0x4C, 0x40, 0xA0, 0x13, 0xA4, 0x1E, 0x5A, 0xDB, 0x23, 0x1A, 0x14, 0xA9, 0x77, 0xB5, 0x8C, - 0x4F, 0xE7, 0x8D, 0x0C, 0xA3, 0x5C, 0x59, 0x35, 0xE2, 0x22, 0x07, 0x21, 0xCC, 0x54, 0x14, 0xF3 }, - }, { { 0xFF, 0x82, 0x6E, 0x2D, 0x0C, 0xB7, 0x71, 0x68, 0x68, 0x67, 0x5A, 0xE4, 0xB4, 0x31, 0xB6, 0x37, 0x1E, 0x9F, 0x0C, 0xDF, 0xCC, 0xB4, 0x9D, 0x43, 0xBA, 0x30, 0x49, 0xBF, 0xDD, 0x2C, 0x41, 0xB1 }, }, - { - { 0xFF, 0xC9, 0x74, 0x1A, 0x5E, 0x6A, 0x5A, 0x7C, 0xC3, 0xBB, 0x10, 0xCA, 0x31, 0x3F, 0x97, 0x7A, - 0xA9, 0xCC, 0xC1, 0x92, 0x28, 0xDB, 0xE1, 0x39, 0xB0, 0xC2, 0xD9, 0xF1, 0xF4, 0x1D, 0x83, 0x1B }, - }, - { - { 0xFF, 0xD5, 0x3F, 0x73, 0x6D, 0x4E, 0x0D, 0xC3, 0xBE, 0x8E, 0x43, 0xD9, 0x15, 0x09, 0xE0, 0x44, - 0x79, 0x1D, 0x36, 0xD4, 0x49, 0x12, 0xA6, 0xFA, 0xBA, 0x52, 0x28, 0x25, 0x10, 0x0E, 0x0A, 0x7C }, - }, { { 0xFF, 0xDC, 0x6B, 0x85, 0xFE, 0x7B, 0x10, 0x83, 0xB5, 0x41, 0x6F, 0x80, 0x6F, 0xC2, 0x44, 0xB9, 0xE4, 0xDF, 0x42, 0x99, 0xFB, 0xE3, 0xF6, 0x81, 0xAF, 0x3F, 0x5C, 0xF4, 0x22, 0x5A, 0x8E, 0xAF }, diff --git a/src/StartComAndWoSignData.inc b/src/StartComAndWoSignData.inc new file mode 100644 index 00000000000000..3ba643397c7ff9 --- /dev/null +++ b/src/StartComAndWoSignData.inc @@ -0,0 +1,89 @@ +// /C=CN/O=WoSign CA Limited/CN=CA \xE6\xB2\x83\xE9\x80\x9A\xE6\xA0\xB9\xE8\xAF\x81\xE4\xB9\xA6 +// Using a consistent naming convention, this would actually be called +// 'CA沃通根证书DN', but since GCC 6.2.1 apparently can't handle UTF-8 +// identifiers, this will have to do. +static const uint8_t CAWoSignRootDN[72] = { + 0x30, 0x46, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x43, 0x4E, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, + 0x57, 0x6F, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, 0x6D, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x0C, 0x12, 0x43, 0x41, 0x20, 0xE6, 0xB2, 0x83, 0xE9, 0x80, 0x9A, 0xE6, 0xA0, + 0xB9, 0xE8, 0xAF, 0x81, 0xE4, 0xB9, 0xA6, +}; + +// /C=CN/O=WoSign CA Limited/CN=CA WoSign ECC Root +static const uint8_t CAWoSignECCRootDN[72] = { + 0x30, 0x46, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x43, 0x4E, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, + 0x57, 0x6F, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, 0x6D, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x12, 0x43, 0x41, 0x20, 0x57, 0x6F, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x45, + 0x43, 0x43, 0x20, 0x52, 0x6F, 0x6F, 0x74, +}; + +// /C=CN/O=WoSign CA Limited/CN=Certification Authority of WoSign +static const uint8_t CertificationAuthorityofWoSignDN[87] = { + 0x30, 0x55, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x43, 0x4E, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, + 0x57, 0x6F, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, 0x6D, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x2A, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x21, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, + 0x6F, 0x66, 0x20, 0x57, 0x6F, 0x53, 0x69, 0x67, 0x6E, +}; + +// /C=CN/O=WoSign CA Limited/CN=Certification Authority of WoSign G2 +static const uint8_t CertificationAuthorityofWoSignG2DN[90] = { + 0x30, 0x58, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x43, 0x4E, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, + 0x57, 0x6F, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x41, 0x20, 0x4C, 0x69, 0x6D, + 0x69, 0x74, 0x65, 0x64, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x24, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, + 0x6F, 0x66, 0x20, 0x57, 0x6F, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x47, 0x32, +}; + +// /C=IL/O=StartCom Ltd./OU=Secure Digital Certificate Signing/CN=StartCom Certification Authority +static const uint8_t StartComCertificationAuthorityDN[127] = { + 0x30, 0x7D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x49, 0x4C, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0D, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6F, 0x6D, 0x20, 0x4C, 0x74, 0x64, 0x2E, + 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x22, 0x53, 0x65, + 0x63, 0x75, 0x72, 0x65, 0x20, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6C, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, + 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6F, 0x6D, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, +}; + +// /C=IL/O=StartCom Ltd./CN=StartCom Certification Authority G2 +static const uint8_t StartComCertificationAuthorityG2DN[85] = { + 0x30, 0x53, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x49, 0x4C, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0D, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6F, 0x6D, 0x20, 0x4C, 0x74, 0x64, 0x2E, + 0x31, 0x2C, 0x30, 0x2A, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x23, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x43, 0x6F, 0x6D, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x47, 0x32, +}; + +struct DataAndLength { + const uint8_t* data; + uint32_t len; +}; + +static const DataAndLength StartComAndWoSignDNs[]= { + { CAWoSignRootDN, + sizeof(CAWoSignRootDN) }, + { CAWoSignECCRootDN, + sizeof(CAWoSignECCRootDN) }, + { CertificationAuthorityofWoSignDN, + sizeof(CertificationAuthorityofWoSignDN) }, + { CertificationAuthorityofWoSignG2DN, + sizeof(CertificationAuthorityofWoSignG2DN) }, + { StartComCertificationAuthorityDN, + sizeof(StartComCertificationAuthorityDN) }, + { StartComCertificationAuthorityG2DN, + sizeof(StartComCertificationAuthorityG2DN) }, +}; diff --git a/src/env-inl.h b/src/env-inl.h index 29be9c86ac4c56..9121767a99b966 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -378,22 +378,22 @@ inline std::vector* Environment::destroy_ids_list() { return &destroy_ids_list_; } -inline uint32_t* Environment::heap_statistics_buffer() const { +inline double* Environment::heap_statistics_buffer() const { CHECK_NE(heap_statistics_buffer_, nullptr); return heap_statistics_buffer_; } -inline void Environment::set_heap_statistics_buffer(uint32_t* pointer) { +inline void Environment::set_heap_statistics_buffer(double* pointer) { CHECK_EQ(heap_statistics_buffer_, nullptr); // Should be set only once. heap_statistics_buffer_ = pointer; } -inline uint32_t* Environment::heap_space_statistics_buffer() const { +inline double* Environment::heap_space_statistics_buffer() const { CHECK_NE(heap_space_statistics_buffer_, nullptr); return heap_space_statistics_buffer_; } -inline void Environment::set_heap_space_statistics_buffer(uint32_t* pointer) { +inline void Environment::set_heap_space_statistics_buffer(double* pointer) { CHECK_EQ(heap_space_statistics_buffer_, nullptr); // Should be set only once. heap_space_statistics_buffer_ = pointer; } diff --git a/src/env.h b/src/env.h index fffb816d80608f..fa064e42261141 100644 --- a/src/env.h +++ b/src/env.h @@ -462,11 +462,11 @@ class Environment { // List of id's that have been destroyed and need the destroy() cb called. inline std::vector* destroy_ids_list(); - inline uint32_t* heap_statistics_buffer() const; - inline void set_heap_statistics_buffer(uint32_t* pointer); + inline double* heap_statistics_buffer() const; + inline void set_heap_statistics_buffer(double* pointer); - inline uint32_t* heap_space_statistics_buffer() const; - inline void set_heap_space_statistics_buffer(uint32_t* pointer); + inline double* heap_space_statistics_buffer() const; + inline void set_heap_space_statistics_buffer(double* pointer); inline char* http_parser_buffer() const; inline void set_http_parser_buffer(char* buffer); @@ -570,8 +570,8 @@ class Environment { &HandleCleanup::handle_cleanup_queue_> handle_cleanup_queue_; int handle_cleanup_waiting_; - uint32_t* heap_statistics_buffer_ = nullptr; - uint32_t* heap_space_statistics_buffer_ = nullptr; + double* heap_statistics_buffer_ = nullptr; + double* heap_space_statistics_buffer_ = nullptr; char* http_parser_buffer_; diff --git a/src/node.cc b/src/node.cc index 3b0837b1c1eafe..63c49c49b09a5c 100644 --- a/src/node.cc +++ b/src/node.cc @@ -2277,8 +2277,6 @@ struct node_module* get_linked_module(const char* name) { return mp; } -typedef void (UV_DYNAMIC* extInit)(Local exports); - // DLOpen is process.dlopen(module, filename). // Used to load 'module.node' dynamically shared objects. // @@ -3957,6 +3955,7 @@ inline void PlatformInit() { CHECK_EQ(err, 0); +#ifndef NODE_SHARED_MODE // Restore signal dispositions, the parent process may have changed them. struct sigaction act; memset(&act, 0, sizeof(act)); @@ -3970,6 +3969,7 @@ inline void PlatformInit() { act.sa_handler = (nr == SIGPIPE) ? SIG_IGN : SIG_DFL; CHECK_EQ(0, sigaction(nr, &act, nullptr)); } +#endif // !NODE_SHARED_MODE RegisterSignalHandler(SIGINT, SignalExit, true); RegisterSignalHandler(SIGTERM, SignalExit, true); diff --git a/src/node_crypto.cc b/src/node_crypto.cc index e58b0bc25bb65b..7ca97057c0ba12 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -17,6 +17,10 @@ // https://hg.mozilla.org/mozilla-central/raw-file/98820360ab66/security/ // certverifier/CNNICHashWhitelist.inc #include "CNNICHashWhitelist.inc" +// StartCom and WoSign root CA list is taken from +// https://hg.mozilla.org/mozilla-central/file/tip/security/certverifier/ +// StartComAndWoSignData.inc +#include "StartComAndWoSignData.inc" #include #include // INT_MAX @@ -123,6 +127,7 @@ const char* const root_certs[] = { std::string extra_root_certs_file; // NOLINT(runtime/string) X509_STORE* root_cert_store; +std::vector* root_certs_vector; // Just to generate static methods template class SSLWrap; @@ -404,8 +409,6 @@ void SecureContext::Init(const FunctionCallbackInfo& args) { SSL_SESS_CACHE_NO_AUTO_CLEAR); SSL_CTX_sess_set_get_cb(sc->ctx_, SSLWrap::GetSessionCallback); SSL_CTX_sess_set_new_cb(sc->ctx_, SSLWrap::NewSessionCallback); - - sc->ca_store_ = nullptr; } @@ -689,8 +692,49 @@ void SecureContext::SetCert(const FunctionCallbackInfo& args) { } +#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(OPENSSL_IS_BORINGSSL) +// This section contains OpenSSL 1.1.0 functions reimplemented for OpenSSL +// 1.0.2 so that the following code can be written without lots of #if lines. + +static int X509_STORE_up_ref(X509_STORE* store) { + CRYPTO_add(&store->references, 1, CRYPTO_LOCK_X509_STORE); + return 1; +} + +static int X509_up_ref(X509* cert) { + CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509); + return 1; +} +#endif // OPENSSL_VERSION_NUMBER < 0x10100000L && !OPENSSL_IS_BORINGSSL + + +static X509_STORE* NewRootCertStore() { + if (!root_certs_vector) { + root_certs_vector = new std::vector; + + for (size_t i = 0; i < arraysize(root_certs); i++) { + BIO* bp = NodeBIO::NewFixed(root_certs[i], strlen(root_certs[i])); + X509 *x509 = PEM_read_bio_X509(bp, nullptr, CryptoPemCallback, nullptr); + BIO_free(bp); + + // Parse errors from the built-in roots are fatal. + CHECK_NE(x509, nullptr); + + root_certs_vector->push_back(x509); + } + } + + X509_STORE* store = X509_STORE_new(); + for (auto& cert : *root_certs_vector) { + X509_up_ref(cert); + X509_STORE_add_cert(store, cert); + } + + return store; +} + + void SecureContext::AddCACert(const FunctionCallbackInfo& args) { - bool newCAStore = false; Environment* env = Environment::GetCurrent(args); SecureContext* sc; @@ -702,23 +746,24 @@ void SecureContext::AddCACert(const FunctionCallbackInfo& args) { return env->ThrowTypeError("Bad parameter"); } - if (!sc->ca_store_) { - sc->ca_store_ = X509_STORE_new(); - newCAStore = true; - } - - X509* x509 = LoadX509(env, args[0]); - if (!x509) + BIO* bio = LoadBIO(env, args[0]); + if (!bio) { return; + } - X509_STORE_add_cert(sc->ca_store_, x509); - SSL_CTX_add_client_CA(sc->ctx_, x509); - - X509_free(x509); - - if (newCAStore) { - SSL_CTX_set_cert_store(sc->ctx_, sc->ca_store_); + X509_STORE* cert_store = SSL_CTX_get_cert_store(sc->ctx_); + while (X509* x509 = + PEM_read_bio_X509(bio, nullptr, CryptoPemCallback, nullptr)) { + if (cert_store == root_cert_store) { + cert_store = NewRootCertStore(); + SSL_CTX_set_cert_store(sc->ctx_, cert_store); + } + X509_STORE_add_cert(cert_store, x509); + SSL_CTX_add_client_CA(sc->ctx_, x509); + X509_free(x509); } + + BIO_free_all(bio); } @@ -739,19 +784,26 @@ void SecureContext::AddCRL(const FunctionCallbackInfo& args) { if (!bio) return; - X509_CRL *x509 = + X509_CRL* crl = PEM_read_bio_X509_CRL(bio, nullptr, CryptoPemCallback, nullptr); - if (x509 == nullptr) { + if (crl == nullptr) { BIO_free_all(bio); - return; + return env->ThrowError("Failed to parse CRL"); + } + + X509_STORE* cert_store = SSL_CTX_get_cert_store(sc->ctx_); + if (cert_store == root_cert_store) { + cert_store = NewRootCertStore(); + SSL_CTX_set_cert_store(sc->ctx_, cert_store); } - X509_STORE_add_crl(sc->ca_store_, x509); - X509_STORE_set_flags(sc->ca_store_, X509_V_FLAG_CRL_CHECK | - X509_V_FLAG_CRL_CHECK_ALL); + X509_STORE_add_crl(cert_store, crl); + X509_STORE_set_flags(cert_store, + X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL); + BIO_free_all(bio); - X509_CRL_free(x509); + X509_CRL_free(crl); } @@ -794,28 +846,8 @@ void SecureContext::AddRootCerts(const FunctionCallbackInfo& args) { ClearErrorOnReturn clear_error_on_return; (void) &clear_error_on_return; // Silence compiler warning. - CHECK_EQ(sc->ca_store_, nullptr); - if (!root_cert_store) { - root_cert_store = X509_STORE_new(); - - for (size_t i = 0; i < arraysize(root_certs); i++) { - BIO* bp = NodeBIO::NewFixed(root_certs[i], strlen(root_certs[i])); - if (bp == nullptr) { - return; - } - - X509 *x509 = PEM_read_bio_X509(bp, nullptr, CryptoPemCallback, nullptr); - if (x509 == nullptr) { - BIO_free_all(bp); - return; - } - - X509_STORE_add_cert(root_cert_store, x509); - - BIO_free_all(bp); - X509_free(x509); - } + root_cert_store = NewRootCertStore(); if (!extra_root_certs_file.empty()) { unsigned long err = AddCertsFromFile( // NOLINT(runtime/int) @@ -830,10 +862,9 @@ void SecureContext::AddRootCerts(const FunctionCallbackInfo& args) { } } - sc->ca_store_ = root_cert_store; // Increment reference count so global store is not deleted along with CTX. - CRYPTO_add(&root_cert_store->references, 1, CRYPTO_LOCK_X509_STORE); - SSL_CTX_set_cert_store(sc->ctx_, sc->ca_store_); + X509_STORE_up_ref(root_cert_store); + SSL_CTX_set_cert_store(sc->ctx_, root_cert_store); } @@ -1034,6 +1065,8 @@ void SecureContext::LoadPKCS12(const FunctionCallbackInfo& args) { sc->cert_ = nullptr; } + X509_STORE* cert_store = SSL_CTX_get_cert_store(sc->ctx_); + if (d2i_PKCS12_bio(in, &p12) && PKCS12_parse(p12, pass, &pkey, &cert, &extra_certs) && SSL_CTX_use_certificate_chain(sc->ctx_, @@ -1046,11 +1079,11 @@ void SecureContext::LoadPKCS12(const FunctionCallbackInfo& args) { for (int i = 0; i < sk_X509_num(extra_certs); i++) { X509* ca = sk_X509_value(extra_certs, i); - if (!sc->ca_store_) { - sc->ca_store_ = X509_STORE_new(); - SSL_CTX_set_cert_store(sc->ctx_, sc->ca_store_); + if (cert_store == root_cert_store) { + cert_store = NewRootCertStore(); + SSL_CTX_set_cert_store(sc->ctx_, cert_store); } - X509_STORE_add_cert(sc->ca_store_, ca); + X509_STORE_add_cert(cert_store, ca); SSL_CTX_add_client_CA(sc->ctx_, ca); } ret = true; @@ -1116,10 +1149,14 @@ void SecureContext::SetTicketKeys(const FunctionCallbackInfo& args) { void SecureContext::SetFreeListLength(const FunctionCallbackInfo& args) { +#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(OPENSSL_IS_BORINGSSL) + // |freelist_max_len| was removed in OpenSSL 1.1.0. In that version OpenSSL + // mallocs and frees buffers directly, without the use of a freelist. SecureContext* wrap; ASSIGN_OR_RETURN_UNWRAP(&wrap, args.Holder()); wrap->ctx_->freelist_max_len = args[0]->Int32Value(); +#endif } @@ -2648,9 +2685,40 @@ inline X509* FindRoot(STACK_OF(X509)* sk) { } -// Whitelist check for certs issued by CNNIC. See +inline bool CertIsStartComOrWoSign(X509_NAME* name) { + const unsigned char* startcom_wosign_data; + X509_NAME* startcom_wosign_name; + + for (const auto& dn : StartComAndWoSignDNs) { + startcom_wosign_data = dn.data; + startcom_wosign_name = d2i_X509_NAME(nullptr, &startcom_wosign_data, + dn.len); + if (X509_NAME_cmp(name, startcom_wosign_name) == 0) + return true; + } + + return false; +} + +// Revoke the certificates issued by StartCom or WoSign that has +// notBefore after 00:00:00 on October 21, 2016 (1477008000 in epoch). +inline bool CheckStartComOrWoSign(X509_NAME* root_name, X509* cert) { + if (!CertIsStartComOrWoSign(root_name)) + return true; + + time_t october_21_2016 = static_cast(1477008000); + if (X509_cmp_time(X509_get_notBefore(cert), &october_21_2016) < 0) + return true; + + return false; +} + + +// Whitelist check for certs issued by CNNIC, StartCom and WoSign. See // https://blog.mozilla.org/security/2015/04/02 -// /distrusting-new-cnnic-certificates/ +// /distrusting-new-cnnic-certificates/ and +// https://blog.mozilla.org/security/2016/10/24/ +// distrusting-new-wosign-and-startcom-certificates inline CheckResult CheckWhitelistedServerCert(X509_STORE_CTX* ctx) { unsigned char hash[CNNIC_WHITELIST_HASH_LEN]; unsigned int hashlen = CNNIC_WHITELIST_HASH_LEN; @@ -2669,11 +2737,14 @@ inline CheckResult CheckWhitelistedServerCert(X509_STORE_CTX* ctx) { root_name = X509_get_subject_name(root_cert); } + X509* leaf_cert = sk_X509_value(chain, 0); + if (!CheckStartComOrWoSign(root_name, leaf_cert)) + return CHECK_CERT_REVOKED; + // When the cert is issued from either CNNNIC ROOT CA or CNNNIC EV // ROOT CA, check a hash of its leaf cert if it is in the whitelist. if (X509_NAME_cmp(root_name, cnnic_name) == 0 || X509_NAME_cmp(root_name, cnnic_ev_name) == 0) { - X509* leaf_cert = sk_X509_value(chain, 0); int ret = X509_digest(leaf_cert, EVP_sha256(), hash, &hashlen); CHECK(ret); @@ -3577,8 +3648,8 @@ void Hmac::HmacInit(const FunctionCallbackInfo& args) { bool Hmac::HmacUpdate(const char* data, int len) { if (!initialised_) return false; - HMAC_Update(&ctx_, reinterpret_cast(data), len); - return true; + int r = HMAC_Update(&ctx_, reinterpret_cast(data), len); + return r == 1; } diff --git a/src/node_crypto.h b/src/node_crypto.h index 9a4d936f305ee1..f09ce3e7cab520 100644 --- a/src/node_crypto.h +++ b/src/node_crypto.h @@ -76,7 +76,6 @@ class SecureContext : public BaseObject { static void Initialize(Environment* env, v8::Local target); - X509_STORE* ca_store_; SSL_CTX* ctx_; X509* cert_; X509* issuer_; @@ -131,7 +130,6 @@ class SecureContext : public BaseObject { SecureContext(Environment* env, v8::Local wrap) : BaseObject(env, wrap), - ca_store_(nullptr), ctx_(nullptr), cert_(nullptr), issuer_(nullptr) { @@ -140,20 +138,19 @@ class SecureContext : public BaseObject { } void FreeCTXMem() { - if (ctx_) { - env()->isolate()->AdjustAmountOfExternalAllocatedMemory(-kExternalSize); - SSL_CTX_free(ctx_); - if (cert_ != nullptr) - X509_free(cert_); - if (issuer_ != nullptr) - X509_free(issuer_); - ctx_ = nullptr; - ca_store_ = nullptr; - cert_ = nullptr; - issuer_ = nullptr; - } else { - CHECK_EQ(ca_store_, nullptr); + if (!ctx_) { + return; } + + env()->isolate()->AdjustAmountOfExternalAllocatedMemory(-kExternalSize); + SSL_CTX_free(ctx_); + if (cert_ != nullptr) + X509_free(cert_); + if (issuer_ != nullptr) + X509_free(issuer_); + ctx_ = nullptr; + cert_ = nullptr; + issuer_ = nullptr; } }; diff --git a/src/node_http_parser.cc b/src/node_http_parser.cc index 23344b385b0dad..3e1a9d359e824e 100644 --- a/src/node_http_parser.cc +++ b/src/node_http_parser.cc @@ -16,7 +16,7 @@ #include // free() #include // strdup() -// This is a binding to http_parser (https://github.com/joyent/http-parser) +// This is a binding to http_parser (https://github.com/nodejs/http-parser) // The goal is to decouple sockets from parsing for more javascript-level // agility. A Buffer is read from a socket and passed to parser.execute(). // The parser then issues callbacks with slices of the data diff --git a/src/node_os.cc b/src/node_os.cc index fb62c768a4e31f..389064610c7923 100644 --- a/src/node_os.cc +++ b/src/node_os.cc @@ -67,7 +67,7 @@ static void GetOSType(const FunctionCallbackInfo& args) { } rval = info.sysname; #else // __MINGW32__ - rval ="Windows_NT"; + rval = "Windows_NT"; #endif // __POSIX__ args.GetReturnValue().Set(OneByteString(env->isolate(), rval)); diff --git a/src/node_v8.cc b/src/node_v8.cc index a1122e57f13cac..75781ec478e80d 100644 --- a/src/node_v8.cc +++ b/src/node_v8.cc @@ -56,8 +56,8 @@ void UpdateHeapStatisticsArrayBuffer(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); HeapStatistics s; env->isolate()->GetHeapStatistics(&s); - uint32_t* const buffer = env->heap_statistics_buffer(); -#define V(index, name, _) buffer[index] = static_cast(s.name()); + double* const buffer = env->heap_statistics_buffer(); +#define V(index, name, _) buffer[index] = static_cast(s.name()); HEAP_STATISTICS_PROPERTIES(V) #undef V } @@ -67,13 +67,13 @@ void UpdateHeapSpaceStatisticsBuffer(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); HeapSpaceStatistics s; Isolate* const isolate = env->isolate(); - uint32_t* buffer = env->heap_space_statistics_buffer(); + double* buffer = env->heap_space_statistics_buffer(); for (size_t i = 0; i < number_of_heap_spaces; i++) { isolate->GetHeapSpaceStatistics(&s, i); size_t const property_offset = i * kHeapSpaceStatisticsPropertiesCount; #define V(index, name, _) buffer[property_offset + index] = \ - static_cast(s.name()); + static_cast(s.name()); HEAP_SPACE_STATISTICS_PROPERTIES(V) #undef V } @@ -102,7 +102,7 @@ void InitializeV8Bindings(Local target, "updateHeapStatisticsArrayBuffer", UpdateHeapStatisticsArrayBuffer); - env->set_heap_statistics_buffer(new uint32_t[kHeapStatisticsPropertiesCount]); + env->set_heap_statistics_buffer(new double[kHeapStatisticsPropertiesCount]); const size_t heap_statistics_buffer_byte_length = sizeof(*env->heap_statistics_buffer()) * kHeapStatisticsPropertiesCount; @@ -148,7 +148,7 @@ void InitializeV8Bindings(Local target, UpdateHeapSpaceStatisticsBuffer); env->set_heap_space_statistics_buffer( - new uint32_t[kHeapSpaceStatisticsPropertiesCount * number_of_heap_spaces]); + new double[kHeapSpaceStatisticsPropertiesCount * number_of_heap_spaces]); const size_t heap_space_statistics_buffer_byte_length = sizeof(*env->heap_space_statistics_buffer()) * diff --git a/src/node_version.h b/src/node_version.h index fb497ea355fab0..abd1236a613feb 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -8,7 +8,7 @@ #define NODE_VERSION_IS_LTS 1 #define NODE_VERSION_LTS_CODENAME "Argon" -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index 5bcb40f5d37fe5..4d7939bdfb10ed 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -82,7 +82,11 @@ void PipeWrap::Initialize(Local target, env->SetProtoMethod(t, "unref", HandleWrap::Unref); env->SetProtoMethod(t, "ref", HandleWrap::Ref); +#ifdef _WIN32 StreamWrap::AddMethods(env, t); +#else + StreamWrap::AddMethods(env, t, StreamBase::kFlagHasWritev); +#endif env->SetProtoMethod(t, "bind", Bind); env->SetProtoMethod(t, "listen", Listen); diff --git a/test/.eslintrc b/test/.eslintrc.yaml similarity index 100% rename from test/.eslintrc rename to test/.eslintrc.yaml diff --git a/test/common.js b/test/common.js index a72560be77a3a9..3813b07998cb6c 100644 --- a/test/common.js +++ b/test/common.js @@ -9,7 +9,7 @@ const stream = require('stream'); const util = require('util'); const testRoot = process.env.NODE_TEST_DIR ? - path.resolve(process.env.NODE_TEST_DIR) : __dirname; + fs.realpathSync(process.env.NODE_TEST_DIR) : __dirname; exports.testDir = __dirname; exports.fixturesDir = path.join(exports.testDir, 'fixtures'); @@ -360,8 +360,7 @@ process.on('exit', function() { if (!exports.globalCheck) return; var leaked = leakedGlobals(); if (leaked.length > 0) { - console.error('Unknown globals: %s', leaked); - assert.ok(false, 'Unknown global found'); + exports.fail(`Unexpected global(s) found: ${leaked.join(', ')}`); } }); diff --git a/test/doctool/test-doctool-html.js b/test/doctool/test-doctool-html.js index bd21e21d9563d2..442381b54d7b72 100644 --- a/test/doctool/test-doctool-html.js +++ b/test/doctool/test-doctool-html.js @@ -72,11 +72,18 @@ const testData = [ '

I exist and am being linked to.

' + '' }, + { + file: path.join(common.fixturesDir, 'sample_document.md'), + html: '
  1. fish
  2. fish

  3. Redfish

  4. ' + + '
  5. Bluefish
', + analyticsId: 'UA-67020396-1' + }, ]; -testData.forEach(function(item) { +testData.forEach((item) => { // Normalize expected data by stripping whitespace const expected = item.html.replace(/\s/g, ''); + const includeAnalytics = typeof item.analyticsId !== 'undefined'; fs.readFile(item.file, 'utf8', common.mustCall((err, input) => { assert.ifError(err); @@ -89,6 +96,7 @@ testData.forEach(function(item) { filename: 'foo', template: 'doc/template.html', nodeVersion: process.version, + analytics: item.analyticsId, }, common.mustCall((err, output) => { assert.ifError(err); @@ -96,7 +104,17 @@ testData.forEach(function(item) { const actual = output.replace(/\s/g, ''); // Assert that the input stripped of all whitespace contains the // expected list - assert.notEqual(actual.indexOf(expected), -1); + assert.notStrictEqual(actual.indexOf(expected), -1); + + // Testing the insertion of Google Analytics script when + // an analytics id is provided. Should not be present by default + if (includeAnalytics) { + assert.notStrictEqual(actual.indexOf('google-analytics.com'), -1, + 'Google Analytics script was not present'); + } else { + assert.strictEqual(actual.indexOf('google-analytics.com'), -1, + 'Google Analytics script was present'); + } })); })); })); diff --git a/test/doctool/test-doctool-json.js b/test/doctool/test-doctool-json.js index 520c79bef8bcda..ae7b2007b7d2ef 100644 --- a/test/doctool/test-doctool-json.js +++ b/test/doctool/test-doctool-json.js @@ -18,7 +18,7 @@ const json = require('../../tools/doc/json.js'); // Test data is a list of objects with two properties. // The file property is the file path. // The json property is some json which will be generated by the doctool. -var testData = [ +const testData = [ { file: path.join(common.fixturesDir, 'sample_document.md'), json: { @@ -136,10 +136,10 @@ var testData = [ } ]; -testData.forEach(function(item) { - fs.readFile(item.file, 'utf8', common.mustCall(function(err, input) { +testData.forEach((item) => { + fs.readFile(item.file, 'utf8', common.mustCall((err, input) => { assert.ifError(err); - json(input, 'foo', common.mustCall(function(err, output) { + json(input, 'foo', common.mustCall((err, output) => { assert.ifError(err); assert.deepStrictEqual(output, item.json); })); diff --git a/test/fixtures/cluster-preload.js b/test/fixtures/cluster-preload.js index 6637b418babb0d..f62bc20551c1f4 100644 --- a/test/fixtures/cluster-preload.js +++ b/test/fixtures/cluster-preload.js @@ -4,8 +4,8 @@ var assert = require('assert'); // this module is used as a preload module. It should have a parent with the // module search paths initialized from the current working directory assert.ok(module.parent); -var expectedPaths = require('module')._nodeModulePaths(process.cwd()); -assert.deepEqual(module.parent.paths, expectedPaths); +const expectedPaths = require('module')._nodeModulePaths(process.cwd()); +assert.deepStrictEqual(module.parent.paths, expectedPaths); var cluster = require('cluster'); cluster.isMaster || process.exit(42 + cluster.worker.id); // +42 to distinguish diff --git a/test/fixtures/keys/Makefile b/test/fixtures/keys/Makefile index 277734aa174562..c7390eda0eefc4 100644 --- a/test/fixtures/keys/Makefile +++ b/test/fixtures/keys/Makefile @@ -57,6 +57,20 @@ fake-cnnic-root-cert.pem: fake-cnnic-root.cnf fake-cnnic-root-key.pem -out fake-cnnic-root-cert.pem \ -config fake-cnnic-root.cnf +# +# Create Fake StartCom Root Certificate Authority: fake-startcom-root +# +fake-startcom-root-key.pem: + openssl genrsa -out fake-startcom-root-key.pem 2048 + +fake-startcom-root-cert.pem: fake-startcom-root.cnf \ + fake-startcom-root-key.pem + openssl req -new -x509 -days 9999 -config \ + fake-startcom-root.cnf -key fake-startcom-root-key.pem -out \ + fake-startcom-root-cert.pem + echo '01' > fake-startcom-root-serial + touch fake-startcom-root-database.txt + # # agent1 is signed by ca1. # @@ -254,6 +268,60 @@ agent7-cert.pem: agent7-csr.pem fake-cnnic-root-cert.pem fake-cnnic-root-key.pem agent7-verify: agent7-cert.pem fake-cnnic-root-cert.pem openssl verify -CAfile fake-cnnic-root-cert.pem agent7-cert.pem +# +# agent8 is signed by fake-startcom-root with notBefore +# of Oct 20 23:59:59 2016 GMT +# + +agent8-key.pem: + openssl genrsa -out agent8-key.pem 2048 + +agent8-csr.pem: agent8.cnf agent8-key.pem + openssl req -new -config agent8.cnf -key agent8-key.pem \ + -out agent8-csr.pem + +agent8-cert.pem: agent8-csr.pem + openssl ca \ + -config fake-startcom-root.cnf \ + -keyfile fake-startcom-root-key.pem \ + -cert fake-startcom-root-cert.pem \ + -batch \ + -days 9999 \ + -passin "pass:password" \ + -in agent8-csr.pem \ + -startdate 20161020235959Z \ + -notext -out agent8-cert.pem + + +agent8-verify: agent8-cert.pem fake-startcom-root-cert.pem + openssl verify -CAfile fake-startcom-root-cert.pem \ + agent8-cert.pem + + +# +# agent9 is signed by fake-startcom-root with notBefore +# of Oct 21 00:00:01 2016 GMT +# +agent9-key.pem: + openssl genrsa -out agent9-key.pem 2048 + +agent9-csr.pem: agent9.cnf agent9-key.pem + openssl req -new -config agent9.cnf -key agent9-key.pem \ + -out agent9-csr.pem + + +agent9-cert.pem: agent9-csr.pem + openssl ca \ + -config fake-startcom-root.cnf \ + -keyfile fake-startcom-root-key.pem \ + -cert fake-startcom-root-cert.pem \ + -batch \ + -days 9999 \ + -passin "pass:password" \ + -in agent9-csr.pem \ + -startdate 20161021000001Z \ + -notext -out agent9-cert.pem + ec-key.pem: openssl ecparam -genkey -out ec-key.pem -name prime256v1 diff --git a/test/fixtures/keys/agent8-cert.pem b/test/fixtures/keys/agent8-cert.pem new file mode 100644 index 00000000000000..86de1d44a64a98 --- /dev/null +++ b/test/fixtures/keys/agent8-cert.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUDCCAjgCAQEwDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNV +BAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRp +ZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5MCAYDzIwMTYxMDIwMjM1OTU5WhcNNDQwMzIxMTAwNjM5WjBdMQsw +CQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZO +T0RFSlMxDzANBgNVBAsTBmFnZW50ODESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzkVSP6XxWpBlSjqqavwOhpp36aFJ +qLK7fRpxR+f0PdQ9WJajDEicxwKWGFqQBE+d5BjqrAD59L2QGZQ2VOF9VLZyFz3F +9TIlkd4yt9Od0qE98yIouDBNWu7UZqvNynAe5caD5i1MgyIUQqIUOnZwM21hwqYN +N/OESf38A8Tfuvh3ALUn7zBEVyUPWIWTYPhFHSCWIsS2URZ/qDLk8GavphkqXdFB +ii3V8Th5niPtpIsRF6Qhwh8SK+s0zh53o0qkmCNpXLd/PJQQAwC70WRq7ncL4D+U +C1gnDL0j9SzojXQu31kXs8UZTa7RFnx5r+gDiA/gGrLs4IiwDJhVHMx0nQIDAQAB +MA0GCSqGSIb3DQEBCwUAA4IBAQA7iMlm+rgZnlps+LFsoXG4dGNPaOhKI9t/XBrO +6O64LLyx/FPIQSaYi130QNB7Zy0uw8xqrH6cGRTJ9RCfBFFP4rzgIX3wEAHnmwMr +i4dGEixBUIIjhw6fAVxAhrkzmgUpUt0qIP9otGgESEYXIg7bFkXIHit0Im1VOdvf ++LnUKZw9o7UEesKIDVkuAsjoKKkrsO0kdf0dgAj6Ix5xmAtBsDvkH0aOSdPfTZG6 +LQrnZf/quBotog3NmDzrvQaH8GNpTJcYNjKlxD2z0PvQUyp0FD8oCC+oD+EGv2zZ +65scEXU/n8kTmdJkCjx4nb39HttYzOlNlTgMxAfxgL7A/PcT +-----END CERTIFICATE----- diff --git a/test/fixtures/keys/agent8-csr.pem b/test/fixtures/keys/agent8-csr.pem new file mode 100644 index 00000000000000..af749bcd1c8287 --- /dev/null +++ b/test/fixtures/keys/agent8-csr.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICxzCCAa8CAQAwXTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH +EwJTRjEPMA0GA1UEChMGTk9ERUpTMQ8wDQYDVQQLEwZhZ2VudDgxEjAQBgNVBAMT +CWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM5FUj+l +8VqQZUo6qmr8Doaad+mhSaiyu30acUfn9D3UPViWowxInMcClhhakARPneQY6qwA ++fS9kBmUNlThfVS2chc9xfUyJZHeMrfTndKhPfMiKLgwTVru1GarzcpwHuXGg+Yt +TIMiFEKiFDp2cDNtYcKmDTfzhEn9/APE37r4dwC1J+8wRFclD1iFk2D4RR0gliLE +tlEWf6gy5PBmr6YZKl3RQYot1fE4eZ4j7aSLERekIcIfEivrNM4ed6NKpJgjaVy3 +fzyUEAMAu9Fkau53C+A/lAtYJwy9I/Us6I10Lt9ZF7PFGU2u0RZ8ea/oA4gP4Bqy +7OCIsAyYVRzMdJ0CAwEAAaAlMCMGCSqGSIb3DQEJBzEWExRBIGNoYWxsZW5nZSBw +YXNzd29yZDANBgkqhkiG9w0BAQUFAAOCAQEAykAWr5pOZh1BMc7NZgc66J16VkjN +KM2deMQNl7r3BFB336At+zmpudnjdT/tPaH34FT/Idh/DPfiSdpuDQWDA+E7xady +S7KoKfNesPFjV4rR1WgNtoix0B5EaaNxdR8ljwL30N/LbsMDWxIK7rWyhvuw3DXr +C90PbsOTCLbW1HGItgYCQFJnpXK1O1Vx0Bo55F//oxDGVTzkUqb0lsVGHLLCg0s2 +DxX3++FqFy/NjzZ5R/k1o+WIom1PzhLXJ+cqQsqYT9kBIVHTtvTAnDM70dZ8EeSW +/O4w+gb+OSJjClz7p4DuX4idDG+0cISxBOYFPyTFlGrXQ0ZXULP4pihsUA== +-----END CERTIFICATE REQUEST----- diff --git a/test/fixtures/keys/agent8-key.pem b/test/fixtures/keys/agent8-key.pem new file mode 100644 index 00000000000000..c1773f7cff4d02 --- /dev/null +++ b/test/fixtures/keys/agent8-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAzkVSP6XxWpBlSjqqavwOhpp36aFJqLK7fRpxR+f0PdQ9WJaj +DEicxwKWGFqQBE+d5BjqrAD59L2QGZQ2VOF9VLZyFz3F9TIlkd4yt9Od0qE98yIo +uDBNWu7UZqvNynAe5caD5i1MgyIUQqIUOnZwM21hwqYNN/OESf38A8Tfuvh3ALUn +7zBEVyUPWIWTYPhFHSCWIsS2URZ/qDLk8GavphkqXdFBii3V8Th5niPtpIsRF6Qh +wh8SK+s0zh53o0qkmCNpXLd/PJQQAwC70WRq7ncL4D+UC1gnDL0j9SzojXQu31kX +s8UZTa7RFnx5r+gDiA/gGrLs4IiwDJhVHMx0nQIDAQABAoIBAHHp5KdT3Ht4XQfm +aDEXLGp3qhtzQDuTIWnQjZj5Z3Ax4wMmhbsF6tcY/Y1LjldjJL5QaGE/VMstWQRX +Tr4HnXCIJW/iZI2p+Qean4XXr0QgWhcI2VYHDuFWHiTpYogW7WlV/YfDooqU6n12 +BxfWStaL5L5bd9dbe8ZlJqVqN2iISfqGNIz9YKM04rHycTcicNmf0J0smkHlnHJE +ROQR73IXjDDOmkwdG75qyGRBQ0j0KEDu//n1axcOKf48F+8BQk2PFMq+RhkGGqJD +zTQK3kB33HRWeNWbykLPzYGcPtSlvaecCTc/q9wbbxh5AFlvSrPz3VzdRHECocM3 +v/o2vqECgYEA/uZib1ZYczuihcvLKxo8e/IBNYUKUcyosHDqAmJ5q8Y+Vg35ACfM +mJAhT1SXXAmm2tHuTnztfLDMQAOGVItuf5U8nuJYuWrvhMCtBT40XPeUVPD8b2D1 +9y5EipiB7huH8kMb1aAPUNgQhmqT93+4qcGf6PcNTkk6uHCCXFZEc7UCgYEAzyk1 +/T+Ah3p9+c1s+AjqkWj3Qa9lOKclJOT2O88AG+4fGQhSdUvkLDAMX3L6ri3gVZzr +wH3DJIwJx1uCW4eNJFVmh8AyP4SkfzQp1FqsIzBMQuPz6Hqtclh/UPx1yOe3NseO +xVM6Z5RbOOWyDaWxxbQHZnHkqSKcTB8K1lJ/XkkCgYAaStlMcrOc70HMW0ERqRsk +DcpiIt71oQ6lZIA+zrmOJly3s6lDgtdvxS4qaKdULwqu94iFQA2fFv16fOKWReuX +7WTbXq2YMpeSMe2m5Mux6ze5q0HemznDzVn0kdaVIPHc418zodbyl9bchpHMrbf2 +iqpb9V/B+3u7Gp/Xtm5JIQKBgBFrjr2wBFfgJg3Gh35ICamWoQwl+qYL8CStGEOp +QYIXwQey2nRAoHxSwgeYvJm/A9lPK8fxC2LcX8oi2NBnkqfWgpuxvsf2mHqV4VqZ +EVaYLiGF17HZ9xHhfTtLL4Boc9CocUoImKWzJQSg1BsvrsZIQEMOGsNaRLhl99xT +7Z/5AoGBAIxgzOGLVVrIv8vRc4YouPf0OGBmUawnEZxYVD1Mo4Tt97XjxH93B1iz +hof62zDCL7WEdKuwnOs1towBmLjC7qrAbkUgNVYmI5sG9c8+1NKClTOJGsHHiMLF +n8GxnsNU5FVTmJ/PZfOU+eru7uDYZHTkii0tkaHWUzg13pkhka5E +-----END RSA PRIVATE KEY----- diff --git a/test/fixtures/keys/agent8.cnf b/test/fixtures/keys/agent8.cnf new file mode 100644 index 00000000000000..bb50a0e7199283 --- /dev/null +++ b/test/fixtures/keys/agent8.cnf @@ -0,0 +1,17 @@ +[ req ] +default_bits = 2048 +days = 999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = US +ST = CA +L = SF +O = NODEJS +OU = agent8 +CN = localhost + +[ req_attributes ] +challengePassword = A challenge password diff --git a/test/fixtures/keys/agent9-cert.pem b/test/fixtures/keys/agent9-cert.pem new file mode 100644 index 00000000000000..196922986cdb6e --- /dev/null +++ b/test/fixtures/keys/agent9-cert.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUDCCAjgCAQIwDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNV +BAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRp +ZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5MCAYDzIwMTYxMDIxMDAwMDAxWhcNNDQwMzIxMTAwNzAyWjBdMQsw +CQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZO +T0RFSlMxDzANBgNVBAsTBmFnZW50OTESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApT6nASSx9e2i/t0aHSd9BxMRD92o +33/iaiXWzBOKMJp7jxCWAg6SnpjrFsyjTxaAqg+e1zlm10YBT6DholstffzQqK2x +TKGVOQK4jxX23wJlrn5mDk0fagBtY49L1KFy8DxJqKgt7uxz61GGUWwKWXG7Vnga +bkqDd9o3ZF7bOq7mMQvfDzPrwYI8uTjTxR8R19uxNNOGtHMTnwvDeczTmtTox8U+ +4N2hN2scDZvRBx5aQAtnXRyZhAokAJMYojinx9iqlVFQi3ct52LIhsca6ympfDc2 +0yA4aSVfoW7NlqsnvrTOV4nt3UbrxGGpiE7Em8Hdcw2EMF+jqCTLGtsqYQIDAQAB +MA0GCSqGSIb3DQEBCwUAA4IBAQCMjKFycVQh7Puz/FpQh3NhJ99Ic3rzr+3nAKFD +4Kcl3L8szH3zjLCw46/y2jqPiAbg2zg9miYkI/2W/G+m2VQEQvp2SwjVr/Rj2Soe +iTonruUpDFF7LG01q3kpZ7nYWRGvVgn5D9BGk4/SWuzxiWRdwlzJf2e8cXLExVS0 +0CgRsb5nRoZ+RZmVIrGMfIi8CI7uTlcHtQzD7B7gpHtOSMlQoSSeqOy6F498duvl +QhhQhJBxmjSegw/lawWQSDFArJimK/rwyb6ZFbRfBgg6o/k5W9G5l0oG5abQMp+/ +u8Fd+QUNwR6OovE0AqL6wNHCnqzNnihTL6/hRVer6i5Hfxmb +-----END CERTIFICATE----- diff --git a/test/fixtures/keys/agent9-csr.pem b/test/fixtures/keys/agent9-csr.pem new file mode 100644 index 00000000000000..bba87d631f15b3 --- /dev/null +++ b/test/fixtures/keys/agent9-csr.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICxzCCAa8CAQAwXTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH +EwJTRjEPMA0GA1UEChMGTk9ERUpTMQ8wDQYDVQQLEwZhZ2VudDkxEjAQBgNVBAMT +CWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKU+pwEk +sfXtov7dGh0nfQcTEQ/dqN9/4mol1swTijCae48QlgIOkp6Y6xbMo08WgKoPntc5 +ZtdGAU+g4aJbLX380KitsUyhlTkCuI8V9t8CZa5+Zg5NH2oAbWOPS9ShcvA8Saio +Le7sc+tRhlFsCllxu1Z4Gm5Kg3faN2Re2zqu5jEL3w8z68GCPLk408UfEdfbsTTT +hrRzE58Lw3nM05rU6MfFPuDdoTdrHA2b0QceWkALZ10cmYQKJACTGKI4p8fYqpVR +UIt3LediyIbHGuspqXw3NtMgOGklX6FuzZarJ760zleJ7d1G68RhqYhOxJvB3XMN +hDBfo6gkyxrbKmECAwEAAaAlMCMGCSqGSIb3DQEJBzEWExRBIGNoYWxsZW5nZSBw +YXNzd29yZDANBgkqhkiG9w0BAQUFAAOCAQEAKlz52i1TpqNFQQu2YCl2YlTKbu2s ++92Qq+9b8wKoTweEFxDYtfq8d6rgYtetDbJDh+CDSjG3REINHtbPB0BjFdmZq/Q6 +7JHLjmWKacmhaZJIp6xtrAX93qXYfbqH2S/DNSAO1e1sUa/gKL+wuVcrM8My7mzo +cMEgc7mHJCbSjYIcYPELas+rADoCE4mgiX8wwYQjFqxj/cdlcMzVS3ZuARAiPzA7 +60Zk3/NnbXd/OBOcf/FvbrYIQ45eV4JlMowtcdLtxP91N5/X3BBMFsXt4mPoXETC +V78wipSWtfiKTox1Ze7PSJsYm9E9TOYYPh9kSGizIFzrgnk9H15+Iy5Ixg== +-----END CERTIFICATE REQUEST----- diff --git a/test/fixtures/keys/agent9-key.pem b/test/fixtures/keys/agent9-key.pem new file mode 100644 index 00000000000000..1156fddfa68d4b --- /dev/null +++ b/test/fixtures/keys/agent9-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEApT6nASSx9e2i/t0aHSd9BxMRD92o33/iaiXWzBOKMJp7jxCW +Ag6SnpjrFsyjTxaAqg+e1zlm10YBT6DholstffzQqK2xTKGVOQK4jxX23wJlrn5m +Dk0fagBtY49L1KFy8DxJqKgt7uxz61GGUWwKWXG7VngabkqDd9o3ZF7bOq7mMQvf +DzPrwYI8uTjTxR8R19uxNNOGtHMTnwvDeczTmtTox8U+4N2hN2scDZvRBx5aQAtn +XRyZhAokAJMYojinx9iqlVFQi3ct52LIhsca6ympfDc20yA4aSVfoW7NlqsnvrTO +V4nt3UbrxGGpiE7Em8Hdcw2EMF+jqCTLGtsqYQIDAQABAoIBAE7FXAUOggry2hVW +PuGQ9mfN7f87MgpAwyTInukvk1tx+N6NEIUwfzI9QSvgJyVHW9Q1mAmO4nhSdcOI +tKaZgkkhoDIYgoE+MY04v9Ptq35JfUE+HdZJa2UziPHB2Gsm/0yH4LEWYrcXXnbZ +qQbdUt2qepxQqoDS4nLawjcFhMom24ns24eMCsFW7yrxhyvQwFKqGOKXauCpClp2 +oPXhd2wljutuIGJjMmeqMw7CuyfZMee6BsuXNWWr/kso0NaQwxKoFnGlyaOl6oUV +ypr5ADXv0NNaSqDgyfEfJedsGQul+WWnkjz6PFbWZtbG5SIKb5PCJ2aWD7mvcHdI +85BL4jUCgYEA0yPogvmlK/hSpckk/AkRtHWwjUdkgdoZzxiJV/D01y8EtB+yL46t +Gzl23Y1VtLXxn+CZdj2putS5z1Rg1LA0oMZ+TwhxGskURBPP7mym83Qn1huRcnWw +df9flCg4IwRLqI6QfsQ2Q6j549j5u8P+tqVi/yZQY0V2SGcXTXaqIksCgYEAyFpy +24+AW33ypNxr9sOIx2YQyn0UDK2K6LQYRmjwhpCZEtBdoUqKGP/9UUycM4TN9D32 +p0le+3TJVk9tVqyvwFeGBkguO/3dXD6KTsqrCfMFNj/R6QRYFEaLWjkG8EI5TXOK +a/CbhtyGaRY5QzwLRjLdEYIph3r1d2uedVzwGoMCgYEAvPV59R2u8LcAYFavvs/v +BG3/X7DxBjVGu8zdvdJrjNkLgJiNQ3qQ+bhn5MfEWEIsyESdkvCEoiwXTrHZJv+7 +WdfK2rhXYP1sIbEJefvLPj5KGJf7h1BEaJXv2AxWkSAbBfLw5kJ7vfnQClX4yk4R ++yvweSC0+OMFhK6ecDku8hkCgYAJPRJ6yV0z2tTrgTaBRHb0KuKvU6EvDHmRTWyp +IoGk0tocIfuPSm6fxH4b15qETaVpk8nh4OI+Wh5GmpcCHihkiCSn+YAYSBaDAGdE +RtgoN0qQO9UkF40wMiiO2n5VadhWl/NUEt45E8Ym5l1xmj0y2XmUKxpbIvJatV2z +L7vqnQKBgCuV47rGYLaPz+gVgwIz0PvNFgp2fdSBYYQUf70XsaEU1bQtim6q5jxd ++ePUiT65k42Iw7oLWyGtxdyxmmKgQ18i5aDNjT2SLr3RAC2BSR5Fs1W1PLi24nV6 +QW7fepI9tOBTbwbLG8ARRzx2YXrBf9PqvmDbrMiTi0WGFGlVJatX +-----END RSA PRIVATE KEY----- diff --git a/test/fixtures/keys/agent9.cnf b/test/fixtures/keys/agent9.cnf new file mode 100644 index 00000000000000..a9f5a5f16a3a10 --- /dev/null +++ b/test/fixtures/keys/agent9.cnf @@ -0,0 +1,17 @@ +[ req ] +default_bits = 2048 +days = 999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no + +[ req_distinguished_name ] +C = US +ST = CA +L = SF +O = NODEJS +OU = agent9 +CN = localhost + +[ req_attributes ] +challengePassword = A challenge password diff --git a/test/fixtures/keys/fake-startcom-root-cert.pem b/test/fixtures/keys/fake-startcom-root-cert.pem new file mode 100644 index 00000000000000..b3ebbacf753d6a --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-cert.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDjTCCAnWgAwIBAgIJAKDrU4iaFPb+MA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNV +BAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUg +RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNjExMDQwOTUwMTNaFw00NDAzMjEw +OTUwMTNaMH0xCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSsw +KQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYD +VQQDEyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBALvhAZtGU3u3uyB4lHn5X85XJdyPAnOY0hGc +SVMzfQ/BBEvBPkcdhJvZPLqcWTnJplsJXH+GHz9q73DbyLekdF/f6dNVcRmDjvZq +pZ6KgT8D4GmudNPMEuHs9+bqI+l5p7Mh1mEmot5JYtXvGD3UiN2ZUQ/trhf5xiJq +MEaiQHBxhJESkY+RYV2GK0njCJ2ypmtAAzyGUlNgHqxBy1PrBBqh0xbSOa2pwRyz +9u7EkYN4BCQKNCBJbOaX9rH+j836YlEHEymutjYDuYiHaOve0yJCHsQqsx7+p9aB +UxCS9mTj9q9bz9GJR9tfT04+HmQRjtSZYt7fHIixgS0vT4/6QlsCAwEAAaMQMA4w +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAiIgJ9EGWepY/Qk6n6Kcj +YQFZXeV6ugnWz96sxYc0xmo/XNkYQFLxVneyWanlUxAbvScEdC8rJ5rUrwVMhfaS +goneP2Otjcg0XcMrsf5RaJk0H8uGUdvdgWUHO85pseMOFgqXxJgEux7wcFS41qhw +thc/obZ5keOPJf3tsOffV5OJc6owwgaviz3RNFRJUleZU5r3swjWIEDK89sz9q+S +qcwostbKRrEcjyltblhFKR9s4Qyn9FYWntPApFHq7M0/jA/4iiHRcltFfc19mslb +lhRBZZ/vds3VEtfs7uPhcodXBTv5d5xUk6pybSSFhKTTtHc8OpdvbM+5LchzTc23 +pA== +-----END CERTIFICATE----- diff --git a/test/fixtures/keys/fake-startcom-root-csr.pem b/test/fixtures/keys/fake-startcom-root-csr.pem new file mode 100644 index 00000000000000..56da4e65b4a4fe --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-csr.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIC5zCCAc8CAQAwfTELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0 +ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx +KTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAww1iG1Oq6uIEN5u4W0jWnDFvaKGp +R6XSYPK3D1VJTqr7XUfzbVG2Acc5B7WTmerFsxOADXe8kpC3U6QxcyLvMv90Bpju +dasttLnoBU2XqJxWTpmJyM8RfbSZEKfNIdKzG2uQQVHIJOV/bm6yhQIT2cDKNZDx +M0OPiCeeQMezD4/Y98zFDyWjTI2zW6kyBzdjPSLJ3DMJs+4EC6LJhKrp9kBbJHhU +QdIrQ1C3ycJ0lKv8uV8xWsgz/CsPkp92H/iUDxBnFgMcdFmgt/XgPDf1Q9ipfq7B +5Ef8RlQuDsqer+/UPOXLHWHtE+5QbkL4hzCjJEszkl5QbSPdiK1rcIkEvQIDAQAB +oCUwIwYJKoZIhvcNAQkHMRYTFEEgY2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3 +DQEBCwUAA4IBAQCwvK3cFAA9ShrFNhSuZ//xFgrXxqQXS4o571jDCLYh+QAgcRUU +ATPM0GQ4CKUR3gWD14Ji922PiVZCpKgvkEVrvMYq6jgydT2urki0hL/po7msdnLQ +2FWMwgpINaTmhmUNBxHBQbopW4HWDzcCfSQwGN/iCElNmawXGIN1LRcDAl08h/cW +hTP9agZXpmoZ2wHg+ZRHcJwJm4QL4Rm7JfyNN3fZWUFgn3Pfkwgiu9PMhU92KRU/ +5PJ3tcyw9qSQJsw6CPuijRI9kaKdFIj6BsOGmsSyYq9OoqtlfqXqgXXv3XfKQmmh +Hntg6KSQhReXDHCSTgtBZFa6+kwg3mgr8I7N +-----END CERTIFICATE REQUEST----- diff --git a/test/fixtures/keys/fake-startcom-root-database.txt b/test/fixtures/keys/fake-startcom-root-database.txt new file mode 100644 index 00000000000000..b1f582201ae32d --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-database.txt @@ -0,0 +1,2 @@ +V 440321100639Z 01 unknown /C=US/ST=CA/L=SF/O=NODEJS/OU=agent8/CN=localhost +V 440321100702Z 02 unknown /C=US/ST=CA/L=SF/O=NODEJS/OU=agent9/CN=localhost diff --git a/test/fixtures/keys/fake-startcom-root-database.txt.attr b/test/fixtures/keys/fake-startcom-root-database.txt.attr new file mode 100644 index 00000000000000..8f7e63a3475ce8 --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-database.txt.attr @@ -0,0 +1 @@ +unique_subject = yes diff --git a/test/fixtures/keys/fake-startcom-root-database.txt.attr.old b/test/fixtures/keys/fake-startcom-root-database.txt.attr.old new file mode 100644 index 00000000000000..8f7e63a3475ce8 --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-database.txt.attr.old @@ -0,0 +1 @@ +unique_subject = yes diff --git a/test/fixtures/keys/fake-startcom-root-database.txt.old b/test/fixtures/keys/fake-startcom-root-database.txt.old new file mode 100644 index 00000000000000..66c1d034dd47cd --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-database.txt.old @@ -0,0 +1 @@ +V 440321100639Z 01 unknown /C=US/ST=CA/L=SF/O=NODEJS/OU=agent8/CN=localhost diff --git a/test/fixtures/keys/fake-startcom-root-issued-certs/01.pem b/test/fixtures/keys/fake-startcom-root-issued-certs/01.pem new file mode 100644 index 00000000000000..86de1d44a64a98 --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-issued-certs/01.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUDCCAjgCAQEwDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNV +BAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRp +ZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5MCAYDzIwMTYxMDIwMjM1OTU5WhcNNDQwMzIxMTAwNjM5WjBdMQsw +CQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZO +T0RFSlMxDzANBgNVBAsTBmFnZW50ODESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzkVSP6XxWpBlSjqqavwOhpp36aFJ +qLK7fRpxR+f0PdQ9WJajDEicxwKWGFqQBE+d5BjqrAD59L2QGZQ2VOF9VLZyFz3F +9TIlkd4yt9Od0qE98yIouDBNWu7UZqvNynAe5caD5i1MgyIUQqIUOnZwM21hwqYN +N/OESf38A8Tfuvh3ALUn7zBEVyUPWIWTYPhFHSCWIsS2URZ/qDLk8GavphkqXdFB +ii3V8Th5niPtpIsRF6Qhwh8SK+s0zh53o0qkmCNpXLd/PJQQAwC70WRq7ncL4D+U +C1gnDL0j9SzojXQu31kXs8UZTa7RFnx5r+gDiA/gGrLs4IiwDJhVHMx0nQIDAQAB +MA0GCSqGSIb3DQEBCwUAA4IBAQA7iMlm+rgZnlps+LFsoXG4dGNPaOhKI9t/XBrO +6O64LLyx/FPIQSaYi130QNB7Zy0uw8xqrH6cGRTJ9RCfBFFP4rzgIX3wEAHnmwMr +i4dGEixBUIIjhw6fAVxAhrkzmgUpUt0qIP9otGgESEYXIg7bFkXIHit0Im1VOdvf ++LnUKZw9o7UEesKIDVkuAsjoKKkrsO0kdf0dgAj6Ix5xmAtBsDvkH0aOSdPfTZG6 +LQrnZf/quBotog3NmDzrvQaH8GNpTJcYNjKlxD2z0PvQUyp0FD8oCC+oD+EGv2zZ +65scEXU/n8kTmdJkCjx4nb39HttYzOlNlTgMxAfxgL7A/PcT +-----END CERTIFICATE----- diff --git a/test/fixtures/keys/fake-startcom-root-issued-certs/02.pem b/test/fixtures/keys/fake-startcom-root-issued-certs/02.pem new file mode 100644 index 00000000000000..196922986cdb6e --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-issued-certs/02.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUDCCAjgCAQIwDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCSUwxFjAUBgNV +BAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRp +ZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5MCAYDzIwMTYxMDIxMDAwMDAxWhcNNDQwMzIxMTAwNzAyWjBdMQsw +CQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZO +T0RFSlMxDzANBgNVBAsTBmFnZW50OTESMBAGA1UEAxMJbG9jYWxob3N0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApT6nASSx9e2i/t0aHSd9BxMRD92o +33/iaiXWzBOKMJp7jxCWAg6SnpjrFsyjTxaAqg+e1zlm10YBT6DholstffzQqK2x +TKGVOQK4jxX23wJlrn5mDk0fagBtY49L1KFy8DxJqKgt7uxz61GGUWwKWXG7Vnga +bkqDd9o3ZF7bOq7mMQvfDzPrwYI8uTjTxR8R19uxNNOGtHMTnwvDeczTmtTox8U+ +4N2hN2scDZvRBx5aQAtnXRyZhAokAJMYojinx9iqlVFQi3ct52LIhsca6ympfDc2 +0yA4aSVfoW7NlqsnvrTOV4nt3UbrxGGpiE7Em8Hdcw2EMF+jqCTLGtsqYQIDAQAB +MA0GCSqGSIb3DQEBCwUAA4IBAQCMjKFycVQh7Puz/FpQh3NhJ99Ic3rzr+3nAKFD +4Kcl3L8szH3zjLCw46/y2jqPiAbg2zg9miYkI/2W/G+m2VQEQvp2SwjVr/Rj2Soe +iTonruUpDFF7LG01q3kpZ7nYWRGvVgn5D9BGk4/SWuzxiWRdwlzJf2e8cXLExVS0 +0CgRsb5nRoZ+RZmVIrGMfIi8CI7uTlcHtQzD7B7gpHtOSMlQoSSeqOy6F498duvl +QhhQhJBxmjSegw/lawWQSDFArJimK/rwyb6ZFbRfBgg6o/k5W9G5l0oG5abQMp+/ +u8Fd+QUNwR6OovE0AqL6wNHCnqzNnihTL6/hRVer6i5Hfxmb +-----END CERTIFICATE----- diff --git a/test/fixtures/keys/fake-startcom-root-key.pem b/test/fixtures/keys/fake-startcom-root-key.pem new file mode 100644 index 00000000000000..d8f727d2be6780 --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAu+EBm0ZTe7e7IHiUeflfzlcl3I8Cc5jSEZxJUzN9D8EES8E+ +Rx2Em9k8upxZOcmmWwlcf4YfP2rvcNvIt6R0X9/p01VxGYOO9mqlnoqBPwPgaa50 +08wS4ez35uoj6XmnsyHWYSai3kli1e8YPdSI3ZlRD+2uF/nGImowRqJAcHGEkRKR +j5FhXYYrSeMInbKma0ADPIZSU2AerEHLU+sEGqHTFtI5ranBHLP27sSRg3gEJAo0 +IEls5pf2sf6PzfpiUQcTKa62NgO5iIdo697TIkIexCqzHv6n1oFTEJL2ZOP2r1vP +0YlH219PTj4eZBGO1Jli3t8ciLGBLS9Pj/pCWwIDAQABAoIBAFOQL2O9stH7FTrL +Btb9iJRBBLEF1oRNu1lj1uUvqHdCVUPQbn+47EtZIv6pHbJrMxeYoVCC+hD94gOj +bbHobm5aLCj3/rbnYcXOB13torDBa6X1lzbAtMFR4a0OBO0KVAGDklNhmN0fbNtU +XcbaagmN8JUSFPXK/Uo/SruP3PNldfPVtf/EnBlK4LOI5/WDyiwLQxlVf389poKp +wXwhVgL9Kh0uzxD31HH0NOL+D1KOI6j7gNrOAOZFFGTwVAtQFI28wIwftKf3qicQ +TZvV/O+Aw+oIZsOfX9Pg6dNehhEC25F6UcGrX7b7fI/Rbx6L/VxfjMHfbvsUtTxz +iwW1H5ECgYEA85U2LiBicAB4QkclUHjLPrPl7W0bDvKFKJkxXJ44y/ziFjOhksuF +J1xYXhVhP7mdXwGVlt2X9PSjkW06I+DFqi2IbGDBqJ/0hJrAr/+5J5OySCFlx2kC +TwIAYJIud0Vgk8FdToijOKq8I3KFmUsc6k0UMmCdCy4HXz0Qy3RqsekCgYEAxXTZ +3orr/ItfjVFz9bkcNUMutRVvsyewYJOemgaejdSHLYl8lTcLQDLSnA/Sd7JtXOyS +3M7GVpiBZqW15UJry5fpkRNhqOXqXz6/Hp9E3hG9RnS2EkZDR2vIrRwa3o6zKq8P +XYOOOzjdYq881khhRhafXCon0XvLdZAsOKfDQ6MCgYEAqsDw6Ej/eLB7nUqul8j2 +AZCvIE+Z5lKQkjNB7UFlY2p1O0cafwN45mzP7bRjJf8CmPVNXiMdQTS17V56oWgS +aQfeWMtDNuhayxKI/Vfw/hOFqRbweGfenHA0v336YNYbq7ijpkgW08SsetTvXtTP +AljiTaZ4sLulo1f1jAqiOPECgYA1CgJL6P0ixT1RdIO1iZeuJvGw6qUqdorGJmD/ +9q84YdI9xSSV4EdBY2V3Tji2tlLyFwoMDe7w6942eGS3xHO4KIIw2gftmnSuSOiF +jTqufA1fk5IkroL7+FPbTCVbivFNkeCKuf/GoKu3CmNJHAAlF4aO9zPi7WHlnmiC +f23QCQKBgET2u4cPsUAZJ8utCyQ+ZhKJUTcYDN/Nlpd/yVC+dS9BZAc2tH1EfRN2 +pxSzm9Qgd6Cjc7cVJ/T745b85nbPjd1MsOgvPCKr0TFARmlGpu4RtKEHrROSaahX +7vR7HiYqhbeYlVRz9lZ5N+J1BT7sq7+Rond89UtL/O7g0wEs/N3V +-----END RSA PRIVATE KEY----- diff --git a/test/fixtures/keys/fake-startcom-root-serial b/test/fixtures/keys/fake-startcom-root-serial new file mode 100644 index 00000000000000..75016ea3625245 --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-serial @@ -0,0 +1 @@ +03 diff --git a/test/fixtures/keys/fake-startcom-root-serial.old b/test/fixtures/keys/fake-startcom-root-serial.old new file mode 100644 index 00000000000000..9e22bcb8e34408 --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root-serial.old @@ -0,0 +1 @@ +02 diff --git a/test/fixtures/keys/fake-startcom-root.cnf b/test/fixtures/keys/fake-startcom-root.cnf new file mode 100644 index 00000000000000..d6a9557bc8778d --- /dev/null +++ b/test/fixtures/keys/fake-startcom-root.cnf @@ -0,0 +1,46 @@ +[ ca ] +default_ca = CA_default + +[ CA_default ] +dir = . +name_opt = CA_default +cert_opt = CA_default +default_crl_days = 999 +default_md = sha256 +database = fake-startcom-root-database.txt +serial = fake-startcom-root-serial +private_key = fake-startcom-root-key.pem +certificate = fake-startcom-root-cert.pem +new_certs_dir = fake-startcom-root-issued-certs +email_in_dn = no +policy = policy_anything + +[ policy_anything ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +[ req ] +default_bits = 2048 +days = 999 +distinguished_name = req_distinguished_name +attributes = req_attributes +prompt = no +output_password = password +x509_extensions = v3_ca + +[ req_distinguished_name ] +C = IL +O = StartCom Ltd. +OU = Secure Digital Certificate Signing +CN = StartCom Certification Authority + +[ req_attributes ] +challengePassword = A challenge password + +[ v3_ca ] +basicConstraints = CA:TRUE diff --git a/test/gc/test-net-timeout.js b/test/gc/test-net-timeout.js index 7d580f8f2356a4..7e1655f4e6c4a7 100644 --- a/test/gc/test-net-timeout.js +++ b/test/gc/test-net-timeout.js @@ -36,7 +36,7 @@ function getall() { return; (function() { - var req = net.connect(server.address().port, server.address().address); + var req = net.connect(server.address().port); req.resume(); req.setTimeout(10, function() { //console.log('timeout (expected)') diff --git a/test/internet/test-dgram-multicast-multi-process.js b/test/internet/test-dgram-multicast-multi-process.js index dfbe9a3077b94a..d37a3e6ab52471 100644 --- a/test/internet/test-dgram-multicast-multi-process.js +++ b/test/internet/test-dgram-multicast-multi-process.js @@ -21,14 +21,14 @@ if (common.inFreeBSDJail) { return; } -function launchChildProcess(index) { +function launchChildProcess() { const worker = fork(__filename, ['child']); workers[worker.pid] = worker; worker.messagesReceived = []; // Handle the death of workers. - worker.on('exit', function(code, signal) { + worker.on('exit', function(code) { // Don't consider this the true death if the worker has finished // successfully or if the exit code is 0. if (worker.isDone || code === 0) { @@ -188,7 +188,7 @@ if (process.argv[2] === 'child') { process.send({ message: buf.toString() }); - if (receivedMessages.length == messages.length) { + if (receivedMessages.length === messages.length) { // .dropMembership() not strictly needed but here as a sanity check. listenSocket.dropMembership(LOCAL_BROADCAST_HOST); process.nextTick(function() { diff --git a/test/known_issues/test-vm-attributes-property-not-on-sandbox.js b/test/known_issues/test-vm-attributes-property-not-on-sandbox.js new file mode 100644 index 00000000000000..d9534c3d4393a9 --- /dev/null +++ b/test/known_issues/test-vm-attributes-property-not-on-sandbox.js @@ -0,0 +1,25 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const vm = require('vm'); + +// The QueryCallback explicitly calls GetRealNamedPropertyAttributes +// on the global proxy if the property is not found on the sandbox. +// +// foo is not defined on the sandbox until we call CopyProperties(). +// In the QueryCallback, we do not find the property on the sandbox +// and look up its PropertyAttributes on the global_proxy(). +// PropertyAttributes are always flattened to a value +// descriptor. +const sandbox = {}; +vm.createContext(sandbox); +const code = `Object.defineProperty( + this, + 'foo', + { get: function() {return 17} } + ); + var desc = Object.getOwnPropertyDescriptor(this, 'foo');`; + +vm.runInContext(code, sandbox); +// The descriptor is flattened. We wrongly have typeof desc.value = 'number'. +assert.strictEqual(typeof sandbox.desc.get, 'function'); diff --git a/test/known_issues/test-vm-data-property-writable.js b/test/known_issues/test-vm-data-property-writable.js new file mode 100644 index 00000000000000..f29052a73a7b6b --- /dev/null +++ b/test/known_issues/test-vm-data-property-writable.js @@ -0,0 +1,17 @@ +'use strict'; +// Refs: https://github.com/nodejs/node/issues/10223 + +require('../common'); +const vm = require('vm'); +const assert = require('assert'); + +const context = vm.createContext({}); + +const code = ` + Object.defineProperty(this, 'foo', {value: 5}); + Object.getOwnPropertyDescriptor(this, 'foo'); +`; + +const desc = vm.runInContext(code, context); + +assert.strictEqual(desc.writable, false); diff --git a/test/parallel/test-assert.js b/test/parallel/test-assert.js index 603da5c5f990e9..0d4b90dc3ad0ad 100644 --- a/test/parallel/test-assert.js +++ b/test/parallel/test-assert.js @@ -92,16 +92,23 @@ assert.doesNotThrow(makeBlock(a.deepEqual, /a/g, /a/g)); assert.doesNotThrow(makeBlock(a.deepEqual, /a/i, /a/i)); assert.doesNotThrow(makeBlock(a.deepEqual, /a/m, /a/m)); assert.doesNotThrow(makeBlock(a.deepEqual, /a/igm, /a/igm)); -assert.throws(makeBlock(a.deepEqual, /ab/, /a/)); -assert.throws(makeBlock(a.deepEqual, /a/g, /a/)); -assert.throws(makeBlock(a.deepEqual, /a/i, /a/)); -assert.throws(makeBlock(a.deepEqual, /a/m, /a/)); -assert.throws(makeBlock(a.deepEqual, /a/igm, /a/im)); +assert.throws(makeBlock(a.deepEqual, /ab/, /a/), + /^AssertionError: \/ab\/ deepEqual \/a\/$/); +assert.throws(makeBlock(a.deepEqual, /a/g, /a/), + /^AssertionError: \/a\/g deepEqual \/a\/$/); +assert.throws(makeBlock(a.deepEqual, /a/i, /a/), + /^AssertionError: \/a\/i deepEqual \/a\/$/); +assert.throws(makeBlock(a.deepEqual, /a/m, /a/), + /^AssertionError: \/a\/m deepEqual \/a\/$/); +assert.throws(makeBlock(a.deepEqual, /a/igm, /a/im), + /^AssertionError: \/a\/gim deepEqual \/a\/im$/); { - const re1 = /a/; + const re1 = /a/g; re1.lastIndex = 3; - assert.throws(makeBlock(a.deepEqual, re1, /a/)); + + assert.throws(makeBlock(a.deepEqual, re1, /a/g), + /^AssertionError: \/a\/g deepEqual \/a\/g$/); } @@ -211,11 +218,26 @@ assert.doesNotThrow(makeBlock(a.deepStrictEqual, /a/g, /a/g)); assert.doesNotThrow(makeBlock(a.deepStrictEqual, /a/i, /a/i)); assert.doesNotThrow(makeBlock(a.deepStrictEqual, /a/m, /a/m)); assert.doesNotThrow(makeBlock(a.deepStrictEqual, /a/igm, /a/igm)); -assert.throws(makeBlock(a.deepStrictEqual, /ab/, /a/)); -assert.throws(makeBlock(a.deepStrictEqual, /a/g, /a/)); -assert.throws(makeBlock(a.deepStrictEqual, /a/i, /a/)); -assert.throws(makeBlock(a.deepStrictEqual, /a/m, /a/)); -assert.throws(makeBlock(a.deepStrictEqual, /a/igm, /a/im)); +assert.throws( + makeBlock(a.deepStrictEqual, /ab/, /a/), + /^AssertionError: \/ab\/ deepStrictEqual \/a\/$/ +); +assert.throws( + makeBlock(a.deepStrictEqual, /a/g, /a/), + /^AssertionError: \/a\/g deepStrictEqual \/a\/$/ +); +assert.throws( + makeBlock(a.deepStrictEqual, /a/i, /a/), + /^AssertionError: \/a\/i deepStrictEqual \/a\/$/ +); +assert.throws( + makeBlock(a.deepStrictEqual, /a/m, /a/), + /^AssertionError: \/a\/m deepStrictEqual \/a\/$/ +); +assert.throws( + makeBlock(a.deepStrictEqual, /a/igm, /a/im), + /^AssertionError: \/a\/gim deepStrictEqual \/a\/im$/ +); { const re1 = /a/; diff --git a/test/parallel/test-child-process-spawnsync-timeout.js b/test/parallel/test-child-process-spawnsync-timeout.js index 122a65825949df..c804f7502755bb 100644 --- a/test/parallel/test-child-process-spawnsync-timeout.js +++ b/test/parallel/test-child-process-spawnsync-timeout.js @@ -1,11 +1,11 @@ 'use strict'; -require('../common'); -var assert = require('assert'); +const common = require('../common'); +const assert = require('assert'); var spawnSync = require('child_process').spawnSync; -var TIMER = 200; -var SLEEP = 5000; +const TIMER = 200; +const SLEEP = common.platformTimeout(5000); switch (process.argv[2]) { case 'child': @@ -19,8 +19,7 @@ switch (process.argv[2]) { var ret = spawnSync(process.execPath, [__filename, 'child'], {timeout: TIMER}); assert.strictEqual(ret.error.errno, 'ETIMEDOUT'); - console.log(ret); - var end = Date.now() - start; + const end = Date.now() - start; assert(end < SLEEP); assert(ret.status > 128 || ret.signal); break; diff --git a/test/parallel/test-console-instance.js b/test/parallel/test-console-instance.js index 4d2727d96b1a55..ab5e5c9e6b3ce7 100644 --- a/test/parallel/test-console-instance.js +++ b/test/parallel/test-console-instance.js @@ -1,71 +1,59 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const Stream = require('stream'); const Console = require('console').Console; -var called = false; const out = new Stream(); const err = new Stream(); // ensure the Console instance doesn't write to the // process' "stdout" or "stderr" streams -process.stdout.write = process.stderr.write = function() { - throw new Error('write() should not be called!'); -}; +process.stdout.write = process.stderr.write = common.fail; // make sure that the "Console" function exists assert.strictEqual('function', typeof Console); // make sure that the Console constructor throws // when not given a writable stream instance -assert.throws(function() { +assert.throws(() => { new Console(); -}, /Console expects a writable stream/); +}, /^TypeError: Console expects a writable stream instance$/); // Console constructor should throw if stderr exists but is not writable -assert.throws(function() { - out.write = function() {}; +assert.throws(() => { + out.write = () => {}; err.write = undefined; new Console(out, err); -}, /Console expects writable stream instances/); +}, /^TypeError: Console expects writable stream instances$/); -out.write = err.write = function(d) {}; +out.write = err.write = (d) => {}; var c = new Console(out, err); -out.write = err.write = function(d) { +out.write = err.write = common.mustCall((d) => { assert.strictEqual(d, 'test\n'); - called = true; -}; +}, 2); -assert(!called); c.log('test'); -assert(called); - -called = false; c.error('test'); -assert(called); -out.write = function(d) { +out.write = common.mustCall((d) => { assert.strictEqual('{ foo: 1 }\n', d); - called = true; -}; +}); -called = false; c.dir({ foo: 1 }); -assert(called); // ensure that the console functions are bound to the console instance -called = 0; -out.write = function(d) { +let called = 0; +out.write = common.mustCall((d) => { called++; - assert.strictEqual(d, called + ' ' + (called - 1) + ' [ 1, 2, 3 ]\n'); -}; + assert.strictEqual(d, `${called} ${called - 1} [ 1, 2, 3 ]\n`); +}, 3); + [1, 2, 3].forEach(c.log); -assert.strictEqual(3, called); // Console() detects if it is called without `new` keyword -assert.doesNotThrow(function() { +assert.doesNotThrow(() => { Console(out, err); }); diff --git a/test/parallel/test-crypto-certificate.js b/test/parallel/test-crypto-certificate.js index 1dfb2c73b0eca5..8dba530fc54a45 100644 --- a/test/parallel/test-crypto-certificate.js +++ b/test/parallel/test-crypto-certificate.js @@ -37,3 +37,6 @@ assert.strictEqual(certificate.exportChallenge(spkacFail), ''); function stripLineEndings(obj) { return obj.replace(/\n/g, ''); } + +// direct call Certificate() should return instance +assert(crypto.Certificate() instanceof crypto.Certificate); diff --git a/test/parallel/test-crypto-hmac.js b/test/parallel/test-crypto-hmac.js index 8b133c0f459674..d83e1cc649a877 100644 --- a/test/parallel/test-crypto-hmac.js +++ b/test/parallel/test-crypto-hmac.js @@ -8,6 +8,14 @@ if (!common.hasCrypto) { } var crypto = require('crypto'); +// Test for binding layer robustness +{ + const binding = process.binding('crypto'); + const h = new binding.Hmac(); + // Fail to init the Hmac with an algorithm. + assert.throws(() => h.update('hello'), /^TypeError: HmacUpdate fail$/); +} + // Test HMAC var h1 = crypto.createHmac('sha1', 'Node') .update('some data') diff --git a/test/parallel/test-crypto-sign-verify.js b/test/parallel/test-crypto-sign-verify.js index 29f6683e2ee162..d0c91f9082357e 100644 --- a/test/parallel/test-crypto-sign-verify.js +++ b/test/parallel/test-crypto-sign-verify.js @@ -70,3 +70,10 @@ var keyPem = fs.readFileSync(common.fixturesDir + '/test_key.pem', 'ascii'); verified = verStream.verify(certPem, s3); assert.strictEqual(verified, true, 'sign and verify (stream)'); } + +// Test throws exception when key options is null +{ + assert.throws(() => { + crypto.createSign('RSA-SHA1').update('Test123').sign(null, 'base64'); + }, /^Error: No key provided to sign$/); +} diff --git a/test/parallel/test-crypto-verify-failure.js b/test/parallel/test-crypto-verify-failure.js index fdc27215027414..415e13ff64e640 100644 --- a/test/parallel/test-crypto-verify-failure.js +++ b/test/parallel/test-crypto-verify-failure.js @@ -19,36 +19,32 @@ var options = { cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem') }; -var server = tls.Server(options, function(socket) { - setImmediate(function() { - console.log('sending'); +const server = tls.Server(options, (socket) => { + setImmediate(() => { verify(); - setImmediate(function() { + setImmediate(() => { socket.destroy(); }); }); }); function verify() { - console.log('verify'); crypto.createVerify('RSA-SHA1') .update('Test') .verify(certPem, 'asdfasdfas', 'base64'); } -server.listen(0, function() { +server.listen(0, common.mustCall(() => { tls.connect({ - port: this.address().port, + port: server.address().port, rejectUnauthorized: false - }, function() { + }, common.mustCall(() => { verify(); - }).on('data', function(data) { - console.log(data); - }).on('error', function(err) { - throw err; - }).on('close', function() { - server.close(); - }).resume(); -}); + })) + .on('error', common.fail) + .on('close', common.mustCall(() => { + server.close(); + })).resume(); +})); server.unref(); diff --git a/test/parallel/test-crypto.js b/test/parallel/test-crypto.js index a325ee131cbb2e..0cbb46ea8f2a63 100644 --- a/test/parallel/test-crypto.js +++ b/test/parallel/test-crypto.js @@ -140,3 +140,7 @@ assert.throws(function() { // Make sure memory isn't released before being returned console.log(crypto.randomBytes(16)); + +assert.throws(function() { + tls.createSecureContext({ crl: 'not a CRL' }); +}, /Failed to parse CRL/); diff --git a/test/parallel/test-dgram-bind.js b/test/parallel/test-dgram-bind.js index 0bca97fb294f79..2d11fba6443ad8 100644 --- a/test/parallel/test-dgram-bind.js +++ b/test/parallel/test-dgram-bind.js @@ -1,13 +1,17 @@ 'use strict'; -require('../common'); -var assert = require('assert'); -var dgram = require('dgram'); +const common = require('../common'); +const assert = require('assert'); +const dgram = require('dgram'); var socket = dgram.createSocket('udp4'); -socket.on('listening', function() { +socket.on('listening', common.mustCall(() => { + assert.throws(() => { + socket.bind(); + }, /^Error: Socket is already bound$/); + socket.close(); -}); +})); var result = socket.bind(); // should not throw diff --git a/test/parallel/test-dgram-create-socket-handle.js b/test/parallel/test-dgram-create-socket-handle.js new file mode 100644 index 00000000000000..559d92be98d42d --- /dev/null +++ b/test/parallel/test-dgram-create-socket-handle.js @@ -0,0 +1,39 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const dgram = require('dgram'); +const UDP = process.binding('udp_wrap').UDP; +const _createSocketHandle = dgram._createSocketHandle; + +// Throws if an "existing fd" is passed in. +assert.throws(() => { + _createSocketHandle(common.localhostIPv4, 0, 'udp4', 42); +}, /^AssertionError: false == true$/); + +{ + // Create a handle that is not bound. + const handle = _createSocketHandle(null, null, 'udp4'); + + assert(handle instanceof UDP); + assert.strictEqual(typeof handle.fd, 'number'); + assert(handle.fd < 0); +} + +{ + // Create a bound handle. + const handle = _createSocketHandle(common.localhostIPv4, 0, 'udp4'); + + assert(handle instanceof UDP); + assert.strictEqual(typeof handle.fd, 'number'); + + if (!common.isWindows) + assert(handle.fd > 0); +} + +{ + // Return an error if binding fails. + const err = _createSocketHandle('localhost', 0, 'udp4'); + + assert.strictEqual(typeof err, 'number'); + assert(err < 0); +} diff --git a/test/parallel/test-dgram-membership.js b/test/parallel/test-dgram-membership.js index ed5fb2897cbd3a..1543b9043f7738 100644 --- a/test/parallel/test-dgram-membership.js +++ b/test/parallel/test-dgram-membership.js @@ -5,16 +5,14 @@ const assert = require('assert'); const dgram = require('dgram'); const multicastAddress = '224.0.0.114'; -const setup = () => { - return dgram.createSocket({type: 'udp4', reuseAddr: true}); -}; +const setup = dgram.createSocket.bind(dgram, {type: 'udp4', reuseAddr: true}); // addMembership() on closed socket should throw { const socket = setup(); socket.close(common.mustCall(() => { assert.throws(() => { socket.addMembership(multicastAddress); }, - /Not running/); + /^Error: Not running$/); })); } @@ -23,7 +21,7 @@ const setup = () => { const socket = setup(); socket.close(common.mustCall(() => { assert.throws(() => { socket.dropMembership(multicastAddress); }, - /Not running/); + /^Error: Not running$/); })); } @@ -31,7 +29,7 @@ const setup = () => { { const socket = setup(); assert.throws(() => { socket.addMembership(); }, - /multicast address must be specified/); + /^Error: multicast address must be specified$/); socket.close(); } @@ -39,21 +37,23 @@ const setup = () => { { const socket = setup(); assert.throws(() => { socket.dropMembership(); }, - /multicast address must be specified/); + /^Error: multicast address must be specified$/); socket.close(); } // addMembership() with invalid multicast address should throw { const socket = setup(); - assert.throws(() => { socket.addMembership('256.256.256.256'); }, /EINVAL/); + assert.throws(() => { socket.addMembership('256.256.256.256'); }, + /^Error: addMembership EINVAL$/); socket.close(); } // dropMembership() with invalid multicast address should throw { const socket = setup(); - assert.throws(() => { socket.dropMembership('256.256.256.256'); }, /EINVAL/); + assert.throws(() => { socket.dropMembership('256.256.256.256'); }, + /^Error: dropMembership EINVAL$/); socket.close(); } @@ -69,7 +69,7 @@ const setup = () => { const socket = setup(); assert.throws( () => { socket.dropMembership(multicastAddress); }, - /EADDRNOTAVAIL/ + /^Error: dropMembership EADDRNOTAVAIL$/ ); socket.close(); } diff --git a/test/parallel/test-dgram-multicast-loopback.js b/test/parallel/test-dgram-multicast-loopback.js new file mode 100644 index 00000000000000..c1eedcd1c98900 --- /dev/null +++ b/test/parallel/test-dgram-multicast-loopback.js @@ -0,0 +1,23 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const dgram = require('dgram'); + +{ + const socket = dgram.createSocket('udp4'); + + assert.throws(() => { + socket.setMulticastLoopback(16); + }, /^Error: setMulticastLoopback EBADF$/); +} + +{ + const socket = dgram.createSocket('udp4'); + + socket.bind(0); + socket.on('listening', common.mustCall(() => { + assert.strictEqual(socket.setMulticastLoopback(16), 16); + assert.strictEqual(socket.setMulticastLoopback(0), 0); + socket.close(); + })); +} diff --git a/test/parallel/test-dgram-multicast-setTTL.js b/test/parallel/test-dgram-multicast-setTTL.js index 83d482f426bcd4..11b5a0a7635857 100644 --- a/test/parallel/test-dgram-multicast-setTTL.js +++ b/test/parallel/test-dgram-multicast-setTTL.js @@ -1,23 +1,23 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const dgram = require('dgram'); const socket = dgram.createSocket('udp4'); -let thrown = false; socket.bind(0); -socket.on('listening', function() { - socket.setMulticastTTL(16); +socket.on('listening', common.mustCall(() => { + const result = socket.setMulticastTTL(16); + assert.strictEqual(result, 16); //Try to set an invalid TTL (valid ttl is > 0 and < 256) - try { + assert.throws(() => { socket.setMulticastTTL(1000); - } catch (e) { - thrown = true; - } + }, /^Error: setMulticastTTL EINVAL$/); - assert(thrown, 'Setting an invalid multicast TTL should throw some error'); + assert.throws(() => { + socket.setMulticastTTL('foo'); + }, /^TypeError: Argument must be a number$/); //close the socket socket.close(); -}); +})); diff --git a/test/parallel/test-dgram-setTTL.js b/test/parallel/test-dgram-setTTL.js index 9393e53c7f1912..7da3975ad4c3fd 100644 --- a/test/parallel/test-dgram-setTTL.js +++ b/test/parallel/test-dgram-setTTL.js @@ -1,17 +1,22 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const dgram = require('dgram'); const socket = dgram.createSocket('udp4'); socket.bind(0); -socket.on('listening', function() { - var result = socket.setTTL(16); +socket.on('listening', common.mustCall(() => { + const result = socket.setTTL(16); assert.strictEqual(result, 16); - assert.throws(function() { + assert.throws(() => { socket.setTTL('foo'); - }, /Argument must be a number/); + }, /^TypeError: Argument must be a number$/); + + // TTL must be a number from > 0 to < 256 + assert.throws(() => { + socket.setTTL(1000); + }, /^Error: setTTL EINVAL$/); socket.close(); -}); +})); diff --git a/test/parallel/test-domain-multi.js b/test/parallel/test-domain-multi.js index cf85dbca460146..e8c5d4924cb553 100644 --- a/test/parallel/test-domain-multi.js +++ b/test/parallel/test-domain-multi.js @@ -1,26 +1,16 @@ 'use strict'; // Tests of multiple domains happening at once. -require('../common'); -var assert = require('assert'); -var domain = require('domain'); - -var caughtA = false; -var caughtB = false; -var caughtC = false; - +const common = require('../common'); +const domain = require('domain'); +const http = require('http'); var a = domain.create(); a.enter(); // this will be our "root" domain -a.on('error', function(er) { - caughtA = true; - console.log('This should not happen'); - throw er; -}); +a.on('error', common.fail); -var http = require('http'); -var server = http.createServer(function(req, res) { +const server = http.createServer((req, res) => { // child domain of a. var b = domain.create(); a.add(b); @@ -31,47 +21,34 @@ var server = http.createServer(function(req, res) { b.add(req); b.add(res); - b.on('error', function(er) { - caughtB = true; - console.error('Error encountered', er); + b.on('error', common.mustCall((er) => { if (res) { res.writeHead(500); res.end('An error occurred'); } // res.writeHead(500), res.destroy, etc. server.close(); - }); + })); // XXX this bind should not be necessary. // the write cb behavior in http/net should use an // event so that it picks up the domain handling. - res.write('HELLO\n', b.bind(function() { + res.write('HELLO\n', b.bind(() => { throw new Error('this kills domain B, not A'); })); -}).listen(0, function() { - var c = domain.create(); - var req = http.get({ host: 'localhost', port: this.address().port }); +}).listen(0, () => { + const c = domain.create(); + const req = http.get({ host: 'localhost', port: server.address().port }); // add the request to the C domain c.add(req); - req.on('response', function(res) { - console.error('got response'); + req.on('response', (res) => { // add the response object to the C domain c.add(res); res.pipe(process.stdout); }); - c.on('error', function(er) { - caughtC = true; - console.error('Error on c', er.message); - }); -}); - -process.on('exit', function() { - assert.strictEqual(caughtA, false); - assert.strictEqual(caughtB, true); - assert.strictEqual(caughtC, true); - console.log('ok - Errors went where they were supposed to go'); + c.on('error', common.mustCall((er) => { })); }); diff --git a/test/parallel/test-event-emitter-remove-all-listeners.js b/test/parallel/test-event-emitter-remove-all-listeners.js index e32a0e3f94f5b4..bed6c22f3f5876 100644 --- a/test/parallel/test-event-emitter-remove-all-listeners.js +++ b/test/parallel/test-event-emitter-remove-all-listeners.js @@ -77,3 +77,15 @@ function listener() {} ee.removeAllListeners('baz'); assert.strictEqual(ee.listeners('baz').length, 0); } + +{ + const ee = new events.EventEmitter(); + assert.deepStrictEqual(ee, ee.removeAllListeners()); +} + +{ + const ee = new events.EventEmitter(); + ee._events = undefined; + assert.strictEqual(ee, ee.removeAllListeners()); +} + diff --git a/test/parallel/test-event-emitter-remove-listeners.js b/test/parallel/test-event-emitter-remove-listeners.js index 912eefc9f4bf1e..f35a1c49cdb3ff 100644 --- a/test/parallel/test-event-emitter-remove-listeners.js +++ b/test/parallel/test-event-emitter-remove-listeners.js @@ -115,3 +115,24 @@ function listener2() {} })); ee.emit('hello'); } + +{ + const ee = new events.EventEmitter(); + + assert.deepStrictEqual(ee, ee.removeListener('foo', () => {})); +} + +// Verify that the removed listener must be a function +assert.throws(() => { + const ee = new events.EventEmitter(); + + ee.removeListener('foo', null); +}, /^TypeError: listener must be a function$/); + +{ + const ee = new events.EventEmitter(); + const listener = () => {}; + ee._events = undefined; + const e = ee.removeListener('foo', listener); + assert.strictEqual(e, ee); +} diff --git a/test/parallel/test-fs-read-file-assert-encoding.js b/test/parallel/test-fs-read-file-assert-encoding.js new file mode 100644 index 00000000000000..897bcd3bc98795 --- /dev/null +++ b/test/parallel/test-fs-read-file-assert-encoding.js @@ -0,0 +1,13 @@ +'use strict'; +require('../common'); + +const assert = require('assert'); +const fs = require('fs'); + +const encoding = 'foo-8'; +const filename = 'bar.txt'; + +assert.throws( + fs.readFile.bind(fs, filename, { encoding }, () => {}), + new RegExp(`Error: Unknown encoding: ${encoding}$`) +); diff --git a/test/parallel/test-fs-readfile-zero-byte-liar.js b/test/parallel/test-fs-readfile-zero-byte-liar.js index 283a986f8a038a..c3887979bb0b4a 100644 --- a/test/parallel/test-fs-readfile-zero-byte-liar.js +++ b/test/parallel/test-fs-readfile-zero-byte-liar.js @@ -3,29 +3,29 @@ const common = require('../common'); var assert = require('assert'); var fs = require('fs'); -var dataExpected = fs.readFileSync(__filename, 'utf8'); +const dataExpected = fs.readFileSync(__filename, 'utf8'); // sometimes stat returns size=0, but it's a lie. fs._fstat = fs.fstat; fs._fstatSync = fs.fstatSync; -fs.fstat = function(fd, cb) { - fs._fstat(fd, function(er, st) { +fs.fstat = (fd, cb) => { + fs._fstat(fd, (er, st) => { if (er) return cb(er); st.size = 0; return cb(er, st); }); }; -fs.fstatSync = function(fd) { - var st = fs._fstatSync(fd); +fs.fstatSync = (fd) => { + const st = fs._fstatSync(fd); st.size = 0; return st; }; -var d = fs.readFileSync(__filename, 'utf8'); -assert.equal(d, dataExpected); +const d = fs.readFileSync(__filename, 'utf8'); +assert.strictEqual(d, dataExpected); -fs.readFile(__filename, 'utf8', common.mustCall(function(er, d) { - assert.equal(d, dataExpected); +fs.readFile(__filename, 'utf8', common.mustCall((er, d) => { + assert.strictEqual(d, dataExpected); })); diff --git a/test/parallel/test-fs-utimes.js b/test/parallel/test-fs-utimes.js index f245a7962da0f4..108ca7c7d71c03 100644 --- a/test/parallel/test-fs-utimes.js +++ b/test/parallel/test-fs-utimes.js @@ -4,11 +4,11 @@ var assert = require('assert'); var util = require('util'); var fs = require('fs'); -var tests_ok = 0; -var tests_run = 0; +let tests_ok = 0; +let tests_run = 0; function stat_resource(resource) { - if (typeof resource == 'string') { + if (typeof resource === 'string') { return fs.statSync(resource); } else { // ensure mtime has been written to disk @@ -19,8 +19,8 @@ function stat_resource(resource) { function check_mtime(resource, mtime) { mtime = fs._toUnixTimestamp(mtime); - var stats = stat_resource(resource); - var real_mtime = fs._toUnixTimestamp(stats.mtime); + const stats = stat_resource(resource); + const real_mtime = fs._toUnixTimestamp(stats.mtime); // check up to single-second precision // sub-second precision is OS and fs dependant return mtime - real_mtime < 2; @@ -46,9 +46,9 @@ function expect_ok(syscall, resource, err, atime, mtime) { // the tests assume that __filename belongs to the user running the tests // this should be a fairly safe assumption; testing against a temp file // would be even better though (node doesn't have such functionality yet) -function runTest(atime, mtime, callback) { +function testIt(atime, mtime, callback) { - var fd; + let fd; // // test synchronized code paths, these functions throw on failure // @@ -67,8 +67,7 @@ function runTest(atime, mtime, callback) { expect_errno('futimesSync', fd, ex, 'ENOSYS'); } - var err; - err = undefined; + let err = undefined; try { fs.utimesSync('foobarbaz', atime, mtime); } catch (ex) { @@ -90,10 +89,10 @@ function runTest(atime, mtime, callback) { // // test async code paths // - fs.utimes(__filename, atime, mtime, function(err) { + fs.utimes(__filename, atime, mtime, common.mustCall(function(err) { expect_ok('utimes', __filename, err, atime, mtime); - fs.utimes('foobarbaz', atime, mtime, function(err) { + fs.utimes('foobarbaz', atime, mtime, common.mustCall(function(err) { expect_errno('utimes', 'foobarbaz', err, 'ENOENT'); // don't close this fd @@ -103,34 +102,36 @@ function runTest(atime, mtime, callback) { fd = fs.openSync(__filename, 'r'); } - fs.futimes(fd, atime, mtime, function(err) { + fs.futimes(fd, atime, mtime, common.mustCall(function(err) { expect_ok('futimes', fd, err, atime, mtime); - fs.futimes(-1, atime, mtime, function(err) { + fs.futimes(-1, atime, mtime, common.mustCall(function(err) { expect_errno('futimes', -1, err, 'EBADF'); syncTests(); callback(); - }); + })); tests_run++; - }); + })); tests_run++; - }); + })); tests_run++; - }); + })); tests_run++; } -var stats = fs.statSync(__filename); +const stats = fs.statSync(__filename); // run tests +const runTest = common.mustCall(testIt, 6); + runTest(new Date('1982-09-10 13:37'), new Date('1982-09-10 13:37'), function() { runTest(new Date(), new Date(), function() { runTest(123456.789, 123456.789, function() { runTest(stats.mtime, stats.mtime, function() { runTest(NaN, Infinity, function() { - runTest('123456', -1, function() { + runTest('123456', -1, common.mustCall(function() { // done - }); + })); }); }); }); @@ -140,5 +141,5 @@ runTest(new Date('1982-09-10 13:37'), new Date('1982-09-10 13:37'), function() { process.on('exit', function() { console.log('Tests run / ok:', tests_run, '/', tests_ok); - assert.equal(tests_ok, tests_run); + assert.strictEqual(tests_ok, tests_run); }); diff --git a/test/parallel/test-http-abort-queued-2.js b/test/parallel/test-http-abort-queued-2.js new file mode 100644 index 00000000000000..77dc2a535b0e4f --- /dev/null +++ b/test/parallel/test-http-abort-queued-2.js @@ -0,0 +1,36 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const http = require('http'); + +let socketsCreated = 0; + +class Agent extends http.Agent { + createConnection(options, oncreate) { + const socket = super.createConnection(options, oncreate); + socketsCreated++; + return socket; + } +} + +const server = http.createServer((req, res) => res.end()); + +server.listen(0, common.mustCall(() => { + const port = server.address().port; + const agent = new Agent({ + keepAlive: true, + maxSockets: 1 + }); + + http.get({agent, port}, (res) => res.resume()); + + const req = http.get({agent, port}, common.fail); + req.abort(); + + http.get({agent, port}, common.mustCall((res) => { + res.resume(); + assert.strictEqual(socketsCreated, 1); + agent.destroy(); + server.close(); + })); +})); diff --git a/test/parallel/test-http-chunked-304.js b/test/parallel/test-http-chunked-304.js index 5ea1912b72dfee..82fe138fd926da 100644 --- a/test/parallel/test-http-chunked-304.js +++ b/test/parallel/test-http-chunked-304.js @@ -12,32 +12,35 @@ var net = require('net'); // Likewise for 304 responses. Verify that no empty chunk is sent when // the user explicitly sets a Transfer-Encoding header. -test(204, function() { - test(304); -}); +test(204); +test(304); -function test(statusCode, next) { - var server = http.createServer(function(req, res) { +function test(statusCode) { + const server = http.createServer(common.mustCall((req, res) => { res.writeHead(statusCode, { 'Transfer-Encoding': 'chunked' }); res.end(); server.close(); - }); + })); - server.listen(0, function() { - var conn = net.createConnection(this.address().port, function() { - conn.write('GET / HTTP/1.1\r\n\r\n'); + server.listen(0, common.mustCall(() => { + const conn = net.createConnection( + server.address().port, + common.mustCall(() => { + conn.write('GET / HTTP/1.1\r\n\r\n'); - var resp = ''; - conn.setEncoding('utf8'); - conn.on('data', function(data) { - resp += data; - }); + let resp = ''; + conn.setEncoding('utf8'); + conn.on('data', common.mustCall((data) => { + resp += data; + })); - conn.on('end', common.mustCall(function() { - assert.equal(/^Connection: close\r\n$/m.test(resp), true); - assert.equal(/^0\r\n$/m.test(resp), false); - if (next) process.nextTick(next); - })); - }); - }); + conn.on('end', common.mustCall(() => { + // Connection: close should be in the response + assert.strictEqual(/^Connection: close\r\n$/m.test(resp), true); + // Make sure this doesn't end with 0\r\n\r\n + assert.strictEqual(/^0\r\n$/m.test(resp), false); + })); + }) + ); + })); } diff --git a/test/parallel/test-http-client-abort-no-agent.js b/test/parallel/test-http-client-abort-no-agent.js new file mode 100644 index 00000000000000..875d2ce6469d46 --- /dev/null +++ b/test/parallel/test-http-client-abort-no-agent.js @@ -0,0 +1,19 @@ +'use strict'; +const common = require('../common'); +const http = require('http'); +const net = require('net'); + +const server = http.createServer(common.fail); + +server.listen(0, common.mustCall(() => { + const req = http.get({ + createConnection(options, oncreate) { + const socket = net.createConnection(options, oncreate); + socket.once('close', () => server.close()); + return socket; + }, + port: server.address().port + }); + + req.abort(); +})); diff --git a/test/parallel/test-http-client-abort-unix-socket.js b/test/parallel/test-http-client-abort-unix-socket.js new file mode 100644 index 00000000000000..0b7c5e5ddea6dd --- /dev/null +++ b/test/parallel/test-http-client-abort-unix-socket.js @@ -0,0 +1,24 @@ +'use strict'; +const common = require('../common'); +const http = require('http'); + +const server = http.createServer(common.fail); + +class Agent extends http.Agent { + createConnection(options, oncreate) { + const socket = super.createConnection(options, oncreate); + socket.once('close', () => server.close()); + return socket; + } +} + +common.refreshTmpDir(); + +server.listen(common.PIPE, common.mustCall(() => { + const req = http.get({ + agent: new Agent(), + socketPath: common.PIPE + }); + + req.abort(); +})); diff --git a/test/parallel/test-http-client-unescaped-path.js b/test/parallel/test-http-client-unescaped-path.js index e01df255a8042c..1a74943e838259 100644 --- a/test/parallel/test-http-client-unescaped-path.js +++ b/test/parallel/test-http-client-unescaped-path.js @@ -1,9 +1,10 @@ 'use strict'; -var common = require('../common'); -var assert = require('assert'); -var http = require('http'); +const common = require('../common'); +const assert = require('assert'); +const http = require('http'); -assert.throws(function() { - // Path with spaces in it should throw. - http.get({ path: 'bad path' }, common.fail); -}, /contains unescaped characters/); +for (let i = 0; i <= 32; i += 1) { + const path = 'bad' + String.fromCharCode(i) + 'path'; + assert.throws(() => http.get({ path }, common.fail), + /contains unescaped characters/); +} diff --git a/test/parallel/test-http-common.js b/test/parallel/test-http-common.js new file mode 100644 index 00000000000000..1629856ce57d09 --- /dev/null +++ b/test/parallel/test-http-common.js @@ -0,0 +1,33 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const httpCommon = require('_http_common'); +const checkIsHttpToken = httpCommon._checkIsHttpToken; +const checkInvalidHeaderChar = httpCommon._checkInvalidHeaderChar; + +// checkIsHttpToken +assert(checkIsHttpToken('t')); +assert(checkIsHttpToken('tt')); +assert(checkIsHttpToken('ttt')); +assert(checkIsHttpToken('tttt')); +assert(checkIsHttpToken('ttttt')); + +assert.strictEqual(checkIsHttpToken(''), false); +assert.strictEqual(checkIsHttpToken(' '), false); +assert.strictEqual(checkIsHttpToken('あ'), false); +assert.strictEqual(checkIsHttpToken('あa'), false); +assert.strictEqual(checkIsHttpToken('aaaaあaaaa'), false); + +// checkInvalidHeaderChar +assert(checkInvalidHeaderChar('あ')); +assert(checkInvalidHeaderChar('aaaaあaaaa')); + +assert.strictEqual(checkInvalidHeaderChar(''), false); +assert.strictEqual(checkInvalidHeaderChar(1), false); +assert.strictEqual(checkInvalidHeaderChar(' '), false); +assert.strictEqual(checkInvalidHeaderChar(false), false); +assert.strictEqual(checkInvalidHeaderChar('t'), false); +assert.strictEqual(checkInvalidHeaderChar('tt'), false); +assert.strictEqual(checkInvalidHeaderChar('ttt'), false); +assert.strictEqual(checkInvalidHeaderChar('tttt'), false); +assert.strictEqual(checkInvalidHeaderChar('ttttt'), false); diff --git a/test/parallel/test-http-host-headers.js b/test/parallel/test-http-host-headers.js index a9f12d6819314e..863dbae365d164 100644 --- a/test/parallel/test-http-host-headers.js +++ b/test/parallel/test-http-host-headers.js @@ -1,11 +1,10 @@ 'use strict'; -require('../common'); +const common = require('../common'); const http = require('http'); const assert = require('assert'); const httpServer = http.createServer(reqHandler); function reqHandler(req, res) { - console.log('Got request: ' + req.headers.host + ' ' + req.url); if (req.url === '/setHostFalse5') { assert.equal(req.headers.host, undefined); } else { @@ -14,14 +13,9 @@ function reqHandler(req, res) { req.headers.host); } res.writeHead(200, {}); - //process.nextTick(function() { res.end('ok'); }); res.end('ok'); } -function thrower(er) { - throw er; -} - testHttp(); function testHttp() { @@ -30,61 +24,52 @@ function testHttp() { function cb(res) { counter--; - console.log('back from http request. counter = ' + counter); if (counter === 0) { httpServer.close(); } res.resume(); } - httpServer.listen(0, function(er) { - console.error(`test http server listening on ${this.address().port}`); - - if (er) throw er; - + httpServer.listen(0, (er) => { + assert.ifError(er); http.get({ method: 'GET', path: '/' + (counter++), host: 'localhost', - //agent: false, - port: this.address().port, + port: httpServer.address().port, rejectUnauthorized: false - }, cb).on('error', thrower); + }, cb).on('error', common.fail); http.request({ method: 'GET', path: '/' + (counter++), host: 'localhost', - //agent: false, - port: this.address().port, + port: httpServer.address().port, rejectUnauthorized: false - }, cb).on('error', thrower).end(); + }, cb).on('error', common.fail).end(); http.request({ method: 'POST', path: '/' + (counter++), host: 'localhost', - //agent: false, - port: this.address().port, + port: httpServer.address().port, rejectUnauthorized: false - }, cb).on('error', thrower).end(); + }, cb).on('error', common.fail).end(); http.request({ method: 'PUT', path: '/' + (counter++), host: 'localhost', - //agent: false, - port: this.address().port, + port: httpServer.address().port, rejectUnauthorized: false - }, cb).on('error', thrower).end(); + }, cb).on('error', common.fail).end(); http.request({ method: 'DELETE', path: '/' + (counter++), host: 'localhost', - //agent: false, - port: this.address().port, + port: httpServer.address().port, rejectUnauthorized: false - }, cb).on('error', thrower).end(); + }, cb).on('error', common.fail).end(); }); } diff --git a/test/parallel/test-http-response-splitting.js b/test/parallel/test-http-response-splitting.js index e4021e78317759..f2c7bc5d8d1219 100644 --- a/test/parallel/test-http-response-splitting.js +++ b/test/parallel/test-http-response-splitting.js @@ -19,23 +19,23 @@ const y = 'foo⠊Set-Cookie: foo=bar'; var count = 0; +function test(res, code, header) { + assert.throws(() => { + res.writeHead(code, header); + }, /^TypeError: The header content contains invalid characters$/); +} + const server = http.createServer((req, res) => { switch (count++) { case 0: const loc = url.parse(req.url, true).query.lang; - assert.throws(common.mustCall(() => { - res.writeHead(302, {Location: `/foo?lang=${loc}`}); - })); + test(res, 302, {Location: `/foo?lang=${loc}`}); break; case 1: - assert.throws(common.mustCall(() => { - res.writeHead(200, {'foo': x}); - })); + test(res, 200, {'foo': x}); break; case 2: - assert.throws(common.mustCall(() => { - res.writeHead(200, {'foo': y}); - })); + test(res, 200, {'foo': y}); break; default: common.fail('should not get to here.'); diff --git a/test/parallel/test-http-server-unconsume-consume.js b/test/parallel/test-http-server-unconsume-consume.js new file mode 100644 index 00000000000000..d341093303c76f --- /dev/null +++ b/test/parallel/test-http-server-unconsume-consume.js @@ -0,0 +1,22 @@ +'use strict'; +const common = require('../common'); +const http = require('http'); + +const testServer = http.createServer((req, res) => { + common.fail('Should not be called'); + res.end(); +}); +testServer.on('connect', common.mustCall((req, socket, head) => { + socket.write('HTTP/1.1 200 Connection Established' + '\r\n' + + 'Proxy-agent: Node-Proxy' + '\r\n' + + '\r\n'); + // This shouldn't raise an assertion in StreamBase::Consume. + testServer.emit('connection', socket); + testServer.close(); +})); +testServer.listen(0, common.mustCall(() => { + http.request({ + port: testServer.address().port, + method: 'CONNECT' + }, (res) => {}).end(); +})); diff --git a/test/parallel/test-http-status-reason-invalid-chars.js b/test/parallel/test-http-status-reason-invalid-chars.js index 9950eeeee9cdd2..75ccb2c2430c53 100644 --- a/test/parallel/test-http-status-reason-invalid-chars.js +++ b/test/parallel/test-http-status-reason-invalid-chars.js @@ -3,7 +3,6 @@ const common = require('../common'); const assert = require('assert'); const http = require('http'); -const net = require('net'); function explicit(req, res) { assert.throws(() => { @@ -34,8 +33,7 @@ const server = http.createServer((req, res) => { implicit(req, res); } }).listen(0, common.mustCall(() => { - const addr = server.address().address; - const hostname = net.isIPv6(addr) ? `[${addr}1]` : addr; + const hostname = 'localhost'; const url = `http://${hostname}:${server.address().port}`; let left = 2; const check = common.mustCall((res) => { diff --git a/test/parallel/test-https-truncate.js b/test/parallel/test-https-truncate.js index 4101a8c974e736..c96b385fc37fde 100644 --- a/test/parallel/test-https-truncate.js +++ b/test/parallel/test-https-truncate.js @@ -1,11 +1,12 @@ 'use strict'; const common = require('../common'); -const assert = require('assert'); if (!common.hasCrypto) { common.skip('missing crypto'); return; } + +const assert = require('assert'); const https = require('https'); const fs = require('fs'); @@ -14,7 +15,7 @@ const key = fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'); const cert = fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem'); // number of bytes discovered empirically to trigger the bug -const data = Buffer.allocUnsafe(1024 * 32 + 1); +const data = Buffer.alloc(1024 * 32 + 1); httpsTest(); @@ -36,12 +37,11 @@ function httpsTest() { } -function test(res) { - res.on('end', function() { +const test = common.mustCall(function(res) { + res.on('end', common.mustCall(function() { assert.strictEqual(res._readableState.length, 0); assert.strictEqual(bytes, data.length); - console.log('ok'); - }); + })); // Pause and then resume on each chunk, to ensure that there will be // a lone byte hanging out at the very end. @@ -49,6 +49,6 @@ function test(res) { res.on('data', function(chunk) { bytes += chunk.length; this.pause(); - setTimeout(this.resume.bind(this)); + setTimeout(this.resume.bind(this), 1); }); -} +}); diff --git a/test/parallel/test-net-connect-local-error.js b/test/parallel/test-net-connect-local-error.js index 197b283bdf3621..2a0c20f6ea4a5e 100644 --- a/test/parallel/test-net-connect-local-error.js +++ b/test/parallel/test-net-connect-local-error.js @@ -10,6 +10,14 @@ var client = net.connect({ }); client.on('error', common.mustCall(function onError(err) { - assert.equal(err.localPort, common.PORT); - assert.equal(err.localAddress, common.localhostIPv4); + assert.strictEqual( + err.localPort, + common.PORT, + `${err.localPort} !== ${common.PORT} in ${err}` + ); + assert.strictEqual( + err.localAddress, + common.localhostIPv4, + `${err.localAddress} !== ${common.localhostIPv4} in ${err}` + ); })); diff --git a/test/parallel/test-npm-install.js b/test/parallel/test-npm-install.js index 8a900cf7f7c759..fc15205b3abea7 100644 --- a/test/parallel/test-npm-install.js +++ b/test/parallel/test-npm-install.js @@ -48,8 +48,8 @@ const proc = spawn(process.execPath, args, { }); function handleExit(code, signalCode) { - assert.equal(code, 0, 'npm install should run without an error'); - assert.ok(signalCode === null, 'signalCode should be null'); + assert.strictEqual(code, 0, `npm install got error code ${code}`); + assert.strictEqual(signalCode, null, `unexpected signal: ${signalCode}`); assert.doesNotThrow(function() { fs.accessSync(installDir + '/node_modules/package-name'); }); diff --git a/test/parallel/test-pipe-writev.js b/test/parallel/test-pipe-writev.js new file mode 100644 index 00000000000000..6440b5f623761d --- /dev/null +++ b/test/parallel/test-pipe-writev.js @@ -0,0 +1,46 @@ +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const net = require('net'); + +if (common.isWindows) { + common.skip('Unix-specific test'); + return; +} + +common.refreshTmpDir(); + +const server = net.createServer((connection) => { + connection.on('error', (err) => { + throw err; + }); + + const writev = connection._writev.bind(connection); + connection._writev = common.mustCall(writev); + + connection.cork(); + connection.write('pi'); + connection.write('ng'); + connection.end(); +}); + +server.on('error', (err) => { + throw err; +}); + +server.listen(common.PIPE, () => { + const client = net.connect(common.PIPE); + + client.on('error', (err) => { + throw err; + }); + + client.on('data', common.mustCall((data) => { + assert.strictEqual(data.toString(), 'ping'); + })); + + client.on('end', () => { + server.close(); + }); +}); diff --git a/test/parallel/test-process-assert.js b/test/parallel/test-process-assert.js new file mode 100644 index 00000000000000..e386c3d7600c06 --- /dev/null +++ b/test/parallel/test-process-assert.js @@ -0,0 +1,11 @@ +'use strict'; +require('../common'); +const assert = require('assert'); + +assert.strictEqual(process.assert(1, 'error'), undefined); +assert.throws(() => { + process.assert(undefined, 'errorMessage'); +}, /^Error: errorMessage$/); +assert.throws(() => { + process.assert(false); +}, /^Error: assertion error$/); diff --git a/test/parallel/test-process-cpuUsage.js b/test/parallel/test-process-cpuUsage.js index 92dc71918585c3..0c553c576a1f25 100644 --- a/test/parallel/test-process-cpuUsage.js +++ b/test/parallel/test-process-cpuUsage.js @@ -33,27 +33,57 @@ for (let i = 0; i < 10; i++) { assert(diffUsage.system >= 0); } +const invalidUserArgument = + /^TypeError: value of user property of argument is invalid$/; +const invalidSystemArgument = + /^TypeError: value of system property of argument is invalid$/; + // Ensure that an invalid shape for the previous value argument throws an error. -assert.throws(function() { process.cpuUsage(1); }); -assert.throws(function() { process.cpuUsage({}); }); -assert.throws(function() { process.cpuUsage({ user: 'a' }); }); -assert.throws(function() { process.cpuUsage({ system: 'b' }); }); -assert.throws(function() { process.cpuUsage({ user: null, system: 'c' }); }); -assert.throws(function() { process.cpuUsage({ user: 'd', system: null }); }); -assert.throws(function() { process.cpuUsage({ user: -1, system: 2 }); }); -assert.throws(function() { process.cpuUsage({ user: 3, system: -2 }); }); -assert.throws(function() { +assert.throws(() => { + process.cpuUsage(1); +}, invalidUserArgument); + +assert.throws(() => { + process.cpuUsage({}); +}, invalidUserArgument); + +assert.throws(() => { + process.cpuUsage({ user: 'a' }); +}, invalidUserArgument); + +assert.throws(() => { + process.cpuUsage({ system: 'b' }); +}, invalidUserArgument); + +assert.throws(() => { + process.cpuUsage({ user: null, system: 'c' }); +}, invalidUserArgument); + +assert.throws(() => { + process.cpuUsage({ user: 'd', system: null }); +}, invalidUserArgument); + +assert.throws(() => { + process.cpuUsage({ user: -1, system: 2 }); +}, invalidUserArgument); + +assert.throws(() => { + process.cpuUsage({ user: 3, system: -2 }); +}, invalidSystemArgument); + +assert.throws(() => { process.cpuUsage({ user: Number.POSITIVE_INFINITY, system: 4 }); -}); -assert.throws(function() { +}, invalidUserArgument); + +assert.throws(() => { process.cpuUsage({ user: 5, system: Number.NEGATIVE_INFINITY }); -}); +}, invalidSystemArgument); // Ensure that the return value is the expected shape. function validateResult(result) { diff --git a/test/parallel/test-punycode.js b/test/parallel/test-punycode.js index e869e6a33bf064..80b18f85a98982 100644 --- a/test/parallel/test-punycode.js +++ b/test/parallel/test-punycode.js @@ -18,6 +18,15 @@ assert.strictEqual(punycode.decode( 'Willst du die Blthe des frhen, die Frchte des spteren Jahres-x9e96lkal'), 'Willst du die Blüthe des frühen, die Früchte des späteren Jahres'); assert.strictEqual(punycode.decode('wgv71a119e'), '日本語'); +assert.throws(() => { + punycode.decode(' '); +}, /^RangeError: Invalid input$/); +assert.throws(() => { + punycode.decode('α-'); +}, /^RangeError: Illegal input >= 0x80 \(not a basic code point\)$/); +assert.throws(() => { + punycode.decode('あ'); +}, /^RangeError: Overflow: input needs wider integers to process$/); // http://tools.ietf.org/html/rfc3492#section-7.1 const tests = [ @@ -222,3 +231,9 @@ assert.strictEqual(punycode.ucs2.encode([0xDC00]), '\uDC00'); assert.strictEqual(punycode.ucs2.encode([0xDC00, 0x61, 0x62]), '\uDC00ab'); assert.strictEqual(errors, 0); + +// test map domain +assert.strictEqual(punycode.toASCII('Bücher@日本語.com'), + 'Bücher@xn--wgv71a119e.com'); +assert.strictEqual(punycode.toUnicode('Bücher@xn--wgv71a119e.com'), + 'Bücher@日本語.com'); diff --git a/test/parallel/test-stdio-closed.js b/test/parallel/test-stdio-closed.js index a85467f76a6d0f..98e4f980d50dd6 100644 --- a/test/parallel/test-stdio-closed.js +++ b/test/parallel/test-stdio-closed.js @@ -2,6 +2,7 @@ const common = require('../common'); const assert = require('assert'); const spawn = require('child_process').spawn; +const fs = require('fs'); if (common.isWindows) { common.skip('platform not supported.'); @@ -9,21 +10,7 @@ if (common.isWindows) { } if (process.argv[2] === 'child') { - try { - process.stdout.write('stdout', function() { - try { - process.stderr.write('stderr', function() { - process.exit(42); - }); - } catch (e) { - process.exit(84); - } - }); - } catch (e) { - assert.strictEqual(e.code, 'EBADF'); - assert.strictEqual(e.message, 'EBADF: bad file descriptor, write'); - process.exit(126); - } + [0, 1, 2].forEach((i) => assert.doesNotThrow(() => fs.fstatSync(i))); return; } @@ -32,5 +19,5 @@ const cmd = `"${process.execPath}" "${__filename}" child 1>&- 2>&-`; const proc = spawn('/bin/sh', ['-c', cmd], { stdio: 'inherit' }); proc.on('exit', common.mustCall(function(exitCode) { - assert.strictEqual(exitCode, common.isAix ? 126 : 42); + assert.strictEqual(exitCode, 0); })); diff --git a/test/parallel/test-stream-duplex.js b/test/parallel/test-stream-duplex.js index 3760960ac9346c..0b71b3d9a50569 100644 --- a/test/parallel/test-stream-duplex.js +++ b/test/parallel/test-stream-duplex.js @@ -5,27 +5,28 @@ const Duplex = require('stream').Transform; const stream = new Duplex({ objectMode: true }); +assert(Duplex() instanceof Duplex); assert(stream._readableState.objectMode); assert(stream._writableState.objectMode); let written; let read; -stream._write = function(obj, _, cb) { +stream._write = (obj, _, cb) => { written = obj; cb(); }; -stream._read = function() {}; +stream._read = () => {}; -stream.on('data', function(obj) { +stream.on('data', (obj) => { read = obj; }); stream.push({ val: 1 }); stream.end({ val: 2 }); -process.on('exit', function() { - assert(read.val === 1); - assert(written.val === 2); +process.on('exit', () => { + assert.strictEqual(read.val, 1); + assert.strictEqual(written.val, 2); }); diff --git a/test/parallel/test-stream-pipe-await-drain-manual-resume.js b/test/parallel/test-stream-pipe-await-drain-manual-resume.js index d26741b8bb4825..f7bff02bb1658a 100644 --- a/test/parallel/test-stream-pipe-await-drain-manual-resume.js +++ b/test/parallel/test-stream-pipe-await-drain-manual-resume.js @@ -1,6 +1,7 @@ 'use strict'; const common = require('../common'); const stream = require('stream'); +const assert = require('assert'); // A consumer stream with a very low highWaterMark, which starts in a state // where it buffers the chunk it receives rather than indicating that they @@ -26,6 +27,11 @@ const readable = new stream.Readable({ readable.pipe(writable); readable.once('pause', common.mustCall(() => { + assert.strictEqual( + readable._readableState.awaitDrain, + 1, + 'awaitDrain doesn\'t increase' + ); // First pause, resume manually. The next write() to writable will still // return false, because chunks are still being buffered, so it will increase // the awaitDrain counter again. @@ -34,6 +40,11 @@ readable.once('pause', common.mustCall(() => { })); readable.once('pause', common.mustCall(() => { + assert.strictEqual( + readable._readableState.awaitDrain, + 1, + '.resume() does not reset counter' + ); // Second pause, handle all chunks from now on. Once all callbacks that // are currently queued up are handled, the awaitDrain drain counter should // fall back to 0 and all chunks that are pending on the readable side @@ -50,5 +61,10 @@ readable.push(Buffer(100)); // Should get through to the writable. readable.push(null); writable.on('finish', common.mustCall(() => { + assert.strictEqual( + readable._readableState.awaitDrain, + 0, + 'awaitDrain not 0 after all chunks are written' + ); // Everything okay, all chunks were written. })); diff --git a/test/parallel/test-stream-pipe-await-drain-push-while-write.js b/test/parallel/test-stream-pipe-await-drain-push-while-write.js index 1dfdfdb80c8d71..67a8f304c31614 100644 --- a/test/parallel/test-stream-pipe-await-drain-push-while-write.js +++ b/test/parallel/test-stream-pipe-await-drain-push-while-write.js @@ -1,16 +1,34 @@ 'use strict'; const common = require('../common'); const stream = require('stream'); +const assert = require('assert'); + +const awaitDrainStates = [ + 1, // after first chunk before callback + 1, // after second chunk before callback + 0 // resolving chunk pushed after first chunk, awaitDrain is decreased +]; // A writable stream which pushes data onto the stream which pipes into it, // but only the first time it's written to. Since it's not paused at this time, // a second write will occur. If the pipe increases awaitDrain twice, we'll // never get subsequent chunks because 'drain' is only emitted once. const writable = new stream.Writable({ - write: common.mustCall((chunk, encoding, cb) => { + write: common.mustCall(function(chunk, encoding, cb) { if (chunk.length === 32 * 1024) { // first chunk - readable.push(new Buffer(33 * 1024)); // above hwm + const beforePush = readable._readableState.awaitDrain; + readable.push(new Buffer(34 * 1024)); // above hwm + // We should check if awaitDrain counter is increased. + const afterPush = readable._readableState.awaitDrain; + assert.strictEqual(afterPush - beforePush, 1, + 'Counter is not increased for awaitDrain'); } + + assert.strictEqual( + awaitDrainStates.shift(), + readable._readableState.awaitDrain, + 'State variable awaitDrain is not correct.' + ); cb(); }, 3) }); diff --git a/test/parallel/test-stream-pipe-await-drain.js b/test/parallel/test-stream-pipe-await-drain.js index 0e8d3497123538..ff232157c6cbe0 100644 --- a/test/parallel/test-stream-pipe-await-drain.js +++ b/test/parallel/test-stream-pipe-await-drain.js @@ -1,12 +1,14 @@ 'use strict'; const common = require('../common'); const stream = require('stream'); +const assert = require('assert'); // This is very similar to test-stream-pipe-cleanup-pause.js. const reader = new stream.Readable(); const writer1 = new stream.Writable(); const writer2 = new stream.Writable(); +const writer3 = new stream.Writable(); // 560000 is chosen here because it is larger than the (default) highWaterMark // and will cause `.write()` to return false @@ -19,7 +21,10 @@ writer1._write = common.mustCall(function(chunk, encoding, cb) { this.emit('chunk-received'); cb(); }, 1); + writer1.once('chunk-received', function() { + assert.strictEqual(reader._readableState.awaitDrain, 0, + 'initial value is not 0'); setImmediate(function() { // This one should *not* get through to writer1 because writer2 is not // "done" processing. @@ -29,12 +34,26 @@ writer1.once('chunk-received', function() { // A "slow" consumer: writer2._write = common.mustCall(function(chunk, encoding, cb) { + assert.strictEqual( + reader._readableState.awaitDrain, 1, + 'awaitDrain isn\'t 1 after first push' + ); // Not calling cb here to "simulate" slow stream. + // This should be called exactly once, since the first .write() call + // will return false. +}, 1); +writer3._write = common.mustCall(function(chunk, encoding, cb) { + assert.strictEqual( + reader._readableState.awaitDrain, 2, + 'awaitDrain isn\'t 2 after second push' + ); + // Not calling cb here to "simulate" slow stream. // This should be called exactly once, since the first .write() call // will return false. }, 1); reader.pipe(writer1); reader.pipe(writer2); +reader.pipe(writer3); reader.push(buffer); diff --git a/test/parallel/test-stream2-large-read-stall.js b/test/parallel/test-stream2-large-read-stall.js index eb13a184e5908c..dd1034c7ba19d8 100644 --- a/test/parallel/test-stream2-large-read-stall.js +++ b/test/parallel/test-stream2-large-read-stall.js @@ -32,7 +32,9 @@ r.on('readable', function() { rs.length); }); -r.on('end', common.mustCall(function() {})); +r.on('end', common.mustCall(function() { + assert.strictEqual(pushes, PUSHCOUNT + 1); +})); var pushes = 0; function push() { @@ -48,7 +50,3 @@ function push() { if (r.push(new Buffer(PUSHSIZE))) setTimeout(push); } - -process.on('exit', function() { - assert.equal(pushes, PUSHCOUNT + 1); -}); diff --git a/test/parallel/test-timers.js b/test/parallel/test-timers.js index 0b379e0eb45ad0..87397735eebff2 100644 --- a/test/parallel/test-timers.js +++ b/test/parallel/test-timers.js @@ -1,6 +1,6 @@ 'use strict'; -require('../common'); -var assert = require('assert'); +const common = require('../common'); +const assert = require('assert'); var inputs = [ undefined, @@ -18,13 +18,14 @@ var inputs = [ -10, -1, -0.5, + -0.1, -0.0, 0, 0.0, + 0.1, 0.5, 1, 1.0, - 10, 2147483648, // browser behaviour: timeouts > 2^31-1 run on next tick 12345678901234 // ditto ]; @@ -43,10 +44,17 @@ inputs.forEach(function(value, index) { }, value); }); -process.on('exit', function() { - // assert that all timers have run +// All values in inputs array coerce to 1 ms. Therefore, they should all run +// before a timer set here for 2 ms. + +setTimeout(common.mustCall(function() { + // assert that all other timers have run inputs.forEach(function(value, index) { - assert.equal(true, timeouts[index]); - assert.equal(true, intervals[index]); + assert(timeouts[index]); + assert(intervals[index]); }); -}); +}), 2); + +// Test 10 ms timeout separately. +setTimeout(common.mustCall(function() {}), 10); +setInterval(common.mustCall(function() { clearInterval(this); }), 10); diff --git a/test/parallel/test-tls-addca.js b/test/parallel/test-tls-addca.js new file mode 100644 index 00000000000000..0e9571efdf0abf --- /dev/null +++ b/test/parallel/test-tls-addca.js @@ -0,0 +1,62 @@ +'use strict'; +const common = require('../common'); +const fs = require('fs'); + +if (!common.hasCrypto) { + common.skip('missing crypto'); + return; +} +const tls = require('tls'); + +function filenamePEM(n) { + return require('path').join(common.fixturesDir, 'keys', n + '.pem'); +} + +function loadPEM(n) { + return fs.readFileSync(filenamePEM(n)); +} + +const caCert = loadPEM('ca1-cert'); +const contextWithoutCert = tls.createSecureContext({}); +const contextWithCert = tls.createSecureContext({}); +// Adding a CA certificate to contextWithCert should not also add it to +// contextWithoutCert. This is tested by trying to connect to a server that +// depends on that CA using contextWithoutCert. +contextWithCert.context.addCACert(caCert); + +const serverOptions = { + key: loadPEM('agent1-key'), + cert: loadPEM('agent1-cert'), +}; +const server = tls.createServer(serverOptions, function() {}); + +const clientOptions = { + port: undefined, + ca: [caCert], + servername: 'agent1', + rejectUnauthorized: true, +}; + +function startTest() { + // This client should fail to connect because it doesn't trust the CA + // certificate. + clientOptions.secureContext = contextWithoutCert; + clientOptions.port = server.address().port; + const client = tls.connect(clientOptions, common.fail); + client.on('error', common.mustCall(() => { + client.destroy(); + + // This time it should connect because contextWithCert includes the needed + // CA certificate. + clientOptions.secureContext = contextWithCert; + const client2 = tls.connect(clientOptions, common.mustCall(() => { + client2.destroy(); + server.close(); + })); + client2.on('error', (e) => { + console.log(e); + }); + })); +} + +server.listen(0, startTest); diff --git a/test/parallel/test-tls-startcom-wosign-whitelist.js b/test/parallel/test-tls-startcom-wosign-whitelist.js new file mode 100644 index 00000000000000..fd20e0d8e9745c --- /dev/null +++ b/test/parallel/test-tls-startcom-wosign-whitelist.js @@ -0,0 +1,91 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); + +if (!common.hasCrypto) { + common.skip('missing crypto'); + return; +} + +const tls = require('tls'); +const fs = require('fs'); +const path = require('path'); +let finished = 0; + +function filenamePEM(n) { + return path.join(common.fixturesDir, 'keys', n + '.pem'); +} + +function loadPEM(n) { + return fs.readFileSync(filenamePEM(n)); +} + +const testCases = [ + { // agent8 is signed by fake-startcom-root with notBefore of + // Oct 20 23:59:59 2016 GMT. It passes StartCom/WoSign check. + serverOpts: { + key: loadPEM('agent8-key'), + cert: loadPEM('agent8-cert') + }, + clientOpts: { + ca: loadPEM('fake-startcom-root-cert'), + port: undefined, + rejectUnauthorized: true + }, + errorCode: 'CERT_OK' + }, + { // agent9 is signed by fake-startcom-root with notBefore of + // Oct 21 00:00:01 2016 GMT. It fails StartCom/WoSign check. + serverOpts: { + key: loadPEM('agent9-key'), + cert: loadPEM('agent9-cert') + }, + clientOpts: { + ca: loadPEM('fake-startcom-root-cert'), + port: undefined, + rejectUnauthorized: true + }, + errorCode: 'CERT_REVOKED' + } +]; + + +function runNextTest(server, tindex) { + server.close(function() { + finished++; + runTest(tindex + 1); + }); +} + + +function runTest(tindex) { + const tcase = testCases[tindex]; + + if (!tcase) return; + + const server = tls.createServer(tcase.serverOpts, function(s) { + s.resume(); + }).listen(0, function() { + tcase.clientOpts.port = this.address().port; + const client = tls.connect(tcase.clientOpts); + client.on('error', function(e) { + assert.strictEqual(e.code, tcase.errorCode); + runNextTest(server, tindex); + }); + + client.on('secureConnect', function() { + // agent8 can pass StartCom/WoSign check so that the secureConnect + // is established. + assert.strictEqual(tcase.errorCode, 'CERT_OK'); + client.end(); + runNextTest(server, tindex); + }); + }); +} + + +runTest(0); + +process.on('exit', function() { + assert.strictEqual(finished, testCases.length); +}); diff --git a/test/parallel/test-tls-starttls-server.js b/test/parallel/test-tls-starttls-server.js new file mode 100644 index 00000000000000..ca6a00b25ddc03 --- /dev/null +++ b/test/parallel/test-tls-starttls-server.js @@ -0,0 +1,53 @@ +'use strict'; + +// Test asynchronous SNI+OCSP on TLSSocket created with `server` set to +// `net.Server` instead of `tls.Server` + +const common = require('../common'); + +if (!common.hasCrypto) { + common.skip('missing crypto'); + return; +} + +const assert = require('assert'); +const fs = require('fs'); +const net = require('net'); +const tls = require('tls'); + +const key = fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'); +const cert = fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem'); + +const server = net.createServer(common.mustCall((s) => { + const tlsSocket = new tls.TLSSocket(s, { + isServer: true, + server: server, + + secureContext: tls.createSecureContext({ + key: key, + cert: cert + }), + + SNICallback: common.mustCall((hostname, callback) => { + assert.strictEqual(hostname, 'test.test'); + + callback(null, null); + }) + }); + + tlsSocket.on('secure', common.mustCall(() => { + tlsSocket.end(); + server.close(); + })); +})).listen(0, () => { + const opts = { + servername: 'test.test', + port: server.address().port, + rejectUnauthorized: false, + requestOCSP: true + }; + + tls.connect(opts, function() { + this.end(); + }); +}); diff --git a/test/parallel/test-vm-property-not-on-sandbox.js b/test/parallel/test-vm-property-not-on-sandbox.js new file mode 100644 index 00000000000000..08ea5890784c37 --- /dev/null +++ b/test/parallel/test-vm-property-not-on-sandbox.js @@ -0,0 +1,37 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const vm = require('vm'); + +// This, admittedly contrived, example tests an edge cases of the vm module. +// +// The GetterCallback explicitly checks the global_proxy() if a property is +// not found on the sandbox. In the following test, the explicit check +// inside the callback yields different results than deferring the +// check until after the callback. The check is deferred if the +// callback does not intercept, i.e., if args.GetReturnValue().Set() is +// not called. + +// Check that the GetterCallback explicitly calls GetRealNamedProperty() +// on the global proxy if the property is not found on the sandbox. +// +// foo is not defined on the sandbox until we call CopyProperties(). +// In the GetterCallback, we do not find the property on the sandbox and +// get the property from the global proxy. Since the return value is +// the sandbox, we replace it by +// the global_proxy to keep the correct identities. +// +// This test case is partially inspired by +// https://github.com/nodejs/node/issues/855 +const sandbox = {console}; +sandbox.document = {defaultView: sandbox}; +vm.createContext(sandbox); +const code = `Object.defineProperty( + this, + 'foo', + { get: function() {return document.defaultView} } + ); + var result = foo === this;`; + +vm.runInContext(code, sandbox); +assert.strictEqual(sandbox.result, true); diff --git a/test/parallel/test-zlib-write-after-close.js b/test/parallel/test-zlib-write-after-close.js index b346d2069a5e96..0cd590a4abbfce 100644 --- a/test/parallel/test-zlib-write-after-close.js +++ b/test/parallel/test-zlib-write-after-close.js @@ -6,7 +6,5 @@ var zlib = require('zlib'); zlib.gzip('hello', common.mustCall(function(err, out) { var unzip = zlib.createGunzip(); unzip.close(common.mustCall(function() {})); - assert.throws(function() { - unzip.write(out); - }); + assert.throws(() => unzip.write(out), /^Error: zlib binding closed$/); })); diff --git a/test/pseudo-tty/pseudo-tty.status b/test/pseudo-tty/pseudo-tty.status index e16bb28cd7be61..83e6d05a4c2e20 100644 --- a/test/pseudo-tty/pseudo-tty.status +++ b/test/pseudo-tty/pseudo-tty.status @@ -2,5 +2,7 @@ prefix pseudo-tty [$system==aix] # test issue only, covered under https://github.com/nodejs/node/issues/7973 -no_dropped_stdio : SKIP -no_interleaved_stdio : SKIP +no_dropped_stdio : SKIP +no_interleaved_stdio : SKIP +# test issue: https://github.com/nodejs/node/issues/11541 +test-stderr-stdout-handle-sigwinch : SKIP diff --git a/test/pseudo-tty/test-stderr-stdout-handle-sigwinch.js b/test/pseudo-tty/test-stderr-stdout-handle-sigwinch.js index f1a95559b9dc92..f828e92afbe71c 100644 --- a/test/pseudo-tty/test-stderr-stdout-handle-sigwinch.js +++ b/test/pseudo-tty/test-stderr-stdout-handle-sigwinch.js @@ -5,7 +5,7 @@ const originalRefreshSizeStderr = process.stderr._refreshSize; const originalRefreshSizeStdout = process.stdout._refreshSize; const wrap = (fn, ioStream, string) => { - return () => { + const wrapped = common.mustCall(() => { // The console.log() call prints a string that is in the .out file. In other // words, the console.log() is part of the test, not extraneous debugging. console.log(string); @@ -16,7 +16,8 @@ const wrap = (fn, ioStream, string) => { if (!common.isSunOS || e.code !== 'EINVAL') throw e; } - }; + }); + return wrapped; }; process.stderr._refreshSize = wrap(originalRefreshSizeStderr, diff --git a/test/pummel/test-child-process-spawn-loop.js b/test/pummel/test-child-process-spawn-loop.js index 7e686cada244b3..7a3cf114b4e8e9 100644 --- a/test/pummel/test-child-process-spawn-loop.js +++ b/test/pummel/test-child-process-spawn-loop.js @@ -4,26 +4,26 @@ var assert = require('assert'); var spawn = require('child_process').spawn; -var SIZE = 1000 * 1024; -var N = 40; -var finished = false; +const SIZE = 1000 * 1024; +const N = 40; +let finished = false; function doSpawn(i) { - var child = spawn('python', ['-c', 'print ' + SIZE + ' * "C"']); - var count = 0; + const child = spawn('python', ['-c', 'print ' + SIZE + ' * "C"']); + let count = 0; child.stdout.setEncoding('ascii'); - child.stdout.on('data', function(chunk) { + child.stdout.on('data', (chunk) => { count += chunk.length; }); - child.stderr.on('data', function(chunk) { + child.stderr.on('data', (chunk) => { console.log('stderr: ' + chunk); }); - child.on('close', function() { + child.on('close', () => { // + 1 for \n or + 2 for \r\n on Windows - assert.equal(SIZE + (common.isWindows ? 2 : 1), count); + assert.strictEqual(SIZE + (common.isWindows ? 2 : 1), count); if (i < N) { doSpawn(i + 1); } else { @@ -34,6 +34,6 @@ function doSpawn(i) { doSpawn(0); -process.on('exit', function() { +process.on('exit', () => { assert.ok(finished); }); diff --git a/test/pummel/test-crypto-dh.js b/test/pummel/test-crypto-dh.js index 268496380f4c3a..064ce3c7f597d8 100644 --- a/test/pummel/test-crypto-dh.js +++ b/test/pummel/test-crypto-dh.js @@ -9,15 +9,32 @@ try { return; } -assert.throws(function() { - crypto.getDiffieHellman('unknown-group'); -}); -assert.throws(function() { - crypto.getDiffieHellman('modp1').setPrivateKey(''); -}); -assert.throws(function() { - crypto.getDiffieHellman('modp1').setPublicKey(''); -}); +assert.throws( + function() { + crypto.getDiffieHellman('unknown-group'); + }, + /^Error: Unknown group$/, + 'crypto.getDiffieHellman(\'unknown-group\') ' + + 'failed to throw the expected error.' +); +assert.throws( + function() { + crypto.getDiffieHellman('modp1').setPrivateKey(''); + }, + new RegExp('^TypeError: crypto\\.getDiffieHellman\\(\\.\\.\\.\\)\\.' + + 'setPrivateKey is not a function$'), + 'crypto.getDiffieHellman(\'modp1\').setPrivateKey(\'\') ' + + 'failed to throw the expected error.' +); +assert.throws( + function() { + crypto.getDiffieHellman('modp1').setPublicKey(''); + }, + new RegExp('^TypeError: crypto\\.getDiffieHellman\\(\\.\\.\\.\\)\\.' + + 'setPublicKey is not a function$'), + 'crypto.getDiffieHellman(\'modp1\').setPublicKey(\'\') ' + + 'failed to throw the expected error.' +); var hashes = { modp1: '630e9acd2cc63f7e80d8507624ba60ac0757201a', diff --git a/test/pummel/test-exec.js b/test/pummel/test-exec.js index 6f6e1511b14442..18404373318917 100644 --- a/test/pummel/test-exec.js +++ b/test/pummel/test-exec.js @@ -63,6 +63,8 @@ exec(SLEEP3_COMMAND, { timeout: 50 }, function(err, stdout, stderr) { assert.ok(err); assert.ok(err.killed); assert.strictEqual(err.signal, 'SIGTERM'); + assert.strictEqual(stdout, ''); + assert.strictEqual(stderr, ''); }); @@ -85,6 +87,8 @@ function killMeTwiceCallback(err, stdout, stderr) { assert.ok(err); assert.ok(err.killed); assert.strictEqual(err.signal, 'SIGTERM'); + assert.strictEqual(stdout, ''); + assert.strictEqual(stderr, ''); // the timeout should still be in effect console.log('\'sleep 3\' was already killed. Took %d ms', diff); @@ -96,6 +100,8 @@ exec('python -c "print 200000*\'C\'"', {maxBuffer: 1000}, function(err, stdout, stderr) { assert.ok(err); assert.ok(/maxBuffer/.test(err.message)); + assert.strictEqual(stdout, ''); + assert.strictEqual(stderr, ''); }); diff --git a/test/pummel/test-keep-alive.js b/test/pummel/test-keep-alive.js index 1861b2df970e18..47d529b64082fa 100644 --- a/test/pummel/test-keep-alive.js +++ b/test/pummel/test-keep-alive.js @@ -12,8 +12,8 @@ if (common.isWindows) { return; } -var body = 'hello world\n'; -var server = http.createServer(function(req, res) { +const body = 'hello world\n'; +const server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Length': body.length, 'Content-Type': 'text/plain' @@ -22,12 +22,12 @@ var server = http.createServer(function(req, res) { res.end(); }); -var keepAliveReqSec = 0; -var normalReqSec = 0; +let keepAliveReqSec = 0; +let normalReqSec = 0; function runAb(opts, callback) { - var args = [ + const args = [ '-c', opts.concurrent || 100, '-t', opts.threads || 2, '-d', opts.duration || '10s', @@ -41,13 +41,11 @@ function runAb(opts, callback) { args.push(url.format({ hostname: '127.0.0.1', port: common.PORT, protocol: 'http'})); - //console.log(comm, args.join(' ')); - - var child = spawn('wrk', args); + const child = spawn('wrk', args); child.stderr.pipe(process.stderr); child.stdout.setEncoding('utf8'); - var stdout; + let stdout; child.stdout.on('data', function(data) { stdout += data; @@ -60,11 +58,11 @@ function runAb(opts, callback) { return; } - var matches = /Requests\/sec:\s*(\d+)\./mi.exec(stdout); - var reqSec = parseInt(matches[1]); + let matches = /Requests\/sec:\s*(\d+)\./mi.exec(stdout); + const reqSec = parseInt(matches[1]); matches = /Keep-Alive requests:\s*(\d+)/mi.exec(stdout); - var keepAliveRequests; + let keepAliveRequests; if (matches) { keepAliveRequests = parseInt(matches[1]); } else { @@ -75,21 +73,19 @@ function runAb(opts, callback) { }); } -server.listen(common.PORT, function() { - runAb({ keepalive: true }, function(reqSec) { +server.listen(common.PORT, () => { + runAb({ keepalive: true }, (reqSec) => { keepAliveReqSec = reqSec; - console.log('keep-alive:', keepAliveReqSec, 'req/sec'); runAb({ keepalive: false }, function(reqSec) { normalReqSec = reqSec; - console.log('normal:' + normalReqSec + ' req/sec'); server.close(); }); }); }); process.on('exit', function() { - assert.equal(true, normalReqSec > 50); - assert.equal(true, keepAliveReqSec > 50); - assert.equal(true, normalReqSec < keepAliveReqSec); + assert.strictEqual(true, normalReqSec > 50); + assert.strictEqual(true, keepAliveReqSec > 50); + assert.strictEqual(true, normalReqSec < keepAliveReqSec); }); diff --git a/test/pummel/test-watch-file.js b/test/pummel/test-watch-file.js index 8fdf6b32b2d78c..8b79ef8ede4a63 100644 --- a/test/pummel/test-watch-file.js +++ b/test/pummel/test-watch-file.js @@ -5,14 +5,11 @@ var assert = require('assert'); var fs = require('fs'); var path = require('path'); -var f = path.join(common.fixturesDir, 'x.txt'); +const f = path.join(common.fixturesDir, 'x.txt'); -console.log('watching for changes of ' + f); - -var changes = 0; +let changes = 0; function watchFile() { - fs.watchFile(f, function(curr, prev) { - console.log(f + ' change'); + fs.watchFile(f, (curr, prev) => { changes++; assert.notDeepStrictEqual(curr.mtime, prev.mtime); fs.unwatchFile(f); @@ -24,7 +21,7 @@ function watchFile() { watchFile(); -var fd = fs.openSync(f, 'w+'); +const fd = fs.openSync(f, 'w+'); fs.writeSync(fd, 'xyz\n'); fs.closeSync(fd); diff --git a/test/sequential/test-module-loading.js b/test/sequential/test-module-loading.js index 6125eefc360f00..0331c8318e362e 100644 --- a/test/sequential/test-module-loading.js +++ b/test/sequential/test-module-loading.js @@ -97,7 +97,8 @@ console.error('test name clashes'); var my_path = require('../fixtures/path'); assert.ok(my_path.path_func instanceof Function); // this one does not exist and should throw -assert.throws(function() { require('./utils'); }); +assert.throws(function() { require('./utils'); }, + /^Error: Cannot find module '.\/utils'$/); var errorThrown = false; try { @@ -124,7 +125,7 @@ assert.strictEqual(require('../fixtures/registerExt.hello.world').test, 'passed'); console.error('load custom file types that return non-strings'); -require.extensions['.test'] = function(module, filename) { +require.extensions['.test'] = function(module) { module.exports = { custom: 'passed' }; diff --git a/test/sequential/test-vm-timeout-rethrow.js b/test/sequential/test-vm-timeout-rethrow.js index f0f9c0b9c51063..7e148bd4d0b94f 100644 --- a/test/sequential/test-vm-timeout-rethrow.js +++ b/test/sequential/test-vm-timeout-rethrow.js @@ -5,15 +5,9 @@ var vm = require('vm'); var spawn = require('child_process').spawn; if (process.argv[2] === 'child') { - var code = 'var j = 0;\n' + - 'for (var i = 0; i < 1000000; i++) j += add(i, i + 1);\n' + - 'j;'; + const code = 'while(true);'; - var ctx = vm.createContext({ - add: function(x, y) { - return x + y; - } - }); + const ctx = vm.createContext(); vm.runInContext(code, ctx, { timeout: 1 }); } else { diff --git a/tools/doc/README.md b/tools/doc/README.md index e472c712dc0a52..1aa2158d14209f 100644 --- a/tools/doc/README.md +++ b/tools/doc/README.md @@ -98,10 +98,9 @@ Each type of heading has a description block. This event is emitted on instances of SomeClass, not on the module itself. -* Modules have (description, Properties, Functions, Classes, Examples) -* Properties have (type, description) -* Functions have (list of arguments, description) * Classes have (description, Properties, Methods, Events) * Events have (list of arguments, description) +* Functions have (list of arguments, description) * Methods have (list of arguments, description) +* Modules have (description, Properties, Functions, Classes, Examples) * Properties have (type, description) diff --git a/tools/doc/generate.js b/tools/doc/generate.js index 31b23c52a08ba7..b7fcf0d4f90da5 100644 --- a/tools/doc/generate.js +++ b/tools/doc/generate.js @@ -11,16 +11,19 @@ let format = 'json'; let template = null; let inputFile = null; let nodeVersion = null; +let analytics = null; args.forEach(function(arg) { - if (!arg.match(/^--/)) { + if (!arg.startsWith('--')) { inputFile = arg; - } else if (arg.match(/^--format=/)) { + } else if (arg.startsWith('--format=')) { format = arg.replace(/^--format=/, ''); - } else if (arg.match(/^--template=/)) { + } else if (arg.startsWith('--template=')) { template = arg.replace(/^--template=/, ''); - } else if (arg.match(/^--node-version=/)) { + } else if (arg.startsWith('--node-version=')) { nodeVersion = arg.replace(/^--node-version=/, ''); + } else if (arg.startsWith('--analytics=')) { + analytics = arg.replace(/^--analytics=/, ''); } }); @@ -54,6 +57,7 @@ function next(er, input) { filename: inputFile, template: template, nodeVersion: nodeVersion, + analytics: analytics, }, function(er, html) { diff --git a/tools/doc/html.js b/tools/doc/html.js index b3e5f8d708cc14..462073c34a74f5 100644 --- a/tools/doc/html.js +++ b/tools/doc/html.js @@ -67,6 +67,7 @@ function toHTML(opts, cb) { filename: opts.filename, template: template, nodeVersion: nodeVersion, + analytics: opts.analytics, }, cb); }); } @@ -128,6 +129,13 @@ function render(opts, cb) { gtocData.replace('class="nav-' + id, 'class="nav-' + id + ' active') ); + if (opts.analytics) { + template = template.replace( + '', + analyticsScript(opts.analytics) + ); + } + // content has to be the last thing we do with // the lexed tokens, because it's destructive. const content = marked.parser(lexed); @@ -137,6 +145,23 @@ function render(opts, cb) { }); } +function analyticsScript(analytics) { + return ` + + + `; +} + // handle general body-text replacements // for example, link man page references to the actual page function parseText(lexed) { diff --git a/tools/gyp/pylib/gyp/generator/compile_commands_json.py b/tools/gyp/pylib/gyp/generator/compile_commands_json.py new file mode 100644 index 00000000000000..575db63c4e1943 --- /dev/null +++ b/tools/gyp/pylib/gyp/generator/compile_commands_json.py @@ -0,0 +1,115 @@ +# Copyright (c) 2016 Ben Noordhuis . All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import gyp.common +import gyp.xcode_emulation +import json +import os + +generator_additional_non_configuration_keys = [] +generator_additional_path_sections = [] +generator_extra_sources_for_rules = [] +generator_filelist_paths = None +generator_supports_multiple_toolsets = True +generator_wants_sorted_dependencies = False + +# Lifted from make.py. The actual values don't matter much. +generator_default_variables = { + 'CONFIGURATION_NAME': '$(BUILDTYPE)', + 'EXECUTABLE_PREFIX': '', + 'EXECUTABLE_SUFFIX': '', + 'INTERMEDIATE_DIR': '$(obj).$(TOOLSET)/$(TARGET)/geni', + 'PRODUCT_DIR': '$(builddir)', + 'RULE_INPUT_DIRNAME': '%(INPUT_DIRNAME)s', + 'RULE_INPUT_EXT': '$(suffix $<)', + 'RULE_INPUT_NAME': '$(notdir $<)', + 'RULE_INPUT_PATH': '$(abspath $<)', + 'RULE_INPUT_ROOT': '%(INPUT_ROOT)s', + 'SHARED_INTERMEDIATE_DIR': '$(obj)/gen', + 'SHARED_LIB_PREFIX': 'lib', + 'STATIC_LIB_PREFIX': 'lib', + 'STATIC_LIB_SUFFIX': '.a', +} + + +def IsMac(params): + return 'mac' == gyp.common.GetFlavor(params) + + +def CalculateVariables(default_variables, params): + default_variables.setdefault('OS', gyp.common.GetFlavor(params)) + + +def AddCommandsForTarget(cwd, target, params, per_config_commands): + output_dir = params['generator_flags']['output_dir'] + for configuration_name, configuration in target['configurations'].iteritems(): + builddir_name = os.path.join(output_dir, configuration_name) + + if IsMac(params): + xcode_settings = gyp.xcode_emulation.XcodeSettings(target) + cflags = xcode_settings.GetCflags(configuration_name) + cflags_c = xcode_settings.GetCflagsC(configuration_name) + cflags_cc = xcode_settings.GetCflagsCC(configuration_name) + else: + cflags = configuration.get('cflags', []) + cflags_c = configuration.get('cflags_c', []) + cflags_cc = configuration.get('cflags_cc', []) + + cflags_c = cflags + cflags_c + cflags_cc = cflags + cflags_cc + + defines = configuration.get('defines', []) + defines = ['-D' + s for s in defines] + + # TODO(bnoordhuis) Handle generated source files. + sources = target.get('sources', []) + sources = [s for s in sources if s.endswith('.c') or s.endswith('.cc')] + + def resolve(filename): + return os.path.abspath(os.path.join(cwd, filename)) + + # TODO(bnoordhuis) Handle generated header files. + include_dirs = configuration.get('include_dirs', []) + include_dirs = [s for s in include_dirs if not s.startswith('$(obj)')] + includes = ['-I' + resolve(s) for s in include_dirs] + + defines = gyp.common.EncodePOSIXShellList(defines) + includes = gyp.common.EncodePOSIXShellList(includes) + cflags_c = gyp.common.EncodePOSIXShellList(cflags_c) + cflags_cc = gyp.common.EncodePOSIXShellList(cflags_cc) + + commands = per_config_commands.setdefault(configuration_name, []) + for source in sources: + file = resolve(source) + isc = source.endswith('.c') + cc = 'cc' if isc else 'c++' + cflags = cflags_c if isc else cflags_cc + command = ' '.join((cc, defines, includes, cflags, + '-c', gyp.common.EncodePOSIXShellArgument(file))) + commands.append(dict(command=command, directory=output_dir, file=file)) + + +def GenerateOutput(target_list, target_dicts, data, params): + per_config_commands = {} + for qualified_target, target in target_dicts.iteritems(): + build_file, target_name, toolset = ( + gyp.common.ParseQualifiedTarget(qualified_target)) + if IsMac(params): + settings = data[build_file] + gyp.xcode_emulation.MergeGlobalXcodeSettingsToSpec(settings, target) + cwd = os.path.dirname(build_file) + AddCommandsForTarget(cwd, target, params, per_config_commands) + + output_dir = params['generator_flags']['output_dir'] + for configuration_name, commands in per_config_commands.iteritems(): + filename = os.path.join(output_dir, + configuration_name, + 'compile_commands.json') + gyp.common.EnsureDirExists(filename) + fp = open(filename, 'w') + json.dump(commands, fp=fp, indent=0, check_circular=False) + + +def PerformBuild(data, configurations, params): + pass diff --git a/tools/test.py b/tools/test.py index 42f25ae52201e5..735f8550316a0a 100755 --- a/tools/test.py +++ b/tools/test.py @@ -1672,9 +1672,9 @@ def Main(): tempdir = os.environ.get('NODE_TEST_DIR') or options.temp_dir if tempdir: + os.environ['NODE_TEST_DIR'] = tempdir try: os.makedirs(tempdir) - os.environ['NODE_TEST_DIR'] = tempdir except OSError as exception: if exception.errno != errno.EEXIST: print "Could not create the temporary directory", options.temp_dir