From 4c6076618bb187af119ef9359e01fe94440d541b Mon Sep 17 00:00:00 2001 From: Pass Automated Testing Suite Date: Fri, 3 May 2024 19:00:26 +0200 Subject: [PATCH] Add the `LXM` bitgenerator. --- bin/bench.ml | 1 + bin/crush.ml | 1 + lib/bitgen.ml | 1 + lib/lxm.ml | 77 +++ test/data/lxm-testset-1.csv | 1001 +++++++++++++++++++++++++++++++++++ test/data/lxm-testset-2.csv | 1001 +++++++++++++++++++++++++++++++++++ test/test_bitgenerators.ml | 4 +- test/test_lxm.ml | 27 + 8 files changed, 2112 insertions(+), 1 deletion(-) create mode 100644 lib/lxm.ml create mode 100644 test/data/lxm-testset-1.csv create mode 100644 test/data/lxm-testset-2.csv create mode 100644 test/test_lxm.ml diff --git a/bin/bench.ml b/bin/bench.ml index 084c293..6458ffd 100644 --- a/bin/bench.ml +++ b/bin/bench.ml @@ -18,6 +18,7 @@ let pairs = [ "Xoshiro256", (module Xoshiro256: S); "Philox4x64", (module Philox4x64: S); "ChaCha", (module ChaCha: S); + "LXM", (module LXM: S) ] diff --git a/bin/crush.ml b/bin/crush.ml index bd529d9..f582f63 100644 --- a/bin/crush.ml +++ b/bin/crush.ml @@ -52,6 +52,7 @@ let to_module = function | "philox4x64" -> (module Philox4x64 : S) | "sfc64" -> (module SFC64 : S) | "chacha" -> (module ChaCha : S) + | "lxm" -> (module LXM : S) | _ -> failwith "Unknown PRNG" diff --git a/lib/bitgen.ml b/lib/bitgen.ml index bda8e61..5424189 100644 --- a/lib/bitgen.ml +++ b/lib/bitgen.ml @@ -32,3 +32,4 @@ module PCG64 = Pcg.PCG64 module Xoshiro256 = Xoshiro.Xoshiro256StarStar module Philox4x64 = Philox.Philox module ChaCha = Chacha.ChaCha128Counter +module LXM = Lxm.LXM diff --git a/lib/lxm.ml b/lib/lxm.ml new file mode 100644 index 0000000..52b2d89 --- /dev/null +++ b/lib/lxm.ml @@ -0,0 +1,77 @@ +open Stdint + + +module LXM : sig + include Common.BITGEN + + val jump : t -> t + (** [jump t] is equivalent to {m 2^{128}} calls to {!LXM.next_uint64}. *) +end = struct + type t = {state : uint64 array; lcg_state : uint64; b : uint64; ustore : uint32 option} + + + let rotl x k = let y = 64 - k in Uint64.(logor (shift_left x k) (shift_right x y)) + + + let p0 = Uint64.of_int64 0xbf58476d1ce4e5b9L + let p1 = Uint64.of_int64 0x94d049bb133111ebL + let default_add_val = Uint64.of_int 3037000493 + let multiplier = Uint64.of_int64 2862933555777941757L + + + let murmur_hash3 key = + Uint64.(logxor key (shift_right key 30) * p0) + |> (fun k -> Uint64.(logxor k (shift_right k 27) * p1)) + |> (fun k -> Uint64.(logxor k (shift_right k 31))) + + + let xorshift s = + let open Uint64 in + let x2 = logxor s.(2) s.(0) and x3 = logxor s.(3) s.(1) + in [|logxor s.(0) x3; logxor s.(1) x2; shift_left s.(1) 17 |> logxor x2; rotl x3 45|] + + + let next_uint64 t = + murmur_hash3 Uint64.(t.state.(0) + t.lcg_state), + {t with lcg_state = Uint64.(t.lcg_state * multiplier + t.b); state = xorshift t.state} + + + let next_uint32 t = match Common.next_uint32 ~next:next_uint64 t t.ustore with + | u, s, ustore -> u, {s with ustore} + + + let next_double t = Common.next_double ~nextu64:next_uint64 t + + + let next_bounded_uint64 bound t = Common.next_bounded_uint64 bound ~nextu64:next_uint64 t + + + let zeros = Uint64.[|zero; zero; zero; zero|] + let jump = Uint64.([|of_int 0x180ec6d33cfd0aba; of_int64 0xd5a61266f0c9392cL; + of_int64 0xa9582618e03fc9aaL; of_int 0x39abdc4529b1661c|]) + let xorshift_jump t = + let rec loop b j (acc0, acc1) = + match b >= 64, Uint64.(logand j (shift_left one b) > zero) with + | true, _ -> acc0, acc1 + | false, true -> loop (b + 1) j (Array.map2 Uint64.logxor acc0 acc1, xorshift acc1) + | false, false -> loop (b + 1) j (acc0, xorshift acc1) + in {t with state = Array.fold_right (loop 0) jump (zeros, t.state) |> fst; ustore = None} + + + let jump = xorshift_jump + + + let initialize_full b seed = + let rec loop state = function + | b when b <> Uint64.zero -> state + | b -> + let state' = Seed.SeedSequence.generate_64bit_state 5 seed in + let bits = Array.fold_left Uint64.logor b (Array.sub state' 0 4) + in loop state' bits + in + let s = loop (Seed.SeedSequence.generate_64bit_state 5 seed) Uint64.zero in + {state = Array.sub s 0 4; lcg_state = s.(4); b = Uint64.(logor b one); ustore = None} + + + let initialize seed = initialize_full default_add_val seed +end diff --git a/test/data/lxm-testset-1.csv b/test/data/lxm-testset-1.csv new file mode 100644 index 0000000..b372bf2 --- /dev/null +++ b/test/data/lxm-testset-1.csv @@ -0,0 +1,1001 @@ +seed, 0xdeadbeaf +0, 0xc262a4f74fd51497 +1, 0x703bdc352480c56 +2, 0xac52a3da0c283220 +3, 0x81cfd834132c35 +4, 0x923009b568917e62 +5, 0x50cd2b8f55182c36 +6, 0xf4a5cb77662e9e7 +7, 0xdd2d36bc691ab5fb +8, 0xc2d53345ab5220f0 +9, 0x51b3432b7f744559 +10, 0x50af7112f072c746 +11, 0x6d3c61fa3bc9d71a +12, 0xfd4b5e2f7102bb3 +13, 0x9b20aa3ecf95d2db +14, 0xbd11c8b177b8905c +15, 0x8f255b5b6a0db8cd +16, 0x4cca379fe730f87d +17, 0xe7d38db2acd6e57f +18, 0x9f388b422da868fa +19, 0xeb949aaf4c9a8bc4 +20, 0xbf61fcba1e339948 +21, 0x4551174f70a78b9e +22, 0x2a4ef6a3da6f50dd +23, 0xb2fab2e013b639b1 +24, 0x6aef063d41b2011e +25, 0xeff80f8f312ecab7 +26, 0xdb191b72fc795604 +27, 0x3b6145449574a0bb +28, 0xf1bc9a04c3e87fc3 +29, 0x4498dcff12e92636 +30, 0x7b4d23bb10ebf625 +31, 0x5d4153b8df5bc920 +32, 0x7c281c8ec25b5fb4 +33, 0x60dfcc4779f2ec84 +34, 0x6ed24a92577e46dd +35, 0x4f05a26b4bd02235 +36, 0x2ce79c0de68fd60c +37, 0x8a2523584ffde422 +38, 0xcc11c3bcfb964491 +39, 0xf419c524aaf76b7e +40, 0x1e8e7bf4ff159cfa +41, 0x1f92474029522d55 +42, 0x8312373377a33745 +43, 0x80e25f40c432cc49 +44, 0xf28e2eaf1902eb67 +45, 0xebefa292c80c10b6 +46, 0x7ff1a0e97a4ed1df +47, 0x932181fe7996d845 +48, 0x84ca54a687d9ad1f +49, 0x60ec14679cbb97ce +50, 0x922fd7ff3f68a159 +51, 0xef45d3f07a441898 +52, 0xeca396be2b92d30e +53, 0xc21d075c52d376ea +54, 0x78eef65f27dde426 +55, 0xdd27f6f489e7dd05 +56, 0x15e047db70544533 +57, 0x8fee85a6ec004275 +58, 0xf5f87b23b487be1d +59, 0x7f3a11cd52a939f +60, 0xcaf21dccab1c98bf +61, 0xcf9932d457586a10 +62, 0x10edf2337090a76f +63, 0x2e04cb4da8f255a6 +64, 0x89ab2a06f6b60b55 +65, 0x6fb15719552327c8 +66, 0x4a3273d734905d7d +67, 0x3b8076c4f1e86221 +68, 0x2a75b3531a56badb +69, 0xfe423481406bb23d +70, 0x6fa79aca91489ba +71, 0x65caabaac273d595 +72, 0x2fdbb81c06841ddb +73, 0x1c74df61484b90f2 +74, 0x140e5b488c45c91f +75, 0x36a26c81a5eac81c +76, 0x42322c4050dfb39c +77, 0x3e156bef6fe2d8e1 +78, 0xec322da060ef85b7 +79, 0x26ed915f07365fb7 +80, 0x940052c8feaee984 +81, 0xfae2bf812a22d301 +82, 0x2411768692565965 +83, 0xb26836e8db77155 +84, 0x34f45170858d6db6 +85, 0x3eb3381b1122645b +86, 0x8a70071f1864969 +87, 0x9d67b164a90eb23e +88, 0xe2260aa3303b0b20 +89, 0x91a0b3d629e4061 +90, 0x2a2b8a72803863fa +91, 0xa68ed68a5413c492 +92, 0x3e8d3a7d3e02d16e +93, 0xb5c729bb72bd44e +94, 0x58c981ac114b7edb +95, 0x1c78e9b168531fc0 +96, 0x71b059c24051919b +97, 0x279fd50552c9aef6 +98, 0x72419eb28fdd3a1c +99, 0x3d55ca7e101ebd7e +100, 0x268b44ead001ace2 +101, 0x776710a1e389f0b +102, 0x3d02df633b4f616 +103, 0x4d3eff78d3bf4aef +104, 0x847a8500232b7f7 +105, 0x5b4617ef15b8524f +106, 0xd7d063734dfd1c50 +107, 0xc17611f7efee60ab +108, 0x6fdf66853a70fe6 +109, 0xe43589cd8ee21559 +110, 0x44109745481c4a6c +111, 0xe4c51b06fa8e2661 +112, 0x288f978905eb3ab5 +113, 0x6f5252ba3f3ae32b +114, 0xd2979f2324f2aadc +115, 0xe1a3fa1d998bab97 +116, 0xeb97e11e6e85245d +117, 0x142d216e9f43146d +118, 0xb4f1a54c68b55834 +119, 0xc207b4ab83aae3f2 +120, 0x4627dadf2be61157 +121, 0x8df775b38ab25c37 +122, 0x39d5968a70d6ecae +123, 0x61d4460c0a53c424 +124, 0x2acb1139342ae64c +125, 0xf038d88cc09f9ab3 +126, 0x5a541cd3c26c3703 +127, 0x257155a804093c9c +128, 0x49ca9348cb9a243f +129, 0xe20e4f4b5d8d6c02 +130, 0xa6d64691725f4cf2 +131, 0x17ff7f5430e75cc8 +132, 0x8bab191d6ef741a6 +133, 0x37c42e7805f384b +134, 0xf28e6eedb8b6be3a +135, 0x52c48b8b1c0da8fe +136, 0x1d6f53478b9eef7e +137, 0xcaf0743ca324fa93 +138, 0xce865e9d6ebb7478 +139, 0xea88e32ddea25935 +140, 0xa885d72f1aef1f19 +141, 0x44967ae2e42518e5 +142, 0xd83574b24ebd8d0e +143, 0x9bbfa13fd51030f8 +144, 0xef5f3c1f9ae5f59d +145, 0xb68cd3a3fc3f3c02 +146, 0xe827a2ba2a3a91f5 +147, 0xed7722ae90230606 +148, 0xb731fd84b6d49e64 +149, 0x43cb8cff20c3d68 +150, 0xaa1667a008f367a1 +151, 0x97b505c972d0fdac +152, 0x345bb4fe508d130 +153, 0xe1468440c92c1ed6 +154, 0xda7503a6f3df2c88 +155, 0x441659985dec120a +156, 0xaf15959829b16286 +157, 0xb55a42602e07a9f5 +158, 0xc1601861b155d1bc +159, 0x83fdf7b7b2815b45 +160, 0x6b90a22a16dd6678 +161, 0xb1b82857c875b789 +162, 0xa33c99c456abcf02 +163, 0xba16ad5208b9e485 +164, 0xd7cfa3aee189f65a +165, 0x25041948bf580535 +166, 0xed583fed648f749b +167, 0x79452518052123dc +168, 0x6d9160ca5a74010b +169, 0x6722e33bc7c07ca1 +170, 0x4d178e3dd4e975b3 +171, 0x931cf6b9f6cc89c6 +172, 0xc21a8981b7b39f77 +173, 0x185fd8153b98913b +174, 0xd464be42dfd905a6 +175, 0xf85c0d2a55d2d3a3 +176, 0x2a9b402da669cc55 +177, 0x34512bcf148221ca +178, 0xb0fa93758a10a951 +179, 0x418925fce64b214f +180, 0x16bf34bad8105376 +181, 0xa2fce02922ad9b8d +182, 0x67672b3097410329 +183, 0xa6ac76176c65d593 +184, 0xd7e135ee8b95209b +185, 0x3b356f03f704ac4b +186, 0x3d771fc3027109e5 +187, 0x6306e6ea372706c9 +188, 0x80681142eef045e0 +189, 0x7f9445e603494420 +190, 0x73c1061b16c5341d +191, 0x83c88a42fac5bcdf +192, 0x956345240ea4a1d5 +193, 0x4ac13892e6df978 +194, 0xbfcb6a6c6587db7d +195, 0x478d2c54f08efe04 +196, 0xa6a82a0d322f33ba +197, 0x5fd170e3f6fdef27 +198, 0xdbba17c33c36658d +199, 0x178f9129e4cafecd +200, 0x5a03c9286bbc0e8c +201, 0xbaea74c28384b30c +202, 0x9299bab4ccd9163f +203, 0x503b8d4016e5feae +204, 0x1a8b8d4f8da19920 +205, 0x832ebf7d5d8caca7 +206, 0x11dbadec29d673ab +207, 0xaaa0f0de142dc341 +208, 0xccf9737db7149212 +209, 0x1e47ec1e38c24b2a +210, 0x7924badc7780ab15 +211, 0x1d7df98e033f78d1 +212, 0x6052bdad8835b62 +213, 0xbb7f76ed5278fca5 +214, 0x747133c34326fb2c +215, 0xbade195da8931003 +216, 0xdfe626cd0c10ef6c +217, 0xe61f267313790f88 +218, 0x5ae0e6deacf673e2 +219, 0xcfc8c5b7dc4eaea8 +220, 0xbc199ab00040f7d5 +221, 0x87cab3500838d331 +222, 0x9e4c34003c406fd6 +223, 0xbe53dad5eeb8ae3d +224, 0x726d700e3e54c2e8 +225, 0x416d7b282fe30566 +226, 0xa9d54073cf94d480 +227, 0x7e7a699e67276dee +228, 0xcecdd598d64f5d3e +229, 0x85b4de38c822df40 +230, 0x38adae0544aecbe2 +231, 0xb718868cafebd41b +232, 0x7f03f2acd9531779 +233, 0x5af03686aae2add6 +234, 0x91c20ce6f28a640a +235, 0x8123f910f1011be9 +236, 0x772726a72187deaf +237, 0x593ab7d1d90cd883 +238, 0xe7b13f042f4bab73 +239, 0x7b1fb81d61aec9ad +240, 0x3ac85a6f29607952 +241, 0x4c349e5fde3e7428 +242, 0x52a5692ee44c6efd +243, 0x6258f9b47356b7a0 +244, 0x28450c3edd17bfab +245, 0x609ef87310e333d2 +246, 0xa72b4f4e66f253e4 +247, 0x79924589577b6a69 +248, 0x131d91d976d05c1e +249, 0x9c4c60781c346eca +250, 0x8e0f1d38cc03e359 +251, 0xe950df64a8ebb144 +252, 0x6a583e81de9fe9cb +253, 0x6e2e0d268977676d +254, 0x94812bd0e4498012 +255, 0x80e7b08b622d2a36 +256, 0xabafb0e0ab3c177e +257, 0x1820088a237a6381 +258, 0xe8761d433badfbf1 +259, 0x9ee3e9b9d7c3cf5d +260, 0x80ffe37917ffda6c +261, 0xb41effc862a2e827 +262, 0xa819905c5cc0f33 +263, 0x1296ebd1601f6df5 +264, 0x86f43647c67f4876 +265, 0x9a773484e8c4e3a2 +266, 0x84a93e332ddb50a4 +267, 0xcacafb0aef68ec9c +268, 0xb6b86885e6dbb6a5 +269, 0x78282f5f05cb6f11 +270, 0x6ee49d3221f958a1 +271, 0x85f1711969c25413 +272, 0xba87a6aec2b33cf +273, 0x1f5e8f0d78d41605 +274, 0xe9c534eca9c5b118 +275, 0x748ede2e662e6cf7 +276, 0xe5ad9536ee3b4e13 +277, 0x72cf80dd4293e95b +278, 0x1d5df05c67e061a4 +279, 0xfea4823d027586f4 +280, 0x34c937072585e8a3 +281, 0xecf11340eb630360 +282, 0x9ac15cc464b379a8 +283, 0x40dfa68bede0da8 +284, 0x3d5735b0f9eb6afc +285, 0x783e2ab7ebb79f36 +286, 0xc725a81703715466 +287, 0x798f80817ae9d756 +288, 0xf6a0d1d29a767be6 +289, 0xbb265a1b4f37f66c +290, 0x35ae294fc60befd1 +291, 0xb78de56dda8fa907 +292, 0xd3eae38266b64df6 +293, 0x17a7f79e5ece2798 +294, 0x64741019cbc892ee +295, 0x1f7bf2473ec09869 +296, 0x5209d2b0f474f6ee +297, 0xe3e468aa5d61a7e +298, 0xcc76cdddb85f864e +299, 0x1ed7444dd2a99feb +300, 0x70183c3509436211 +301, 0xaf77579fe02b7858 +302, 0xdab6f76b5130f9af +303, 0x52400d28eabfdec +304, 0xa8d6fbd115f66445 +305, 0xcec5d5823034e894 +306, 0x56649eb2ede6c220 +307, 0x4fa8771336ebc631 +308, 0xb28ed8e7250bbb22 +309, 0x5f799a7c1fe9a791 +310, 0x679378faa7598049 +311, 0xd67c6757f2165e7 +312, 0x45ff5d1891b27427 +313, 0xd73843c2f955813b +314, 0x751e1cf03a9af90c +315, 0xd86091d6e81828fb +316, 0x71b35bcd60a3d0a0 +317, 0x635ecd296688df2f +318, 0x4897fa9481576a73 +319, 0xa021f8e7a38a4c8e +320, 0xe44beb742ece4604 +321, 0xfd8e1f94e79262bd +322, 0x4c3a71ff125543fd +323, 0xa8bfaece601d6bae +324, 0xe86985145e6e0b63 +325, 0x1a0176fafaf16ead +326, 0x2557184cf0b5754d +327, 0x88f8cada9f65355e +328, 0x47fc48e4e09e8695 +329, 0x8eaf8b38b069ea41 +330, 0x78298279e0f78294 +331, 0xfdb5cca7973f27a2 +332, 0x82849550a88eba72 +333, 0x49b8aab6eb0ead7f +334, 0xcc8685ba171c5aa +335, 0xc4b3cbe0ca9852f7 +336, 0x773b0c76f96e6aae +337, 0xda9a5bb6e55a7b91 +338, 0x9e37f238edefcb58 +339, 0x21614595c1898bb8 +340, 0xcb23a98f79b7c4db +341, 0x7b11d898b7c64def +342, 0x2fd8f63492c238d5 +343, 0x13734f1849c10925 +344, 0xf451b38a3bb2475 +345, 0x33af5ba87b95bc6a +346, 0xa1ad2ae3bb425fca +347, 0x2b21b11dfb8f180d +348, 0x52c13d4b4431f297 +349, 0xbaf97620e8dd4ae8 +350, 0x601cceb00f172e64 +351, 0xc07099a7855cca6a +352, 0xb950463034293900 +353, 0xb9a213d9b3526375 +354, 0xbd63d553d85f3d44 +355, 0xe231f51a09c4e4f7 +356, 0xe371e12878c7f4c9 +357, 0x1ad952fe9bf3cd7 +358, 0xb080f3edb5f7baf0 +359, 0xb8d063e931554c1e +360, 0xaa65b3cfca3cda8d +361, 0xbe0afff235370f3f +362, 0xdfcb5bffefaa9d00 +363, 0x80e3b98ddc7a592f +364, 0x288f2bc866c137e5 +365, 0xb865a871d7bc366d +366, 0x18a15b5f60d73a80 +367, 0x8802aca2b9f78cbc +368, 0x5239da72c72c7eee +369, 0xcdc4b06e68b17611 +370, 0x54dde44940038741 +371, 0xb2524b61cf982deb +372, 0x3ca47d443070ff14 +373, 0xf430b084737c579d +374, 0xd02c86115fb9e540 +375, 0x51fb2fdfda214a84 +376, 0xb11a84262cd009d1 +377, 0x3eedb0aba9385fc6 +378, 0x224cd419a0a4cee +379, 0xe7c9dde085898eee +380, 0x82841c7a54d1a1eb +381, 0x13057f2b4c39f898 +382, 0x6e1f297b569fcfab +383, 0xef4c313630cf9c6c +384, 0xbf4a2590e0ddacfa +385, 0x6be951177da2faab +386, 0xcd7f543609bb825d +387, 0x4c5a0ef25bb56c7e +388, 0x8234c76253f4d663 +389, 0xa9b2029386a5f4ae +390, 0xa6ad2970e6ee4ea5 +391, 0x8d05127bd2196969 +392, 0x663568bc7533e7ba +393, 0x6558e84a571b2b29 +394, 0x2de13b8e7ce08f10 +395, 0x1c513e49618abf11 +396, 0x615135738b32d971 +397, 0xe35c818f7e8e989 +398, 0x9ae1e8e1e6f9fcbf +399, 0xa1e317e8d18476bc +400, 0x3858a32cba194320 +401, 0xfa2aa571789002b9 +402, 0x3a831a17a35ac20f +403, 0xf599f6b78a705317 +404, 0x47714c483188abea +405, 0x2c82fb1fccb7044d +406, 0x77c033ebbc4d81aa +407, 0xcbfd3bab5bc6c620 +408, 0xc98924b91fd6bcb5 +409, 0xb870876cf9add514 +410, 0x8b03c994d56e16a0 +411, 0xd40b9c99565e24d9 +412, 0x6d2622a7644947cb +413, 0xad81f698609d986c +414, 0x9ac47bfd37198a65 +415, 0xbc941835f6f82cbd +416, 0x12b67e728be829b5 +417, 0xdea81354aaeb9556 +418, 0xd9e16c32e16024c2 +419, 0x36aa4d7a00321b15 +420, 0xcbdc5b6c1f899e90 +421, 0x7f3273aca75fc73a +422, 0x7f15ed8211314f48 +423, 0x4958530585392f5b +424, 0xd66063d25d38a3c6 +425, 0xd3abab68470e6682 +426, 0x990f13f809d9c8f0 +427, 0xaaece163d79db9f0 +428, 0x2350a0601205d565 +429, 0xfcc56aaba751cf02 +430, 0xf2569d3fb2e8185f +431, 0xfef9da09def09c03 +432, 0xf2a0967a1aaef14f +433, 0xa3bac91687b51d2b +434, 0xbedc12055c4193a4 +435, 0x2597f1e919fa55b9 +436, 0xbbf403bd20ffb47f +437, 0x81e71ae550c96896 +438, 0xa4bd7ba5cbfc7b32 +439, 0x5495ba0e97eb29ba +440, 0xf687dee3ba8e282b +441, 0x1e6502dd39351214 +442, 0xd0324e9a0552df1a +443, 0x5ed642d3da81c174 +444, 0x948c17022487b57 +445, 0x828887e581faf00c +446, 0x5ecca5ce6abf55be +447, 0x71ff45b9c0c170b7 +448, 0x66797ca204df2241 +449, 0x1a7b4511d084228e +450, 0x8f571f166dc17928 +451, 0x1cd4f0ce0b16a7dd +452, 0x8cf96313c5d9bf78 +453, 0xb911efbd0e10b17d +454, 0x2f723add657cc87f +455, 0xbcd9bca4eb35eefc +456, 0x605b2ad7bce8a438 +457, 0x2f6e4d25e70d5d6c +458, 0xd8a4ce4c836df56 +459, 0x860cca3ef3ebc768 +460, 0x98b00c27ae088ea8 +461, 0x6fd3f092d6a75fec +462, 0x290a77954f575e2b +463, 0x1a1439c10637f025 +464, 0xfd78b1cab16e5325 +465, 0xba675219ec751106 +466, 0xbdd83dedd76d9b9d +467, 0xba456d2de21d2410 +468, 0x8076084e5f2c3ff9 +469, 0x30bb67c16684d1f6 +470, 0xaf5dbab257d3f198 +471, 0xcc53c583d0f32ce3 +472, 0x911f4fd5e65e4627 +473, 0xdea675c2dda3b9af +474, 0x144aac8ef86cb66c +475, 0xebf79414913cfba4 +476, 0x41ba23e459aeec9e +477, 0x20f88405dd6fb197 +478, 0x6003380505eb5ac +479, 0x4c9f3dcd8e760813 +480, 0x92617c559ed85ba2 +481, 0xd3431a9c8c312417 +482, 0xd79239928087327d +483, 0x642133aa2e43d1e4 +484, 0xc9178213ecbf6239 +485, 0x7ba68fe96a169e09 +486, 0x1b7b30a0c482862e +487, 0x30bb3f3c67e7e94c +488, 0xf9fa1910a2b2a9c +489, 0x11f1e8eac756f932 +490, 0xa7917b66d1e323cd +491, 0x74ceeee3348c6339 +492, 0x380b97925a064f23 +493, 0x35ea8e11697e21b6 +494, 0x57189dfb1366cec9 +495, 0x823a614e3b7f066a +496, 0xdefa0a8a4ce11d0 +497, 0xb60598aca247e18e +498, 0xd8015a3ec1b34454 +499, 0x914414bd94867ed0 +500, 0x6b725b0f3d4366a8 +501, 0x68708ed13916db +502, 0x2e576c9180b73669 +503, 0x519c55289d73f2b6 +504, 0xa3fc87c915254ccf +505, 0xdfc904478c0eff1a +506, 0xb42c839de40609a2 +507, 0x52f9a4a8a2889ce8 +508, 0x980e2b8b75dbab4c +509, 0x3410373f0d3dec0d +510, 0x790eaa4ae24c03db +511, 0x60e005bace438e02 +512, 0xae3b96950a214a8e +513, 0x2f98ba9a71b62b91 +514, 0x272188ee3a25536b +515, 0xea9fa1c4076ab83e +516, 0xd10832e954e16ed4 +517, 0x1531e067143e27cc +518, 0xd6492e0c11bc4fa9 +519, 0x81ac803d0ee85207 +520, 0xdc12f931696bafd0 +521, 0x84f9fb3bce07de3a +522, 0x3cbe2ec1d645d764 +523, 0xd9353da1260ae4d0 +524, 0x4448e8667f57bb9c +525, 0x83b1a0730e656680 +526, 0x51940b38852cd4db +527, 0x85b1f837dae60ceb +528, 0xf51af20e1db8000d +529, 0xe1bf6162659e2843 +530, 0x97fc8afb86ae12a0 +531, 0xeaa47b7656ef7b38 +532, 0x73d53039606faa37 +533, 0x1596f243ebd929ac +534, 0xf2cd77602a5de99e +535, 0x770b15555362a49c +536, 0x60a8c5ec06028f6e +537, 0x82eea4f160f47993 +538, 0x9e3bee932e891096 +539, 0xc63e87b1b9d4df8e +540, 0x18f2fa68ab19a96e +541, 0xe7f6d409516a9043 +542, 0x48a83ac8f24577a7 +543, 0xc4334101b9fe6074 +544, 0xc74347174ec525f7 +545, 0xf189339771d7a506 +546, 0x15410ee57d3abf50 +547, 0x801e07314f98875e +548, 0x174acc2e04a63a43 +549, 0x1daf9ccebdef4799 +550, 0xadc08c7e5efd51d9 +551, 0x99788439b4b7734d +552, 0x35ff24158bb0dd55 +553, 0xb9f2336dfabb91f3 +554, 0xf0db04335a0d6798 +555, 0x972e65e72719f84 +556, 0x15ae2f882fc4e27 +557, 0x1d464abeb566adbf +558, 0x496371aabcb6d32b +559, 0x4c3e54445310755a +560, 0xa8c1e555af2fbd56 +561, 0x21ed58f1d03dc0ad +562, 0x4f197a0639f0d378 +563, 0x22039686e766b4b1 +564, 0xcc625a34ae9d28b8 +565, 0xef24e457526496b8 +566, 0x855cbd71ee73cb16 +567, 0x256b3e4990f5958 +568, 0x2855b69bc6695a5d +569, 0xbd8eac87e14c2c7c +570, 0x8a178c5fb1d1e0cd +571, 0xd89faca4b42a6959 +572, 0x81e4364c42c3fe0c +573, 0x18d64eb4fb183fb2 +574, 0x9a968386fe11db0f +575, 0x12bc2509997d1399 +576, 0x9545fcca19fa0631 +577, 0xda058856f3724cd6 +578, 0x96c09466c7e00d15 +579, 0xc3da20d19310de5e +580, 0xdc65b36c9850d240 +581, 0x6c0936df60cd2275 +582, 0xce05514d210d667b +583, 0xe6afa1599eef842a +584, 0x73434c3c267ff08 +585, 0xe7c0118e1307918c +586, 0x547dc51fef2074ab +587, 0xbfadf92b2dcc089f +588, 0x811411c5ac9b39b1 +589, 0xf4a2ab2f82e41f23 +590, 0xf83d4a7b84963d3e +591, 0x8f472c6dc3ad96c8 +592, 0x65c718a9009e1523 +593, 0xf5c2c606217cda22 +594, 0xa140bab170226fdb +595, 0xe5349accebb3db74 +596, 0x19785a6781b52fa1 +597, 0x5121dc9a4fe3f9b3 +598, 0xdba0b578bf5de960 +599, 0x84eb2914aa48db40 +600, 0x36ac8826e5563154 +601, 0xdbc37171cd1dc228 +602, 0x3a5a337a3d287c44 +603, 0x3255c3be2e8dbd1e +604, 0x61f49ff73482d3fa +605, 0x45d8464ae20cf9fe +606, 0x35045bc4354089f5 +607, 0xe8719ca2db277422 +608, 0x4cb53e9929644499 +609, 0xb9ac072814e8ada6 +610, 0xaac0830c8f9d143c +611, 0x23b47e876ea69041 +612, 0x21e77e1c2a789307 +613, 0xd39f57ee15871c03 +614, 0xa62d5e91440d4fce +615, 0x4e4d041bb53f7a5 +616, 0x8fc56a11135bdadd +617, 0x9d3bb3819ec3c604 +618, 0xbf965f4b3188f13a +619, 0x8c2bc9e16baa8e30 +620, 0xcda49ed2d95194cb +621, 0x532ee912e2f66993 +622, 0x2241b05de7bcaa2d +623, 0x9e3cfc9c40ff6825 +624, 0xba2e51de0c55e843 +625, 0xc54b630abe46d9e +626, 0x9b6f1bfa577d4fcf +627, 0xc1712782de475527 +628, 0xcf1b5e27aecb413a +629, 0x3562b84790ba5788 +630, 0x4eecaecbf38aec68 +631, 0xa9d1015405733a0b +632, 0x850d94effeaac63f +633, 0x5dff806a4ecac3ad +634, 0x41fdf5796189eb71 +635, 0x531ae957275f96a3 +636, 0xfff81fc3058ba400 +637, 0x371a35d8311b6ed6 +638, 0x679a0d39e2e35479 +639, 0xa4b14760f62afecb +640, 0x81afa5fc93b7c806 +641, 0xc10fa9c715d47491 +642, 0x5b72e5eb266f45ed +643, 0xa54c24b8b453e903 +644, 0xab6f77b91e577f3e +645, 0xf10e5c685cb84758 +646, 0x6edc2b4e750c68dd +647, 0xdcea1e92c32d1c64 +648, 0x3054365b05be6685 +649, 0x7ffc7158b534b355 +650, 0x957aaec42fdca172 +651, 0xbeb001ff90084a9d +652, 0xf3ea56ad8a0962bd +653, 0xe01980fefd133806 +654, 0xf7eef9a01de681d1 +655, 0x577da1696a908e81 +656, 0xfa66b44b7ecff5e2 +657, 0xb782da3802b36c2a +658, 0xc9e21cf41d56af54 +659, 0x597b214318472358 +660, 0x96d1944a64ac0cbb +661, 0x202bfe2ff94851af +662, 0x6ed2d3ed1a3ed8e0 +663, 0x922a607f34356c0a +664, 0xd301bd3dd34aa8c3 +665, 0x84cb091a087ffa4e +666, 0x6af3151c739c3dee +667, 0x5ca8742f837d1468 +668, 0x92a312b759767654 +669, 0x8144446095d8468c +670, 0x3d05aac99b33c006 +671, 0xd087428a89929a36 +672, 0x8d735ce4ee366739 +673, 0xe1a1ebb7fdf08f4d +674, 0x680ebdc9c42c8cb0 +675, 0xcb387319f8f64d5f +676, 0xce9bd74c07659399 +677, 0x945628d6edc02bde +678, 0x8a514c10db7bd277 +679, 0xbaea31fee5d6fff5 +680, 0xb4b90c10ede91eaa +681, 0xb6d95773d1d7092c +682, 0xfebbb03b31035f9 +683, 0x130e4f22b88592fd +684, 0x451a33076fcded7d +685, 0x904fc3347db099d0 +686, 0x55b6e076660fd8b0 +687, 0xd7f441ea5f21b959 +688, 0x8fb5b1d1573451af +689, 0xbaa8cfd49640368f +690, 0xa038ce8dbe6b091e +691, 0xc6b1cfe177275c4d +692, 0x62f59ba0903ea784 +693, 0x165ccf0cadfd8bf1 +694, 0xcc963bcbf632cdf6 +695, 0x848b99b5a77ff7d4 +696, 0x8ab2202ed605b1c5 +697, 0x2867a57701caef53 +698, 0xf68323fe9e44c28b +699, 0x2b93bc94090bca36 +700, 0x73d8a3428f929cd4 +701, 0xbaa7904a71573cc1 +702, 0xad9b12b2cb8fdb50 +703, 0xfc20a43136f756a6 +704, 0xb262e3eb519830c8 +705, 0xcb1d03e6cd7e57b5 +706, 0x5923a252c9fb91e4 +707, 0x4391d7174574b6d +708, 0x174d9fab8b9a8dbc +709, 0x89a10a2125b8f9ca +710, 0x9e4138a8da47056d +711, 0x9a2b5519be0c7607 +712, 0xdd3eb0a7ec5e9cb5 +713, 0xa3269e6f385fd296 +714, 0xbdcd70c67386cc0c +715, 0x182cdbde8a993a67 +716, 0x2a33851909c7f17f +717, 0x43c8015f91b219ff +718, 0x3ac4f3ae701d90ee +719, 0x3d9389ece1034108 +720, 0x406d92cac66f7e23 +721, 0x502732821fd2a73b +722, 0x7a8c94bf78712ee2 +723, 0x3c1d3726c81ef333 +724, 0x7f5561641f966ad9 +725, 0xf7abb062ae556fd0 +726, 0x652bddef52afbf19 +727, 0x33becbc9160b0ee5 +728, 0xd6e4ed313157c930 +729, 0x4f264a7ab3644344 +730, 0x3ad98abb9ba3e2e8 +731, 0x3c876c5260eeeda9 +732, 0xf50517f99ff419f0 +733, 0x40b92dc403143ff0 +734, 0xc8ec5b399a564cd5 +735, 0x8cd993992309a8b9 +736, 0xd84e0a013691152 +737, 0xa4e06a799ea9aeb8 +738, 0x99430ce500f7c7e9 +739, 0xdff4197585d66353 +740, 0xc135e6495535d7f4 +741, 0xde7ee4fa9125b6d4 +742, 0x9783ac9f17c79e7 +743, 0x25842f8a6e0ed281 +744, 0xf4b5809fa08f9b5b +745, 0x28ae830cdfaed364 +746, 0x2fff27a3e8f89dd6 +747, 0x4a4e2770a8baa3f9 +748, 0x80a4a10c53f15187 +749, 0x56b581280aae497e +750, 0x87edcc2ad8125578 +751, 0x3dd69d21803712d9 +752, 0x28a8e196e8b3ce49 +753, 0x142bf1a4fb7128fb +754, 0x56c997b13dcdaee8 +755, 0xfdc8c3514d10916c +756, 0xaefb17a085650d78 +757, 0xac5bed30516c36c +758, 0x21503e5de4fd4b2c +759, 0x9c456f07c730f4bb +760, 0x7db5278fa8d24ec8 +761, 0x99899592e7646730 +762, 0x6b4fe70ee07dd015 +763, 0xaff04fac7138a0c6 +764, 0xd6f5b2e4e6a08642 +765, 0x202f58953f6881b9 +766, 0x1b927c4b6bdd2f3f +767, 0xa3c7bc452bac7b1f +768, 0xb0e639c9c3f2191c +769, 0x36c1442fd1ce49eb +770, 0x85735e5ff909335c +771, 0x35582c94bc3afbd4 +772, 0xff1298f35b1e1d84 +773, 0x2ec7fecb16de8fc0 +774, 0x470f8c39a318b412 +775, 0xf015b1d6cc06669a +776, 0xa8ef517a37366c76 +777, 0x537cf878e3a34921 +778, 0xca543e78a397642c +779, 0x6e27c08e8e788a54 +780, 0x63b7074e0be9ca82 +781, 0xba2323e67ec14650 +782, 0xa974f6890fda5453 +783, 0x94959cc2a8758ff9 +784, 0xa9c3251883ac5eff +785, 0xe16467aeadd73ba1 +786, 0xf59afba7fddaf66f +787, 0x1dc0b8e966ea63fe +788, 0x1310644177ab63a3 +789, 0x20bc68f0db803cbf +790, 0x75453bbc00b89a22 +791, 0xb8e14d5a22b929aa +792, 0x904ad9ba9bb22c37 +793, 0xbd465f1b590ec04 +794, 0xdf535055220bdcc2 +795, 0xd63d572d60b691f5 +796, 0x80228dbba708fb3a +797, 0xddeef955c8dcad41 +798, 0x5733a3647fc7f02a +799, 0xfbc1372d575d9054 +800, 0xa0c03c513ba52161 +801, 0xe1d814d4b8f5e401 +802, 0xb44352fdce9189ee +803, 0x8203f012b2d79702 +804, 0x99bfaf3f3ecce243 +805, 0x3a50573c334599f8 +806, 0xf662c297ae258a63 +807, 0x695ee62df9a47fc0 +808, 0x7badc43557425edc +809, 0x1e287c2ed21274f0 +810, 0x174c149d3adf0f39 +811, 0x1ece41a0df99359c +812, 0x78a9124c6107dd72 +813, 0x770131c7b4d6cbd +814, 0x50f6cc842a185a9e +815, 0x89069437168a747e +816, 0x29397e51e10a1ed7 +817, 0x43a97380a2232ea6 +818, 0x7756b64d0cd8713f +819, 0xdd69210e4e5d7aaf +820, 0xcfca572d6500e606 +821, 0xab6aaaaa941311b5 +822, 0xdbb9efe97173ad07 +823, 0xd03a21e04d933a72 +824, 0xe664a4c4e6d85fa1 +825, 0xce9b68a0aee67f99 +826, 0x1ada16a2971d50f6 +827, 0xe1baa6aca540ec +828, 0x2cc9c2af7245f612 +829, 0x7528c5d3bd65883c +830, 0x2d87afd9390a1b0d +831, 0xc502324fb19656b3 +832, 0x645de8a831993aa9 +833, 0xc0890a8ff1b8371d +834, 0xdca0bc0cbc786d9c +835, 0xe15c3ab6faca954f +836, 0xaa3fc9c036a196b +837, 0xc0a2898075896aab +838, 0xee4e41e0a0e653d2 +839, 0xf00bf0076221fe9d +840, 0x8d3c5318b745b4db +841, 0x3d90b11f81c789b1 +842, 0xacaae44470e2659a +843, 0xa79e8a4fe47ed998 +844, 0x61e38a76e55101a3 +845, 0xa9e45f8fb627aae0 +846, 0x62b5f9ba92eaae89 +847, 0xa59cfcaab7a5a600 +848, 0x99782caee71defa6 +849, 0x87d329e428948557 +850, 0xa39b2a5025b0a4a9 +851, 0x42009ab44d03fcd2 +852, 0x5b6354c66c16e679 +853, 0xf3317e234ba27da8 +854, 0xdacc63d6324e7eb5 +855, 0x91223baf3c4febba +856, 0xefe32389183998cf +857, 0x76d317d4652fd225 +858, 0x88b13ef2c67f48bd +859, 0x394c5f29529e7277 +860, 0x59d192428bcfbef4 +861, 0xff73b1eece1615f9 +862, 0x9e4daa94fd0d31b4 +863, 0xdf41e1640dd6abfa +864, 0x1e7ee53a6dd2e3b2 +865, 0xfe8c487c824274a3 +866, 0x9ee607d559438c +867, 0x14aaa5e6cd9d9eb1 +868, 0x1982441ad612f962 +869, 0x41aed1b40f1323ab +870, 0xf68716bd2f4926a6 +871, 0xd139713d2376a727 +872, 0xa794ec70301d030c +873, 0x67883713976a30d5 +874, 0xbac1f8263d5f1cd3 +875, 0xbb2acf6d6920715c +876, 0x7f75d0a8e43bc361 +877, 0x424cf6def7744f48 +878, 0x3b0509c8aa0f8242 +879, 0x492cc7e7afdeb478 +880, 0xe873c0625d60eb85 +881, 0x8eb3b3813976e144 +882, 0x87c01394ee3db1c4 +883, 0xe2aa6ae1b5eea0e9 +884, 0x33d66a84dbcaa798 +885, 0xfa90f0c513a2f63e +886, 0xd43aff97b271e415 +887, 0xe4d897dffaa7d462 +888, 0x3a99b063f46c581e +889, 0x684dd33b606d6469 +890, 0x8bcfe5d5b6e45224 +891, 0x2fe5eb7b837c8a7a +892, 0xb9f34d18b4ac59ef +893, 0xb5b838dab15bac88 +894, 0x543c1a8894365b9a +895, 0xf1bb307a7555aee6 +896, 0xcd7ec9c65ff69f26 +897, 0x49c79120c56f54b0 +898, 0xdfef1cc42ac7873 +899, 0x70bc055157ae3047 +900, 0xdc1e874337478d8b +901, 0x4f2965dad49441cb +902, 0xa4c6da90003791b4 +903, 0x731d617bc1f2053b +904, 0x3ed9841c59028e57 +905, 0xd4b85ee4bb21d05a +906, 0xc9f775a3c3dccee5 +907, 0xfd380e63d95fba86 +908, 0x333e1ebeac5a75c6 +909, 0xb2743de96e477e58 +910, 0x8ebb219c4f23a5eb +911, 0x9b3bde83c531686 +912, 0xdb6487ed27bbdb8f +913, 0xf354a034005405a6 +914, 0xbdd1f8a4af713436 +915, 0x36105fda05cc70c5 +916, 0x203f26cef6a703c0 +917, 0x21f11021343f19b +918, 0xbaaaee9f01668c8a +919, 0x4a1a1170b60d8899 +920, 0x5c98b11f5c5566a4 +921, 0xa602835de8e339e6 +922, 0x92b53e95f975c7c +923, 0xbff6bfad003a575d +924, 0x4ba144e2ed76959 +925, 0x4c8f2a11b3593b0 +926, 0xc8917682dfb61c3c +927, 0x480d8195a09a2331 +928, 0xe6c7321b1c7fc047 +929, 0xad39486a4b606729 +930, 0xe5c8070cc0d6f3c7 +931, 0xd212af9d55f41dce +932, 0xea45ab4e786090d1 +933, 0x845fb4b872bbbb55 +934, 0x2b4765df4d1ce9b6 +935, 0x6eeab1634ec95c7 +936, 0x3d76d6f927b1f6dc +937, 0xe375b9f379c0d8a4 +938, 0x81c1f15ecb739580 +939, 0x4e5eebd3db12404f +940, 0xe8d9ab5c64b22b97 +941, 0x1429ff9cee6076db +942, 0x51914505e83152d7 +943, 0x6060d5ced09c2efa +944, 0xd7b4dfbdfee16881 +945, 0x9c76bf7f5af2db52 +946, 0x9f128feddb68ebbc +947, 0xffdb7c74ca65a51 +948, 0x9ab7deecd99f9ab9 +949, 0xa30ebbd3ff3fb15b +950, 0x19dd91fd8c8f0cfd +951, 0x38a5cf349e9b0535 +952, 0x1040a7160a548973 +953, 0xdeeedfb27bc8c947 +954, 0x1d04888655ff856a +955, 0x22ea856a0b96d3e6 +956, 0x337bc6e8dced7fa1 +957, 0xc83c38397e70d6e2 +958, 0x10ec40be7a4374ba +959, 0xaca17e6d57d1cbfd +960, 0xbb27ad43f3a999f4 +961, 0xe5d8a7cb058770d9 +962, 0x3179a136bf402673 +963, 0xf808e2b696911f83 +964, 0xce050624c777e952 +965, 0xb37c61743cf0c2b +966, 0x788c21c1b9374698 +967, 0xad1aa9f2284e4c07 +968, 0x932ceb80b9f3c6f2 +969, 0x9b550e42dd0f0a36 +970, 0xbedb88d572f2d1b6 +971, 0x1023aef0f9af9d9 +972, 0xd0b5512f1149627 +973, 0x3c2cfd8ce1d64077 +974, 0x1cade7919bd25eb9 +975, 0xcad43955829c7075 +976, 0xb230b33358882b38 +977, 0x809279a4e22e334a +978, 0x2b0c037fc4b71354 +979, 0x9c6dc225e0b3e134 +980, 0xee0db779b062cd45 +981, 0xe32732ea811fcce1 +982, 0x9339135259af297d +983, 0x48abd2279f700938 +984, 0xa92c5c365eb2e527 +985, 0x9a2b192f70255820 +986, 0xd205dbeac614a28d +987, 0x18cf9f2141aa5258 +988, 0x47cc5f51b2594428 +989, 0x6d46ebb22a08398a +990, 0x53fd5b10500495cb +991, 0xe43cea32df6f241c +992, 0xb4436523094d41ab +993, 0x30ca1e29fa6c69b4 +994, 0xc2c3bee5e3588e6d +995, 0x6a87541cfe41a396 +996, 0x4ceea80d4da19084 +997, 0xc50eba2ea5b8db3d +998, 0x821a920ce176e499 +999, 0x7393a0892af4de04 diff --git a/test/data/lxm-testset-2.csv b/test/data/lxm-testset-2.csv new file mode 100644 index 0000000..d2f6d46 --- /dev/null +++ b/test/data/lxm-testset-2.csv @@ -0,0 +1,1001 @@ +seed, 0x0 +0, 0x1ce1711e987d2259 +1, 0xdf4bd3316bec6165 +2, 0x3d9dc28622b5adcd +3, 0x6a275b8aa1c76295 +4, 0xe09eba1df800977d +5, 0x203866cd8117c36d +6, 0xcac1eb5dca8f09cb +7, 0x6180c21cf7a5a3e6 +8, 0x2b104c31ecd5f65e +9, 0xa95b4c39d9829650 +10, 0xee9b4930268e3a25 +11, 0x702b52f40f9a23f3 +12, 0x2ee842740ec9e3f8 +13, 0x75f29901c1df6604 +14, 0xec89686e116d1d31 +15, 0xc3196d33371dab6d +16, 0x60401251fa6decba +17, 0xd4e9563049ac3b52 +18, 0xe5bb2b04dcc8df53 +19, 0x46012c64c1cf12c8 +20, 0x3edf7a7c7ac728cf +21, 0xc9381609d21492ae +22, 0x69c474e52c4fe1b6 +23, 0x9ffcf5dc826c9ed6 +24, 0xe4559f8409f01bbb +25, 0x1d06bbb9cc070e9e +26, 0x38f3916dbdfa4200 +27, 0x224d79ba03f74e5f +28, 0x452e4250dc67e8b +29, 0x6d52e11b91a05872 +30, 0x82eb2adf47702d20 +31, 0x83b70fb6210f58df +32, 0x34cc18febe292965 +33, 0x1530a0503836e62c +34, 0x88766f4f9830b1d2 +35, 0x699cfe4b4810e13e +36, 0xaca8c9289dfa2feb +37, 0x519ec39e1f0b7a78 +38, 0x59e5a639db61ee4b +39, 0x44e7d25c1ea90d4f +40, 0x2cfa808ee86c72eb +41, 0x4285acd44b392fad +42, 0x709e751523055041 +43, 0xbcad83e8b579792 +44, 0x8938cf69b208fe35 +45, 0xd519ef1e765ce8d8 +46, 0xac11d026eee8685b +47, 0xcc6f21e1f2f083b +48, 0x632d8e04e6ab8a9f +49, 0xc5919c604b4d5ab5 +50, 0x21dbf3911bebedfc +51, 0xd048fee77a5e5aa9 +52, 0x303139106ed18ec8 +53, 0x5a00158e62d024e4 +54, 0xe8207461a1a1051f +55, 0x4855e05fd61f3961 +56, 0x4f63ae7a4156f92e +57, 0xa8b0e2a192b487f3 +58, 0x1edb6d18a7ab7556 +59, 0xd82d514a1a4ac70e +60, 0x80cd09cb1a62dce5 +61, 0xab4df72cd5df6857 +62, 0xe39cd3dbfff9a7a9 +63, 0x7a165d1c189bb3b2 +64, 0xc7e88a18ba48cef7 +65, 0x23ddce4af2bfb0d2 +66, 0x7137a3cadf322ffc +67, 0x6a000c093eb3b6af +68, 0xffdd90b93298c8cb +69, 0x82efba080e61a119 +70, 0x85cca4e653ed10f1 +71, 0x63b97abb3b0fb66e +72, 0x2f93be0058517948 +73, 0xf3e33b2c9f317893 +74, 0x8d473d889291ba5d +75, 0x444ebd93296dcb0c +76, 0xefbf4af3fc53bb05 +77, 0xb66b3ab203005069 +78, 0xaa04442417548171 +79, 0x20df3d1bb826bc58 +80, 0x4bd2094b9fda7580 +81, 0xb7d0363a221c8a25 +82, 0xc38d363f720bb088 +83, 0x9a703a88e3add8d7 +84, 0xc38ec95786ff29f2 +85, 0x149e4460ea59f0ae +86, 0x877fd4ee76c3c8b3 +87, 0x218660af0e6a7172 +88, 0xc35b78962f481589 +89, 0x9dbfe47b1b41869 +90, 0x2964559f78fef392 +91, 0xfc6ebb2cbe300f99 +92, 0x96b788d58792273d +93, 0x8e262227f185590a +94, 0xd19e6f2ee27ed4d3 +95, 0x86751b310ae936d1 +96, 0x43c911b483983cfe +97, 0x5afbcca66344b7d6 +98, 0xfc7358ee54837a5e +99, 0x1fb4221441e02cf +100, 0x9ae1239918b3c543 +101, 0x8ceb54e3508713ac +102, 0xee6fd4a17d54b2a2 +103, 0x5a459160a191cc52 +104, 0xeab72a85ad0c6356 +105, 0x858c6d7329fb0f6 +106, 0x9f648ec069aacac5 +107, 0x4c89bf98f15f064c +108, 0x7d78addf891819a +109, 0xea39ac87c7ea730a +110, 0x64f8ecb171e3c9dd +111, 0xe9713c5fa20945b3 +112, 0x88acb8417cd0144 +113, 0x6e90beea7314997c +114, 0x1b80c2b8b6ce0f81 +115, 0xbf955e7de7638ecc +116, 0x8650cf1e0876c40d +117, 0x24bf9075a03070fd +118, 0xf5db75eb25a975d2 +119, 0x9d64d16daebd98cd +120, 0x2ee4b6dd6758b623 +121, 0x5ddbae9539633974 +122, 0xc5478e0d9836bc8a +123, 0xcb8489f3756d0547 +124, 0x850db04e42965d57 +125, 0xf3fa228157611e5a +126, 0x96bc99d0861ba6ee +127, 0x241754eb855c97ac +128, 0x5d10b5b20d798a87 +129, 0x937692838f0f7b10 +130, 0x943fdac49708f258 +131, 0x13a1d7bdc466b3a6 +132, 0x8687f810502b3d3b +133, 0x45f93e67e273c33a +134, 0x768da3e2f1692d01 +135, 0xb75cef73d2fdb2b5 +136, 0x5f388b9e7848fb46 +137, 0xecc39896d2ca4a86 +138, 0x47c143b7af29a618 +139, 0xea669de1f402f11b +140, 0x92cd749ab016fd9 +141, 0x156c6c995aa955b6 +142, 0x612da9c25d95e875 +143, 0x29514e2c744f365e +144, 0x61abd63b12b511e6 +145, 0x217aa372ee3bac75 +146, 0xc3e84714842fb9f4 +147, 0x9f6b8dd51989f153 +148, 0xbaf22e1179dc81c0 +149, 0x784b89bfc894e871 +150, 0x42fade8c7f318a8a +151, 0xbe2dce36d38fd2d4 +152, 0xc74372a14b8a4460 +153, 0x1cd4e0f7e7b51653 +154, 0xc600558dbb17cf94 +155, 0x5119f5f0a5e26085 +156, 0x9b5fe63c322bba72 +157, 0xb328e401190d64f2 +158, 0x5028cb1e3497593f +159, 0x76406083ce787f7c +160, 0x7dc7e8b0e2f4547 +161, 0xedcd0dbdff71647d +162, 0x5c986d5e2c802149 +163, 0x914e337cbfc46a66 +164, 0x8c778e46e45935de +165, 0xcd61c5dd40629f68 +166, 0xf5caf2d38213335a +167, 0xffc59704f2b73385 +168, 0xd0952d51b7c72af2 +169, 0x9e0accc60d042af1 +170, 0xf064747ea0d41a46 +171, 0x5bc78722e2446349 +172, 0xa090bc9084c8037f +173, 0x631766234a645575 +174, 0x16471b910067befb +175, 0x9d6258166e6b6ec2 +176, 0x3ca6dc0c79a11763 +177, 0x16ef1228d0937de9 +178, 0x396b02445df6e0ac +179, 0x9c76e8379b681569 +180, 0xa926942550b7cd38 +181, 0x9ce9755ec1e62bd1 +182, 0x27ed773267d65f17 +183, 0x6377ef8882956881 +184, 0x44dfd6ccfd2db9e2 +185, 0xfd13b250364936a6 +186, 0x8523effb7823d1de +187, 0x1588a2641ed5d33e +188, 0xf9e82883d93ef532 +189, 0x3f15c4dcb4ef1f8b +190, 0xcde08d36e41b22b4 +191, 0x6bf87665445afa08 +192, 0xbe78e469e2b39df6 +193, 0xec4f2d0919dfb3d +194, 0xe85f3ae63d702e2d +195, 0x33c3d95753871f64 +196, 0x7b1f2bf021cc6c71 +197, 0x9a42adb6645d4617 +198, 0x91efad11ba1e9dfd +199, 0xd5e1a887168077ee +200, 0xd7dbb7f29cfd0883 +201, 0x870d2e3d7d63f30d +202, 0x4be37b9d9b80dc21 +203, 0x30d08fb5ce640b67 +204, 0x394997017314b449 +205, 0x45c922bc8cebe829 +206, 0xadb8db20629620c2 +207, 0x73dba13236c132db +208, 0x44c97632f7eab99a +209, 0x52302a5113c42b8 +210, 0xc49eac36e4dcaadc +211, 0x5c48a772a8ad748f +212, 0xc68c46bbc47f9bb9 +213, 0xdb20d53f5b20b04b +214, 0x67b97d103b42fc24 +215, 0xdd45b34a0f4a6f19 +216, 0xcd3149f6b1a8417a +217, 0x895e63a756943dd7 +218, 0x10c130aed070e09e +219, 0x91a5d27a9dff7bfc +220, 0x7969b9a4c1799042 +221, 0xe0fa21d9ac6a407f +222, 0xa120475c1c40494f +223, 0xa132f481c4702e9e +224, 0xbef63f1d28a73030 +225, 0x35ec446066126207 +226, 0x833db04e541aa65c +227, 0x26ae1eb0e141ade5 +228, 0x6cbc535cae83f3c2 +229, 0x97fb2d4bf0afd7d9 +230, 0x25acfe6f42e3dbbf +231, 0x750ed326ce27b281 +232, 0x3ee71891fc7fad82 +233, 0x55c114ecb9a7a804 +234, 0xf568db8a3271ed93 +235, 0x575a4505476059ab +236, 0x97893f8c47997b91 +237, 0x9bc663fb05c338b +238, 0x7452f47c58006b94 +239, 0xdbfa7b63522a6f03 +240, 0xc3eb65a98ff538cc +241, 0xf90716f1f78e4cfe +242, 0x169e5b2e5a98a5ed +243, 0xf51a9657c54ab5e +244, 0x967248bf062ab022 +245, 0x52ef401956f37051 +246, 0x456f8da928a9a7d2 +247, 0x7f12fe8b7b1df21e +248, 0x2ac131f3c990e391 +249, 0xd4898ebc081a831b +250, 0x24bde3290baae46c +251, 0x3ed25c9da77130c4 +252, 0x79226b7dc8d3d773 +253, 0x8b90b3105cb5ba8e +254, 0x255ba2a5a4b5b126 +255, 0xa9db808cb7035a2d +256, 0xb28426b12e39451f +257, 0x480728dcd24d1fb0 +258, 0xe7e8d412adb17659 +259, 0x438660dc5e714904 +260, 0xf91032f68707fecf +261, 0xf6f69f774aa2528c +262, 0xe1b2d4dd22c631a4 +263, 0xe87983f09c0e72dc +264, 0xa61ca5d0b240cc59 +265, 0x9ebc7984165f83d8 +266, 0xc1750116e39bd4b2 +267, 0x4562cac88f8a493f +268, 0x6ad40ddf5c00c1e0 +269, 0x64fcd0a7f3a4c126 +270, 0x9cad6c3088c606ef +271, 0x892a46fa63143f31 +272, 0xc3e5dce845e339b2 +273, 0x319254b6fc26c971 +274, 0xd997efa63202eb58 +275, 0xbb69db2ebd9cd6fe +276, 0xce6ff2766c3c1f2e +277, 0x4de84ebd324f908 +278, 0x8473255ff1d6a157 +279, 0x878383bd70964200 +280, 0x670179050dc20454 +281, 0xb866a60096b5633d +282, 0x6dece7cd53794493 +283, 0x4f13e84e265d8c37 +284, 0x76212e15e4bbe512 +285, 0x7d1e28f69f99264e +286, 0xf38bc9da9dd24245 +287, 0x48458bc44bb16800 +288, 0x56d641f795f232f7 +289, 0x7ba1e845f1cc3c64 +290, 0x9db33734338daab1 +291, 0x24c5c0b5ccd0f39 +292, 0xb43e88b2c0b99434 +293, 0x6148acad1c85b941 +294, 0xf23c89e83928399 +295, 0x1d382c919005cb1b +296, 0xb7a11851c450c9e1 +297, 0xeea1a8efa750da7f +298, 0x5a8dd67ae7fafa7 +299, 0x8402d5038bcc399d +300, 0xbdae24462b1c6b3d +301, 0x5359d9dfcce7da19 +302, 0xdd8df2d8922b22cb +303, 0x57957e7ba35b79 +304, 0x7a72f4aacb48cf05 +305, 0x68ebeba0d51b6dc +306, 0x904287bf8df0b2e4 +307, 0x231b7ae5dfff9b2d +308, 0x6bc45e25081b5880 +309, 0xf21a02a7e71ea119 +310, 0xb59b9f794e7c1198 +311, 0xeef890b2fd8bd81a +312, 0xd2a3f3cd739732b7 +313, 0xc4dbe1281a711e +314, 0x4cb37ceda8d7397a +315, 0x9f18c99f4b38cf07 +316, 0xedb5f870f1a05c0d +317, 0xf3f837c38eac5b36 +318, 0x39321f7b5752ffe8 +319, 0x6a60750252ab6353 +320, 0x7f3e9806d2fcaea +321, 0x92365733f843ade9 +322, 0x9b563774e7170ed7 +323, 0xa6cdc9feb4d00464 +324, 0x238a3e47d3fe75fc +325, 0x1c8ac36792f1671e +326, 0x1aa0c259d13f0ee5 +327, 0xd7232e2daf9d0a9b +328, 0xf09dcd821413ddf6 +329, 0xda82c10c79b8f9a9 +330, 0x1f7a5b11f9f760c +331, 0x1a9b16e9add0bb1c +332, 0x244983783f0e9f45 +333, 0x3f41930171ec4fd0 +334, 0x71dc36ee7dc1842e +335, 0x3348d1717a68b40a +336, 0x34fa9854a290ddd4 +337, 0x575246161915966 +338, 0x697ea884eb372af9 +339, 0xeec13632b78909e7 +340, 0x7fe162e34d40961e +341, 0xe2d5d6a55ff71024 +342, 0x27e06966f64a11b5 +343, 0xa46aac2373a8a668 +344, 0x75d3d3d4e285f186 +345, 0x2d9b4476f589f93 +346, 0xac406c3f28358f07 +347, 0xbfce203a2475ddd6 +348, 0x8f53124a966acf7e +349, 0xf30a1b23f9e8e8d4 +350, 0x3b33f904296f439d +351, 0xf7944b0f0d7777a8 +352, 0xfec6db2f38921fd2 +353, 0xe0f38195c4a7a31d +354, 0x71035e10daaf828f +355, 0x8e614486924d6ab0 +356, 0x5b7d9b6b6efd4704 +357, 0x9a18239181dbda7d +358, 0x37f7551595cffc8c +359, 0x6e648360ea515af3 +360, 0xfbc9e358c239a77b +361, 0x4d70d2d733208d60 +362, 0x7f77aa351896d666 +363, 0x275b4eb66a1d3625 +364, 0xde6870cc1bb9a31f +365, 0x4378723ea228df95 +366, 0xacfc11479c0cd2bd +367, 0xc78c92ec5be7c0d3 +368, 0x43aaccbf5b14bd21 +369, 0xfeaf3d1801cb6c89 +370, 0x63eff723d31adfae +371, 0x10eef31d9e8383f3 +372, 0x29d6ee2ff486c1c0 +373, 0xedd7fd462ef4c28d +374, 0x86ec31373d6b31ea +375, 0xc1e35d9c0fb466f6 +376, 0xc1f4d9cbf8950d0f +377, 0x2fe650e1b3ef7b29 +378, 0xbfdb12572a31e01d +379, 0x2ffba015ad76c2de +380, 0xc7f26bd6ce9fa2d1 +381, 0xf243f064c339737a +382, 0x44da28024b59e113 +383, 0x2efff7082e7c0b64 +384, 0x5bf1e943fd7c378a +385, 0x21d0b4aadb47cb52 +386, 0x829e626d6fc03026 +387, 0x7559d04209b5e70b +388, 0x2c2f289263ace5b2 +389, 0xec47158f458e6851 +390, 0x82009d5a7d4156e +391, 0xba3927bc1de051c3 +392, 0x1b40d1e969678c11 +393, 0x6e86e275b87e9077 +394, 0xa6dbb8f8dd5966f5 +395, 0xe4e9fc1011fc7c11 +396, 0x1721e13978d78bdb +397, 0x43fe45543a336a8 +398, 0xbda2c168f03e6d04 +399, 0xe489f7d76f1e4c7c +400, 0x52220bc033d5496f +401, 0x8a611344d2ab9315 +402, 0x9dc7b9622e54fac0 +403, 0xb4cefc3ce49e421f +404, 0xb205e6760236242c +405, 0x64735940025054a9 +406, 0xa6a129cfe95c2aae +407, 0x2a30dc852e6d16c +408, 0xc6d1aec9472db8e7 +409, 0x17b7c4b55ed65c00 +410, 0x7c6a64719c48a6c6 +411, 0xa05cf8a7ccd8e4c0 +412, 0x89f13c1c8b34bed7 +413, 0x1253423df164f9d8 +414, 0x8c467671859a47a +415, 0xa925910e27d623d1 +416, 0xa4177391c46f7987 +417, 0x27c162acc1920179 +418, 0x28921ac199879877 +419, 0x9fb24c013364aa3b +420, 0x41193d5c7767a174 +421, 0x8f2c77cb0b2add1c +422, 0x397d239f9194e9f7 +423, 0xc0234e2524f854be +424, 0x7871bf9b881e01c6 +425, 0xe5f770295c6bdd6f +426, 0xc9eaea0f734a69a1 +427, 0xc6d996ff454d0e9 +428, 0x5f1292d9c13ea82e +429, 0xc943cef748ac1417 +430, 0xe29959d78ecb53de +431, 0x58a4ec3ed7a7aad5 +432, 0x1bab87500906766 +433, 0x9d5dc8d3241e07f +434, 0x1c200729e4573858 +435, 0xd615a44175a3844a +436, 0x8475f0267e37b95b +437, 0x54767090af756682 +438, 0x5cd49d1599aff80 +439, 0xad34dfd9719c72d4 +440, 0x15bebf3a0b2e9b47 +441, 0x10a2381ae9925049 +442, 0x80613d760ff95c38 +443, 0x86f04d6d28d1509e +444, 0x516a4a6285a5138a +445, 0xa265ac79c373baf5 +446, 0x6645dfe1f69d6942 +447, 0x88bba6f09544d2c1 +448, 0xd6f9f8399b74ff95 +449, 0xfb5bf8567390c3d7 +450, 0xb5b588007c4de84f +451, 0x8990fd0f5f518041 +452, 0xdc4a55b659cd0b7d +453, 0x26cb85d0bb8ac66c +454, 0x8ab502ea67808afa +455, 0x9813b40b56caf4ab +456, 0x5b1c6d876acfc5b3 +457, 0x6c6108022135d48b +458, 0x74e4a5946cf3c0bc +459, 0xba4df30a19b0883a +460, 0x2fe658bbece6b0be +461, 0x3c6529179649a1af +462, 0xfeb5a5522cb4644e +463, 0xa20421c41743219e +464, 0xc6f60bad535c35aa +465, 0x455a0d9755ce9a0 +466, 0xb56b03aa57d375ec +467, 0x1d6a0eed49c80ca0 +468, 0xefe0401fc696e6b1 +469, 0xd42f263f337df10d +470, 0x93bdeb06f1a6c6c5 +471, 0xb0d312c00f3e14dd +472, 0x9e96a6f9f60d4d4b +473, 0xa553f8d1e0957e27 +474, 0x379d6e730b944bb3 +475, 0x89e4de9c2af0dcea +476, 0x70335736cf717694 +477, 0x5a3d466164271480 +478, 0x48bd6732bc13c704 +479, 0xe6b7e8c451ddc44 +480, 0xd13222435f5855e4 +481, 0x978d607bf458e582 +482, 0xea1421e9353929b5 +483, 0x194d3ee6b91365b9 +484, 0xe13afa37c17ab0dc +485, 0x8f2c2a276d3f62ed +486, 0xb539821240639fbc +487, 0xb2a4bf51edaf8ca7 +488, 0x708631579b5428e4 +489, 0x5f16f257dc7dac08 +490, 0x4d50ff2f63ab4873 +491, 0xc6c4cb835755d5fe +492, 0x5f704ac82fe9d51d +493, 0x8327321c0296bb29 +494, 0x39b6df79cfb0a43b +495, 0x7494501cac28db85 +496, 0xafa1a9e20ec56d2b +497, 0xd2f36d3bbd8edeca +498, 0x5cd4850bd7920a31 +499, 0xa1d1e26dc366a7ca +500, 0x9413babfb49f90ca +501, 0xdac168b23c8e8f97 +502, 0xd9f6b1add8b76a75 +503, 0xfbd4a59c45fc9a1b +504, 0xd2a46ffba906cdac +505, 0xf1f6b6e61a351493 +506, 0x16ac9ef5b8e74c9e +507, 0xe27e2ec9892b4dcd +508, 0xeacf5e85d29f2392 +509, 0xd9c9212ab0d9c7b +510, 0x6b7a79ff740f2ead +511, 0x942e43bb6885b22 +512, 0x57895ab3720abf6e +513, 0x524e04c7bbe04a01 +514, 0x6c6ffae2d42c16b4 +515, 0x6ac0c2e3c906d490 +516, 0xa84a38882c68146e +517, 0x8fbf87f6bca86eda +518, 0x4549c167fdb86023 +519, 0x4646df9afc96aa3a +520, 0xce9bae28181b5b7f +521, 0x409c9c4e1d22055c +522, 0xe7a7816fab796587 +523, 0x31718585b787ce80 +524, 0x8774c1baa9b0da95 +525, 0xc05e2f6ffc4c20f8 +526, 0x997003d36469e7dc +527, 0xbb8a70f5dd0808b8 +528, 0x3494e3cfb8effef5 +529, 0x83eeb090a054a545 +530, 0xbb73408ec2dba185 +531, 0xed84356fd3f9a63 +532, 0xdc4253f87dbff91 +533, 0x937338f5db37af09 +534, 0x872bbd00f50989dd +535, 0x17db203711f6b407 +536, 0x28753bfdb9174d11 +537, 0x4a379feac5d7463b +538, 0x82ea1651c16dbab2 +539, 0x2610e3c68a7d42b1 +540, 0xf5d3253180f64a87 +541, 0xfc7ac4dc958bda9 +542, 0x35223512ec39f4b9 +543, 0x8bad584505367cbc +544, 0xc423052f2062181d +545, 0x1d9036ff4ac89317 +546, 0x20ac50bb8eb02f8b +547, 0x6af0f8a791c6b934 +548, 0xe8308b3c0c3e7cfe +549, 0x7dc0e5dbcbeffea8 +550, 0xcae2335e3a931496 +551, 0x55ad938207de8721 +552, 0x52d9534f1bef1c1f +553, 0x473ae4d5e617fbbf +554, 0x9567b837d3e698ed +555, 0x67c5bf6094869289 +556, 0xb25474257ed9b980 +557, 0x44d5173e7cd840ab +558, 0x7b340f8e00d9d763 +559, 0x76fc74e7149b846e +560, 0x18fcc9c76c207dcb +561, 0xa77fb5d11249761 +562, 0x8aedd5e47c0d96e8 +563, 0x441c2c000c155983 +564, 0xa96821c9da3a384a +565, 0xd525687306b77e82 +566, 0xb14b52746d981aa0 +567, 0x81d7cea52923aee5 +568, 0xfb7d6172f787dcc1 +569, 0x90d684402f45d516 +570, 0xf23b7066c8ffb9c2 +571, 0xca3c418a3963f85b +572, 0x794dbbe3400c3528 +573, 0x941d2ae5a2d57986 +574, 0xec5ce0c99ef847c6 +575, 0x531480bd8ee2c021 +576, 0xa3b6a44b5bacb8e3 +577, 0x1faddd5742434805 +578, 0x38cee40cbff7f226 +579, 0x4530659050f7f114 +580, 0xf52f654a9268869a +581, 0xa977c75f36928c13 +582, 0xe7392dd9a345573 +583, 0x90522f6c6e8674c1 +584, 0x86120d8924163c36 +585, 0xeb426c0a7c2fad5c +586, 0x887422c48d94cfd4 +587, 0x427b92ef8926b437 +588, 0xe347b58c941e730a +589, 0x7eb099bc0253a771 +590, 0x3185ae680653614 +591, 0x378a6f437e6c5a3e +592, 0x979e51edd70f7e9a +593, 0x574f9726b578bda +594, 0x2c4ab9c292bb386f +595, 0x47811cf172a90ea2 +596, 0xe998dcd3edee7f34 +597, 0x4a9869f98a592560 +598, 0xb61bee5de687a85d +599, 0x56ffb16037d10019 +600, 0x57154660aadfd38a +601, 0x285e512ef13cc726 +602, 0x248378be4e43b029 +603, 0x6eaff2a965885400 +604, 0x24d71d8dc4065aba +605, 0x24728ffdd8df28f8 +606, 0x82fab5a65e123e5c +607, 0x8ae40cf93d6fcf92 +608, 0x35d5b1aa4b690734 +609, 0xf21cd81e44c0d726 +610, 0x39bd0cd0f6e5e0ec +611, 0x5526273353f341af +612, 0xf7ea2b122046cad5 +613, 0x2ea5c038be52bdea +614, 0x84ca3970f8737db5 +615, 0x1290d9459497d0f4 +616, 0x2c486df87788409b +617, 0x76d20e3f2a01a960 +618, 0xf1ab6e4782efce13 +619, 0x14ecf78217e96e75 +620, 0x4aaed1ab6bc2c1cf +621, 0x70d09f6c86148989 +622, 0x57a3d72632e2140b +623, 0x18f7a6029a824ea4 +624, 0x4fd04d39711f0bd7 +625, 0x2a4698dd2b05f58f +626, 0xb98c9d66ef80b4bb +627, 0x61e45861a63bb3d8 +628, 0x37af74e4380e90f +629, 0x3eec5cb01e9e98db +630, 0xdc040f215f9ce631 +631, 0x4f8d27eec7a8a1bd +632, 0xff810139b991411d +633, 0x8e9bd4884e04cee +634, 0x691113ed409431d8 +635, 0x81eec57eae9d585f +636, 0x67e9eb9342fb1da2 +637, 0x29e214666d5a2045 +638, 0xf5c37fbfe2293833 +639, 0x40a99774c6ac88ab +640, 0xa5086e944239cd51 +641, 0xc138c418daeea3f +642, 0xfd554f4a6bfab8c5 +643, 0xabe332fc8fc7365d +644, 0x3b6db9a093a7a77 +645, 0xbcac3ceeae424ed8 +646, 0x263026af40b186a7 +647, 0x8de69e799b8c168f +648, 0x53e2479572b95d4f +649, 0x447c535900f718f1 +650, 0x14b7b6f1d81f0089 +651, 0x77a14291bf60928a +652, 0x8908375637982f70 +653, 0x21f73b522d971ac6 +654, 0xf7d80a8233937e36 +655, 0xa879211baf028191 +656, 0x2a577c85faf43e9b +657, 0xe0eda6784c7398fe +658, 0xb2dde977537b7906 +659, 0x2da659547505c6e0 +660, 0x36d38c3eba37cb7c +661, 0x796ce518d3792942 +662, 0x98481aa61a888749 +663, 0x3de83fcd5e7f11b6 +664, 0xd29359f4bf44614 +665, 0xde13b8dfba0d42d9 +666, 0xfc26cb07a23f7c7 +667, 0x4217f796ef80aae0 +668, 0x584cefb7b498624f +669, 0x13e971dfc3d8f87e +670, 0xdfec054dfe29312f +671, 0x581950888b620fa4 +672, 0x6c34f8aaf881c17e +673, 0x2b49cc03af5bf010 +674, 0x8dbd965362fdd330 +675, 0x9b8fe34d224e8b69 +676, 0x8e9fb47cda607571 +677, 0xc3aa0cca23ad10e4 +678, 0x952b3b509431ecdb +679, 0x6dd15a0b47906e2a +680, 0xf912959386bebcd4 +681, 0x89c43a9e7c90537 +682, 0x20eb19b34aa5f754 +683, 0xd60a30c42900e33c +684, 0xf8792151dea1d79c +685, 0xa06fa7b9190c42e8 +686, 0x674aef1f39523dc5 +687, 0xc8e9c98e04c554a1 +688, 0x750f760fdf5d4c99 +689, 0xb7386bcf9772d3d8 +690, 0x822612525eab5cda +691, 0x6c3b1bebfc2e863c +692, 0x3d3c1c6fe5b6bfb1 +693, 0x50bc5e43c16f703e +694, 0x238463e0d42eae7d +695, 0x5786dd8b612f264 +696, 0xbba25f04ec01016a +697, 0xc3fc8805f00841fd +698, 0x2daeb12fe245ce9 +699, 0x3e59a7f281f2e61 +700, 0x5674d1961a7a4400 +701, 0xdb35f1d8747efb7c +702, 0xd1d5933c92f5fb05 +703, 0xb0f60b94ac43e5e6 +704, 0xe5ce5b1c0844861f +705, 0x8e5a0d2e2dc122bf +706, 0x5054f5bb7e6a8198 +707, 0x8f6382b03a2f54bc +708, 0xc0d662784d6b3afb +709, 0x27279428fc543aeb +710, 0xaae3650f2ee40ee3 +711, 0x30ed063dbad809af +712, 0xd558af8f187f5a97 +713, 0x2c48a8744bec8422 +714, 0x4bf10989406d7a5d +715, 0x6bb393eaa1c91bc7 +716, 0x82df41d1840645fb +717, 0x77748915d3c425ba +718, 0xb2f72b28415ec89a +719, 0xb2a8bea1281a387b +720, 0xed5c5fbfc7b26808 +721, 0xb8faa5700ace8689 +722, 0xe28c1d5daddb437a +723, 0x5ae95e7f70cae272 +724, 0x4b071ca0b26e007b +725, 0xeb74a34e177dee0b +726, 0x6a6570eb033f73f0 +727, 0x8bb64ad19ef7f738 +728, 0xddb2a7075cb6f3e0 +729, 0xd196b5d19ee153f3 +730, 0x8298df0b1e45e94d +731, 0xa89bf3426d684cf3 +732, 0xead3dfa203cf771b +733, 0x9dd7b5bd47f61454 +734, 0x33921af98d8c2959 +735, 0xb9d65f12da7fd31e +736, 0xf6affa696230d221 +737, 0x1c1086e0d9abffc1 +738, 0x7604c62cdf9573da +739, 0x6fc534af5160c621 +740, 0xf4c11ff9341af148 +741, 0x67527cb149fe4c45 +742, 0xc330423595f46829 +743, 0x46dc0235c72bffec +744, 0x7c742b86d0dfb16b +745, 0x95853d09976db86b +746, 0x4996c631903d3661 +747, 0x4566711a1680d578 +748, 0xb21d87907806631 +749, 0xc3f5b8aeb8b11178 +750, 0xdf6aabd101b6cddf +751, 0xdf5e9dbef9bfed2a +752, 0x1ee487be494c7cca +753, 0x36cba0d5eff8b66a +754, 0xf0ddf11b565b0f9a +755, 0xc52d3f946a878faa +756, 0xe70ddd7bf0cb1d36 +757, 0x246c694bcef19087 +758, 0xba15c6eea03bf60d +759, 0x6d8fb3a674aaafd8 +760, 0x9800fd73ac40cb10 +761, 0xb6ca60705e61c336 +762, 0x57f2015ecac22e61 +763, 0x4b4b3fe07abefa94 +764, 0x7f6f35a9d5aaade0 +765, 0xd4208cb826107309 +766, 0x25a785e522aa6639 +767, 0x5bf96bd691517090 +768, 0xd22968d112f60861 +769, 0x5f7b82cf962983e6 +770, 0x8949e823e073638b +771, 0x22be41fcb20a3941 +772, 0xf4f0022d719bfbbf +773, 0xb6bd9d938a78583a +774, 0x8ecfbd7e38b82527 +775, 0x5017139884fcfe5d +776, 0x9725be0d7e4567e6 +777, 0xb58516dae6df80d5 +778, 0xbb21457fe7ae9413 +779, 0xe34cfa8c7bf6225f +780, 0x5da61ef7906f0c0c +781, 0xf661f0eec5f4f8d7 +782, 0x65f0a76084a47cd6 +783, 0x9c60c3fb1e70defa +784, 0x5a299580c3444a03 +785, 0xdfbc90904a4ac36c +786, 0x8b0a512404f53c99 +787, 0x9146ec8f843e757f +788, 0x8239a3d6295b2f48 +789, 0x1f51dc82c73349ab +790, 0xfe90704db14b97cf +791, 0xdbd422b82bac3af5 +792, 0x2deff228df244cc8 +793, 0x1b0459707a25021f +794, 0x71cfe32ebbf548e3 +795, 0x9398fee935249b95 +796, 0x98b1ff3999629d43 +797, 0x46fbea81ff61ec6e +798, 0x3b7182e6fbab248a +799, 0x5796e43599a6c0cc +800, 0x89af0026e39941b7 +801, 0xbf16ce82bd9912e3 +802, 0xc8d4ea631bf1820e +803, 0xa40b24c1bf2db537 +804, 0x7bf7793e7aa72f71 +805, 0x64c14cc410f8c05e +806, 0xce8e3f1c03990f0a +807, 0x303edd0d01fd2361 +808, 0xa1d7c1211774a502 +809, 0x11abd2d397a3999c +810, 0xe7d84a621cf53195 +811, 0x84640ce55651ef6d +812, 0x6c2ea87948421598 +813, 0x20bc762d7adc2db1 +814, 0x473906095578b802 +815, 0x20c7cceff930c6a1 +816, 0x6022741ef5402453 +817, 0x756f8c210bdf5337 +818, 0xc2b854057d316160 +819, 0x1d4bf61c719ff9c8 +820, 0xee5de2e13847be4a +821, 0x174228d4e152505a +822, 0xaaaf6dd7773a7a36 +823, 0x3204cc0b67dc6988 +824, 0x1edf96ec507fe484 +825, 0xdb17929277ed599e +826, 0x8bbcd44c3d7bb107 +827, 0x4add19dd9339023c +828, 0x75fa1b317645226b +829, 0x41b215433afe8018 +830, 0x29945b3520e52d55 +831, 0xe0b68646714dee08 +832, 0xe389c99f8e0f6764 +833, 0xf031c170f649f0f5 +834, 0x32861ce24e274904 +835, 0xcd4a1ad6f30cb699 +836, 0xf139d776ba88d113 +837, 0xf9e993edc027a4c0 +838, 0xa3d4d2c884ace993 +839, 0x9681a65c7b66c497 +840, 0xde7293b2dda6f8b2 +841, 0x394a563b4c28fb +842, 0xbacfd0004eca4dea +843, 0x379df2f439c6cecb +844, 0x11513b06bfdd94d4 +845, 0x988e521c73a1ac1d +846, 0xc9ef5cc8e6850133 +847, 0xf8b2068a0a4b0b49 +848, 0xaafbe2a01e3e6248 +849, 0x8d359f1842740e13 +850, 0xba46a61371c59d3f +851, 0xe7a55160a30eb057 +852, 0xf9d8547d9916e870 +853, 0xe761cf193c8746e2 +854, 0x98a708fd56f68f82 +855, 0x898acfa2d56cc09 +856, 0xe56bd653a4bad191 +857, 0xd76cbb8b40e6afd2 +858, 0x942a59553c77663f +859, 0x86f3189f33e872fc +860, 0x7e764bc309ddf61d +861, 0xc032133399dc769b +862, 0x4fc8aaf96da0d316 +863, 0x86a3d2fea7372ad5 +864, 0x2657907a35f85693 +865, 0x535662477e50571b +866, 0x3070c06b5cb13c88 +867, 0x507d4fe671d45975 +868, 0xe80cd2e9072a99ee +869, 0xf266e684968c8e2f +870, 0x62bb588cda0a1275 +871, 0x6da77ede652c4123 +872, 0x3337253102f8cd14 +873, 0x9fe7508c3fd663d5 +874, 0x7c6cf9da01609be7 +875, 0xe096baf20cf2a7c8 +876, 0x3de20f4f02768d9e +877, 0x427c7d3a360713fb +878, 0xd3219f2ddcac1d4b +879, 0x9c8a9a7cb8690a53 +880, 0x1bd5d9353f5bc099 +881, 0xe0b58ce5dd7d42ec +882, 0x2588f270b89b5211 +883, 0xad7411eeb5c3787c +884, 0xf4abef7a16024317 +885, 0x5ac560d2fd86e47e +886, 0x7a34f7a7d19cd228 +887, 0x57250e7cbebfbaff +888, 0x4d237c0c735405bc +889, 0x818a036ddf9d12df +890, 0x6d3de6aca5a36a4c +891, 0x6a9ef9224cec24d2 +892, 0xf27d0680da009807 +893, 0x47b70b959bfcee65 +894, 0xa70c6d513b372f63 +895, 0x46dc82392854fd88 +896, 0x78dbfadff5430032 +897, 0xbaf8edf0e15b6e77 +898, 0xb1cb43f5de87a63c +899, 0x78ac72a4eaccc44 +900, 0xb562b09810119d3c +901, 0x8096e738c9f19759 +902, 0x6dde5a58aeae02d3 +903, 0x6a7510dcbc62feff +904, 0xa9617f7c2c46e6a4 +905, 0x19574e36f9be875f +906, 0x6f46d09fc2c2b4cb +907, 0x265d545d599689a1 +908, 0x4bc52e197f7039b2 +909, 0x28e555219e5a6b9c +910, 0x4762ed1543971305 +911, 0xb37940896fb3541e +912, 0x10828504ca6fb861 +913, 0x15651c5ff6145a39 +914, 0x97133531e851a8ff +915, 0xdda6d67e6e033297 +916, 0x50b0442cbbf02d4c +917, 0x50edb7b4af410b65 +918, 0x2e80bb573374c80f +919, 0x90eb34c19d84830a +920, 0xaf0487ada65eae0f +921, 0x5d8e4655b44829b9 +922, 0x774dde783ee43ca5 +923, 0x43841d4a5a893ed4 +924, 0xa1deead5f87252f7 +925, 0xf9f61efbd4997c85 +926, 0x75bf02d562274edf +927, 0x4c42baf58ca9c87e +928, 0x61c3d740d7344e89 +929, 0x5b05078d70e04aa9 +930, 0x46bcdb678d18e643 +931, 0xf0a85dda3e088c90 +932, 0x468e69db1d04617a +933, 0xf791c6353d54cdeb +934, 0x987f43631742e11b +935, 0x50fa1529f319d8b5 +936, 0x94275d2704bcef22 +937, 0x19623491d8b6e875 +938, 0x2c92582da0615024 +939, 0x79dddce8059de5d6 +940, 0x9cdfdcc2338fd468 +941, 0x461cd5c4229aac89 +942, 0x88c296ef87599b3b +943, 0x5f1e1cd54cbd23e7 +944, 0xe24cae36ded6cada +945, 0x5f477c8929de6c6 +946, 0x5c6baa54252c1a36 +947, 0xdfa957c2e12121aa +948, 0x764316fe511f9950 +949, 0xc51da6f8b02f54df +950, 0x19f560e48cf148f +951, 0x57ec86ed172f27f +952, 0x6e6434f150da6a68 +953, 0x82440e64f27bbb08 +954, 0x6db904b6df8fbe32 +955, 0xae089f3a98171f09 +956, 0xa968634b29df7c4 +957, 0x87ebf481d5b04f2a +958, 0xd444079255407d50 +959, 0xe667d7268a2962ea +960, 0x62801def9b7fccba +961, 0xd48bd1bd737a3011 +962, 0xaa69c091f84334cb +963, 0xd643daa8f57ebc1f +964, 0x91371a47f33608a5 +965, 0x1f9fd8ca8c0aaf81 +966, 0xbd56def1f4a93ec4 +967, 0xefd954ccd525169c +968, 0x2b3fe29e929a6b8f +969, 0x404f4a83bf5222d4 +970, 0xf1344f1dc3432dea +971, 0xa6e734fe52d020e6 +972, 0xe61fe8263ce6def6 +973, 0x5dc970391a54138b +974, 0x218832bf8bc7d33 +975, 0x9cf2bf1c1febbbcc +976, 0x159da66b354a32e0 +977, 0xa30b814d5c55a8c6 +978, 0x9009a55383c98dc6 +979, 0xd665931fa686c06f +980, 0xc7302b54a5d80ce4 +981, 0x1d41f655971bac2 +982, 0x3ba3edc092f06902 +983, 0x5f84d04d03592a8e +984, 0xde30a3f645209735 +985, 0x363d3c34ce054817 +986, 0x71b1ef27ac191f7 +987, 0xfbdf0857dfb23bca +988, 0x5f591076a63e71b7 +989, 0x54a44eca53a6429e +990, 0xc167dadec2a58005 +991, 0xd5ddd0a6fd262ae6 +992, 0xccbbd19c3168eac +993, 0x7df717a61b4b3ff9 +994, 0x55c219e970df520c +995, 0x7816a268a93a7a35 +996, 0x50e2d6d317ebcf70 +997, 0x9dcf84fb88d42467 +998, 0x9fea32e255a473bb +999, 0x575f27b451cc3680 diff --git a/test/test_bitgenerators.ml b/test/test_bitgenerators.ml index deb4658..b10f831 100644 --- a/test/test_bitgenerators.ml +++ b/test/test_bitgenerators.ml @@ -8,6 +8,8 @@ let () = Test_pcg.tests @ Test_philox.tests @ Test_xoshiro.tests @ - Test_chacha.tests + Test_chacha.tests @ + Test_lxm.tests + in run_test_tt_main suite diff --git a/test/test_lxm.ml b/test/test_lxm.ml new file mode 100644 index 0000000..e2c6ab0 --- /dev/null +++ b/test/test_lxm.ml @@ -0,0 +1,27 @@ +open OUnit2 +open Bitgen + + +let test_lxm_datasets _ = + Testconf.bitgen_groundtruth + (module LXM) + (Sys.getcwd () ^ "/../../../test/data/lxm-testset-1.csv"); + Testconf.bitgen_groundtruth + (module LXM) + (Sys.getcwd () ^ "/../../../test/data/lxm-testset-2.csv") + + +let test_bounded_u64 _ = Testconf.test_bounded_u64 (module LXM) + + +let test_jump _ = + let t = SeedSequence.initialize [] |> LXM.initialize in + let t' = LXM.jump t in + assert_bool "" ((LXM.next_uint64 t |> fst) <> (LXM.next_uint64 t' |> fst)) + + +let tests = [ + "test LXM PRNG against groundtruth datasets" >:: test_lxm_datasets; + "test LXM jump function consistency" >:: test_jump; + "test bounded random generation of LXM" >:: test_bounded_u64; +]