diff --git a/.gitignore b/.gitignore index 7945583..b2d9cea 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,6 @@ buf.gen.yaml # Ignore 'target' directory in any subdirectory target/ -# Ignore '.spkg' files in any subdirectory \ No newline at end of file +# Ignore '.spkg' files in any subdirectory +utils/convert +/utils/wasm_bytes.js diff --git a/dex-trades-wasm-only/Cargo.lock b/dex-trades-wasm-only/Cargo.lock new file mode 100644 index 0000000..686534a --- /dev/null +++ b/dex-trades-wasm-only/Cargo.lock @@ -0,0 +1,948 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bigdecimal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "num-traits", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown 0.14.2", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "linux-raw-sys" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +dependencies = [ + "proc-macro-crate 2.0.0", + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "pad" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ad9b889f1b12e0b9ee24db044b5129150d5eada288edc800f789928dc8c0e3" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap", +] + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +dependencies = [ + "bytes", + "heck", + "itertools", + "lazy_static", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 1.0.109", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rustix" +version = "0.38.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +dependencies = [ + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "serde" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "substreams" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af972e374502cdfc9998132f5343848d1c58f27a295dc061a89804371f408a46" +dependencies = [ + "anyhow", + "bigdecimal", + "hex", + "hex-literal", + "num-bigint", + "num-traits", + "pad", + "prost", + "prost-build", + "prost-types", + "substreams-macro", + "thiserror", +] + +[[package]] +name = "substreams-macro" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6521ccd011a4c3f52cd3c31fc7400733e4feba2094e0e0e6354adca25b2b3f37" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "thiserror", +] + +[[package]] +name = "substreams-solana" +version = "0.11.1" +source = "git+https://github.com/streamingfast/substreams-solana?branch=master#1f66cc3081f61ad1189dc814cb82096ae5ac4b3b" +dependencies = [ + "anyhow", + "num_enum", + "substreams", + "substreams-solana-core", + "substreams-solana-macro", +] + +[[package]] +name = "substreams-solana-core" +version = "0.11.1" +source = "git+https://github.com/streamingfast/substreams-solana?branch=master#1f66cc3081f61ad1189dc814cb82096ae5ac4b3b" +dependencies = [ + "bs58 0.4.0", + "prost", + "prost-build", + "prost-types", +] + +[[package]] +name = "substreams-solana-macro" +version = "0.11.1" +source = "git+https://github.com/streamingfast/substreams-solana?branch=master#1f66cc3081f61ad1189dc814cb82096ae5ac4b3b" +dependencies = [ + "bs58 0.4.0", +] + +[[package]] +name = "substreams-solana-program-instructions" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2d2eac3fee28a079bd3af5573bb6d43cf9667d89ce577fc7dd40113bb31e9e1" +dependencies = [ + "anyhow", + "num_enum", + "substreams", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +dependencies = [ + "cfg-if", + "fastrand", + "redox_syscall", + "rustix", + "windows-sys", +] + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tl-solana-dex-trades" +version = "1.0.0" +dependencies = [ + "borsh", + "bs58 0.5.0", + "bytes", + "chrono", + "num-bigint", + "prost", + "serde", + "serde-wasm-bindgen", + "serde_json", + "substreams", + "substreams-solana", + "substreams-solana-program-instructions", + "wasm-bindgen", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.38", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +dependencies = [ + "memchr", +] + +[[package]] +name = "zerocopy" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] diff --git a/dex-trades-wasm-only/Cargo.toml b/dex-trades-wasm-only/Cargo.toml new file mode 100644 index 0000000..3e59afb --- /dev/null +++ b/dex-trades-wasm-only/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "tl-solana-dex-trades" +version = "1.0.0" +edition = "2021" + +[lib] +name = "dex_trades" +crate-type = ["cdylib"] + +[dependencies] +substreams = "^0.5.0" +substreams-solana = { git = "https://github.com/streamingfast/substreams-solana", branch = "master" } +substreams-solana-program-instructions = "0.1" +bytes = "1.1.0" +prost = "0.11" +num-bigint = "0.4" +bs58 = "0.5.0" +borsh = { version = "0.10.3"} +chrono = { version = "0.4", features = [ "std" ], default-features = false } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +wasm-bindgen = { version = "0.2", features = ["serde-serialize"] } +serde-wasm-bindgen = "0.5" + +[profile.release] +lto = true +opt-level = 's' +strip = "debuginfo" \ No newline at end of file diff --git a/dex-trades-wasm-only/Makefile b/dex-trades-wasm-only/Makefile new file mode 100644 index 0000000..0c00b2e --- /dev/null +++ b/dex-trades-wasm-only/Makefile @@ -0,0 +1,22 @@ +ENDPOINT ?= mainnet.sol.streamingfast.io:443 + +.PHONY: build +build: + LDFLAGS="-Wl,-no_compact_unwind" cargo build --target wasm32-unknown-unknown --release + +.PHONY: protogen +protogen: + substreams protogen ./substreams.yaml --exclude-paths="sf/substreams,google" + +.PHONY: package +package: + substreams pack ./substreams.yaml + +.PHONY wasm_pack: +wasm_pack: + wasm-pack build --no-typescript --target no-modules + +.PHONY convert_and_gcloud_upload: +convert_and_gcloud_upload: + go build utils/convert.go && mv convert utils/convert + utils/script.sh dex_trades diff --git a/dex-trades-wasm-only/index.html b/dex-trades-wasm-only/index.html new file mode 100644 index 0000000..65bb482 --- /dev/null +++ b/dex-trades-wasm-only/index.html @@ -0,0 +1,19 @@ + + + + + + hello-wasm example + + + + + + + \ No newline at end of file diff --git a/dex-trades-wasm-only/src/dapps/dapp_27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv.rs b/dex-trades-wasm-only/src/dapps/dapp_27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv.rs new file mode 100644 index 0000000..02d8d47 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv.rs @@ -0,0 +1,62 @@ +use crate::pb::sf::solana::transactions::v1::TokenBalance; +use crate::trade_instruction::TradeInstruction; +use crate::utils::get_mint; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + input_accounts: Vec, + post_token_balances: &Vec, + accounts: &Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 9 => { + result = Some(TradeInstruction { + dapp_address: String::from("27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv"), + name: String::from("SwapBaseIn"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: get_vault_a(&input_accounts, post_token_balances, accounts), + vault_b: get_vault_b(&input_accounts, post_token_balances, accounts), + ..Default::default() + }); + } + _ => {} + } + + return result; +} + +fn get_vault_a( + input_accounts: &Vec, + post_token_balances: &Vec, + accounts: &Vec, +) -> String { + let mut vault_a = input_accounts.get(4).unwrap().to_string(); + let mint_a = get_mint(&vault_a, post_token_balances, accounts, "".to_string()); + + if mint_a.is_empty() { + vault_a = input_accounts.get(5).unwrap().to_string(); + } + + return vault_a; +} + +fn get_vault_b( + input_accounts: &Vec, + post_token_balances: &Vec, + accounts: &Vec, +) -> String { + let vault_a = input_accounts.get(4).unwrap().to_string(); + let mint_a = get_mint(&vault_a, post_token_balances, accounts, "".to_string()); + let mut vault_b = input_accounts.get(5).unwrap().to_string(); + + if mint_a.is_empty() { + vault_b = input_accounts.get(6).unwrap().to_string(); + } + + return vault_b; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr.rs b/dex-trades-wasm-only/src/dapps/dapp_2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr.rs new file mode 100644 index 0000000..e23ac1e --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr.rs @@ -0,0 +1,31 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_FUND_TOKENS_DISCRIMINATOR: u64 = + u64::from_le_bytes([112, 246, 21, 136, 172, 62, 27, 20]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_FUND_TOKENS_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr"), + name: String::from("SwapFundTokens"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c.rs b/dex-trades-wasm-only/src/dapps/dapp_2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c.rs new file mode 100644 index 0000000..6d73aaf --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8.rs b/dex-trades-wasm-only/src/dapps/dapp_675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8.rs new file mode 100644 index 0000000..c173c13 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8.rs @@ -0,0 +1,83 @@ +use crate::pb::sf::solana::transactions::v1::TokenBalance; +use crate::trade_instruction::TradeInstruction; + +use crate::utils::get_mint; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + input_accounts: Vec, + post_token_balances: &Vec, + accounts: &Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 9 => { + result = Some(TradeInstruction { + dapp_address: String::from("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), + name: String::from("SwapBaseIn"), + amm: input_accounts.get(1).unwrap().to_string(), + vault_a: get_vault_a(&input_accounts, post_token_balances, accounts), + vault_b: get_vault_b(&input_accounts, post_token_balances, accounts), + ..Default::default() + }); + } + 11 => { + result = Some(TradeInstruction { + dapp_address: String::from("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), + name: String::from("SwapBaseOut"), + amm: input_accounts.get(1).unwrap().to_string(), + vault_a: get_vault_a(&input_accounts, post_token_balances, accounts), + vault_b: get_vault_b(&input_accounts, post_token_balances, accounts), + ..Default::default() + }); + } + _ => {} + } + + return result; +} + +fn get_vault_a( + input_accounts: &Vec, + post_token_balances: &Vec, + accounts: &Vec, +) -> String { + let mut vault_a = input_accounts.get(4).unwrap().to_string(); + let mint_a = get_mint(&vault_a, post_token_balances, accounts, "".to_string()); + + if mint_a.is_empty() { + vault_a = input_accounts.get(5).unwrap().to_string(); + } + + return vault_a; +} + +fn get_vault_b( + input_accounts: &Vec, + post_token_balances: &Vec, + accounts: &Vec, +) -> String { + let mut vault_a_index = 4; + + let mut vault_a = input_accounts.get(4).unwrap().to_string(); + let mint_a = get_mint(&vault_a, post_token_balances, accounts, "".to_string()); + + if mint_a.is_empty() { + vault_a_index += 1; + vault_a = input_accounts.get(vault_a_index).unwrap().to_string(); + } + + let mut vault_b_index = vault_a_index + 1; + let mut vault_b = input_accounts.get(vault_b_index).unwrap().to_string(); + + if vault_a == vault_b { + vault_b_index += 1; + vault_b = input_accounts.get(vault_b_index).unwrap().to_string(); + } + + return vault_b; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.rs b/dex-trades-wasm-only/src/dapps/dapp_6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.rs new file mode 100644 index 0000000..2843e30 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.rs @@ -0,0 +1,41 @@ +use crate::trade_instruction::TradeInstruction; + +const BUY_DISCRIMINATOR: u64 = u64::from_le_bytes([102, 6, 61, 18, 1, 218, 235, 234]); +const SELL_DISCRIMINATOR: u64 = u64::from_le_bytes([51, 230, 133, 164, 1, 127, 131, 173]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + BUY_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"), + name: String::from("Buy"), + amm: accounts.get(3).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + SELL_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"), + name: String::from("Sell"), + amm: accounts.get(3).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_6MLxLqiXaaSUpkgMnWDTuejNZEz3kE7k2woyHGVFw319.rs b/dex-trades-wasm-only/src/dapps/dapp_6MLxLqiXaaSUpkgMnWDTuejNZEz3kE7k2woyHGVFw319.rs new file mode 100644 index 0000000..2117715 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_6MLxLqiXaaSUpkgMnWDTuejNZEz3kE7k2woyHGVFw319.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("6MLxLqiXaaSUpkgMnWDTuejNZEz3kE7k2woyHGVFw319"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5.rs b/dex-trades-wasm-only/src/dapps/dapp_7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5.rs new file mode 100644 index 0000000..42b1737 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP.rs b/dex-trades-wasm-only/src/dapps/dapp_9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP.rs new file mode 100644 index 0000000..58e25fd --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H.rs b/dex-trades-wasm-only/src/dapps/dapp_9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H.rs new file mode 100644 index 0000000..5261572 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin.rs b/dex-trades-wasm-only/src/dapps/dapp_9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin.rs new file mode 100644 index 0000000..2be1304 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin.rs @@ -0,0 +1,28 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(2); + let disc_bytes_arr: [u8; 2] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u16 = u16::from_be_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + 5 => { + result = Some(TradeInstruction { + dapp_address: String::from("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), + name: String::from("SettleFunds"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6.rs b/dex-trades-wasm-only/src/dapps/dapp_AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6.rs new file mode 100644 index 0000000..100a022 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6"), + name: String::from("Swap"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p.rs b/dex-trades-wasm-only/src/dapps/dapp_BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p.rs new file mode 100644 index 0000000..df8d608 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.rs b/dex-trades-wasm-only/src/dapps/dapp_CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.rs new file mode 100644 index 0000000..ea97daa --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.rs @@ -0,0 +1,41 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); +const SWAP_V2_DISCRIMINATOR: u64 = u64::from_le_bytes([43, 4, 237, 11, 26, 201, 30, 98]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"), + name: String::from("Swap"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + SWAP_V2_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"), + name: String::from("SwapV2"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR.rs b/dex-trades-wasm-only/src/dapps/dapp_CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR.rs new file mode 100644 index 0000000..7bb69f1 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR.rs @@ -0,0 +1,31 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_WITH_PARTNER_DISCRIMINATOR: u64 = + u64::from_le_bytes([133, 215, 191, 214, 102, 243, 55, 25]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_WITH_PARTNER_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR"), + name: String::from("SwapWithPartner"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(6).unwrap().to_string(), + vault_b: accounts.get(7).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.rs b/dex-trades-wasm-only/src/dapps/dapp_CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.rs new file mode 100644 index 0000000..f635174 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.rs @@ -0,0 +1,43 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_BASE_INPUT_PARTNER_DISCRIMINATOR: u64 = + u64::from_le_bytes([143, 190, 90, 218, 196, 30, 51, 222]); +const SWAP_BASE_OUTPUT_PARTNER_DISCRIMINATOR: u64 = + u64::from_le_bytes([55, 217, 98, 86, 163, 74, 180, 173]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_BASE_INPUT_PARTNER_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"), + name: String::from("SwapBaseInput"), + amm: accounts.get(3).unwrap().to_string(), + vault_a: accounts.get(6).unwrap().to_string(), + vault_b: accounts.get(7).unwrap().to_string(), + ..Default::default() + }); + } + SWAP_BASE_OUTPUT_PARTNER_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"), + name: String::from("SwapBaseOutput"), + amm: accounts.get(3).unwrap().to_string(), + vault_a: accounts.get(6).unwrap().to_string(), + vault_b: accounts.get(7).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh.rs b/dex-trades-wasm-only/src/dapps/dapp_CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh.rs new file mode 100644 index 0000000..2eef0af --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4.rs b/dex-trades-wasm-only/src/dapps/dapp_CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4.rs new file mode 100644 index 0000000..e7c2f35 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4"), + name: String::from("Swap"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag.rs b/dex-trades-wasm-only/src/dapps/dapp_D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag.rs new file mode 100644 index 0000000..d0572c1 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(8).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm.rs b/dex-trades-wasm-only/src/dapps/dapp_DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm.rs new file mode 100644 index 0000000..58df40e --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm.rs @@ -0,0 +1,31 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_EXACT_AMOUNT_IN_DISCRIMINATOR: u64 = + u64::from_le_bytes([8, 151, 245, 76, 172, 203, 144, 39]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_EXACT_AMOUNT_IN_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm"), + name: String::from("SwapExactAmountIn"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1.rs b/dex-trades-wasm-only/src/dapps/dapp_DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1.rs new file mode 100644 index 0000000..7da1481 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j.rs b/dex-trades-wasm-only/src/dapps/dapp_Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j.rs new file mode 100644 index 0000000..800c880 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S.rs b/dex-trades-wasm-only/src/dapps/dapp_EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S.rs new file mode 100644 index 0000000..0de6579 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB.rs b/dex-trades-wasm-only/src/dapps/dapp_Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB.rs new file mode 100644 index 0000000..f4b5cdd --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB.rs @@ -0,0 +1,31 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_WITH_PARTNER_DISCRIMINATOR: u64 = + u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_WITH_PARTNER_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X.rs b/dex-trades-wasm-only/src/dapps/dapp_FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X.rs new file mode 100644 index 0000000..fa2cd15 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn.rs b/dex-trades-wasm-only/src/dapps/dapp_GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn.rs new file mode 100644 index 0000000..6abe4a1 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn.rs @@ -0,0 +1,116 @@ +use crate::{ + pb::sf::solana::transactions::v1::InnerInstruction, trade_instruction::TradeInstruction, +}; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +fn parse_vault_a( + user_ata_in: String, + input_accounts: &Vec, + accounts: &Vec, + inner_instructions: &Vec, +) -> String { + let mut result: String = String::new(); + + inner_instructions.iter().for_each(|inner_instruction| { + let inner_program = inner_instruction.executing_account.clone(); + if inner_program + .as_str() + .eq("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") + { + let b58_data = bs58::decode(inner_instruction.data.clone()) + .into_vec() + .unwrap(); + let (discriminator_bytes, rest) = b58_data.split_at(1); + let discriminator: u8 = u8::from(discriminator_bytes[0]); + match discriminator { + 3 => { + let _source = input_accounts.get(0).unwrap().to_string(); + let _destination = input_accounts.get(1).unwrap().to_string(); + + if user_ata_in.as_str().eq(_source.as_str()) { + if result.is_empty() { + result = _destination; + } + } + } + _ => {} + } + } + }); + result +} + +fn parse_vault_b( + user_ata_out: String, + input_accounts: &Vec, + accounts: &Vec, + inner_instructions: &Vec, +) -> String { + let mut result: String = String::new(); + + inner_instructions.iter().for_each(|inner_instruction| { + let inner_program = inner_instruction.executing_account.clone(); + if inner_program + .as_str() + .eq("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") + { + let b58_data = bs58::decode(inner_instruction.data.clone()) + .into_vec() + .unwrap(); + let (discriminator_bytes, rest) = b58_data.split_at(1); + let discriminator: u8 = u8::from(discriminator_bytes[0]); + match discriminator { + 3 => { + let _source = input_accounts.get(0).unwrap().to_string(); + let _destination = input_accounts.get(1).unwrap().to_string(); + + if user_ata_out.as_str().eq(_destination.as_str()) { + if result.is_empty() { + result = _source; + } + } + } + _ => {} + } + } + }); + result +} + +pub fn parse_trade_instruction( + bytes_stream: Vec, + input_accounts: Vec, + inner_instructions: &Vec, + accounts: &Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + let user_ata_in = input_accounts.get(5).unwrap().to_string(); + let user_ata_out = input_accounts.get(6).unwrap().to_string(); + + let vault_a: String = + parse_vault_a(user_ata_in, &input_accounts, &accounts, inner_instructions); + let vault_b: String = + parse_vault_b(user_ata_out, &input_accounts, &accounts, inner_instructions); + + result = Some(TradeInstruction { + dapp_address: String::from("GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn"), + name: String::from("Swap"), + amm: input_accounts.get(0).unwrap().to_string(), + vault_a: vault_a, + vault_b: vault_b, + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt.rs b/dex-trades-wasm-only/src/dapps/dapp_H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt.rs new file mode 100644 index 0000000..77fc778 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt"), + name: String::from("Swap"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt.rs b/dex-trades-wasm-only/src/dapps/dapp_HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt.rs new file mode 100644 index 0000000..1993f89 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + input_accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt"), + name: String::from("Swap"), + amm: input_accounts.get(1).unwrap().to_string(), + vault_a: input_accounts.get(5).unwrap().to_string(), + vault_b: input_accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.rs b/dex-trades-wasm-only/src/dapps/dapp_LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.rs new file mode 100644 index 0000000..07e0c5a --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.rs @@ -0,0 +1,53 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); +const SWAP_EXACT_OUT_DISCRIMINATOR: u64 = u64::from_le_bytes([250, 73, 101, 33, 38, 207, 75, 184]); +const SWAP_WITH_PRICE_IMPACT_DISCRIMINATOR: u64 = + u64::from_le_bytes([56, 173, 230, 208, 173, 228, 156, 205]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + input_accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"), + name: String::from("Swap"), + amm: input_accounts.get(0).unwrap().to_string(), + vault_a: input_accounts.get(2).unwrap().to_string(), + vault_b: input_accounts.get(3).unwrap().to_string(), + ..Default::default() + }); + } + SWAP_EXACT_OUT_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"), + name: String::from("SwapExactOut"), + amm: input_accounts.get(0).unwrap().to_string(), + vault_a: input_accounts.get(2).unwrap().to_string(), + vault_b: input_accounts.get(3).unwrap().to_string(), + ..Default::default() + }); + } + SWAP_WITH_PRICE_IMPACT_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"), + name: String::from("SwapWithPriceImpact"), + amm: input_accounts.get(0).unwrap().to_string(), + vault_a: input_accounts.get(2).unwrap().to_string(), + vault_b: input_accounts.get(3).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP.rs b/dex-trades-wasm-only/src/dapps/dapp_PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP.rs new file mode 100644 index 0000000..2fbf52c --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY.rs b/dex-trades-wasm-only/src/dapps/dapp_PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY.rs new file mode 100644 index 0000000..3ce092f --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 0 => { + result = Some(TradeInstruction { + dapp_address: String::from("PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY"), + name: String::from("Swap"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(6).unwrap().to_string(), + vault_b: accounts.get(7).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ.rs b/dex-trades-wasm-only/src/dapps/dapp_SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ.rs new file mode 100644 index 0000000..78b1ac6 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(7).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr.rs b/dex-trades-wasm-only/src/dapps/dapp_SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr.rs new file mode 100644 index 0000000..84b74cd --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1.rs b/dex-trades-wasm-only/src/dapps/dapp_SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1.rs new file mode 100644 index 0000000..6f6410c --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ.rs b/dex-trades-wasm-only/src/dapps/dapp_SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ.rs new file mode 100644 index 0000000..db868c9 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ.rs @@ -0,0 +1,27 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + let mut result = None; + + match discriminator { + 1 => { + result = Some(TradeInstruction { + dapp_address: String::from("SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(5).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe.rs b/dex-trades-wasm-only/src/dapps/dapp_SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe.rs new file mode 100644 index 0000000..54c1a44 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe.rs @@ -0,0 +1,34 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u8 = 7; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let mut result = None; + + if bytes_stream.len() < 8 { + return result; + } + + let (disc_bytes, rest) = bytes_stream.split_at(1); + let disc_bytes_arr: [u8; 1] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u8 = u8::from_le_bytes(disc_bytes_arr); + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe"), + name: String::from("Swap"), + amm: accounts.get(1).unwrap().to_string(), + vault_a: accounts.get(2).unwrap().to_string(), + vault_b: accounts.get(3).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8.rs b/dex-trades-wasm-only/src/dapps/dapp_cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8.rs new file mode 100644 index 0000000..fee2d7d --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([23, 113, 90, 161, 237, 143, 153, 13]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8"), + name: String::from("ExactInputSingle"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph.rs b/dex-trades-wasm-only/src/dapps/dapp_dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph.rs new file mode 100644 index 0000000..dac9f2d --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const CREATE_ORDER_DISCRIMINATOR: u64 = u64::from_le_bytes([141, 54, 37, 207, 237, 210, 250, 215]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + CREATE_ORDER_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph"), + name: String::from("CreateOrder"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(7).unwrap().to_string(), + vault_b: accounts.get(8).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y.rs b/dex-trades-wasm-only/src/dapps/dapp_obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y.rs new file mode 100644 index 0000000..de3d02e --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y"), + name: String::from("Swap"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb.rs b/dex-trades-wasm-only/src/dapps/dapp_opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb.rs new file mode 100644 index 0000000..2d94be4 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const PLACE_TAKE_ORDER_DISCRIMINATOR: u64 = u64::from_le_bytes([3, 44, 71, 3, 26, 199, 203, 85]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + PLACE_TAKE_ORDER_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb"), + name: String::from("PlaceTakeOrder"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(6).unwrap().to_string(), + vault_b: accounts.get(7).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX.rs b/dex-trades-wasm-only/src/dapps/dapp_srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX.rs new file mode 100644 index 0000000..336af4d --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX.rs @@ -0,0 +1,28 @@ +use crate::trade_instruction::TradeInstruction; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(2); + let disc_bytes_arr: [u8; 2] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u16 = u16::from_be_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + 10 => { + result = Some(TradeInstruction { + dapp_address: String::from("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"), + name: String::from("Serum3PlaceOrder"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(8).unwrap().to_string(), + vault_b: accounts.get(9).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ.rs b/dex-trades-wasm-only/src/dapps/dapp_swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ.rs new file mode 100644 index 0000000..b15ca1e --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ.rs @@ -0,0 +1,30 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = u64::from_le_bytes([248, 198, 158, 145, 225, 117, 135, 200]); + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ"), + name: String::from("Swap"), + amm: accounts.get(6).unwrap().to_string(), + vault_a: accounts.get(3).unwrap().to_string(), + vault_b: accounts.get(4).unwrap().to_string(), + ..Default::default() + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/dapp_whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc.rs b/dex-trades-wasm-only/src/dapps/dapp_whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc.rs new file mode 100644 index 0000000..fbae319 --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/dapp_whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc.rs @@ -0,0 +1,67 @@ +use crate::trade_instruction::TradeInstruction; + +const SWAP_DISCRIMINATOR: u64 = 14449647541112719096; +const SWAP_V2_DISCRIMINATOR: u64 = 7070309578724672555; +const TWO_HOP_SWAP_DISCRIMINATOR: u64 = 16635068063392030915; +const TWO_HOP_SWAP_V2_DISCRIMINATOR: u64 = 8485347938364657594; + +pub fn parse_trade_instruction( + bytes_stream: Vec, + accounts: Vec, +) -> Option { + let (disc_bytes, rest) = bytes_stream.split_at(8); + let disc_bytes_arr: [u8; 8] = disc_bytes.to_vec().try_into().unwrap(); + let discriminator: u64 = u64::from_le_bytes(disc_bytes_arr); + + let mut result = None; + + match discriminator { + SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"), + name: String::from("Swap"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(4).unwrap().to_string(), + vault_b: accounts.get(6).unwrap().to_string(), + ..Default::default() + }); + } + SWAP_V2_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"), + name: String::from("SwapV2"), + amm: accounts.get(4).unwrap().to_string(), + vault_a: accounts.get(8).unwrap().to_string(), + vault_b: accounts.get(10).unwrap().to_string(), + ..Default::default() + }); + } + TWO_HOP_SWAP_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"), + name: String::from("TwoHopSwap"), + amm: accounts.get(2).unwrap().to_string(), + vault_a: accounts.get(5).unwrap().to_string(), + vault_b: accounts.get(7).unwrap().to_string(), + second_swap_amm: Some(accounts.get(3).unwrap().to_string()), + second_swap_vault_a: Some(accounts.get(9).unwrap().to_string()), + second_swap_vault_b: Some(accounts.get(11).unwrap().to_string()), + }); + } + TWO_HOP_SWAP_V2_DISCRIMINATOR => { + result = Some(TradeInstruction { + dapp_address: String::from("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"), + name: String::from("TwoHopSwapV2"), + amm: accounts.get(0).unwrap().to_string(), + vault_a: accounts.get(9).unwrap().to_string(), + vault_b: accounts.get(10).unwrap().to_string(), + second_swap_amm: Some(accounts.get(1).unwrap().to_string()), + second_swap_vault_a: Some(accounts.get(11).unwrap().to_string()), + second_swap_vault_b: Some(accounts.get(12).unwrap().to_string()), + }); + } + _ => {} + } + + return result; +} diff --git a/dex-trades-wasm-only/src/dapps/mod.rs b/dex-trades-wasm-only/src/dapps/mod.rs new file mode 100644 index 0000000..a1b9bcf --- /dev/null +++ b/dex-trades-wasm-only/src/dapps/mod.rs @@ -0,0 +1,42 @@ +pub mod dapp_27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv; +pub mod dapp_2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr; +pub mod dapp_2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c; +pub mod dapp_675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8; +pub mod dapp_6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P; +pub mod dapp_6MLxLqiXaaSUpkgMnWDTuejNZEz3kE7k2woyHGVFw319; +pub mod dapp_7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5; +pub mod dapp_9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP; +pub mod dapp_9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H; +pub mod dapp_9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin; +pub mod dapp_AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6; +pub mod dapp_BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p; +pub mod dapp_CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK; +pub mod dapp_CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR; +pub mod dapp_CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C; +pub mod dapp_CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh; +pub mod dapp_CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4; +pub mod dapp_D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag; +pub mod dapp_DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm; +pub mod dapp_DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1; +pub mod dapp_Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j; +pub mod dapp_EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S; +pub mod dapp_Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB; +pub mod dapp_FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X; +pub mod dapp_GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn; +pub mod dapp_H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt; +pub mod dapp_HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt; +pub mod dapp_LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo; +pub mod dapp_PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP; +pub mod dapp_PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY; +pub mod dapp_SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ; +pub mod dapp_SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr; +pub mod dapp_SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1; +pub mod dapp_SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ; +pub mod dapp_SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe; +pub mod dapp_cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8; +pub mod dapp_dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph; +pub mod dapp_obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y; +pub mod dapp_opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb; +pub mod dapp_srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX; +pub mod dapp_swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ; +pub mod dapp_whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc; diff --git a/dex-trades-wasm-only/src/lib.rs b/dex-trades-wasm-only/src/lib.rs new file mode 100644 index 0000000..28c1fca --- /dev/null +++ b/dex-trades-wasm-only/src/lib.rs @@ -0,0 +1,684 @@ +#![allow(dead_code)] +#![allow(unused_variables)] +#![allow(non_snake_case)] + +mod dapps; +mod pb; +mod utils; + +use pb::sf::solana::transactions::v1::InnerInstruction; +use pb::sf::solana::transactions::v1::TokenBalance; +use pb::sf::solana::transactions::v1::TransactionStat; +use serde::Serialize; +use substreams_solana::pb::sf::solana::r#type::v1::InnerInstructions; +use utils::get_amt; +use utils::get_mint; +mod trade_instruction; + +use serde_wasm_bindgen; +use wasm_bindgen::prelude::*; + +#[derive(Serialize, Default)] +pub struct TradeData { + pub block_slot: u64, + pub block_date: String, + pub block_time: i64, + pub tx_id: String, + pub signer: String, + pub pool_address: String, + pub base_mint: String, + pub quote_mint: String, + pub base_vault: String, + pub quote_vault: String, + pub base_amount: f64, + pub quote_amount: f64, + pub is_inner_instruction: bool, + pub instruction_index: u32, + pub instruction_type: String, + pub inner_instruction_index: u32, + pub outer_program: String, + pub inner_program: String, + pub txn_fee_lamports: u64, + pub signer_lamports_change: i64, + pub error: String, +} + +#[wasm_bindgen] +pub fn parse(transaction: &JsValue) -> JsValue { + let data = parse_transaction(transaction); + serde_wasm_bindgen::to_value(&data).unwrap() +} + +fn parse_transaction(transaction_js: &JsValue) -> Vec { + let mut result: Vec = vec![]; + + let transaction_stat: TransactionStat = match transaction_js.into_serde() { + Ok(tx) => tx, + Err(err) => { + let mut err_trade_data = TradeData::default(); + err_trade_data.error = format!("Error deserializing: {err}"); + result.push(err_trade_data); + return result; + } + }; + + let accounts = transaction_stat.account_keys.clone(); + let pre_balances = transaction_stat.pre_balances.clone(); + let post_balances = transaction_stat.post_balances.clone(); + let pre_token_balances = transaction_stat + .pre_token_balances + .clone() + .unwrap_or_default(); + let post_token_balances = transaction_stat + .post_token_balances + .clone() + .unwrap_or_default(); + + for (idx, inst) in transaction_stat + .instructions + .clone() + .into_iter() + .enumerate() + { + let inner_instructions = inst.inner_instructions.unwrap_or_default(); + let program = inst.executing_account; + + let trade_instruction = get_trade_instruction( + &program, + bs58::decode(inst.data.clone()).into_vec().unwrap(), + inst.account_arguments, + accounts.clone(), + &pre_token_balances, + &post_token_balances, + &"".to_string(), + false, + &inner_instructions, + 0 as u32, + ); + + if trade_instruction.is_some() { + let ti = trade_instruction.unwrap(); + let mut trade_data = default_trade_data(&transaction_stat); + trade_data.pool_address = ti.amm; + trade_data.base_mint = get_mint( + &ti.vault_a, + &post_token_balances, + &accounts, + ti.dapp_address.clone(), + ); + trade_data.quote_mint = + get_mint(&ti.vault_b, &post_token_balances, &accounts, "".to_string()); + trade_data.base_vault = ti.vault_a.clone(); + trade_data.quote_vault = ti.vault_b.clone(); + trade_data.base_amount = get_amt( + &ti.vault_a.clone(), + 0 as u32, + &inner_instructions, + &accounts, + &post_token_balances, + ti.dapp_address.clone(), + pre_balances.clone(), + post_balances.clone(), + ); + + trade_data.quote_amount = get_amt( + &ti.vault_b.clone(), + 0 as u32, + &inner_instructions, + &accounts, + &post_token_balances, + "".to_string(), + pre_balances.clone(), + post_balances.clone(), + ); + trade_data.is_inner_instruction = false; + trade_data.instruction_index = idx as u32; + trade_data.instruction_type = ti.name.clone(); + trade_data.inner_instruction_index = 0; + trade_data.outer_program = ti.dapp_address.clone(); + trade_data.inner_program = "".to_string(); + result.push(trade_data); + + if ti.second_swap_amm.clone().unwrap_or_default() != "" { + let mut trade_data = default_trade_data(&transaction_stat); + trade_data.pool_address = ti.second_swap_amm.unwrap(); + trade_data.base_mint = get_mint( + &ti.second_swap_vault_a.clone().unwrap(), + &post_token_balances, + &accounts, + "".to_string(), + ); + trade_data.quote_mint = get_mint( + &ti.second_swap_vault_b.clone().unwrap(), + &post_token_balances, + &accounts, + "".to_string(), + ); + trade_data.base_vault = ti.second_swap_vault_a.clone().unwrap(); + trade_data.quote_vault = ti.second_swap_vault_b.clone().unwrap(); + trade_data.base_amount = get_amt( + &ti.second_swap_vault_a.clone().unwrap(), + 0 as u32, + &inner_instructions, + &accounts, + &post_token_balances, + "".to_string(), + pre_balances.clone(), + post_balances.clone(), + ); + trade_data.quote_amount = get_amt( + &ti.second_swap_vault_b.clone().unwrap(), + 0 as u32, + &inner_instructions, + &accounts, + &post_token_balances, + "".to_string(), + pre_balances.clone(), + post_balances.clone(), + ); + trade_data.is_inner_instruction = false; + trade_data.instruction_index = idx as u32; + trade_data.instruction_type = ti.name.clone(); + trade_data.inner_instruction_index = 0; + trade_data.outer_program = ti.dapp_address.clone(); + trade_data.inner_program = "".to_string(); + result.push(trade_data); + } + } + + inner_instructions + .iter() + .enumerate() + .for_each(|(inner_idx, inner_inst)| { + let inner_program = inner_inst.executing_account.clone(); + let inner_trade_instruction = get_trade_instruction( + &inner_program, + bs58::decode(inner_inst.data.clone()).into_vec().unwrap(), + inner_inst.account_arguments.clone(), + accounts.clone(), + &pre_token_balances, + &post_token_balances, + &program, + true, + &inner_instructions, + inner_idx as u32, + ); + + if inner_trade_instruction.is_some() { + let inner_ti = inner_trade_instruction.unwrap(); + let mut inner_trade_data = default_trade_data(&transaction_stat); + inner_trade_data.pool_address = inner_ti.amm; + inner_trade_data.base_mint = get_mint( + &inner_ti.vault_a, + &post_token_balances, + &accounts, + inner_ti.dapp_address.clone(), + ); + inner_trade_data.quote_mint = get_mint( + &inner_ti.vault_b, + &post_token_balances, + &accounts, + "".to_string(), + ); + inner_trade_data.base_vault = inner_ti.vault_a.clone(); + inner_trade_data.quote_vault = inner_ti.vault_b.clone(); + inner_trade_data.base_amount = get_amt( + &inner_ti.vault_a.clone(), + 0 as u32, + &inner_instructions, + &accounts, + &post_token_balances, + inner_ti.dapp_address.clone(), + pre_balances.clone(), + post_balances.clone(), + ); + inner_trade_data.quote_amount = get_amt( + &inner_ti.vault_b.clone(), + 0 as u32, + &inner_instructions, + &accounts, + &post_token_balances, + "".to_string(), + pre_balances.clone(), + post_balances.clone(), + ); + inner_trade_data.is_inner_instruction = true; + inner_trade_data.instruction_index = idx as u32; + inner_trade_data.instruction_type = inner_ti.name.clone(); + inner_trade_data.inner_instruction_index = inner_idx as u32; + inner_trade_data.outer_program = program.to_string(); + inner_trade_data.inner_program = inner_ti.dapp_address.clone(); + result.push(inner_trade_data); + + if inner_ti.second_swap_amm.clone().unwrap_or_default() != "" { + let mut inner_trade_data = default_trade_data(&transaction_stat); + inner_trade_data.pool_address = inner_ti.second_swap_amm.unwrap(); + inner_trade_data.base_mint = get_mint( + &inner_ti.second_swap_vault_a.clone().unwrap(), + &post_token_balances, + &accounts, + "".to_string(), + ); + inner_trade_data.quote_mint = get_mint( + &inner_ti.second_swap_vault_b.clone().unwrap(), + &post_token_balances, + &accounts, + "".to_string(), + ); + inner_trade_data.base_vault = inner_ti.second_swap_vault_a.clone().unwrap(); + inner_trade_data.quote_vault = + inner_ti.second_swap_vault_b.clone().unwrap(); + inner_trade_data.base_amount = get_amt( + &inner_ti.second_swap_vault_a.clone().unwrap(), + inner_idx as u32, + &inner_instructions, + &accounts, + &post_token_balances, + "".to_string(), + pre_balances.clone(), + post_balances.clone(), + ); + inner_trade_data.quote_amount = get_amt( + &inner_ti.second_swap_vault_b.clone().unwrap(), + inner_idx as u32, + &inner_instructions, + &accounts, + &post_token_balances, + "".to_string(), + pre_balances.clone(), + post_balances.clone(), + ); + inner_trade_data.is_inner_instruction = true; + inner_trade_data.instruction_index = idx as u32; + inner_trade_data.instruction_type = inner_ti.name.clone(); + inner_trade_data.inner_instruction_index = inner_idx as u32; + inner_trade_data.outer_program = inner_ti.dapp_address.clone(); + inner_trade_data.inner_program = inner_ti.dapp_address.clone(); + result.push(inner_trade_data); + } + } + }); + } + result +} + +fn get_trade_instruction( + dapp_address: &String, + instruction_data: Vec, + input_accounts: Vec, + all_accounts: Vec, + pre_token_balances: &Vec, + post_token_balances: &Vec, + outer_program: &String, + is_inner: bool, + inner_instructions: &Vec, + input_inner_idx: u32, +) -> Option { + let mut result = None; + match dapp_address.as_str() { + "CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR" => { + result = + dapps::dapp_CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j" => { + result = + dapps::dapp_Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB" => { + result = + dapps::dapp_Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY" => { + result = + dapps::dapp_PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr" => { + result = + dapps::dapp_SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX" => { + let jupiter_dapps = vec![ + "JUP2jxvXaqu7NQY1GmNF4m1vodw12LVXYxbFL2uJvfo".to_string(), + "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB".to_string(), + "JUP3c2Uh3WA4Ng34tw6kPd2G4C5BB21Xo36Je1s32Ph".to_string(), + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4".to_string(), + "JUP6i4ozu5ydDCnLiMogSckDPpbtr7BJ4FtzYWkb5Rk".to_string(), + "JUP5cHjnnCx2DppVsufsLrXs8EBZeEZzGtEK9Gdz6ow".to_string(), + "JUP5pEAZeHdHrLxh5UCwAbpjGwYKKoquCpda2hfP4u8".to_string(), + ]; + + if is_inner & jupiter_dapps.contains(outer_program) { + result = + dapps::dapp_srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + } + "HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt" => { + result = + dapps::dapp_HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc" => { + result = + dapps::dapp_whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S" => { + result = + dapps::dapp_EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c" => { + result = + dapps::dapp_2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ" => { + result = + dapps::dapp_SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK" => { + result = + dapps::dapp_CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP" => { + result = + dapps::dapp_9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6" => { + result = + dapps::dapp_AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4" => { + result = + dapps::dapp_CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8" => { + result = + dapps::dapp_cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5" => { + result = + dapps::dapp_7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin" => { + let jupiter_dapps = vec![ + "JUP2jxvXaqu7NQY1GmNF4m1vodw12LVXYxbFL2uJvfo".to_string(), + "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB".to_string(), + "JUP3c2Uh3WA4Ng34tw6kPd2G4C5BB21Xo36Je1s32Ph".to_string(), + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4".to_string(), + "JUP6i4ozu5ydDCnLiMogSckDPpbtr7BJ4FtzYWkb5Rk".to_string(), + "JUP5cHjnnCx2DppVsufsLrXs8EBZeEZzGtEK9Gdz6ow".to_string(), + "JUP5pEAZeHdHrLxh5UCwAbpjGwYKKoquCpda2hfP4u8".to_string(), + ]; + + if is_inner & jupiter_dapps.contains(outer_program) { + result = + dapps::dapp_9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + } + "GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn" => { + result = + dapps::dapp_GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn::parse_trade_instruction( + instruction_data, + input_accounts, + inner_instructions, + &all_accounts, + ); + } + "SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1" => { + result = + dapps::dapp_SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ" => { + result = + dapps::dapp_SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph" => { + result = + dapps::dapp_dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh" => { + result = + dapps::dapp_CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP" => { + result = + dapps::dapp_PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag" => { + result = + dapps::dapp_D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr" => { + result = + dapps::dapp_2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" => { + result = + dapps::dapp_675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8::parse_trade_instruction( + instruction_data, + input_accounts, + &post_token_balances, + &all_accounts, + ); + } + "27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv" => { + result = + dapps::dapp_27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv::parse_trade_instruction( + instruction_data, + input_accounts, + &post_token_balances, + &all_accounts, + ); + } + "BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p" => { + result = + dapps::dapp_BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X" => { + result = + dapps::dapp_FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H" => { + result = + dapps::dapp_9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1" => { + result = + dapps::dapp_DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "6MLxLqiXaaSUpkgMnWDTuejNZEz3kE7k2woyHGVFw319" => { + result = + dapps::dapp_6MLxLqiXaaSUpkgMnWDTuejNZEz3kE7k2woyHGVFw319::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo" => { + result = + dapps::dapp_LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C" => { + result = + dapps::dapp_CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb" => { + let jupiter_dapps = vec![ + "JUP2jxvXaqu7NQY1GmNF4m1vodw12LVXYxbFL2uJvfo".to_string(), + "JUP3c2Uh3WA4Ng34tw6kPd2G4C5BB21Xo36Je1s32Ph".to_string(), + "JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB".to_string(), + "JUP5cHjnnCx2DppVsufsLrXs8EBZeEZzGtEK9Gdz6ow".to_string(), + "JUP5pEAZeHdHrLxh5UCwAbpjGwYKKoquCpda2hfP4u8".to_string(), + "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4".to_string(), + "JUP6i4ozu5ydDCnLiMogSckDPpbtr7BJ4FtzYWkb5Rk".to_string(), + ]; + + if is_inner & jupiter_dapps.contains(outer_program) { + result = + dapps::dapp_opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + } + "DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm" => { + result = + dapps::dapp_DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt" => { + result = + dapps::dapp_H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y" => { + result = + dapps::dapp_obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe" => { + result = + dapps::dapp_SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ" => { + result = + dapps::dapp_swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" => { + result = + dapps::dapp_6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P::parse_trade_instruction( + instruction_data, + input_accounts, + ); + } + _ => {} + } + + return result; +} + +fn get_signer_balance_change(pre_balances: &Vec, post_balances: &Vec) -> i64 { + if let (Some(&pre_signer), Some(&post_signer)) = (pre_balances.get(0), post_balances.get(0)) { + (post_signer as i64) - (pre_signer as i64) + } else { + 0 + } +} + +fn default_trade_data(transaction_stat: &TransactionStat) -> TradeData { + let mut trade_data = TradeData::default(); + let _transaction_stat = transaction_stat.clone(); + trade_data.tx_id = _transaction_stat.id.clone(); + trade_data.block_slot = _transaction_stat.block_slot as u64; + trade_data.block_date = _transaction_stat.block_date.clone().unwrap_or_default(); + trade_data.block_time = _transaction_stat.block_time as i64; + trade_data.signer = _transaction_stat.signer.clone(); + trade_data.txn_fee_lamports = _transaction_stat.fees; + trade_data.signer_lamports_change = get_signer_balance_change( + &_transaction_stat.pre_balances, + &_transaction_stat.post_balances, + ); + trade_data.error = "".to_string(); + trade_data +} diff --git a/dex-trades-wasm-only/src/output/output.proto b/dex-trades-wasm-only/src/output/output.proto new file mode 100644 index 0000000..32dcb76 --- /dev/null +++ b/dex-trades-wasm-only/src/output/output.proto @@ -0,0 +1,57 @@ +syntax = "proto2"; + +package sf.solana.transactions.v1; + +message TransactionStats { + required uint32 block_slot = 1; + required string block_date = 2; + required uint64 block_time = 3; + required uint32 index = 4; + required uint32 required_signatures = 5; + required uint32 readonly_signed_accounts = 6; + required uint32 readonly_unsigned_accounts = 7; + required string id = 8; + required uint64 fees = 9; + repeated string account_keys= 10; + repeated Instruction instructions = 11; + repeated uint64 pre_balances = 12; + repeated uint64 post_balances = 13; + repeated TokenBalance pre_token_balances = 14; + repeated TokenBalance post_token_balances = 15; + repeated string signatures = 16; + required string signer = 17; + required string version = 18; + repeated string executing_accounts = 19; + required bool logs_truncated = 20; + repeated string log_messages = 21; + required uint64 compute_units_consumed = 22; + required ReturnData return_data=23; +} + + +message Instruction { + required string executing_account = 1; + repeated string account_arguments = 2; + required string data = 3; + repeated InnerInstruction inner_instructions = 4; +} + +message InnerInstruction { + required string executing_account = 1; + repeated string account_arguments = 2; + required string data = 3; + required uint32 stack_height = 4; +} + +message TokenBalance { + required string account = 1; + required double amount = 2; + required string mint = 3; + required string owner = 4; + required string program = 5; +} + +message ReturnData { + required string program_id = 1; + required string data = 2; +} \ No newline at end of file diff --git a/dex-trades-wasm-only/src/pb/mod.rs b/dex-trades-wasm-only/src/pb/mod.rs new file mode 100644 index 0000000..228e4fe --- /dev/null +++ b/dex-trades-wasm-only/src/pb/mod.rs @@ -0,0 +1,35 @@ +// @generated +pub mod sf { + pub mod solana { + pub mod r#type { + // @@protoc_insertion_point(attribute:sf.solana.type.v1) + pub mod v1 { + include!("sf.solana.type.v1.rs"); + // @@protoc_insertion_point(sf.solana.type.v1) + } + } + pub mod transactions { + // @@protoc_insertion_point(attribute:sf.solana.transactions.v1) + pub mod v1 { + include!("sf.solana.transactions.v1.rs"); + // @@protoc_insertion_point(sf.solana.transactions.v1) + } + } + } +} +pub mod sol { + pub mod instructions { + // @@protoc_insertion_point(attribute:sol.instructions.v1) + pub mod v1 { + include!("sol.instructions.v1.rs"); + // @@protoc_insertion_point(sol.instructions.v1) + } + } + pub mod transactions { + // @@protoc_insertion_point(attribute:sol.transactions.v1) + pub mod v1 { + include!("sol.transactions.v1.rs"); + // @@protoc_insertion_point(sol.transactions.v1) + } + } +} diff --git a/dex-trades-wasm-only/src/pb/sf.solana.transactions.v1.rs b/dex-trades-wasm-only/src/pb/sf.solana.transactions.v1.rs new file mode 100644 index 0000000..820dcd4 --- /dev/null +++ b/dex-trades-wasm-only/src/pb/sf.solana.transactions.v1.rs @@ -0,0 +1,64 @@ +use serde::Deserialize; + +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, Deserialize)] +pub struct TransactionStat { + pub block_slot: u32, + pub block_date: Option, + pub block_time: u64, + pub index: Option, + pub required_signatures: u32, + pub readonly_signed_accounts: u32, + pub readonly_unsigned_accounts: u32, + pub id: String, + pub fees: u64, + pub account_keys: Vec, + pub instructions: Vec, + pub pre_balances: Vec, + pub post_balances: Vec, + pub pre_token_balances: Option>, + pub post_token_balances: Option>, + pub signatures: Vec, + pub signer: String, + pub version: String, + pub executing_accounts: Vec, + pub logs_truncated: bool, + pub log_messages: Vec, + pub compute_units_consumed: Option, + pub return_data: Option, +} + +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, Deserialize)] +pub struct Instruction { + pub executing_account: String, + pub account_arguments: Vec, + pub data: String, + pub inner_instructions: Option>, +} + +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, Deserialize)] +pub struct InnerInstruction { + pub executing_account: String, + pub account_arguments: Vec, + pub data: String, + pub stack_height: Option, +} + +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, Deserialize)] +pub struct TokenBalance { + pub account: String, + pub amount: f64, + pub mint: String, + pub owner: String, + pub program: String, +} + +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, Deserialize)] +pub struct ReturnData { + pub program_id: String, + pub data: String, +} diff --git a/dex-trades-wasm-only/src/pb/sf.solana.type.v1.rs b/dex-trades-wasm-only/src/pb/sf.solana.type.v1.rs new file mode 100644 index 0000000..3f078a0 --- /dev/null +++ b/dex-trades-wasm-only/src/pb/sf.solana.type.v1.rs @@ -0,0 +1,256 @@ +// @generated +/// This Block is backwards compatible with solana.storage.ConfirmedBlock.ConfirmedBlock from +/// the Solana Labs repositories. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Block { + #[prost(string, tag="1")] + pub previous_blockhash: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub blockhash: ::prost::alloc::string::String, + #[prost(uint64, tag="3")] + pub parent_slot: u64, + #[prost(message, repeated, tag="4")] + pub transactions: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="5")] + pub rewards: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag="6")] + pub block_time: ::core::option::Option, + #[prost(message, optional, tag="7")] + pub block_height: ::core::option::Option, + /// StreamingFast additions + #[prost(uint64, tag="20")] + pub slot: u64, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ConfirmedTransaction { + #[prost(message, optional, tag="1")] + pub transaction: ::core::option::Option, + #[prost(message, optional, tag="2")] + pub meta: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Transaction { + #[prost(bytes="vec", repeated, tag="1")] + pub signatures: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, + #[prost(message, optional, tag="2")] + pub message: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Message { + #[prost(message, optional, tag="1")] + pub header: ::core::option::Option, + #[prost(bytes="vec", repeated, tag="2")] + pub account_keys: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, + #[prost(bytes="vec", tag="3")] + pub recent_blockhash: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="4")] + pub instructions: ::prost::alloc::vec::Vec, + #[prost(bool, tag="5")] + pub versioned: bool, + #[prost(message, repeated, tag="6")] + pub address_table_lookups: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MessageHeader { + #[prost(uint32, tag="1")] + pub num_required_signatures: u32, + #[prost(uint32, tag="2")] + pub num_readonly_signed_accounts: u32, + #[prost(uint32, tag="3")] + pub num_readonly_unsigned_accounts: u32, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct MessageAddressTableLookup { + #[prost(bytes="vec", tag="1")] + pub account_key: ::prost::alloc::vec::Vec, + #[prost(bytes="vec", tag="2")] + pub writable_indexes: ::prost::alloc::vec::Vec, + #[prost(bytes="vec", tag="3")] + pub readonly_indexes: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TransactionStatusMeta { + #[prost(message, optional, tag="1")] + pub err: ::core::option::Option, + #[prost(uint64, tag="2")] + pub fee: u64, + #[prost(uint64, repeated, tag="3")] + pub pre_balances: ::prost::alloc::vec::Vec, + #[prost(uint64, repeated, tag="4")] + pub post_balances: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="5")] + pub inner_instructions: ::prost::alloc::vec::Vec, + #[prost(bool, tag="10")] + pub inner_instructions_none: bool, + #[prost(string, repeated, tag="6")] + pub log_messages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(bool, tag="11")] + pub log_messages_none: bool, + #[prost(message, repeated, tag="7")] + pub pre_token_balances: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="8")] + pub post_token_balances: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="9")] + pub rewards: ::prost::alloc::vec::Vec, + #[prost(bytes="vec", repeated, tag="12")] + pub loaded_writable_addresses: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, + #[prost(bytes="vec", repeated, tag="13")] + pub loaded_readonly_addresses: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, + #[prost(message, optional, tag="14")] + pub return_data: ::core::option::Option, + #[prost(bool, tag="15")] + pub return_data_none: bool, + /// Sum of compute units consumed by all instructions. + /// Available since Solana v1.10.35 / v1.11.6. + /// Set to `None` for txs executed on earlier versions. + #[prost(uint64, optional, tag="16")] + pub compute_units_consumed: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TransactionError { + #[prost(bytes="vec", tag="1")] + pub err: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct InnerInstructions { + #[prost(uint32, tag="1")] + pub index: u32, + #[prost(message, repeated, tag="2")] + pub instructions: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct InnerInstruction { + #[prost(uint32, tag="1")] + pub program_id_index: u32, + #[prost(bytes="vec", tag="2")] + pub accounts: ::prost::alloc::vec::Vec, + #[prost(bytes="vec", tag="3")] + pub data: ::prost::alloc::vec::Vec, + /// Invocation stack height of an inner instruction. + /// Available since Solana v1.14.6 + /// Set to `None` for txs executed on earlier versions. + #[prost(uint32, optional, tag="4")] + pub stack_height: ::core::option::Option, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CompiledInstruction { + #[prost(uint32, tag="1")] + pub program_id_index: u32, + #[prost(bytes="vec", tag="2")] + pub accounts: ::prost::alloc::vec::Vec, + #[prost(bytes="vec", tag="3")] + pub data: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TokenBalance { + #[prost(uint32, tag="1")] + pub account_index: u32, + #[prost(string, tag="2")] + pub mint: ::prost::alloc::string::String, + #[prost(message, optional, tag="3")] + pub ui_token_amount: ::core::option::Option, + #[prost(string, tag="4")] + pub owner: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub program_id: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UiTokenAmount { + #[prost(double, tag="1")] + pub ui_amount: f64, + #[prost(uint32, tag="2")] + pub decimals: u32, + #[prost(string, tag="3")] + pub amount: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub ui_amount_string: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ReturnData { + #[prost(bytes="vec", tag="1")] + pub program_id: ::prost::alloc::vec::Vec, + #[prost(bytes="vec", tag="2")] + pub data: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Reward { + #[prost(string, tag="1")] + pub pubkey: ::prost::alloc::string::String, + #[prost(int64, tag="2")] + pub lamports: i64, + #[prost(uint64, tag="3")] + pub post_balance: u64, + #[prost(enumeration="RewardType", tag="4")] + pub reward_type: i32, + #[prost(string, tag="5")] + pub commission: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Rewards { + #[prost(message, repeated, tag="1")] + pub rewards: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct UnixTimestamp { + #[prost(int64, tag="1")] + pub timestamp: i64, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BlockHeight { + #[prost(uint64, tag="1")] + pub block_height: u64, +} +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum RewardType { + Unspecified = 0, + Fee = 1, + Rent = 2, + Staking = 3, + Voting = 4, +} +impl RewardType { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + RewardType::Unspecified => "Unspecified", + RewardType::Fee => "Fee", + RewardType::Rent => "Rent", + RewardType::Staking => "Staking", + RewardType::Voting => "Voting", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "Unspecified" => Some(Self::Unspecified), + "Fee" => Some(Self::Fee), + "Rent" => Some(Self::Rent), + "Staking" => Some(Self::Staking), + "Voting" => Some(Self::Voting), + _ => None, + } + } +} +// @@protoc_insertion_point(module) diff --git a/dex-trades-wasm-only/src/pb/sol.instructions.v1.rs b/dex-trades-wasm-only/src/pb/sol.instructions.v1.rs new file mode 100644 index 0000000..f8e8361 --- /dev/null +++ b/dex-trades-wasm-only/src/pb/sol.instructions.v1.rs @@ -0,0 +1,20 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Instructions { + #[prost(message, repeated, tag="1")] + pub instructions: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Instruction { + #[prost(string, tag="1")] + pub program_id: ::prost::alloc::string::String, + #[prost(string, repeated, tag="2")] + pub accounts: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, + #[prost(bytes="vec", tag="3")] + pub data: ::prost::alloc::vec::Vec, + #[prost(string, tag="4")] + pub tx_hash: ::prost::alloc::string::String, +} +// @@protoc_insertion_point(module) diff --git a/dex-trades-wasm-only/src/pb/sol.transactions.v1.rs b/dex-trades-wasm-only/src/pb/sol.transactions.v1.rs new file mode 100644 index 0000000..02b2d46 --- /dev/null +++ b/dex-trades-wasm-only/src/pb/sol.transactions.v1.rs @@ -0,0 +1,8 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Transactions { + #[prost(message, repeated, tag="1")] + pub transactions: ::prost::alloc::vec::Vec, +} +// @@protoc_insertion_point(module) diff --git a/dex-trades-wasm-only/src/trade_instruction.rs b/dex-trades-wasm-only/src/trade_instruction.rs new file mode 100644 index 0000000..673a4c9 --- /dev/null +++ b/dex-trades-wasm-only/src/trade_instruction.rs @@ -0,0 +1,26 @@ +#[derive(Debug)] +pub struct TradeInstruction { + pub dapp_address: String, + pub name: String, + pub amm: String, + pub vault_a: String, + pub vault_b: String, + pub second_swap_amm: Option, + pub second_swap_vault_a: Option, + pub second_swap_vault_b: Option, +} + +impl Default for TradeInstruction { + fn default() -> Self { + TradeInstruction { + dapp_address: "".to_string(), + name: "".to_string(), + amm: "".to_string(), + vault_a: "".to_string(), + vault_b: "".to_string(), + second_swap_amm: None, + second_swap_vault_a: None, + second_swap_vault_b: None, + } + } +} diff --git a/dex-trades-wasm-only/src/utils.rs b/dex-trades-wasm-only/src/utils.rs new file mode 100644 index 0000000..4416e58 --- /dev/null +++ b/dex-trades-wasm-only/src/utils.rs @@ -0,0 +1,378 @@ +extern crate chrono; +use borsh::{BorshDeserialize, BorshSerialize}; +use chrono::prelude::*; + +use crate::pb::sf::solana::transactions::v1::{InnerInstruction, TokenBalance}; + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +pub struct TransferLayout { + amount: u64, +} + +pub fn convert_to_date(ts: i64) -> String { + let nt = NaiveDateTime::from_timestamp_opt(ts, 0); + let dt: DateTime = DateTime::from_naive_utc_and_offset(nt.unwrap(), Utc); + let res = dt.format("%Y-%m-%d"); + return res.to_string(); +} + +pub fn get_mint( + address: &String, + token_balances: &Vec, + accounts: &Vec, + dapp_address: String, +) -> String { + if dapp_address.eq("MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG") + || dapp_address.eq("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P") + { + return "So11111111111111111111111111111111111111112".to_string(); + } + + let mut result: String = String::new(); + + token_balances + .iter() + .filter(|token_balance| token_balance.account.eq(address)) + .for_each(|token_balance| { + result = token_balance.mint.clone(); + }); + return result; +} + +pub fn get_amt( + address: &String, + input_inner_idx: u32, + inner_instructions: &Vec, + accounts: &Vec, + post_token_balances: &Vec, + dapp_address: String, + pre_balances: Vec, + post_balances: Vec, +) -> f64 { + let mut result: f64 = 0.0; + + let source_transfer_amt = get_token_transfer( + address, + input_inner_idx, + inner_instructions, + accounts, + "source".to_string(), + dapp_address.clone(), + pre_balances.clone(), + post_balances.clone(), + ); + + let destination_transfer_amt = get_token_transfer( + address, + input_inner_idx, + inner_instructions, + accounts, + "destination".to_string(), + dapp_address.clone(), + pre_balances.clone(), + post_balances.clone(), + ); + + if source_transfer_amt != 0.0 { + result = source_transfer_amt; + } else if destination_transfer_amt != 0.0 { + result = destination_transfer_amt; + } + + if result != 0.0 { + post_token_balances + .iter() + .filter(|token_balance| token_balance.mint.eq(address)) + .for_each(|token_balance: &TokenBalance| { + // TODO: uncomment if decimals is available in token_balance + // result = result / (u64::pow(10, decimals)) as f64; + }); + } + + result +} + +pub fn get_token_transfer( + address: &String, + input_inner_idx: u32, + inner_instructions: &Vec, + accounts: &Vec, + account_name_to_check: String, + dapp_address: String, + pre_balances: Vec, + post_balances: Vec, +) -> f64 { + if dapp_address.eq("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P") { + return get_system_program_transfer( + address, + input_inner_idx, + inner_instructions, + accounts, + account_name_to_check, + pre_balances, + post_balances, + ); + } + + let mut result = 0.0; + let mut result_assigned = false; + + inner_instructions + .iter() + .enumerate() + .for_each(|(inner_idx, inner_instruction)| { + let inner_program = inner_instruction.executing_account.clone(); + if inner_program + .as_str() + .eq("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA") + { + let b58_data = bs58::decode(inner_instruction.data.clone()) + .into_vec() + .unwrap(); + let (discriminator_bytes, rest) = b58_data.split_at(1); + let discriminator: u8 = u8::from(discriminator_bytes[0]); + + match discriminator { + 3 => { + let input_accounts = inner_instruction.account_arguments.clone(); + + let source = input_accounts.get(0).unwrap().to_string(); + let destination = input_accounts.get(1).unwrap().to_string(); + + let condition = if input_inner_idx > 0 { + inner_idx as u32 > input_inner_idx + } else { + true + }; + + if condition && address.eq(&source) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = -1.0 * data.amount as f64; + result_assigned = true; + } + } + + if condition && address.eq(&destination) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = data.amount as f64; + result_assigned = true; + } + } + } + 12 => { + let input_accounts = inner_instruction.account_arguments.clone(); + + let source = input_accounts.get(0).unwrap().to_string(); + let destination = input_accounts.get(2).unwrap().to_string(); + + let condition = if input_inner_idx > 0 { + inner_idx as u32 > input_inner_idx + } else { + true + }; + + if condition && address.eq(&source) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = -1.0 * data.amount as f64; + result_assigned = true; + } + } + + if condition && address.eq(&destination) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = data.amount as f64; + result_assigned = true; + } + } + } + _ => {} + } + } + }); + + if !result_assigned { + let _result = get_token_22_transfer( + address, + input_inner_idx, + inner_instructions, + accounts, + account_name_to_check, + ); + if _result.is_some() { + result = _result.unwrap(); + } + } + + result +} + +pub fn get_token_22_transfer( + address: &String, + input_inner_idx: u32, + inner_instructions: &Vec, + accounts: &Vec, + account_name_to_check: String, +) -> Option { + let mut result = None; + let mut result_assigned = false; + + inner_instructions + .iter() + .enumerate() + .for_each(|(inner_idx, inner_instruction)| { + let inner_program = inner_instruction.executing_account.clone(); + + if inner_program + .as_str() + .eq("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb") + { + let b58_data = bs58::decode(inner_instruction.data.clone()) + .into_vec() + .unwrap(); + let (discriminator_bytes, rest) = b58_data.split_at(1); + let discriminator: u8 = u8::from(discriminator_bytes[0]); + + match discriminator { + 3 => { + let input_accounts = inner_instruction.account_arguments.clone(); + + let source = input_accounts.get(0).unwrap().to_string(); + let destination = input_accounts.get(1).unwrap().to_string(); + + let condition = if input_inner_idx > 0 { + inner_idx as u32 > input_inner_idx + } else { + true + }; + + if condition && address.eq(&source) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = Some(-1.0 * data.amount as f64); + result_assigned = true; + } + } + + if condition && address.eq(&destination) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = Some(data.amount as f64); + result_assigned = true; + } + } + } + 12 => { + let input_accounts = inner_instruction.account_arguments.clone(); + + let source = input_accounts.get(0).unwrap().to_string(); + let destination = input_accounts.get(2).unwrap().to_string(); + + let condition = if input_inner_idx > 0 { + inner_idx as u32 > input_inner_idx + } else { + true + }; + + if condition && address.eq(&source) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = Some(-1.0 * data.amount as f64); + result_assigned = true; + } + } + + if condition && address.eq(&destination) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = Some(data.amount as f64); + result_assigned = true; + } + } + } + _ => {} + } + } + }); + + result +} + +fn get_system_program_transfer( + address: &String, + input_inner_idx: u32, + inner_instructions: &Vec, + accounts: &Vec, + account_name_to_check: String, + pre_balances: Vec, + post_balances: Vec, +) -> f64 { + let mut result = 0.0; + let mut result_assigned = false; + + &inner_instructions + .iter() + .enumerate() + .for_each(|(inner_idx, inner_instruction)| { + let inner_program = inner_instruction.executing_account.clone(); + + if inner_program + .as_str() + .eq("11111111111111111111111111111111") + { + let b58_data = bs58::decode(inner_instruction.data.clone()) + .into_vec() + .unwrap(); + let (discriminator_bytes, rest) = b58_data.split_at(4); + + let disc_bytes_arr: [u8; 4] = discriminator_bytes.to_vec().try_into().unwrap(); + let discriminator: u32 = u32::from_le_bytes(disc_bytes_arr); + + match discriminator { + 2 => { + let input_accounts = inner_instruction.account_arguments.clone(); + + let source = input_accounts.get(0).unwrap().to_string(); + let destination = input_accounts.get(1).unwrap().to_string(); + + let condition = if input_inner_idx > 0 { + inner_idx as u32 > input_inner_idx + } else { + true + }; + + if condition && address.eq(&source) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = -1.0 * data.amount as f64; + result /= 10f64.powi(9); + result_assigned = true; + } + } + + if condition && address.eq(&destination) { + let data = TransferLayout::deserialize(&mut rest.clone()).unwrap(); + if !result_assigned { + result = 1.0 * data.amount as f64; + result /= 10f64.powi(9); + result_assigned = true; + } + } + } + _ => {} + } + } + }); + + if !result_assigned { + let index = accounts.iter().position(|r| r == address).unwrap(); + let _result = post_balances[index] as f64 - pre_balances[index] as f64; + result = 1.0 * _result as f64; + result /= 10f64.powi(9); + } + + result +} diff --git a/dex-trades-wasm-only/substreams.yaml b/dex-trades-wasm-only/substreams.yaml new file mode 100644 index 0000000..8b2eafe --- /dev/null +++ b/dex-trades-wasm-only/substreams.yaml @@ -0,0 +1,28 @@ +specVersion: v0.1.0 +package: + name: 'solana_raw_transactions_1_0_1' + version: v1.0.1 + +protobuf: + files: + - output.proto + importPaths: + - ./proto + + +imports: + sink_files: https://github.com/streamingfast/substreams-sink-files/releases/download/v2.1.0/substreams-sink-files-v2.1.0.spkg + solana: https://spkg.io/streamingfast/solana-common-v0.3.0.spkg + +binaries: + default: + type: wasm/rust-v1 + file: target/wasm32-unknown-unknown/release/dex_trades.wasm + +modules: + - name: map_block + kind: map + inputs: + - map: solana:blocks_without_votes + output: + type: proto:sf.solana.transactions.v1.TransactionStats \ No newline at end of file diff --git a/dex-trades-wasm-only/utils/convert b/dex-trades-wasm-only/utils/convert new file mode 100755 index 0000000..d0c7a4c Binary files /dev/null and b/dex-trades-wasm-only/utils/convert differ diff --git a/dex-trades-wasm-only/utils/convert.go b/dex-trades-wasm-only/utils/convert.go new file mode 100644 index 0000000..c58e5fb --- /dev/null +++ b/dex-trades-wasm-only/utils/convert.go @@ -0,0 +1,43 @@ +package main + +import ( + "bytes" + "compress/zlib" + "fmt" + "io" + "log" + "os" +) + +func main() { + // Read all data from stdin + bs, err := io.ReadAll(os.Stdin) + if err != nil { + log.Fatal(err) + } + + // Compress the data using zlib + var b bytes.Buffer + w := zlib.NewWriter(&b) + _, err = w.Write(bs) + if err != nil { + log.Fatal(err) + } + err = w.Close() + if err != nil { + log.Fatal(err) + } + + // Get the compressed data + compressedData := b.Bytes() + + // Build a string representation of the compressed byte slice + fmt.Print("const bytes = new Uint8Array([") + for i, c := range compressedData { + if i > 0 { + fmt.Print(",") + } + fmt.Print(c) + } + fmt.Println("]);") +} diff --git a/dex-trades-wasm-only/utils/script.sh b/dex-trades-wasm-only/utils/script.sh new file mode 100755 index 0000000..d055428 --- /dev/null +++ b/dex-trades-wasm-only/utils/script.sh @@ -0,0 +1,7 @@ +#!/bin/bash +name=${1} + +cd utils || exit +./convert < ../pkg/${name}_bg.wasm > wasm_bytes.js +gsutil cp wasm_bytes.js gs://tt-bq-js/solana/${name}/wasm_bytes.js +gsutil cp ../pkg/${name}.js gs://tt-bq-js/solana/${name}/ \ No newline at end of file diff --git a/dex-trades-wasm-only/utils/wasm_bytes.js b/dex-trades-wasm-only/utils/wasm_bytes.js new file mode 100644 index 0000000..bc75f2a --- /dev/null +++ b/dex-trades-wasm-only/utils/wasm_bytes.js @@ -0,0 +1 @@ +const bytes = new Uint8Array([120,156,236,253,11,156,93,71,113,32,140,119,247,121,222,123,206,153,57,243,144,52,210,232,81,125,36,219,35,75,194,227,215,140,48,78,118,90,225,142,44,132,98,135,77,54,252,255,155,111,45,8,6,115,198,128,37,20,224,219,120,173,187,177,72,244,129,178,25,18,101,87,9,218,221,97,163,253,172,37,130,104,19,101,51,33,74,50,2,45,12,70,36,19,16,160,37,54,81,140,146,40,137,8,34,17,68,4,179,254,126,85,221,231,113,207,189,35,141,176,1,217,107,233,247,155,123,250,221,93,93,85,93,213,93,93,205,94,247,246,183,112,198,24,255,121,145,108,183,118,239,222,205,119,111,23,217,95,182,157,239,102,20,139,95,124,247,118,103,247,110,10,216,165,159,60,218,124,60,186,155,109,119,119,155,140,140,239,222,206,31,229,187,179,152,252,235,81,182,157,81,165,143,110,231,143,240,221,219,163,221,229,127,108,123,80,10,241,71,182,123,197,103,77,127,61,250,232,163,172,136,222,189,221,122,148,126,108,93,119,189,84,154,186,245,111,116,127,233,199,217,189,251,17,29,124,196,4,31,213,193,71,179,65,61,194,196,111,90,93,214,59,95,255,166,165,247,223,255,206,215,191,249,173,111,120,211,3,111,189,63,125,251,219,222,122,255,219,31,216,249,230,215,61,244,230,127,253,0,19,152,190,12,211,223,116,255,91,31,120,231,253,163,27,223,248,192,235,111,29,222,248,250,145,59,70,111,27,189,245,118,22,86,50,220,49,124,231,3,183,221,246,198,219,95,62,124,231,232,200,79,62,112,91,75,134,183,63,176,235,254,219,55,14,143,190,225,206,55,14,191,254,141,63,121,219,29,175,123,221,40,179,171,25,70,55,222,62,58,124,219,237,111,188,253,13,163,119,12,63,176,177,148,193,244,241,109,175,79,31,248,201,93,247,191,97,231,219,30,190,127,231,3,111,100,22,102,88,84,202,240,214,159,122,203,235,31,216,137,253,97,189,213,194,175,127,243,155,222,252,214,93,247,191,113,231,219,222,114,255,79,141,220,193,162,106,225,183,239,218,249,230,183,210,96,24,191,82,225,55,103,133,7,219,187,246,147,15,189,237,173,15,80,223,28,204,209,95,202,241,192,206,157,111,219,89,212,190,164,148,244,134,7,94,255,83,111,50,237,107,200,199,165,212,93,15,238,124,219,59,153,176,206,240,207,243,62,71,56,253,66,56,182,96,194,230,14,231,190,176,124,91,216,172,139,113,206,132,99,51,46,68,189,46,28,87,8,33,22,9,71,44,22,92,8,75,4,181,250,18,75,112,155,15,112,102,113,172,129,243,64,48,206,93,177,212,22,30,23,98,153,240,108,139,121,194,233,22,221,156,11,206,3,46,184,237,10,135,113,207,182,109,155,51,142,255,132,133,255,108,206,57,99,182,45,184,45,106,60,22,150,240,57,198,99,142,46,238,214,6,87,172,226,30,183,56,119,61,94,252,99,150,180,4,70,82,128,199,140,49,209,211,99,217,182,195,31,230,63,246,99,142,197,89,143,91,227,187,185,106,54,103,88,224,253,128,237,190,229,129,183,188,109,231,255,45,152,243,240,235,118,190,253,1,214,221,83,2,204,91,94,247,208,67,111,251,73,246,31,120,111,41,114,231,3,58,246,48,175,253,103,206,153,226,193,143,126,150,15,126,158,159,225,95,224,159,229,159,231,159,225,255,15,255,209,119,172,252,34,255,13,254,223,249,175,241,255,255,111,241,223,230,255,250,24,255,109,254,155,252,20,255,8,63,198,143,241,255,193,127,135,79,243,15,243,207,241,159,250,28,255,111,252,105,254,41,126,130,127,148,127,156,159,228,31,227,159,224,179,252,127,242,79,242,39,248,211,252,119,249,211,252,253,124,219,123,249,211,252,15,248,159,240,207,241,163,252,207,248,89,62,199,191,204,255,51,255,115,126,239,45,247,255,60,255,95,252,95,237,227,255,191,63,230,111,252,127,249,240,239,243,167,249,111,241,3,252,211,252,40,255,61,126,156,215,255,113,127,237,243,252,175,15,10,209,181,155,63,186,154,169,179,98,34,137,214,48,136,20,27,17,76,140,125,175,255,131,80,235,38,186,4,103,245,128,130,92,237,63,55,195,212,250,248,41,110,99,232,153,191,52,161,70,196,129,171,243,167,243,160,0,174,46,124,193,4,35,27,34,117,70,164,96,41,63,29,18,56,22,136,192,90,43,216,168,53,39,32,82,231,89,10,118,57,205,166,180,237,16,169,25,158,202,26,68,234,44,75,165,181,154,169,163,124,34,225,107,74,176,128,72,205,137,52,113,135,132,175,188,173,246,152,250,244,167,78,176,13,140,45,3,119,72,48,233,41,63,238,73,4,118,80,128,183,150,177,100,112,148,49,16,177,4,110,160,10,131,155,46,255,252,183,246,253,202,241,167,62,118,207,107,236,177,172,151,210,6,11,127,68,200,131,188,82,181,94,215,38,64,100,227,251,18,151,245,34,221,142,123,18,31,211,125,245,217,191,123,247,99,222,8,99,88,141,159,216,138,111,139,44,224,106,146,167,84,113,34,84,136,237,128,80,253,248,27,255,123,14,182,114,182,69,54,112,53,197,83,16,234,110,147,126,146,21,25,220,241,200,1,142,240,0,161,102,153,201,49,151,231,224,106,47,79,147,0,184,58,192,51,128,114,117,153,165,73,8,92,29,46,226,128,175,181,38,249,168,213,228,250,123,138,143,90,15,3,143,223,2,92,65,10,65,94,118,125,10,97,30,216,152,226,68,179,188,150,77,123,154,72,156,163,86,12,28,252,17,17,2,223,116,4,163,156,81,97,3,135,186,46,198,70,196,143,234,159,123,244,207,221,186,209,38,31,181,6,244,231,195,163,98,141,254,218,62,106,13,7,80,163,81,198,95,226,203,64,128,29,63,206,17,106,182,61,134,115,23,224,228,226,183,135,223,92,29,229,233,26,22,58,129,250,223,63,123,130,169,213,234,212,255,156,97,241,127,228,44,96,129,58,122,236,4,83,235,212,147,89,84,22,113,161,26,241,76,22,1,81,252,22,136,160,102,154,15,71,2,154,66,229,109,139,34,176,135,132,47,5,254,216,248,135,73,221,47,233,105,108,177,11,84,64,196,179,26,209,173,96,129,157,35,158,21,75,77,206,51,28,6,55,189,251,55,158,253,237,175,92,120,230,253,75,127,164,132,184,132,99,86,35,186,13,172,140,222,190,196,165,95,164,119,23,233,94,170,62,113,110,134,173,101,140,42,87,51,69,64,32,194,117,107,242,0,110,112,141,23,184,38,148,187,45,138,53,105,1,207,80,137,151,80,73,40,111,60,234,129,72,77,81,13,167,179,28,79,230,57,34,53,43,210,164,166,201,59,163,94,53,45,210,164,174,201,58,167,232,104,173,53,39,70,173,25,161,191,183,143,90,71,133,38,111,132,181,58,203,83,168,229,21,92,224,41,212,243,208,101,158,66,164,14,23,13,108,250,133,102,179,121,145,143,90,115,28,249,200,136,56,197,33,202,177,238,36,70,250,4,96,2,244,126,161,127,247,154,223,103,184,238,194,140,24,181,206,152,239,163,98,84,156,51,223,83,98,212,186,200,3,3,24,234,98,134,135,28,68,252,56,177,62,68,59,207,30,3,27,63,52,186,80,254,12,101,238,212,40,211,136,226,121,17,70,179,151,196,219,192,88,134,17,138,143,119,192,131,91,193,202,56,109,43,30,216,69,122,206,107,68,35,234,205,230,92,207,150,95,76,167,189,45,234,203,39,124,216,204,230,198,34,221,25,143,250,243,233,190,219,164,159,252,126,207,118,198,97,190,191,179,157,115,155,14,179,125,71,193,32,250,174,198,32,172,86,6,97,55,162,91,192,6,43,103,16,118,11,131,200,23,166,54,6,97,55,162,97,176,179,53,183,29,49,76,122,25,49,22,205,139,24,206,182,104,113,142,24,237,19,47,112,213,89,146,99,70,7,86,113,61,160,134,253,253,100,4,214,60,168,113,123,38,57,205,93,156,97,106,93,38,57,157,254,107,19,210,146,211,254,207,229,65,148,156,14,156,49,193,231,75,114,178,87,51,53,41,42,146,211,21,228,62,45,83,121,237,50,149,135,40,236,151,101,42,191,163,76,101,234,25,220,244,193,189,199,254,108,234,215,126,243,23,158,102,63,110,183,72,90,63,18,9,24,220,244,177,19,191,253,87,31,159,61,255,149,55,190,38,226,5,254,174,211,213,187,32,50,80,180,10,89,245,184,39,113,49,221,85,126,170,142,28,159,97,183,48,246,10,198,192,85,135,142,231,11,32,18,98,98,41,129,171,54,71,112,16,57,38,66,13,24,161,9,50,236,181,144,0,186,112,146,230,17,187,44,36,237,110,20,72,40,195,233,76,236,122,178,36,118,93,164,164,53,38,101,125,81,180,134,203,44,87,77,129,233,23,178,162,151,74,149,7,219,162,158,92,166,219,195,77,142,125,188,168,124,218,200,116,179,37,153,238,48,215,50,221,153,82,220,1,158,38,56,144,243,165,56,148,7,177,239,151,43,242,32,118,106,175,104,145,7,103,248,168,117,212,200,131,115,124,212,154,50,223,103,249,168,53,105,190,47,150,100,198,166,88,160,204,216,149,7,78,178,20,186,115,233,241,61,205,102,19,5,79,148,30,93,45,61,254,122,179,217,60,218,34,61,98,75,71,11,65,113,138,231,146,34,202,175,195,185,36,137,66,37,242,36,136,243,214,158,100,21,121,85,75,154,214,61,153,164,41,126,52,92,18,192,224,166,95,207,241,84,35,230,71,254,243,199,255,238,207,255,172,249,231,95,103,63,18,89,65,70,99,210,210,44,93,132,139,130,54,116,181,230,67,87,91,163,171,5,110,193,142,11,228,180,13,238,204,143,156,246,54,18,249,53,2,13,155,244,141,69,186,187,45,114,13,134,207,163,18,156,55,232,83,70,129,51,6,125,42,40,128,211,123,182,52,189,115,124,97,58,65,9,51,91,116,130,121,103,117,94,157,224,108,49,213,115,197,84,35,106,14,135,253,237,96,23,243,129,221,213,96,23,224,42,59,85,151,190,93,226,18,23,191,61,195,134,24,43,77,132,173,97,88,154,136,14,128,246,183,69,94,62,17,103,51,64,159,47,81,114,125,91,228,231,83,113,57,203,209,228,223,183,169,248,217,102,179,121,246,187,50,21,125,237,83,193,231,155,138,80,79,5,215,12,123,238,247,114,232,187,106,246,247,42,12,187,81,97,215,26,132,126,11,63,45,120,117,71,126,90,31,47,49,235,142,179,160,153,117,155,254,77,172,184,96,214,29,88,177,165,194,241,18,179,158,204,114,28,248,63,128,89,239,67,178,254,62,51,235,222,92,199,159,254,189,54,29,255,232,239,87,84,250,153,106,196,92,53,162,89,141,152,172,70,76,85,35,142,30,175,182,82,141,152,171,70,156,173,70,92,172,70,156,254,189,74,196,185,106,196,165,106,196,158,106,29,251,179,136,214,189,19,43,126,156,147,58,146,237,157,120,250,219,215,123,39,147,34,93,195,170,91,30,185,254,58,112,45,250,107,163,172,164,172,43,180,83,35,251,46,64,123,197,5,113,89,190,103,49,96,244,12,104,217,179,24,188,234,158,197,242,235,112,207,162,163,22,155,145,207,245,164,197,54,162,193,231,176,103,97,102,125,24,172,76,199,233,56,235,195,149,61,139,21,87,218,179,88,121,149,61,139,85,47,144,61,139,235,106,182,111,47,45,223,167,89,220,147,240,70,244,178,182,21,253,101,32,212,31,126,46,155,71,209,154,238,98,186,171,254,38,79,119,91,211,61,76,247,212,47,127,62,75,247,90,211,3,76,15,212,76,158,94,145,40,66,76,15,213,223,230,233,97,107,122,23,166,119,169,127,255,133,44,189,171,53,189,27,211,187,213,137,60,29,23,214,83,44,205,39,2,151,152,110,45,243,140,77,180,196,118,145,8,164,238,104,205,27,142,136,97,224,106,168,53,54,24,193,21,78,45,111,141,245,70,196,0,112,21,183,198,118,88,54,5,98,140,143,44,59,254,85,14,245,29,137,80,124,115,116,251,115,83,252,187,140,226,239,155,35,19,183,195,145,73,128,234,61,111,81,239,81,38,144,161,18,122,242,56,120,16,222,194,88,82,67,169,217,139,37,184,217,145,73,77,53,251,55,227,26,98,244,162,26,248,116,218,210,114,86,98,112,64,128,151,109,112,224,28,20,233,113,220,147,212,49,189,142,82,225,158,63,201,5,193,186,122,102,46,15,248,40,21,214,180,250,52,201,83,106,40,241,144,206,189,130,79,212,80,54,183,193,165,131,19,47,147,205,189,146,108,94,83,181,241,200,1,151,104,198,203,228,70,175,36,55,186,36,124,197,224,150,78,78,92,18,190,122,192,45,157,156,184,224,230,39,39,244,173,79,78,220,248,45,224,162,96,21,231,101,215,167,208,147,7,54,166,224,150,24,142,187,105,178,217,108,162,76,22,131,139,178,83,8,110,9,47,92,68,76,166,1,254,163,250,231,30,253,115,183,110,84,159,156,208,39,157,156,208,151,62,57,233,162,81,18,63,240,160,134,171,191,95,58,45,9,244,119,72,167,40,109,39,39,23,230,218,164,170,125,127,82,145,51,14,86,35,142,252,73,235,201,73,87,193,100,128,171,143,157,201,143,5,81,55,250,106,30,180,199,94,148,231,130,102,128,47,157,11,94,135,231,130,31,111,63,23,252,120,245,92,176,26,241,204,199,231,57,23,188,13,155,56,249,237,28,187,87,32,8,158,206,131,43,129,171,247,255,175,242,121,249,39,178,80,36,94,148,152,111,198,183,96,204,23,109,152,223,182,251,101,43,107,188,132,249,109,219,171,118,182,59,166,17,191,109,211,230,37,180,71,180,255,68,59,218,127,162,138,246,213,136,103,62,49,63,218,191,24,145,247,253,47,33,239,117,137,188,83,127,208,190,207,243,7,213,29,152,106,196,220,31,204,131,188,183,98,19,207,124,45,63,110,187,5,184,250,135,255,149,29,183,241,239,62,102,63,135,67,53,24,220,244,31,158,254,235,247,124,241,219,95,62,21,93,21,179,75,187,227,102,124,173,152,29,23,187,227,126,170,102,62,146,203,219,174,154,46,2,215,130,235,47,56,17,165,16,192,191,147,189,241,239,24,221,91,183,223,170,232,126,248,35,109,232,62,251,145,10,118,159,169,70,156,255,200,60,232,62,140,77,252,167,47,182,136,40,79,124,177,44,147,28,253,153,19,207,143,76,50,80,58,107,206,145,223,32,125,79,59,210,163,98,36,151,106,210,200,80,159,129,128,165,29,80,191,202,210,179,211,184,56,59,141,115,2,125,120,16,35,18,10,131,99,230,28,167,29,19,99,196,68,58,5,152,23,19,135,196,27,240,207,118,233,139,49,8,27,246,152,226,164,220,98,228,131,178,6,161,90,255,144,116,33,80,67,169,180,48,141,142,40,100,63,9,237,114,145,133,144,109,34,181,40,152,192,202,45,53,48,161,235,22,99,88,199,94,174,214,109,142,24,126,54,185,58,221,60,97,24,16,211,84,150,212,113,22,116,201,156,56,126,235,31,102,216,136,56,200,53,141,37,139,161,30,175,49,172,133,15,137,41,158,244,218,244,117,88,27,21,12,137,67,92,46,129,222,13,140,41,107,115,100,193,98,160,179,148,126,83,97,29,131,33,44,202,187,85,211,133,177,91,190,174,17,106,241,83,28,186,119,70,12,186,114,6,61,36,14,208,78,202,144,216,207,101,23,254,78,34,108,172,64,71,145,5,3,198,197,50,20,1,81,133,56,68,39,18,234,3,63,135,195,212,35,84,103,191,53,195,212,204,191,61,193,226,221,44,71,254,57,12,19,30,83,247,27,26,66,83,180,153,181,4,67,189,166,11,123,184,30,107,147,146,44,181,62,149,22,42,220,19,137,27,177,32,200,201,107,72,236,194,63,15,203,222,108,30,145,211,114,89,83,76,214,205,124,190,75,246,85,230,211,228,209,115,186,72,207,233,98,44,241,156,231,53,184,250,188,46,129,64,207,171,153,213,176,125,86,151,65,104,102,85,192,18,61,171,102,26,33,208,179,186,184,220,169,3,28,250,198,237,49,232,213,19,147,4,208,135,243,90,223,217,136,184,153,53,221,198,36,55,64,67,208,91,25,232,113,106,125,123,12,106,38,241,48,151,117,211,17,131,39,178,86,204,125,176,144,121,63,91,153,247,139,249,188,47,195,89,14,23,60,203,136,15,109,6,115,56,45,134,173,181,110,74,218,69,122,46,205,233,85,173,122,202,152,175,37,45,107,81,139,128,100,181,11,72,238,21,86,140,250,136,216,168,197,170,59,128,67,141,118,18,161,123,68,172,215,187,141,67,122,203,176,116,84,54,16,218,165,53,96,234,103,78,84,206,169,242,8,3,195,102,22,1,3,229,229,39,174,158,254,244,232,239,165,165,229,199,172,26,3,197,170,209,190,55,188,174,77,180,88,119,149,189,225,117,87,217,27,94,119,149,189,225,117,87,217,27,94,119,149,189,225,117,87,217,27,94,247,66,221,27,30,190,238,247,134,235,87,221,27,94,95,236,13,27,121,164,117,111,56,40,246,134,189,84,125,236,163,185,197,64,93,29,255,232,181,238,13,91,229,189,225,53,102,227,119,125,145,110,151,119,134,135,77,250,198,239,215,190,240,123,17,1,120,203,190,112,193,100,190,95,251,194,71,62,218,46,150,126,180,42,150,86,35,206,127,116,158,125,97,18,75,155,127,155,107,97,40,150,126,227,139,101,3,201,15,252,105,166,147,125,15,182,202,158,155,78,246,243,95,217,255,205,39,159,58,246,237,31,191,22,157,204,140,175,85,39,11,10,157,204,75,213,239,156,40,153,201,28,61,81,209,201,26,21,141,172,178,128,217,202,43,171,99,29,44,22,109,229,151,245,177,14,230,76,223,107,125,172,64,252,235,72,31,155,58,209,134,248,199,79,84,240,252,84,53,226,201,19,243,232,99,183,188,136,246,206,74,216,108,104,247,249,61,242,176,203,8,220,182,55,70,8,94,160,111,71,147,220,239,251,238,217,247,2,125,175,188,123,118,225,143,218,208,247,153,63,170,96,235,190,63,174,30,240,253,241,60,232,251,50,108,98,238,47,242,237,4,20,234,79,253,105,203,137,199,229,34,184,10,184,58,184,247,68,22,4,224,234,200,133,60,21,177,238,208,147,121,48,193,57,57,159,7,87,99,67,69,42,10,81,151,191,82,222,183,56,254,231,207,211,89,138,191,64,146,178,199,136,140,146,218,6,198,164,40,72,6,69,178,107,216,102,54,253,110,39,21,35,13,85,72,229,170,108,254,5,183,235,86,38,19,239,249,220,100,246,23,66,38,181,206,100,114,228,207,219,200,228,252,159,87,168,226,114,53,98,239,211,173,100,226,151,200,228,133,132,146,134,176,158,55,148,188,26,227,118,202,24,217,142,178,47,33,164,90,173,206,127,165,13,33,15,253,93,5,255,142,85,35,78,254,221,60,8,185,1,155,56,244,213,92,222,94,142,45,190,231,196,243,123,234,97,119,194,214,231,247,90,17,12,110,250,167,95,250,229,247,62,125,238,31,254,235,244,238,215,216,109,242,202,224,166,233,47,254,234,207,61,245,203,191,251,71,219,126,36,18,237,183,54,186,58,223,218,48,160,88,232,173,141,6,161,247,228,252,22,234,66,75,38,154,0,58,92,232,176,198,233,178,129,38,128,182,83,193,239,39,254,63,143,98,119,24,117,150,21,59,2,59,108,57,141,58,252,222,19,133,230,51,245,222,19,213,11,2,238,85,193,239,93,5,252,254,245,3,254,5,89,213,127,7,224,15,59,223,207,232,8,254,190,226,126,70,119,170,254,230,61,37,240,251,169,250,242,123,78,20,135,131,127,250,158,182,233,240,175,58,29,181,171,76,71,253,250,153,142,95,66,216,63,255,135,130,97,80,104,148,239,57,209,102,141,241,222,202,238,238,133,106,196,51,213,136,35,213,136,227,213,136,83,213,136,139,239,169,68,52,171,57,38,179,136,107,186,65,80,222,67,206,85,133,245,152,114,248,217,92,130,31,2,174,30,127,170,44,193,127,246,169,23,183,53,148,25,223,243,107,80,114,53,217,202,221,118,253,74,251,215,143,73,201,76,187,73,201,76,213,164,164,26,49,55,51,143,82,188,254,123,176,167,243,220,100,166,189,31,254,252,95,157,252,250,111,206,222,116,45,232,251,120,39,244,237,41,214,233,56,85,103,78,206,96,244,93,217,66,49,119,178,100,69,50,123,178,106,69,178,160,93,31,107,219,85,44,166,198,175,39,139,169,247,53,155,205,201,214,213,226,123,129,222,87,222,178,156,62,217,110,238,119,178,106,238,87,141,120,230,228,60,232,189,142,44,166,158,204,117,135,27,128,171,103,159,202,131,9,112,245,193,47,229,193,213,192,213,231,138,224,26,28,198,215,103,242,83,240,239,30,161,60,119,82,129,193,77,191,117,234,63,28,250,213,179,127,118,226,67,70,185,248,203,125,151,222,247,190,153,111,124,61,237,72,56,126,103,1,215,140,183,149,112,172,130,112,68,170,62,252,141,18,225,28,249,70,126,51,217,16,138,213,70,40,107,232,72,78,147,66,18,230,200,142,84,66,241,97,153,62,236,235,135,62,30,107,54,155,195,207,191,48,229,117,150,109,59,66,222,46,100,219,207,62,241,223,191,236,142,180,192,217,126,14,112,190,142,248,208,119,75,135,115,11,211,156,175,183,175,153,223,168,174,153,213,136,125,213,136,131,223,232,120,69,117,33,12,174,202,151,110,14,128,17,67,160,58,28,156,63,6,142,81,60,30,231,24,99,55,162,117,192,98,137,60,236,197,40,97,126,236,165,155,38,215,171,136,121,106,182,125,13,158,173,174,193,213,136,103,102,231,89,131,135,242,122,247,156,171,138,165,213,136,179,213,136,139,121,68,118,38,244,151,149,28,135,255,170,18,49,93,141,152,253,171,74,29,83,127,88,189,21,95,141,152,169,70,204,253,97,165,142,153,139,213,241,87,35,246,125,173,202,63,190,86,169,227,228,95,87,47,244,255,77,245,66,127,53,98,234,111,114,40,127,23,165,145,231,77,120,175,108,112,150,29,213,240,118,78,81,239,204,41,204,45,165,142,43,163,40,239,112,190,168,13,190,59,172,146,207,7,167,8,107,237,64,231,243,1,221,45,196,145,43,120,165,41,166,193,89,200,52,184,87,155,6,239,122,154,134,14,62,105,158,151,105,240,115,174,112,236,219,109,220,247,240,255,174,242,184,106,196,108,53,226,242,183,171,7,126,213,28,7,254,247,243,38,206,244,189,176,206,12,205,61,199,151,206,12,175,163,51,195,51,79,183,97,253,254,47,87,48,246,80,53,226,216,151,231,57,51,236,125,113,202,204,255,233,139,223,5,153,249,5,140,189,215,141,196,124,225,83,237,150,74,159,170,202,131,167,170,242,224,169,121,36,230,158,23,0,59,45,237,25,25,91,216,151,216,105,206,78,159,31,211,185,231,194,78,47,254,77,27,66,30,249,219,10,254,29,175,70,156,250,219,121,216,105,252,194,66,72,99,44,242,18,66,94,71,8,185,255,171,109,8,57,247,213,170,246,95,141,184,248,213,121,16,178,251,197,185,190,27,115,212,239,241,158,152,191,237,250,50,165,191,46,87,248,233,143,181,223,33,249,88,245,14,73,53,226,252,199,230,89,225,187,174,251,99,215,139,23,190,48,51,251,185,63,254,249,254,107,193,223,203,157,240,183,171,216,169,113,83,245,247,79,148,142,89,47,60,241,93,57,102,117,182,93,87,252,248,223,53,155,205,179,252,58,59,103,125,242,137,118,137,245,137,170,196,90,21,97,15,126,106,30,124,142,158,35,62,215,75,248,60,217,138,207,6,155,107,90,60,168,33,82,4,173,226,129,208,175,253,212,38,186,44,206,4,11,218,209,213,237,140,174,198,190,191,245,2,102,189,96,183,126,170,46,236,61,145,237,113,249,234,220,222,19,197,107,37,212,68,129,177,205,43,96,172,185,172,15,54,184,224,197,219,51,212,52,225,209,242,133,221,189,37,140,92,159,106,180,156,31,179,202,30,200,59,112,202,240,59,221,140,114,58,239,9,118,132,87,160,225,197,193,87,94,170,254,120,111,110,126,231,171,217,235,13,94,229,75,90,207,39,188,236,156,172,246,237,109,179,143,187,184,183,98,168,118,58,139,128,250,21,9,184,166,191,3,227,234,182,180,241,86,207,232,46,124,190,232,142,206,32,165,200,206,32,201,30,122,174,211,193,192,124,228,232,23,139,135,175,106,11,218,141,51,84,102,174,213,124,39,84,152,99,147,118,134,209,238,18,91,47,42,37,249,221,154,199,63,58,117,126,150,3,223,196,71,173,25,174,25,166,113,98,208,165,29,7,32,242,105,231,222,73,119,252,47,49,110,154,220,0,154,77,236,238,206,107,205,144,56,196,237,49,232,210,147,120,152,87,124,156,131,241,133,61,197,3,141,205,237,43,208,148,89,129,134,196,49,227,82,224,40,207,81,2,196,144,24,190,242,64,166,244,64,38,205,64,14,148,7,226,198,255,82,235,47,174,25,241,60,99,56,108,70,234,110,139,124,112,231,245,59,82,237,224,244,124,195,61,74,195,61,79,126,113,167,91,147,145,62,183,231,112,203,61,104,100,158,30,12,32,103,177,243,21,114,159,230,105,226,181,242,4,77,171,4,135,140,130,143,150,28,36,184,101,222,225,125,183,248,236,76,193,55,142,242,202,18,126,45,28,96,142,150,112,47,231,53,7,47,180,45,225,103,46,84,37,208,106,196,229,106,196,222,175,84,207,5,190,210,186,200,231,204,38,120,113,42,93,230,30,223,75,155,170,215,155,202,117,225,211,237,34,234,167,171,34,106,245,62,232,193,63,154,71,68,173,191,0,246,176,74,88,105,174,147,190,180,135,117,29,157,81,29,56,223,134,144,167,207,87,159,62,168,70,92,58,63,207,30,86,237,197,201,78,231,94,98,167,215,41,59,61,213,206,78,171,71,82,251,170,252,245,224,167,231,97,167,254,139,8,123,75,71,7,198,56,124,161,216,123,85,182,251,194,186,17,112,125,122,129,248,227,118,188,173,58,125,216,55,87,197,219,185,121,240,214,123,158,196,0,81,224,109,129,116,26,109,109,68,91,127,75,196,10,180,165,43,188,110,134,222,138,231,190,220,192,221,192,88,226,222,101,94,215,117,149,183,57,178,219,94,36,97,96,101,247,20,190,196,101,173,205,10,142,149,173,224,4,98,166,135,124,149,151,28,196,37,150,225,171,86,193,87,61,37,198,201,227,36,105,198,198,60,203,42,204,179,188,204,152,31,209,211,50,232,107,85,175,55,90,29,208,211,187,38,244,180,22,168,134,93,197,80,188,246,157,111,223,148,44,171,126,183,106,89,85,141,56,147,69,180,200,18,4,226,156,246,31,231,24,99,103,111,107,154,235,135,136,5,237,86,84,185,64,224,62,143,44,181,101,19,181,140,151,173,236,84,227,101,153,157,186,215,196,78,189,171,176,211,207,125,233,90,216,169,167,220,182,205,193,142,38,127,23,231,187,110,59,31,31,253,78,55,12,191,55,12,209,171,50,68,131,47,110,105,231,47,180,114,134,248,204,159,180,49,196,125,159,153,135,221,57,29,188,33,178,182,169,98,87,241,134,136,252,165,240,118,216,238,13,145,129,87,242,150,216,238,13,145,65,80,242,102,216,238,13,145,65,88,242,102,216,238,13,145,65,87,201,155,98,187,55,68,6,221,37,111,138,47,32,111,136,206,247,200,27,162,215,201,27,162,95,242,134,152,83,125,139,55,196,193,77,143,157,57,248,171,83,95,254,218,95,124,142,189,230,26,94,204,49,55,238,90,189,34,118,21,94,17,221,84,61,253,201,210,139,57,79,126,178,226,21,81,219,112,151,253,34,154,213,201,43,86,167,26,114,139,194,53,226,108,246,40,206,92,233,217,28,175,236,28,241,116,150,227,201,239,219,179,57,197,81,224,117,244,108,206,169,79,182,241,147,11,159,172,222,110,168,70,236,123,98,30,247,136,78,240,2,184,156,0,131,155,126,231,55,223,251,91,191,125,250,23,191,152,93,151,252,133,111,255,205,103,62,125,230,19,191,242,175,58,170,11,243,92,77,48,62,2,90,215,183,168,56,240,118,82,245,43,205,146,3,138,253,69,224,10,215,37,219,180,4,183,172,69,116,88,17,109,141,232,215,145,63,185,159,111,54,155,115,207,255,153,247,124,183,21,58,206,67,87,113,91,193,77,213,23,159,45,25,30,156,126,182,106,120,96,181,221,86,232,60,15,238,85,231,193,187,158,230,225,187,100,123,80,186,174,112,224,217,118,103,79,205,202,137,231,177,106,196,201,106,196,185,103,171,219,102,213,136,61,205,142,238,61,190,147,235,10,226,133,181,21,108,124,22,46,116,43,248,255,128,155,146,215,205,142,240,204,95,180,239,77,252,69,117,165,172,222,88,60,248,151,243,236,8,243,23,0,94,150,148,59,243,18,205,75,71,20,215,145,153,237,133,175,181,95,30,251,251,234,229,177,106,196,236,223,119,70,200,246,75,234,118,251,37,117,139,94,76,80,164,195,242,88,94,253,94,187,61,6,180,11,34,34,17,104,183,91,44,67,234,146,171,38,202,98,81,11,92,227,161,29,128,77,239,193,170,179,34,93,195,130,201,73,46,94,185,59,124,116,53,83,147,245,210,70,220,24,240,77,254,168,181,145,158,220,5,22,211,131,22,195,146,38,126,72,220,145,88,35,226,176,175,223,64,56,132,191,108,68,76,249,164,239,33,242,249,105,18,198,147,148,117,72,174,195,159,245,114,61,226,173,147,110,98,163,22,163,221,137,187,216,1,7,248,166,102,179,217,140,71,173,189,14,112,88,63,34,246,224,239,186,17,209,116,20,35,26,60,235,76,36,66,211,32,22,115,244,22,76,66,206,199,236,196,221,98,182,132,228,18,107,12,24,44,73,55,48,150,116,169,218,68,82,83,75,182,42,14,181,93,234,151,154,77,123,71,99,103,36,192,6,166,120,154,176,17,225,3,3,119,115,196,130,0,132,114,70,196,52,38,10,53,45,210,248,167,37,131,112,147,192,126,134,56,48,63,228,65,139,228,188,91,140,65,151,250,83,134,116,222,165,190,69,191,88,248,140,147,170,169,159,153,97,241,58,105,133,181,0,108,176,55,176,1,197,39,146,218,93,108,0,106,234,89,190,3,103,162,220,11,129,208,62,106,235,223,25,243,59,103,126,207,154,223,139,230,183,233,232,223,73,7,108,21,166,242,70,16,106,198,78,149,189,83,46,197,117,69,127,222,0,66,29,112,82,217,11,2,33,174,236,157,152,77,164,178,75,113,185,100,147,144,227,74,72,79,9,89,211,99,33,192,21,128,188,217,234,232,187,241,123,255,31,24,220,76,211,233,171,112,27,41,206,181,9,37,182,68,63,132,60,222,87,171,94,77,113,209,230,136,135,63,132,17,48,30,109,2,95,173,31,39,59,186,111,179,241,200,13,96,9,2,157,196,91,191,58,201,97,163,72,174,32,198,22,91,67,37,107,191,54,145,44,209,232,180,228,59,65,167,240,149,216,191,164,232,152,192,108,61,109,217,54,5,96,227,252,246,155,154,53,130,76,139,20,108,184,49,166,231,123,142,11,73,187,211,211,66,137,241,72,229,176,18,67,98,70,36,174,18,19,93,75,107,27,235,110,24,109,220,200,98,30,116,109,220,184,209,18,27,55,118,111,244,54,250,27,3,96,106,102,207,9,166,234,228,156,231,102,96,234,137,34,184,22,152,58,93,4,135,128,169,61,63,123,130,129,27,63,197,163,81,136,162,165,96,199,63,158,176,232,149,89,175,226,91,91,251,148,68,13,76,196,190,72,23,132,58,107,167,241,135,104,71,116,68,156,183,65,32,57,157,195,223,8,145,59,164,254,124,248,221,39,152,10,141,191,104,166,62,82,4,87,2,83,31,47,130,43,128,169,223,203,251,51,2,203,163,30,211,159,31,154,183,63,203,27,152,152,247,167,233,20,253,217,235,232,254,236,193,223,229,72,92,225,40,246,231,203,8,129,62,227,188,136,169,175,189,59,107,241,78,216,16,13,152,22,55,229,45,198,173,45,98,10,8,243,116,183,25,241,105,91,113,185,1,37,3,36,237,112,4,91,249,51,28,87,47,181,50,0,76,189,63,31,215,29,176,38,31,151,154,119,92,107,26,152,152,143,235,98,9,206,151,77,171,151,240,119,13,50,143,240,78,68,183,69,109,232,54,22,192,162,70,116,35,196,138,193,234,65,233,119,36,194,198,125,13,123,12,250,144,111,245,160,72,210,143,34,200,138,134,236,134,21,141,200,134,123,238,139,28,236,200,81,59,113,27,50,2,183,17,185,212,71,91,210,195,68,199,108,121,35,44,107,68,30,172,108,68,62,172,106,68,53,234,183,141,83,83,71,166,229,164,176,180,16,199,4,44,37,113,108,214,9,199,2,197,165,149,97,228,191,227,146,133,63,168,163,204,20,81,212,15,232,168,111,96,212,128,142,186,91,71,253,59,4,241,50,29,245,10,29,117,24,163,4,69,41,46,123,20,151,253,138,19,95,92,164,184,236,83,92,58,138,75,143,222,135,226,50,202,186,240,65,44,102,47,188,152,233,166,193,236,133,20,203,134,241,145,133,21,201,198,243,241,171,103,15,95,174,179,126,6,179,70,243,102,69,220,167,181,101,214,65,116,97,234,75,8,80,71,59,106,15,111,197,24,3,226,167,120,52,12,61,209,74,131,163,63,144,227,232,43,12,5,172,51,184,122,7,182,163,139,154,169,120,138,71,183,64,127,180,220,20,189,187,173,232,205,166,232,157,216,189,112,56,0,118,11,99,234,175,103,249,230,232,101,176,34,231,63,203,242,130,63,86,161,139,21,141,104,153,161,139,17,96,114,113,120,75,0,108,136,49,245,151,79,252,242,251,189,205,209,6,184,231,190,70,180,196,212,115,87,94,207,15,152,14,12,105,218,149,175,222,196,229,61,225,203,176,239,6,112,79,241,104,61,172,202,73,179,55,47,122,91,165,11,171,26,152,72,93,24,5,38,131,112,3,65,0,69,75,34,240,117,0,81,96,106,9,231,29,8,52,48,145,106,217,8,76,214,195,245,88,203,126,172,197,195,90,110,134,193,200,55,181,212,230,173,101,48,35,55,33,95,14,76,146,31,36,166,62,132,181,116,97,45,107,193,83,98,115,228,152,138,70,242,138,126,2,196,6,54,45,162,53,248,251,187,66,122,228,109,73,125,2,75,46,198,146,67,48,190,73,188,6,87,78,42,121,103,94,242,77,8,193,105,145,140,111,18,63,130,26,206,144,56,41,228,93,166,19,86,184,22,171,121,10,171,9,176,154,155,224,150,28,29,238,200,235,88,82,225,169,152,50,227,164,208,165,98,228,19,9,61,179,37,212,52,69,249,233,90,193,146,45,40,174,9,232,194,239,87,141,90,71,29,232,133,87,141,10,6,189,202,79,97,139,254,138,83,253,66,23,241,199,253,72,73,183,104,174,60,233,132,67,65,54,186,95,32,18,9,239,8,76,167,89,120,91,64,11,143,10,179,180,219,130,12,136,38,226,214,128,88,184,234,205,34,134,131,108,178,76,196,45,129,98,114,80,241,240,101,65,134,12,38,101,3,166,128,226,225,250,128,214,91,85,207,82,214,5,180,252,168,190,44,226,230,0,186,27,209,178,108,245,48,177,107,131,12,73,77,196,16,214,184,74,241,240,166,0,217,238,226,140,79,152,228,27,233,149,181,254,140,217,152,216,27,2,112,26,81,111,198,181,76,236,154,32,227,126,38,98,117,144,113,81,19,145,96,99,43,20,15,101,144,209,185,73,129,32,227,25,38,98,85,128,11,73,61,227,223,38,118,101,0,53,20,102,252,140,231,152,248,21,1,52,238,139,220,108,1,48,177,203,3,88,221,136,236,76,110,49,177,131,180,148,137,76,184,49,177,203,130,44,66,179,189,112,105,144,225,158,201,49,144,81,226,226,54,94,100,27,36,28,70,22,25,214,3,49,102,178,178,60,235,235,42,120,202,12,247,216,172,184,92,13,76,198,97,29,129,179,90,241,112,113,214,80,127,27,207,49,242,130,220,186,137,203,70,232,103,25,251,242,140,111,48,212,76,80,226,166,205,91,67,47,104,227,69,175,40,58,66,153,110,35,214,238,6,89,63,195,158,172,76,60,175,104,225,52,162,184,36,90,28,45,137,22,211,70,180,56,134,191,14,234,45,161,221,9,46,125,149,42,233,77,63,93,229,90,96,114,32,180,17,44,203,20,15,227,78,197,171,28,117,101,81,60,1,38,135,66,11,139,175,84,60,236,206,134,19,205,43,143,69,133,60,54,107,186,127,18,229,177,110,77,249,51,54,106,19,118,188,28,185,177,126,68,84,106,221,82,186,138,201,37,56,131,11,88,242,177,194,208,9,180,32,62,103,39,107,236,49,195,160,110,40,203,54,55,144,108,115,212,193,54,181,230,231,4,173,138,101,73,242,18,67,226,172,157,116,217,244,117,222,150,139,240,247,156,45,251,0,80,26,27,108,104,246,122,209,78,122,200,139,253,144,184,108,203,126,252,189,100,75,71,27,166,16,18,55,157,70,228,16,141,73,134,108,251,71,100,132,209,147,78,228,42,178,133,71,249,192,112,158,178,124,16,6,70,144,210,236,42,75,10,107,58,218,240,55,146,175,188,156,255,81,208,201,249,35,5,173,156,127,82,144,180,159,25,145,18,111,38,136,224,220,207,82,68,92,0,171,151,146,166,105,144,251,157,64,174,86,12,106,192,6,101,12,158,226,59,228,210,77,12,198,33,26,148,13,16,234,50,109,120,77,59,121,113,117,88,164,186,153,181,150,105,225,40,197,204,138,34,207,1,138,217,91,42,181,151,98,230,138,24,68,158,163,206,168,117,145,235,239,105,49,106,77,9,253,221,116,70,173,73,243,61,235,140,90,77,17,46,10,160,7,250,105,155,6,177,182,135,30,92,108,72,11,36,6,7,49,56,216,144,61,80,199,32,96,16,26,178,31,186,96,17,150,233,163,99,122,140,93,222,144,125,176,166,33,23,65,87,67,118,97,231,157,52,254,32,234,177,179,250,131,44,2,86,97,214,85,13,233,192,16,6,87,98,112,101,67,122,176,12,214,198,15,195,0,70,46,195,200,101,13,89,3,23,150,96,35,55,146,45,2,198,46,198,175,21,248,181,186,33,93,240,27,176,121,211,179,207,62,251,108,247,99,247,237,140,92,240,99,137,188,163,147,150,139,51,104,85,21,138,64,241,128,30,195,93,16,185,40,46,53,99,154,116,12,250,238,199,143,248,8,15,173,242,222,137,127,23,27,0,31,245,116,218,102,41,244,98,126,23,35,221,205,54,27,35,211,52,117,168,226,253,208,115,222,122,208,140,135,33,9,49,96,13,123,108,147,144,13,197,212,169,61,51,44,254,55,210,10,193,208,122,211,161,221,224,132,209,158,98,178,100,139,38,215,227,66,174,208,118,150,22,109,36,88,197,190,148,175,55,18,252,242,70,130,219,2,226,37,217,70,130,32,8,187,57,132,173,112,21,177,11,232,82,235,245,230,211,83,108,28,23,138,13,108,143,67,155,28,94,91,9,25,152,100,86,109,101,139,217,194,94,72,23,173,249,186,232,180,53,8,196,218,112,110,2,221,65,98,133,139,58,12,69,7,16,116,122,37,213,11,151,33,89,185,217,192,17,155,211,211,250,74,35,90,54,80,180,228,208,184,207,30,83,162,152,146,149,129,145,54,187,204,98,177,164,5,41,148,153,84,87,89,227,218,13,239,184,61,166,172,106,249,227,66,46,107,69,166,50,50,8,66,6,101,119,40,181,242,170,165,156,14,165,86,93,181,148,219,161,20,180,148,186,171,16,36,48,53,25,196,98,94,107,177,12,170,175,110,41,217,2,81,75,67,212,47,10,174,200,32,186,216,64,116,117,75,233,141,173,146,82,50,132,237,214,90,139,103,237,110,93,205,84,60,145,176,53,250,140,4,231,221,210,235,157,174,44,137,204,203,157,126,226,208,241,99,210,141,248,73,150,8,189,214,24,56,208,75,248,89,67,252,92,170,241,115,105,153,132,60,112,16,63,29,196,79,7,186,53,126,50,36,33,102,246,111,161,166,169,166,166,158,162,45,219,104,3,179,17,200,72,52,44,180,3,176,112,69,182,21,125,83,34,171,214,154,119,41,162,46,69,69,151,122,117,151,122,203,36,51,79,151,28,92,87,60,96,241,79,75,7,44,20,66,24,88,40,78,217,212,48,210,142,29,80,47,145,116,24,146,206,124,249,173,0,24,120,113,31,176,33,193,236,49,176,128,225,106,39,108,61,22,6,150,10,83,96,185,8,130,5,44,204,108,143,80,30,172,11,151,99,75,215,143,163,231,193,136,96,216,205,56,93,147,201,80,142,153,224,0,39,184,94,76,240,242,210,4,143,183,160,198,203,77,73,215,148,140,177,100,80,148,28,44,149,188,167,99,73,207,148,172,99,201,176,40,185,172,84,242,135,91,74,254,179,50,241,248,154,120,162,162,224,210,160,144,12,141,68,40,78,27,137,112,206,158,191,166,154,174,169,171,168,105,160,67,77,135,132,174,9,69,131,14,36,82,55,163,145,88,85,119,81,213,146,210,104,182,116,36,106,211,86,178,22,75,198,69,201,197,165,146,247,118,44,25,154,146,3,88,178,167,40,185,168,84,242,190,142,189,141,76,201,27,177,100,111,81,178,191,84,242,85,237,4,237,204,67,208,86,39,130,182,174,78,208,22,82,143,133,212,99,125,103,4,237,40,113,23,227,21,130,110,169,181,133,160,173,171,19,116,199,46,149,8,218,66,146,191,139,49,112,192,90,8,65,87,243,27,130,254,9,96,27,24,162,29,56,248,197,239,98,28,28,172,135,40,216,201,41,88,23,70,10,118,202,20,124,23,43,81,48,237,227,116,233,125,156,100,145,94,245,250,138,57,237,11,58,162,64,151,65,129,62,68,129,254,74,118,131,2,219,218,81,192,19,143,86,81,192,209,40,224,228,40,224,44,24,5,156,133,162,192,38,161,193,27,217,203,244,68,243,12,11,172,124,230,157,246,153,119,22,60,243,243,244,132,102,222,49,51,233,109,178,80,207,240,112,38,253,43,204,124,231,252,52,243,78,252,38,226,224,184,32,191,6,81,19,67,254,168,229,131,7,141,81,139,134,227,225,236,251,216,17,93,1,206,190,167,43,29,17,254,38,43,24,181,74,179,111,150,119,11,107,195,85,222,30,83,139,90,103,147,22,248,158,108,131,110,53,83,112,37,170,238,38,155,7,50,52,167,155,213,73,239,22,227,194,64,46,181,176,195,75,9,144,17,2,114,185,6,228,242,242,148,214,80,119,75,19,143,250,15,189,157,166,52,162,41,85,12,162,108,74,187,171,83,218,173,167,180,82,89,222,147,110,234,73,119,209,147,118,228,178,230,235,9,77,105,141,166,168,134,12,68,207,88,205,16,115,183,153,210,168,117,74,59,231,167,41,173,197,75,104,117,54,196,188,86,216,163,154,112,41,163,234,199,229,185,159,180,96,10,211,114,29,154,112,149,216,133,89,174,29,221,32,18,187,200,150,107,200,151,107,189,108,197,250,20,56,113,180,202,155,43,193,83,78,154,212,80,197,21,45,42,238,140,24,181,38,29,189,212,45,174,34,200,113,33,251,205,22,108,45,215,148,167,157,20,156,188,218,57,39,213,58,119,158,62,107,99,204,25,187,165,153,73,135,246,102,233,123,74,140,90,179,230,123,206,30,181,102,108,210,29,204,70,113,79,214,114,38,134,82,236,96,17,187,172,136,29,40,98,151,20,159,139,138,207,190,226,179,84,111,119,241,25,21,159,65,241,89,43,62,189,226,211,41,62,173,226,147,7,138,23,112,139,2,232,131,109,155,96,239,227,168,113,111,123,28,21,237,62,84,180,111,132,87,101,177,175,162,216,27,49,246,62,250,28,192,207,123,233,115,45,126,74,216,146,229,221,66,177,146,76,62,212,148,72,227,15,210,14,210,156,173,191,126,152,146,235,152,124,15,125,198,100,177,12,227,84,254,97,24,167,72,114,129,48,4,91,179,74,183,82,236,16,198,190,250,241,124,123,162,117,23,128,145,17,32,106,191,133,78,158,162,70,110,199,27,80,254,81,23,132,217,120,33,193,19,99,46,233,141,151,210,22,74,255,136,56,139,242,209,226,17,241,36,254,174,30,17,103,240,183,107,68,156,198,223,37,35,98,14,127,151,141,136,83,66,111,53,206,226,111,207,136,56,137,191,214,136,152,193,95,24,17,123,81,98,91,53,34,246,224,239,202,17,209,196,223,205,163,214,101,11,4,248,35,226,18,254,174,24,17,23,241,119,219,168,117,30,127,251,70,196,57,252,125,213,168,120,18,127,111,28,17,103,240,247,190,81,107,14,127,7,70,196,41,252,189,119,84,156,196,223,181,35,98,6,127,183,140,90,211,248,43,71,196,49,252,253,225,81,113,4,127,235,35,226,48,254,222,51,106,77,225,111,60,34,14,226,239,248,168,216,143,191,193,136,152,196,223,173,163,214,94,252,29,26,17,123,240,247,213,163,226,25,28,199,224,136,184,44,242,173,37,113,14,191,27,122,171,75,237,39,178,153,45,200,70,77,217,149,45,41,245,56,197,252,189,157,154,39,100,4,44,186,139,29,50,178,236,97,219,80,180,61,42,246,217,197,230,212,1,250,190,133,93,180,95,193,254,171,45,104,57,192,85,129,105,235,8,172,241,164,72,213,57,158,93,172,102,141,200,5,22,191,143,211,6,50,233,237,91,17,17,128,25,122,80,3,173,59,64,122,87,179,18,25,180,89,211,184,197,214,137,143,88,231,99,96,175,99,238,123,237,161,125,51,68,58,129,235,178,222,224,244,21,219,188,35,207,123,217,54,121,47,217,89,94,24,84,108,51,244,236,104,128,108,236,68,86,75,168,92,111,0,52,160,95,241,183,239,164,72,208,181,234,141,85,11,75,116,237,208,55,8,105,135,213,212,122,142,106,165,59,103,139,244,118,46,182,110,143,193,13,68,107,125,250,252,218,196,45,165,184,160,1,171,26,200,212,77,67,180,47,55,212,128,149,13,92,100,76,228,74,221,122,13,150,101,163,169,236,210,225,218,7,250,44,189,117,192,211,89,215,142,21,3,94,220,128,238,6,172,104,232,186,87,24,34,45,72,23,92,88,77,149,64,108,242,16,79,96,210,106,35,228,31,44,17,242,97,81,37,228,163,165,133,98,181,33,228,87,143,90,68,192,91,201,166,82,192,173,134,112,99,67,184,119,85,8,23,25,128,165,207,12,136,0,123,12,1,190,124,68,156,54,4,70,132,56,104,8,113,227,136,152,53,132,70,4,9,134,32,23,141,136,227,134,160,137,48,187,12,97,142,142,136,163,134,240,136,64,87,25,2,77,70,196,33,67,128,68,168,43,13,161,174,29,17,7,12,225,19,193,46,51,4,187,100,68,236,51,12,130,8,215,53,132,59,50,34,154,150,102,96,68,192,43,10,2,158,18,21,2,190,96,165,122,103,57,39,87,77,210,123,69,149,164,47,243,2,178,195,134,101,101,44,44,99,105,183,25,22,119,135,97,121,119,26,22,136,107,41,182,108,153,157,104,81,16,251,69,174,137,221,176,137,175,242,130,77,44,173,178,137,91,216,87,56,178,131,130,25,136,14,204,192,34,102,192,136,25,16,154,105,74,111,225,8,1,137,151,116,11,45,76,169,14,83,26,66,18,112,33,212,18,44,15,192,2,59,254,21,94,229,11,88,227,89,39,205,239,91,242,181,214,148,175,123,197,213,81,55,133,80,93,164,10,5,121,52,218,235,36,100,148,184,199,73,172,45,218,201,81,211,145,33,109,101,134,56,98,148,251,98,45,247,197,101,9,212,50,27,153,40,240,105,11,198,189,14,185,70,154,118,37,35,255,66,174,108,0,39,157,136,171,227,110,62,14,174,183,170,109,252,216,231,196,18,229,65,178,124,220,235,104,163,215,16,172,188,118,96,96,109,29,140,247,240,226,86,13,31,18,107,164,133,63,32,67,213,31,247,36,44,226,140,154,62,236,75,130,12,131,112,68,132,192,212,98,196,10,134,157,139,245,232,227,173,129,238,128,30,42,182,111,86,229,245,246,24,172,35,238,161,237,117,12,200,176,99,247,1,71,160,223,3,92,157,214,110,162,68,49,26,66,66,242,8,5,92,29,36,84,140,127,18,27,211,209,71,48,250,152,142,126,20,184,154,209,209,211,92,123,189,162,104,229,75,41,118,43,154,135,131,34,65,28,89,166,237,63,129,1,87,135,8,227,227,31,214,25,166,252,44,195,144,56,228,203,31,0,38,165,30,123,32,127,80,207,248,144,56,44,18,70,19,158,213,113,212,212,161,107,136,200,229,21,27,17,103,108,109,160,58,71,199,119,28,197,76,224,234,176,223,98,159,60,69,25,2,83,27,121,193,202,141,152,227,27,76,159,134,116,31,18,166,134,31,74,101,175,233,221,63,131,33,105,33,210,99,137,57,145,202,59,128,147,81,229,157,192,213,108,45,149,35,136,27,181,84,246,96,31,107,169,236,195,241,214,82,217,143,249,106,169,92,4,92,237,171,165,114,9,112,213,172,165,50,194,78,122,169,28,5,174,78,121,169,68,56,205,120,169,28,68,40,123,169,92,129,61,243,82,185,18,39,195,75,229,42,224,106,210,75,37,0,87,123,188,84,174,6,174,206,219,169,220,8,150,100,136,228,106,56,149,180,149,199,146,27,27,145,32,165,80,46,37,101,1,54,146,78,145,131,130,173,21,225,168,117,214,198,196,1,249,114,252,1,25,138,221,248,177,134,54,150,128,111,98,163,226,146,173,108,185,86,17,38,82,169,161,164,129,177,208,64,137,49,144,164,121,46,151,10,56,50,208,139,182,49,245,101,240,114,8,181,241,248,111,253,195,12,27,17,71,124,141,179,137,15,44,94,211,241,124,133,15,137,163,46,77,244,140,208,246,230,211,110,154,220,213,226,195,204,37,134,122,23,108,44,199,158,181,71,173,163,46,104,140,34,82,60,108,19,218,54,157,20,110,132,165,134,112,125,157,99,206,78,98,252,61,99,39,3,138,43,166,24,172,5,47,238,210,220,34,17,141,168,78,206,197,28,164,248,33,241,164,35,187,41,187,35,111,198,223,211,142,92,76,213,56,114,57,254,158,114,228,77,248,59,235,72,106,250,184,35,169,153,105,71,214,201,117,155,35,55,208,208,28,25,18,13,57,210,165,46,58,242,22,66,44,71,58,68,114,142,28,214,212,44,111,213,212,44,107,154,167,201,46,205,211,228,109,100,193,62,203,210,120,41,165,120,154,238,247,208,85,196,213,112,167,81,24,87,35,175,190,179,56,98,214,51,226,227,210,168,103,4,129,225,128,11,49,12,128,175,61,238,237,55,117,77,82,93,128,0,152,22,88,25,96,101,133,229,62,211,54,222,155,248,168,69,182,221,88,85,8,117,170,138,218,209,213,77,153,234,14,82,117,171,138,234,86,181,86,135,52,232,128,107,188,220,29,49,165,14,83,169,149,134,92,5,131,149,88,138,72,57,241,91,202,134,80,55,101,167,77,217,99,84,118,69,81,118,5,150,45,74,77,186,105,146,228,109,170,41,55,77,220,22,200,36,47,163,217,178,147,53,84,173,157,220,64,172,14,65,248,10,140,153,177,19,178,94,159,181,147,245,152,2,9,178,50,117,145,152,13,178,79,23,94,6,175,136,239,126,185,53,67,243,188,223,53,144,205,46,157,83,139,89,199,9,160,174,1,168,107,122,80,135,53,80,180,154,192,58,208,45,185,149,150,168,251,80,135,4,91,155,237,216,26,187,139,93,246,128,195,221,35,226,162,103,128,86,131,97,3,180,147,6,104,51,4,180,193,2,104,131,173,64,99,35,226,82,86,58,131,213,144,152,51,165,79,81,233,101,69,233,101,45,165,135,196,147,38,227,25,227,136,132,141,136,179,158,30,243,25,15,19,198,18,34,149,187,199,137,250,55,166,80,143,137,55,143,201,58,173,112,27,19,31,234,106,142,63,148,106,38,162,230,204,122,5,117,92,88,235,35,153,157,4,148,23,10,226,80,166,175,83,126,226,70,60,80,76,38,138,75,151,184,25,49,245,68,47,68,135,253,136,47,11,20,15,32,49,254,1,26,121,77,25,201,49,100,169,124,72,92,246,245,112,46,233,171,112,184,154,94,54,247,29,46,249,96,174,227,232,67,76,27,150,103,248,41,18,151,82,134,196,113,170,101,70,200,151,105,88,204,8,13,139,105,97,102,20,49,8,9,138,105,98,218,83,51,162,12,93,77,137,8,206,46,194,57,50,100,225,166,9,211,208,206,124,27,44,38,145,132,58,145,192,98,232,110,233,132,221,210,137,87,204,219,137,87,80,39,18,221,137,73,211,137,125,212,137,37,69,39,150,96,39,42,205,115,99,159,94,12,190,17,57,192,10,194,55,12,129,80,126,72,28,52,117,31,168,105,253,74,215,109,49,88,84,170,219,84,90,30,12,233,162,243,85,122,216,84,122,136,42,237,47,58,220,223,86,105,101,162,26,116,211,116,47,209,105,91,229,77,87,195,235,128,33,218,73,215,112,145,229,134,104,89,78,174,92,53,221,180,141,100,39,221,20,150,3,67,146,61,234,211,244,26,146,109,22,160,75,88,101,156,62,92,75,87,220,107,232,138,171,187,50,221,177,43,236,46,118,190,166,185,199,217,154,153,128,130,123,28,51,16,62,74,16,238,43,152,124,95,219,154,113,46,43,93,112,143,25,83,250,56,149,238,41,74,247,180,148,30,18,167,76,198,217,90,206,61,230,106,122,196,179,180,66,222,13,245,42,227,216,40,253,156,127,148,88,199,148,95,97,29,35,98,12,110,203,46,128,221,154,221,254,186,197,30,3,148,165,97,67,35,170,135,181,224,138,89,178,235,255,172,17,213,128,201,16,26,153,182,221,136,124,44,140,243,37,142,185,184,96,170,15,252,220,9,166,214,153,158,28,252,204,12,83,231,63,51,195,226,221,37,55,162,159,169,186,17,253,108,213,141,104,53,226,112,53,98,186,26,49,91,141,56,147,69,232,190,219,13,184,73,111,145,216,102,27,225,230,198,206,136,193,98,186,247,107,143,129,167,214,63,36,95,166,24,217,191,161,62,197,81,45,3,23,214,166,137,57,73,166,211,133,226,109,92,31,37,56,166,157,74,0,83,67,69,82,69,30,172,67,112,85,121,16,57,220,98,104,147,4,167,92,168,103,82,45,48,181,220,168,43,65,155,28,72,106,219,144,56,235,232,37,252,188,147,47,157,1,241,184,27,97,169,34,164,188,72,165,46,219,90,26,156,22,137,109,147,210,121,89,104,97,112,191,165,133,190,73,75,110,34,110,104,105,225,109,175,37,73,92,216,99,201,31,34,2,178,180,240,118,73,104,97,240,162,208,8,121,65,104,161,239,188,208,158,119,207,9,73,58,199,89,161,133,191,39,133,22,246,78,9,45,4,206,10,121,27,45,212,66,11,161,51,66,122,154,123,203,132,92,220,206,43,12,222,81,22,6,239,168,10,131,117,176,193,203,37,32,232,130,27,8,14,245,121,133,65,205,58,73,24,92,60,175,48,136,85,33,189,93,93,24,212,213,173,106,173,14,215,218,46,184,225,26,132,193,122,75,217,0,252,5,9,131,69,169,166,155,38,55,231,109,146,104,118,83,11,100,146,219,141,48,120,131,17,6,215,229,98,217,43,141,48,184,222,8,131,27,136,209,222,92,97,178,55,193,237,240,202,66,24,172,50,88,221,129,172,227,29,153,185,15,55,64,209,234,77,176,30,58,183,164,217,185,15,55,21,194,96,181,53,222,65,24,236,134,91,23,36,12,230,64,131,176,36,12,222,8,75,23,36,12,182,78,84,6,225,170,100,56,90,148,26,109,41,181,16,9,241,230,231,46,33,250,90,66,188,73,113,233,23,18,226,77,85,9,241,38,227,5,161,163,132,104,93,93,66,172,105,225,12,39,151,65,13,214,100,29,112,19,223,8,103,135,180,4,227,202,219,59,104,8,122,154,111,191,138,132,56,89,150,16,15,180,72,136,212,41,50,255,213,157,184,9,156,92,250,209,157,112,90,58,17,207,219,9,210,163,203,250,52,220,52,175,180,56,217,73,90,52,206,36,144,113,148,1,161,5,187,197,45,251,54,174,166,137,142,210,226,100,39,105,17,43,45,15,12,197,186,121,43,237,32,45,78,118,146,22,219,39,13,133,51,174,46,59,72,169,109,149,95,116,52,236,246,26,216,53,13,236,146,53,134,170,89,78,207,92,93,116,80,161,109,165,233,166,155,194,154,178,180,120,201,108,246,93,116,114,208,37,172,50,206,26,92,75,87,252,107,232,138,95,150,22,171,93,225,21,105,17,39,160,96,47,29,164,69,189,10,244,181,172,2,200,94,206,101,165,11,70,209,65,90,212,165,123,42,107,72,75,169,86,209,113,164,40,53,210,82,106,30,17,242,230,156,193,220,124,21,17,50,201,36,39,20,20,187,241,99,56,243,168,127,75,35,10,194,122,112,197,44,153,39,122,214,136,234,192,100,80,22,33,107,88,152,36,152,248,45,244,121,101,105,242,179,21,105,178,42,248,237,61,93,149,38,171,17,135,171,17,211,213,136,217,106,196,153,44,66,15,163,214,128,31,210,210,100,77,115,26,216,68,210,164,99,158,27,56,135,120,243,10,12,132,138,167,50,132,151,145,123,175,36,187,43,173,249,106,211,73,227,183,4,246,152,62,12,39,217,76,111,238,95,182,99,253,106,195,165,220,157,129,178,199,224,229,248,113,55,86,120,55,88,9,211,198,27,228,66,129,76,240,16,219,143,248,233,38,78,142,228,212,233,207,204,100,238,9,2,227,96,128,154,52,46,12,8,145,200,132,156,43,174,221,25,208,113,131,150,106,238,44,78,4,232,132,192,34,196,81,76,35,206,221,114,64,175,72,177,94,184,66,66,29,197,212,112,252,36,79,104,255,254,56,199,197,103,84,28,227,192,232,198,7,7,134,52,121,24,127,217,168,53,133,191,198,9,194,1,147,54,105,210,246,150,210,154,38,237,93,58,233,225,34,229,65,157,176,93,39,188,182,72,184,79,39,220,163,19,198,138,132,141,58,97,24,152,154,229,41,217,149,233,60,51,188,44,145,79,185,180,146,116,9,198,173,32,179,34,53,123,205,182,12,232,192,98,3,179,149,181,153,140,115,244,227,52,129,118,226,25,12,9,59,145,67,130,245,88,12,36,185,160,48,103,170,65,142,13,117,156,81,156,182,94,176,38,212,240,91,101,0,22,244,142,71,218,63,170,217,230,30,154,208,166,173,76,173,159,48,174,63,201,68,201,210,138,192,192,132,113,121,193,212,114,147,211,202,179,197,121,217,126,83,22,133,2,229,235,210,198,105,34,113,124,68,51,166,236,9,26,32,43,85,49,156,74,6,129,226,19,73,64,24,251,207,236,49,109,49,161,249,69,25,9,100,182,68,50,189,68,198,143,224,239,233,28,115,37,252,96,252,8,252,128,61,166,237,56,80,12,179,141,24,102,155,136,99,38,226,104,22,49,101,106,59,76,39,192,184,104,229,213,105,65,164,129,82,76,168,217,253,148,31,115,125,14,164,175,151,196,134,149,73,9,49,65,147,171,129,12,175,69,98,153,187,113,100,112,22,239,194,202,7,116,235,203,165,54,20,54,119,236,8,10,26,218,218,145,204,31,114,242,214,104,4,162,236,134,54,97,0,86,181,19,235,136,117,85,253,89,85,205,63,155,97,202,1,102,124,206,176,204,231,204,31,114,200,46,24,33,54,50,147,58,87,74,125,55,22,13,129,101,174,192,88,230,10,140,82,223,135,169,53,96,217,163,123,44,123,116,143,82,127,21,83,177,107,23,178,212,75,165,212,67,89,234,229,44,181,201,139,212,15,99,42,226,192,30,110,82,247,149,82,127,55,75,141,211,117,22,139,255,8,227,78,102,61,29,200,226,136,192,54,48,38,135,192,82,115,152,220,31,223,172,126,134,171,199,56,12,13,198,22,88,234,28,198,246,0,203,78,213,102,176,166,175,99,100,12,76,77,102,109,31,40,181,253,238,179,51,76,45,65,32,150,138,28,196,200,8,152,57,203,3,166,14,149,138,252,183,44,245,112,150,122,148,23,147,233,23,147,249,63,206,154,150,33,205,241,194,136,184,161,158,76,158,231,253,56,230,93,76,42,127,62,241,76,231,181,179,137,127,223,241,19,122,226,143,101,13,31,207,27,14,32,4,43,182,179,181,129,169,57,58,58,149,116,52,171,81,88,77,243,140,19,236,225,57,57,239,229,5,47,184,204,242,232,103,88,17,125,161,136,190,88,138,62,91,68,159,43,69,159,46,162,207,148,162,103,139,232,83,165,232,187,243,216,177,180,224,20,121,228,29,69,206,53,121,228,80,17,57,144,71,46,47,34,195,60,50,206,35,179,24,187,200,54,135,224,64,97,100,34,169,19,67,26,200,44,59,184,154,172,167,107,24,4,221,8,246,61,252,94,114,156,236,4,16,152,64,128,1,227,170,167,85,158,56,130,242,196,147,103,181,60,113,104,165,88,177,219,123,116,53,83,103,185,113,189,3,140,20,170,221,229,43,138,132,23,9,169,64,118,98,155,19,120,38,29,178,166,117,200,244,210,237,232,134,135,150,252,22,115,90,123,115,196,67,43,8,192,85,127,199,198,35,186,163,96,223,27,49,93,99,157,106,172,83,141,14,214,232,234,26,221,242,161,126,91,133,249,237,164,73,14,28,4,210,81,252,211,161,23,128,163,254,148,44,55,57,112,115,193,204,185,139,13,128,67,206,121,232,170,210,64,165,144,31,180,84,79,247,54,125,16,155,124,237,201,40,212,158,118,14,242,84,198,202,167,123,110,174,53,70,198,75,5,88,106,52,136,26,13,162,62,223,45,176,121,6,33,90,251,35,109,178,160,234,184,141,86,215,6,241,117,50,156,181,192,205,157,223,120,109,117,244,4,121,114,165,221,188,211,46,117,218,45,58,221,201,165,210,194,32,47,237,48,14,168,95,155,233,142,215,162,182,228,238,160,2,178,50,38,213,159,227,188,119,97,219,127,202,198,201,113,174,118,216,132,137,103,120,170,230,50,135,77,81,208,25,39,34,174,184,244,77,75,35,194,87,76,122,102,119,180,166,24,205,55,77,135,213,74,18,245,124,32,61,215,234,80,9,44,232,161,97,219,218,241,145,109,28,31,45,161,171,202,218,241,145,173,29,31,45,193,8,24,143,22,131,173,29,31,217,153,227,35,63,115,122,212,2,103,186,6,227,183,205,121,93,59,60,42,218,93,16,134,214,231,155,108,178,200,181,181,195,35,187,197,225,81,37,219,98,179,201,223,95,128,87,167,2,135,94,237,240,104,63,151,100,158,55,201,149,24,143,22,105,243,189,3,92,217,19,93,182,237,88,140,184,221,227,143,25,191,24,168,161,91,234,247,179,96,212,5,78,84,7,30,255,120,98,145,155,12,170,90,187,201,40,42,78,108,227,38,227,0,151,125,138,73,31,108,233,128,37,35,125,225,165,138,171,116,15,198,83,108,179,244,193,179,179,57,163,45,34,183,33,109,32,119,169,53,148,147,233,98,107,215,135,160,255,67,155,224,103,247,72,0,87,46,130,80,46,134,37,114,0,106,114,41,116,203,101,48,40,151,135,50,64,44,82,31,126,44,187,104,109,41,46,237,176,87,71,31,123,44,115,63,99,133,61,129,154,126,140,188,36,80,176,59,200,6,139,65,232,110,68,93,168,137,133,93,186,36,162,234,227,69,58,78,139,149,181,130,192,178,195,32,0,107,136,49,245,149,207,252,238,175,121,155,163,58,184,136,28,4,47,49,47,188,92,115,245,252,0,151,75,8,94,150,12,145,190,173,172,111,79,241,168,38,198,160,70,188,158,42,227,243,86,86,107,104,159,6,7,184,28,52,149,117,227,48,153,244,105,12,166,202,95,224,132,47,72,117,161,95,164,26,216,80,106,63,70,187,161,27,64,16,217,121,14,51,92,202,209,27,128,215,136,68,158,102,96,243,11,6,178,92,230,197,194,190,34,248,251,69,46,74,234,65,86,165,135,197,230,29,150,103,156,22,28,224,178,223,12,171,43,172,209,148,208,126,35,21,207,177,61,30,215,197,104,5,90,107,29,224,114,21,53,205,100,128,235,143,169,26,7,206,101,222,177,48,34,56,0,143,151,39,86,35,114,112,121,171,53,80,187,202,111,120,119,53,162,58,120,177,212,219,9,237,196,107,238,113,183,226,55,213,74,45,25,3,119,91,210,21,79,95,210,53,54,134,236,180,125,153,12,58,243,207,124,181,207,47,109,159,230,32,128,143,136,185,12,39,4,74,53,241,93,40,93,232,145,38,158,134,70,196,150,129,215,176,199,20,83,51,143,205,176,248,223,144,221,33,129,7,200,11,159,24,18,115,188,229,134,145,157,223,235,89,208,234,229,92,105,201,117,242,177,21,14,0,171,75,172,216,192,78,243,210,18,91,148,113,2,147,88,189,122,116,77,93,172,94,61,170,44,113,69,115,182,185,118,125,154,235,117,54,191,118,221,146,11,231,147,96,238,228,24,167,169,111,63,15,69,160,120,27,156,87,181,206,145,153,31,167,152,31,167,65,183,176,171,229,100,101,110,179,153,181,139,146,118,131,238,95,87,75,38,157,90,204,200,10,233,195,202,105,100,53,56,114,5,72,185,6,108,185,18,18,121,67,232,4,202,54,53,74,43,128,228,241,108,43,206,10,64,62,110,14,114,3,128,199,141,87,247,224,67,68,104,94,129,187,100,19,45,128,199,27,18,135,30,1,21,176,154,30,191,20,102,55,71,192,13,180,155,67,214,196,71,241,119,13,237,230,144,85,240,33,252,133,81,113,144,94,85,26,17,7,240,119,21,237,232,172,122,92,90,98,140,142,88,245,93,253,115,44,133,152,124,18,47,211,28,205,195,5,195,3,39,126,31,215,246,245,56,103,191,196,117,138,180,180,25,126,149,236,200,63,137,77,155,252,60,128,136,168,69,70,8,78,218,131,235,110,64,208,128,154,49,1,167,77,186,176,1,110,3,236,220,46,221,48,10,240,193,51,217,232,132,198,154,31,52,63,152,216,6,52,125,35,226,36,215,254,252,8,68,142,1,209,242,17,49,205,181,97,53,129,106,169,1,213,192,136,56,194,181,33,53,129,108,209,66,65,102,183,129,76,104,144,145,111,83,27,65,198,43,32,179,17,3,60,242,45,161,54,234,139,80,231,88,170,75,211,67,183,224,152,128,245,33,88,69,123,99,15,63,182,7,49,94,243,19,100,124,227,246,152,190,17,231,24,23,164,154,22,27,17,83,132,201,118,98,43,190,43,113,201,242,215,221,50,152,160,70,111,111,27,76,92,181,241,33,137,18,248,47,125,242,80,239,22,101,237,146,184,32,218,56,249,40,148,245,131,3,182,218,248,208,136,24,0,34,38,54,34,98,154,52,18,135,244,21,47,11,28,21,167,241,3,196,217,204,243,194,180,64,128,59,34,108,141,144,250,250,182,250,183,205,102,243,93,40,110,97,215,88,16,31,226,12,235,202,46,133,249,82,51,114,150,32,55,217,248,80,154,216,64,23,223,108,132,52,35,111,162,4,146,12,58,122,156,148,133,83,113,173,211,219,180,192,178,128,44,167,181,252,124,246,223,146,252,108,35,233,113,105,151,152,61,87,255,56,61,195,148,21,255,95,9,215,104,105,235,45,80,27,177,155,225,18,128,170,12,88,192,227,95,225,65,182,198,16,239,103,210,161,59,173,241,35,96,222,0,66,108,86,44,144,97,43,58,242,120,3,226,136,24,131,16,89,3,34,67,8,245,248,17,196,11,1,161,222,95,180,240,219,66,28,17,198,198,218,166,91,118,218,191,48,83,126,10,246,136,96,216,67,218,180,32,55,185,186,87,116,161,22,195,140,178,128,80,103,121,186,134,5,255,125,149,240,119,243,71,175,217,177,8,83,95,39,101,156,169,79,63,251,211,247,70,139,128,169,32,77,152,122,215,14,105,169,169,79,157,32,131,94,191,17,57,138,129,53,33,5,153,87,91,170,41,182,68,108,153,90,5,150,122,246,217,103,189,173,200,63,45,218,50,243,223,241,166,132,77,188,67,241,29,192,20,223,53,161,126,48,13,18,79,137,93,106,207,236,9,218,214,74,120,132,4,129,152,162,59,161,14,154,118,56,109,244,4,169,122,23,22,14,16,125,149,245,142,68,188,35,97,202,34,109,216,82,135,116,222,109,145,15,44,226,121,23,25,74,218,76,49,96,19,59,30,108,105,205,30,18,54,86,104,77,72,114,68,28,39,76,191,123,76,182,27,146,5,192,180,119,213,60,95,226,2,223,34,29,112,129,131,51,40,57,194,26,63,200,96,57,78,132,189,27,132,147,25,127,4,9,163,21,208,142,255,57,112,21,111,137,44,176,193,82,214,78,242,104,0,182,126,75,139,83,144,131,149,34,154,177,108,20,137,19,137,112,153,222,5,222,253,118,132,153,64,224,91,187,18,75,29,252,164,25,128,80,126,154,24,79,205,150,218,143,209,137,165,125,252,90,35,34,196,70,180,83,96,130,35,112,245,40,176,119,238,160,107,152,2,168,50,102,186,195,168,122,61,82,221,35,7,213,92,133,146,245,170,29,137,216,149,216,138,129,61,177,19,115,238,218,145,100,240,76,4,214,226,20,93,66,20,77,220,204,121,180,238,146,163,187,228,96,151,156,246,46,9,211,37,150,3,135,129,165,185,160,181,43,225,8,246,172,83,12,184,33,128,12,76,188,17,45,1,174,222,181,67,183,37,153,58,162,83,8,33,51,244,177,20,7,174,172,119,236,74,72,204,99,67,229,46,0,54,202,128,5,52,159,130,24,2,254,132,250,250,73,168,101,64,31,53,88,231,106,13,185,138,131,67,13,57,109,13,57,224,102,13,57,89,67,78,165,33,199,52,164,49,162,52,61,118,235,244,132,75,112,77,65,136,45,5,79,241,119,76,168,85,59,20,3,79,173,218,60,184,75,58,150,217,246,66,180,69,150,191,133,124,234,16,254,10,218,174,66,229,47,17,17,50,18,1,220,236,150,106,180,77,92,96,26,193,213,138,119,40,123,71,106,92,25,242,205,131,152,48,40,25,56,138,239,146,14,112,125,17,25,236,157,25,211,244,149,0,111,151,193,142,157,59,18,50,61,232,68,123,68,92,40,7,208,45,24,59,35,49,156,237,123,129,155,158,110,217,145,16,109,185,8,152,65,41,52,145,113,123,55,240,118,34,211,207,230,101,104,193,182,33,76,193,154,184,119,71,196,136,2,5,82,160,168,82,32,174,13,25,5,138,84,63,219,36,136,135,145,228,18,255,139,208,10,10,92,3,235,222,200,82,135,179,54,192,218,26,249,4,65,75,253,70,19,103,72,197,239,24,67,102,181,123,60,113,162,110,164,250,93,168,178,119,171,99,159,58,65,96,80,205,230,35,59,192,25,76,28,138,26,18,140,28,21,49,53,141,25,166,243,134,24,162,250,150,65,76,57,106,34,69,35,178,213,158,79,158,96,122,147,217,228,35,215,226,41,216,227,145,75,216,70,224,208,242,87,129,170,21,74,16,132,160,162,13,65,69,65,9,66,175,122,190,198,253,80,111,198,134,154,46,200,10,133,22,245,43,32,104,64,78,222,187,131,156,74,152,24,211,19,43,84,247,54,123,140,226,201,243,11,129,87,251,128,65,126,96,229,132,158,112,141,194,26,225,185,158,7,154,34,42,172,185,4,45,117,118,62,139,196,32,132,185,146,164,235,210,231,129,221,129,154,201,23,4,236,238,214,157,145,131,10,43,27,210,227,218,186,19,181,96,176,183,68,92,103,45,242,3,141,143,102,3,217,88,42,185,153,135,108,51,141,102,99,179,1,103,194,34,92,189,117,205,136,226,249,164,161,26,104,38,238,94,219,20,179,201,210,127,43,74,196,116,47,134,133,60,8,104,206,53,159,59,76,156,67,13,77,16,154,104,175,98,57,196,213,16,46,250,199,177,179,205,102,147,235,251,121,174,130,9,156,123,127,130,238,118,9,21,167,91,6,19,174,6,49,47,118,101,45,61,233,197,85,156,170,125,58,168,159,49,171,141,10,95,237,253,36,182,135,45,99,86,221,7,204,69,71,47,24,152,252,100,54,91,92,45,207,14,60,60,45,157,16,14,184,91,244,117,53,114,109,99,166,240,209,29,90,12,228,32,38,18,150,83,156,158,116,213,20,247,146,172,200,226,127,65,183,121,11,204,229,37,204,181,21,199,53,235,29,187,18,182,67,111,88,22,152,139,60,136,186,20,144,227,127,161,93,127,137,156,121,27,14,235,211,132,107,241,72,35,43,56,41,118,165,224,10,92,243,5,103,66,90,25,229,1,61,147,193,51,76,30,143,204,190,169,80,214,14,122,213,141,92,78,188,11,23,69,61,18,30,255,115,125,215,43,52,252,148,155,19,103,111,51,121,202,160,151,121,92,18,107,179,17,100,163,196,229,80,89,239,40,86,68,186,58,69,196,128,82,173,64,217,149,144,195,201,144,35,99,71,68,141,198,105,135,33,25,135,28,117,128,139,67,164,82,57,47,97,170,59,37,118,171,252,137,182,138,156,52,33,242,159,72,113,45,183,245,84,219,19,160,41,145,112,170,3,230,133,110,160,145,21,185,110,194,51,206,85,52,137,29,212,252,53,151,122,74,43,190,242,83,41,176,142,35,249,232,136,47,28,154,111,116,56,180,148,48,8,245,171,153,140,96,180,109,133,48,24,71,59,18,134,219,59,41,105,33,36,162,222,75,46,46,172,248,95,208,37,207,206,156,146,43,84,16,58,115,74,14,34,227,148,56,61,142,222,241,48,2,14,211,63,22,221,20,53,92,240,36,142,229,217,85,56,172,78,20,54,133,68,133,93,160,201,192,192,65,19,56,88,78,57,138,129,67,38,112,168,156,109,26,3,71,76,224,72,57,219,12,6,142,153,192,177,114,182,89,12,28,55,129,227,229,108,115,24,56,105,2,39,203,217,206,96,224,148,9,156,42,103,203,249,130,58,139,95,167,77,244,233,114,129,39,203,41,231,49,240,164,9,156,43,7,46,98,224,156,9,92,40,7,46,99,224,130,9,92,42,7,154,79,156,208,49,24,120,230,147,165,192,94,76,121,198,4,246,148,3,147,24,192,24,98,114,229,192,1,12,236,51,129,253,229,192,20,6,246,155,192,97,12,28,52,129,131,229,148,163,24,56,100,2,135,202,217,166,49,112,196,4,142,148,179,205,96,224,152,9,28,43,103,155,197,192,113,19,56,94,206,54,135,129,147,38,112,178,156,237,12,6,78,153,192,169,114,182,179,24,56,109,2,167,203,217,206,99,224,73,19,120,178,156,237,34,6,206,153,192,185,114,182,203,24,184,96,2,23,202,217,154,136,243,151,76,224,82,57,219,94,76,121,198,4,158,121,162,148,109,18,83,246,124,202,76,86,57,219,1,12,236,51,41,251,202,217,138,197,114,127,57,207,53,174,156,40,79,139,178,108,183,45,98,207,145,161,117,7,32,186,171,28,77,175,62,110,22,111,229,241,212,9,226,23,193,95,13,90,61,187,197,35,156,142,182,217,68,18,152,171,230,218,86,216,31,18,190,90,55,110,211,23,83,103,191,78,239,50,61,197,105,91,205,110,104,63,97,182,180,181,187,176,110,228,136,182,90,255,144,236,81,250,168,50,32,102,152,184,230,134,132,155,223,144,16,99,64,207,135,174,219,28,233,11,76,234,116,243,132,174,155,222,116,29,155,72,66,122,0,83,23,203,111,79,4,230,246,196,171,33,80,195,41,132,157,111,78,232,179,167,33,49,156,244,217,244,177,49,65,241,8,191,238,144,189,16,42,62,33,67,232,83,60,149,17,229,237,219,192,88,18,43,82,104,99,21,142,71,228,69,57,32,223,232,230,122,133,91,92,175,24,18,3,73,220,136,108,8,204,171,78,49,169,161,224,22,111,78,197,138,143,71,142,238,164,107,94,73,115,139,87,210,132,34,191,236,247,14,70,145,238,233,16,112,132,4,193,2,128,27,48,64,56,34,126,20,2,136,70,196,125,4,20,8,212,28,75,227,7,49,219,88,20,64,183,122,150,239,80,92,118,99,238,181,214,61,31,249,85,185,156,30,229,220,136,245,69,186,190,97,170,175,17,241,48,186,234,152,156,43,142,73,108,139,220,108,76,3,166,6,104,31,83,240,28,198,228,95,101,76,65,121,76,56,158,107,168,47,208,245,201,229,97,112,245,130,181,249,11,6,107,197,29,163,214,88,102,46,130,101,213,197,75,51,76,157,252,71,99,125,106,222,204,58,253,143,21,67,209,67,151,43,17,199,170,17,231,170,69,46,253,99,110,91,138,13,191,114,212,122,109,209,240,25,150,170,38,18,229,158,203,186,229,43,102,218,191,144,76,39,23,146,233,116,158,105,72,220,161,73,108,56,214,207,193,174,209,65,242,226,236,66,28,63,78,100,215,79,175,101,198,18,133,160,107,40,99,14,236,122,115,79,81,230,189,217,192,152,254,116,41,122,171,184,7,28,181,62,77,156,205,17,242,86,61,113,145,88,166,121,81,127,43,143,34,235,4,109,169,208,85,112,168,208,112,168,240,10,28,234,220,229,153,86,14,21,65,104,56,84,56,47,135,138,174,198,161,122,50,14,21,229,28,106,49,68,200,161,250,160,7,135,23,83,222,30,237,182,141,56,84,212,202,161,66,67,205,97,43,53,247,182,114,168,104,200,92,135,48,253,236,45,113,168,200,112,168,232,218,57,84,159,38,162,120,62,14,229,42,46,221,130,146,87,108,226,114,229,2,56,212,252,99,114,174,56,166,130,67,69,134,67,69,215,206,161,174,60,38,255,42,99,106,231,80,11,171,47,99,50,84,157,102,52,87,46,88,155,191,224,188,28,106,242,155,173,28,106,234,155,21,118,115,177,26,209,252,167,74,196,209,106,142,153,111,46,132,67,205,125,115,1,124,229,236,66,50,77,254,211,2,50,77,253,211,130,56,84,4,189,101,14,21,45,132,67,181,148,97,88,198,56,141,239,153,159,67,105,254,4,253,100,147,207,3,168,15,9,95,118,227,143,45,251,233,158,151,140,160,134,145,125,228,65,82,46,214,78,27,99,205,188,150,104,230,53,96,24,135,77,71,7,235,31,146,75,141,221,149,173,180,73,32,57,45,78,147,154,225,102,181,54,110,6,57,55,59,251,79,51,76,65,137,155,45,130,154,225,102,181,249,184,89,178,12,22,181,243,51,205,199,194,140,143,245,40,107,91,198,201,6,91,159,239,236,106,68,2,186,32,28,98,44,233,29,97,228,213,31,137,118,115,228,107,178,175,25,178,175,181,146,125,87,35,178,74,100,95,211,89,114,178,239,66,86,102,195,50,168,25,62,86,171,242,177,250,189,131,145,7,61,202,158,144,61,16,42,59,149,189,87,228,0,61,154,240,122,145,240,22,181,82,157,11,182,145,11,236,140,5,188,146,49,198,30,248,244,167,79,252,90,89,82,241,90,248,128,87,169,181,157,156,203,21,123,173,21,171,95,147,203,67,239,138,132,221,252,86,43,97,79,126,171,237,185,206,169,111,85,41,249,91,11,33,220,153,111,45,128,220,230,190,181,32,114,171,65,87,153,116,232,228,125,144,46,28,116,32,157,186,190,14,177,20,60,36,30,143,236,159,109,109,157,137,252,219,181,199,80,180,126,72,90,184,148,35,33,208,254,168,121,19,116,220,152,147,0,51,107,139,21,208,179,72,178,139,60,156,74,143,220,138,146,239,240,112,34,177,34,22,20,96,201,56,30,120,208,125,111,196,193,131,190,123,35,1,17,116,165,107,45,246,17,232,130,152,62,62,80,158,159,0,250,113,105,38,102,144,89,31,47,177,199,180,255,74,95,122,161,77,245,169,25,172,253,221,186,246,62,53,151,135,236,236,90,212,114,88,1,43,239,27,148,203,149,230,19,152,80,55,32,169,153,39,90,77,208,188,196,239,235,32,234,100,158,185,84,226,153,28,129,58,203,210,53,12,150,7,31,24,20,43,118,59,168,230,205,240,210,227,161,244,128,174,222,100,180,90,172,76,237,178,189,114,103,179,71,91,113,218,180,171,154,224,108,167,109,177,179,44,141,127,90,154,11,62,44,59,218,38,163,161,221,100,167,228,46,196,232,248,74,117,185,65,75,39,114,27,100,59,183,65,238,3,161,206,179,84,198,32,212,97,78,15,129,246,43,155,158,226,200,205,145,183,102,163,246,105,212,126,97,83,221,217,178,183,227,168,69,75,79,233,1,160,10,147,116,180,137,148,211,201,10,185,92,52,44,155,32,183,180,181,181,108,130,108,27,11,41,231,57,77,15,74,11,78,217,254,184,156,86,15,42,0,106,107,215,211,237,122,215,222,110,221,216,156,71,2,156,146,237,241,52,79,213,76,233,177,216,249,109,143,235,229,134,80,166,215,211,127,128,235,223,195,92,49,25,26,57,223,188,225,104,181,142,166,118,45,22,200,96,27,59,117,79,91,31,123,198,250,120,17,46,230,158,182,62,246,180,245,241,34,140,128,241,168,31,249,214,56,178,143,204,250,184,158,89,31,151,145,154,188,243,214,59,206,182,85,110,182,54,145,212,53,184,235,215,78,133,100,84,236,105,219,99,175,197,246,184,53,87,127,201,244,216,206,205,19,207,178,20,56,244,105,211,227,55,104,171,179,237,74,140,71,125,218,218,240,193,164,166,122,38,186,4,179,233,114,203,23,30,59,193,84,15,49,93,15,44,117,62,11,70,33,56,145,107,140,60,251,178,122,245,83,91,89,173,73,173,17,145,47,209,7,105,70,15,112,243,206,150,51,34,166,140,181,25,153,68,213,104,170,107,210,33,39,197,21,204,213,54,173,174,98,155,165,141,203,4,82,159,126,129,102,138,75,178,105,62,136,8,228,27,43,191,35,92,49,8,7,165,71,174,103,185,92,5,142,92,4,117,20,193,228,18,240,229,0,244,202,165,176,76,14,66,64,206,150,179,17,145,241,112,87,160,126,177,176,68,6,7,106,184,192,213,27,81,4,78,44,195,40,160,23,126,190,80,42,209,27,64,77,217,155,163,154,182,49,62,247,209,63,121,175,139,33,191,197,198,88,195,230,199,90,96,227,27,11,227,7,229,50,176,100,47,18,145,165,14,238,49,111,166,70,62,132,145,99,170,176,243,42,250,203,85,68,198,27,230,131,163,214,81,3,206,35,72,77,161,126,247,235,48,215,198,184,54,117,250,23,75,86,196,221,100,254,26,58,69,170,1,2,165,162,158,167,45,136,237,242,112,41,45,212,16,96,116,217,33,251,204,122,77,57,130,86,203,225,78,35,119,141,221,240,131,114,57,88,100,129,139,164,93,212,236,7,218,222,23,169,140,76,179,244,146,70,162,65,157,30,61,104,72,15,2,212,30,221,88,134,78,208,145,110,140,221,111,11,38,229,3,38,3,98,59,128,254,248,215,121,110,1,108,105,211,223,90,208,182,88,133,94,153,123,89,200,189,172,220,242,215,46,91,254,30,49,150,191,135,77,89,189,84,105,27,207,55,72,39,95,46,17,16,228,47,93,91,64,184,138,169,131,153,103,109,135,236,68,31,36,195,212,162,138,141,100,43,72,245,36,174,158,127,107,25,184,88,158,155,178,100,33,139,37,161,67,227,137,175,11,137,101,224,107,131,86,83,200,50,133,164,238,214,97,174,157,223,219,218,249,189,135,114,196,170,77,176,247,113,25,106,45,166,139,56,89,87,97,210,219,173,57,89,119,171,19,252,98,70,108,240,90,86,214,90,62,33,94,110,176,213,209,236,248,8,47,214,212,114,33,55,200,83,43,237,228,254,241,159,75,39,157,106,123,78,229,94,79,107,42,153,37,35,180,107,25,121,122,122,122,233,202,151,178,178,137,245,232,85,56,61,177,174,92,1,32,19,240,229,74,144,100,228,235,234,23,3,93,50,131,205,76,121,201,161,132,23,128,11,144,121,52,39,187,94,55,150,129,206,109,25,187,65,105,205,103,223,59,105,140,77,247,26,227,211,61,218,222,87,60,162,205,123,223,5,2,146,81,235,97,109,220,251,16,8,8,71,196,131,154,155,188,65,219,97,110,55,242,185,182,233,221,152,66,172,134,200,62,213,49,61,110,68,182,54,233,205,64,17,255,34,47,143,165,141,156,92,242,193,222,171,111,202,25,71,216,40,195,27,143,208,142,230,238,198,35,244,65,222,200,174,219,7,13,20,89,26,133,81,47,49,142,78,214,187,243,13,124,112,68,52,141,181,238,35,218,88,247,93,218,41,242,46,109,178,251,176,182,216,125,72,27,248,46,16,14,34,135,3,215,112,224,237,112,208,76,149,172,42,168,176,46,74,140,7,162,113,123,119,171,13,110,132,120,233,151,108,112,107,138,239,74,234,224,131,15,245,45,131,137,15,62,217,224,214,213,240,67,210,135,186,250,245,207,125,112,209,22,37,118,73,91,140,65,141,68,83,91,219,224,214,212,240,149,108,112,109,240,91,108,112,253,146,13,110,93,27,95,248,230,120,220,47,108,112,253,142,54,184,76,63,178,225,59,16,5,106,248,33,232,73,19,253,232,11,56,250,85,90,71,251,93,142,243,209,83,118,28,107,148,219,225,150,152,125,201,14,119,186,176,195,181,244,19,79,218,162,214,202,108,126,163,248,225,170,29,109,208,110,71,235,232,45,14,98,188,17,135,128,138,145,237,108,160,237,104,29,186,212,148,219,209,70,218,32,196,210,103,116,65,246,56,133,204,123,80,85,99,232,237,24,50,159,253,131,165,2,118,187,168,162,77,85,46,153,86,188,130,117,80,217,60,226,94,94,161,178,57,154,123,57,149,43,166,149,85,175,253,138,233,182,236,138,233,213,107,188,162,248,249,90,109,12,157,17,239,130,148,189,114,25,111,65,202,221,89,150,202,30,101,211,245,31,167,77,163,171,149,36,104,247,26,21,22,209,210,29,233,132,78,199,251,165,224,234,53,200,53,107,144,83,214,235,90,43,232,14,242,212,249,52,187,231,210,97,167,218,94,87,64,189,202,215,160,214,212,168,170,221,149,231,187,54,255,213,210,133,181,29,161,144,139,250,29,135,90,73,191,59,192,83,53,169,245,59,7,53,221,78,18,82,35,114,74,250,157,214,238,92,61,255,123,185,18,180,213,131,113,161,40,221,47,53,244,208,189,229,26,181,187,28,218,150,214,235,44,163,215,245,106,107,29,210,235,44,173,215,245,98,4,140,71,61,96,105,189,206,106,211,235,202,48,32,101,170,170,215,217,244,196,146,85,110,118,1,147,108,103,111,43,181,1,154,30,113,177,180,94,103,181,232,117,173,185,122,58,234,117,103,88,154,120,133,102,247,19,154,53,190,214,60,148,67,218,152,178,81,69,175,169,16,113,187,166,122,54,71,245,86,13,207,109,209,240,234,224,230,42,72,12,94,166,221,101,53,39,158,121,70,121,59,205,232,94,94,188,162,60,105,212,145,125,102,233,221,139,203,96,29,60,233,210,139,52,85,252,165,119,106,124,212,240,234,224,147,134,231,106,13,111,210,104,120,251,184,244,128,14,253,187,20,131,46,37,54,15,74,27,124,217,15,177,92,4,139,229,18,112,229,0,120,114,41,212,228,50,8,229,32,244,202,229,176,66,174,12,151,180,42,120,65,171,130,231,106,5,207,107,224,88,233,10,33,93,60,172,40,120,133,102,55,30,209,181,37,75,125,243,49,122,235,247,41,30,185,212,157,200,50,112,10,245,160,128,235,39,173,95,155,96,170,30,204,79,208,81,101,29,41,69,67,17,191,80,13,193,88,106,183,77,71,211,209,101,229,172,43,32,77,55,79,251,66,139,226,150,71,155,254,25,157,173,69,35,59,83,104,100,249,76,250,70,35,219,46,23,211,68,89,50,14,189,236,6,42,245,175,170,215,117,170,37,204,107,89,97,106,233,13,221,160,84,3,197,154,171,156,180,225,71,151,137,227,70,228,211,67,188,126,208,145,80,140,34,215,130,48,84,21,85,77,66,53,10,12,21,22,84,185,158,217,162,164,237,51,74,218,94,83,163,193,222,252,122,230,79,232,171,81,175,165,43,40,250,114,230,197,242,21,190,237,244,74,104,81,112,99,86,204,205,139,25,189,172,82,44,169,180,103,138,57,121,49,115,213,176,82,108,77,75,49,165,139,189,54,177,149,53,110,80,75,95,155,39,76,179,228,42,88,45,111,0,87,2,36,242,70,112,164,132,53,242,38,131,129,40,179,91,166,254,0,214,20,247,5,93,72,50,21,35,201,85,12,88,253,56,185,216,144,65,32,29,37,164,221,81,201,176,140,108,125,147,86,42,164,150,169,111,212,74,5,104,97,250,134,81,146,162,87,161,30,64,27,64,63,161,159,53,126,45,114,109,211,113,98,188,195,41,244,168,53,217,141,65,33,109,20,207,60,125,181,137,110,12,34,6,252,50,215,41,210,201,111,12,182,174,88,117,186,3,216,75,142,186,66,173,95,216,13,212,28,232,62,3,113,22,163,93,236,227,153,97,2,85,25,55,160,14,190,209,48,72,253,178,164,211,81,195,200,70,189,210,104,20,203,181,70,49,168,71,191,76,107,20,75,181,70,49,160,129,176,68,107,20,139,180,70,209,223,6,139,2,18,162,21,18,86,14,137,226,146,87,135,81,187,237,240,33,180,32,117,90,223,127,27,78,117,149,128,200,163,159,181,213,250,7,228,47,227,249,101,29,196,43,233,32,161,190,7,232,129,11,222,214,193,196,5,151,116,144,154,90,255,144,244,160,166,126,227,210,127,89,66,58,136,107,238,170,249,90,7,241,33,84,235,73,7,241,203,58,136,111,116,16,31,235,3,95,235,32,62,61,75,79,135,32,116,57,139,158,153,3,139,212,7,28,181,91,232,32,110,73,7,241,75,58,72,80,232,32,235,31,130,32,77,244,75,178,250,82,19,3,75,235,32,97,6,136,171,232,32,78,161,131,28,40,116,16,7,181,117,92,65,10,206,210,126,23,208,202,238,2,186,249,93,64,186,242,71,122,131,19,144,246,209,228,153,214,18,104,117,54,232,160,181,88,185,214,98,101,90,75,147,107,85,37,232,120,253,47,200,175,255,69,249,245,63,71,95,255,211,218,147,204,59,98,174,255,209,67,126,150,121,186,135,244,151,11,253,162,111,55,89,18,14,79,36,181,53,140,234,67,248,242,146,73,33,27,18,182,113,158,198,35,161,158,249,159,39,244,211,26,145,190,218,144,48,109,172,131,223,129,212,199,188,96,199,31,224,80,27,18,161,164,31,63,9,129,129,29,127,137,99,6,156,163,1,168,33,180,250,161,6,25,174,212,80,109,102,241,157,88,96,64,210,214,84,44,105,51,18,197,75,186,251,167,184,62,51,148,66,247,12,220,52,177,148,191,141,116,225,131,71,79,48,125,210,1,86,17,176,200,129,16,56,227,145,192,210,192,21,79,117,101,32,164,171,31,55,20,169,162,27,37,238,4,237,78,154,203,168,53,213,252,47,230,172,143,110,231,232,75,39,224,141,39,214,160,36,103,194,96,13,130,72,37,189,120,195,211,196,81,181,45,17,211,29,102,228,100,33,235,180,223,210,105,43,77,234,29,58,93,47,2,117,74,132,186,238,180,223,218,105,171,181,211,214,4,9,215,212,233,250,124,157,246,199,19,39,235,180,211,169,211,40,143,153,219,191,9,27,76,44,69,142,95,60,240,129,13,38,30,89,216,131,167,111,124,214,182,217,99,212,85,240,116,143,193,138,159,226,250,85,101,61,116,28,178,80,250,69,118,145,112,96,105,226,211,128,51,133,88,237,126,59,176,9,85,75,19,65,241,138,20,240,20,53,152,218,189,180,68,228,160,16,224,22,1,87,223,5,113,233,154,5,194,68,152,214,28,64,41,200,70,38,193,211,68,32,80,168,35,122,103,170,166,38,51,160,128,171,106,106,170,10,34,129,60,122,60,161,251,107,66,49,112,7,1,43,167,187,187,155,35,30,4,149,129,249,197,192,234,87,31,152,191,128,129,109,187,194,192,232,21,214,186,238,167,255,60,15,12,60,154,105,85,147,117,85,3,11,80,73,244,183,14,78,72,203,184,172,208,91,177,158,178,118,32,83,0,79,217,91,204,244,235,183,158,60,245,200,14,41,76,132,53,182,137,3,187,149,177,159,133,254,61,248,169,120,138,33,253,45,74,223,150,254,150,253,116,51,136,122,103,79,36,130,148,38,222,136,156,150,154,40,23,121,12,227,40,246,241,136,5,200,101,61,85,83,23,63,48,195,226,159,195,241,91,216,127,125,173,201,218,50,72,22,3,106,183,172,211,133,248,163,39,247,251,178,159,232,70,213,212,217,188,140,7,76,135,246,154,26,212,92,150,102,78,34,29,146,93,144,68,8,60,150,170,109,27,148,14,249,50,146,28,108,164,105,210,91,119,3,106,106,97,154,116,221,202,216,222,77,252,177,251,244,210,102,65,157,28,19,13,66,48,136,125,119,101,219,254,16,233,196,76,237,30,199,105,128,58,4,131,9,3,75,191,188,37,221,236,161,36,141,27,12,25,153,107,174,186,222,75,22,43,93,169,244,129,25,74,212,96,218,192,24,248,27,24,27,143,232,50,175,55,33,5,208,97,74,184,140,78,126,148,191,53,18,154,252,125,172,198,234,80,205,68,91,53,214,4,176,148,112,19,130,40,80,53,212,164,222,9,124,2,193,1,124,34,241,17,38,22,49,41,78,20,96,78,236,169,157,64,189,115,179,141,96,10,84,13,187,110,19,35,220,28,213,192,6,119,66,63,26,214,149,170,90,186,158,49,245,135,187,95,29,249,100,207,16,80,62,74,216,192,112,149,34,131,155,250,22,212,154,177,166,196,130,48,149,117,189,49,114,47,137,35,181,9,96,168,253,7,1,212,117,101,175,138,80,84,4,146,14,212,228,111,158,96,241,105,206,116,131,137,87,169,249,222,136,156,171,209,168,12,206,185,248,99,182,41,17,125,206,127,240,132,33,57,31,108,117,57,15,57,170,166,246,254,122,22,202,46,233,234,219,129,96,171,3,121,18,118,69,131,65,53,243,222,96,71,100,29,108,125,127,210,73,53,2,250,91,72,117,116,160,190,150,177,77,83,31,255,253,47,127,254,195,239,255,29,120,13,25,85,214,82,217,77,3,150,61,96,35,219,233,153,144,136,209,61,244,92,79,106,86,33,134,83,212,11,62,166,246,65,128,169,177,62,96,183,74,91,148,184,146,70,52,65,54,68,219,72,157,242,54,71,54,216,224,79,232,135,180,156,124,106,44,240,160,55,13,232,74,1,215,70,39,45,51,67,219,63,54,68,91,163,58,8,232,222,170,47,193,53,244,21,74,205,193,109,163,101,11,8,169,218,177,123,34,122,79,51,80,239,28,143,24,170,133,219,104,230,123,54,71,228,103,168,158,181,237,6,100,244,70,5,129,197,175,133,218,6,6,81,29,34,136,183,68,36,51,172,33,154,13,212,219,116,69,177,174,168,15,27,116,13,150,245,100,109,58,244,186,53,141,117,16,75,99,205,38,7,88,69,229,84,171,139,114,224,86,218,132,35,117,130,235,177,112,61,22,59,128,46,83,169,21,104,217,102,0,81,16,231,58,2,91,77,229,19,237,32,58,57,6,171,192,67,84,211,15,178,75,139,86,47,114,228,30,168,195,191,126,130,169,97,117,6,177,230,63,102,88,19,67,164,102,242,154,66,186,104,219,173,142,230,49,72,46,92,10,186,231,38,133,170,5,178,78,203,196,68,194,193,38,217,132,14,97,201,45,69,77,13,165,80,211,54,183,250,241,231,218,90,43,30,181,0,191,20,164,241,100,233,209,191,255,143,189,247,129,178,227,58,235,4,239,191,250,243,94,189,234,174,150,219,73,91,173,140,191,42,181,237,39,44,141,197,142,163,118,228,144,244,125,39,221,114,163,40,114,50,153,108,102,118,246,12,11,236,97,168,167,205,228,201,61,34,3,178,250,57,86,28,1,134,49,139,119,113,178,134,136,224,160,156,96,7,133,100,119,77,48,155,110,48,139,57,152,172,103,79,178,49,139,146,49,140,147,213,28,60,224,61,120,192,108,12,218,243,125,223,189,85,245,94,191,150,37,79,128,153,57,56,39,234,87,247,222,186,255,234,254,249,254,254,62,178,112,148,172,118,83,28,244,143,166,53,60,160,50,246,113,235,176,79,165,25,17,149,199,208,178,251,145,104,23,211,137,72,254,207,41,217,90,103,90,211,56,254,131,14,67,22,8,6,32,173,225,0,9,69,116,52,21,44,40,20,69,2,65,73,20,142,118,6,33,177,19,120,62,241,9,190,60,25,6,14,130,210,17,233,30,105,8,119,65,68,254,166,97,30,16,73,135,53,133,175,34,94,108,217,11,130,163,241,147,140,78,210,135,42,104,44,134,194,188,144,144,172,25,16,209,32,153,171,240,79,156,7,52,55,114,57,189,6,119,6,121,69,219,172,214,28,176,251,105,102,85,103,7,94,193,225,97,100,113,32,194,211,88,225,213,155,157,245,45,114,123,80,130,204,238,2,131,203,48,152,36,11,221,39,242,34,176,255,78,48,49,249,251,238,111,193,114,237,91,144,249,11,112,60,108,133,208,64,131,193,227,60,251,25,89,131,170,212,216,86,236,80,105,47,80,152,254,235,112,189,254,129,232,79,5,70,74,25,144,86,233,143,68,127,42,14,132,16,161,136,98,178,240,99,20,105,242,4,37,107,78,252,158,227,83,52,235,96,52,220,242,209,203,233,78,208,236,133,171,109,135,152,54,156,162,140,192,234,174,178,175,5,118,245,218,171,127,239,22,124,239,53,180,23,227,123,215,92,253,123,29,124,111,199,213,191,215,198,247,102,174,254,189,20,223,203,174,254,189,22,190,55,141,95,118,14,23,224,219,193,220,34,231,150,73,104,107,110,145,59,139,192,14,95,214,131,34,180,195,243,154,85,41,195,199,73,76,101,236,236,1,5,196,48,67,153,221,139,52,121,134,75,102,120,254,11,235,119,217,75,255,242,137,245,195,169,244,86,155,79,156,243,71,27,150,46,112,91,253,0,47,245,136,22,54,251,135,199,133,7,172,196,117,28,192,164,98,218,42,42,241,239,197,161,52,164,18,212,101,42,113,139,44,176,163,75,125,123,233,146,30,96,199,87,201,128,127,248,148,40,41,9,187,247,140,251,109,219,107,199,11,109,135,67,131,140,209,240,188,190,203,14,135,79,138,190,29,62,240,196,250,81,44,57,124,82,28,26,32,213,98,167,121,164,17,15,115,10,71,33,48,41,176,67,242,224,15,236,48,59,202,216,38,246,173,3,59,148,199,15,138,130,158,58,39,236,115,248,4,244,20,158,168,178,115,171,121,198,154,239,228,190,212,6,189,99,93,200,119,3,1,62,249,182,187,106,23,11,155,21,227,28,211,225,18,243,225,210,154,116,184,48,160,82,245,75,144,136,0,23,25,189,217,226,55,219,44,48,32,38,134,143,175,208,107,120,232,195,66,104,95,120,100,211,145,207,120,153,209,211,135,249,155,190,126,124,41,196,19,83,35,234,253,2,3,131,77,88,64,1,142,53,172,166,99,55,249,227,55,38,173,154,211,209,9,219,113,194,70,3,251,34,207,153,225,122,176,191,247,127,162,217,95,122,162,254,98,222,43,35,99,121,165,26,11,43,135,173,34,219,7,62,150,113,54,19,127,113,241,157,181,74,204,11,49,86,10,12,159,136,1,4,227,7,161,225,187,66,212,119,133,172,239,10,51,225,174,72,200,67,149,238,81,188,69,177,5,123,225,17,71,76,254,110,170,210,117,117,106,183,176,207,136,134,6,122,171,22,90,141,131,29,7,171,77,51,90,127,173,154,137,122,196,173,96,199,129,215,68,155,90,19,29,84,96,199,134,45,55,169,198,248,202,64,111,131,134,194,12,72,20,7,14,181,56,118,102,167,113,67,45,137,155,247,60,171,37,163,81,195,173,248,160,152,131,216,153,157,142,180,65,42,232,142,243,189,136,173,204,91,44,226,98,128,222,106,54,146,43,209,67,130,134,196,233,124,73,11,25,58,45,228,12,18,171,33,107,33,67,214,66,18,66,49,172,164,25,132,172,133,12,189,22,178,229,181,144,245,120,89,63,216,218,130,108,27,120,100,219,228,50,144,212,87,56,167,222,216,178,168,59,227,117,144,35,133,178,137,168,182,128,100,149,132,14,107,32,23,88,47,4,86,173,164,211,248,171,91,4,172,129,12,108,251,80,138,12,243,153,123,55,133,109,103,95,149,169,6,83,233,26,67,8,189,110,201,215,81,152,229,148,228,246,221,60,5,157,71,108,164,119,237,88,175,166,216,240,62,78,175,29,209,242,69,203,120,40,103,121,167,149,248,22,41,221,88,113,8,223,25,209,239,121,219,67,146,34,196,56,109,216,39,54,106,128,178,238,87,155,251,165,83,3,109,214,71,5,157,172,170,159,128,84,5,114,193,108,208,72,126,138,77,245,94,43,225,209,76,129,206,227,100,4,129,46,32,0,88,178,6,51,52,214,100,28,216,52,104,234,197,154,51,64,102,47,1,196,100,219,216,94,78,53,233,213,116,178,61,100,29,5,197,96,163,71,97,101,195,28,63,118,26,134,198,126,11,174,20,254,244,109,172,94,115,83,166,236,82,159,116,107,164,170,130,101,86,89,45,20,134,212,152,198,10,123,250,222,134,129,28,78,46,219,129,146,21,21,225,238,231,211,205,170,96,250,92,30,121,43,202,186,62,178,232,153,38,75,197,176,126,209,89,119,46,116,100,98,165,107,137,163,0,154,44,79,184,165,237,180,90,183,33,11,181,168,247,179,150,102,47,235,182,187,172,210,94,96,157,13,56,7,46,86,94,205,149,212,112,161,109,92,238,81,98,81,19,54,18,253,202,156,185,45,232,229,212,176,168,158,140,133,160,204,30,149,213,167,214,91,103,221,36,16,45,67,0,198,41,165,12,235,9,168,252,118,138,41,236,248,212,1,117,43,219,112,237,103,27,174,189,12,98,249,154,251,175,170,254,75,238,191,220,210,127,7,167,229,194,235,207,225,23,40,166,185,22,181,71,103,69,134,191,73,27,193,192,63,216,3,167,168,200,22,73,81,49,91,194,244,162,18,150,68,214,81,67,67,145,48,250,156,125,70,148,11,34,249,104,71,38,149,6,2,249,64,2,80,210,199,137,14,213,204,130,171,50,111,121,165,5,59,9,73,188,124,112,192,120,40,224,34,38,4,99,13,173,149,84,169,117,208,123,233,248,20,239,160,3,250,146,28,228,33,173,107,178,30,217,39,164,125,235,32,71,242,240,250,65,142,84,199,63,97,224,242,112,13,226,227,84,82,249,146,202,190,117,0,177,13,215,142,83,249,247,227,253,129,44,91,103,141,11,234,146,245,181,59,214,236,112,248,162,24,224,59,186,122,231,56,210,164,195,39,201,0,73,91,83,38,5,225,209,244,89,50,64,84,166,3,138,162,158,11,238,183,177,226,29,96,236,119,173,30,7,99,223,191,202,75,133,228,46,91,90,113,61,196,158,187,97,97,207,142,31,119,173,50,18,48,4,44,148,9,142,56,93,150,130,96,133,218,165,39,47,243,89,186,131,142,76,228,21,2,92,43,243,185,66,102,13,127,200,4,146,58,148,14,239,127,155,177,140,71,90,93,218,147,3,188,46,250,133,233,23,109,171,7,196,200,183,152,153,71,106,146,100,52,152,78,176,137,118,253,174,210,234,163,44,118,166,235,78,66,84,22,198,137,241,74,210,195,53,30,84,243,65,87,15,244,229,77,89,68,76,144,45,51,166,29,147,36,141,50,88,89,110,72,216,87,4,88,84,45,145,205,35,132,208,182,39,7,117,187,121,11,98,43,177,171,45,172,64,114,5,152,168,170,68,229,18,19,104,91,117,34,143,41,76,2,185,101,133,121,132,213,106,187,33,33,134,216,110,200,163,243,69,136,99,110,65,104,213,90,222,33,155,180,87,228,160,104,59,168,60,146,171,99,69,107,101,158,210,190,139,72,151,66,219,210,80,88,159,194,216,245,187,108,116,2,23,231,137,227,246,158,15,158,142,7,37,45,165,203,100,198,151,203,236,108,155,137,251,222,102,101,161,33,101,130,34,134,176,159,199,16,65,167,204,67,48,54,62,97,47,221,243,74,52,192,197,136,127,75,123,207,208,28,179,217,9,8,112,65,183,150,83,145,120,117,130,230,77,79,131,43,12,163,206,113,147,186,110,50,215,208,194,25,39,192,45,50,155,220,90,166,164,66,170,42,20,111,83,136,142,48,110,59,96,157,186,30,144,5,173,98,85,134,112,202,35,58,233,78,14,88,234,143,41,154,96,160,170,21,166,253,151,199,95,170,250,165,249,195,7,52,247,4,149,107,250,69,232,97,7,229,104,37,121,224,37,125,6,87,157,113,190,197,154,103,112,215,0,244,164,9,196,109,151,172,186,45,154,64,208,47,76,238,164,65,32,246,33,19,216,159,82,66,210,174,13,240,224,227,147,71,158,112,139,28,127,5,137,111,89,176,200,143,80,108,25,203,52,34,236,196,92,48,41,76,182,125,203,228,68,41,72,98,51,35,197,50,169,53,167,89,29,46,220,25,162,240,236,6,98,102,58,51,66,164,94,227,167,33,88,193,206,78,87,77,142,213,68,109,64,176,58,77,193,206,68,151,40,76,229,59,198,181,145,245,237,244,118,185,201,135,83,213,89,55,200,246,188,168,137,237,33,139,227,30,223,102,248,135,148,252,143,83,76,11,10,194,39,11,195,244,157,56,160,206,40,254,216,103,40,226,183,244,225,135,254,71,89,193,92,178,113,192,51,146,67,229,62,45,115,138,184,248,148,228,80,182,89,30,131,220,163,231,136,98,121,72,149,32,237,82,159,229,95,28,249,137,98,249,237,209,192,94,140,84,224,105,14,205,36,93,244,167,236,123,64,113,140,95,251,172,207,225,200,79,217,13,200,222,80,206,243,62,135,163,62,101,167,64,217,103,41,231,69,159,243,178,203,225,81,126,73,122,42,86,28,80,23,221,40,47,170,18,15,82,123,129,71,249,14,55,35,207,53,203,190,236,202,190,236,202,94,244,101,113,150,52,182,248,138,111,145,163,72,81,255,31,162,156,51,210,229,60,32,107,23,238,79,82,214,131,62,235,225,70,214,227,148,117,214,103,125,210,215,39,247,137,23,200,20,208,62,69,37,30,245,37,62,87,149,216,163,227,124,10,255,8,194,43,34,90,186,91,180,217,24,185,164,232,194,251,235,134,22,24,67,247,86,87,205,155,235,156,231,116,233,40,30,92,55,23,53,18,50,123,189,28,28,201,24,181,107,81,63,75,92,201,28,73,200,236,222,210,227,38,95,144,101,97,64,217,7,84,245,2,126,57,2,11,61,219,72,123,129,108,185,206,215,41,144,112,172,0,164,146,206,168,69,69,241,3,106,202,243,162,51,171,124,222,153,83,62,39,153,162,235,242,27,15,169,69,253,94,80,64,97,239,40,229,147,138,204,173,112,9,128,178,27,141,166,79,75,6,200,125,166,145,246,128,36,44,73,251,92,35,237,37,130,167,127,177,145,50,84,152,50,212,205,185,160,192,237,239,231,159,79,41,54,255,82,123,244,179,202,121,93,168,61,250,162,90,84,47,184,223,47,171,69,253,178,228,72,66,216,110,93,23,126,106,156,164,70,202,231,40,229,124,35,101,131,82,54,26,41,79,51,136,126,163,79,173,131,226,180,114,19,169,23,213,131,174,229,135,52,133,33,228,201,209,139,140,208,142,253,215,139,250,113,247,251,41,189,200,72,239,154,88,23,152,90,212,0,10,102,22,245,28,40,220,155,188,30,234,198,41,229,57,141,84,238,34,165,60,137,41,123,244,179,154,31,159,197,197,211,85,239,37,217,1,173,174,174,122,78,179,119,208,5,157,147,76,245,89,157,183,172,36,188,74,146,181,209,54,77,197,78,247,58,221,94,248,46,231,62,171,145,17,22,59,93,77,29,48,185,228,218,200,19,194,183,120,86,242,140,142,52,107,92,179,109,215,108,170,78,245,4,59,123,164,98,103,79,64,232,126,98,254,25,220,72,248,227,228,30,45,238,78,242,41,16,184,30,73,32,184,71,199,139,58,99,118,241,115,28,198,17,231,211,135,94,84,143,112,24,71,245,176,203,123,176,145,119,191,203,59,237,242,78,214,89,107,156,115,140,51,190,183,206,248,199,156,241,110,102,23,238,4,129,60,205,219,217,57,227,14,16,184,33,222,198,66,200,37,16,208,58,160,222,204,0,232,183,177,108,238,86,230,104,247,131,192,47,218,5,1,164,200,18,144,60,198,220,200,28,187,164,224,87,164,231,58,94,36,174,56,190,55,40,116,228,227,4,243,220,21,207,234,3,226,183,36,8,183,252,126,79,151,93,33,14,8,65,39,77,182,140,251,70,35,147,242,241,68,6,235,187,133,205,250,133,118,64,108,91,132,110,83,93,25,187,255,148,137,99,29,79,248,47,194,127,66,129,55,208,5,177,146,50,182,188,29,154,219,101,155,58,38,241,6,188,240,156,184,93,138,201,89,23,37,102,133,147,178,158,167,172,96,82,214,5,202,50,147,178,30,167,44,58,253,134,138,132,105,91,203,124,145,250,67,68,21,137,160,82,49,161,208,147,84,168,17,123,68,89,73,69,165,77,214,136,220,82,54,207,141,205,145,168,97,225,155,93,39,250,5,84,89,24,171,214,236,195,191,180,65,247,143,77,214,138,8,194,67,206,58,49,178,146,180,14,121,192,150,40,200,9,93,146,135,82,54,216,99,51,23,213,199,93,1,193,170,227,167,92,142,143,2,135,220,45,217,222,88,130,49,175,26,186,246,4,185,51,195,161,84,218,175,4,185,177,215,35,87,148,219,220,190,242,153,10,0,194,158,109,20,55,160,200,61,217,202,126,50,210,231,75,151,46,137,65,71,146,220,70,41,86,8,172,223,85,58,6,182,159,71,246,43,1,4,16,216,175,4,71,230,137,158,150,125,146,81,42,34,30,201,238,67,65,96,207,126,118,131,244,157,101,161,32,58,76,156,64,96,165,3,209,194,73,32,221,242,128,177,174,99,183,190,181,21,183,203,144,92,13,14,138,105,186,220,167,7,246,147,231,185,170,131,98,138,146,204,137,209,212,148,82,227,177,212,14,165,118,198,82,201,75,202,102,99,169,109,74,157,29,75,109,17,24,226,247,89,117,194,170,126,33,109,114,52,85,72,174,151,32,203,66,217,231,207,111,136,91,132,184,157,182,153,42,237,55,206,111,8,122,143,140,122,246,200,112,81,56,209,130,182,83,229,45,146,74,10,219,62,72,50,122,121,80,144,231,176,180,176,154,42,178,198,186,36,86,105,157,13,135,172,171,183,195,97,204,63,94,188,247,182,190,125,224,149,100,21,164,61,255,155,157,190,125,230,243,55,175,30,7,105,127,251,231,59,125,27,96,242,207,188,148,244,237,31,36,171,199,49,249,247,191,146,244,237,199,230,48,253,227,63,157,244,237,20,21,62,53,176,63,243,98,123,5,164,253,174,129,125,238,119,218,43,199,143,31,167,32,229,159,255,163,118,223,134,171,41,113,28,210,126,252,83,27,194,238,181,255,31,254,121,82,218,255,237,209,13,97,127,77,103,223,201,134,3,210,158,254,196,134,176,93,251,37,252,243,49,101,255,228,220,134,176,191,168,178,239,36,16,20,167,14,16,118,40,15,10,218,145,161,253,74,96,239,255,37,191,14,165,109,219,47,157,223,16,217,125,108,197,244,159,200,183,95,37,79,157,111,225,183,151,91,167,34,195,51,250,92,91,74,103,119,160,22,38,42,70,38,156,218,216,56,50,86,51,82,105,19,132,81,220,106,39,157,116,106,58,155,225,0,9,251,132,60,40,98,80,118,154,36,228,142,169,34,146,137,192,176,41,138,238,44,40,188,214,22,216,59,109,23,210,67,15,108,138,3,106,14,216,75,244,128,2,112,87,74,151,20,188,32,232,230,197,122,211,171,170,247,165,127,185,109,189,217,104,189,83,223,170,122,167,169,222,155,117,252,38,170,55,187,170,122,159,221,190,222,169,132,145,208,157,23,225,204,85,213,251,248,246,245,166,60,15,202,240,60,236,184,178,122,37,215,251,200,246,245,118,146,70,53,238,101,193,47,191,242,27,155,164,19,174,170,121,208,85,83,189,156,92,197,203,195,241,151,219,87,241,242,11,63,62,246,114,235,42,94,126,118,252,229,248,42,94,222,24,127,57,186,138,151,207,143,191,28,94,197,203,143,140,191,28,92,197,203,15,141,191,108,174,226,229,211,227,47,235,171,249,84,63,54,246,178,186,138,151,191,52,254,50,171,169,103,25,209,222,133,55,247,213,57,105,10,249,140,44,136,228,119,83,153,56,98,54,100,77,114,246,95,22,50,101,153,189,51,235,178,29,138,120,222,85,113,206,49,10,114,227,226,28,80,64,56,10,231,160,183,83,161,146,77,36,25,63,219,235,153,234,98,181,41,246,32,117,70,155,202,238,229,44,232,79,233,68,106,18,76,176,133,147,178,251,200,159,133,20,194,200,205,126,67,80,204,118,50,153,38,51,5,59,28,110,8,107,72,241,149,198,116,244,145,126,26,11,191,68,206,173,202,126,83,172,164,1,141,185,178,89,212,16,218,246,1,37,58,132,5,89,215,118,122,88,169,209,210,96,44,51,59,80,80,232,201,78,35,53,225,201,83,53,39,224,148,22,28,139,131,162,1,11,86,243,201,3,42,118,170,13,55,39,218,238,103,127,107,182,200,165,207,52,102,91,41,57,24,245,183,115,66,124,216,185,96,144,216,205,189,231,102,216,191,212,58,76,214,189,210,55,73,102,172,76,177,167,14,175,159,205,44,42,153,191,57,154,202,74,235,194,61,40,2,251,117,177,2,129,253,13,177,66,74,135,192,254,221,67,169,105,214,203,253,104,177,83,55,215,162,64,66,171,44,146,145,33,144,213,96,245,22,201,100,101,146,64,144,42,160,130,112,220,126,93,28,74,141,155,73,179,224,130,49,176,25,144,159,53,23,219,36,56,154,138,145,142,218,155,251,83,90,72,33,57,96,144,226,23,18,183,244,130,163,69,43,21,190,125,210,179,210,243,150,153,110,29,118,201,121,75,47,89,145,75,54,110,80,62,246,113,163,156,242,223,83,251,201,5,227,103,214,224,204,74,54,144,91,16,36,100,214,140,62,144,140,204,255,15,177,140,137,10,105,92,84,10,79,118,209,85,25,137,63,11,217,135,24,39,174,13,18,226,236,97,26,252,44,59,112,196,102,157,172,79,64,150,16,33,173,132,67,11,64,38,120,185,241,196,85,46,217,26,20,171,95,155,43,188,86,20,167,49,139,119,99,30,251,44,91,166,120,147,251,3,124,130,116,120,162,242,40,25,63,2,220,114,15,213,186,246,91,189,62,16,92,204,33,7,80,167,216,102,194,111,126,201,122,104,119,32,164,43,62,225,230,195,228,210,6,135,210,40,25,89,106,210,185,177,91,197,60,95,33,233,64,208,59,65,210,230,150,246,195,67,162,167,207,222,227,112,1,43,198,147,60,255,21,121,254,227,81,64,182,15,228,237,187,76,182,244,245,54,137,60,63,249,123,226,80,218,96,47,191,73,139,115,124,229,207,22,138,43,64,238,175,80,213,100,41,158,44,203,250,133,196,106,66,151,104,37,172,190,12,27,221,63,100,214,169,247,135,82,101,227,192,70,84,144,190,72,220,104,57,108,204,236,216,148,242,92,10,229,79,78,105,2,225,142,85,61,121,250,32,180,218,117,39,68,42,75,112,0,148,145,3,46,141,121,243,185,13,87,127,81,69,187,92,213,46,241,91,17,237,244,101,91,141,18,255,149,30,240,95,9,180,61,184,66,78,68,241,200,183,8,240,37,114,14,36,245,186,228,216,37,91,171,198,98,129,139,141,18,102,63,148,147,41,14,111,189,228,108,44,163,117,230,9,91,100,222,110,131,19,181,18,165,171,206,202,130,49,90,101,159,180,38,106,13,68,105,77,63,87,100,141,95,63,35,127,222,61,76,234,68,147,114,232,144,34,178,93,60,29,66,103,72,39,72,9,68,6,10,84,1,171,84,236,58,143,159,216,211,202,76,90,218,13,113,148,217,192,200,118,237,67,149,112,129,221,10,173,36,201,128,60,50,95,40,171,86,240,184,113,176,26,86,87,79,29,108,168,122,202,64,217,160,122,154,5,101,195,234,105,14,148,141,170,39,36,23,226,234,9,105,136,86,245,132,180,69,187,122,234,130,178,73,245,180,23,148,237,84,79,251,121,211,186,167,91,145,195,168,158,110,67,254,168,122,122,51,30,114,213,19,46,212,153,234,233,109,72,145,87,79,119,128,178,215,84,79,111,7,101,103,171,167,59,65,217,107,171,167,119,131,178,175,171,158,222,11,202,190,190,122,250,199,72,2,85,79,223,5,202,94,87,61,125,47,40,187,179,122,250,167,160,236,124,245,116,12,148,221,85,61,189,31,148,125,67,245,180,6,202,254,157,234,233,3,120,110,85,79,39,113,235,85,79,67,60,96,242,234,241,52,62,22,213,35,185,165,239,174,30,239,39,133,69,245,248,0,62,222,80,61,62,136,143,55,86,143,4,153,120,83,245,248,48,62,118,87,82,101,187,35,43,72,55,159,236,175,125,102,67,216,55,112,2,109,54,90,244,16,148,185,2,105,175,31,20,17,89,10,129,34,220,62,65,113,236,21,47,220,155,232,100,206,57,130,133,90,227,184,69,228,87,82,200,19,172,43,84,92,136,120,247,181,210,59,153,202,210,249,238,111,223,47,146,194,147,24,43,38,92,19,123,253,32,151,84,11,238,183,184,207,62,132,86,245,121,139,105,107,74,60,55,215,88,9,30,130,60,113,156,29,126,13,238,219,216,29,192,171,46,248,92,64,90,102,201,182,152,209,90,101,143,194,35,180,235,205,158,220,227,164,4,75,101,147,126,187,186,255,209,217,104,101,127,106,110,139,212,96,199,53,179,215,190,238,245,115,226,85,169,241,92,118,230,146,166,24,2,207,164,41,45,149,118,145,25,227,210,153,235,86,72,205,228,143,177,156,206,131,176,89,105,127,123,99,83,56,97,53,22,182,191,190,177,41,246,8,193,242,147,95,169,31,84,239,193,225,112,184,161,22,171,8,88,164,52,179,215,243,199,3,60,32,70,249,99,67,140,175,231,148,231,60,43,162,22,105,219,107,62,25,158,248,149,77,225,212,86,118,174,100,161,188,178,221,50,235,178,30,163,179,156,146,250,33,206,242,206,78,60,231,232,6,35,15,192,200,5,227,178,106,173,16,246,153,13,14,7,72,7,21,8,251,210,166,127,158,27,235,215,92,233,188,186,29,223,126,43,179,67,216,155,11,159,171,123,19,143,245,166,115,93,130,148,164,51,139,32,50,16,63,75,54,71,159,96,52,131,47,64,214,97,231,178,243,122,254,140,246,244,249,77,97,231,182,124,192,215,185,236,127,251,139,155,194,206,111,201,190,214,101,255,31,152,189,115,75,246,172,203,254,95,48,251,186,45,217,215,184,236,79,97,118,103,75,246,14,151,253,83,152,125,205,150,236,25,223,243,201,217,153,203,254,211,79,111,10,59,181,37,123,218,101,95,156,156,61,229,178,47,124,122,98,215,82,151,253,197,201,111,119,92,246,198,228,236,196,101,63,246,233,137,61,111,187,236,159,252,244,196,73,109,185,236,47,63,182,41,236,91,182,100,199,46,123,19,179,103,183,100,71,46,251,199,48,251,214,45,217,161,203,254,253,71,55,133,221,187,37,59,112,217,191,138,217,11,91,178,141,203,254,197,71,39,142,91,187,236,135,31,157,56,110,229,178,135,152,189,107,75,182,244,95,236,23,38,173,212,132,204,45,145,66,154,78,68,242,229,80,165,12,7,192,48,117,86,230,83,21,233,92,224,145,155,21,211,51,82,16,153,233,0,16,100,199,121,146,231,25,136,60,100,13,14,132,69,178,87,136,162,227,13,237,200,215,173,67,246,118,36,167,77,156,169,29,38,94,63,200,99,232,176,169,93,108,195,53,8,143,231,109,72,172,42,243,208,149,37,99,187,144,140,237,90,144,88,205,181,145,205,93,11,98,178,185,107,51,220,68,101,8,23,34,159,246,214,1,180,216,220,174,93,25,173,36,214,148,121,152,64,0,109,123,207,208,100,59,217,18,14,139,15,201,200,43,216,39,18,252,167,205,76,158,100,63,194,232,112,26,17,194,8,187,254,29,169,93,255,90,20,54,208,91,202,197,132,115,200,165,162,202,145,178,197,179,20,213,238,173,206,88,142,94,133,8,76,31,167,151,236,104,240,218,154,43,139,150,7,70,231,200,118,193,30,45,138,153,69,157,193,204,57,234,215,80,34,173,60,36,112,1,133,51,55,164,80,132,193,62,177,179,72,241,207,252,209,52,128,128,32,62,14,138,157,144,146,115,43,225,0,66,74,71,46,197,205,20,121,12,45,166,69,3,100,43,13,4,61,177,168,73,104,108,96,218,153,236,96,201,54,215,109,192,216,246,145,249,156,219,40,90,96,192,64,107,117,62,239,16,74,22,17,134,1,67,252,180,176,93,3,41,251,161,101,37,152,18,91,35,133,92,188,79,136,170,250,164,19,38,106,221,74,104,219,161,164,16,209,10,218,246,210,244,17,252,169,173,193,244,161,89,157,79,32,42,115,130,101,79,250,16,150,121,4,33,100,222,82,50,181,109,123,241,124,165,156,107,216,210,213,223,139,64,156,112,178,101,110,252,210,53,213,71,33,16,175,62,237,10,254,46,178,241,81,112,7,96,127,243,169,10,14,113,106,154,150,62,25,17,157,57,187,81,249,21,99,74,100,95,254,152,75,249,149,80,5,235,234,212,168,32,204,70,131,66,153,38,255,161,237,30,82,137,120,59,57,18,10,168,53,59,124,104,67,148,111,84,248,161,144,147,176,151,46,93,186,164,7,133,34,221,159,213,3,98,52,8,87,80,176,235,103,96,95,185,116,233,82,52,200,3,96,70,77,129,122,163,18,16,159,130,232,100,17,189,133,174,119,83,226,151,244,201,61,56,83,229,196,219,230,116,182,201,193,159,121,68,34,140,28,169,57,195,6,149,108,218,230,72,44,114,164,9,201,139,97,114,119,114,229,235,9,201,81,158,72,184,232,92,161,88,161,121,147,151,181,32,125,169,152,230,147,101,133,105,66,222,56,54,30,44,167,166,158,206,163,20,73,222,77,167,73,94,101,250,122,100,9,151,43,18,210,84,83,232,83,171,126,247,134,191,246,149,91,38,206,164,207,153,56,153,147,50,59,219,103,110,55,165,42,217,142,202,223,50,193,19,58,250,173,152,227,140,2,94,218,87,206,108,8,171,178,221,196,208,114,210,233,31,38,217,43,37,109,8,78,123,16,211,34,78,27,114,124,109,123,30,211,166,92,26,199,207,180,23,49,109,62,219,157,76,143,13,240,99,145,12,214,145,22,235,23,72,171,153,62,155,140,126,96,80,136,146,17,85,20,25,45,14,104,4,154,189,126,168,12,8,66,140,160,0,125,85,124,86,118,36,48,86,15,172,62,148,74,142,174,231,109,157,234,104,180,178,17,16,80,114,36,81,50,103,156,24,195,213,84,49,92,41,152,57,69,49,239,112,76,243,73,49,92,117,21,195,149,189,27,76,161,45,205,2,178,55,219,54,95,25,80,84,145,103,25,115,206,143,12,7,243,168,15,21,56,26,30,213,133,145,158,60,40,142,144,40,183,4,122,221,250,82,35,200,173,100,132,156,15,12,10,67,179,76,32,25,46,82,47,207,141,170,230,70,185,185,225,238,250,185,81,175,54,55,147,122,91,119,225,80,170,234,79,231,195,112,115,132,209,42,118,52,82,240,79,248,200,214,71,82,217,12,150,45,45,97,28,85,33,29,141,221,179,154,138,58,130,182,11,197,28,112,44,88,10,197,12,234,112,170,146,58,142,118,66,161,143,137,65,160,77,199,24,61,205,124,23,215,21,36,72,123,233,250,35,243,236,228,108,142,166,146,131,75,174,243,170,18,85,72,113,145,189,7,251,197,47,62,233,38,69,186,24,149,34,21,175,165,197,233,100,122,36,106,242,120,228,251,70,212,100,53,26,53,153,227,125,171,132,152,44,150,116,250,120,223,170,10,251,29,39,127,20,200,176,161,82,7,101,91,71,157,147,113,175,80,56,211,4,115,136,139,251,233,75,63,116,56,85,54,3,109,147,210,126,96,128,127,87,231,115,222,215,69,192,114,133,15,12,154,226,100,171,249,124,136,251,57,9,250,142,144,221,75,92,22,145,255,156,100,136,220,140,191,28,81,216,115,171,6,105,8,88,29,146,40,120,208,202,163,12,72,136,135,206,42,221,217,230,248,234,113,194,46,177,247,12,227,163,46,230,55,97,153,80,64,248,136,156,66,229,0,228,113,75,33,125,125,24,99,220,31,92,229,145,84,143,23,2,137,221,83,92,143,139,253,201,177,66,171,48,161,116,182,98,101,143,140,84,198,86,43,244,158,166,56,232,190,106,227,171,166,145,55,35,159,211,205,38,147,237,250,224,3,28,83,56,118,201,98,153,102,212,109,23,103,84,85,113,70,53,75,89,169,19,100,172,212,114,219,58,226,109,29,185,109,173,33,26,13,91,173,201,145,127,187,176,213,97,189,173,157,123,72,64,86,137,35,147,107,146,70,234,246,67,102,39,92,58,216,241,255,171,243,132,240,38,56,14,152,102,143,90,62,182,78,218,15,80,125,133,180,122,128,92,248,7,6,52,11,213,107,248,22,199,97,229,9,163,232,247,85,192,255,66,35,245,103,170,128,228,42,219,155,128,72,206,5,170,195,30,183,103,37,25,253,129,182,248,59,187,64,30,165,124,116,156,149,69,192,88,12,68,211,5,86,173,229,49,67,127,208,254,97,215,14,141,236,75,72,191,13,121,138,40,114,91,146,76,49,147,67,129,97,49,90,232,16,127,25,35,35,201,9,207,84,36,16,61,150,103,61,145,79,67,140,196,2,238,36,222,60,116,58,220,116,152,124,35,166,65,191,81,137,147,76,184,101,167,78,22,211,72,14,76,35,29,48,237,189,22,220,81,98,184,201,8,183,99,132,245,7,185,134,233,115,133,33,25,31,45,34,22,244,181,64,18,145,64,70,209,29,118,234,144,35,116,201,232,83,219,47,65,9,237,213,121,100,239,114,201,218,178,96,132,126,113,243,165,200,47,134,135,158,122,57,94,62,5,236,89,220,130,136,158,67,189,4,81,158,64,152,107,48,48,229,125,169,24,85,5,153,3,114,179,142,105,84,69,144,27,242,238,73,32,246,115,214,201,99,72,114,3,146,65,65,144,125,25,159,179,240,50,115,230,252,135,66,110,50,198,57,139,9,41,169,49,103,154,176,9,253,156,233,122,206,82,158,179,17,89,40,152,177,57,227,183,25,63,42,111,67,144,155,73,115,38,160,133,203,239,107,18,218,36,217,108,57,112,191,127,21,201,41,167,205,15,22,4,195,193,199,16,244,228,162,110,132,146,74,72,159,11,137,147,160,137,60,114,34,131,78,158,178,32,192,44,8,75,136,241,120,170,202,181,66,1,110,192,228,240,124,65,66,53,82,77,172,223,101,175,63,145,71,14,213,215,64,120,64,205,225,4,29,80,179,72,8,213,128,144,198,1,66,26,36,108,67,48,28,42,3,89,102,195,151,7,11,12,186,202,176,82,196,48,186,34,161,66,186,3,103,57,85,100,199,140,95,25,84,86,32,189,206,197,24,161,69,81,192,102,242,98,171,252,238,85,54,147,20,228,16,138,71,84,163,160,21,206,89,102,52,85,178,211,125,87,25,26,148,113,80,149,1,67,220,4,228,218,200,231,161,131,170,20,56,0,143,84,105,152,61,228,11,13,255,196,133,38,216,44,43,15,153,117,2,98,75,72,78,157,93,144,59,33,228,189,161,203,0,84,194,150,123,14,194,166,227,63,74,17,65,130,235,63,221,39,134,50,159,134,168,218,229,102,47,105,255,196,29,102,201,126,112,248,164,96,160,131,20,20,105,22,181,139,141,113,73,174,164,244,6,196,192,254,234,185,134,24,111,103,194,252,135,142,125,249,62,183,156,200,129,71,239,19,194,30,60,6,237,178,104,179,37,33,249,241,180,109,124,34,111,59,25,59,241,14,109,242,122,236,176,246,43,46,129,74,51,138,81,2,45,252,235,227,111,192,20,153,169,98,41,220,137,248,22,254,255,240,124,63,175,29,135,8,203,28,166,9,175,6,116,201,59,200,56,115,198,196,41,218,93,68,70,18,232,16,222,88,11,7,209,33,8,131,130,104,143,22,169,149,177,125,236,110,8,173,146,212,122,120,196,238,19,72,138,132,52,66,26,25,40,55,192,62,57,111,209,89,219,198,1,182,29,7,219,130,142,61,243,225,234,128,226,207,169,160,5,10,90,171,243,7,84,108,239,165,142,208,166,49,116,85,146,215,145,166,244,21,210,138,4,206,125,128,65,58,43,177,14,201,31,60,92,146,126,12,90,143,245,224,190,211,139,138,118,12,73,154,2,23,21,46,96,75,198,75,70,102,184,165,31,144,13,115,115,246,110,51,121,139,233,238,79,125,249,83,215,30,102,112,217,99,133,177,226,142,84,129,49,235,13,12,138,108,38,0,85,69,147,72,138,22,35,37,224,11,37,29,111,80,230,56,217,179,120,89,105,59,36,217,158,182,47,137,50,159,1,77,225,217,118,128,98,207,68,82,3,79,175,32,85,70,48,86,251,43,40,160,42,216,163,182,75,125,207,43,121,7,171,236,123,64,219,103,68,233,229,145,200,68,150,85,224,75,201,174,222,196,184,199,204,105,237,101,173,19,143,148,0,230,25,105,225,211,47,125,252,245,135,83,60,133,247,30,43,218,56,90,3,237,230,104,219,56,218,176,194,173,77,10,242,197,20,120,112,187,0,50,109,236,253,14,255,89,104,170,93,207,103,32,112,225,45,131,42,188,101,70,194,31,78,171,130,110,106,8,200,157,232,187,136,92,1,109,159,19,165,221,235,48,120,247,178,151,233,222,50,15,96,10,87,214,20,179,221,124,125,72,187,31,111,222,14,232,61,122,9,215,72,130,191,238,92,36,230,59,195,186,110,243,66,192,14,91,191,62,37,124,66,194,9,207,86,9,26,223,221,191,168,99,186,35,247,31,99,167,79,2,193,45,34,60,148,247,66,196,254,237,17,196,7,212,2,133,45,46,82,167,45,83,14,13,134,121,174,22,243,255,15,72,135,59,66,71,219,189,129,140,27,22,98,235,204,191,26,179,100,165,195,145,97,228,19,146,153,201,157,137,21,21,39,168,189,223,73,76,0,173,157,99,37,57,78,119,202,38,242,63,4,183,72,82,160,41,197,202,65,186,118,148,221,20,108,182,205,232,180,90,83,123,246,225,143,109,8,187,33,64,99,107,209,78,80,164,188,179,27,226,176,219,187,106,57,213,172,200,124,43,91,151,224,27,149,184,143,118,31,166,144,179,50,85,61,35,4,46,15,217,9,18,95,59,13,225,194,199,106,233,30,118,169,90,45,205,247,164,37,97,125,112,139,84,185,130,22,159,90,33,95,187,28,151,189,178,61,94,31,31,174,20,36,184,139,75,18,224,221,34,85,161,237,197,232,40,46,119,139,211,245,192,23,197,234,124,110,144,213,149,228,143,219,94,77,181,85,22,73,158,231,57,139,42,48,101,194,252,108,136,116,20,193,47,240,53,26,216,251,63,182,81,97,243,144,184,36,36,164,222,146,40,71,246,25,133,176,180,81,89,68,160,108,251,125,133,182,127,42,143,129,42,237,254,227,7,5,94,169,248,226,10,126,197,200,170,190,19,137,105,2,78,42,34,124,161,109,219,239,231,194,68,186,65,155,42,208,174,2,136,236,243,226,125,228,101,142,45,175,144,90,55,87,68,147,153,100,100,38,5,93,223,20,240,179,8,32,230,40,225,222,154,3,23,97,180,174,214,65,154,37,123,51,93,3,72,114,239,66,234,100,80,200,249,188,69,102,49,116,184,118,213,174,60,180,251,242,22,209,222,9,83,40,214,12,248,108,81,36,84,33,17,33,203,42,245,160,104,147,75,124,46,53,94,108,178,114,220,245,24,188,245,221,144,224,30,42,243,40,169,20,191,12,128,43,189,95,109,17,122,167,213,66,208,117,161,179,143,75,186,113,171,213,30,177,89,13,89,119,133,54,30,164,120,51,70,253,34,202,67,242,236,69,254,145,116,191,146,190,251,171,84,109,124,176,166,136,69,219,17,222,127,146,14,26,252,69,172,47,75,12,156,246,52,170,92,128,227,166,11,48,91,124,225,165,128,235,54,218,226,2,44,43,23,96,44,17,53,198,6,132,218,137,175,240,1,64,82,150,117,188,119,217,217,95,238,244,93,24,171,153,218,76,32,92,117,66,121,236,12,238,206,253,132,47,184,79,64,222,113,13,203,131,2,38,76,67,187,238,133,160,57,164,102,198,134,19,218,253,208,158,48,156,144,122,221,174,68,253,2,58,212,10,82,197,25,57,50,203,233,196,149,242,54,179,247,6,178,237,156,10,152,7,132,146,24,124,92,69,7,69,23,19,144,6,214,108,76,163,129,212,216,154,13,116,232,79,236,8,95,213,85,25,121,254,87,39,165,112,97,14,201,188,206,234,53,134,34,101,201,181,28,48,107,67,40,232,4,12,235,93,254,205,18,178,171,187,216,156,145,64,2,192,13,136,245,139,14,21,221,97,244,205,72,65,80,195,49,175,135,184,204,41,114,83,45,184,87,110,138,5,59,117,5,107,244,61,184,23,111,221,174,19,114,164,19,178,217,9,70,136,66,138,82,242,5,75,179,3,210,238,98,247,144,46,61,56,52,202,133,234,168,15,121,34,60,108,132,169,212,39,116,252,178,231,187,34,74,64,175,33,253,215,65,142,61,56,148,74,232,144,154,211,5,29,52,9,227,203,119,24,33,62,246,211,80,87,56,82,155,113,181,133,85,109,161,171,141,32,225,91,9,87,51,203,216,245,25,158,20,60,93,86,175,149,69,99,178,187,202,224,76,43,63,197,172,58,42,60,48,19,222,36,209,97,63,105,138,153,26,172,162,50,70,104,78,161,76,136,91,177,116,84,145,193,246,31,26,70,212,204,42,68,77,242,105,195,183,217,80,15,137,50,99,59,101,37,171,14,14,248,43,58,46,20,71,224,224,184,84,196,255,48,179,193,16,65,184,233,90,188,19,219,248,180,11,207,39,9,109,210,224,133,64,236,171,219,135,126,23,130,204,110,100,253,137,115,219,215,163,110,251,20,7,54,116,155,216,238,39,192,97,218,225,21,251,198,230,236,2,34,208,253,66,91,164,104,162,35,243,121,100,69,146,75,138,9,26,80,0,105,93,95,161,170,73,49,144,150,163,171,156,79,34,173,17,94,204,170,188,69,138,34,104,220,169,1,223,169,52,161,16,224,125,42,118,210,133,26,208,133,154,144,255,95,135,204,163,32,192,93,82,199,157,102,208,82,142,68,24,145,152,143,225,251,149,195,148,41,20,29,219,2,47,117,182,170,166,171,6,79,162,19,100,110,197,7,50,41,248,8,79,217,31,200,213,1,79,178,13,230,179,150,153,183,34,224,1,175,141,213,91,167,222,100,55,18,69,12,18,127,210,209,171,244,18,197,82,215,116,240,186,166,198,170,162,70,64,175,38,216,11,104,241,177,215,102,102,221,202,92,85,214,203,42,249,249,107,85,198,241,168,179,126,145,241,114,179,207,255,230,166,191,250,94,252,205,77,6,154,178,47,252,230,166,176,159,36,203,27,65,37,122,18,147,95,254,77,39,153,199,186,47,242,139,169,251,73,194,112,122,145,5,211,157,126,30,82,141,172,68,16,3,236,223,99,197,108,239,186,51,189,123,62,120,250,204,3,103,55,134,242,84,126,173,99,131,145,91,220,35,68,113,13,92,251,161,98,71,111,253,67,176,163,46,118,247,189,189,161,127,88,191,55,223,161,151,96,199,157,102,9,174,129,107,122,242,190,145,204,59,151,157,179,101,92,22,65,9,102,192,26,213,29,63,152,191,14,118,244,228,221,176,227,222,124,7,210,116,240,186,115,86,159,0,133,101,250,69,11,201,217,34,162,239,113,136,131,121,27,138,83,207,0,62,68,236,34,133,101,95,170,167,75,248,53,163,150,104,102,112,160,83,132,217,190,156,10,181,84,13,62,129,132,116,233,86,159,176,209,49,164,249,87,231,139,25,242,142,93,37,192,102,5,51,196,23,227,36,28,158,47,148,37,23,71,101,135,195,225,80,29,77,141,37,177,230,90,161,236,212,106,42,119,218,117,80,54,122,159,149,253,239,59,193,192,71,214,216,152,208,80,230,147,66,61,214,235,156,42,118,244,224,204,185,84,193,142,115,133,70,130,208,128,94,37,158,220,144,206,167,196,233,209,96,86,65,219,63,191,116,233,82,116,244,120,170,108,140,12,160,89,170,89,47,157,205,144,180,38,161,40,101,246,18,161,221,149,217,5,73,42,87,217,39,144,2,30,85,128,163,130,169,126,222,246,107,32,143,160,149,106,154,48,92,143,130,230,131,3,92,96,9,14,22,98,146,170,120,200,11,158,160,216,181,37,77,163,194,174,107,80,171,248,13,176,139,212,62,157,7,208,90,117,66,77,162,71,77,153,16,166,81,72,226,182,61,90,208,26,234,69,141,181,118,47,236,232,93,250,203,191,248,230,159,253,241,191,254,194,37,113,250,228,162,22,222,172,91,49,110,48,77,123,8,173,18,66,182,176,243,42,59,60,45,90,69,64,84,111,97,32,44,84,255,48,105,72,2,18,82,226,31,60,117,166,201,167,151,233,94,146,254,27,54,2,48,86,128,233,35,109,26,33,29,26,113,14,40,15,105,228,36,25,78,28,201,50,18,136,87,29,82,79,128,244,100,96,79,14,138,118,73,168,75,10,144,194,199,234,40,78,189,21,111,167,16,211,39,7,69,135,52,196,150,16,153,214,138,180,111,231,6,249,52,221,163,212,20,222,21,233,9,142,197,104,96,122,141,213,67,172,85,142,173,41,139,24,87,9,83,15,84,173,128,136,152,132,184,178,139,158,80,26,71,75,248,79,17,180,75,222,109,218,158,28,228,56,106,38,200,251,121,135,228,76,138,32,158,251,12,87,73,150,169,100,68,226,36,78,253,156,3,243,49,242,14,82,26,253,162,141,163,10,8,148,30,130,62,225,130,71,208,113,163,39,148,84,43,222,209,24,61,137,162,32,222,50,122,138,51,111,77,191,64,242,124,122,141,167,32,134,244,132,159,2,178,242,102,132,109,23,121,243,29,4,172,213,102,19,242,250,245,198,68,52,222,193,249,210,3,62,234,3,136,112,85,104,80,253,132,68,241,146,43,112,35,86,110,196,138,210,253,136,169,81,198,57,11,74,183,46,26,37,75,54,66,231,61,75,237,181,8,188,61,196,99,54,133,208,123,155,83,16,16,85,4,101,17,179,57,20,158,101,41,40,187,118,172,80,101,222,70,206,173,196,119,58,116,232,50,236,41,82,174,109,162,52,200,46,103,80,180,56,232,26,158,199,205,163,181,192,51,215,198,158,109,44,9,204,34,230,43,73,227,123,122,194,27,236,49,0,59,126,144,78,91,93,98,57,70,253,98,57,241,30,61,242,6,21,195,75,43,122,44,223,129,187,188,15,1,180,250,119,65,50,176,241,42,233,48,112,139,239,35,193,223,142,222,117,103,206,21,154,231,40,238,67,50,192,209,197,37,184,164,181,99,16,150,185,182,151,228,33,179,100,215,92,199,77,89,180,200,169,131,25,14,126,194,23,90,236,128,67,118,37,138,191,73,66,64,164,36,208,109,54,224,210,136,158,32,24,189,14,82,42,14,94,2,58,213,225,1,177,235,163,218,82,5,73,45,29,150,60,158,202,157,126,142,107,62,97,191,24,58,52,103,96,170,207,103,164,72,88,144,47,22,216,147,175,231,100,145,164,204,21,246,147,247,111,178,136,194,81,95,25,155,13,159,254,177,77,145,125,130,67,19,116,250,36,43,67,134,183,154,251,41,136,237,218,177,178,224,243,192,33,52,26,164,180,137,81,154,252,61,47,179,2,182,121,99,203,10,8,174,108,5,224,151,6,99,175,59,209,248,194,193,164,47,92,125,5,28,14,222,83,72,229,53,63,136,230,15,130,159,35,89,113,194,109,98,31,47,123,55,1,199,71,72,232,246,183,81,137,23,167,42,57,188,65,4,170,79,161,215,144,98,142,243,160,162,123,76,117,235,135,32,176,252,54,51,168,253,12,42,226,51,72,255,165,32,156,252,134,59,17,221,12,170,18,203,17,88,94,225,180,45,6,204,164,89,100,237,65,78,192,249,166,132,89,90,138,45,94,185,113,31,194,1,16,33,128,68,163,160,185,240,212,13,1,124,224,218,99,138,207,17,55,228,86,68,156,41,45,27,94,253,100,35,195,230,5,134,141,208,201,164,137,172,124,178,54,83,134,23,71,222,207,136,28,157,78,236,253,159,221,20,54,131,12,215,234,195,248,251,193,207,109,138,108,93,36,207,24,165,217,138,117,169,116,82,242,241,136,188,130,165,144,200,32,173,154,202,215,49,112,8,200,95,23,140,250,88,172,164,1,24,187,111,37,13,193,144,35,24,50,1,237,131,98,191,19,116,131,202,222,215,105,227,13,253,39,238,149,111,136,149,52,38,76,100,118,76,13,182,58,218,153,20,71,24,77,170,229,37,247,246,55,25,81,217,52,61,63,241,165,54,219,175,227,107,28,111,151,42,16,86,102,127,151,4,191,61,253,78,210,129,206,177,216,216,161,221,120,161,112,198,2,101,108,239,71,200,100,89,219,100,172,23,65,210,116,245,173,122,175,57,46,134,176,157,50,123,29,113,164,46,134,221,30,138,139,161,109,64,245,64,184,168,110,29,171,78,119,213,66,110,216,99,171,174,142,122,45,26,189,118,252,242,132,94,83,92,0,238,178,166,234,110,35,41,232,200,220,86,78,191,134,92,68,196,237,114,100,84,114,180,116,229,212,107,232,123,14,213,104,241,4,68,246,17,150,24,176,105,180,73,126,60,144,102,157,141,156,85,189,130,76,49,102,118,198,172,11,176,136,141,98,17,93,222,236,76,110,49,59,35,175,54,103,177,33,71,109,206,4,27,96,136,202,174,74,188,54,155,179,109,44,206,234,150,201,218,74,114,40,190,87,183,54,19,91,172,205,216,43,79,76,170,209,91,155,137,45,214,102,19,94,106,54,53,193,186,107,186,50,64,99,65,223,183,222,0,109,194,0,182,246,138,146,147,105,182,42,226,168,70,50,123,15,61,111,107,114,37,201,228,74,110,49,185,146,181,201,149,244,30,57,100,100,229,98,171,116,92,80,149,228,203,70,134,46,152,188,94,112,158,202,65,243,104,147,149,68,78,57,79,209,202,255,222,31,114,29,62,176,216,109,148,163,14,177,11,174,97,79,124,82,26,192,74,170,193,216,189,43,41,18,25,228,53,203,98,60,5,44,198,160,248,70,234,240,252,8,200,189,102,144,123,77,210,65,15,114,31,248,161,72,251,58,54,67,82,7,84,214,137,26,46,167,214,185,82,52,124,59,169,203,138,220,188,117,221,123,130,63,55,236,112,106,106,135,83,57,230,21,170,14,177,57,134,100,85,33,7,214,166,211,241,213,7,176,139,7,48,87,15,192,212,3,184,182,49,128,144,97,102,174,160,202,89,174,50,171,171,212,147,231,100,139,123,107,53,16,70,247,185,130,182,58,220,86,236,219,74,37,7,184,116,173,169,186,53,138,145,205,62,178,127,30,168,168,138,6,105,22,124,84,249,90,66,234,131,244,208,66,166,216,22,56,153,200,172,108,137,114,176,139,163,28,204,229,186,25,229,64,115,243,65,35,64,144,232,105,138,15,207,67,39,24,115,114,7,12,249,235,7,46,190,121,204,224,8,26,194,195,196,101,71,91,227,129,81,37,61,145,125,55,199,1,116,32,9,45,238,103,198,253,12,183,134,165,81,28,150,166,234,167,170,251,153,110,219,79,106,97,127,255,177,222,37,121,111,222,198,138,143,164,74,55,59,86,16,110,122,17,219,246,209,84,67,108,131,195,208,238,125,228,179,223,120,26,255,127,221,187,142,55,159,254,209,128,3,44,132,126,224,208,238,181,79,65,64,213,159,228,250,121,79,178,109,9,107,236,144,103,171,191,141,41,66,247,137,142,164,124,219,229,49,132,200,246,134,46,20,5,41,90,145,41,114,144,14,85,200,51,6,116,224,152,65,191,33,14,65,96,191,46,14,13,28,190,171,134,54,168,236,86,114,82,2,5,49,93,162,161,99,115,216,164,35,103,24,111,87,116,149,209,139,253,227,223,75,64,168,83,56,199,192,14,166,230,102,221,125,147,142,123,194,121,95,116,213,194,1,21,247,116,178,168,5,139,59,98,254,86,216,29,197,54,99,122,108,133,55,67,46,85,31,78,92,201,135,83,137,243,208,80,208,206,190,59,113,113,53,146,143,25,153,172,179,192,188,205,231,169,3,56,96,78,87,59,72,12,69,252,51,3,92,148,36,79,80,96,250,69,72,178,31,175,210,117,176,215,20,170,143,168,40,194,211,21,214,169,74,92,192,180,54,18,151,154,163,52,10,154,71,13,161,141,251,69,124,132,173,114,66,178,121,181,34,215,108,147,19,176,86,160,104,217,245,187,160,101,127,228,193,79,62,35,238,34,148,227,254,192,34,237,254,129,65,90,159,251,130,34,81,110,87,74,179,0,47,62,226,36,148,225,10,123,248,118,140,111,139,187,72,161,166,25,114,172,97,124,67,37,41,112,144,241,239,81,112,132,177,225,73,8,155,195,83,172,162,38,99,87,194,106,55,132,229,168,24,19,133,241,55,218,135,104,158,52,152,60,6,227,162,92,130,57,74,92,45,133,121,32,216,105,85,80,204,10,181,4,157,125,66,152,37,72,236,197,135,145,4,172,116,120,228,244,19,149,121,0,2,162,62,9,7,91,128,247,103,116,200,172,67,128,108,159,236,115,63,3,104,37,36,67,202,35,32,67,90,95,201,178,11,252,153,38,144,38,247,7,82,53,48,196,38,99,133,213,78,186,132,94,213,97,207,187,51,191,178,41,172,26,243,188,163,112,156,7,197,181,88,248,160,152,101,122,47,35,127,15,251,35,248,130,225,248,197,15,252,202,166,200,238,0,101,187,7,197,245,246,255,250,188,203,185,190,180,23,62,143,57,91,156,128,245,107,117,2,94,96,146,3,236,11,216,72,68,176,255,246,44,53,159,221,35,217,119,119,1,239,113,213,85,144,229,120,75,121,24,180,12,187,79,78,165,220,243,145,161,30,20,93,30,221,2,15,121,15,67,14,131,143,246,144,149,118,119,246,46,80,251,68,55,103,18,137,206,9,43,14,145,231,36,171,125,57,138,245,66,78,150,90,135,82,146,110,237,161,193,238,19,187,172,25,48,96,206,172,125,5,151,129,28,213,58,45,167,228,252,67,155,155,225,147,236,191,194,33,6,99,159,68,115,255,110,64,170,248,160,88,224,78,115,55,253,196,211,84,186,137,119,211,36,236,75,159,175,230,136,215,43,241,6,52,68,105,127,244,137,77,97,195,45,239,219,159,120,98,83,112,213,15,61,177,41,178,239,39,71,78,246,202,159,181,23,127,99,115,203,40,216,87,115,63,223,212,223,8,84,92,221,212,206,16,204,233,244,198,131,251,24,39,181,170,232,166,136,233,166,104,52,108,12,159,231,204,140,59,237,164,246,97,99,52,71,30,145,35,161,253,140,147,110,67,104,127,79,48,110,209,214,176,33,20,3,213,199,186,216,166,26,190,88,42,214,80,58,172,65,166,7,21,235,202,231,64,247,204,162,206,172,201,13,135,236,33,3,59,96,251,166,236,32,179,153,1,177,166,120,251,81,164,236,61,186,139,87,39,121,133,175,152,117,34,211,242,176,178,105,117,206,10,78,225,98,13,25,157,22,145,149,107,69,76,244,85,188,202,22,174,230,200,124,17,219,206,49,18,92,255,194,151,63,245,101,65,1,208,91,108,180,10,134,3,160,27,136,108,135,2,160,83,77,91,236,93,73,92,104,56,0,122,35,10,212,50,81,51,20,92,43,100,183,0,210,92,86,1,208,85,35,0,186,51,43,37,26,146,20,195,115,100,49,218,57,134,71,170,130,246,34,241,141,129,51,4,235,170,57,247,77,231,72,20,105,64,101,231,72,37,63,91,69,24,33,171,23,36,130,104,234,178,132,130,92,142,5,38,55,222,168,151,44,40,184,146,0,183,94,200,97,103,12,254,54,217,79,72,23,150,154,173,157,2,230,155,66,118,207,113,95,191,142,172,46,61,96,41,7,74,31,91,19,149,126,251,119,155,20,169,106,174,115,175,182,174,214,121,64,182,124,193,171,173,115,54,70,229,16,59,102,114,120,164,43,94,231,26,167,72,251,117,62,22,211,101,242,58,55,205,16,58,29,231,87,67,214,136,202,225,179,244,98,92,231,113,174,25,72,201,159,146,113,153,189,13,212,30,13,69,171,39,223,101,150,160,213,83,239,98,51,145,46,199,79,154,101,118,50,227,15,171,3,44,221,205,91,148,133,23,245,58,59,19,6,21,223,72,163,226,249,224,13,80,155,120,71,228,212,27,173,206,147,183,47,110,128,200,234,53,82,71,12,135,195,161,92,197,167,216,45,12,109,99,54,133,8,173,94,99,171,142,134,193,183,118,27,64,147,254,72,243,6,208,28,50,94,87,102,213,17,155,85,27,183,1,76,189,1,76,99,3,56,78,69,17,189,78,232,236,1,152,196,234,53,208,37,180,92,12,26,183,238,13,174,123,60,82,73,226,49,203,229,39,175,240,192,13,132,130,11,233,198,210,166,101,30,84,75,219,240,210,214,227,75,91,53,150,54,123,227,80,244,130,109,150,182,195,218,123,201,200,212,153,110,196,11,194,199,58,108,97,215,163,202,22,63,169,236,196,60,219,69,49,214,200,26,188,3,17,82,247,41,180,32,32,107,167,41,43,243,54,139,58,137,19,233,208,94,152,198,173,147,17,47,50,195,180,126,184,76,241,233,194,126,97,96,186,2,92,219,233,168,98,220,203,183,34,91,62,131,44,139,30,97,89,244,4,150,5,90,37,82,233,109,218,82,200,181,100,142,107,33,107,159,195,121,27,166,28,95,83,226,69,204,39,81,216,175,228,21,205,221,28,86,1,228,34,218,205,145,139,244,218,68,143,107,110,97,195,108,145,74,40,40,48,14,132,4,20,126,32,1,243,34,245,227,173,20,240,11,187,156,75,32,147,43,178,70,163,144,76,49,7,119,13,240,72,242,108,71,48,198,118,196,204,118,196,200,24,152,38,19,111,198,217,14,227,35,109,213,252,98,0,17,173,103,72,203,132,176,116,252,108,175,178,13,62,183,29,249,136,253,19,218,54,220,182,168,219,22,117,219,193,182,109,19,235,31,179,233,228,87,2,25,185,85,23,17,190,67,219,175,60,250,70,129,103,186,253,114,139,73,244,226,236,163,28,105,127,51,17,186,108,218,210,78,136,109,85,252,42,219,153,81,92,61,199,11,1,41,197,35,82,19,64,60,38,38,136,120,58,163,145,233,148,87,50,36,51,34,38,128,96,4,150,175,8,120,157,71,212,100,56,222,164,225,38,197,196,38,47,251,5,67,136,143,58,46,127,164,189,132,121,252,38,255,30,88,220,38,226,16,36,54,58,124,220,63,190,99,192,129,241,142,225,254,69,78,131,44,91,233,148,106,192,29,146,189,128,238,9,104,207,223,105,106,185,139,219,32,178,142,217,24,112,204,198,70,236,114,229,167,37,224,105,9,157,175,4,51,213,175,26,163,119,60,140,49,109,55,23,153,114,106,107,100,74,79,178,190,77,184,255,252,143,33,168,249,55,233,216,10,23,186,18,151,94,99,39,170,117,222,124,6,89,99,97,175,255,231,116,169,124,224,46,32,116,166,59,32,176,226,59,239,154,247,129,208,199,74,4,86,220,65,197,238,154,79,178,213,4,34,94,216,23,52,139,68,247,111,193,225,231,153,35,15,119,233,44,10,107,99,74,15,3,16,13,242,72,145,97,12,153,226,178,192,240,205,236,122,255,50,1,6,16,129,161,88,187,21,247,249,111,230,254,206,185,191,224,254,118,221,223,253,238,239,109,125,118,242,116,255,209,109,191,212,167,202,157,197,37,40,251,230,126,130,43,147,40,9,83,178,146,148,95,203,141,215,147,114,64,51,7,35,71,242,109,34,64,197,29,108,161,104,150,113,178,87,7,12,128,191,150,155,4,76,202,118,92,30,10,131,11,143,56,131,144,221,129,187,168,99,54,108,52,28,154,153,232,72,142,208,12,37,72,155,249,128,113,36,68,149,117,0,57,13,146,3,200,81,28,41,251,165,211,27,236,189,144,117,151,83,101,63,247,161,13,97,255,30,104,219,45,237,69,252,253,192,125,27,164,169,163,91,157,227,171,54,29,100,116,141,123,226,232,192,143,212,2,239,138,251,110,74,186,217,119,88,123,84,68,167,65,149,78,212,237,3,133,47,143,130,143,122,194,206,184,136,223,134,35,98,146,46,56,164,235,187,185,61,20,110,15,225,130,38,251,147,35,170,69,78,153,115,150,119,50,225,26,71,145,66,211,136,236,46,100,89,57,136,50,82,117,251,196,117,133,116,176,182,210,5,238,150,182,88,1,105,111,89,57,158,134,20,7,226,80,170,216,97,153,34,112,7,46,2,183,228,8,220,70,8,97,132,97,163,199,172,100,21,166,19,255,208,220,140,119,127,54,247,164,147,239,126,92,119,191,211,232,126,148,248,78,191,29,212,45,114,142,150,135,234,170,93,77,232,69,47,175,199,155,141,124,50,28,32,40,209,250,108,100,34,65,179,39,151,179,6,222,50,161,134,123,36,38,10,137,77,221,35,142,65,232,81,138,136,153,120,248,19,46,0,238,239,104,22,204,44,149,69,80,49,117,230,176,225,91,108,191,115,210,184,205,123,234,4,12,75,72,94,144,251,25,148,166,225,166,135,171,31,2,187,191,44,116,246,95,217,32,39,154,120,142,12,199,130,35,228,140,230,226,8,129,180,79,86,161,158,2,246,251,10,217,81,139,60,188,110,27,1,238,217,191,168,133,13,73,254,229,131,95,159,253,97,23,252,218,39,156,247,9,94,208,72,67,160,125,7,134,204,11,181,55,43,174,155,141,11,162,181,187,56,205,65,151,33,124,160,8,65,103,95,149,206,94,15,89,64,236,122,224,20,156,84,213,184,139,86,208,85,11,245,8,186,19,71,0,141,222,111,140,247,254,25,159,192,206,110,208,112,118,235,86,21,49,143,18,48,143,226,103,173,246,112,91,234,47,136,228,49,93,17,40,85,48,227,138,0,193,41,64,98,81,211,93,184,202,118,211,163,196,98,48,25,139,148,40,173,81,186,145,89,63,85,67,107,64,192,240,176,129,253,42,199,25,222,39,12,125,250,200,121,167,59,72,78,250,77,153,98,188,214,170,75,210,201,136,171,46,109,229,70,245,118,93,114,12,188,114,60,164,28,227,33,173,56,40,112,211,217,175,178,90,153,181,81,147,203,115,116,247,236,219,105,151,49,62,35,29,180,21,252,40,133,229,84,181,67,34,179,240,36,189,244,4,16,11,109,169,254,145,32,157,116,237,254,237,231,250,43,248,92,255,197,223,126,174,255,148,62,215,63,248,43,251,92,47,27,29,174,203,83,242,228,149,8,122,201,99,0,194,58,138,251,127,144,160,87,142,8,192,70,195,201,147,77,148,11,196,238,197,182,25,210,131,206,162,39,235,233,119,166,138,169,205,166,146,209,9,1,55,88,82,162,200,60,136,95,148,141,23,9,225,190,91,18,141,217,180,5,162,136,94,100,237,102,198,40,65,39,11,46,2,239,195,35,113,14,131,155,117,76,225,4,53,197,105,129,214,155,116,86,71,45,182,23,63,184,41,178,247,229,1,251,254,11,54,157,33,13,149,81,235,120,135,197,69,204,209,201,254,17,173,3,142,246,2,20,22,205,52,234,161,209,124,80,210,199,99,150,37,126,11,46,227,196,249,119,79,174,77,189,134,218,42,42,8,247,41,137,170,136,99,227,85,165,187,106,174,177,170,140,75,235,240,150,82,19,138,80,154,34,33,85,99,229,57,130,251,211,90,77,173,235,147,76,87,69,11,162,34,219,212,146,13,179,153,130,226,228,198,214,148,246,83,127,86,197,237,137,237,207,255,217,134,215,58,69,189,251,134,195,225,115,180,29,200,217,88,16,171,86,196,36,246,46,152,37,37,159,7,36,64,34,252,126,45,38,197,58,222,185,182,152,206,78,65,132,212,88,155,68,234,69,90,129,64,100,217,41,166,242,103,42,59,168,29,32,217,48,251,154,218,226,135,81,130,103,171,208,183,26,187,2,45,104,103,59,242,107,107,213,89,194,170,51,220,176,81,105,63,91,15,66,216,71,255,108,195,171,202,162,222,143,14,135,195,243,146,71,68,27,60,134,4,168,255,45,232,0,246,182,13,41,96,223,102,0,187,115,13,40,152,133,102,163,175,83,75,112,109,197,47,255,55,102,9,94,87,52,158,83,153,192,181,249,235,19,98,230,204,18,164,13,66,169,131,191,13,255,78,240,119,196,230,105,175,71,154,248,179,163,39,197,36,81,121,84,157,20,140,181,208,80,9,5,124,82,4,219,137,202,13,68,219,139,202,47,123,82,132,254,164,168,5,223,213,73,161,154,39,69,56,118,82,144,76,245,25,62,41,200,124,80,213,39,133,170,79,10,133,39,133,170,79,10,142,65,190,168,97,68,202,173,188,32,125,242,17,161,249,136,208,124,68,56,67,196,185,210,190,236,143,8,101,157,169,158,63,34,148,117,144,113,1,135,85,34,131,179,122,163,139,127,72,150,102,152,227,116,44,188,225,53,111,120,213,104,227,153,198,134,247,59,208,11,185,189,31,168,241,22,143,106,194,38,231,80,141,177,223,228,106,194,38,55,227,155,220,137,160,63,169,57,118,225,95,179,25,217,95,56,51,178,215,102,201,116,85,150,100,175,217,216,75,79,54,246,186,188,101,214,107,178,2,27,179,204,210,19,45,179,62,113,89,186,141,131,95,115,160,108,118,251,247,116,155,126,53,186,205,212,193,75,216,200,104,59,186,205,10,166,137,82,179,147,169,51,233,73,55,93,145,107,99,149,85,61,97,114,77,95,158,92,219,166,39,206,95,213,147,95,234,138,200,181,201,229,217,150,36,203,120,107,57,122,77,153,197,90,212,235,232,181,206,54,244,154,106,236,40,71,175,169,17,122,237,235,74,154,113,83,243,8,226,247,144,48,58,190,27,226,247,166,17,132,16,65,120,247,187,241,223,158,188,239,110,136,123,242,190,127,52,32,221,170,43,25,66,124,119,17,222,13,225,123,83,157,116,162,4,87,178,2,189,202,219,137,127,209,132,2,197,183,166,239,220,90,97,192,155,146,0,146,101,191,72,64,151,69,123,159,16,246,77,43,41,161,73,209,131,44,25,245,166,213,183,178,4,125,52,213,208,182,178,180,251,241,229,126,118,65,238,236,232,68,173,219,111,7,198,235,144,246,219,15,10,97,247,227,215,89,225,4,42,173,93,105,187,159,67,106,110,22,6,130,205,183,99,239,142,28,79,85,13,26,68,14,93,160,236,83,15,121,244,9,10,98,91,61,41,236,4,81,192,246,226,67,53,164,149,185,93,54,116,109,210,35,37,146,131,192,71,254,230,119,131,250,143,98,55,232,171,220,13,122,235,110,248,94,166,153,36,27,244,55,86,59,155,128,143,237,0,189,117,7,232,145,29,240,255,40,25,172,171,37,251,59,151,126,200,102,228,50,144,29,153,47,68,31,228,17,34,175,50,144,14,250,81,218,100,117,190,48,165,237,148,44,130,102,193,58,153,114,11,231,235,198,58,198,220,185,112,55,33,34,201,251,197,10,16,253,129,141,251,5,69,194,192,131,183,143,237,225,217,43,251,133,98,68,39,6,144,36,163,28,43,7,160,25,88,144,130,89,140,65,252,213,232,131,170,198,81,156,136,3,232,32,210,4,27,250,187,249,2,85,58,80,87,50,0,146,228,21,32,200,16,188,96,211,143,35,62,250,84,133,111,104,216,30,78,178,29,161,113,232,131,2,91,117,142,1,190,85,67,232,131,228,236,147,128,78,254,135,191,249,61,240,159,205,141,112,123,243,70,24,229,206,175,246,6,152,240,89,78,253,245,126,150,222,127,20,159,165,167,40,162,54,153,183,92,201,103,25,41,239,62,203,119,140,92,212,28,190,84,16,122,97,243,179,196,238,229,145,207,18,247,84,178,168,235,207,114,70,75,233,128,49,158,144,172,56,167,192,223,28,13,29,36,131,205,176,68,159,129,51,150,56,233,105,193,184,38,32,236,151,88,222,127,14,127,63,227,75,186,55,159,173,139,61,199,197,222,15,194,94,24,43,117,177,81,255,247,114,210,75,141,164,247,115,210,151,100,153,125,138,106,242,63,94,169,107,63,45,235,78,12,229,104,245,247,203,186,174,51,46,237,161,70,218,131,46,237,172,172,170,251,100,163,186,71,198,170,123,180,46,246,185,70,177,243,205,98,60,165,93,63,163,123,71,107,184,205,207,175,176,183,150,44,230,79,254,66,169,144,209,83,179,49,54,85,79,18,104,233,87,23,104,53,87,99,48,178,26,229,68,169,157,231,81,65,168,147,147,100,90,218,115,170,53,155,42,138,22,242,155,134,150,97,30,67,235,28,3,142,232,166,136,171,117,56,13,153,246,111,188,244,46,92,235,244,18,131,4,240,139,66,70,9,196,159,71,150,37,254,101,214,22,170,174,138,27,231,78,156,64,252,5,242,50,248,60,25,167,252,114,197,221,197,163,12,96,252,133,228,77,158,203,164,17,219,243,196,52,111,101,249,104,35,252,56,111,4,102,136,89,10,43,236,126,214,15,169,219,37,158,88,122,179,8,173,248,78,86,160,145,42,152,17,190,52,168,163,190,220,28,255,233,64,0,154,205,29,160,196,43,153,98,223,49,90,30,29,36,252,48,91,242,7,8,108,86,218,63,248,200,6,57,114,105,242,113,50,71,211,0,55,109,159,108,207,235,202,5,85,110,21,87,254,28,189,99,92,51,117,11,85,165,2,194,62,174,129,70,181,134,170,45,144,30,77,201,57,182,100,46,218,215,13,174,238,172,36,95,123,58,141,150,145,178,115,58,77,223,19,168,58,191,171,234,124,71,37,246,233,159,218,16,54,183,15,127,196,197,211,178,143,126,132,18,158,241,9,220,210,2,235,211,12,246,205,112,204,70,54,46,33,59,205,228,195,90,5,149,175,42,71,92,137,92,212,167,148,48,120,2,198,224,17,69,216,85,187,138,152,161,203,32,236,170,89,251,255,62,188,33,236,159,60,188,33,160,53,79,192,53,173,121,8,71,225,118,168,32,25,93,132,93,53,55,146,106,159,192,215,199,50,52,132,100,7,50,35,29,14,108,171,106,237,5,44,174,39,53,176,43,143,201,19,253,160,120,61,105,25,237,51,15,111,56,205,97,184,71,205,226,177,29,64,96,95,79,193,149,41,45,94,212,128,127,69,222,134,0,226,3,234,86,76,239,170,236,128,234,226,175,125,2,14,138,219,32,128,246,162,158,163,151,227,178,136,15,168,189,64,60,119,118,11,9,31,121,0,244,160,41,100,138,239,58,227,102,238,181,127,204,35,12,186,106,191,179,161,142,18,6,31,34,183,128,131,194,56,173,35,136,228,5,165,212,73,85,155,70,129,254,124,30,52,133,89,96,192,216,235,255,121,17,223,5,49,94,209,255,179,58,74,32,236,65,67,122,23,128,177,226,29,169,130,224,109,103,159,250,195,15,253,201,211,191,191,254,115,36,97,254,156,162,72,15,205,247,63,167,24,170,34,182,122,205,110,60,176,41,202,155,181,160,232,130,226,14,70,254,254,185,60,96,187,177,240,227,133,111,229,197,245,239,174,90,124,241,210,119,15,82,6,226,126,21,211,158,201,134,86,29,118,219,121,181,55,183,218,75,137,142,147,89,152,203,152,6,177,211,45,4,31,29,177,5,114,214,58,207,40,25,174,179,254,96,13,57,86,97,135,127,169,7,140,46,43,40,74,80,135,103,157,224,219,84,153,83,79,247,9,89,168,50,143,161,77,231,86,65,241,110,36,180,15,167,154,189,55,10,9,173,67,28,36,55,130,152,164,80,16,175,146,122,42,242,104,112,138,195,213,17,122,6,214,226,1,233,58,12,50,200,106,137,177,218,168,58,251,252,35,27,34,59,35,9,8,192,240,19,51,171,116,62,230,132,22,95,230,218,74,7,165,65,62,88,20,78,72,20,114,163,192,165,97,214,129,214,158,70,110,61,216,39,36,24,123,73,12,108,188,118,60,167,163,181,76,8,9,69,226,101,71,200,173,202,202,187,8,231,35,112,150,142,94,227,254,210,35,254,156,81,86,14,144,241,250,91,10,231,175,128,194,33,250,134,252,81,186,101,246,168,76,146,127,167,24,247,175,134,92,171,93,34,157,173,158,53,229,81,242,85,12,250,133,98,4,174,35,243,57,111,181,34,38,71,60,246,221,35,141,29,89,133,74,66,183,41,218,21,237,193,6,134,79,159,99,203,165,34,177,151,36,135,70,85,108,203,135,212,14,150,222,106,194,167,71,76,248,88,92,26,52,140,124,170,141,170,189,89,163,53,107,144,148,185,119,234,179,100,23,15,2,194,219,165,178,46,166,16,118,15,180,125,212,155,221,240,251,14,62,142,52,116,227,61,241,30,14,219,27,247,140,29,25,57,147,56,183,75,111,50,56,157,136,228,180,97,25,117,214,144,81,11,142,227,74,54,83,130,117,161,200,113,175,152,165,237,156,59,226,74,144,77,230,237,44,165,13,86,107,4,243,192,33,152,171,109,16,204,197,36,143,14,142,115,149,149,217,63,27,247,232,224,144,10,212,40,221,243,175,238,212,65,198,83,60,1,30,168,128,108,7,75,144,7,133,168,12,233,59,106,29,164,29,102,140,134,59,28,26,94,104,210,190,117,96,135,242,248,65,49,77,79,225,137,42,97,138,18,58,117,66,74,9,59,78,216,104,96,95,196,132,142,53,44,164,147,91,95,122,142,10,140,215,153,90,50,115,111,190,145,250,50,27,92,37,249,176,75,23,230,146,190,17,97,94,177,198,241,88,61,92,55,72,77,24,133,28,201,193,73,82,98,22,169,47,8,43,146,95,86,170,181,46,79,54,33,61,42,224,235,152,161,160,149,253,239,127,235,145,29,135,233,112,191,205,1,95,203,137,192,215,63,249,91,143,236,88,181,122,45,41,200,18,30,139,19,116,245,173,37,69,216,234,150,164,18,218,85,230,109,118,25,74,28,212,150,51,224,78,188,225,20,200,26,41,90,226,229,221,193,139,201,193,242,73,7,24,77,186,65,7,110,13,178,70,140,142,61,166,53,72,199,28,17,140,116,231,77,68,45,133,14,184,249,54,154,145,192,222,86,230,1,89,177,81,140,6,217,47,204,68,200,230,144,77,38,145,164,153,246,198,149,191,174,148,98,10,115,40,71,247,144,67,38,147,72,88,42,155,57,39,22,32,47,210,61,90,88,9,50,187,147,248,142,61,90,16,68,20,59,120,234,210,94,18,165,221,111,191,34,192,156,179,211,131,66,217,246,234,60,40,18,45,11,188,90,5,152,222,244,123,192,244,204,153,220,208,97,130,103,121,161,236,61,146,140,148,173,180,159,252,105,34,206,168,186,161,100,89,94,118,19,145,13,219,52,183,248,45,111,45,97,116,115,156,45,80,118,40,237,67,63,189,33,178,251,248,82,109,62,110,40,79,166,239,231,192,136,55,17,148,154,232,61,240,69,241,110,10,188,22,119,100,130,107,196,182,74,208,101,97,172,233,115,246,176,136,123,47,126,70,159,2,113,242,92,17,18,169,96,159,23,239,35,71,51,251,169,159,222,16,165,211,158,27,171,250,16,217,135,215,9,148,136,202,141,149,112,65,110,69,239,210,230,87,110,121,15,196,185,96,10,242,92,97,236,191,17,4,35,106,85,191,208,212,139,18,211,27,237,153,203,212,156,16,255,75,154,215,145,26,204,88,57,62,134,100,179,192,254,146,128,168,112,150,95,249,141,77,65,66,65,154,2,123,19,232,126,118,19,113,4,11,34,249,140,146,122,221,45,66,211,208,202,78,92,125,143,241,218,203,9,224,79,84,192,91,245,178,19,184,14,52,173,3,93,54,224,208,132,157,62,140,167,238,9,154,26,250,136,101,33,104,29,200,230,58,160,218,120,29,168,126,118,19,57,26,111,109,104,241,175,160,29,197,171,179,177,210,198,30,13,175,72,64,34,89,153,38,142,17,114,35,200,18,198,85,84,125,235,193,146,5,65,4,59,32,96,134,194,102,140,107,73,24,7,204,42,126,19,89,197,0,89,69,9,193,60,97,55,52,56,185,157,20,181,80,205,72,193,96,114,44,19,156,181,127,206,76,212,72,105,66,175,12,24,163,155,176,30,72,213,74,12,160,110,50,128,26,140,99,0,53,104,199,0,82,26,49,128,102,15,161,60,18,46,239,173,64,100,11,49,128,4,105,72,12,160,134,8,25,64,77,135,225,1,181,215,18,5,129,156,158,34,54,143,20,170,21,159,167,43,62,47,57,40,226,10,242,199,159,136,128,215,8,197,146,35,88,10,214,114,19,156,115,33,41,74,131,157,181,25,193,31,21,44,172,157,103,205,55,163,88,119,124,232,47,213,136,129,197,177,9,200,225,26,204,60,199,132,207,3,80,5,222,2,88,18,51,72,191,162,230,9,234,31,91,80,190,94,22,17,56,149,129,38,208,79,238,208,46,171,214,236,233,167,54,5,131,171,17,210,146,205,236,44,233,141,65,172,204,59,209,135,92,102,219,9,229,30,83,97,207,254,246,38,255,195,104,54,88,25,161,217,76,59,130,109,142,0,125,11,197,54,22,228,113,142,47,207,85,120,178,108,7,131,253,135,218,107,109,46,73,30,87,77,193,54,139,41,120,251,206,22,198,222,84,187,82,103,69,192,44,56,155,125,219,123,84,182,147,13,222,5,135,44,101,95,134,208,14,37,193,248,46,209,25,76,208,60,251,68,187,16,248,39,57,74,34,27,214,86,34,71,216,62,154,134,164,21,217,231,98,218,18,72,64,232,172,48,144,246,34,232,15,18,249,34,65,25,120,160,92,149,216,54,87,140,251,178,125,100,62,231,6,144,86,231,48,80,36,102,100,112,114,175,185,215,212,40,200,21,50,3,32,142,83,231,20,118,12,249,197,160,14,137,10,56,242,128,132,37,94,194,6,17,233,41,27,145,72,127,89,141,251,46,140,200,59,205,136,7,171,126,117,15,214,166,188,179,233,193,154,17,63,157,77,246,96,133,208,22,36,222,172,208,189,26,130,78,70,5,147,140,238,165,186,42,179,106,197,43,67,102,15,84,230,140,29,85,187,82,146,193,90,87,205,21,50,251,89,142,234,157,147,135,126,76,126,19,95,147,120,77,249,152,113,78,159,168,157,65,28,247,210,190,88,139,41,39,249,72,34,81,156,156,87,210,172,219,235,241,192,237,137,69,28,161,189,116,233,18,71,213,181,33,210,97,39,190,175,208,253,19,164,215,179,114,173,111,223,82,58,34,154,130,134,87,251,168,142,40,231,55,71,17,88,9,106,173,32,237,160,113,214,175,134,20,147,4,243,70,92,15,21,198,111,226,34,145,185,62,146,107,169,70,58,240,58,188,16,78,244,237,245,3,138,18,113,253,161,249,53,143,202,106,223,112,194,154,65,105,51,231,156,66,224,158,236,149,195,160,179,117,115,206,71,149,236,109,14,212,193,216,5,123,4,143,64,63,77,39,16,248,110,104,222,183,30,32,138,130,241,157,119,139,173,201,46,153,203,153,244,140,218,209,134,188,226,194,230,138,187,60,20,145,121,13,6,60,114,162,185,11,3,223,30,92,169,156,116,188,29,15,3,16,190,6,200,41,81,183,19,142,251,67,50,107,1,50,249,17,69,104,129,196,75,224,148,31,20,46,202,128,152,78,154,78,100,35,158,143,248,217,87,220,225,235,64,186,165,19,36,57,255,13,194,29,98,113,147,114,82,246,126,97,108,235,112,106,64,63,214,107,159,42,66,194,88,38,135,19,36,190,86,231,189,36,202,209,24,120,147,132,231,10,67,168,173,71,241,192,33,112,150,145,186,234,192,109,160,109,251,24,35,106,86,193,153,188,106,154,2,145,76,39,12,31,39,155,3,4,97,85,253,156,108,42,169,26,218,75,39,251,180,140,108,71,33,31,144,244,211,86,31,157,175,141,232,56,186,248,135,55,182,132,46,103,177,1,46,55,6,220,127,2,203,100,246,105,252,211,2,97,159,197,31,95,59,189,201,97,114,237,163,31,222,16,217,247,243,125,198,47,25,174,251,33,44,55,51,25,63,37,101,252,20,239,73,207,53,97,157,54,32,55,58,174,245,14,60,243,59,200,144,90,113,8,127,167,203,169,216,137,212,68,42,118,210,165,199,40,34,203,76,89,205,218,63,99,138,98,4,128,195,145,90,179,246,79,39,96,140,212,10,22,37,101,61,133,158,215,90,119,98,214,174,138,143,211,13,40,28,13,97,59,37,18,117,118,40,9,59,206,113,246,194,115,246,216,133,154,179,199,167,29,39,28,211,78,79,35,124,62,38,52,249,124,235,20,220,98,107,153,231,38,86,129,108,189,26,125,35,245,101,60,91,239,190,15,254,150,73,54,231,195,203,211,150,245,20,192,140,172,231,227,231,84,37,191,137,92,72,52,239,31,76,14,76,246,230,21,10,216,245,204,159,110,8,123,115,246,85,58,30,90,246,185,127,95,63,86,177,188,181,149,121,200,240,0,183,29,35,238,124,87,153,27,76,228,0,98,196,197,116,216,231,242,80,138,28,213,108,191,235,244,128,95,149,228,55,111,156,239,166,241,28,183,247,122,34,217,120,204,242,110,205,242,238,144,26,42,115,3,109,123,91,21,15,172,182,26,190,57,215,246,230,108,166,8,57,180,200,55,121,4,95,147,152,19,227,238,139,183,224,5,120,91,222,22,219,239,122,33,215,15,171,81,60,191,218,148,227,91,111,231,31,115,232,76,27,151,100,191,224,141,7,112,141,26,251,13,231,8,249,146,56,84,85,130,199,48,238,156,10,54,19,15,187,157,30,249,64,186,205,93,65,112,170,84,89,36,192,165,117,106,122,166,216,237,240,131,77,181,36,171,7,20,133,32,149,9,91,139,209,149,127,143,170,2,76,25,39,22,43,116,117,103,5,120,25,31,158,207,35,222,88,97,165,36,80,141,160,233,26,162,21,22,225,65,0,209,182,98,73,73,215,132,94,166,72,155,65,237,138,129,243,22,59,140,142,190,67,133,207,91,172,43,136,235,80,153,173,125,66,144,97,157,97,127,209,96,171,4,180,114,167,174,154,82,160,109,139,173,124,153,141,208,206,210,211,5,89,208,184,26,190,46,183,28,33,254,196,112,231,133,116,231,197,22,73,160,26,145,4,170,113,73,160,26,151,4,170,173,146,64,157,140,212,82,189,84,29,25,91,36,129,106,244,141,212,151,25,61,50,164,59,50,110,241,39,195,31,140,14,211,141,80,252,103,53,198,151,101,133,26,118,197,206,169,93,118,78,133,237,156,83,129,156,83,95,171,99,106,119,196,173,19,216,112,198,235,148,134,227,110,157,15,140,186,117,78,138,97,184,197,173,147,229,61,47,200,138,16,173,61,182,71,248,158,10,235,227,213,249,158,229,202,48,163,193,248,48,238,71,104,255,136,205,201,21,200,236,31,128,11,73,55,238,141,53,226,134,229,141,37,156,89,23,91,72,48,103,162,171,243,172,130,107,150,68,20,16,100,186,35,160,70,25,21,250,206,127,34,149,170,172,90,76,19,127,160,9,223,224,143,112,55,86,194,92,84,132,185,184,66,152,139,43,199,83,153,244,40,58,6,1,239,69,29,147,244,68,30,246,4,232,187,139,168,39,254,190,89,234,169,60,236,152,4,244,231,127,149,252,137,232,191,245,15,49,134,137,97,124,5,43,178,91,89,21,65,144,168,166,178,147,210,30,98,177,42,247,247,92,57,177,181,28,222,179,123,116,76,58,115,136,200,248,10,66,230,176,29,228,66,253,137,205,120,44,202,176,138,69,249,101,193,50,249,206,177,66,179,76,94,55,101,242,186,10,70,201,176,90,149,80,190,115,140,81,46,107,193,187,217,18,89,50,128,176,44,8,184,197,212,235,49,38,52,243,69,50,217,232,176,220,188,195,225,123,164,11,223,51,89,110,238,117,78,78,110,254,220,95,251,2,38,61,126,118,187,95,195,113,101,144,216,169,220,193,234,71,117,5,139,214,214,49,70,213,132,69,251,127,227,1,236,136,13,71,112,152,102,24,119,194,134,215,20,136,84,87,30,84,228,179,153,74,242,182,224,208,188,113,35,204,174,180,173,213,84,209,250,116,161,32,41,64,111,192,145,24,71,202,29,37,80,129,108,134,99,25,9,102,84,92,248,93,71,92,100,61,26,96,82,104,154,9,61,82,198,59,188,200,145,212,196,217,59,93,112,151,11,184,203,197,51,214,219,162,255,29,20,115,204,67,204,50,99,113,29,95,72,140,200,200,80,140,121,246,46,228,206,246,137,57,162,232,5,242,18,28,47,203,113,19,34,173,128,22,72,67,73,225,51,212,62,113,221,50,219,242,16,80,161,96,118,106,50,84,97,42,119,94,6,2,176,146,139,124,245,111,226,112,253,14,194,113,221,98,146,217,147,205,211,212,25,94,190,250,105,202,101,70,236,62,27,167,169,179,101,96,190,201,248,144,70,132,205,209,103,149,49,79,60,137,133,233,253,61,66,120,111,171,154,66,223,233,228,13,205,133,55,87,218,151,238,171,92,22,165,205,74,251,194,125,149,143,31,214,104,159,111,62,95,168,30,108,135,13,213,37,168,222,71,135,195,225,89,189,88,1,181,215,109,118,42,25,135,157,61,40,112,240,231,239,99,235,53,9,126,23,62,214,131,251,122,250,244,162,191,124,144,234,251,245,154,28,106,51,213,199,134,91,99,32,144,208,102,182,183,77,196,6,180,89,84,212,38,127,50,18,37,132,217,29,16,217,0,98,104,101,119,228,10,218,196,249,18,65,37,14,225,83,147,247,101,225,244,183,128,251,109,243,151,251,223,165,52,227,178,78,18,30,49,192,28,217,197,27,43,215,106,241,43,201,101,205,145,249,66,219,103,228,49,58,166,127,247,39,255,212,16,192,92,128,12,29,11,140,105,95,130,193,50,132,146,215,84,200,43,167,144,87,72,84,177,8,244,191,173,132,194,213,114,109,120,146,112,176,250,74,27,47,27,218,120,183,193,54,28,221,230,141,9,92,132,110,80,171,100,76,224,22,37,89,18,16,78,241,234,60,201,69,98,26,7,91,18,4,206,194,146,144,230,27,150,4,114,146,37,65,64,18,195,26,27,50,160,107,153,88,49,58,118,25,86,78,242,32,36,71,26,161,254,231,65,45,230,97,228,71,182,39,72,190,80,143,160,114,27,103,111,6,121,120,196,32,130,134,65,59,10,140,251,28,56,12,227,134,33,221,48,52,15,67,243,48,116,115,254,107,132,63,233,17,254,254,25,11,228,100,133,240,39,60,124,190,41,43,144,191,109,62,129,99,4,31,151,149,65,147,112,246,76,76,205,58,227,157,172,54,251,233,112,202,174,58,101,142,83,186,117,202,2,167,220,90,167,236,175,236,151,223,236,237,165,150,250,13,115,41,206,187,195,231,177,157,84,109,75,213,85,239,246,89,207,142,100,37,255,171,219,201,62,50,40,83,25,196,240,57,13,158,176,196,161,106,59,91,82,100,60,158,214,14,104,251,224,103,56,22,15,37,44,144,230,11,156,218,76,31,80,236,255,158,93,203,179,190,215,89,166,82,53,138,171,81,92,205,243,231,125,53,170,138,62,10,227,181,117,93,109,149,211,247,121,178,255,69,34,96,125,148,0,104,158,160,120,101,171,234,242,215,73,69,25,224,209,62,90,76,58,50,64,114,156,254,132,0,197,198,111,108,168,194,57,8,187,37,167,233,247,213,188,229,93,86,242,113,41,57,14,48,25,159,187,80,164,132,190,197,73,125,7,46,195,39,146,11,151,216,175,44,189,118,185,146,170,42,150,85,239,206,186,119,201,29,41,230,183,9,199,219,45,254,108,72,162,116,191,98,234,42,246,151,185,112,49,103,145,216,76,30,29,57,19,125,0,143,92,170,42,14,52,173,236,41,37,36,146,61,169,178,34,103,101,58,237,121,31,87,68,240,134,194,223,137,3,4,131,90,249,162,89,129,192,190,190,95,147,59,249,92,204,74,16,217,27,27,248,151,115,124,36,102,57,131,160,103,9,9,192,168,227,238,228,251,76,189,120,195,5,1,33,4,139,58,86,20,109,121,159,32,25,121,208,187,196,255,77,159,244,191,174,127,55,166,255,114,22,50,110,249,46,183,170,67,92,125,179,16,218,87,126,137,227,74,133,118,234,128,218,11,33,132,182,91,226,113,18,146,67,63,46,197,16,143,141,65,46,93,224,231,172,197,49,48,52,152,236,219,64,102,218,10,7,154,232,124,166,14,80,253,180,108,63,37,217,180,32,219,138,144,225,85,226,108,217,224,237,100,13,168,109,149,20,147,64,1,39,26,171,81,63,107,9,24,147,91,172,161,36,225,23,169,41,121,154,89,188,69,23,228,185,43,152,94,199,212,101,52,169,159,191,130,73,77,175,116,82,163,43,159,212,159,149,77,188,115,39,199,102,29,235,28,57,220,23,110,27,116,24,115,117,87,193,212,178,39,180,217,15,61,6,101,11,154,54,23,224,148,60,244,29,213,70,114,99,133,163,90,96,79,166,93,160,236,11,20,130,12,111,120,133,71,150,0,157,117,105,137,187,96,41,188,84,169,139,31,173,231,146,180,21,213,62,233,184,27,39,251,59,62,144,49,127,66,162,226,249,23,109,67,238,95,167,14,61,69,233,25,157,144,117,135,93,55,53,119,83,115,55,207,159,31,235,38,78,73,214,173,250,118,182,94,147,227,74,223,230,154,84,141,53,169,183,194,205,241,174,190,130,53,169,27,107,210,173,68,189,221,74,116,68,246,105,89,27,228,232,5,225,2,138,141,90,190,176,90,202,92,153,229,11,235,45,154,166,44,35,134,48,186,105,8,227,237,174,146,15,93,174,23,222,208,231,175,190,27,63,81,19,223,225,130,187,4,41,148,46,211,212,120,100,206,132,130,17,194,53,254,137,11,121,152,61,35,200,144,23,136,175,81,89,110,13,131,91,43,188,122,215,8,10,95,173,101,69,17,44,167,20,68,129,156,62,220,107,245,198,83,188,241,156,252,225,247,72,254,240,195,35,43,136,87,74,19,226,15,9,78,18,143,123,149,232,120,140,140,173,43,8,41,49,225,128,140,73,161,188,71,177,68,143,214,15,95,175,178,22,164,56,131,6,145,28,23,238,138,221,239,175,216,133,234,154,236,214,87,236,92,149,184,171,78,236,84,137,89,149,232,83,76,93,236,182,177,75,243,110,254,30,75,165,27,252,253,247,34,15,85,135,73,112,199,140,93,112,148,143,178,111,118,212,80,117,146,108,188,178,193,91,20,247,202,173,116,238,236,47,9,208,159,70,118,64,221,70,191,240,24,216,207,219,247,90,130,229,92,16,201,61,120,248,53,4,90,20,63,55,215,54,102,12,77,69,224,161,78,174,165,215,46,39,215,170,208,178,147,194,184,72,184,18,116,246,53,178,121,24,147,66,49,177,227,196,79,167,170,9,8,22,4,123,98,117,88,245,31,179,211,213,44,187,48,101,16,84,147,16,224,36,176,154,137,39,33,176,27,15,243,36,4,54,98,47,155,192,77,66,64,226,101,130,66,36,97,46,78,2,251,208,80,204,199,129,148,158,174,90,240,31,125,226,247,205,42,186,42,174,233,170,206,56,93,53,225,139,239,29,251,226,167,36,211,198,38,167,168,18,1,79,187,56,228,66,244,43,199,157,138,66,54,184,85,150,231,56,126,117,68,158,83,136,131,194,0,217,61,53,184,86,57,30,81,129,206,68,3,50,249,239,182,167,217,71,8,236,154,232,118,164,246,144,150,217,21,146,218,158,210,254,193,203,239,237,137,240,157,223,162,205,92,74,166,238,129,2,56,233,101,118,42,232,168,132,253,86,44,7,18,102,51,131,246,74,17,176,225,26,27,38,64,224,34,201,178,32,149,109,192,149,125,250,145,205,26,183,161,62,209,182,204,41,123,19,130,152,48,167,102,100,78,207,254,79,126,78,205,4,46,168,75,9,166,244,252,16,40,90,178,227,173,57,11,68,231,194,120,153,214,158,62,187,125,107,212,76,183,201,125,253,135,182,246,194,95,107,107,103,127,246,53,180,54,224,213,233,132,56,235,206,254,3,100,246,206,212,137,208,24,240,21,119,22,178,34,61,177,72,98,83,31,62,86,49,55,171,236,147,31,165,214,45,201,5,56,136,65,23,171,32,175,0,153,189,179,226,58,78,106,233,209,171,178,81,212,38,49,2,216,36,110,214,113,30,48,96,19,25,102,189,73,199,206,66,61,230,216,215,156,110,28,38,83,149,174,234,244,196,5,148,124,159,167,201,255,235,17,81,177,167,116,25,225,184,66,60,118,240,83,21,226,177,114,136,199,49,223,69,134,173,77,8,248,152,199,233,135,246,45,172,253,165,159,217,82,251,123,182,138,185,205,213,212,190,77,181,255,164,73,89,131,51,121,117,102,105,170,98,69,20,179,34,202,158,165,51,48,99,242,120,47,93,171,204,138,120,98,191,203,98,185,107,61,121,124,149,245,63,127,181,245,127,143,212,235,30,249,219,56,202,251,176,55,160,80,138,207,61,162,215,240,236,35,122,205,88,188,152,11,7,134,93,137,218,156,184,161,18,31,242,113,58,157,136,228,159,82,27,141,101,234,56,120,135,71,183,156,178,87,18,71,31,196,139,141,34,127,86,112,117,146,1,234,56,138,73,87,137,25,45,156,178,69,96,199,18,39,102,202,242,228,157,164,166,97,225,151,168,9,171,202,119,109,182,118,93,203,70,29,220,182,74,196,22,202,236,23,100,242,157,149,24,194,121,80,57,2,174,78,153,245,197,171,20,240,210,141,42,101,111,150,39,116,50,217,225,83,155,130,254,97,161,60,89,93,59,225,175,184,35,21,246,105,190,198,40,90,42,61,208,62,181,79,225,175,167,126,187,17,221,215,190,226,98,253,86,175,145,237,26,8,66,201,18,201,219,105,42,38,116,125,182,154,141,93,245,108,204,141,206,198,216,96,146,247,54,92,225,249,26,212,78,156,124,199,152,192,139,76,55,252,185,241,234,180,219,29,196,65,124,191,149,135,24,182,30,100,31,196,234,241,84,128,104,136,200,72,36,223,98,189,134,96,85,151,200,102,146,130,77,158,8,233,250,237,44,2,157,232,35,65,188,238,99,61,1,226,209,187,65,88,241,142,66,204,19,211,123,231,116,226,207,235,127,81,255,252,64,242,142,166,185,5,47,217,14,185,174,200,142,215,62,138,6,189,0,194,157,22,56,230,123,105,204,204,123,59,187,201,21,252,240,95,242,118,87,154,173,45,157,146,221,133,187,37,6,213,219,112,33,165,77,196,67,167,159,115,24,16,109,197,161,228,16,126,81,85,139,184,156,197,143,115,22,211,160,188,179,152,118,67,209,165,251,10,59,201,153,76,179,153,104,178,84,141,142,110,72,26,13,21,236,43,146,97,198,133,147,152,19,204,209,114,42,43,27,80,247,217,238,168,78,82,174,160,227,194,164,107,235,110,89,190,221,98,190,118,119,241,37,204,190,9,115,165,199,136,197,219,115,105,204,172,133,123,98,37,245,68,77,238,137,106,246,196,186,253,238,132,15,163,159,158,200,222,55,42,231,157,213,248,190,141,175,206,53,40,152,60,159,15,203,87,159,208,228,173,110,229,121,242,144,96,231,197,59,154,18,94,153,205,20,10,123,207,98,251,17,102,54,121,19,69,221,38,6,232,73,113,136,28,81,4,171,95,179,25,201,106,78,157,74,75,145,115,233,98,198,44,82,37,253,241,251,117,190,62,127,74,158,164,177,91,57,200,3,188,246,69,254,150,74,138,98,176,106,73,166,88,44,75,157,217,45,236,115,83,44,82,123,203,175,230,55,170,37,120,11,188,229,187,9,205,129,56,182,27,189,164,50,186,183,184,201,11,216,226,211,112,99,79,222,215,251,75,39,206,188,23,110,236,221,122,230,156,189,52,61,40,228,124,209,237,201,123,173,230,120,99,108,6,107,149,53,112,163,127,253,229,75,226,222,98,247,157,184,237,118,55,210,222,57,111,181,53,32,230,225,166,59,231,173,234,79,105,33,149,73,172,3,113,148,246,179,113,191,35,19,255,6,64,183,39,239,131,110,213,169,119,22,98,62,239,218,223,254,1,251,244,15,96,45,178,76,242,214,157,185,241,198,200,99,248,114,245,255,172,38,23,50,138,72,130,231,187,62,58,95,224,121,243,111,62,178,33,236,243,248,15,174,96,8,230,225,198,158,248,251,243,249,235,172,204,241,210,187,177,247,214,51,231,32,152,207,119,249,187,12,123,173,164,80,137,93,179,1,180,54,139,142,21,119,204,67,231,88,33,236,23,254,66,28,78,67,232,222,73,129,6,205,137,34,179,215,150,249,180,29,14,79,89,1,51,125,152,177,195,161,58,58,191,153,167,246,236,58,180,44,244,161,229,134,151,189,27,231,21,183,6,8,232,246,224,62,232,130,156,47,252,236,109,8,151,31,99,254,238,94,118,31,236,110,230,15,135,210,21,48,92,32,222,82,192,183,160,184,128,217,82,0,219,160,15,166,48,75,204,23,11,61,241,15,11,217,47,68,127,211,62,35,142,217,243,231,130,210,126,49,123,159,53,107,69,96,207,223,191,33,202,61,90,20,187,123,188,68,138,61,176,0,242,177,251,138,27,123,112,166,88,56,85,220,212,131,51,176,0,187,241,113,247,169,147,176,219,173,181,233,123,49,23,147,79,194,77,46,5,22,96,207,41,74,241,213,157,164,142,197,39,49,177,216,221,147,150,2,104,218,199,177,217,91,164,40,251,69,219,190,117,240,88,241,109,216,160,188,187,184,233,222,98,207,157,102,137,61,95,206,196,157,118,2,129,253,188,43,157,7,78,157,176,27,190,237,204,185,66,218,7,190,40,216,114,110,227,244,119,16,100,160,29,254,218,87,110,89,77,149,141,109,11,159,30,252,195,11,122,21,215,91,68,57,156,0,98,158,23,234,243,248,54,1,139,72,123,49,114,229,158,23,246,98,196,69,108,155,56,234,214,225,34,154,71,254,209,144,77,197,217,31,11,93,209,7,190,40,240,9,11,203,196,134,54,194,38,31,251,3,227,178,55,78,127,7,61,130,152,79,114,67,193,172,8,71,240,26,72,223,158,70,208,38,71,69,184,6,210,126,33,54,97,26,4,76,175,206,23,59,172,164,216,81,122,137,164,220,228,32,13,230,125,133,96,79,68,32,131,167,99,125,230,86,87,8,145,39,226,168,30,178,36,223,249,246,42,254,243,190,28,9,173,196,62,240,83,27,194,94,103,63,249,80,3,76,161,204,141,61,6,89,63,151,86,246,113,250,243,133,158,204,111,208,75,112,3,44,156,185,115,185,49,255,20,228,194,148,86,98,75,216,159,66,128,41,97,79,175,125,170,160,175,224,122,117,67,175,125,42,191,1,118,195,77,247,230,123,96,135,131,214,229,232,185,246,12,221,16,211,176,3,7,11,123,224,70,184,33,91,234,196,9,30,94,16,90,117,187,124,60,133,25,106,245,169,180,132,25,22,22,138,219,229,147,41,107,3,54,240,47,99,228,60,129,63,31,79,203,14,137,77,240,117,233,242,191,62,154,63,133,45,107,151,247,141,58,143,91,227,50,105,179,204,191,29,43,67,167,7,158,40,249,235,92,241,78,98,239,253,209,13,97,119,217,23,127,202,79,39,143,142,190,148,31,160,124,12,190,237,62,216,115,18,12,253,184,49,91,98,147,180,105,251,248,67,206,101,202,190,128,199,213,13,246,193,143,78,170,199,10,170,103,119,175,61,172,235,32,161,234,153,184,48,72,107,132,208,125,139,122,40,198,209,91,85,31,62,98,254,128,122,188,133,115,135,167,207,153,115,128,9,15,99,177,179,113,105,133,125,72,102,23,228,78,8,237,70,171,180,230,184,21,246,97,159,130,179,216,226,191,207,181,161,245,216,175,227,177,125,247,191,184,187,247,107,31,221,188,104,78,245,134,63,251,59,103,63,167,112,31,159,43,196,38,133,198,235,176,254,52,180,15,197,37,180,104,53,103,111,216,201,190,88,216,128,128,86,127,51,123,195,206,68,45,65,204,160,47,84,214,10,136,251,155,25,84,37,29,192,72,6,56,176,176,171,158,107,23,193,1,245,236,20,79,187,171,237,44,169,253,28,14,92,151,44,76,115,231,248,117,62,45,243,8,166,243,22,38,177,149,252,50,89,199,171,181,188,77,102,223,46,28,146,30,144,84,169,39,242,27,92,221,237,210,217,60,82,200,222,1,8,139,151,101,52,200,21,68,208,46,115,131,101,53,197,192,36,33,244,27,21,174,117,184,239,116,177,208,163,195,100,88,236,126,11,105,55,12,102,237,238,13,95,120,240,231,78,158,130,133,147,19,10,53,114,243,27,200,82,159,244,156,138,221,89,150,41,168,81,92,38,214,244,71,154,114,117,188,5,249,180,150,109,245,139,150,109,29,73,9,216,232,217,169,194,216,61,28,140,198,216,174,125,232,51,14,179,197,219,188,65,203,170,53,251,165,51,27,140,63,34,88,164,255,236,84,33,237,158,163,105,102,201,199,210,236,36,41,126,30,129,120,44,191,137,100,150,213,116,165,178,39,242,174,155,173,168,196,99,240,95,127,102,67,216,121,110,139,77,103,39,77,95,8,81,73,95,6,167,176,59,54,133,93,158,29,184,105,116,250,22,240,0,57,117,247,88,166,75,205,187,87,52,101,84,53,220,196,211,69,99,77,10,66,113,122,188,69,90,4,185,58,95,72,219,61,156,38,158,252,171,28,46,91,222,158,231,16,7,206,27,128,180,167,6,249,14,94,182,56,38,156,5,246,130,101,151,186,14,113,1,101,49,7,45,43,7,101,145,177,129,138,41,139,136,92,44,138,54,73,32,168,76,11,50,152,91,133,14,204,29,62,78,33,16,5,68,208,90,133,22,180,87,143,231,45,26,72,29,8,107,7,76,89,85,22,83,135,120,152,9,62,174,21,109,238,66,85,189,113,187,175,205,77,180,161,85,213,140,215,0,180,15,31,103,24,164,22,243,92,246,166,195,105,236,62,38,126,114,39,235,117,142,93,16,34,137,251,236,20,72,50,52,10,14,207,243,50,73,120,121,24,186,148,140,89,178,184,165,76,159,90,223,104,149,180,178,34,48,174,111,196,167,30,2,73,209,53,213,178,3,245,89,183,2,204,124,206,158,101,71,12,158,8,178,204,99,142,139,177,231,104,218,1,193,223,130,157,42,26,75,144,3,6,90,77,123,210,82,60,84,254,30,180,55,217,206,230,21,94,117,178,153,195,95,233,141,74,244,218,167,224,134,147,110,161,185,111,227,146,119,51,93,194,57,241,182,57,157,109,114,240,39,237,228,172,36,33,178,97,89,63,157,74,183,200,7,226,60,198,133,119,127,156,183,200,34,159,252,229,38,247,41,55,190,178,134,123,219,13,231,188,1,206,77,135,211,192,125,106,129,159,205,27,27,201,50,199,85,142,156,218,227,45,92,194,236,180,156,66,188,89,200,183,227,44,67,218,71,218,66,66,218,39,242,162,149,242,82,167,62,66,112,64,157,233,64,104,47,182,113,107,210,215,44,164,59,106,177,250,236,13,249,27,252,153,124,64,157,199,187,241,129,14,161,207,214,133,84,246,134,252,239,212,133,252,177,221,44,20,218,39,90,229,255,207,220,159,192,71,81,164,255,227,120,245,49,71,50,57,38,28,225,134,154,33,64,2,185,102,50,153,76,194,33,147,251,38,247,69,48,233,153,233,76,230,158,244,244,228,50,64,56,84,92,80,208,101,61,81,209,245,22,175,85,87,87,81,193,3,81,81,220,245,66,69,241,192,149,85,87,112,189,87,142,255,171,171,186,39,147,33,65,241,243,249,254,63,63,94,198,233,119,87,87,213,83,79,93,207,83,79,213,83,154,57,80,110,62,26,237,212,8,67,246,150,24,167,6,66,185,249,145,88,167,70,35,200,242,234,89,26,45,238,165,26,128,147,210,32,143,105,155,98,52,83,132,223,7,99,53,211,112,119,214,204,48,3,77,52,106,139,209,26,117,216,70,116,96,78,17,26,71,180,192,149,104,196,39,141,194,12,70,244,27,124,205,11,186,182,29,113,146,118,138,172,199,59,92,4,61,109,134,240,39,53,251,73,99,52,123,168,113,226,126,31,234,0,215,42,197,14,80,2,21,48,102,204,38,143,142,206,146,43,98,169,233,232,68,187,153,208,196,153,1,54,14,141,30,105,166,138,35,12,41,181,227,145,145,102,34,26,105,204,107,3,78,237,100,24,135,6,155,9,145,131,77,140,52,216,160,207,226,224,4,56,185,12,78,132,147,195,198,155,56,97,0,138,171,224,52,113,17,227,205,84,129,97,226,77,246,104,45,72,224,95,168,128,90,188,176,139,122,185,54,148,3,13,227,156,90,128,79,14,43,202,4,185,180,140,139,37,99,18,84,48,10,170,203,98,105,24,5,227,133,134,27,5,213,37,180,40,206,170,145,39,110,168,70,190,181,85,232,157,134,142,137,81,193,184,162,216,120,113,4,122,60,10,18,26,96,86,170,52,147,32,128,211,132,191,138,25,90,133,80,39,20,84,156,93,39,112,188,58,65,195,208,216,117,130,189,39,161,69,3,228,8,144,92,14,21,69,177,64,170,27,1,226,218,81,8,181,163,144,106,103,91,204,249,215,142,184,151,247,92,181,35,222,195,249,27,107,135,24,167,118,8,72,195,217,99,212,142,80,49,130,24,143,38,3,245,8,171,21,136,213,147,204,52,167,153,164,130,10,56,69,248,147,90,191,122,172,214,175,26,143,211,160,4,130,95,229,180,2,77,180,104,218,29,197,233,49,251,193,177,232,255,15,244,131,241,56,45,244,131,89,231,238,7,163,56,77,136,156,38,157,2,167,71,166,87,52,245,37,224,177,106,52,167,231,252,142,113,102,132,211,216,165,56,137,150,223,36,78,139,126,199,209,162,28,150,213,68,78,239,137,250,63,226,52,190,134,56,196,105,98,20,167,197,94,163,16,85,4,122,52,183,137,16,183,137,179,185,13,68,110,19,136,219,241,163,70,31,56,73,212,88,67,226,134,226,188,196,13,249,255,7,197,13,153,80,200,120,243,137,205,162,118,41,240,66,13,163,204,31,109,150,252,57,70,193,120,140,144,17,91,17,174,41,252,15,197,18,242,87,197,18,65,192,69,174,39,9,52,208,198,208,146,51,111,52,91,203,112,53,200,176,231,218,145,106,160,195,170,129,150,170,65,104,169,99,75,125,161,144,145,162,200,34,170,33,26,70,139,175,35,171,97,156,144,152,113,66,206,33,245,201,198,231,172,236,60,56,43,19,56,43,74,215,80,54,194,89,228,112,83,38,10,110,31,69,75,114,15,148,9,127,120,56,41,67,221,251,215,164,117,2,158,53,120,19,227,12,41,104,80,57,67,244,196,145,128,144,169,132,73,146,70,55,105,104,1,140,95,129,170,95,168,125,39,182,126,21,197,210,42,60,235,227,0,45,9,163,156,72,6,195,156,64,151,120,208,104,5,74,44,183,160,177,128,145,75,60,0,222,61,142,47,241,136,130,52,186,196,35,106,69,44,242,8,45,136,14,180,116,137,7,141,47,241,136,66,151,120,200,205,186,60,160,196,119,124,20,227,23,81,225,87,126,152,51,85,72,225,216,171,85,194,216,74,129,194,21,92,44,50,177,227,27,69,98,40,85,12,58,54,23,111,30,222,34,246,34,212,105,182,109,145,42,51,172,84,26,90,133,68,108,180,162,33,148,10,42,97,2,22,221,212,37,104,15,157,134,70,91,224,4,181,242,127,178,198,69,156,123,141,75,37,136,202,230,29,49,78,113,99,171,208,223,174,141,129,114,56,211,72,110,23,126,19,141,228,182,24,72,97,185,69,157,34,100,16,231,76,66,26,150,80,184,157,82,225,204,201,82,187,69,139,83,119,9,10,254,244,17,5,63,94,133,204,17,180,48,137,204,5,230,143,162,177,229,39,210,16,49,37,210,16,145,244,91,12,17,138,25,218,69,249,196,6,205,2,51,165,153,242,59,13,17,73,35,134,8,74,101,166,53,83,144,231,95,243,195,74,151,134,128,11,106,52,83,242,9,77,246,40,155,196,162,124,226,18,184,104,180,77,98,81,62,153,79,64,48,67,147,61,98,156,80,56,197,20,84,163,108,17,107,207,178,76,76,57,31,203,196,76,51,161,81,134,91,38,226,66,86,9,10,144,42,184,8,173,193,146,2,149,171,181,41,57,212,54,228,172,125,49,113,173,18,185,49,130,46,72,192,69,48,123,72,155,35,173,252,201,66,102,135,156,124,120,9,204,129,178,209,102,7,89,164,217,65,22,97,118,144,69,154,29,100,17,102,7,89,164,217,65,118,78,179,195,194,124,208,170,149,185,180,10,215,94,45,192,11,133,100,254,90,8,238,211,206,221,164,77,130,41,27,114,168,99,114,152,4,83,218,240,137,119,84,56,18,46,18,11,155,4,23,73,95,44,106,163,151,155,119,174,133,138,49,12,24,96,196,128,145,36,89,37,50,225,34,56,55,255,130,13,218,249,151,32,243,132,54,23,27,49,180,105,48,73,248,209,195,220,53,67,80,31,50,81,72,102,12,109,214,40,67,70,230,184,134,12,77,94,62,97,22,68,27,16,102,199,64,86,140,212,75,180,25,249,196,106,141,14,102,194,20,40,229,191,96,77,136,56,152,57,146,237,92,49,3,168,95,163,29,43,151,121,112,1,212,175,209,36,227,121,34,5,17,175,153,15,193,136,57,68,33,154,67,244,112,33,148,221,39,230,182,120,141,118,33,204,132,139,197,66,47,25,179,168,75,127,99,81,181,153,67,249,196,144,214,8,83,55,221,169,149,73,246,22,153,100,111,145,141,178,183,200,194,236,45,170,179,237,45,178,48,123,139,76,178,183,168,206,178,183,200,204,81,21,90,85,200,222,34,11,217,91,84,99,216,91,100,35,246,22,213,104,123,11,5,243,134,52,38,168,131,198,13,154,36,168,130,10,97,38,209,76,131,70,56,31,38,15,193,148,33,97,54,78,94,45,148,46,29,234,54,104,82,204,64,163,164,132,185,46,222,9,145,104,38,131,20,182,186,104,99,133,137,34,29,205,178,148,219,165,149,221,7,83,47,209,26,96,210,144,118,110,83,172,18,42,161,170,88,90,208,2,249,132,102,46,154,236,230,106,230,195,20,205,2,8,204,9,216,60,19,47,76,147,48,41,63,122,141,54,73,224,39,186,132,91,116,241,233,212,8,221,42,122,141,102,46,92,32,124,144,2,147,160,110,131,54,169,69,152,19,83,96,210,106,109,50,204,104,211,40,225,92,104,132,166,213,66,21,207,29,210,100,193,100,152,209,16,171,130,11,225,220,213,218,116,152,212,18,139,14,170,58,205,113,78,141,12,165,4,147,96,198,208,106,205,60,152,1,211,87,107,146,97,58,76,90,173,89,152,15,52,105,212,114,20,166,157,11,211,27,224,66,152,54,4,147,96,242,80,27,135,13,226,202,152,88,149,192,1,180,19,18,25,120,96,218,144,118,129,68,68,122,91,108,44,76,131,25,171,53,105,112,174,38,9,10,1,130,8,20,163,50,39,152,19,204,187,175,145,230,80,188,202,7,41,115,116,153,240,63,175,134,10,183,74,13,75,102,148,152,24,97,254,53,255,112,233,30,96,158,101,126,100,147,116,229,128,100,110,185,122,196,122,69,33,67,5,41,153,107,132,71,97,114,141,66,67,42,50,215,204,132,164,249,241,40,39,190,229,93,250,252,159,17,159,139,223,200,85,120,51,31,250,230,179,177,191,145,137,197,0,200,142,145,32,72,88,233,2,195,231,67,10,181,132,212,54,13,133,170,69,187,32,159,24,210,232,224,124,152,218,0,23,8,99,247,60,56,183,133,139,37,96,18,76,21,56,157,54,4,179,134,96,158,208,37,115,225,226,213,107,134,224,146,213,112,233,106,152,41,240,113,9,92,58,4,51,135,224,194,33,77,74,62,128,38,152,4,13,67,67,66,109,145,48,25,206,197,96,190,208,178,160,65,168,138,121,13,48,5,46,28,130,105,208,128,171,13,69,208,204,69,219,124,144,131,248,88,161,246,80,227,21,242,215,36,193,249,48,101,72,147,12,231,193,5,77,180,144,78,234,144,102,46,76,133,105,67,154,52,152,2,83,87,107,82,96,50,76,109,139,37,84,42,244,160,161,196,52,177,145,36,193,188,235,154,208,29,103,69,112,46,212,225,124,133,132,180,73,80,215,0,117,112,238,106,161,233,174,110,227,98,41,149,48,29,52,8,173,37,159,94,221,196,197,162,139,92,147,52,115,85,80,41,68,206,146,34,103,8,145,179,26,96,22,142,156,37,68,70,146,196,164,53,112,110,83,44,64,38,231,150,53,48,101,168,5,31,213,94,180,140,132,66,181,153,73,113,10,23,77,95,123,132,110,6,224,162,144,233,43,9,237,163,27,49,124,161,170,222,79,224,223,99,36,36,205,251,9,167,86,49,202,20,134,194,182,209,144,132,217,203,200,19,194,55,39,72,167,86,22,241,205,181,180,243,236,88,215,210,248,247,113,25,36,238,123,14,230,156,203,128,54,141,92,14,137,189,226,196,136,46,193,199,151,144,16,234,89,211,161,2,162,31,25,250,193,155,151,132,12,1,36,66,6,181,105,216,160,134,110,17,5,112,154,48,203,170,33,46,16,196,79,39,72,244,20,138,30,102,101,67,167,151,246,16,130,22,125,40,26,183,114,156,210,136,145,77,60,80,75,38,147,219,104,237,68,72,192,137,21,51,180,50,115,114,21,141,148,55,73,107,67,139,201,177,102,160,145,148,58,2,95,129,77,244,64,153,121,77,143,38,30,19,162,81,226,92,196,155,89,209,165,181,106,168,68,70,139,9,80,229,212,70,227,77,189,116,216,10,139,82,50,156,196,192,104,56,161,12,170,225,132,10,46,180,162,21,83,6,21,48,166,130,211,224,243,153,26,10,42,133,31,37,140,135,177,102,210,169,141,13,45,43,196,154,73,94,75,225,252,195,146,199,12,162,112,22,148,64,131,228,117,176,12,82,80,81,38,26,78,112,26,72,33,19,199,3,172,144,153,71,41,100,232,226,84,129,149,201,228,227,50,52,119,200,144,249,131,50,167,172,136,141,66,71,101,52,20,190,200,16,41,100,148,160,144,73,52,73,126,159,80,45,141,40,100,178,178,25,90,101,184,66,70,205,208,40,85,80,9,167,84,163,197,50,108,152,145,12,88,232,10,170,17,245,89,134,77,114,84,143,70,9,101,88,125,22,42,88,67,229,3,77,18,182,176,136,218,179,44,44,0,87,142,184,14,144,36,106,171,212,136,221,46,98,61,130,194,251,1,198,12,137,25,39,4,9,51,73,216,239,184,32,7,208,46,173,12,251,49,133,211,208,12,45,168,98,209,42,168,164,151,143,75,141,134,146,146,81,10,35,156,18,233,206,73,119,74,158,93,23,160,123,138,112,159,18,84,103,16,110,226,66,91,113,247,160,134,125,140,196,43,157,138,209,134,192,241,248,136,154,183,200,201,253,132,196,74,34,130,149,161,144,255,59,94,254,111,48,79,24,70,198,227,222,49,146,92,14,39,226,165,134,137,69,146,183,191,109,104,247,215,196,48,222,17,97,109,144,144,56,39,12,6,152,115,100,4,231,66,33,255,135,173,144,16,74,16,190,132,115,222,156,36,17,47,233,181,112,34,94,29,195,195,204,196,17,86,78,52,19,78,25,156,168,18,56,38,124,174,48,146,31,9,28,223,35,19,104,69,99,64,164,9,14,226,1,251,113,153,145,220,36,12,164,199,228,99,152,224,52,35,31,61,40,140,84,219,148,17,31,33,19,27,222,161,41,12,253,194,239,131,81,218,201,144,128,147,67,67,59,36,205,187,101,78,141,48,159,29,149,59,53,83,33,105,222,162,116,106,38,226,148,53,51,132,223,143,228,154,89,194,239,38,165,102,182,232,195,94,118,214,248,6,39,58,177,249,59,52,210,193,176,229,235,232,49,135,54,51,208,36,8,172,148,166,24,180,114,141,230,151,241,102,150,109,74,60,179,64,105,98,81,133,79,45,104,181,120,66,248,220,18,90,83,86,134,173,90,143,158,94,68,75,204,239,152,94,96,248,162,53,21,102,38,67,147,139,152,110,216,228,18,135,38,151,88,113,242,216,67,152,149,154,4,40,67,103,182,176,25,55,220,199,22,156,45,252,161,122,194,203,166,103,115,124,234,56,28,71,147,201,216,28,71,2,173,104,48,144,97,131,193,111,97,251,49,249,249,177,61,100,158,26,159,237,35,179,58,241,59,216,30,202,128,194,246,217,17,182,143,204,233,4,164,144,253,43,17,177,125,114,136,237,48,193,76,115,154,4,65,219,153,37,252,73,86,153,68,188,140,58,154,199,211,199,225,49,50,52,254,26,143,101,17,70,25,137,199,103,25,101,226,241,112,240,123,154,182,236,55,53,109,217,239,111,218,130,160,2,199,104,218,20,148,33,30,151,69,240,24,136,60,38,157,2,143,35,44,236,9,216,198,56,166,100,36,201,66,209,48,140,207,178,18,40,251,85,62,131,8,51,163,196,231,179,204,140,241,56,155,223,211,150,207,197,231,145,182,252,123,248,28,202,0,11,237,212,120,237,89,96,120,4,175,9,145,215,4,226,181,34,108,225,65,225,132,9,161,253,163,88,244,153,4,9,56,169,66,20,81,213,80,129,23,33,198,151,84,247,19,231,170,15,89,68,125,200,68,122,198,82,47,66,106,69,34,36,96,98,197,12,109,130,57,185,34,150,38,151,195,4,44,133,37,68,170,21,9,184,230,18,132,154,75,16,106,46,102,76,181,66,172,186,40,81,177,152,227,212,198,135,234,45,26,70,139,213,42,169,21,42,24,15,231,148,193,40,56,71,168,52,84,195,42,168,46,131,209,80,85,118,118,165,197,140,89,105,106,73,173,8,101,30,45,206,248,106,156,137,26,249,28,19,186,7,74,89,93,49,74,173,72,16,100,4,49,13,161,143,72,106,133,84,133,36,76,64,44,156,1,19,96,2,156,81,22,170,173,95,87,40,212,163,20,138,232,18,33,243,177,21,10,25,156,82,42,104,21,165,216,81,154,144,193,132,17,121,56,106,180,60,140,172,163,50,44,211,41,206,210,43,208,53,137,231,165,87,140,105,231,164,198,181,141,82,231,182,141,142,33,209,41,176,198,20,43,67,229,148,52,102,164,94,99,65,72,38,42,109,4,36,176,155,43,60,48,97,14,163,179,122,104,156,216,78,59,53,106,137,225,144,130,241,232,246,36,168,198,142,23,105,151,134,50,175,149,70,200,232,208,148,48,158,14,103,38,87,196,202,81,23,93,129,100,68,188,54,168,16,18,17,20,13,33,23,243,90,161,247,138,235,103,232,11,202,137,214,227,52,212,136,185,76,124,143,213,20,2,159,105,22,47,192,55,147,78,168,16,132,121,153,153,116,154,51,161,18,89,205,208,122,151,46,15,196,67,5,226,5,218,142,163,64,75,24,10,115,124,69,44,173,50,103,10,209,177,46,6,21,194,184,13,98,98,84,49,9,120,101,111,167,100,99,70,203,65,15,110,30,185,34,48,193,188,39,20,150,48,74,134,86,152,19,202,98,229,232,147,215,55,255,110,193,58,233,78,97,144,1,210,30,198,48,253,78,54,134,126,135,134,141,73,88,86,154,132,219,242,36,65,63,153,244,107,109,121,68,179,35,35,26,243,111,208,236,254,159,183,102,66,40,193,255,72,63,145,216,56,73,98,163,160,233,77,26,225,163,180,107,130,132,147,176,166,71,46,135,137,152,143,137,152,143,137,2,31,19,127,141,143,163,244,60,217,121,234,121,255,255,224,99,226,255,14,31,19,5,62,82,226,160,159,56,194,199,68,129,143,137,2,31,19,209,114,34,1,195,53,45,33,137,24,165,42,134,86,97,87,205,120,4,128,211,208,78,193,199,163,156,234,18,236,223,79,137,246,224,168,208,129,234,29,74,39,84,138,39,23,141,36,178,150,197,25,201,237,194,239,76,35,185,77,9,105,172,17,169,83,32,105,254,40,218,153,4,112,111,71,155,48,240,193,63,34,9,159,97,220,166,116,138,135,127,5,89,30,119,159,169,78,156,181,22,140,156,171,70,215,251,128,145,115,213,132,120,102,82,57,23,152,79,0,23,246,220,97,126,16,57,51,136,193,62,60,148,161,23,147,144,11,104,26,95,138,27,114,215,129,130,166,34,105,76,80,80,69,239,121,50,243,1,16,242,236,241,252,200,227,81,224,204,167,176,231,15,218,72,182,67,153,121,7,242,247,209,130,253,125,44,65,190,61,76,78,35,217,137,119,95,100,58,97,24,249,232,98,226,48,242,101,34,249,80,76,153,198,41,191,9,156,102,37,206,111,108,42,196,172,79,222,48,118,214,232,9,58,141,100,141,42,228,117,164,52,228,117,100,57,122,154,138,61,145,152,15,1,167,249,249,77,123,0,58,72,57,218,236,14,169,81,45,146,24,133,70,109,44,25,195,64,31,241,57,8,71,203,67,7,63,1,114,207,54,73,60,248,9,176,23,3,96,222,113,241,30,241,62,22,201,193,129,192,52,243,109,23,139,116,254,101,12,95,179,147,32,105,62,124,253,30,209,75,141,116,116,148,52,19,33,63,179,106,124,70,20,136,103,68,181,68,50,25,163,69,231,144,69,223,219,39,158,28,241,189,77,160,123,191,149,17,30,131,196,227,214,248,12,36,41,29,143,164,227,72,0,132,161,94,116,153,152,6,212,234,237,40,153,48,96,34,36,79,132,84,49,62,18,77,107,69,37,17,61,147,226,137,116,50,220,231,162,90,163,82,165,34,95,64,200,31,12,61,114,158,58,116,38,125,180,79,151,52,116,159,120,216,65,104,202,5,137,50,78,116,221,130,78,163,106,181,248,108,55,4,170,44,209,215,22,34,139,228,181,192,188,251,249,189,0,251,67,49,95,251,156,248,56,202,133,139,42,37,210,73,100,232,128,189,122,8,149,36,228,149,113,225,248,95,14,19,163,63,157,11,206,62,110,31,225,110,242,92,201,221,25,145,220,108,112,174,211,218,170,57,4,185,6,221,121,168,37,33,153,127,193,165,90,234,98,72,173,134,100,62,104,69,225,98,116,116,104,55,236,122,73,196,5,245,28,149,22,239,9,194,194,233,137,155,247,0,179,76,61,21,181,248,175,110,70,87,50,76,69,41,20,209,203,145,99,41,124,198,23,121,181,66,135,113,163,64,120,6,244,24,25,204,28,43,54,138,171,0,231,8,84,158,43,112,230,185,2,103,159,43,16,2,213,28,169,157,132,17,29,222,38,166,159,29,25,69,165,113,186,226,73,115,92,99,180,20,143,192,241,242,69,135,241,216,189,154,116,8,92,136,135,220,8,29,184,254,236,107,110,66,129,99,185,149,86,37,162,211,205,106,37,190,16,11,146,234,133,144,82,83,170,201,0,82,143,171,229,17,111,165,148,30,218,182,23,160,99,151,99,101,243,200,185,2,119,10,129,81,227,4,222,45,4,42,199,9,188,122,195,222,179,110,217,9,5,30,94,191,23,152,163,199,9,188,120,227,94,96,158,50,78,224,177,75,246,2,115,226,56,129,247,11,49,39,140,19,248,188,64,208,196,113,2,31,27,139,9,83,35,43,94,60,110,174,154,4,206,30,174,84,137,4,177,22,82,106,57,246,128,136,234,128,86,83,232,91,212,68,204,27,177,51,57,181,76,37,212,162,52,8,135,121,1,81,37,68,14,20,170,137,98,219,20,9,131,64,157,44,165,40,222,134,43,54,182,107,162,240,189,56,33,57,1,223,140,140,124,122,41,197,131,86,235,200,21,244,114,243,48,169,145,11,35,77,42,24,38,205,207,172,45,143,5,230,51,132,70,46,188,56,67,136,47,78,139,47,78,75,47,78,137,47,78,9,47,42,99,73,116,141,60,22,58,132,25,204,44,211,200,205,15,222,186,7,104,20,72,0,197,142,207,197,48,180,75,64,129,189,122,19,102,33,45,72,171,223,68,211,172,144,198,76,40,131,10,36,164,140,152,65,203,180,114,188,186,85,68,75,62,77,73,72,85,209,146,119,13,236,28,162,10,251,240,46,142,21,253,20,146,206,84,0,204,203,75,5,93,159,210,32,58,144,55,69,66,80,213,43,104,241,2,103,57,36,205,148,75,75,225,139,180,87,204,208,82,101,177,2,67,40,40,47,70,247,22,200,157,232,94,87,173,210,165,193,151,4,106,163,132,116,159,89,91,142,246,19,18,46,92,24,18,82,194,247,104,115,38,25,254,1,25,250,64,41,124,64,158,245,1,245,107,31,208,163,63,144,155,101,46,141,66,133,111,157,167,84,144,162,145,47,5,196,16,225,71,96,64,52,242,123,224,196,169,84,198,70,33,151,51,46,25,36,84,69,168,116,168,68,68,42,16,26,34,50,101,19,105,128,48,95,208,163,81,64,96,158,211,131,92,32,118,96,15,116,114,30,42,56,116,87,170,80,131,230,51,68,143,145,76,50,99,155,103,26,32,205,23,244,64,133,89,206,115,40,170,127,69,44,1,21,144,52,199,240,28,190,142,20,9,123,102,5,150,229,14,143,60,10,114,31,109,20,221,202,73,194,32,114,165,39,51,111,255,179,32,218,100,226,23,149,72,132,219,15,66,222,228,166,134,196,62,65,214,107,65,79,49,130,0,24,146,250,74,241,238,147,9,188,121,120,248,4,232,17,232,164,66,116,114,90,124,215,88,113,44,45,222,118,151,100,198,183,193,151,197,130,233,200,49,249,153,248,42,225,17,237,111,52,15,15,211,101,51,4,37,64,134,189,131,161,141,72,78,35,153,138,41,151,97,202,191,26,41,89,68,121,163,70,202,27,141,31,101,184,148,199,126,181,148,221,161,82,226,242,38,135,202,155,20,42,47,68,229,69,69,65,151,9,205,64,52,10,148,137,162,123,4,207,197,71,10,211,112,232,214,95,163,161,37,68,67,77,136,134,82,124,15,146,220,188,235,54,113,143,187,40,85,66,58,36,82,98,127,221,98,199,22,84,3,236,249,79,45,14,84,162,19,186,169,163,95,8,226,68,28,30,207,166,83,203,99,128,10,168,98,65,152,67,18,85,108,104,176,35,213,25,8,133,174,146,86,197,0,243,246,203,247,2,179,94,29,11,84,15,16,4,181,22,18,216,79,186,57,190,106,196,21,13,64,183,51,155,169,30,45,229,212,208,216,67,177,134,64,87,21,202,208,18,45,94,205,161,197,115,189,2,87,93,90,210,60,132,190,39,32,101,6,229,72,103,58,67,244,152,215,173,223,168,116,163,245,79,26,93,64,137,247,186,211,144,40,19,47,206,164,122,208,161,75,60,50,57,209,13,192,163,179,33,241,151,64,85,128,125,74,9,131,153,32,254,162,235,183,208,146,146,86,134,175,143,37,68,233,87,186,195,79,75,138,215,40,208,80,230,66,227,128,234,97,146,80,160,68,180,180,84,100,242,172,34,203,196,34,147,144,144,46,251,66,174,92,133,129,133,24,185,166,31,202,48,101,50,161,104,46,173,82,96,128,194,137,189,145,34,111,245,66,114,52,58,162,5,42,99,5,190,12,245,104,229,130,194,78,32,39,127,20,175,141,114,153,167,246,136,155,177,81,86,50,40,135,81,189,120,161,78,14,105,158,195,202,175,16,71,104,129,78,173,12,243,67,160,25,37,11,32,133,170,70,38,205,137,99,125,173,130,74,129,207,52,30,16,9,21,118,234,15,105,188,48,141,175,71,148,56,174,145,110,46,131,148,196,248,40,201,71,184,42,22,228,95,242,224,61,127,121,250,195,67,187,238,93,43,160,155,14,109,120,233,233,39,191,253,113,243,90,21,9,132,255,84,71,95,32,162,1,186,141,76,117,85,20,227,14,176,92,144,117,120,121,150,243,50,110,200,114,156,143,203,131,172,128,89,27,12,122,57,150,177,118,51,22,55,11,173,62,27,155,209,24,96,185,64,134,205,101,243,89,3,25,233,86,134,179,251,50,56,214,238,8,240,220,64,70,128,179,102,56,188,54,182,63,221,202,49,60,27,72,119,248,210,140,93,186,28,155,94,111,177,48,186,236,204,76,93,87,70,128,229,108,108,135,51,224,243,166,233,210,51,211,117,153,38,20,207,198,166,115,1,0,50,128,26,116,0,0,182,210,0,204,7,35,248,58,90,24,231,1,72,2,248,31,1,0,152,23,129,231,71,224,5,17,56,57,2,167,68,224,133,17,120,81,4,78,141,192,105,17,56,61,2,103,0,0,2,60,23,180,242,176,142,229,131,156,183,144,225,25,216,231,224,187,161,30,178,110,214,195,122,249,0,0,160,147,80,3,13,0,32,19,0,160,4,0,208,0,0,221,72,220,6,159,139,245,230,51,110,198,107,101,113,236,236,145,216,59,8,53,152,59,242,109,153,215,203,114,101,94,140,28,62,47,254,222,48,242,253,126,66,141,248,18,250,126,252,79,193,79,132,26,241,92,162,131,99,188,1,6,125,91,207,51,188,88,144,172,145,8,73,36,78,91,47,150,65,248,203,2,0,24,0,0,217,0,0,183,195,194,49,220,64,6,227,118,251,172,168,210,57,166,175,163,151,181,166,115,1,43,227,103,172,14,126,0,250,122,89,174,203,237,235,3,0,108,34,213,32,65,136,71,170,193,76,0,64,12,9,128,12,0,192,192,46,31,231,97,120,222,225,181,67,158,99,28,60,116,120,252,152,10,6,21,133,67,236,102,109,144,241,226,22,13,140,97,245,146,51,38,45,93,30,62,157,11,252,68,170,193,84,0,128,133,4,0,2,0,76,66,190,98,89,114,35,112,158,248,14,82,106,176,24,0,176,4,0,176,20,160,91,83,192,50,0,64,163,151,237,247,179,86,158,181,65,55,235,181,243,221,208,215,5,29,94,127,144,7,160,37,87,13,86,2,0,252,4,0,211,193,8,222,72,224,50,86,251,188,230,128,213,225,40,232,102,56,198,202,179,156,216,62,36,190,94,0,0,40,243,246,50,110,135,45,244,137,117,156,111,163,1,0,249,193,174,46,150,107,240,249,234,61,140,219,205,4,2,44,135,56,213,197,56,220,172,45,15,178,54,214,205,51,112,217,82,152,41,177,198,234,227,88,196,25,111,208,147,97,115,12,116,116,185,125,140,192,163,137,52,110,175,149,0,128,40,0,128,132,171,69,76,2,0,38,1,0,246,3,0,94,87,0,0,171,1,88,30,75,129,225,141,179,1,72,211,17,224,217,47,85,96,123,118,31,0,123,125,255,185,100,46,170,151,117,199,119,93,188,210,236,73,251,154,6,230,29,151,237,1,170,137,196,28,231,51,182,127,155,188,255,190,230,206,247,190,251,249,130,127,81,43,166,2,243,30,33,104,62,177,236,79,233,81,215,29,161,78,153,38,199,103,28,229,231,126,245,253,193,55,148,135,233,231,223,123,240,213,221,211,214,102,221,65,205,159,243,175,106,18,152,55,253,97,15,80,109,87,16,67,233,215,174,188,244,141,167,185,155,223,61,116,105,198,228,9,251,106,62,116,249,189,229,7,227,15,253,233,45,111,207,95,230,63,216,181,239,190,36,227,228,89,109,111,228,47,137,107,56,99,221,19,104,60,48,229,248,207,236,127,146,119,55,254,248,226,225,225,195,255,246,126,247,218,241,195,29,63,214,203,192,152,204,233,114,243,122,27,107,205,8,240,194,176,103,31,200,176,113,140,221,231,77,231,2,103,51,218,150,238,97,188,60,92,6,51,65,131,76,141,198,136,189,34,223,36,252,179,240,28,134,255,11,0,136,13,195,4,129,251,149,132,43,8,0,230,132,97,150,24,253,125,15,129,199,37,9,247,18,163,211,223,32,166,119,164,104,250,82,234,224,244,127,238,253,229,192,105,161,78,94,222,119,253,139,83,78,251,239,61,252,203,155,8,175,56,188,251,233,147,15,245,157,249,225,151,195,8,199,188,237,50,31,191,178,233,233,132,147,71,17,94,114,114,237,182,251,230,188,126,121,234,201,175,16,222,112,125,163,46,185,189,246,141,226,147,223,33,252,232,75,119,220,183,117,87,207,141,204,201,147,8,191,178,249,235,185,125,218,29,95,92,116,146,62,35,96,79,125,255,242,43,203,14,220,127,245,201,24,132,155,95,251,235,170,129,9,75,214,63,116,114,18,194,57,77,191,84,25,183,171,159,125,229,228,76,132,87,92,91,106,242,125,113,245,182,127,158,76,66,248,197,188,245,243,94,185,152,127,7,156,74,69,248,187,107,158,185,230,213,131,151,236,156,113,202,128,240,103,187,22,78,185,54,218,112,60,251,212,18,132,175,248,75,246,194,95,236,166,191,212,156,42,68,120,241,5,251,254,113,228,205,253,27,93,167,42,17,126,226,213,55,166,47,40,252,224,133,139,79,53,32,124,245,75,243,158,124,237,102,215,31,119,158,106,71,120,227,237,150,213,73,238,93,239,63,113,202,134,240,15,239,117,196,182,116,221,251,231,183,78,185,17,158,255,205,115,31,254,241,167,79,190,61,126,138,71,248,241,225,51,247,220,117,223,163,143,70,159,30,66,120,115,249,144,91,214,97,185,116,222,233,141,8,215,103,238,53,116,158,217,253,210,5,167,183,32,220,56,255,137,43,183,92,92,125,117,219,233,237,8,63,181,38,197,159,212,247,243,17,254,244,14,132,183,62,254,217,227,55,63,117,228,142,173,167,111,67,120,251,106,126,211,193,142,187,127,186,251,244,46,132,15,222,112,215,214,63,250,11,255,246,252,233,71,16,118,77,142,127,230,167,19,202,63,28,57,189,27,225,191,234,116,108,227,188,7,95,253,249,244,243,8,239,90,123,209,235,251,62,185,224,186,73,103,14,32,44,95,188,104,225,243,234,246,163,233,103,222,68,248,141,171,2,142,235,146,146,238,41,59,115,24,225,184,151,193,134,255,60,122,233,41,235,153,163,8,127,57,61,225,42,155,242,179,221,107,206,124,133,240,129,77,53,190,168,3,187,183,92,119,230,59,132,83,217,105,159,180,76,121,236,239,15,159,57,121,6,152,239,184,114,15,80,201,150,239,120,237,12,13,204,143,8,224,146,181,234,219,223,60,118,236,76,140,56,86,91,118,189,240,101,255,125,20,26,75,0,216,24,181,253,167,254,220,11,214,205,70,115,1,0,15,79,86,188,116,209,107,215,236,49,137,115,174,191,253,139,139,94,211,175,217,90,143,230,105,0,186,135,255,117,239,109,166,127,188,229,65,243,15,0,69,218,235,167,204,95,176,226,230,77,104,156,6,96,193,47,207,191,169,187,213,250,239,91,65,33,194,119,221,183,127,139,137,253,240,193,167,208,184,6,192,251,236,189,211,175,80,190,184,225,16,234,43,0,92,63,171,39,255,231,89,171,158,255,15,104,71,184,229,243,25,119,164,58,170,174,138,37,108,8,127,113,185,127,186,237,107,226,189,5,132,27,225,242,190,227,215,95,247,103,207,173,249,4,143,240,197,174,213,143,92,212,31,245,159,118,98,8,225,190,169,31,12,220,114,180,225,145,62,98,35,194,207,190,112,195,202,171,46,89,121,201,85,196,22,132,151,174,186,122,255,11,245,217,251,119,17,219,113,121,119,94,243,223,246,71,22,254,233,69,98,7,194,159,118,236,188,238,169,155,139,63,252,152,184,13,225,121,91,114,223,55,60,123,195,237,39,137,93,8,183,223,124,237,159,185,235,247,253,144,72,62,130,240,107,79,255,171,161,254,153,195,143,233,200,221,8,127,98,214,254,103,202,183,39,55,85,146,207,35,124,123,127,251,27,55,188,6,15,116,145,7,16,62,82,175,185,232,219,182,196,107,215,145,111,34,156,151,57,231,154,195,143,238,252,228,6,242,48,194,87,63,252,105,123,253,223,223,189,235,175,228,81,132,151,20,222,121,219,187,67,55,252,242,58,249,21,194,234,194,219,238,172,172,236,125,242,75,242,59,132,167,239,88,254,215,227,87,220,187,89,78,157,68,56,117,99,243,29,234,227,115,94,135,20,45,76,202,32,69,119,229,191,62,187,77,125,195,98,42,6,225,27,99,118,220,242,203,13,234,207,27,169,73,56,252,187,197,150,119,97,242,46,63,53,19,225,139,15,222,57,120,97,69,225,240,102,42,9,225,180,15,118,81,203,143,106,158,185,157,74,69,120,235,153,194,11,51,118,216,175,216,67,25,16,54,63,190,101,199,141,83,178,222,124,143,90,130,240,221,51,62,125,228,170,247,167,221,244,61,85,136,240,187,125,71,158,240,62,115,245,151,241,116,37,194,191,109,164,183,115,142,64,16,73,174,203,85,106,36,1,222,13,240,12,46,225,104,2,32,41,134,225,121,214,227,231,33,239,131,54,71,175,195,198,66,203,0,28,100,57,95,216,183,137,4,0,249,97,120,57,129,103,134,179,167,17,141,37,216,149,238,8,116,8,73,14,36,167,132,197,57,44,74,16,132,56,243,11,173,243,24,5,128,122,1,0,59,47,33,192,242,252,120,48,124,245,181,0,124,252,189,12,188,124,253,98,41,94,22,137,233,148,176,155,196,121,75,248,0,9,64,73,24,254,148,4,160,34,12,31,23,195,207,201,55,143,207,38,48,171,63,6,75,173,187,69,94,157,93,62,75,176,107,101,230,42,184,12,90,218,23,100,182,11,82,165,20,231,41,49,78,102,122,122,218,162,76,135,183,171,154,169,30,51,126,186,155,245,38,167,8,34,141,135,233,119,179,222,176,52,214,146,120,134,60,139,214,46,15,47,210,152,46,148,233,130,88,53,146,102,242,125,28,231,235,171,10,242,69,72,152,28,37,77,46,7,0,32,165,7,250,130,188,32,225,89,124,65,175,45,144,7,249,110,86,144,251,160,35,0,161,37,200,35,140,63,116,4,32,0,238,88,53,146,48,183,196,170,193,132,8,169,217,44,244,255,165,103,151,170,51,217,205,118,241,16,114,14,123,55,159,210,25,13,161,128,243,96,103,103,106,52,126,41,60,231,193,103,99,213,96,154,48,134,137,105,255,59,86,141,164,214,159,99,213,128,18,198,154,113,194,31,43,81,163,50,229,65,0,78,90,212,184,95,199,97,30,232,195,36,95,161,141,22,0,128,70,78,40,252,187,40,58,53,58,21,194,139,224,106,184,58,57,58,57,117,76,198,122,131,158,116,46,176,58,78,13,102,8,60,19,165,196,204,254,204,204,76,93,166,62,51,43,211,144,153,157,105,204,204,201,52,101,230,234,50,117,58,157,94,151,165,51,232,178,117,70,93,142,206,164,203,213,103,234,117,122,189,62,75,111,208,103,235,141,250,28,189,73,159,155,149,153,165,203,210,103,101,101,25,178,178,179,140,89,57,89,166,172,92,67,166,65,103,208,27,178,12,6,67,182,193,104,200,49,152,12,185,217,153,217,186,108,125,118,86,182,33,59,59,219,152,157,147,109,202,206,53,102,26,117,70,189,49,203,104,48,102,27,141,198,28,163,201,152,155,147,153,163,203,209,231,100,229,24,114,178,115,140,57,57,57,166,156,92,83,166,73,103,210,155,178,76,6,83,182,201,104,202,49,153,76,185,185,153,185,186,92,125,110,86,174,33,55,59,215,152,155,147,107,202,205,29,93,135,69,0,128,98,128,251,68,82,44,46,243,33,25,0,179,133,50,255,15,255,73,233,253,67,134,181,80,158,11,178,93,130,42,31,150,215,164,40,156,151,132,103,68,1,144,8,0,224,24,175,157,133,1,158,225,120,177,57,74,13,23,135,116,249,56,24,112,59,172,172,240,74,212,91,166,170,113,59,89,168,198,26,33,254,146,245,218,196,20,218,213,106,160,14,11,199,241,113,24,202,41,0,25,30,247,2,214,107,67,0,12,169,213,136,158,171,212,234,177,251,98,128,231,50,252,194,168,201,9,146,52,120,80,173,70,82,110,190,12,183,195,112,172,13,195,77,50,172,253,72,56,91,14,192,228,48,108,141,192,54,17,175,76,79,79,95,101,25,224,37,186,133,94,58,170,71,11,79,157,0,100,39,168,129,74,232,247,9,152,126,169,207,88,88,187,195,11,151,44,69,108,73,22,30,82,96,95,55,235,69,204,20,52,213,78,0,252,9,106,16,7,0,88,147,160,70,109,100,125,2,230,155,148,134,144,167,215,199,67,6,10,186,28,206,151,225,6,22,67,65,197,13,64,135,55,32,204,27,48,89,32,51,0,83,16,69,18,61,143,36,168,209,10,200,123,9,106,180,138,240,73,130,26,200,195,210,30,147,191,226,120,172,158,128,219,136,130,0,96,214,88,223,6,189,14,180,252,227,231,28,94,158,177,184,241,98,13,88,50,65,141,86,97,132,121,102,102,24,22,52,90,52,70,18,148,76,38,151,147,10,185,82,17,149,16,61,83,53,45,102,122,172,58,46,38,158,86,83,19,38,76,140,74,36,166,208,83,137,105,212,116,197,12,98,38,57,39,17,82,139,168,52,85,58,145,73,233,72,61,113,39,121,55,121,15,125,175,242,191,228,47,178,83,228,105,234,76,212,125,253,3,155,47,191,53,179,185,101,243,150,109,51,63,136,139,175,168,252,229,100,122,198,5,237,171,58,62,217,120,249,21,87,94,117,247,67,79,60,249,194,190,151,94,254,240,232,103,103,0,157,48,33,69,103,200,201,91,188,180,172,124,213,198,43,174,186,251,161,71,158,120,114,223,203,175,29,60,250,25,160,99,227,80,104,222,226,162,226,178,242,11,109,236,198,43,111,184,241,165,215,14,198,38,164,228,45,46,42,107,94,217,126,97,135,141,189,252,202,187,31,121,226,201,23,94,58,114,244,179,19,177,9,69,101,54,118,120,227,95,118,63,253,204,91,239,156,248,102,195,197,155,111,187,227,233,103,94,120,241,224,123,239,151,94,251,212,171,251,94,59,88,86,189,162,185,245,194,142,203,174,216,250,208,95,31,123,102,239,190,23,223,73,72,156,178,178,253,135,31,79,159,25,246,244,124,120,36,110,142,215,55,115,86,199,234,53,247,63,176,246,201,221,137,83,102,207,41,46,169,94,209,210,214,126,225,154,181,143,190,240,230,91,135,79,124,243,61,23,216,202,7,175,158,159,158,113,231,3,143,61,243,226,193,119,142,92,191,252,154,107,51,183,206,249,199,155,175,157,169,94,209,182,82,161,140,87,47,200,248,250,184,215,151,179,244,130,252,162,109,87,214,219,131,251,95,122,253,239,135,222,253,252,244,25,0,59,180,235,143,208,235,11,149,51,104,121,194,186,93,113,195,247,202,230,68,173,155,65,77,83,18,116,6,109,160,21,20,161,144,43,18,162,107,226,39,40,26,21,20,61,51,58,138,82,82,10,138,164,40,42,134,150,81,42,57,17,55,89,86,173,152,161,104,86,144,242,41,49,53,116,1,149,70,17,116,130,60,62,38,143,158,53,175,3,122,104,231,188,225,253,178,245,15,82,211,229,235,79,81,173,138,196,168,169,81,147,98,38,197,56,229,209,242,233,242,86,197,34,89,113,116,42,29,67,19,148,78,149,74,79,151,171,168,225,93,242,104,121,134,174,138,26,190,77,185,132,138,167,150,40,76,202,69,178,245,103,18,166,42,51,18,210,40,77,188,38,126,120,11,189,254,154,105,170,201,155,182,203,50,100,139,21,100,220,212,168,225,167,181,124,204,240,219,211,99,100,195,103,100,195,71,98,254,115,35,149,19,181,174,125,210,240,227,202,225,87,100,209,83,23,83,209,114,147,178,88,25,35,231,85,179,169,54,186,53,106,120,195,212,153,209,137,81,149,244,240,31,228,247,222,22,51,133,214,221,66,175,123,111,190,34,70,38,27,190,67,189,238,123,5,1,23,202,43,233,225,203,233,225,167,169,25,84,124,44,144,19,4,69,208,164,76,161,32,149,202,40,50,90,166,34,227,104,53,145,64,78,144,77,76,152,68,76,38,167,144,211,98,103,202,102,41,231,16,73,132,147,118,145,15,80,15,145,187,201,131,228,223,201,55,99,222,138,122,155,124,135,124,143,248,72,246,49,249,57,125,140,252,26,158,160,127,34,255,75,253,66,196,44,88,188,172,122,197,214,155,110,186,249,162,205,127,188,250,214,191,60,113,201,67,114,69,148,113,233,178,166,111,95,255,59,61,105,170,49,167,169,121,237,61,247,63,240,84,246,71,19,46,189,236,138,155,66,141,81,104,139,213,43,108,108,251,95,31,155,49,83,161,140,86,77,154,98,204,205,187,235,238,67,239,70,229,108,187,242,46,69,244,226,101,93,142,173,87,37,248,58,158,249,250,120,155,229,187,147,103,234,27,174,191,33,61,99,65,114,227,141,59,111,249,243,109,119,222,117,223,19,187,159,151,171,98,38,207,202,187,160,168,246,142,59,15,188,186,83,49,109,186,118,222,178,11,62,255,234,248,153,23,246,209,112,238,188,249,201,89,166,188,210,242,202,154,250,198,38,161,237,117,90,217,46,87,160,127,245,218,63,220,118,207,3,15,238,121,253,254,7,188,190,167,255,120,161,246,34,25,69,167,81,93,20,145,145,62,188,126,22,165,139,159,73,39,69,205,150,45,146,21,210,113,11,135,239,145,39,209,73,116,178,210,160,170,46,88,151,19,149,24,173,156,186,184,40,151,178,42,163,50,19,101,26,106,134,140,88,110,162,43,100,25,116,180,34,74,177,28,46,160,99,162,140,84,158,108,186,130,142,81,212,148,229,100,197,102,41,210,149,209,235,230,215,85,44,82,46,76,156,62,127,230,164,41,81,213,116,82,84,97,236,52,69,180,188,84,185,32,42,168,202,95,182,80,190,88,22,45,175,149,19,50,53,37,27,222,108,153,93,170,140,30,190,227,66,109,145,42,90,30,59,49,79,30,109,76,165,167,12,255,109,137,173,62,166,52,42,186,184,104,70,169,178,62,182,76,17,61,252,67,113,244,44,170,164,44,135,138,83,70,203,115,21,209,235,140,211,20,139,169,153,77,68,188,62,118,195,13,93,65,213,240,243,127,168,180,198,110,204,84,39,110,189,103,125,201,45,127,91,159,171,88,72,183,203,231,71,23,71,39,203,38,174,127,112,37,91,65,231,42,18,150,11,77,226,154,159,148,27,223,94,24,117,235,231,235,178,226,137,89,242,56,90,185,110,203,101,180,75,22,75,69,41,212,87,117,150,68,241,75,134,127,136,14,40,253,147,139,7,133,174,208,28,53,109,248,210,117,37,212,197,249,241,147,55,214,204,145,203,135,223,90,36,91,166,33,252,105,212,116,154,92,183,124,78,66,158,140,88,247,250,194,245,255,28,254,49,165,146,142,166,201,13,9,133,149,75,135,159,93,34,39,232,70,217,12,3,185,46,46,149,182,197,52,69,15,223,111,154,21,155,74,71,41,200,56,249,240,245,27,14,209,9,84,44,213,71,119,200,99,104,34,62,134,54,41,163,229,201,74,109,245,186,134,152,89,84,148,194,168,140,163,163,20,81,138,225,87,230,69,111,148,143,59,134,139,191,29,54,134,103,210,185,64,166,78,159,101,200,54,230,152,114,25,139,213,198,118,157,21,143,13,88,25,63,30,240,77,83,213,104,108,55,136,50,120,123,240,162,208,59,11,0,72,182,30,83,254,183,56,236,88,250,3,160,127,170,26,201,37,187,8,44,63,159,45,229,122,125,22,36,111,143,177,120,230,176,59,248,0,92,2,13,153,103,7,250,248,110,150,67,11,107,0,76,85,163,213,254,26,113,213,95,194,130,230,46,204,217,130,16,188,129,134,224,74,89,39,88,53,113,39,152,48,5,206,137,129,157,115,142,167,238,92,180,48,19,166,250,238,248,40,149,188,171,51,109,246,47,157,233,224,52,52,222,116,166,211,120,138,248,216,72,68,107,114,146,98,63,206,185,55,142,201,205,152,122,75,110,230,76,166,244,219,217,183,84,46,55,48,53,39,156,183,212,174,240,105,234,110,220,125,75,29,56,200,212,179,127,191,165,30,188,167,105,0,31,125,220,120,255,39,76,243,87,71,53,173,175,31,187,165,21,130,175,91,79,16,107,219,128,31,40,64,26,65,16,36,65,18,68,169,42,115,178,154,96,21,164,156,36,9,122,46,49,123,198,74,85,94,84,20,49,149,38,162,8,138,144,45,162,150,40,23,78,37,96,14,65,16,180,146,38,40,69,52,57,139,200,19,162,211,74,34,138,136,38,167,19,36,153,75,208,36,77,146,20,69,204,38,41,66,37,96,25,65,210,196,36,50,81,78,8,95,147,4,173,36,20,84,52,57,155,88,76,16,68,12,17,69,36,19,20,145,67,16,148,140,34,104,5,169,66,169,10,36,81,132,140,20,240,76,50,151,28,201,101,22,81,74,208,4,73,17,132,146,168,37,72,69,140,210,66,144,81,42,69,25,57,131,16,254,229,196,17,50,130,148,169,136,164,40,162,139,38,228,4,73,146,211,72,154,82,211,177,4,73,202,137,120,2,80,128,154,69,206,38,103,147,203,73,66,161,36,72,85,20,145,70,17,68,144,212,18,189,20,77,70,17,114,234,125,146,20,168,85,8,41,146,74,121,52,73,100,206,209,209,153,10,130,144,17,201,81,49,36,164,73,146,160,76,4,34,132,202,83,146,228,181,20,17,75,40,132,12,41,114,223,114,64,60,167,1,212,229,68,39,4,114,7,9,104,34,26,146,53,36,16,70,123,98,26,41,35,174,33,167,79,136,37,230,43,167,169,210,169,76,66,96,217,2,162,64,78,146,36,25,67,40,137,12,34,139,32,40,146,148,145,4,177,144,84,18,95,11,108,35,0,1,212,106,65,21,34,62,33,254,36,3,20,65,202,232,100,138,38,110,39,1,13,200,26,170,88,165,163,47,34,140,241,41,4,73,70,83,58,154,36,21,196,82,42,73,70,40,151,17,49,164,33,42,154,38,137,14,74,96,165,156,32,137,27,9,74,57,25,113,150,32,18,137,56,5,37,123,78,41,20,102,138,192,85,185,80,81,66,37,124,73,144,180,156,36,200,25,100,163,82,120,227,36,80,116,130,165,72,154,144,129,40,130,252,158,136,38,9,130,38,182,209,36,73,19,48,58,89,142,106,74,78,82,233,177,4,9,20,132,156,32,234,18,73,133,144,218,160,156,18,82,85,16,68,169,144,21,1,72,21,105,144,201,132,39,66,30,15,100,139,21,128,184,128,174,37,0,9,210,201,41,128,32,40,90,166,84,146,138,217,244,118,10,228,208,122,37,17,71,36,202,136,120,160,32,18,80,138,50,27,177,83,1,136,165,52,160,129,194,163,0,157,195,39,64,208,237,70,230,60,198,239,15,160,255,119,212,251,42,139,29,165,37,185,13,93,118,222,214,216,210,232,108,54,247,59,178,42,249,222,214,96,241,64,97,101,83,119,126,115,191,173,170,173,127,160,0,13,50,131,51,213,200,138,50,85,180,232,73,120,154,104,161,147,240,116,17,71,228,102,29,8,212,180,152,157,108,119,149,191,169,162,145,241,15,90,170,10,10,188,254,226,254,198,226,98,110,160,168,185,136,169,180,123,45,185,213,92,157,9,203,176,199,196,244,162,68,139,95,81,63,99,229,203,188,254,32,95,239,240,218,221,172,20,62,73,164,71,194,147,197,252,37,156,56,54,61,125,221,14,174,210,82,229,112,88,155,108,14,159,161,167,183,177,171,42,187,194,108,55,22,240,166,166,62,127,235,96,73,87,87,86,208,202,15,20,88,49,61,253,179,112,122,49,34,61,13,125,190,82,159,191,190,143,241,55,233,165,176,28,145,22,9,155,196,188,37,156,43,198,149,176,100,157,146,240,18,241,111,36,237,145,176,69,17,105,167,70,164,157,22,129,51,196,244,37,156,25,145,151,38,34,61,109,68,252,185,17,180,78,137,248,126,106,196,247,211,198,230,179,185,170,42,59,187,190,219,230,242,149,212,229,103,59,155,90,107,156,205,131,142,62,151,201,147,93,229,239,27,40,180,7,170,154,75,153,170,250,218,230,82,35,98,244,71,179,213,200,74,39,213,187,132,165,122,150,176,84,207,18,30,167,158,139,124,57,205,206,138,30,99,14,231,44,175,173,111,235,175,55,14,102,181,186,24,255,96,107,22,91,229,52,182,12,152,90,178,139,106,155,188,217,141,76,62,202,191,115,14,78,47,90,204,95,194,147,197,252,37,44,229,39,225,41,99,231,95,106,106,206,178,242,131,185,250,64,111,171,221,232,113,121,117,141,124,73,87,80,207,212,114,250,46,111,99,113,105,149,174,174,187,222,90,196,215,22,242,184,252,115,34,202,63,39,162,252,115,34,202,63,231,156,229,183,249,245,125,76,81,115,125,254,64,246,64,133,167,199,152,205,114,118,95,99,86,137,177,167,174,210,211,195,24,43,114,154,89,3,215,86,95,225,239,198,237,188,19,142,238,119,5,28,203,240,236,10,206,198,114,161,48,137,22,9,75,180,72,120,28,90,114,251,107,217,230,222,18,147,206,104,105,236,207,45,170,113,150,122,152,6,125,214,64,111,83,149,190,173,217,194,113,254,54,75,110,77,48,208,84,236,64,75,11,224,43,136,203,166,16,105,169,103,121,222,205,22,11,90,127,40,108,130,72,139,132,39,138,121,75,120,210,216,180,20,102,229,231,59,123,26,109,5,173,193,26,157,169,171,186,183,183,202,82,99,110,51,21,250,173,117,14,131,195,167,47,10,180,150,214,50,125,229,133,140,29,203,71,154,209,245,34,97,137,23,18,150,120,33,225,113,120,81,88,212,210,234,11,212,27,125,69,37,189,46,83,176,160,144,25,232,237,43,106,27,52,244,20,13,20,150,215,117,229,122,139,237,173,5,76,79,77,85,3,150,207,126,210,140,110,151,194,232,128,198,68,179,199,23,244,242,101,94,48,242,141,212,86,127,138,160,65,194,227,181,213,1,38,63,171,57,183,199,216,98,51,103,247,247,249,27,13,45,222,250,182,166,92,67,55,223,229,177,120,122,202,91,218,172,69,150,58,166,60,200,227,182,186,69,59,154,39,18,158,36,142,79,18,158,44,142,63,18,78,20,113,68,254,250,190,6,83,107,143,33,215,85,106,47,28,108,9,214,244,183,213,51,108,37,83,170,235,177,120,74,90,248,162,129,154,1,163,193,82,153,195,20,102,225,65,57,102,238,232,252,37,44,213,137,132,165,58,145,240,56,117,82,208,88,215,84,226,107,243,154,6,7,172,253,198,226,150,190,62,182,215,158,223,144,175,183,55,245,218,44,37,13,69,254,222,170,242,66,139,61,160,231,13,184,252,17,249,111,137,200,127,75,68,254,91,206,157,127,17,219,215,63,96,51,215,20,20,52,5,171,139,6,184,166,106,163,169,38,88,223,106,171,205,233,171,240,234,115,154,114,75,156,172,207,97,178,13,100,213,227,242,39,69,148,63,41,162,252,73,17,229,79,58,103,254,62,191,215,162,175,52,119,149,183,90,234,170,204,165,165,189,61,206,130,190,218,126,198,219,230,205,169,99,139,74,253,58,151,73,87,228,235,246,183,89,240,88,177,37,105,244,88,81,227,102,172,108,3,227,18,135,139,80,120,136,31,73,163,199,11,9,143,67,143,190,130,237,110,229,179,42,2,69,181,117,217,89,206,86,107,191,211,82,235,215,219,244,174,2,191,193,236,10,214,54,27,77,12,31,236,170,235,171,231,16,65,51,231,157,221,71,132,209,2,109,213,9,11,151,250,135,132,165,252,37,60,78,255,200,105,182,5,43,45,117,93,173,221,13,229,46,222,89,217,151,93,92,88,52,192,245,248,138,122,141,58,166,161,161,32,88,98,102,121,123,165,115,176,58,27,209,179,107,222,232,250,145,176,196,143,93,243,70,215,207,174,121,231,172,159,92,190,162,40,167,202,226,113,26,60,253,133,206,102,134,119,184,6,75,204,188,203,215,236,11,56,28,109,45,185,3,198,114,67,105,151,71,95,103,42,69,249,167,206,31,157,191,132,165,252,37,44,229,47,225,113,242,207,175,239,243,27,45,69,249,142,238,166,74,91,79,121,93,69,137,125,208,105,45,169,44,117,89,27,130,131,158,122,159,174,161,214,85,202,250,7,75,77,126,92,254,136,252,119,69,228,191,43,34,255,93,231,206,191,190,160,212,204,7,186,76,30,139,115,192,233,232,53,84,186,186,43,43,130,124,67,151,177,220,219,102,182,216,202,43,138,93,45,181,213,85,197,165,109,184,125,166,46,24,221,62,37,28,42,255,130,209,237,81,194,227,245,15,11,231,168,45,212,13,90,252,3,149,131,185,217,37,217,222,28,111,57,107,100,12,133,53,78,127,113,31,147,221,210,90,227,171,246,232,116,89,3,56,255,93,17,249,239,138,200,127,87,68,254,187,206,157,127,128,243,244,212,244,14,120,202,217,226,138,90,195,96,73,45,107,211,149,20,251,253,118,87,93,105,101,174,139,41,170,44,176,12,184,2,229,124,77,139,88,254,100,156,222,200,252,201,5,61,89,168,151,162,30,42,133,75,115,168,132,165,57,84,194,227,204,161,129,62,198,95,61,96,51,181,56,106,251,202,141,14,198,235,207,13,120,253,65,131,133,107,236,41,238,103,108,131,189,165,172,197,107,110,113,150,139,245,177,59,121,52,63,118,39,143,230,71,248,78,187,82,0,64,89,152,221,166,92,208,1,56,206,199,65,27,27,96,57,7,227,118,12,58,188,246,60,40,200,181,41,106,196,67,129,62,183,3,15,78,237,41,106,52,14,180,136,114,184,132,183,137,187,192,36,124,149,184,11,78,194,215,70,224,27,69,90,36,124,147,72,151,132,119,70,124,127,79,4,126,94,180,55,73,248,12,0,160,46,12,19,4,182,217,73,88,17,129,99,8,188,62,34,225,56,209,22,45,97,117,196,247,211,69,124,62,130,239,121,52,172,242,198,26,189,179,191,183,133,233,9,230,84,215,182,234,74,60,213,197,6,143,174,215,103,235,211,233,43,155,90,90,251,45,197,149,250,96,121,111,151,175,188,177,198,80,108,209,91,123,28,117,141,86,166,161,212,198,213,20,152,186,245,246,234,128,89,95,212,208,226,168,41,44,204,202,106,182,150,4,203,243,203,27,107,178,172,250,198,238,172,102,179,161,218,158,101,224,251,140,174,26,155,190,196,80,144,157,159,175,215,181,248,178,140,229,172,46,144,165,175,233,46,111,172,49,86,186,44,109,22,103,189,206,89,81,209,199,248,109,165,213,3,57,134,65,107,91,22,95,217,216,230,115,100,215,86,15,52,53,48,77,6,225,83,135,193,55,24,204,30,176,21,22,120,43,29,85,62,123,189,213,85,88,227,183,240,92,78,126,185,161,152,31,108,109,118,89,178,235,92,229,141,53,217,214,82,167,215,91,208,175,47,244,251,155,2,193,174,64,37,215,18,48,21,229,183,177,69,109,131,37,124,81,69,110,137,109,208,232,235,19,62,245,23,153,219,216,82,91,41,87,217,223,157,221,88,208,103,182,248,157,37,125,173,21,21,190,158,96,129,223,198,232,187,187,106,12,65,211,249,8,84,231,161,144,158,143,156,112,62,50,213,249,232,106,231,35,43,157,135,238,127,62,83,236,249,168,19,231,49,117,156,135,198,116,62,74,196,249,8,51,231,51,209,158,143,80,112,30,2,222,249,232,39,231,163,227,158,199,28,122,30,11,84,231,49,19,241,253,29,14,155,223,231,115,119,48,54,27,199,6,2,22,38,192,118,120,28,94,190,39,232,227,241,19,122,213,203,4,221,226,59,244,136,94,50,72,217,194,111,241,179,35,208,225,240,122,89,174,195,49,178,103,59,236,177,3,89,173,195,95,240,3,126,246,172,24,248,51,95,144,103,185,14,63,231,179,115,140,7,127,35,2,190,223,219,209,197,178,29,110,198,227,247,113,124,32,224,176,11,161,18,236,176,118,51,94,59,43,205,1,58,113,23,125,196,124,109,172,170,236,175,236,113,180,48,76,125,163,223,101,175,242,54,23,54,4,89,103,117,91,209,96,150,171,40,199,165,239,243,13,148,150,52,21,247,101,233,114,209,28,234,206,28,173,127,159,79,2,82,220,4,113,110,151,240,4,81,150,144,240,196,113,100,221,230,220,236,220,194,158,162,162,6,71,73,155,207,218,218,92,80,91,195,148,27,3,249,158,198,65,123,87,127,75,87,79,9,219,80,100,243,103,49,181,53,136,214,169,186,209,180,158,79,2,82,92,137,86,9,75,180,74,120,28,90,11,42,171,170,114,249,70,159,221,94,30,212,247,49,246,26,151,171,39,144,203,22,151,24,242,155,187,155,242,219,154,93,53,186,158,222,172,122,127,14,95,135,104,125,94,55,90,79,57,159,4,4,157,166,217,193,119,215,48,28,239,101,185,80,90,146,78,35,97,73,134,148,240,56,58,77,65,67,149,185,191,223,149,101,40,117,86,52,247,215,102,213,86,182,85,232,74,253,76,101,139,39,191,151,101,124,89,69,245,108,77,139,197,49,208,53,136,23,136,134,245,163,249,124,62,9,72,113,37,62,75,88,226,179,132,199,225,115,161,207,199,112,185,229,174,110,91,91,78,121,86,101,105,117,150,57,167,181,32,232,43,169,107,180,219,91,186,107,153,18,131,203,225,236,170,44,105,212,59,177,254,147,53,154,214,243,73,64,138,43,209,42,97,137,86,9,143,67,107,113,101,99,75,208,82,231,113,21,57,244,61,198,138,172,214,92,87,126,141,61,87,111,48,217,237,76,91,83,192,87,95,220,205,151,151,214,115,30,29,22,214,15,69,208,122,62,9,28,138,160,245,80,4,173,135,206,77,107,189,208,166,26,249,1,190,43,223,150,239,213,89,114,171,27,75,74,140,93,190,170,166,26,222,218,108,247,215,53,102,233,75,27,124,133,141,109,88,205,6,27,13,17,122,197,111,79,32,20,87,162,85,194,18,173,18,30,159,86,127,149,189,167,186,48,48,208,148,227,49,219,171,115,25,219,128,193,82,216,20,204,30,168,119,122,60,45,172,179,165,119,64,223,91,201,235,48,173,153,217,103,209,250,91,19,8,197,149,104,149,176,68,171,132,199,161,85,159,211,205,116,153,42,141,190,254,70,182,133,43,229,236,69,246,0,219,239,172,111,205,238,182,52,53,54,23,121,122,123,115,171,7,250,237,166,222,218,94,68,236,225,108,92,79,42,145,214,243,73,64,138,43,141,3,18,158,47,218,6,36,188,80,156,27,36,156,19,17,158,55,246,220,81,232,108,42,50,150,87,59,90,123,106,42,245,181,45,3,5,141,141,221,38,174,218,89,202,89,6,115,187,91,74,171,91,249,220,220,170,218,236,220,158,62,204,248,187,140,17,125,239,60,18,144,226,74,124,151,176,196,119,9,143,195,247,26,161,57,86,217,234,25,135,137,119,114,69,45,214,254,98,182,150,239,54,229,244,23,24,184,186,0,99,104,50,103,123,186,75,186,91,92,120,234,0,13,57,163,219,200,121,36,16,138,43,209,42,97,137,86,9,143,71,107,183,143,173,118,180,180,153,242,7,202,75,42,93,253,213,93,109,117,94,87,99,151,179,215,19,108,237,169,172,51,229,58,157,197,165,37,61,182,150,86,76,43,48,69,208,250,219,19,8,197,149,104,149,176,68,171,132,207,209,247,92,69,69,86,75,99,79,191,161,151,247,21,229,15,20,59,235,93,221,21,182,130,6,147,81,95,88,221,100,201,214,123,219,236,186,70,81,223,223,101,58,187,239,253,198,4,66,113,37,90,119,69,208,186,43,130,214,255,133,35,144,150,64,182,41,45,51,61,59,61,83,60,250,104,245,161,227,143,103,206,247,31,32,72,138,150,201,21,74,17,71,69,171,98,98,227,226,213,103,18,38,76,156,52,249,76,226,148,169,211,166,207,152,57,107,246,28,136,195,53,218,185,73,243,230,47,72,78,89,184,232,76,106,90,122,198,200,222,15,20,28,66,230,252,130,194,162,226,146,210,242,138,202,170,234,154,218,186,250,134,198,166,230,150,214,54,188,67,196,222,237,112,186,60,94,159,191,135,11,240,193,222,190,254,129,193,49,214,84,42,194,112,229,24,50,98,81,177,137,227,88,43,223,93,151,93,232,26,244,121,77,213,125,193,28,83,119,93,111,87,65,69,208,82,174,51,84,101,7,243,139,250,138,141,98,223,217,150,135,235,65,146,101,206,35,129,80,220,57,98,29,75,88,35,214,105,126,112,32,244,110,114,196,55,146,60,83,229,243,121,11,154,154,170,219,138,235,91,93,61,213,45,53,70,75,127,105,101,77,165,177,182,182,220,81,197,216,11,43,179,122,172,61,141,181,13,92,73,189,79,247,27,255,233,3,190,32,103,101,109,108,128,119,120,209,217,69,180,83,135,119,184,3,66,169,31,91,140,247,101,111,16,229,44,9,111,20,109,172,18,190,51,2,223,37,238,33,151,240,67,0,128,230,48,252,183,8,188,57,34,254,150,136,248,127,138,248,254,70,17,163,245,238,193,90,91,126,181,165,178,167,38,187,169,168,219,230,50,215,27,139,106,138,43,11,116,53,165,222,252,158,130,150,34,127,77,127,176,200,18,138,251,101,68,89,190,138,200,59,158,24,141,213,196,104,90,166,17,163,105,209,68,224,111,35,210,251,46,162,44,167,34,202,34,139,136,31,32,240,158,126,9,243,4,110,3,225,56,91,208,125,126,229,159,244,125,41,49,186,188,101,17,229,171,139,192,245,17,229,109,143,160,143,21,113,100,127,115,224,211,160,176,151,113,7,217,60,8,78,44,85,131,120,0,64,83,11,222,31,236,113,4,2,14,175,29,118,57,88,183,13,118,2,245,50,28,46,237,15,150,226,139,91,190,65,230,178,209,241,109,65,191,219,97,101,120,54,148,2,0,53,203,240,9,93,41,141,72,153,223,92,85,85,48,232,203,110,173,52,245,25,154,138,139,77,21,77,165,92,133,94,95,82,210,24,240,103,55,53,48,205,57,118,142,171,176,115,205,61,21,168,147,243,203,34,244,149,243,72,0,239,144,24,73,67,234,235,18,134,98,63,150,176,38,2,79,142,248,62,49,34,124,60,189,166,166,170,202,231,51,85,102,21,27,170,45,13,172,61,191,160,162,169,58,232,181,219,43,115,74,117,109,126,91,67,105,69,127,109,126,118,79,69,141,174,0,149,177,229,2,156,158,180,191,227,124,18,16,202,152,207,4,216,21,65,30,159,34,190,96,164,44,2,237,18,150,246,88,72,120,174,136,165,248,101,248,16,114,40,124,74,68,252,169,17,241,165,61,23,168,191,187,88,123,109,23,219,54,224,168,238,51,151,91,170,45,37,21,53,197,45,5,205,193,252,222,174,220,250,128,81,159,213,84,155,93,104,142,96,83,73,113,75,160,190,50,59,80,207,20,118,85,23,215,54,182,6,74,89,151,165,57,191,89,215,16,40,182,57,11,91,7,205,5,221,70,61,95,84,218,143,77,242,96,237,242,17,218,38,132,225,169,226,58,187,132,151,68,132,47,141,8,111,22,249,44,225,14,113,221,92,194,157,226,94,245,243,161,144,129,1,182,39,200,122,173,236,175,123,32,16,23,86,58,28,54,27,195,51,103,249,3,96,172,86,95,208,203,227,53,30,143,195,203,251,250,188,44,39,70,26,195,3,0,219,207,90,131,188,195,107,239,144,98,226,159,14,134,179,7,209,57,252,0,207,88,93,29,221,172,195,222,205,143,227,22,224,172,101,161,192,217,254,0,44,110,159,213,213,17,112,251,120,252,100,99,120,22,63,241,14,15,139,100,28,142,237,9,58,56,214,214,17,112,216,189,12,31,228,216,0,199,50,54,159,215,61,128,94,177,54,137,200,145,247,65,111,68,136,195,214,197,178,1,169,20,46,118,32,16,78,151,159,99,59,44,184,228,1,191,47,192,143,0,142,237,224,5,190,140,14,30,253,106,132,46,188,142,213,203,114,1,135,207,123,22,15,3,110,159,61,208,193,115,65,175,48,192,217,220,62,123,135,135,13,4,24,59,27,176,250,60,254,32,207,118,4,189,14,62,208,97,245,121,3,65,15,107,195,14,6,58,194,106,52,194,59,194,217,219,83,61,14,27,92,178,20,6,88,183,120,50,205,202,184,221,172,13,118,214,177,129,160,155,207,203,11,122,251,56,198,159,156,210,9,125,94,200,120,97,103,17,199,117,226,225,60,82,118,202,201,118,213,180,228,86,149,54,56,235,245,131,188,174,167,139,211,85,183,150,6,7,217,202,150,174,218,170,220,82,189,161,175,184,190,145,215,85,249,241,38,183,3,5,163,199,156,243,73,32,108,204,9,165,3,197,125,23,35,227,201,72,30,137,98,152,132,117,162,222,39,225,108,81,239,147,112,126,68,120,137,248,141,132,43,196,253,108,18,94,33,134,71,240,164,50,191,177,173,162,187,174,191,166,56,171,165,209,159,95,224,244,27,90,7,27,42,236,149,86,171,179,173,187,161,190,176,42,183,53,216,196,212,244,245,251,240,248,242,81,225,232,125,118,231,145,64,104,105,140,115,88,217,50,143,159,177,242,35,233,45,18,203,47,225,84,113,174,150,112,154,136,67,251,106,86,4,121,41,76,19,17,87,27,17,119,110,4,158,18,241,253,212,136,240,105,34,46,101,2,221,144,199,94,92,34,29,109,196,20,99,239,26,25,191,71,147,233,102,2,221,22,206,215,231,77,203,76,215,101,165,235,36,175,30,226,193,162,204,98,53,58,61,221,38,238,195,182,186,125,129,32,199,66,135,183,215,231,98,109,144,99,173,65,46,224,232,101,221,3,208,199,65,166,139,103,57,104,97,5,49,197,198,249,252,126,214,38,246,174,94,134,115,48,94,126,95,49,62,63,197,7,253,110,86,122,9,0,56,92,140,207,144,121,217,62,126,192,63,18,242,93,49,150,97,132,206,43,189,140,41,17,229,40,111,208,3,75,240,57,44,15,227,7,169,37,248,108,164,52,178,155,74,240,57,42,41,77,76,9,0,165,37,152,134,21,126,212,189,81,255,236,20,211,20,243,113,7,89,0,248,18,188,70,142,142,148,49,28,199,12,0,176,73,124,23,224,57,161,140,96,71,137,26,233,172,33,207,29,176,179,115,87,9,150,183,36,153,10,121,221,16,190,246,251,28,94,30,118,238,47,25,125,102,204,225,229,89,187,16,19,0,112,172,68,141,108,222,161,51,105,62,159,155,21,134,18,65,78,44,29,29,198,64,49,148,129,152,156,96,150,62,104,52,116,25,13,192,188,111,219,94,160,186,110,242,137,11,240,84,150,180,28,255,182,226,223,229,91,241,239,166,231,240,175,243,39,244,59,188,49,93,144,91,193,235,19,172,232,119,227,59,215,160,95,246,213,87,133,95,216,177,147,20,250,250,177,222,210,28,225,247,214,237,211,61,249,0,44,255,108,71,230,173,249,0,108,155,253,252,238,183,243,1,48,204,255,222,21,83,0,134,63,202,25,120,206,92,0,118,30,186,184,217,208,91,0,246,87,219,61,123,239,45,0,75,175,236,60,218,242,113,193,242,45,143,246,207,122,96,114,97,205,241,79,222,62,58,189,162,240,170,183,170,228,7,79,12,23,254,80,254,241,139,100,218,163,133,143,220,248,238,64,65,255,23,133,87,146,201,169,11,55,195,162,108,74,255,216,119,247,53,20,145,27,79,31,237,121,247,178,162,117,19,230,100,124,190,96,79,145,230,157,127,254,247,35,221,119,69,95,108,217,153,219,186,44,165,56,233,65,229,166,227,151,119,20,79,241,202,30,125,244,241,63,22,239,120,169,88,251,233,29,251,139,169,161,67,95,220,240,250,233,226,245,85,47,114,76,126,86,201,167,112,224,224,207,19,186,75,102,56,154,11,30,159,114,83,201,67,183,36,46,124,227,181,127,148,204,42,223,241,221,165,235,21,165,183,183,63,247,77,138,117,105,233,231,211,166,231,252,119,21,87,202,236,252,232,249,254,239,239,40,29,216,63,245,135,183,255,114,184,180,114,245,193,214,125,199,19,202,110,106,47,56,241,152,171,184,108,95,86,195,87,183,203,135,202,218,119,62,242,240,130,141,15,149,5,246,223,178,83,247,217,103,101,91,243,94,86,174,185,112,70,249,245,182,53,47,196,205,168,45,223,115,234,131,222,127,48,23,151,103,174,254,211,164,146,39,158,40,95,230,253,192,237,126,228,68,249,107,47,77,218,116,233,199,73,21,230,147,211,156,255,154,214,86,113,247,210,154,79,116,53,219,42,38,86,29,109,91,102,123,190,162,185,243,198,111,170,86,255,92,225,121,156,246,222,114,56,163,178,240,219,103,143,30,253,151,181,114,242,131,223,206,186,240,232,181,149,51,118,248,111,15,206,58,88,121,37,211,117,169,131,163,170,190,71,14,87,76,85,220,79,91,63,125,222,226,173,42,249,37,55,238,201,83,183,86,77,27,220,255,247,148,167,222,169,186,249,218,188,98,126,87,108,181,237,230,163,247,238,223,156,95,189,244,197,15,222,126,34,189,175,58,38,247,79,91,28,255,221,85,125,103,193,7,63,174,155,249,73,245,149,219,223,12,222,250,231,196,21,143,254,173,108,226,230,202,202,21,9,147,226,190,122,251,129,117,43,18,175,75,184,243,192,140,191,174,88,121,230,173,215,159,185,245,203,21,215,61,115,241,39,143,21,105,106,214,102,44,120,127,222,53,141,53,29,191,156,168,61,126,242,15,53,51,110,52,254,113,242,135,123,106,44,133,244,79,215,79,254,190,230,162,70,217,95,137,149,11,107,61,141,207,37,124,220,223,89,187,127,161,161,105,218,53,219,107,7,179,247,222,123,100,247,75,181,238,189,45,175,168,18,65,221,139,223,164,63,125,197,12,67,93,238,253,79,120,56,173,163,238,197,214,148,168,120,215,205,117,179,14,253,141,253,215,173,111,212,37,85,39,63,243,231,205,202,250,251,152,255,220,191,229,254,101,245,49,171,155,255,61,37,45,80,191,162,253,190,99,171,126,186,179,222,250,240,33,75,240,135,15,234,103,251,95,92,21,245,196,132,134,121,149,185,143,110,238,46,105,72,191,249,210,91,239,207,95,221,176,250,185,237,243,238,43,251,75,67,251,119,63,123,167,30,254,103,67,160,231,241,63,204,254,227,204,198,99,197,15,39,126,251,126,109,227,173,83,59,15,31,175,187,164,241,229,217,253,111,220,251,249,147,141,23,76,92,100,123,197,255,77,99,220,161,236,165,167,15,204,107,154,80,189,225,192,210,229,43,155,94,81,255,227,230,249,202,43,155,78,111,223,87,146,89,254,66,211,210,188,199,91,119,239,248,111,83,87,210,196,199,191,191,37,179,121,248,223,83,230,7,94,182,53,127,116,236,198,227,241,167,174,107,222,242,208,179,223,167,44,123,189,249,248,170,172,192,35,85,116,139,43,27,108,211,48,185,45,47,228,131,239,28,127,243,181,60,153,50,108,250,228,141,63,183,44,52,236,220,247,222,254,67,45,217,230,210,254,132,95,226,90,247,38,167,125,249,69,123,65,235,55,220,79,183,207,51,244,183,222,183,181,55,62,195,124,127,235,129,105,247,56,158,58,246,73,235,5,59,39,61,255,213,173,83,218,86,236,159,246,253,157,155,171,218,244,179,50,127,46,237,91,223,182,38,105,40,103,198,228,199,218,110,74,91,41,179,188,247,85,219,250,147,45,5,171,149,218,149,127,94,156,177,125,199,31,154,86,110,137,94,252,183,130,180,45,43,175,249,231,243,245,229,59,246,174,92,10,255,122,172,157,250,97,101,213,93,159,106,13,27,23,181,103,150,189,246,167,157,122,166,125,232,125,243,147,165,107,255,212,190,178,110,194,23,211,143,188,220,62,16,168,248,135,255,21,176,170,185,230,67,121,213,105,195,42,207,209,63,149,126,180,212,185,234,249,251,87,165,237,234,218,185,42,56,253,81,83,243,240,155,171,38,48,159,200,61,59,163,46,188,119,168,42,169,144,94,126,225,219,239,119,166,53,202,248,11,15,76,248,91,255,61,242,187,47,92,219,252,121,98,99,233,145,11,31,184,186,38,61,251,242,137,29,43,119,31,29,88,239,47,237,224,190,92,53,245,207,91,214,116,44,120,56,239,248,103,83,30,238,248,166,35,202,117,228,131,207,59,254,253,216,43,69,205,111,205,234,252,174,238,230,205,77,183,215,117,62,180,224,210,244,93,213,151,118,222,248,77,114,94,179,246,169,78,242,154,214,141,189,217,255,233,124,238,164,111,222,155,207,206,103,190,251,229,149,244,203,2,237,76,255,234,11,158,202,222,127,37,243,118,251,214,212,130,188,125,76,140,225,225,31,223,216,255,11,115,41,120,125,112,227,42,157,229,110,176,241,186,207,30,97,45,111,130,207,206,204,214,222,96,217,8,143,119,212,127,255,186,229,246,99,95,228,220,165,151,89,15,222,250,89,81,221,218,60,235,222,139,31,112,253,113,171,223,170,183,223,80,220,255,240,109,214,211,203,243,91,154,62,122,215,122,115,119,202,143,217,169,106,219,190,103,191,229,11,114,10,109,253,15,103,214,77,42,26,176,53,125,180,187,171,245,234,7,108,198,24,227,71,63,62,245,169,173,96,107,193,161,224,125,83,217,73,129,134,234,55,14,85,179,95,189,248,157,122,99,201,6,246,216,207,186,201,236,180,199,89,166,127,77,219,211,115,190,102,151,170,182,254,244,246,27,218,174,152,215,254,242,215,3,155,154,187,182,174,235,56,122,198,121,121,215,207,15,62,249,245,17,203,179,93,166,27,157,95,92,243,203,15,93,151,20,202,62,91,253,68,170,253,205,242,185,15,92,241,29,99,191,108,214,87,109,127,233,185,218,254,101,210,157,223,204,142,59,96,159,216,167,108,126,99,19,209,253,206,246,151,83,149,95,102,119,199,230,157,202,121,153,117,117,151,22,158,182,220,52,231,150,238,182,183,158,250,229,98,251,91,221,15,149,223,55,104,223,27,237,120,160,122,215,174,143,30,95,238,104,179,188,243,206,212,207,121,199,55,121,175,198,30,129,247,56,222,46,220,217,189,185,225,35,71,76,211,254,252,251,29,147,156,91,93,131,111,76,219,88,230,12,200,91,75,225,103,107,157,202,219,114,210,12,199,31,118,70,95,126,177,137,248,242,152,179,242,196,29,151,236,157,55,199,149,217,148,252,221,181,125,245,174,39,93,122,221,218,198,77,174,123,228,107,79,125,232,124,218,181,208,230,187,240,21,242,91,87,246,82,149,113,205,115,11,220,235,99,174,120,110,213,35,171,220,127,127,209,116,253,19,219,174,114,239,251,121,223,242,127,25,94,116,231,60,254,211,182,185,228,41,247,220,192,13,121,77,26,189,231,203,21,249,47,221,123,119,151,231,159,159,94,245,100,98,195,14,143,255,181,197,217,87,60,242,119,79,204,179,127,120,246,33,141,220,187,149,75,203,154,125,207,98,239,117,246,147,71,234,202,123,188,107,215,253,114,205,231,59,110,247,30,97,254,187,90,67,191,239,77,93,189,251,235,237,159,168,125,189,59,92,11,243,102,20,249,182,111,144,63,170,180,12,250,150,78,72,234,41,90,253,160,239,64,162,231,213,171,119,28,245,173,109,223,63,188,251,185,105,254,131,185,171,95,111,156,94,227,47,216,180,163,240,75,184,209,223,112,207,115,147,231,167,252,205,255,175,237,134,27,124,129,227,254,132,15,192,222,121,119,205,237,105,154,100,214,101,92,213,210,227,106,189,242,212,19,127,189,162,231,211,119,6,63,52,232,159,235,57,124,249,180,196,103,79,255,216,83,255,205,205,55,112,167,211,184,55,127,40,184,69,241,140,133,187,236,187,237,151,189,228,189,134,187,87,247,223,47,47,42,127,149,83,117,12,5,46,175,38,3,175,246,174,124,61,243,19,99,96,93,3,71,63,117,189,59,240,58,255,162,246,175,31,221,18,160,235,6,238,253,180,229,237,192,37,119,52,95,61,243,184,138,159,180,255,135,15,122,130,102,126,234,32,223,248,218,63,130,252,77,215,254,253,139,117,37,247,242,214,51,207,234,31,138,249,152,95,242,76,96,237,7,43,38,7,85,15,212,28,121,243,207,229,65,187,231,42,21,123,199,112,112,143,178,175,250,244,193,71,130,223,188,60,233,147,83,212,23,193,183,79,87,222,183,38,31,246,110,89,182,179,101,118,125,67,111,70,245,254,175,63,179,95,214,251,36,51,232,60,178,247,153,222,201,171,183,220,186,232,221,111,123,219,118,100,108,238,61,152,220,231,223,240,75,90,3,213,209,55,95,255,212,142,73,150,63,246,61,184,230,171,231,174,203,219,223,215,126,211,231,134,229,101,167,251,126,126,86,173,217,255,111,125,255,227,223,54,164,228,221,109,239,191,61,243,158,135,55,253,241,198,126,251,133,229,254,236,161,127,244,19,63,180,31,200,159,161,24,88,159,197,175,157,248,201,146,1,221,206,187,50,42,99,185,129,165,251,175,90,124,243,182,59,6,170,6,251,162,95,52,28,30,240,239,250,67,215,201,157,9,131,91,154,211,134,23,71,21,15,250,238,51,117,254,97,243,69,131,172,123,238,144,49,231,161,193,181,37,169,51,232,139,63,27,188,176,245,71,77,209,63,167,95,244,254,53,121,217,95,30,172,185,232,31,75,47,35,255,73,93,124,81,241,229,139,54,28,41,124,226,162,74,211,47,15,169,92,39,46,234,144,15,222,244,218,197,73,67,63,92,58,181,56,255,206,214,161,255,54,28,116,93,166,220,54,100,90,248,220,190,123,163,159,31,122,241,187,192,227,77,177,63,15,253,244,205,182,174,93,53,25,171,23,95,51,125,143,235,42,235,234,232,165,154,7,229,125,215,174,174,220,146,210,190,127,251,107,171,31,252,241,186,220,83,51,169,53,59,130,96,211,146,163,57,107,168,63,130,123,42,62,240,172,249,100,229,242,242,21,247,220,186,230,61,238,245,153,159,54,188,179,102,219,86,250,232,140,133,177,107,159,120,119,189,183,54,47,127,109,202,182,185,47,127,182,191,119,109,22,191,107,201,156,139,118,173,221,185,255,203,139,191,61,240,241,218,255,119,254,24,5,133,93,60,32,85,171,6,12,0,224,22,2,111,160,148,240,62,2,27,69,36,252,22,129,149,13,9,191,66,96,69,79,194,7,9,124,112,84,194,243,201,209,241,151,145,216,165,35,241,43,255,0,32,128,249,218,59,246,2,21,65,0,243,238,59,247,2,213,101,80,74,228,14,10,159,72,250,221,150,148,40,241,5,182,164,140,31,225,215,194,255,143,255,101,112,193,0,111,205,96,45,122,163,62,215,104,201,206,54,90,217,46,93,102,151,37,71,151,197,100,153,186,178,108,58,163,37,215,100,50,102,154,50,187,244,198,140,179,253,33,98,165,32,157,11,252,222,164,198,115,228,1,166,52,170,145,22,127,90,134,27,84,56,214,132,225,104,249,232,112,1,107,198,60,49,140,22,85,28,104,119,18,215,33,121,205,72,246,178,125,29,110,214,155,114,160,65,141,86,17,206,208,216,235,143,168,117,250,188,208,237,240,56,120,200,246,91,89,214,198,218,130,35,254,26,89,175,13,250,186,96,55,219,15,241,241,103,158,99,28,110,65,11,11,169,106,129,145,87,62,143,135,113,251,188,44,116,179,140,77,120,19,8,114,156,207,206,32,95,34,97,137,32,85,14,186,216,1,232,9,6,120,104,97,97,151,195,235,224,89,152,108,247,241,176,154,169,22,148,224,69,25,105,14,111,87,74,196,114,126,136,50,33,54,239,19,226,50,208,27,244,88,88,78,200,3,109,20,11,132,167,44,105,117,86,159,151,231,124,238,17,186,97,114,123,48,51,51,51,51,77,248,209,21,167,192,46,129,95,176,175,219,225,102,161,159,225,144,145,64,138,45,81,33,158,25,71,62,96,177,34,42,230,29,238,58,70,250,24,7,73,8,23,61,68,127,167,182,51,244,140,202,22,66,14,27,235,229,71,190,75,237,20,184,209,185,186,243,172,87,171,194,94,229,117,22,173,40,62,139,120,148,240,88,1,184,84,99,132,120,161,207,226,100,173,252,88,145,220,142,0,15,25,30,186,29,94,22,66,171,207,29,244,120,33,24,241,144,52,179,5,107,214,243,90,240,138,129,84,114,126,192,207,230,193,212,145,186,3,0,148,182,224,213,3,201,170,50,250,91,111,208,237,30,253,61,223,162,70,30,89,254,223,13,244,200,63,42,234,151,59,90,212,232,20,255,135,4,246,28,36,225,79,68,47,100,18,254,87,68,248,127,8,188,210,45,225,31,196,129,31,90,25,239,2,212,24,57,214,207,177,1,161,122,109,144,9,64,6,150,51,189,76,189,149,115,248,121,177,181,72,188,172,105,85,163,21,45,198,45,76,64,3,16,123,2,96,109,225,171,234,85,255,139,252,72,235,99,2,158,52,139,195,107,179,179,222,48,155,188,180,187,127,87,171,26,116,137,43,142,113,34,13,210,24,43,45,224,226,149,160,200,5,92,216,89,237,243,178,226,2,110,168,173,224,21,102,187,143,115,12,10,195,140,192,123,236,183,0,63,226,222,228,97,61,62,110,224,236,225,168,203,225,102,131,222,64,208,239,247,113,60,107,243,249,89,14,251,187,69,238,155,185,160,159,103,109,146,25,0,183,90,222,231,131,110,223,72,63,22,82,240,50,30,86,120,239,97,188,3,66,155,118,5,172,156,47,16,72,179,177,189,14,43,139,222,8,221,140,67,31,218,88,198,230,246,89,93,120,201,28,173,32,10,105,64,75,48,48,192,177,216,122,141,0,122,139,178,99,56,59,43,160,192,64,128,103,61,104,104,98,66,99,108,128,101,93,2,123,130,94,225,41,148,158,215,7,3,188,143,99,236,44,12,248,25,43,219,199,9,195,226,32,203,249,120,135,135,181,9,195,140,84,4,27,195,51,210,51,114,166,43,244,84,161,72,194,144,204,184,89,232,101,249,62,31,231,194,116,118,51,94,155,59,156,28,183,207,231,23,138,231,240,218,28,28,139,61,31,227,105,32,153,77,183,167,195,192,128,7,113,64,248,46,69,104,131,105,62,175,123,0,134,165,224,227,66,180,122,88,155,35,232,193,9,249,184,1,228,187,9,121,228,115,8,141,60,244,30,187,116,10,193,145,122,235,243,5,221,54,136,172,42,172,151,119,240,3,80,106,247,108,191,35,192,7,44,156,207,197,122,161,223,225,103,165,82,217,124,125,94,113,67,49,118,21,213,203,56,220,2,31,165,151,14,47,12,6,88,33,200,234,243,122,81,251,17,31,132,28,25,11,106,58,82,106,97,254,189,187,125,1,62,28,135,69,18,250,46,63,10,119,5,3,172,205,207,114,200,168,236,243,66,27,235,117,176,54,177,12,66,222,104,82,65,199,104,92,14,175,13,251,6,38,196,191,185,0,0,209,188,130,60,166,73,86,108,97,142,175,112,120,109,43,2,194,52,51,218,155,90,13,0,160,54,204,3,93,157,48,190,36,251,2,184,223,192,80,255,122,112,21,30,87,143,89,70,123,189,10,240,54,212,175,253,140,215,97,117,97,193,230,205,85,120,229,187,134,196,227,89,227,72,215,42,8,6,120,159,7,187,142,30,69,71,61,250,46,172,15,175,16,122,239,138,32,191,162,171,10,245,218,17,167,207,69,190,174,178,145,126,105,22,251,101,165,35,192,55,248,124,149,62,175,93,244,223,92,44,246,201,6,159,175,138,241,14,84,10,61,178,64,232,145,108,160,16,117,201,64,161,216,9,139,66,157,80,136,147,31,12,12,212,137,93,80,120,22,222,9,41,11,253,175,56,212,92,107,133,238,87,36,246,190,106,31,95,47,118,187,122,220,132,139,131,110,119,179,208,217,218,88,206,215,32,244,181,21,65,94,36,172,144,225,25,241,17,251,67,16,186,87,53,110,57,66,6,165,168,111,141,100,85,233,243,249,235,88,198,182,194,235,30,24,121,91,40,53,251,106,31,95,36,244,141,178,128,57,252,221,8,104,22,122,67,190,80,80,51,238,5,69,168,19,228,163,78,80,227,240,75,121,23,250,250,188,102,155,141,19,34,75,173,95,192,101,222,198,0,91,237,227,11,164,118,95,16,106,178,102,220,236,197,4,26,71,90,121,169,47,192,135,193,145,24,117,66,155,15,135,168,201,215,132,154,124,33,106,241,213,62,190,88,104,233,35,93,58,16,180,90,217,64,160,43,232,70,171,244,9,162,117,90,45,254,77,20,113,172,56,159,76,22,219,180,74,124,22,254,226,197,176,137,162,69,217,36,90,114,166,136,223,70,137,59,36,212,226,187,105,226,247,177,226,9,55,161,63,205,16,223,169,69,139,220,100,49,143,68,241,59,149,152,190,121,149,26,100,174,82,131,217,171,212,32,110,149,26,156,110,87,131,47,219,213,224,221,118,53,56,208,174,6,79,183,171,193,221,237,106,112,99,187,26,92,213,254,255,99,237,138,65,171,230,162,240,215,246,111,121,253,251,176,31,109,71,133,128,75,75,125,33,201,107,181,8,14,130,46,214,169,72,193,220,120,239,203,203,187,190,62,136,201,35,201,179,86,43,138,163,29,156,68,92,196,14,46,226,32,184,10,210,161,56,56,185,234,82,186,138,155,131,110,146,151,68,30,206,14,135,36,112,14,225,124,231,222,115,191,3,135,115,137,251,30,177,229,17,215,61,98,221,35,214,60,98,206,35,190,8,226,64,16,175,5,241,66,16,79,5,177,39,136,123,130,232,8,98,93,16,23,4,97,9,226,164,32,22,4,241,203,37,190,185,196,87,151,56,116,137,183,46,241,202,37,158,184,196,35,151,216,118,137,142,91,112,170,10,203,217,82,230,202,239,10,15,150,62,253,95,250,87,61,235,35,49,56,81,250,95,225,93,43,109,103,74,169,240,173,151,250,181,210,166,94,254,115,126,68,183,194,112,178,124,111,182,136,211,45,98,174,69,76,180,136,31,138,56,86,196,103,69,28,42,226,189,34,222,40,98,95,17,207,20,241,88,17,15,21,145,42,162,171,136,77,69,92,82,196,89,69,24,138,88,80,196,180,34,198,20,241,83,18,223,37,113,44,137,79,146,248,32,137,119,146,216,151,196,115,73,236,73,226,129,36,250,146,184,33,137,13,73,64,18,151,37,113,94,18,171,146,88,148,196,149,116,51,231,34,195,105,177,71,237,2,215,42,79,94,245,239,238,24,189,40,205,134,183,12,108,249,169,209,79,244,237,94,60,72,195,29,163,173,243,67,40,238,165,113,164,59,5,239,253,71,157,144,113,20,104,21,232,48,108,216,166,189,246,23,247,178,2,66,230,177,156,40,214,120,162,117,148,37,126,148,25,121,213,4,188,12,10,46,93,233,237,14,167,186,94,60,250,120,128,153,177,107,216,157,238,39,113,103,16,232,36,29,175,133,126,212,29,248,93,61,246,223,198,32,205,80,239,39,113,190,77,117,167,209,222,153,152,28,86,184,167,108,243,156,109,218,198,226,159,74,215,112,44,167,217,176,214,26,86,115,105,106,219,15,147,65,58,101,153,78,211,108,214,71,105,227,188,101,58,166,109,89,198,162,179,98,173,234,192,105,175,44,225,204,108,150,39,226,76,221,212,69,7,194,248,242,236,173,34,121,55,186,97,220,246,195,116,185,150,246,186,81,67,223,201,126,7,0,0,255,255,69,251,74,199]); diff --git a/metaplex/token-metadata/Cargo.lock b/metaplex/token-metadata/Cargo.lock index 39c73a5..71d658d 100644 --- a/metaplex/token-metadata/Cargo.lock +++ b/metaplex/token-metadata/Cargo.lock @@ -124,6 +124,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + [[package]] name = "bytes" version = "1.5.0" @@ -145,6 +151,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + [[package]] name = "either" version = "1.9.0" @@ -240,6 +256,22 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -503,6 +535,18 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" + [[package]] name = "serde" version = "1.0.192" @@ -512,6 +556,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_derive" version = "1.0.192" @@ -523,6 +578,17 @@ dependencies = [ "syn 2.0.39", ] +[[package]] +name = "serde_json" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0652c533506ad7a2e353cce269330d6afd8bdfb6d75e0ace5b35aacbd7b9e9" +dependencies = [ + "itoa", + "ryu", + "serde", +] + [[package]] name = "substreams" version = "0.5.12" @@ -596,11 +662,16 @@ dependencies = [ "bs58 0.5.0", "bytes", "chrono", + "console_error_panic_hook", "num-bigint", "prost", + "serde", + "serde-wasm-bindgen", + "serde_json", "substreams", "substreams-solana", "substreams-solana-program-instructions", + "wasm-bindgen", ] [[package]] @@ -728,6 +799,66 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + [[package]] name = "which" version = "4.4.2" diff --git a/metaplex/token-metadata/Cargo.toml b/metaplex/token-metadata/Cargo.toml index 2f6f2cb..2de6bdb 100644 --- a/metaplex/token-metadata/Cargo.toml +++ b/metaplex/token-metadata/Cargo.toml @@ -4,7 +4,7 @@ version = "1.0.0" edition = "2021" [lib] -name = "substreams" +name = "metaplex_token_metadata" crate-type = ["cdylib"] [dependencies] @@ -18,6 +18,11 @@ bs58 = "0.5.0" base64 = "0.21.5" borsh = { version = "0.10.3"} chrono = { version = "0.4", features = [ "std" ], default-features = false } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +wasm-bindgen = { version = "0.2", features = ["serde-serialize"] } +serde-wasm-bindgen = "0.5" +console_error_panic_hook = "0.1" [profile.release] lto = true diff --git a/metaplex/token-metadata/Makefile b/metaplex/token-metadata/Makefile index bee2d04..81310f1 100644 --- a/metaplex/token-metadata/Makefile +++ b/metaplex/token-metadata/Makefile @@ -14,4 +14,13 @@ protogen: .PHONY: package package: - substreams pack ./substreams.yaml \ No newline at end of file + substreams pack ./substreams.yaml + +.PHONY wasm_pack: +wasm_pack: + wasm-pack build --no-typescript --target no-modules + +.PHONY convert_and_gcloud_upload: +convert_and_gcloud_upload: + go build utils/convert.go && mv convert utils/convert + utils/script.sh metaplex_token_metadata \ No newline at end of file diff --git a/metaplex/token-metadata/index.html b/metaplex/token-metadata/index.html new file mode 100644 index 0000000..b6da2c0 --- /dev/null +++ b/metaplex/token-metadata/index.html @@ -0,0 +1,21 @@ + + + + + + hello-wasm example + + + + + + + \ No newline at end of file diff --git a/metaplex/token-metadata/proto/main.proto b/metaplex/token-metadata/proto/main.proto index ac88098..9131a76 100644 --- a/metaplex/token-metadata/proto/main.proto +++ b/metaplex/token-metadata/proto/main.proto @@ -3,12 +3,12 @@ syntax = "proto2"; package sf.solana.block_meta.v1; message PbApproveUseAuthorityArgsLayout { - required uint64 numberOfUses = 1; + required string numberOfUses = 1; } message PbBurnArgsLayout { required string name = 1; - required uint64 amount = 2; + required string amount = 2; } message PbCreatorLayout { @@ -24,13 +24,14 @@ message PbCollectionLayout { message PbUsesLayout { required string useMethod = 1; - required uint64 remaining = 2; - required uint64 total = 3; + required string remaining = 2; + required string total = 3; } message PbCollectionDetailsLayout { required string name = 1; - required uint64 size = 2; + optional string size = 2; + repeated uint32 padding = 3; } message PbAssetDataLayout { @@ -50,7 +51,7 @@ message PbAssetDataLayout { message PbPrintSupplyLayout { required string name = 1; - optional uint64 val = 2; + optional string val = 2; } message PbCreateArgsLayout { @@ -61,7 +62,7 @@ message PbCreateArgsLayout { } message PbCreateMasterEditionArgsLayout { - optional uint64 maxSupply = 1; + optional string maxSupply = 1; } message PbDataLayout { @@ -115,7 +116,7 @@ message PbPayloadTypeLayout { optional string valPubKey = 2; optional PbSeedsVecLayout valSeedsVec = 3; optional PbLeafInfoLayout valLeafInfo = 4; - optional uint64 valInt64 = 5; + optional string valInt64 = 5; } message PbMapItemLayout { @@ -134,7 +135,7 @@ message PbAuthorizationDataLayout { message PbDelegateArgsLayout { required string name = 1; optional PbAuthorizationDataLayout authorization_data = 2; - optional uint64 amount = 3; + optional string amount = 3; optional string locked_address = 4; } @@ -155,16 +156,16 @@ message PbMigrateArgsLayout { message PbMintArgsLayout { required string name = 1; - optional uint64 amount = 2; + optional string amount = 2; optional PbAuthorizationDataLayout authorization_data = 3; } message PbMintNewEditionFromMasterEditionViaTokenArgsLayout { - required uint64 edition = 1; + required string edition = 1; } message PbMintPrintingTokensViaTokenArgsLayout { - required uint64 supply = 1; + required string supply = 1; } message PbRevokeArgsLayout { @@ -172,30 +173,30 @@ message PbRevokeArgsLayout { } message PbSetCollectionSizeArgsLayout { - required uint64 size = 1; + required string size = 1; } message PbReservationLayout { required string address = 1; - required uint64 spotsRemaining = 2; - required uint64 totalSpots = 3; + required string spotsRemaining = 2; + required string totalSpots = 3; } message PbSetReservationListArgsLayout { repeated PbReservationLayout reservations = 1; - optional uint64 totalReservationSpots = 2; - required uint64 offset = 3; - required uint64 totalSpotOffset = 4; + optional string totalReservationSpots = 2; + required string offset = 3; + required string totalSpotOffset = 4; } message PbTransferArgsLayout { required string name = 1; - optional uint64 amount = 2; + optional string amount = 2; optional PbAuthorizationDataLayout authorization_data = 3; } message PbTransferOutOfEscrowArgsLayout { - required uint64 amount = 1; + required string amount = 1; } message PbUnlockArgsLayout { @@ -256,7 +257,7 @@ message PbUseArgsLayout { } message PbUtilizeArgsLayout { - required uint64 numberOfUses = 1; + required string numberOfUses = 1; } message PbVerificationArgsLayout { diff --git a/metaplex/token-metadata/src/instructions/structs.rs b/metaplex/token-metadata/src/instructions/structs.rs index 0ec3de5..e2e67a1 100644 --- a/metaplex/token-metadata/src/instructions/structs.rs +++ b/metaplex/token-metadata/src/instructions/structs.rs @@ -57,6 +57,7 @@ pub enum TokenStandardLayout { Fungible, NonFungibleEdition, ProgrammableNonFungible, + ProgrammableNonFungibleEdition, } impl TokenStandardLayout { @@ -79,6 +80,9 @@ impl TokenStandardLayout { TokenStandardLayout::ProgrammableNonFungible => { result = "ProgrammableNonFungible".to_string(); } + TokenStandardLayout::ProgrammableNonFungibleEdition => { + result = "ProgrammableNonFungibleEdition".to_string(); + } } return result; @@ -134,43 +138,45 @@ impl UsesLayout { pub fn to_proto_struct(&self) -> PbUsesLayout { PbUsesLayout { use_method: self.useMethod.to_proto_struct(), - remaining: self.remaining, - total: self.total, + remaining: self.remaining.to_string(), + total: self.total.to_string(), } } } -#[derive(BorshDeserialize, Debug, Default)] -pub enum CollectionDetailsLayoutName { - #[default] - V1, +#[derive(BorshDeserialize, Debug)] +pub enum CollectionDetailsLayout { + V1 { size: u64 }, + V2 { padding: [u8; 8] }, } -impl CollectionDetailsLayoutName { - pub fn to_proto_struct(&self) -> String { - let mut result = "".to_string(); - - match self { - CollectionDetailsLayoutName::V1 => { - result = "V1".to_string(); - } - } - - result +impl Default for CollectionDetailsLayout { + fn default() -> Self { + CollectionDetailsLayout::V1 { size: 0 } } } -#[derive(BorshDeserialize, Debug, Default)] -pub struct CollectionDetailsLayout { - pub name: CollectionDetailsLayoutName, - pub size: u64, -} - impl CollectionDetailsLayout { pub fn to_proto_struct(&self) -> PbCollectionDetailsLayout { + let mut name: String = "".to_string(); + let mut size: Option = None; + let mut padding: Vec = vec![]; + + match self { + CollectionDetailsLayout::V1 { size: _size } => { + name = "V1".to_string(); + size = Some(_size.to_string()); + } + CollectionDetailsLayout::V2 { padding: _padding } => { + name = "V2".to_string(); + padding = _padding.iter().map(|x| *x as u32).collect(); + } + } + PbCollectionDetailsLayout { - name: self.name.to_proto_struct(), - size: self.size, + name: name, + size: size, + padding: padding.to_vec(), } } } @@ -311,7 +317,7 @@ impl PayloadTypeLayout { let mut val_pub_key = None; let mut val_seeds_vec = None; let mut val_leaf_info = None; - let mut val_int64 = None; + let mut val_int64: Option = None; match &self.name { PayloadTypeLayoutName::Pubkey { val: value } => { @@ -328,7 +334,7 @@ impl PayloadTypeLayout { } PayloadTypeLayoutName::Number { val: value } => { name = "Number".to_string(); - val_int64 = Some(*value); + val_int64 = Some(value.to_string()); } } @@ -453,7 +459,7 @@ pub struct PrintSupplyLayout { impl PrintSupplyLayout { pub fn to_proto_struct(&self) -> PbPrintSupplyLayout { let mut name: String = "Zero".to_string(); - let mut val = None; + let mut val: Option = None; match &self.name { PrintSupplyLayoutName::Zero => { @@ -461,7 +467,7 @@ impl PrintSupplyLayout { } PrintSupplyLayoutName::Limited { val: value } => { name = "Limited".to_string(); - val = Some(*value); + val = Some(value.to_string()); } PrintSupplyLayoutName::Unlimited => { name = "Unlimited".to_string(); @@ -674,8 +680,12 @@ pub struct CreateMasterEditionArgsLayout { impl CreateMasterEditionArgsLayout { pub fn to_proto_struct(&self) -> PbCreateMasterEditionArgsLayout { + let mut max_supply: Option = None; + if self.maxSupply.is_some() { + max_supply = Some(self.maxSupply.unwrap().to_string()); + } PbCreateMasterEditionArgsLayout { - max_supply: self.maxSupply, + max_supply: max_supply, } } } @@ -691,8 +701,8 @@ impl ReservationLayout { pub fn to_proto_struct(&self) -> PbReservationLayout { PbReservationLayout { address: self.address.to_proto_struct(), - spots_remaining: self.spotsRemaining, - total_spots: self.totalSpots, + spots_remaining: self.spotsRemaining.to_string(), + total_spots: self.totalSpots.to_string(), } } } @@ -713,12 +723,16 @@ impl SetReservationListArgsLayout { reservations.push(x.to_proto_struct()); } } + let mut total_reservation_spots: Option = None; + if self.totalReservationSpots.is_some() { + total_reservation_spots = Some(self.totalReservationSpots.unwrap().to_string()); + } PbSetReservationListArgsLayout { reservations: reservations, - total_reservation_spots: self.totalReservationSpots, - offset: self.offset, - total_spot_offset: self.totalSpotOffset, + total_reservation_spots: total_reservation_spots, + offset: self.offset.to_string(), + total_spot_offset: self.totalSpotOffset.to_string(), } } } @@ -731,7 +745,7 @@ pub struct MintPrintingTokensViaTokenArgsLayout { impl MintPrintingTokensViaTokenArgsLayout { pub fn to_proto_struct(&self) -> PbMintPrintingTokensViaTokenArgsLayout { PbMintPrintingTokensViaTokenArgsLayout { - supply: self.supply, + supply: self.supply.to_string(), } } } @@ -744,7 +758,7 @@ pub struct MintNewEditionFromMasterEditionViaTokenArgsLayout { impl MintNewEditionFromMasterEditionViaTokenArgsLayout { pub fn to_proto_struct(&self) -> PbMintNewEditionFromMasterEditionViaTokenArgsLayout { PbMintNewEditionFromMasterEditionViaTokenArgsLayout { - edition: self.edition, + edition: self.edition.to_string(), } } } @@ -843,7 +857,7 @@ pub struct UtilizeArgsLayout { impl UtilizeArgsLayout { pub fn to_proto_struct(&self) -> PbUtilizeArgsLayout { PbUtilizeArgsLayout { - number_of_uses: self.numberOfUses, + number_of_uses: self.numberOfUses.to_string(), } } } @@ -856,7 +870,7 @@ pub struct ApproveUseAuthorityArgsLayout { impl ApproveUseAuthorityArgsLayout { pub fn to_proto_struct(&self) -> PbApproveUseAuthorityArgsLayout { PbApproveUseAuthorityArgsLayout { - number_of_uses: self.numberOfUses, + number_of_uses: self.numberOfUses.to_string(), } } } @@ -890,7 +904,9 @@ pub struct SetCollectionSizeArgsLayout { impl SetCollectionSizeArgsLayout { pub fn to_proto_struct(&self) -> PbSetCollectionSizeArgsLayout { - PbSetCollectionSizeArgsLayout { size: self.size } + PbSetCollectionSizeArgsLayout { + size: self.size.to_string(), + } } } @@ -902,7 +918,7 @@ pub struct TransferOutOfEscrowArgsLayout { impl TransferOutOfEscrowArgsLayout { pub fn to_proto_struct(&self) -> PbTransferOutOfEscrowArgsLayout { PbTransferOutOfEscrowArgsLayout { - amount: self.amount, + amount: self.amount.to_string(), } } } @@ -937,7 +953,7 @@ impl BurnArgsLayout { PbBurnArgsLayout { name: name, - amount: amount.unwrap(), + amount: amount.unwrap_or_default().to_string(), } } } @@ -996,7 +1012,7 @@ pub struct MintArgsLayout { impl MintArgsLayout { pub fn to_proto_struct(&self) -> PbMintArgsLayout { let mut name = "".to_string(); - let mut amount: Option = None; + let mut amount: Option = None; let mut authorization_data = None; match &self.name { @@ -1005,7 +1021,7 @@ impl MintArgsLayout { authorization_data: auth_data, } => { name = "V1".to_string(); - amount = Some(*amt); + amount = Some(amt.to_string()); if auth_data.is_some() { authorization_data = Some(auth_data.as_ref().unwrap().to_proto_struct()); } @@ -1067,6 +1083,9 @@ pub enum DelegateArgsLayoutName { ProgrammableConfigItemV1 { authorization_data: Option, }, + PrintDelegateV1 { + authorization_data: Option, + }, } impl Default for DelegateArgsLayoutName { @@ -1086,7 +1105,7 @@ impl DelegateArgsLayout { pub fn to_proto_struct(&self) -> PbDelegateArgsLayout { let mut name = "".to_string(); let mut authorization_data = None; - let mut amount: Option = None; + let mut amount: Option = None; let mut locked_address = None; match &self.name { @@ -1103,7 +1122,7 @@ impl DelegateArgsLayout { authorization_data: auth_data, } => { name = "SaleV1".to_string(); - amount = Some(*amt); + amount = Some(amt.to_string()); if auth_data.is_some() { authorization_data = Some(auth_data.as_ref().unwrap().to_proto_struct()); } @@ -1113,7 +1132,7 @@ impl DelegateArgsLayout { authorization_data: auth_data, } => { name = "TransferV1".to_string(); - amount = Some(*amt); + amount = Some(amt.to_string()); if auth_data.is_some() { authorization_data = Some(auth_data.as_ref().unwrap().to_proto_struct()); } @@ -1131,7 +1150,7 @@ impl DelegateArgsLayout { authorization_data: auth_data, } => { name = "UtilityV1".to_string(); - amount = Some(*amt); + amount = Some(amt.to_string()); if auth_data.is_some() { authorization_data = Some(auth_data.as_ref().unwrap().to_proto_struct()); } @@ -1141,14 +1160,14 @@ impl DelegateArgsLayout { authorization_data: auth_data, } => { name = "StakingV1".to_string(); - amount = Some(*amt); + amount = Some(amt.to_string()); if auth_data.is_some() { authorization_data = Some(auth_data.as_ref().unwrap().to_proto_struct()); } } DelegateArgsLayoutName::StandardV1 { amount: amt } => { name = "StandardV1".to_string(); - amount = Some(*amt); + amount = Some(amt.to_string()); } DelegateArgsLayoutName::LockedTransferV1 { amount: amt, @@ -1201,6 +1220,14 @@ impl DelegateArgsLayout { authorization_data = Some(auth_data.as_ref().unwrap().to_proto_struct()); } } + DelegateArgsLayoutName::PrintDelegateV1 { + authorization_data: auth_date, + } => { + name = "PrintDelegateV1".to_string(); + if auth_date.is_some() { + authorization_data = Some(auth_date.as_ref().unwrap().to_proto_struct()); + } + } } PbDelegateArgsLayout { @@ -1474,7 +1501,7 @@ pub struct TransferArgsLayout { impl TransferArgsLayout { pub fn to_proto_struct(&self) -> PbTransferArgsLayout { let mut name = "".to_string(); - let mut amount: Option = None; + let mut amount: Option = None; let mut authorization_data = None; match &self.name { @@ -1483,7 +1510,7 @@ impl TransferArgsLayout { authorization_data: auth_data, } => { name = "V1".to_string(); - amount = Some(*amt); + amount = Some(amt.to_string()); if auth_data.is_some() { authorization_data = Some(auth_data.as_ref().unwrap().to_proto_struct()); } diff --git a/metaplex/token-metadata/src/lib.rs b/metaplex/token-metadata/src/lib.rs index 8dc28ca..1564ce6 100644 --- a/metaplex/token-metadata/src/lib.rs +++ b/metaplex/token-metadata/src/lib.rs @@ -7,108 +7,46 @@ mod instructions; mod pb; mod prepare_arg; mod prepare_input_accounts; -mod utils; -use pb::sf::solana::block_meta::v1::{Arg, Output, TokenMetadataMeta}; +use pb::sf::solana::block_meta::v1::{Arg, InputAccounts}; use prepare_arg::prepare_arg; use prepare_input_accounts::prepare_input_accounts; -use substreams::log; -use substreams_solana::pb::sf::solana::r#type::v1::Block; -use utils::convert_to_date; -#[substreams::handlers::map] -fn map_block(block: Block) -> Result { - let slot = block.slot; - let parent_slot = block.parent_slot; - let timestamp = block.block_time.as_ref().unwrap().timestamp; +use serde_wasm_bindgen; +use std::panic; +use wasm_bindgen::prelude::*; - let mut data: Vec = vec![]; +use serde::Serialize; - for trx in block.transactions_owned() { - let accounts = trx.resolved_accounts_as_strings(); - if let Some(transaction) = trx.transaction { - let msg = transaction.message.unwrap(); - let meta = trx.meta.unwrap(); +#[wasm_bindgen(start)] +pub fn run() { + panic::set_hook(Box::new(console_error_panic_hook::hook)); +} - for (idx, inst) in msg.instructions.into_iter().enumerate() { - let program = &accounts[inst.program_id_index as usize]; - let tx_id = bs58::encode(&transaction.signatures[0]).into_string(); - let parsed_arg_data = get_arg(program, inst.data, tx_id.clone()); - if parsed_arg_data.is_some() { - let mut tokenMetadataMeta: TokenMetadataMeta = TokenMetadataMeta::default(); - tokenMetadataMeta.args = parsed_arg_data.unwrap(); - tokenMetadataMeta.instruction_type = - tokenMetadataMeta.args.instruction_type.clone(); - tokenMetadataMeta.input_accounts = prepare_input_accounts( - tokenMetadataMeta.args.instruction_type.clone(), - &inst.accounts, - &accounts, - ); +#[derive(Serialize)] +struct Instruction { + joinKey: String, + arg: Arg, + inputAccounts: InputAccounts, +} - tokenMetadataMeta.block_date = convert_to_date(timestamp); - tokenMetadataMeta.block_time = timestamp; - tokenMetadataMeta.block_slot = slot; - tokenMetadataMeta.tx_id = tx_id.clone(); - tokenMetadataMeta.dapp = constants::TOKEN_METADATA_PROGRAM_ADDRESS.to_string(); - tokenMetadataMeta.instruction_index = idx as u32; - tokenMetadataMeta.is_inner_instruction = false; - tokenMetadataMeta.inner_instruction_index = 0; - data.push(tokenMetadataMeta); - } +#[wasm_bindgen] +pub fn parse(join_key: &str, base58_str: &str, accounts_js: JsValue) -> JsValue { + let decoded_bytes: Vec = bs58::decode(base58_str).into_vec().unwrap(); + let accounts: Vec = accounts_js.into_serde().unwrap(); - meta.inner_instructions - .iter() - .filter(|inner_instruction| inner_instruction.index == idx as u32) - .for_each(|inner_instruction| { - inner_instruction.instructions.iter().enumerate().for_each( - |(inner_idx, inner_inst)| { - let program = &accounts[inner_inst.program_id_index as usize]; - let parsed_arg_data = - get_arg(program, inner_inst.data.clone(), tx_id.clone()); - if parsed_arg_data.is_some() { - let mut tokenMetadataMeta: TokenMetadataMeta = - TokenMetadataMeta::default(); - tokenMetadataMeta.args = parsed_arg_data.unwrap(); - tokenMetadataMeta.instruction_type = - tokenMetadataMeta.args.instruction_type.clone(); - tokenMetadataMeta.input_accounts = prepare_input_accounts( - tokenMetadataMeta.args.instruction_type.clone(), - &inner_inst.accounts, - &accounts, - ); + let mut instruction: Instruction = parse_instruction(decoded_bytes, &accounts); - tokenMetadataMeta.block_date = convert_to_date(timestamp); - tokenMetadataMeta.block_time = timestamp; - tokenMetadataMeta.block_slot = slot; - tokenMetadataMeta.tx_id = tx_id.clone(); - tokenMetadataMeta.dapp = - constants::TOKEN_METADATA_PROGRAM_ADDRESS.to_string(); - tokenMetadataMeta.instruction_index = idx as u32; - tokenMetadataMeta.is_inner_instruction = true; - tokenMetadataMeta.inner_instruction_index = inner_idx as u32; - data.push(tokenMetadataMeta); - } - }, - ); - }); - } - } - } - - log::info!("{:#?}", slot); - Ok(Output { data }) + instruction.joinKey = join_key.to_string(); + serde_wasm_bindgen::to_value(&instruction).unwrap() } -fn get_arg(program: &String, instruction_data: Vec, tx_id: String) -> Option { - let mut result = None; - - if program - .to_string() - .ne(constants::TOKEN_METADATA_PROGRAM_ADDRESS) - { - return result; - } else { - result = Some(prepare_arg(instruction_data, tx_id)); - return result; +fn parse_instruction(instruction_data: Vec, accounts: &Vec) -> Instruction { + let arg = prepare_arg(instruction_data); + let input_accounts = prepare_input_accounts(arg.instruction_type.clone(), accounts); + Instruction { + joinKey: "".to_string(), + arg: arg, + inputAccounts: input_accounts, } } diff --git a/metaplex/token-metadata/src/pb/sf.solana.block_meta.v1.rs b/metaplex/token-metadata/src/pb/sf.solana.block_meta.v1.rs index 385abc2..48bc511 100644 --- a/metaplex/token-metadata/src/pb/sf.solana.block_meta.v1.rs +++ b/metaplex/token-metadata/src/pb/sf.solana.block_meta.v1.rs @@ -1,692 +1,703 @@ +use serde::Serialize; + // @generated #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbApproveUseAuthorityArgsLayout { - #[prost(uint64, required, tag="1")] - pub number_of_uses: u64, + #[prost(string, required, tag = "1")] + pub number_of_uses: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbBurnArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(uint64, required, tag="2")] - pub amount: u64, + #[prost(string, required, tag = "2")] + pub amount: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCreatorLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub address: ::prost::alloc::string::String, - #[prost(bool, required, tag="2")] + #[prost(bool, required, tag = "2")] pub verified: bool, - #[prost(uint32, required, tag="3")] + #[prost(uint32, required, tag = "3")] pub share: u32, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCollectionLayout { - #[prost(bool, required, tag="1")] + #[prost(bool, required, tag = "1")] pub verified: bool, - #[prost(string, required, tag="2")] + #[prost(string, required, tag = "2")] pub key: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUsesLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub use_method: ::prost::alloc::string::String, - #[prost(uint64, required, tag="2")] - pub remaining: u64, - #[prost(uint64, required, tag="3")] - pub total: u64, + #[prost(string, required, tag = "2")] + pub remaining: ::prost::alloc::string::String, + #[prost(string, required, tag = "3")] + pub total: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCollectionDetailsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(uint64, required, tag="2")] - pub size: u64, + #[prost(string, optional, tag = "2")] + pub size: ::core::option::Option<::prost::alloc::string::String>, + #[prost(uint32, repeated, packed = "false", tag = "3")] + pub padding: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbAssetDataLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(string, required, tag="2")] + #[prost(string, required, tag = "2")] pub symbol: ::prost::alloc::string::String, - #[prost(string, required, tag="3")] + #[prost(string, required, tag = "3")] pub uri: ::prost::alloc::string::String, - #[prost(uint32, required, tag="4")] + #[prost(uint32, required, tag = "4")] pub seller_fee_basis_points: u32, - #[prost(message, repeated, tag="5")] + #[prost(message, repeated, tag = "5")] pub creators: ::prost::alloc::vec::Vec, - #[prost(bool, required, tag="6")] + #[prost(bool, required, tag = "6")] pub primary_sale_happened: bool, - #[prost(bool, required, tag="7")] + #[prost(bool, required, tag = "7")] pub is_mutable: bool, - #[prost(string, required, tag="8")] + #[prost(string, required, tag = "8")] pub token_standard: ::prost::alloc::string::String, - #[prost(message, optional, tag="9")] + #[prost(message, optional, tag = "9")] pub collection: ::core::option::Option, - #[prost(message, optional, tag="10")] + #[prost(message, optional, tag = "10")] pub uses: ::core::option::Option, - #[prost(message, optional, tag="11")] + #[prost(message, optional, tag = "11")] pub collection_details: ::core::option::Option, - #[prost(string, optional, tag="12")] + #[prost(string, optional, tag = "12")] pub rule_set: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbPrintSupplyLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(uint64, optional, tag="2")] - pub val: ::core::option::Option, + #[prost(string, optional, tag = "2")] + pub val: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCreateArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, required, tag="2")] + #[prost(message, required, tag = "2")] pub asset_data: PbAssetDataLayout, - #[prost(uint32, optional, tag="3")] + #[prost(uint32, optional, tag = "3")] pub decimals: ::core::option::Option, - #[prost(message, optional, tag="4")] + #[prost(message, optional, tag = "4")] pub print_supply: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCreateMasterEditionArgsLayout { - #[prost(uint64, optional, tag="1")] - pub max_supply: ::core::option::Option, + #[prost(string, optional, tag = "1")] + pub max_supply: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbDataLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(string, required, tag="2")] + #[prost(string, required, tag = "2")] pub symbol: ::prost::alloc::string::String, - #[prost(string, required, tag="3")] + #[prost(string, required, tag = "3")] pub uri: ::prost::alloc::string::String, - #[prost(uint32, required, tag="4")] + #[prost(uint32, required, tag = "4")] pub seller_fee_basis_points: u32, - #[prost(message, repeated, tag="5")] + #[prost(message, repeated, tag = "5")] pub creators: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbDataV2Layout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(string, required, tag="2")] + #[prost(string, required, tag = "2")] pub symbol: ::prost::alloc::string::String, - #[prost(string, required, tag="3")] + #[prost(string, required, tag = "3")] pub uri: ::prost::alloc::string::String, - #[prost(uint32, required, tag="4")] + #[prost(uint32, required, tag = "4")] pub seller_fee_basis_points: u32, - #[prost(message, repeated, tag="5")] + #[prost(message, repeated, tag = "5")] pub creators: ::prost::alloc::vec::Vec, - #[prost(message, optional, tag="6")] + #[prost(message, optional, tag = "6")] pub collection: ::core::option::Option, - #[prost(message, optional, tag="7")] + #[prost(message, optional, tag = "7")] pub uses: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCreateMetadataAccountArgsLayout { - #[prost(message, required, tag="1")] + #[prost(message, required, tag = "1")] pub data: PbDataLayout, - #[prost(bool, required, tag="2")] + #[prost(bool, required, tag = "2")] pub is_mutable: bool, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCreateMetadataAccountArgsV2Layout { - #[prost(message, required, tag="1")] + #[prost(message, required, tag = "1")] pub data: PbDataV2Layout, - #[prost(bool, required, tag="2")] + #[prost(bool, required, tag = "2")] pub is_mutable: bool, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCreateMetadataAccountArgsV3Layout { - #[prost(message, required, tag="1")] + #[prost(message, required, tag = "1")] pub data: PbDataV2Layout, - #[prost(bool, required, tag="2")] + #[prost(bool, required, tag = "2")] pub is_mutable: bool, - #[prost(message, optional, tag="3")] + #[prost(message, optional, tag = "3")] pub collection_details: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbSeedsVecLayoutInner { - #[prost(uint32, repeated, packed="false", tag="1")] + #[prost(uint32, repeated, packed = "false", tag = "1")] pub values: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbSeedsVecLayout { - #[prost(message, repeated, tag="1")] + #[prost(message, repeated, tag = "1")] pub seeds: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbLeafInfoLayout { - #[prost(uint32, repeated, packed="false", tag="1")] + #[prost(uint32, repeated, packed = "false", tag = "1")] pub leaf: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbPayloadTypeLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag="2")] + #[prost(string, optional, tag = "2")] pub val_pub_key: ::core::option::Option<::prost::alloc::string::String>, - #[prost(message, optional, tag="3")] + #[prost(message, optional, tag = "3")] pub val_seeds_vec: ::core::option::Option, - #[prost(message, optional, tag="4")] + #[prost(message, optional, tag = "4")] pub val_leaf_info: ::core::option::Option, - #[prost(uint64, optional, tag="5")] - pub val_int64: ::core::option::Option, + #[prost(string, optional, tag = "5")] + pub val_int64: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbMapItemLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub key: ::prost::alloc::string::String, - #[prost(message, required, tag="2")] + #[prost(message, required, tag = "2")] pub val: PbPayloadTypeLayout, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbPayloadLayout { - #[prost(message, repeated, tag="1")] + #[prost(message, repeated, tag = "1")] pub map: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbAuthorizationDataLayout { - #[prost(message, required, tag="1")] + #[prost(message, required, tag = "1")] pub payload: PbPayloadLayout, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbDelegateArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub authorization_data: ::core::option::Option, - #[prost(uint64, optional, tag="3")] - pub amount: ::core::option::Option, - #[prost(string, optional, tag="4")] + #[prost(string, optional, tag = "3")] + pub amount: ::core::option::Option<::prost::alloc::string::String>, + #[prost(string, optional, tag = "4")] pub locked_address: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbLockArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub authorization_data: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbMigrationTypeLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbMigrateArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub migration_type: ::core::option::Option, - #[prost(string, optional, tag="3")] + #[prost(string, optional, tag = "3")] pub rule_set: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbMintArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(uint64, optional, tag="2")] - pub amount: ::core::option::Option, - #[prost(message, optional, tag="3")] + #[prost(string, optional, tag = "2")] + pub amount: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] pub authorization_data: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbMintNewEditionFromMasterEditionViaTokenArgsLayout { - #[prost(uint64, required, tag="1")] - pub edition: u64, + #[prost(string, required, tag = "1")] + pub edition: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbMintPrintingTokensViaTokenArgsLayout { - #[prost(uint64, required, tag="1")] - pub supply: u64, + #[prost(string, required, tag = "1")] + pub supply: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbRevokeArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbSetCollectionSizeArgsLayout { - #[prost(uint64, required, tag="1")] - pub size: u64, + #[prost(string, required, tag = "1")] + pub size: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbReservationLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub address: ::prost::alloc::string::String, - #[prost(uint64, required, tag="2")] - pub spots_remaining: u64, - #[prost(uint64, required, tag="3")] - pub total_spots: u64, + #[prost(string, required, tag = "2")] + pub spots_remaining: ::prost::alloc::string::String, + #[prost(string, required, tag = "3")] + pub total_spots: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbSetReservationListArgsLayout { - #[prost(message, repeated, tag="1")] + #[prost(message, repeated, tag = "1")] pub reservations: ::prost::alloc::vec::Vec, - #[prost(uint64, optional, tag="2")] - pub total_reservation_spots: ::core::option::Option, - #[prost(uint64, required, tag="3")] - pub offset: u64, - #[prost(uint64, required, tag="4")] - pub total_spot_offset: u64, + #[prost(string, optional, tag = "2")] + pub total_reservation_spots: ::core::option::Option<::prost::alloc::string::String>, + #[prost(string, required, tag = "3")] + pub offset: ::prost::alloc::string::String, + #[prost(string, required, tag = "4")] + pub total_spot_offset: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbTransferArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(uint64, optional, tag="2")] - pub amount: ::core::option::Option, - #[prost(message, optional, tag="3")] + #[prost(string, optional, tag = "2")] + pub amount: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, optional, tag = "3")] pub authorization_data: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbTransferOutOfEscrowArgsLayout { - #[prost(uint64, required, tag="1")] - pub amount: u64, + #[prost(string, required, tag = "1")] + pub amount: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUnlockArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub authorization_data: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCollectionToggleLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub val: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbCollectionDetailsToggleLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub val: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUsesToggleLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub val: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbRuleSetToggleLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag="2")] + #[prost(string, optional, tag = "2")] pub val: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUpdateArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag="2")] + #[prost(string, optional, tag = "2")] pub new_update_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(message, optional, tag="3")] + #[prost(message, optional, tag = "3")] pub data: ::core::option::Option, - #[prost(bool, optional, tag="4")] + #[prost(bool, optional, tag = "4")] pub primary_sale_happened: ::core::option::Option, - #[prost(bool, optional, tag="5")] + #[prost(bool, optional, tag = "5")] pub is_mutable: ::core::option::Option, - #[prost(message, optional, tag="6")] + #[prost(message, optional, tag = "6")] pub collection: ::core::option::Option, - #[prost(message, optional, tag="7")] + #[prost(message, optional, tag = "7")] pub collection_details: ::core::option::Option, - #[prost(message, optional, tag="8")] + #[prost(message, optional, tag = "8")] pub uses: ::core::option::Option, - #[prost(message, optional, tag="9")] + #[prost(message, optional, tag = "9")] pub rule_set: ::core::option::Option, - #[prost(message, optional, tag="10")] + #[prost(message, optional, tag = "10")] pub authorization_data: ::core::option::Option, - #[prost(string, optional, tag="11")] + #[prost(string, optional, tag = "11")] pub token_standard: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUpdateMetadataAccountArgsLayout { - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub data: ::core::option::Option, - #[prost(string, optional, tag="2")] + #[prost(string, optional, tag = "2")] pub update_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(bool, optional, tag="3")] + #[prost(bool, optional, tag = "3")] pub primary_sale_happened: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUpdateMetadataAccountArgsV2Layout { - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub data: ::core::option::Option, - #[prost(string, optional, tag="2")] + #[prost(string, optional, tag = "2")] pub update_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(bool, optional, tag="3")] + #[prost(bool, optional, tag = "3")] pub primary_sale_happened: ::core::option::Option, - #[prost(bool, optional, tag="4")] + #[prost(bool, optional, tag = "4")] pub is_mutable: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUseArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub authorization_data: ::core::option::Option, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbUtilizeArgsLayout { - #[prost(uint64, required, tag="1")] - pub number_of_uses: u64, + #[prost(string, required, tag = "1")] + pub number_of_uses: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct PbVerificationArgsLayout { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub name: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct Arg { - #[prost(message, optional, tag="1")] + #[prost(message, optional, tag = "1")] pub approve_use_authority_args: ::core::option::Option, - #[prost(message, optional, tag="2")] + #[prost(message, optional, tag = "2")] pub burn_args: ::core::option::Option, - #[prost(message, optional, tag="3")] + #[prost(message, optional, tag = "3")] pub create_args: ::core::option::Option, - #[prost(message, optional, tag="4")] + #[prost(message, optional, tag = "4")] pub create_master_edition_args: ::core::option::Option, - #[prost(message, optional, tag="5")] + #[prost(message, optional, tag = "5")] pub create_metadata_account_args: ::core::option::Option, - #[prost(message, optional, tag="6")] - pub create_metadata_account_args_v2: ::core::option::Option, - #[prost(message, optional, tag="7")] - pub create_metadata_account_args_v3: ::core::option::Option, - #[prost(message, optional, tag="8")] + #[prost(message, optional, tag = "6")] + pub create_metadata_account_args_v2: + ::core::option::Option, + #[prost(message, optional, tag = "7")] + pub create_metadata_account_args_v3: + ::core::option::Option, + #[prost(message, optional, tag = "8")] pub delegate_args: ::core::option::Option, - #[prost(message, optional, tag="9")] + #[prost(message, optional, tag = "9")] pub lock_args: ::core::option::Option, - #[prost(message, optional, tag="10")] + #[prost(message, optional, tag = "10")] pub migrate_args: ::core::option::Option, - #[prost(message, optional, tag="11")] + #[prost(message, optional, tag = "11")] pub mint_args: ::core::option::Option, - #[prost(message, optional, tag="12")] - pub mint_new_edition_from_master_edition_via_token_args: ::core::option::Option, - #[prost(message, optional, tag="13")] - pub mint_printing_tokens_via_token_args: ::core::option::Option, - #[prost(message, optional, tag="14")] + #[prost(message, optional, tag = "12")] + pub mint_new_edition_from_master_edition_via_token_args: + ::core::option::Option, + #[prost(message, optional, tag = "13")] + pub mint_printing_tokens_via_token_args: + ::core::option::Option, + #[prost(message, optional, tag = "14")] pub revoke_args: ::core::option::Option, - #[prost(message, optional, tag="15")] + #[prost(message, optional, tag = "15")] pub set_collection_size_args: ::core::option::Option, - #[prost(message, optional, tag="16")] + #[prost(message, optional, tag = "16")] pub set_reservation_list_args: ::core::option::Option, - #[prost(message, optional, tag="17")] + #[prost(message, optional, tag = "17")] pub transfer_args: ::core::option::Option, - #[prost(message, optional, tag="18")] + #[prost(message, optional, tag = "18")] pub transfer_out_of_escrow_args: ::core::option::Option, - #[prost(message, optional, tag="19")] + #[prost(message, optional, tag = "19")] pub unlock_args: ::core::option::Option, - #[prost(message, optional, tag="20")] + #[prost(message, optional, tag = "20")] pub update_args: ::core::option::Option, - #[prost(message, optional, tag="21")] + #[prost(message, optional, tag = "21")] pub update_metadata_account_args: ::core::option::Option, - #[prost(message, optional, tag="22")] - pub update_metadata_account_args_v2: ::core::option::Option, - #[prost(message, optional, tag="23")] + #[prost(message, optional, tag = "22")] + pub update_metadata_account_args_v2: + ::core::option::Option, + #[prost(message, optional, tag = "23")] pub use_args: ::core::option::Option, - #[prost(message, optional, tag="24")] + #[prost(message, optional, tag = "24")] pub utilize_args: ::core::option::Option, - #[prost(message, optional, tag="25")] + #[prost(message, optional, tag = "25")] pub verification_args: ::core::option::Option, - #[prost(string, required, tag="26")] + #[prost(string, required, tag = "26")] pub instruction_type: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct InputAccounts { - #[prost(string, optional, tag="1")] + #[prost(string, optional, tag = "1")] pub ata_program: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="2")] + #[prost(string, optional, tag = "2")] pub attribute_dst: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="3")] + #[prost(string, optional, tag = "3")] pub attribute_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="4")] + #[prost(string, optional, tag = "4")] pub attribute_src: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="5")] + #[prost(string, optional, tag = "5")] pub authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="6")] + #[prost(string, optional, tag = "6")] pub authorization_rules: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="7")] + #[prost(string, optional, tag = "7")] pub authorization_rules_program: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="8")] + #[prost(string, optional, tag = "8")] pub bubblegum_signer: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="9")] + #[prost(string, optional, tag = "9")] pub burn_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="10")] + #[prost(string, optional, tag = "10")] pub burner: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="11")] + #[prost(string, optional, tag = "11")] pub collection: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="12")] + #[prost(string, optional, tag = "12")] pub collection_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="13")] + #[prost(string, optional, tag = "13")] pub collection_authority_record: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="14")] + #[prost(string, optional, tag = "14")] pub collection_master_edition: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="15")] + #[prost(string, optional, tag = "15")] pub collection_master_edition_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="16")] + #[prost(string, optional, tag = "16")] pub collection_metadata: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="17")] + #[prost(string, optional, tag = "17")] pub collection_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="18")] + #[prost(string, optional, tag = "18")] pub creator: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="19")] + #[prost(string, optional, tag = "19")] pub delegate: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="20")] + #[prost(string, optional, tag = "20")] pub delegate_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="21")] + #[prost(string, optional, tag = "21")] pub delegate_record: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="22")] + #[prost(string, optional, tag = "22")] pub destination: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="23")] + #[prost(string, optional, tag = "23")] pub destination_owner: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="24")] + #[prost(string, optional, tag = "24")] pub destination_token_record: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="25")] + #[prost(string, optional, tag = "25")] pub edition: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="26")] + #[prost(string, optional, tag = "26")] pub edition_mark_pda: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="27")] + #[prost(string, optional, tag = "27")] pub edition_marker: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="28")] + #[prost(string, optional, tag = "28")] pub edition_marker_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="29")] + #[prost(string, optional, tag = "29")] pub escrow: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="30")] + #[prost(string, optional, tag = "30")] pub escrow_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="31")] + #[prost(string, optional, tag = "31")] pub escrow_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="32")] + #[prost(string, optional, tag = "32")] pub master_edition: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="33")] + #[prost(string, optional, tag = "33")] pub master_edition_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="34")] + #[prost(string, optional, tag = "34")] pub master_edition_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="35")] + #[prost(string, optional, tag = "35")] pub master_edition_token: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="36")] + #[prost(string, optional, tag = "36")] pub master_edition_token_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="37")] + #[prost(string, optional, tag = "37")] pub master_metadata: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="38")] + #[prost(string, optional, tag = "38")] pub master_token_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="39")] + #[prost(string, optional, tag = "39")] pub master_update_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="40")] + #[prost(string, optional, tag = "40")] pub metadata: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="41")] + #[prost(string, optional, tag = "41")] pub mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="42")] + #[prost(string, optional, tag = "42")] pub mint_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="43")] + #[prost(string, optional, tag = "43")] pub new_collection_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="44")] + #[prost(string, optional, tag = "44")] pub new_edition: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="45")] + #[prost(string, optional, tag = "45")] pub new_metadata: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="46")] + #[prost(string, optional, tag = "46")] pub new_metadata_update_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="47")] + #[prost(string, optional, tag = "47")] pub new_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="48")] + #[prost(string, optional, tag = "48")] pub new_mint_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="49")] + #[prost(string, optional, tag = "49")] pub one_time_auth: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="50")] - pub one_time_printing_authorization_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="51")] - pub one_time_printing_authorization_mint_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="52")] + #[prost(string, optional, tag = "50")] + pub one_time_printing_authorization_mint: + ::core::option::Option<::prost::alloc::string::String>, + #[prost(string, optional, tag = "51")] + pub one_time_printing_authorization_mint_authority: + ::core::option::Option<::prost::alloc::string::String>, + #[prost(string, optional, tag = "52")] pub owner: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="53")] + #[prost(string, optional, tag = "53")] pub owner_token_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="54")] + #[prost(string, optional, tag = "54")] pub owner_token_record: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="55")] + #[prost(string, optional, tag = "55")] pub payer: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="56")] + #[prost(string, optional, tag = "56")] pub pda_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="57")] + #[prost(string, optional, tag = "57")] pub print_edition_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="58")] + #[prost(string, optional, tag = "58")] pub print_edition_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="59")] + #[prost(string, optional, tag = "59")] pub print_edition_token_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="60")] + #[prost(string, optional, tag = "60")] pub printing_mint: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="61")] + #[prost(string, optional, tag = "61")] pub printing_mint_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="62")] + #[prost(string, optional, tag = "62")] pub rent: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="63")] + #[prost(string, optional, tag = "63")] pub reservation_list: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="64")] + #[prost(string, optional, tag = "64")] pub resource: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="65")] + #[prost(string, optional, tag = "65")] pub revoke_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="66")] + #[prost(string, optional, tag = "66")] pub safety_deposit_box: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="67")] + #[prost(string, optional, tag = "67")] pub safety_deposit_store: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="68")] + #[prost(string, optional, tag = "68")] pub spl_ata_program: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="69")] + #[prost(string, optional, tag = "69")] pub spl_token_program: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="70")] + #[prost(string, optional, tag = "70")] pub system_program: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="71")] + #[prost(string, optional, tag = "71")] pub sysvar_instructions: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="72")] + #[prost(string, optional, tag = "72")] pub token: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="73")] + #[prost(string, optional, tag = "73")] pub token_account: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="74")] + #[prost(string, optional, tag = "74")] pub token_account_owner: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="75")] + #[prost(string, optional, tag = "75")] pub token_owner: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="76")] + #[prost(string, optional, tag = "76")] pub token_program: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="77")] + #[prost(string, optional, tag = "77")] pub token_record: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="78")] + #[prost(string, optional, tag = "78")] pub token_vault_program: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="79")] + #[prost(string, optional, tag = "79")] pub update_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="80")] + #[prost(string, optional, tag = "80")] pub use_authority: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="81")] + #[prost(string, optional, tag = "81")] pub use_authority_record: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="82")] + #[prost(string, optional, tag = "82")] pub user: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="83")] + #[prost(string, optional, tag = "83")] pub vault: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, optional, tag="84")] + #[prost(string, optional, tag = "84")] pub vault_authority: ::core::option::Option<::prost::alloc::string::String>, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct TokenMetadataMeta { - #[prost(string, required, tag="1")] + #[prost(string, required, tag = "1")] pub block_date: ::prost::alloc::string::String, - #[prost(int64, required, tag="2")] + #[prost(int64, required, tag = "2")] pub block_time: i64, - #[prost(string, required, tag="3")] + #[prost(string, required, tag = "3")] pub tx_id: ::prost::alloc::string::String, - #[prost(string, required, tag="4")] + #[prost(string, required, tag = "4")] pub dapp: ::prost::alloc::string::String, - #[prost(uint64, required, tag="5")] + #[prost(uint64, required, tag = "5")] pub block_slot: u64, - #[prost(uint32, required, tag="7")] + #[prost(uint32, required, tag = "7")] pub instruction_index: u32, - #[prost(bool, required, tag="8")] + #[prost(bool, required, tag = "8")] pub is_inner_instruction: bool, - #[prost(uint32, required, tag="9")] + #[prost(uint32, required, tag = "9")] pub inner_instruction_index: u32, - #[prost(string, required, tag="10")] + #[prost(string, required, tag = "10")] pub instruction_type: ::prost::alloc::string::String, - #[prost(message, required, tag="11")] + #[prost(message, required, tag = "11")] pub args: Arg, - #[prost(message, required, tag="12")] + #[prost(message, required, tag = "12")] pub input_accounts: InputAccounts, } #[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, PartialEq, ::prost::Message, Serialize)] pub struct Output { - #[prost(message, repeated, tag="1")] + #[prost(message, repeated, tag = "1")] pub data: ::prost::alloc::vec::Vec, } // @@protoc_insertion_point(module) diff --git a/metaplex/token-metadata/src/prepare_arg.rs b/metaplex/token-metadata/src/prepare_arg.rs index 7bb8803..836cd64 100644 --- a/metaplex/token-metadata/src/prepare_arg.rs +++ b/metaplex/token-metadata/src/prepare_arg.rs @@ -4,7 +4,7 @@ use crate::{ }; use instructions::parser::parse_instruction; -pub fn prepare_arg(instruction_data: Vec, tx_id: String) -> Arg { +pub fn prepare_arg(instruction_data: Vec) -> Arg { let mut arg: Arg = Arg::default(); let mut instruction: Instruction = parse_instruction(instruction_data); diff --git a/metaplex/token-metadata/src/prepare_input_accounts.rs b/metaplex/token-metadata/src/prepare_input_accounts.rs index df872ce..fcebacb 100644 --- a/metaplex/token-metadata/src/prepare_input_accounts.rs +++ b/metaplex/token-metadata/src/prepare_input_accounts.rs @@ -2,11 +2,8 @@ use crate::pb::sf::solana::block_meta::v1::InputAccounts; pub fn prepare_input_accounts( instruction_type: String, - account_indices: &Vec, - accounts: &Vec, + input_accounts: &Vec, ) -> InputAccounts { - let input_accounts = populate_input_accounts(account_indices, accounts); - let mut result = InputAccounts::default(); match instruction_type.as_str() { "CreateMetadataAccount" => { @@ -593,11 +590,3 @@ fn get_account_with(accounts: &Vec, index: usize) -> Option { } return result; } - -fn populate_input_accounts(account_indices: &Vec, accounts: &Vec) -> Vec { - let mut instruction_accounts: Vec = vec![]; - for (index, &el) in account_indices.iter().enumerate() { - instruction_accounts.push(accounts.as_slice()[el as usize].to_string()); - } - return instruction_accounts; -} diff --git a/metaplex/token-metadata/substreams.yaml b/metaplex/token-metadata/substreams.yaml index bcee730..c9fe6ca 100644 --- a/metaplex/token-metadata/substreams.yaml +++ b/metaplex/token-metadata/substreams.yaml @@ -12,7 +12,7 @@ protobuf: binaries: default: type: wasm/rust-v1 - file: target/wasm32-unknown-unknown/release/substreams.wasm + file: target/wasm32-unknown-unknown/release/metaplex_token_metadata.wasm modules: - name: map_block diff --git a/metaplex/token-metadata/utils/convert b/metaplex/token-metadata/utils/convert new file mode 100755 index 0000000..16d06b1 Binary files /dev/null and b/metaplex/token-metadata/utils/convert differ diff --git a/metaplex/token-metadata/utils/convert.go b/metaplex/token-metadata/utils/convert.go new file mode 100644 index 0000000..c58e5fb --- /dev/null +++ b/metaplex/token-metadata/utils/convert.go @@ -0,0 +1,43 @@ +package main + +import ( + "bytes" + "compress/zlib" + "fmt" + "io" + "log" + "os" +) + +func main() { + // Read all data from stdin + bs, err := io.ReadAll(os.Stdin) + if err != nil { + log.Fatal(err) + } + + // Compress the data using zlib + var b bytes.Buffer + w := zlib.NewWriter(&b) + _, err = w.Write(bs) + if err != nil { + log.Fatal(err) + } + err = w.Close() + if err != nil { + log.Fatal(err) + } + + // Get the compressed data + compressedData := b.Bytes() + + // Build a string representation of the compressed byte slice + fmt.Print("const bytes = new Uint8Array([") + for i, c := range compressedData { + if i > 0 { + fmt.Print(",") + } + fmt.Print(c) + } + fmt.Println("]);") +} diff --git a/metaplex/token-metadata/utils/script.sh b/metaplex/token-metadata/utils/script.sh new file mode 100755 index 0000000..838f0f7 --- /dev/null +++ b/metaplex/token-metadata/utils/script.sh @@ -0,0 +1,7 @@ +#!/bin/bash +name=${1} + +cd utils || exit +./convert < ../pkg/${name}_bg.wasm > wasm_bytes.js +/Users/harshvardhansharma/Downloads/google-cloud-sdk/bin/gsutil cp wasm_bytes.js gs://tt-bq-js/solana/${name}/wasm_bytes.js +/Users/harshvardhansharma/Downloads/google-cloud-sdk/bin/gsutil cp ../pkg/${name}.js gs://tt-bq-js/solana/${name}/ \ No newline at end of file diff --git a/metaplex/token-metadata/utils/wasm_bytes.js b/metaplex/token-metadata/utils/wasm_bytes.js new file mode 100644 index 0000000..9c10c08 --- /dev/null +++ b/metaplex/token-metadata/utils/wasm_bytes.js @@ -0,0 +1 @@ +const bytes = new Uint8Array([120,156,220,187,119,152,29,217,117,221,219,149,115,184,131,161,37,81,148,181,150,149,37,202,166,56,36,103,228,168,114,78,13,7,89,150,101,89,158,64,98,40,110,49,104,134,148,105,201,228,160,145,51,208,200,25,104,228,12,52,114,6,26,57,3,141,156,129,70,206,64,35,103,224,125,231,220,2,26,148,252,244,252,189,247,223,43,114,208,189,239,94,123,159,245,171,115,110,133,254,170,106,62,252,254,119,140,154,154,26,99,157,249,155,31,212,212,124,80,99,116,252,160,198,248,236,3,163,99,205,7,70,71,163,163,250,71,69,198,143,62,48,59,118,172,81,255,24,29,245,191,159,125,96,117,84,159,168,127,141,142,213,31,159,125,96,119,212,31,234,31,70,199,15,156,142,213,184,250,211,232,248,129,219,177,252,164,252,197,232,248,129,215,241,213,103,175,126,51,58,126,224,119,124,253,105,212,177,109,51,58,126,16,84,127,251,236,179,207,170,195,188,250,81,142,246,89,213,210,103,122,204,207,202,177,127,92,254,252,81,21,225,51,237,247,51,213,205,126,165,249,172,108,248,227,170,253,31,189,254,161,246,193,103,138,246,179,42,250,103,213,224,51,189,95,126,108,252,248,3,227,71,74,242,35,227,71,230,42,43,181,126,248,209,55,127,230,253,247,127,248,209,183,190,251,141,111,118,248,238,251,242,253,239,125,247,253,239,119,248,244,91,31,126,251,91,127,209,161,198,83,249,47,168,252,55,223,239,240,233,167,223,251,244,253,119,191,250,206,87,62,122,175,195,111,127,248,206,215,62,254,173,15,63,250,74,85,242,249,170,228,187,29,126,248,254,123,31,126,237,227,47,191,243,222,135,95,235,240,245,14,239,125,173,195,135,53,198,27,61,190,255,131,15,191,254,39,239,127,169,195,55,222,253,234,55,190,246,222,87,223,253,234,71,95,250,248,157,175,255,68,143,239,119,248,193,251,239,188,247,165,119,191,241,213,143,191,244,209,199,95,255,242,87,62,252,240,221,154,80,9,62,247,134,207,239,254,217,119,62,234,240,169,26,176,230,55,254,114,238,251,63,248,244,91,223,213,102,106,124,149,251,217,55,114,223,251,72,58,124,253,7,239,127,253,219,223,251,110,135,247,63,237,240,113,141,253,151,236,191,251,222,199,29,62,250,173,47,189,247,209,215,190,242,238,151,223,253,173,119,170,246,223,244,246,238,123,239,188,251,165,47,191,243,241,59,223,120,247,43,95,234,240,94,213,219,27,29,190,242,165,175,118,248,242,151,63,126,231,183,191,244,213,119,191,246,245,14,95,174,118,248,169,55,76,124,163,195,71,127,246,205,210,230,27,236,63,105,241,27,159,126,239,79,181,67,75,9,242,55,4,63,248,227,79,191,247,195,26,207,186,156,95,204,195,48,244,60,47,180,194,196,203,60,207,14,61,75,197,94,152,121,158,229,121,126,37,9,189,207,71,158,23,101,161,87,241,218,181,75,60,79,21,100,159,79,146,36,211,191,134,237,218,89,97,24,134,159,251,156,170,72,94,111,153,231,133,158,151,100,153,231,43,93,248,106,179,66,203,203,44,95,15,155,233,205,211,219,23,188,72,255,244,61,239,231,43,165,54,242,82,245,73,248,19,219,47,169,94,94,18,189,165,6,8,189,200,170,186,213,91,242,211,159,247,127,73,53,178,94,203,243,200,247,61,219,183,223,176,80,221,202,241,194,44,243,189,159,220,126,58,243,194,36,137,84,143,40,11,51,93,170,184,109,43,252,188,254,237,13,173,253,198,86,221,55,175,55,84,251,135,97,26,254,84,249,81,24,102,106,55,150,6,244,158,247,237,188,157,23,218,150,31,218,111,107,4,95,237,247,60,211,59,199,203,210,42,137,231,89,213,45,73,180,72,109,225,207,84,157,91,158,231,69,191,226,133,190,229,41,214,234,94,124,43,241,188,204,138,84,217,207,190,26,220,171,38,179,255,215,155,231,249,150,23,134,149,74,165,18,122,190,239,123,190,17,230,249,43,204,196,215,155,154,21,203,11,237,208,127,229,38,124,77,255,106,139,35,95,177,248,94,230,87,53,118,152,101,217,23,126,46,203,254,102,246,133,44,83,187,252,127,187,37,73,226,37,137,87,238,187,159,200,248,190,101,107,192,44,41,119,239,27,155,30,195,247,179,84,141,166,254,11,195,20,145,159,135,94,164,140,135,73,248,215,109,213,221,173,7,247,124,213,38,84,238,85,19,63,252,27,175,198,215,163,216,74,253,118,20,134,126,117,61,216,161,239,217,158,101,133,86,104,91,106,209,135,218,64,117,73,183,217,83,201,215,91,98,89,109,254,245,56,109,11,77,239,67,79,125,137,212,254,215,123,193,87,235,165,92,29,81,102,133,214,171,37,224,89,161,95,45,203,148,161,72,91,212,177,23,89,81,216,54,160,103,219,106,141,6,81,166,190,12,89,104,219,118,187,118,127,43,136,2,189,133,106,205,134,97,102,217,234,40,161,191,193,85,146,74,100,249,73,18,254,106,185,44,45,63,9,213,143,36,177,253,36,169,42,85,99,205,252,106,123,245,113,102,89,137,26,203,243,203,163,197,171,185,173,254,235,123,73,242,107,229,78,72,252,55,231,88,175,49,109,65,183,138,245,175,122,199,248,150,90,75,229,46,44,23,155,130,85,95,226,52,181,172,216,247,189,200,178,124,189,242,66,235,175,157,240,191,60,255,111,44,95,63,138,170,223,221,48,82,95,222,208,207,60,235,255,116,51,124,195,240,44,207,15,124,79,173,131,87,187,227,255,219,166,8,61,223,242,45,213,217,203,94,45,26,223,15,125,223,86,204,106,239,216,127,117,11,195,240,55,34,13,99,168,217,140,252,232,141,239,231,95,102,10,171,53,150,229,89,137,58,222,88,158,90,103,213,149,86,85,248,106,52,53,23,190,237,89,118,117,150,244,126,178,127,195,86,191,122,190,103,86,55,195,176,237,191,242,125,179,28,39,12,115,245,21,182,170,147,251,122,104,219,182,124,53,195,182,255,19,230,213,174,179,212,124,255,223,28,41,94,125,103,94,45,121,207,243,106,60,227,255,120,170,254,234,246,215,78,115,205,235,111,114,155,111,181,79,170,156,137,229,232,159,53,53,53,161,157,104,63,174,38,242,76,227,213,166,206,46,190,163,40,125,253,143,250,238,250,53,190,151,216,182,253,197,95,182,237,95,183,237,95,255,162,109,255,178,250,255,47,171,153,240,255,183,70,124,223,54,12,195,179,61,63,242,107,106,106,124,63,173,177,213,1,207,207,254,159,9,203,195,183,173,167,207,182,67,79,45,28,253,89,20,249,158,97,122,158,81,117,173,78,51,81,20,69,150,225,91,90,89,46,14,203,170,113,28,199,246,13,195,206,211,72,113,56,175,118,134,103,252,169,49,217,152,108,56,150,81,83,113,3,163,163,81,212,213,53,213,68,222,183,61,247,59,29,190,243,189,79,255,220,172,177,62,253,179,239,214,28,72,157,63,253,240,211,239,119,168,25,104,101,111,92,178,124,252,105,135,14,53,61,131,202,27,31,125,231,195,111,127,251,123,95,175,217,106,191,245,198,135,159,118,168,126,122,199,204,127,226,130,238,195,79,127,80,115,32,13,118,154,70,77,97,68,147,140,205,233,206,124,71,182,59,220,158,13,183,118,102,215,242,113,233,165,120,67,122,219,104,72,55,250,243,243,102,239,177,179,43,219,29,239,138,119,198,91,179,139,209,238,236,82,180,32,95,148,174,13,15,68,189,221,109,217,229,108,99,58,41,159,156,63,136,135,37,183,179,150,104,88,182,41,109,10,15,69,123,178,230,172,83,116,50,222,151,61,12,186,58,251,179,99,193,21,251,78,116,40,187,154,30,200,186,71,7,179,139,89,47,119,177,187,196,29,238,140,114,198,58,19,156,102,123,164,51,222,153,232,140,112,234,172,6,103,143,61,218,25,231,76,114,198,56,23,173,117,233,145,172,87,212,228,110,13,143,71,71,179,99,217,211,160,71,116,204,93,231,190,8,190,184,37,91,156,207,204,70,39,219,237,186,112,87,250,40,30,158,156,137,134,103,39,178,222,209,241,236,169,53,45,27,151,143,201,15,6,55,242,97,241,78,107,77,112,51,159,157,141,206,123,103,155,178,177,249,201,252,116,62,50,91,239,92,247,54,197,227,243,91,249,169,252,100,214,154,143,136,231,230,107,131,107,233,237,188,41,223,156,29,15,26,243,251,217,148,252,70,118,39,219,227,221,205,250,5,119,243,235,249,157,124,83,222,203,172,119,78,4,27,243,69,121,119,167,41,184,96,93,183,195,147,11,191,122,49,31,126,206,49,167,215,118,220,110,125,246,11,53,180,138,134,117,53,180,97,193,254,19,58,112,126,177,6,14,204,175,153,113,145,211,133,3,87,232,193,163,15,63,255,28,28,24,249,116,15,206,175,154,54,3,245,163,134,97,177,104,90,83,13,163,226,115,140,17,34,64,132,56,239,225,50,41,12,166,72,144,126,194,204,252,157,255,191,254,15,89,82,83,108,83,59,32,47,62,199,138,222,1,57,42,106,7,188,85,24,108,135,183,208,238,19,190,141,183,19,51,54,34,181,199,98,126,174,168,243,249,55,224,224,111,8,127,10,63,197,159,46,106,248,51,248,105,124,14,63,147,119,177,138,156,159,135,131,207,11,127,22,63,203,47,20,7,44,254,28,190,128,159,19,254,77,252,205,252,101,88,228,252,121,56,248,121,33,0,82,229,255,22,136,191,37,252,5,56,191,102,213,249,156,85,139,95,192,172,218,119,205,154,194,231,47,226,23,240,139,194,95,82,99,254,50,28,252,178,240,87,240,43,234,163,95,197,175,170,249,251,53,252,18,126,237,107,102,77,213,219,175,23,245,62,127,3,14,126,67,248,69,124,145,191,89,24,252,219,248,77,252,58,254,118,213,219,223,129,131,191,35,252,18,190,196,223,42,90,44,126,25,191,133,47,11,223,193,59,85,111,95,129,131,175,8,191,138,175,242,107,42,255,46,190,134,119,133,239,41,111,245,62,103,215,226,61,204,46,189,253,54,222,195,111,11,255,174,26,243,239,193,193,223,19,254,125,252,125,245,209,63,192,63,80,222,254,33,254,46,254,225,107,111,255,168,104,240,249,59,112,240,59,194,2,5,255,113,97,242,159,224,31,227,31,225,159,84,189,253,83,56,248,167,194,127,134,127,198,127,94,92,183,248,47,240,207,241,47,132,255,18,255,178,234,237,95,193,193,191,18,254,107,252,107,254,27,149,255,183,248,55,248,183,194,90,229,173,193,231,156,90,212,98,78,233,173,61,106,209,94,248,239,212,152,255,30,14,254,189,240,63,224,63,168,143,254,35,254,163,242,246,187,248,119,248,221,215,222,254,83,209,232,243,247,224,224,247,132,255,25,255,153,191,95,88,252,47,248,125,252,39,252,151,170,183,63,128,131,63,16,254,87,252,87,254,97,209,211,225,127,195,31,226,191,9,255,8,127,84,245,246,223,225,224,191,11,223,199,251,252,64,229,63,196,7,248,80,248,145,242,214,232,115,110,45,62,194,220,210,219,215,241,17,190,46,252,134,26,179,3,28,116,16,126,140,143,213,71,223,196,55,149,183,63,198,55,240,199,175,189,125,171,104,242,41,112,32,194,63,193,159,240,219,133,205,239,224,219,248,22,190,83,245,246,93,56,248,174,240,123,248,30,255,180,152,238,241,19,252,41,62,17,126,138,79,171,222,190,15,7,223,23,254,0,63,224,159,169,252,255,192,159,225,127,8,127,168,188,53,249,156,87,139,31,98,94,233,237,127,226,135,248,159,194,63,87,99,254,5,28,252,133,240,127,225,127,169,143,126,132,31,41,111,63,198,159,227,199,175,189,125,86,52,251,236,8,7,29,133,117,6,234,12,118,50,10,135,157,13,116,50,240,25,58,27,85,135,93,12,56,232,98,8,187,26,232,106,176,155,81,172,114,217,221,64,55,3,221,13,97,15,3,61,140,170,215,158,74,217,211,16,246,50,208,203,96,111,173,236,99,160,183,129,62,134,176,175,161,76,55,251,108,172,69,95,3,141,165,235,126,134,138,250,25,194,254,134,114,52,64,117,25,96,8,235,13,212,87,19,3,13,12,52,20,192,32,3,253,13,12,50,94,51,12,54,138,22,159,67,84,201,16,67,56,212,192,80,131,195,140,194,229,112,3,195,12,12,54,48,188,228,24,161,68,35,12,225,72,3,35,13,142,50,138,19,14,71,27,24,101,96,180,33,28,99,96,76,201,49,86,41,199,26,194,113,6,198,25,28,175,149,13,6,198,27,104,48,132,19,52,71,139,207,249,181,152,96,96,126,201,49,209,80,209,68,67,56,73,155,154,172,186,76,54,132,83,12,76,169,38,166,26,152,170,57,166,25,152,100,96,154,226,136,255,36,42,78,169,131,216,116,163,248,57,206,48,244,97,108,186,129,25,134,58,144,205,52,10,131,179,12,204,52,48,203,248,132,179,13,204,54,222,56,156,205,49,138,86,159,115,213,72,115,13,225,60,3,243,12,54,26,69,13,231,27,104,52,48,199,192,252,18,127,129,18,45,48,132,11,13,44,52,184,200,80,71,175,197,6,22,25,88,108,8,151,24,88,82,226,47,85,202,165,134,112,153,129,101,6,151,107,229,10,3,203,13,172,48,132,43,53,126,171,207,5,181,88,105,96,65,137,191,202,80,209,42,67,184,90,155,90,163,186,172,49,132,107,13,172,173,38,154,12,52,105,252,117,6,86,27,88,215,54,141,235,141,162,46,224,6,85,178,193,16,110,52,176,209,224,38,197,190,217,192,38,3,235,13,108,46,57,182,40,209,22,67,184,213,192,86,131,219,12,245,173,216,110,96,155,129,237,134,112,135,129,29,37,199,78,165,220,105,8,119,25,216,101,112,183,86,238,49,176,219,192,30,67,216,172,57,234,2,46,172,69,179,129,133,37,199,94,67,69,123,13,225,62,109,106,191,234,178,223,16,30,48,112,160,154,56,104,224,160,230,56,100,96,159,129,67,122,26,191,21,21,79,213,52,30,54,138,223,230,145,234,52,30,54,112,68,79,227,81,133,114,204,192,81,3,199,140,79,120,220,192,241,55,167,241,132,81,212,7,60,169,70,58,105,8,79,25,56,101,240,180,154,198,22,3,167,13,156,48,208,82,226,159,81,162,51,134,240,172,129,179,6,207,25,69,131,201,243,6,206,25,56,111,8,47,24,184,80,226,95,84,202,139,134,240,146,129,75,6,47,107,229,21,3,151,13,92,49,132,87,53,126,125,192,69,181,184,106,96,81,137,127,205,80,209,53,67,120,93,155,186,161,186,220,48,132,55,13,220,172,38,110,25,184,165,241,91,13,92,55,208,218,54,141,183,141,162,33,224,29,85,114,199,16,222,53,112,215,224,61,197,126,223,192,61,3,183,13,220,47,57,30,40,209,3,67,248,208,192,67,131,143,12,117,194,122,108,224,145,129,199,134,240,137,129,39,37,199,83,165,124,106,8,159,25,120,102,240,185,86,190,48,240,220,192,11,67,248,82,115,52,4,92,92,139,151,6,22,151,28,117,166,138,234,76,97,39,83,153,234,108,194,65,103,83,216,197,68,23,83,39,186,154,232,106,42,142,110,38,58,153,232,102,190,230,232,110,22,141,1,123,168,146,30,166,176,167,137,158,38,123,153,133,201,222,38,122,153,232,110,162,183,89,229,232,163,68,125,76,97,95,19,125,77,246,51,139,141,14,251,155,232,103,162,191,41,28,96,98,128,89,229,168,87,202,122,83,56,208,196,64,147,131,180,114,176,137,65,38,6,155,194,33,166,62,221,4,92,82,139,33,38,150,148,28,67,77,21,13,53,133,195,180,169,225,170,203,112,83,56,194,196,136,106,98,164,137,145,154,99,148,137,97,38,70,181,113,140,54,139,166,128,99,84,201,24,83,56,214,196,88,147,227,204,194,226,120,19,227,76,140,54,49,190,228,104,80,162,6,83,56,193,196,4,147,19,205,98,167,205,73,38,38,154,152,100,10,39,155,152,92,114,76,81,202,41,166,112,170,137,169,38,167,105,229,116,19,211,76,76,55,133,51,52,71,83,192,165,181,152,97,98,105,201,49,211,84,209,76,83,56,75,155,154,173,186,204,54,133,115,76,204,169,38,230,154,152,171,57,230,153,152,101,98,94,27,71,163,89,52,7,156,175,74,230,155,194,5,38,22,152,92,104,22,54,23,153,88,104,162,209,196,162,146,99,177,18,45,54,133,75,76,44,49,185,212,84,95,250,101,38,150,154,88,102,10,151,155,88,94,114,172,80,202,21,166,112,165,137,149,38,87,105,229,106,19,171,76,172,54,133,107,52,71,115,192,101,181,88,99,98,89,201,177,214,84,209,90,83,216,164,77,173,83,93,214,153,194,245,38,214,87,19,27,76,108,208,28,27,77,52,153,216,216,198,177,201,44,90,2,110,86,37,155,77,225,22,19,91,76,110,53,11,135,219,76,108,53,177,201,196,182,146,99,187,18,109,55,133,59,76,236,48,185,211,44,154,29,238,50,177,211,196,46,83,184,219,196,238,146,99,143,82,238,49,133,205,38,154,77,238,213,202,125,38,246,154,216,103,10,247,107,142,150,128,203,107,177,223,196,242,146,227,128,169,162,3,166,240,160,54,117,72,117,57,100,10,15,155,56,92,77,28,49,113,68,115,28,53,113,208,196,209,54,142,99,102,209,26,240,184,42,57,110,10,79,152,56,97,242,164,89,184,60,101,226,164,137,99,38,78,149,28,167,149,232,180,41,108,49,209,98,242,140,169,46,254,206,154,56,99,226,172,41,60,103,226,92,201,113,94,41,207,155,194,11,38,46,152,188,168,149,151,76,92,52,113,201,20,94,214,28,173,1,87,212,226,178,137,21,37,199,21,83,69,87,76,225,85,109,234,154,234,114,205,20,94,55,113,189,154,184,97,226,134,230,184,105,226,170,137,155,109,28,183,204,162,46,100,171,42,105,53,133,183,77,220,54,121,199,44,60,222,53,113,199,196,45,19,119,75,142,123,74,116,207,20,222,55,113,223,228,3,83,157,20,31,154,120,96,226,161,41,124,100,226,81,201,241,88,41,31,155,194,39,38,158,152,124,170,149,207,76,60,53,241,204,20,62,215,28,117,33,87,214,226,185,137,149,37,199,11,83,69,47,76,225,75,109,170,206,130,131,58,75,216,201,66,39,75,39,58,91,232,108,41,142,46,22,94,154,232,98,189,230,232,106,21,245,33,187,169,146,110,150,176,187,133,238,22,123,88,133,207,158,22,122,88,232,106,161,167,85,229,232,165,68,189,44,97,111,11,189,45,246,177,212,5,111,95,11,125,44,244,181,132,253,44,244,179,170,28,253,149,178,191,37,28,96,97,128,197,122,173,28,104,161,222,194,64,75,56,200,210,231,143,144,171,106,49,200,194,170,146,99,176,165,162,193,150,112,136,54,53,84,117,25,106,9,135,89,24,86,77,12,183,48,92,115,140,176,48,196,194,136,54,142,145,86,209,16,114,148,42,25,101,9,71,91,24,109,113,140,85,4,28,107,97,140,133,145,22,198,150,28,227,148,104,156,37,28,111,97,188,197,6,171,232,234,113,130,133,6,11,19,44,225,68,11,19,75,142,73,74,57,201,18,78,182,48,217,226,20,173,156,106,97,138,133,169,150,112,154,230,104,8,185,186,22,211,44,172,46,57,166,91,42,154,110,9,103,104,83,51,85,151,153,150,112,150,133,89,213,196,108,11,179,53,199,28,11,51,44,204,105,227,152,107,21,141,33,231,169,146,121,150,176,209,66,163,197,249,86,17,114,129,133,249,22,230,90,88,80,114,44,84,162,133,150,112,145,133,69,22,23,91,234,154,121,137,133,197,22,150,88,194,165,22,150,150,28,203,148,114,153,37,92,110,97,185,197,21,90,185,210,194,10,11,43,45,225,42,205,209,24,114,77,45,86,89,88,83,114,172,182,84,180,218,18,174,209,166,214,170,46,107,45,97,147,133,166,106,98,157,133,117,154,99,189,133,53,22,214,183,113,108,176,138,166,144,27,85,201,70,75,184,201,194,38,139,155,173,34,226,22,11,155,45,108,176,176,165,228,216,170,68,91,45,225,54,11,219,44,110,183,212,53,243,14,11,219,45,236,176,132,59,45,236,44,57,118,41,229,46,75,184,219,194,110,139,123,180,178,217,194,30,11,205,150,112,175,230,104,10,185,182,22,123,45,172,45,57,246,89,42,218,103,9,247,107,83,7,84,151,3,150,240,160,133,131,213,196,33,11,135,52,199,97,11,251,45,28,110,227,56,98,21,205,33,143,170,146,163,150,240,152,133,99,22,143,91,69,204,19,22,142,91,56,98,225,68,201,113,82,137,78,90,194,83,22,78,89,60,109,21,71,108,182,88,56,109,161,197,18,158,177,112,166,228,56,171,148,103,45,225,57,11,231,44,158,215,202,11,22,206,91,184,96,9,47,106,142,230,144,77,181,184,104,161,169,228,184,100,169,232,146,37,188,172,77,93,81,93,174,88,194,171,22,174,86,19,215,44,92,211,28,215,45,92,182,112,93,113,196,223,140,138,69,211,155,106,120,195,42,200,155,150,190,188,188,97,225,166,165,46,47,111,89,133,193,86,11,183,44,180,90,159,240,182,133,219,214,27,151,151,119,172,162,37,228,93,53,210,93,75,120,207,194,61,139,247,173,162,134,15,44,220,183,112,199,194,131,18,255,161,18,61,180,132,143,44,60,178,248,216,82,7,175,39,22,30,91,120,98,9,159,90,120,90,226,63,83,202,103,150,240,185,133,231,22,95,104,229,75,11,47,44,188,180,132,117,182,62,237,132,92,87,139,58,27,235,74,252,78,182,138,58,217,194,206,182,50,213,197,86,55,151,182,176,171,141,174,213,68,55,27,221,108,133,223,221,70,103,27,221,237,215,211,216,195,46,90,67,246,84,37,61,109,97,47,27,189,108,246,182,11,131,125,108,244,182,209,195,70,31,187,202,209,87,137,250,218,194,126,54,250,217,236,111,171,139,223,1,54,250,219,24,96,11,235,109,212,219,85,142,129,74,57,208,22,14,178,49,200,230,96,173,28,98,99,176,141,33,182,112,168,230,104,13,185,190,22,67,109,172,47,57,134,217,42,26,102,11,135,107,83,35,84,151,17,182,112,164,141,145,213,196,40,27,163,52,199,104,27,195,109,140,110,227,24,99,23,117,17,199,170,146,177,182,112,156,141,113,54,199,219,133,201,6,27,227,109,140,177,209,80,114,76,80,162,9,182,112,162,141,137,54,39,217,197,61,147,147,109,76,178,49,217,22,78,177,49,165,228,152,170,148,83,109,225,52,27,211,108,78,215,202,25,54,166,219,152,97,11,103,106,142,186,136,27,106,49,211,198,134,146,99,150,173,162,89,182,112,182,54,53,71,117,153,99,11,231,218,152,91,77,204,179,49,79,115,52,218,152,109,163,177,141,99,190,93,212,71,92,160,74,22,216,194,133,54,22,218,92,100,23,22,23,219,88,100,99,190,141,197,37,199,18,37,90,98,11,151,218,88,106,115,153,173,46,226,151,219,88,102,99,185,45,92,97,99,69,201,177,82,41,87,218,194,85,54,86,217,92,173,149,107,108,172,182,177,198,22,174,213,28,245,17,55,214,98,173,141,141,37,71,147,173,162,38,91,184,78,155,90,175,186,172,183,133,27,108,108,168,38,54,218,216,168,57,54,217,88,103,99,83,27,199,102,187,104,136,184,69,149,108,177,133,91,109,108,181,185,205,46,108,110,183,177,205,198,102,27,219,75,142,29,74,180,195,22,238,180,177,211,230,46,91,93,164,236,182,177,203,198,110,91,184,199,198,158,146,163,89,41,155,109,225,94,27,123,109,238,211,202,253,54,246,217,216,111,11,15,104,142,134,136,155,106,113,192,198,166,146,227,160,173,162,131,182,240,144,54,117,88,117,57,108,11,143,216,56,82,77,28,181,113,84,115,28,179,113,200,198,177,54,142,227,118,209,24,241,132,42,57,97,11,79,218,56,105,243,148,93,56,60,109,227,148,141,227,54,78,151,28,45,74,212,98,11,207,216,56,99,243,172,173,110,70,206,217,56,107,227,156,45,60,111,227,124,201,113,65,41,47,216,194,139,54,46,218,188,164,149,151,109,92,178,113,217,22,94,209,28,141,17,55,215,226,138,141,205,37,199,85,91,69,87,109,225,53,109,234,186,234,114,221,22,222,176,113,163,154,184,105,227,166,230,184,101,227,154,141,91,109,28,173,118,209,20,241,182,42,185,109,11,239,216,184,99,243,174,93,184,188,103,227,174,141,86,27,247,74,142,251,74,116,223,22,62,176,241,192,230,67,187,88,101,241,145,141,135,54,30,217,194,199,54,30,151,28,79,148,242,137,45,124,106,227,169,205,103,90,249,220,198,51,27,207,109,225,11,205,209,20,113,75,45,94,216,216,82,114,188,180,85,244,210,22,214,57,202,84,39,7,14,58,57,194,206,14,58,59,58,209,197,65,23,253,215,248,174,14,234,28,116,117,94,115,116,115,138,230,136,221,85,73,119,71,216,195,65,15,135,61,157,194,99,47,7,61,29,116,115,208,203,169,114,244,86,162,222,142,176,143,131,62,14,251,58,197,50,147,253,28,244,117,208,207,17,246,119,208,223,169,114,12,80,202,1,142,176,222,65,189,195,129,90,57,200,193,64,7,131,28,225,96,71,159,118,34,110,173,197,96,7,91,75,142,33,142,138,134,56,194,161,218,212,48,213,101,152,35,28,238,96,120,53,49,194,193,8,205,49,210,193,80,7,35,219,56,70,57,69,75,196,209,170,100,180,35,28,227,96,140,195,177,78,225,115,156,131,177,14,70,57,24,87,114,140,87,162,241,142,176,193,65,131,195,9,78,209,82,195,137,14,38,56,152,232,8,39,57,152,84,114,76,86,202,201,142,112,138,131,41,14,167,106,229,52,7,83,29,76,115,132,211,53,71,75,196,109,181,152,238,96,91,201,49,195,81,209,12,71,56,83,155,154,165,186,204,114,132,179,29,204,174,38,230,56,152,163,57,230,58,152,233,96,110,27,199,60,167,104,141,216,168,74,26,29,225,124,7,243,29,46,112,138,128,11,29,44,112,48,207,193,194,146,99,145,18,45,114,132,139,29,44,118,184,196,81,23,191,75,29,44,113,176,212,17,46,115,176,172,228,88,174,148,203,29,225,10,7,43,28,174,212,202,85,14,86,58,88,229,8,87,107,142,214,136,219,107,177,218,193,246,146,99,141,163,162,53,142,112,173,54,213,164,186,52,57,194,117,14,214,85,19,235,29,172,215,28,27,28,172,117,176,161,141,99,163,83,212,197,220,164,74,54,57,194,205,14,54,59,220,226,20,33,183,58,216,226,96,163,131,173,37,199,54,37,218,230,8,183,59,216,238,112,135,83,108,181,184,211,193,14,7,59,29,225,46,7,187,74,142,221,74,185,219,17,238,113,176,199,97,179,86,238,117,208,236,96,175,35,220,167,57,234,98,238,168,197,62,7,59,74,142,253,142,138,246,59,194,3,218,212,65,213,229,160,35,60,228,224,80,53,113,216,193,97,205,113,196,193,1,7,71,218,56,142,58,69,125,204,99,170,228,152,35,60,238,224,184,195,19,78,17,241,164,131,19,14,142,58,56,89,114,156,82,162,83,142,240,180,131,211,14,91,156,162,209,226,25,7,45,14,206,56,194,179,14,206,150,28,231,148,242,156,35,60,239,224,188,195,11,90,121,209,193,5,7,23,29,225,37,205,81,31,115,103,45,46,57,216,89,114,92,118,84,116,217,17,94,209,166,174,170,46,87,29,225,53,7,215,170,137,235,14,174,107,142,27,14,174,56,184,209,198,113,211,41,26,98,222,82,37,183,28,97,171,131,86,135,183,157,34,230,29,7,183,29,220,116,112,167,228,184,171,68,119,29,225,61,7,247,28,222,119,212,205,200,3,7,247,29,60,112,132,15,29,60,44,57,30,41,229,35,71,248,216,193,99,135,79,180,242,169,131,39,14,158,58,194,103,154,163,33,230,174,90,60,115,176,171,228,120,238,168,232,185,35,124,161,77,189,84,93,94,58,194,58,23,117,174,78,116,114,209,201,85,28,157,93,188,112,208,217,125,205,209,197,45,26,99,118,117,225,160,171,43,236,230,162,155,203,238,110,145,176,135,139,238,46,186,184,232,225,86,57,122,42,81,79,87,216,203,69,47,151,189,93,253,167,126,23,189,93,244,113,133,125,93,244,117,171,28,253,148,178,159,43,236,239,162,191,203,1,90,89,239,98,128,139,122,87,56,208,213,231,143,152,187,107,49,208,197,238,146,99,144,171,162,65,174,112,176,54,53,68,117,25,226,10,135,186,24,90,77,12,115,49,76,115,12,119,49,216,197,240,54,142,17,110,209,20,115,164,42,25,233,10,71,185,24,229,114,180,91,164,28,227,98,180,139,17,46,198,148,28,99,149,104,172,43,28,231,98,156,203,241,174,254,83,191,139,241,46,26,92,225,4,23,19,74,142,137,74,57,209,21,78,114,49,201,229,100,173,156,226,98,178,139,41,174,112,170,230,104,138,185,167,22,83,93,236,41,57,166,185,42,154,230,10,167,107,83,51,84,151,25,174,112,166,139,153,213,196,44,23,179,52,199,108,23,211,93,204,110,227,152,227,22,205,49,231,170,146,185,174,112,158,139,121,46,27,221,34,227,124,23,141,46,230,184,152,95,114,44,80,162,5,174,112,161,139,133,46,23,185,197,101,135,139,93,44,114,177,216,21,46,113,177,164,228,88,170,148,75,93,225,50,23,203,92,46,215,202,21,46,150,187,88,225,10,87,106,142,230,152,205,181,88,233,162,249,213,95,247,93,21,173,114,133,171,181,169,53,170,203,26,87,184,214,197,218,106,162,201,69,147,230,88,231,98,181,139,117,138,35,238,16,21,7,213,109,203,122,183,248,2,55,184,250,182,101,189,139,13,174,186,109,217,232,22,6,55,185,216,232,98,147,251,9,55,187,216,236,190,113,219,178,197,45,90,98,110,85,35,109,117,133,219,92,108,115,185,221,45,106,184,195,197,118,23,91,92,236,40,241,119,42,209,78,87,184,203,197,46,151,187,93,117,51,178,199,197,110,23,123,92,97,179,139,230,18,127,175,82,238,117,133,251,92,236,115,185,95,43,15,184,216,239,226,128,43,60,168,241,91,98,238,173,197,65,23,123,75,252,67,174,138,14,185,194,195,218,212,17,213,229,136,43,60,234,226,104,53,113,204,197,49,141,127,220,197,97,23,199,219,166,241,132,91,180,198,60,169,74,78,186,194,83,46,78,185,60,173,216,91,92,156,118,113,194,69,75,201,113,70,137,206,184,194,179,46,206,186,60,231,22,231,109,158,119,113,206,197,121,87,120,193,197,133,146,227,162,82,94,116,133,151,92,92,114,121,89,43,175,184,184,236,226,138,43,188,170,57,90,99,238,171,197,85,23,251,94,253,117,223,85,209,53,87,120,93,155,186,161,186,220,112,133,55,93,220,172,38,110,185,184,165,57,90,93,92,119,209,218,198,113,219,45,234,18,222,81,37,119,92,225,93,23,119,93,222,115,11,147,247,93,220,115,113,219,197,253,146,227,129,18,61,112,133,15,93,60,116,249,200,45,14,184,124,236,226,145,139,199,174,240,137,139,39,37,199,83,165,124,234,10,159,185,120,230,242,185,86,190,112,241,220,197,11,87,248,82,115,212,37,220,95,139,151,46,246,191,250,235,190,167,162,58,79,216,201,83,166,58,123,112,208,217,19,118,241,208,197,211,137,174,30,186,122,250,175,251,30,58,121,232,230,169,229,248,245,168,184,173,150,99,119,175,248,121,246,240,244,114,236,238,161,135,167,150,99,79,175,48,216,203,67,79,15,189,188,79,216,219,67,111,239,141,229,216,199,43,234,19,246,85,35,245,245,132,253,60,244,243,216,223,43,106,56,192,67,127,15,125,60,12,240,170,248,245,74,84,239,9,7,122,24,232,113,144,167,238,197,6,123,24,228,97,176,39,28,226,97,136,87,197,31,170,148,67,61,225,48,15,195,60,14,215,202,17,30,134,123,24,225,9,71,122,250,108,149,240,64,45,70,122,56,80,226,143,242,84,52,202,19,142,214,166,198,168,46,99,60,225,88,15,99,171,137,113,30,198,105,252,241,30,70,123,24,239,189,158,198,6,175,104,72,56,65,149,76,240,132,19,61,76,244,56,73,177,79,246,48,201,67,131,135,201,37,199,20,37,154,226,9,167,122,152,234,113,154,167,142,21,211,61,76,243,48,221,19,206,240,48,163,228,152,169,148,51,61,225,44,15,179,60,206,214,202,57,30,102,123,152,227,9,231,106,142,134,132,7,107,49,215,195,193,146,99,158,167,162,121,158,176,81,155,154,175,186,204,247,132,11,60,44,168,38,22,122,88,168,57,22,121,104,244,176,168,141,99,177,87,52,38,92,162,74,150,120,194,165,30,150,122,92,230,21,38,151,123,88,230,97,177,135,229,37,199,10,37,90,225,9,87,122,88,233,113,149,87,220,115,184,218,195,42,15,171,61,225,26,15,107,74,142,181,74,185,214,19,54,121,104,242,184,78,43,215,123,88,231,97,189,39,220,160,57,26,19,30,170,197,6,15,135,74,142,141,158,138,54,122,194,77,218,212,102,213,101,179,39,220,226,97,75,53,177,213,195,86,205,177,205,195,38,15,219,244,114,252,48,42,234,103,52,213,112,187,87,196,220,81,93,142,219,61,236,208,203,113,167,154,146,93,30,118,122,216,229,125,194,221,30,118,191,185,28,247,120,69,83,194,102,53,82,179,39,220,235,97,175,199,125,106,57,238,247,176,207,195,30,15,251,75,252,3,74,116,192,19,30,244,112,208,227,33,61,57,135,61,28,242,112,216,19,30,241,112,164,196,63,170,148,71,61,225,49,15,199,60,30,215,202,19,30,142,123,56,225,9,79,106,252,166,132,135,107,113,210,195,225,18,255,148,167,162,83,158,240,180,54,213,162,186,180,120,194,51,30,206,84,19,103,61,156,213,248,231,60,156,246,112,174,109,26,207,123,69,115,194,11,170,228,130,39,188,232,225,162,199,75,138,253,178,135,75,30,206,123,184,92,114,92,81,162,43,158,240,170,135,171,30,175,121,234,82,251,186,135,107,30,174,123,194,27,30,110,148,28,55,149,242,166,39,188,229,225,150,199,86,173,188,237,161,213,195,109,79,120,71,115,52,39,60,82,139,59,30,142,148,28,119,61,21,221,245,132,247,180,169,251,170,203,125,79,248,192,195,131,106,226,161,135,135,154,227,145,135,123,30,30,181,113,60,246,138,150,132,79,84,201,19,79,248,212,195,83,143,207,212,114,124,238,225,153,135,199,30,158,151,28,47,148,232,133,39,124,233,225,165,199,58,191,152,238,177,147,143,58,31,157,124,97,103,31,157,253,42,71,23,31,14,186,248,194,174,62,186,250,236,166,149,221,125,116,243,209,221,23,246,240,245,217,42,225,209,90,244,240,113,180,228,232,233,171,168,167,47,236,229,43,83,189,85,151,222,190,176,143,143,62,213,68,95,31,125,125,197,209,207,71,47,31,253,252,215,28,253,253,162,53,225,0,85,50,192,23,214,251,168,247,57,208,47,44,14,242,49,208,71,127,31,131,252,42,199,96,37,26,236,11,135,248,24,226,115,168,175,14,94,195,124,12,245,49,204,23,14,247,49,188,228,24,161,148,35,124,225,72,31,35,125,142,210,202,209,62,70,249,24,237,11,199,104,142,214,132,199,106,49,198,199,177,146,99,172,175,162,177,190,112,156,54,53,94,117,25,239,11,27,124,52,84,19,19,124,76,208,28,19,125,140,243,49,177,141,99,146,95,212,165,156,172,74,38,251,194,41,62,166,248,156,234,23,54,167,249,152,234,99,146,143,105,37,199,116,37,154,238,11,103,248,152,225,115,166,175,190,244,179,124,204,244,49,203,23,206,246,49,187,228,152,163,148,115,124,225,92,31,115,125,206,211,202,70,31,243,124,52,250,194,249,154,163,46,229,241,90,204,247,113,188,228,88,224,171,104,129,47,92,168,77,45,82,93,22,249,194,197,62,22,87,19,75,124,44,209,28,75,125,44,244,177,180,141,99,153,95,212,167,92,174,74,150,251,194,21,62,86,248,92,233,23,14,87,249,88,233,99,153,143,85,37,199,106,37,90,237,11,215,248,88,227,115,173,175,174,109,154,124,172,245,209,228,11,215,249,88,87,114,172,87,202,245,190,112,131,143,13,62,55,106,229,38,31,27,125,108,242,133,155,53,71,125,202,19,181,216,236,227,68,201,177,197,87,209,22,95,184,85,155,218,166,186,108,243,133,219,125,108,175,38,118,248,216,161,57,118,250,216,234,99,103,27,199,46,191,104,72,185,91,149,236,246,133,123,124,236,241,217,236,23,46,247,250,104,246,177,203,199,222,146,99,159,18,237,243,133,251,125,236,247,121,192,87,183,12,7,125,28,240,113,208,23,30,242,113,168,228,56,172,148,135,125,225,17,31,71,124,30,213,202,99,62,142,250,56,230,11,143,107,142,134,148,39,107,113,220,199,201,146,227,132,175,162,19,190,240,164,54,117,74,117,57,229,11,79,251,56,93,77,180,248,104,209,28,103,124,156,244,113,166,141,227,172,95,52,166,60,167,74,206,249,194,243,62,206,251,188,224,23,30,47,250,184,224,227,172,143,139,37,199,37,37,186,228,11,47,251,184,236,243,138,175,110,25,174,250,184,226,227,170,47,188,230,227,90,201,113,93,41,175,251,194,27,62,110,248,188,169,149,183,124,220,244,113,203,23,182,106,142,198,148,167,106,209,234,227,84,201,113,219,87,209,109,95,120,71,155,186,171,186,220,245,133,247,124,220,171,38,238,251,184,175,57,30,248,184,227,227,129,226,136,223,143,138,49,234,180,243,208,47,126,145,143,124,125,218,121,232,227,145,175,78,59,143,253,194,224,19,31,143,125,60,241,63,225,83,31,79,253,55,78,59,207,252,162,41,229,115,53,210,115,95,248,194,199,11,159,47,253,162,134,117,1,94,250,120,230,163,46,168,226,119,10,224,160,83,32,236,28,160,115,192,46,129,90,100,93,3,116,9,208,53,16,118,11,208,45,168,226,119,87,202,238,129,176,71,128,30,1,123,106,101,175,0,61,3,244,10,132,189,3,125,218,73,121,186,22,189,3,156,46,241,251,4,42,234,19,8,251,6,202,84,63,213,165,95,32,236,31,160,127,53,49,32,192,128,64,225,215,7,232,27,160,62,120,61,141,3,131,162,57,229,32,85,50,40,16,14,14,48,56,224,144,160,48,56,52,192,144,0,3,3,12,45,57,134,41,209,176,64,56,60,192,240,128,35,130,98,167,193,145,1,70,4,24,25,8,71,5,24,85,114,140,86,202,209,129,112,76,128,49,1,199,106,229,184,0,99,3,140,11,132,227,53,71,115,202,150,90,140,15,208,82,114,52,4,42,106,8,132,19,180,169,137,170,203,196,64,56,41,192,164,106,98,114,128,201,154,99,74,128,9,1,166,40,142,248,143,162,162,73,77,227,212,160,248,2,167,5,122,26,167,6,152,22,168,105,156,174,80,102,4,152,30,96,70,240,9,103,6,152,25,188,49,141,179,130,162,37,229,108,53,210,236,64,56,39,192,156,128,115,131,162,134,243,2,204,13,48,43,192,188,18,191,81,137,26,3,225,252,0,243,3,46,8,138,103,6,23,6,88,16,96,97,32,92,20,96,81,137,191,88,41,23,7,194,37,1,150,4,92,170,149,203,2,44,13,176,44,16,46,215,248,45,41,207,212,98,121,128,51,37,254,138,64,69,43,2,225,74,109,106,149,234,178,42,16,174,14,176,186,154,88,19,96,141,198,95,27,96,101,128,181,109,211,216,20,20,173,41,215,169,146,117,129,112,125,128,245,1,55,40,246,141,1,54,4,104,10,176,177,228,216,164,68,155,2,225,230,0,155,3,110,9,212,157,198,214,0,91,2,108,13,132,219,2,108,43,57,182,43,229,246,64,184,35,192,142,128,59,181,114,87,128,157,1,118,5,194,221,154,163,53,229,217,90,236,14,112,182,228,216,19,168,104,79,32,108,214,166,246,170,46,123,3,225,190,0,251,170,137,253,1,246,107,142,3,1,154,3,28,104,227,56,24,20,117,25,15,169,146,67,129,240,112,128,195,1,143,4,133,201,163,1,142,4,56,24,224,104,201,113,76,137,142,5,194,227,1,142,7,60,17,20,59,109,158,12,112,34,192,201,64,120,42,192,169,146,227,180,82,158,14,132,45,1,90,2,158,209,202,179,1,206,4,56,27,8,207,105,142,186,140,231,106,113,46,192,185,146,227,124,160,162,243,129,240,130,54,117,81,117,185,24,8,47,5,184,84,77,92,14,112,89,115,92,9,112,33,192,149,54,142,171,65,81,159,241,154,42,185,22,8,175,7,184,30,240,70,80,88,188,25,224,70,128,171,1,110,150,28,183,148,232,86,32,108,13,208,26,240,118,80,108,116,120,39,192,237,0,119,2,225,221,0,119,75,142,123,74,121,47,16,222,15,112,63,224,3,173,124,24,224,65,128,135,129,240,145,230,168,207,120,190,22,143,2,156,47,57,30,7,42,122,28,8,159,104,83,79,85,151,167,129,240,89,128,103,213,196,243,0,207,53,199,139,0,79,2,188,104,227,120,25,20,13,25,235,66,56,168,11,133,157,66,116,10,217,57,44,108,118,9,209,57,196,203,0,93,194,42,71,87,37,234,26,10,187,133,232,22,178,123,88,180,212,176,71,136,238,33,122,132,194,158,33,122,134,85,142,94,74,217,43,20,246,14,209,59,100,31,173,236,27,162,79,136,190,161,176,95,168,207,86,25,47,212,162,95,136,11,37,71,255,80,69,253,67,225,128,80,153,170,87,93,234,67,225,192,16,3,171,137,65,33,6,133,138,99,112,136,1,33,6,135,175,57,134,132,69,99,198,161,170,100,104,40,28,22,98,88,200,225,97,225,112,68,136,225,33,134,132,24,81,114,140,84,162,145,161,112,84,136,81,33,71,135,234,32,60,38,196,232,16,99,66,225,216,16,99,75,142,113,74,57,46,20,142,15,49,62,100,131,86,78,8,209,16,98,66,40,156,168,57,26,51,94,172,197,196,16,23,75,142,73,161,138,38,133,194,201,218,212,20,213,101,74,40,156,26,98,106,53,49,45,196,52,205,49,61,196,228,16,211,219,56,102,132,69,83,198,153,170,100,102,40,156,21,98,86,200,217,97,225,114,78,136,217,33,102,132,152,83,114,204,85,162,185,161,112,94,136,121,33,27,67,117,173,57,63,68,99,136,249,161,112,65,136,5,37,199,66,165,92,24,10,23,133,88,20,114,177,86,46,9,177,56,196,146,80,184,84,115,52,101,188,84,139,165,33,46,149,28,203,66,21,45,11,133,203,181,169,21,170,203,138,80,184,50,196,202,106,98,85,136,85,154,99,117,136,229,33,86,183,113,172,9,139,230,140,107,85,201,218,80,216,20,162,41,228,186,176,240,184,62,196,186,16,107,66,172,47,57,54,40,209,134,80,184,49,196,198,144,155,194,162,171,199,205,33,54,133,216,28,10,183,132,216,82,114,108,85,202,173,161,112,91,136,109,33,183,107,229,142,16,219,67,236,8,133,59,53,71,115,198,203,181,216,25,226,114,201,177,43,84,209,174,80,184,91,155,218,163,186,236,9,133,205,33,154,171,137,189,33,246,106,142,125,33,118,135,216,215,198,177,63,44,90,50,30,80,37,7,66,225,193,16,7,67,30,10,11,159,135,67,28,10,177,63,196,225,146,227,136,18,29,9,133,71,67,28,13,121,44,84,215,54,199,67,28,11,113,60,20,158,8,113,162,228,56,169,148,39,67,225,169,16,167,66,158,214,202,150,16,167,67,180,132,194,51,154,163,37,227,149,90,156,9,113,165,228,56,27,170,232,108,40,60,167,77,157,87,93,206,135,194,11,33,46,84,19,23,67,92,212,28,151,66,156,11,113,73,113,196,127,24,21,39,212,233,243,114,88,180,227,149,80,159,62,47,135,184,18,170,211,231,213,176,48,120,45,196,213,16,215,194,79,120,61,196,245,240,141,211,231,141,176,104,205,120,83,141,116,51,20,222,10,113,43,100,107,88,212,240,118,136,214,16,55,66,220,46,241,239,40,209,157,80,120,55,196,221,144,247,66,117,82,188,31,226,94,136,251,161,240,65,136,7,37,254,67,165,124,24,10,31,133,120,20,242,177,86,62,9,241,56,196,147,80,248,84,227,183,102,188,90,139,167,33,174,150,248,207,66,21,61,11,133,207,181,169,23,170,203,139,80,248,50,196,203,106,162,46,66,93,164,240,59,69,120,30,162,83,244,122,26,59,71,69,93,206,46,145,186,203,140,132,93,35,116,141,216,45,42,12,118,143,208,45,66,231,8,221,163,42,71,15,37,234,17,9,123,70,232,25,177,87,164,14,194,189,35,244,138,208,59,18,246,137,208,39,170,114,244,85,202,190,145,176,95,132,126,17,251,107,229,128,8,253,35,12,136,132,245,145,62,237,228,188,86,139,250,8,215,74,142,129,145,138,6,70,194,65,218,212,96,213,101,112,36,28,18,97,72,53,49,52,194,80,205,49,44,194,160,8,195,218,56,134,71,69,125,206,17,170,100,68,36,28,25,97,100,196,81,81,97,114,116,132,81,17,134,71,24,93,114,140,81,162,49,145,112,108,132,177,17,199,69,234,150,122,124,132,113,17,198,71,194,134,8,13,37,199,4,165,156,16,9,39,70,152,24,113,146,86,78,142,48,41,194,228,72,56,69,115,212,231,188,94,139,41,17,174,151,28,83,35,21,77,141,132,211,180,169,233,170,203,244,72,56,35,194,140,106,98,102,132,153,154,99,86,132,105,17,102,181,113,204,142,138,134,156,115,84,201,156,72,56,55,194,220,136,243,162,194,98,99,132,121,17,102,71,104,44,57,230,43,209,252,72,184,32,194,130,136,11,35,117,16,94,20,97,97,132,69,145,112,113,132,197,37,199,18,165,92,18,9,151,70,88,26,113,153,86,46,143,176,44,194,242,72,184,66,115,52,228,188,81,139,21,17,110,148,28,43,35,21,173,140,132,171,180,169,213,170,203,234,72,184,38,194,154,106,98,109,132,181,154,163,41,194,170,8,77,109,28,235,162,162,49,231,122,85,178,62,18,110,136,176,33,226,198,168,176,185,41,194,198,8,235,34,108,42,57,54,43,209,230,72,184,37,194,150,136,91,35,117,16,222,22,97,107,132,109,145,112,123,132,237,37,199,14,165,220,17,9,119,70,216,25,113,151,86,238,142,176,43,194,238,72,184,71,115,52,230,188,89,139,61,17,110,150,28,205,145,138,154,35,225,94,109,106,159,234,178,47,18,238,143,176,191,154,56,16,225,128,230,56,24,97,111,132,131,109,28,135,162,162,41,231,97,85,114,56,18,30,137,112,36,226,209,168,112,120,44,194,209,8,135,34,28,43,57,142,43,209,241,72,120,34,194,137,136,39,35,117,16,62,21,225,100,132,83,145,240,116,132,211,37,71,139,82,182,68,194,51,17,206,68,60,171,149,231,34,156,141,112,46,18,158,215,28,77,57,111,213,226,124,132,91,37,199,133,72,69,23,34,225,69,109,234,146,234,114,41,18,94,142,112,185,154,184,18,225,138,230,184,26,225,98,132,171,109,28,215,162,162,57,231,117,85,114,61,18,222,136,112,35,226,205,168,112,121,43,194,205,8,215,34,220,42,57,90,149,168,53,18,222,142,112,59,226,157,72,29,132,239,70,184,19,225,110,36,188,23,225,94,201,113,95,41,239,71,194,7,17,30,68,124,168,149,143,34,60,140,240,40,18,62,214,28,205,57,91,107,241,56,66,107,201,241,36,82,209,147,72,248,84,155,122,166,186,60,139,132,207,35,60,175,38,94,68,120,161,57,94,70,120,26,225,165,226,136,255,32,42,110,169,195,117,93,92,252,10,59,85,95,119,172,139,209,73,191,240,216,57,46,12,118,137,209,57,70,151,248,19,118,141,209,53,126,227,112,221,45,46,90,114,118,143,213,93,102,44,236,17,163,71,204,158,113,81,195,94,49,122,198,232,22,163,87,92,62,136,161,68,189,99,97,159,24,125,98,246,141,139,6,147,253,98,244,141,209,47,22,246,143,209,63,46,31,196,80,202,1,177,176,62,70,125,204,129,90,57,40,198,192,24,131,98,225,224,88,159,173,114,222,174,197,224,24,183,95,61,136,17,171,104,72,44,28,170,77,13,83,93,134,197,194,225,49,134,87,19,35,98,140,136,245,131,24,49,134,198,24,25,183,61,136,17,23,173,57,71,171,146,209,177,112,76,140,49,49,199,42,246,113,49,198,198,24,21,99,92,201,49,94,137,198,199,194,134,24,13,49,39,196,69,139,197,137,49,38,196,152,24,11,39,197,152,84,114,76,86,202,201,177,112,74,140,41,49,167,106,229,180,24,83,99,76,139,133,211,53,71,107,206,59,181,152,30,227,206,171,7,49,98,21,205,136,133,51,181,169,89,170,203,172,88,56,59,198,236,106,98,78,140,57,154,99,110,140,153,49,230,182,113,204,139,139,186,10,27,85,73,99,44,156,31,99,126,204,5,113,97,114,97,140,5,49,230,197,88,88,114,44,82,162,69,177,112,113,140,197,49,151,196,234,32,188,52,198,146,24,75,99,225,178,24,203,74,142,229,74,185,60,22,174,136,177,34,230,74,173,92,21,99,101,140,85,177,112,181,230,168,171,240,110,45,86,199,184,251,234,65,140,88,69,107,98,225,90,109,170,73,117,105,138,133,235,98,172,171,38,214,199,88,175,57,54,196,88,27,99,67,27,199,198,184,168,175,112,147,42,217,20,11,55,199,216,28,115,75,92,88,220,26,99,75,140,141,49,182,150,28,219,148,104,91,44,220,30,99,123,204,29,113,113,221,226,206,24,59,98,236,140,133,187,98,236,42,57,118,43,229,238,88,184,39,198,158,152,205,90,185,55,70,115,140,189,177,112,159,230,168,175,240,94,45,246,197,184,247,234,65,140,88,69,251,99,225,1,109,234,160,234,114,48,22,30,138,113,168,154,56,28,227,176,230,56,18,227,64,140,35,109,28,71,227,162,161,194,99,170,228,88,44,60,30,227,120,204,19,113,97,243,100,140,19,49,142,198,56,89,114,156,82,162,83,177,240,116,140,211,49,91,226,162,167,195,51,49,90,98,156,137,133,103,99,156,45,57,206,41,229,185,88,120,62,198,249,152,23,180,242,98,140,11,49,46,198,194,75,154,163,161,194,251,181,184,20,227,254,171,7,49,98,21,93,142,133,87,180,169,171,170,203,213,88,120,45,198,181,106,226,122,140,235,154,227,70,140,43,49,110,180,113,220,140,139,198,10,111,169,146,91,177,176,53,70,107,204,219,113,225,240,78,140,219,49,110,198,184,83,114,220,85,162,187,177,240,94,140,123,49,239,199,234,164,248,32,198,253,24,15,98,225,195,24,15,75,142,71,74,249,40,22,62,142,241,56,230,19,173,124,26,227,73,140,167,177,240,153,230,104,172,240,65,45,158,197,120,240,234,65,140,88,69,207,99,225,11,109,234,165,234,242,50,22,214,37,168,75,116,162,83,130,78,137,126,16,35,193,139,24,157,147,182,7,49,146,162,169,194,174,137,186,177,76,132,221,18,116,75,216,61,41,92,246,72,208,61,65,151,4,61,146,242,65,12,37,234,153,8,123,37,232,149,176,119,162,78,38,125,18,244,78,208,39,17,246,77,208,55,41,31,196,80,202,126,137,176,127,130,254,9,7,104,101,125,130,1,9,234,19,225,192,68,159,118,42,124,88,139,129,9,30,190,122,16,35,81,209,160,68,56,88,155,26,162,186,12,73,132,67,19,12,173,38,134,37,24,166,57,134,39,24,156,96,120,27,199,136,164,104,174,112,164,42,25,153,8,71,37,24,149,112,116,82,120,28,147,96,116,130,17,9,198,148,28,99,149,104,108,34,28,151,96,92,194,241,73,177,202,101,67,130,241,9,26,18,225,132,4,19,74,142,137,74,57,49,17,78,74,48,41,225,100,173,156,146,96,114,130,41,137,112,170,230,104,174,240,81,45,166,38,120,244,234,65,140,68,69,211,18,225,116,109,106,134,234,50,35,17,206,76,48,179,154,152,149,96,150,230,152,157,96,122,130,217,109,28,115,146,162,165,194,185,170,100,110,34,156,151,96,94,194,198,164,240,57,63,65,99,130,57,9,230,151,28,11,148,104,65,34,92,152,96,97,194,69,137,58,41,46,78,176,40,193,226,68,184,36,193,146,146,99,169,82,46,77,132,203,18,44,75,184,92,43,87,36,88,158,96,69,34,92,169,57,90,42,124,92,139,149,9,30,191,122,16,35,81,209,170,68,184,90,155,90,163,186,172,73,132,107,19,172,173,38,154,18,52,105,142,117,9,86,39,88,167,56,226,223,143,138,97,51,155,106,184,62,41,62,207,13,73,245,65,140,4,27,18,253,32,70,82,24,220,148,96,99,130,77,201,39,220,156,96,115,242,230,131,24,73,209,90,225,86,53,210,214,68,184,45,193,182,132,219,147,162,134,59,18,108,79,176,37,193,142,18,127,167,18,237,76,132,187,18,236,74,184,59,41,234,109,238,73,176,59,193,158,68,216,156,160,185,196,223,171,148,123,19,225,190,4,251,18,238,215,202,3,9,246,39,56,144,8,15,106,252,214,10,159,212,226,96,130,39,175,30,196,72,84,116,40,17,30,214,166,142,168,46,71,18,225,209,4,71,171,137,99,9,142,105,252,227,9,14,39,56,222,54,141,39,146,162,238,45,158,84,37,39,19,225,169,4,167,18,158,86,236,45,9,78,39,56,145,160,165,228,56,163,68,103,18,225,217,4,103,19,158,75,138,174,54,207,39,56,151,224,124,34,188,144,224,66,201,113,81,41,47,38,194,75,9,46,37,188,172,149,87,18,92,78,112,37,17,94,213,28,117,111,241,105,45,174,38,120,250,234,65,140,68,69,215,18,225,117,109,234,134,234,114,35,17,222,76,112,179,154,184,149,224,150,230,104,77,112,61,65,107,27,199,237,164,168,127,139,119,84,201,157,68,120,55,193,221,132,247,146,194,228,253,4,247,18,220,78,112,191,228,120,160,68,15,18,225,195,4,15,19,62,74,212,53,243,227,4,143,18,60,78,132,79,18,60,41,57,158,42,229,211,68,248,44,193,179,132,207,181,242,69,130,231,9,94,36,194,151,154,163,254,45,62,171,197,203,4,207,94,61,136,145,170,168,46,21,118,74,149,169,206,41,28,116,78,133,93,82,116,73,117,162,107,138,174,169,126,16,35,69,167,20,221,210,182,215,44,211,162,225,45,246,80,37,61,82,97,207,20,61,83,246,74,11,139,189,83,244,74,209,61,69,239,180,124,205,82,137,250,164,194,190,41,250,166,236,151,22,211,109,246,79,209,47,69,255,84,56,32,197,128,180,124,205,82,41,235,83,225,192,20,3,83,14,210,202,193,41,6,165,24,156,10,135,164,250,180,243,22,159,215,98,72,138,231,175,94,179,76,85,52,52,21,14,211,166,134,171,46,195,83,225,136,20,35,170,137,145,41,70,106,142,81,41,134,165,24,213,198,49,58,45,26,223,226,24,85,50,38,21,142,77,49,54,229,184,180,176,57,62,197,184,20,163,83,140,47,57,26,148,168,33,21,78,72,49,33,229,196,180,152,109,114,82,138,137,41,38,165,194,201,41,38,151,28,83,148,114,74,42,156,154,98,106,202,105,90,57,61,197,180,20,211,83,225,12,205,209,248,22,95,212,98,70,138,23,175,94,179,76,85,52,51,21,206,210,166,102,171,46,179,83,225,156,20,115,170,137,185,41,230,106,142,121,41,102,165,152,215,198,209,152,22,77,111,113,190,42,153,159,10,23,164,88,144,114,97,90,56,92,148,98,97,138,198,20,139,74,142,197,74,180,56,21,46,73,177,36,229,210,180,88,100,115,89,138,165,41,150,165,194,229,41,150,151,28,43,148,114,69,42,92,153,98,101,202,85,90,185,58,197,170,20,171,83,225,26,205,209,244,22,95,214,98,77,138,151,175,94,179,76,85,180,54,21,54,105,83,235,84,151,117,169,112,125,138,245,213,196,134,20,27,52,199,198,20,77,41,54,182,113,108,74,139,230,183,184,89,149,108,78,133,91,82,108,73,185,53,45,92,110,75,177,53,197,166,20,219,74,142,237,74,180,61,21,238,72,177,35,229,206,84,93,164,236,74,177,51,197,174,84,184,59,197,238,146,99,143,82,238,73,133,205,41,154,83,238,213,202,125,41,246,166,216,151,10,247,107,142,230,183,88,215,30,251,83,212,181,47,95,179,76,85,116,32,21,30,212,166,14,169,46,135,82,225,225,20,135,171,137,35,41,142,104,142,163,41,14,166,56,218,198,113,44,45,90,222,226,113,85,114,60,21,158,72,113,34,229,201,180,240,120,42,197,201,20,199,82,156,42,57,78,43,209,233,84,216,146,162,37,229,153,180,184,238,242,108,138,51,41,206,166,194,115,41,206,149,28,231,149,242,124,42,188,144,226,66,202,139,90,121,41,197,197,20,151,82,225,101,205,209,242,22,59,181,199,229,20,157,74,142,43,169,138,174,164,194,171,218,212,53,213,229,90,42,188,158,226,122,53,113,35,197,13,205,113,51,197,213,20,55,219,56,110,165,69,235,91,108,85,37,173,169,240,118,138,219,41,239,164,133,207,187,41,238,164,184,149,226,110,201,113,79,137,238,165,194,251,41,238,167,124,144,22,45,46,31,166,120,144,226,97,42,124,148,226,81,201,241,88,41,31,167,194,39,41,158,164,124,170,149,207,82,60,77,241,44,21,62,215,28,173,111,177,115,123,60,79,209,185,228,120,145,170,232,69,42,124,169,77,213,101,112,80,151,9,59,101,232,148,233,68,231,12,157,51,253,154,101,134,151,41,186,100,109,175,89,102,69,93,59,118,83,37,221,50,97,247,12,221,51,246,200,138,128,61,51,244,200,208,53,67,207,172,124,205,82,137,122,101,194,222,25,122,103,236,147,21,99,108,246,205,208,39,67,223,76,216,47,67,191,172,124,205,82,41,251,103,194,1,25,6,100,172,215,202,129,25,234,51,12,204,132,131,50,125,254,104,199,46,237,49,40,67,151,146,99,112,166,162,193,153,112,136,54,53,84,117,25,154,9,135,101,24,86,77,12,207,48,92,115,140,200,48,36,195,136,54,142,145,89,81,223,142,163,84,201,168,76,56,58,195,232,140,99,178,34,228,216,12,99,50,140,204,48,182,228,24,167,68,227,50,225,248,12,227,51,54,100,250,79,253,25,26,50,76,200,132,19,51,76,44,57,38,41,229,164,76,56,57,195,228,140,83,180,114,106,134,41,25,166,102,194,105,154,163,190,29,187,182,199,180,12,93,75,142,233,153,138,166,103,194,25,218,212,76,213,101,102,38,156,149,97,86,53,49,59,195,108,205,49,39,195,140,12,115,218,56,230,102,69,67,59,206,83,37,243,50,97,99,134,198,140,243,179,34,226,130,12,243,51,204,205,176,160,228,88,168,68,11,51,225,162,12,139,50,46,206,212,197,239,146,12,139,51,44,201,132,75,51,44,45,57,150,41,229,178,76,184,60,195,242,140,43,180,114,101,134,21,25,86,102,194,85,154,163,161,29,187,181,199,170,12,221,74,142,213,153,138,86,103,194,53,218,212,90,213,101,109,38,108,202,208,84,77,172,203,176,78,115,172,207,176,38,195,250,54,142,13,89,209,216,142,27,85,201,198,76,184,41,195,166,140,155,179,34,230,150,12,155,51,108,200,176,165,228,216,170,68,91,51,225,182,12,219,50,110,207,212,197,239,142,12,219,51,236,200,132,59,51,236,44,57,118,41,229,174,76,184,59,195,238,140,123,180,178,57,195,158,12,205,153,112,175,230,104,108,199,238,237,177,55,67,247,146,99,95,166,162,125,153,112,191,54,117,64,117,57,144,9,15,102,56,88,77,28,202,112,72,115,28,206,176,63,195,225,54,142,35,89,209,212,142,71,85,201,209,76,120,44,195,177,140,199,179,34,225,137,12,199,51,28,201,112,162,228,56,169,68,39,51,225,169,12,167,50,158,206,244,159,250,51,156,206,208,146,9,207,100,56,83,114,156,85,202,179,153,240,92,134,115,25,207,107,229,133,12,231,51,92,200,132,23,53,71,83,59,246,104,143,139,25,122,148,28,151,50,21,93,202,132,151,181,169,43,170,203,149,76,120,53,195,213,106,226,90,134,107,154,227,122,134,203,25,174,43,142,248,247,162,162,81,93,38,223,200,138,47,242,102,86,125,205,50,195,205,76,191,102,153,21,6,91,51,220,202,208,154,125,194,219,25,110,103,111,190,102,153,21,205,237,120,87,141,116,55,19,222,203,112,47,227,253,172,168,225,131,12,247,51,220,201,240,160,196,127,168,68,15,51,225,163,12,143,50,62,206,212,197,214,147,12,143,51,60,201,132,79,51,60,45,241,159,41,229,179,76,248,60,195,243,140,47,180,242,101,134,23,25,94,102,194,186,92,159,118,218,177,103,123,212,229,232,89,226,119,202,85,212,41,23,118,206,149,169,46,57,28,116,201,133,93,115,116,173,38,186,229,232,150,235,215,44,115,116,206,209,61,111,123,205,50,47,90,218,177,167,42,233,153,11,123,229,232,149,179,119,94,24,236,147,163,119,142,30,57,250,228,229,107,150,74,212,55,23,246,203,209,47,103,255,188,104,178,57,32,71,255,28,3,114,97,125,142,250,188,124,205,82,41,7,230,194,65,57,6,229,28,172,149,67,114,12,206,49,36,23,14,213,28,45,237,216,171,61,134,230,232,85,114,12,203,85,52,44,23,14,215,166,70,168,46,35,114,225,200,28,35,171,137,81,57,70,105,142,209,57,134,231,24,221,198,49,38,47,90,219,113,172,42,25,155,11,199,229,24,151,115,124,94,152,108,200,49,62,199,152,28,13,37,199,4,37,154,144,11,39,230,152,152,115,82,94,108,116,56,57,199,164,28,147,115,225,148,28,83,74,142,169,74,57,53,23,78,203,49,45,231,116,173,156,145,99,122,142,25,185,112,166,230,104,109,199,222,237,49,51,71,239,146,99,86,174,162,89,185,112,182,54,53,71,117,153,147,11,231,230,152,91,77,204,203,49,79,115,52,230,152,157,163,81,113,196,191,27,21,39,212,114,156,159,23,49,23,228,122,57,206,207,177,32,87,203,113,161,154,146,69,57,22,230,88,148,127,194,197,57,22,231,111,44,199,37,121,81,247,54,151,170,145,150,230,194,101,57,150,229,92,158,23,53,92,145,99,121,142,37,57,86,148,248,43,149,104,101,46,92,149,99,85,206,213,185,186,23,91,147,99,117,142,53,185,112,109,142,181,37,126,147,82,54,229,194,117,57,214,229,92,175,149,27,114,172,207,177,33,23,110,212,248,117,111,179,79,123,108,204,209,167,196,223,148,171,104,83,46,220,172,77,109,81,93,182,228,194,173,57,182,86,19,219,114,108,211,248,219,115,108,206,177,189,109,26,119,228,69,253,219,220,169,74,118,230,194,93,57,118,229,220,173,216,247,228,216,157,99,71,142,61,37,71,179,18,53,231,194,189,57,246,230,220,151,171,123,177,253,57,246,229,216,159,11,15,228,56,80,114,28,84,202,131,185,240,80,142,67,57,15,107,229,145,28,135,115,28,201,133,71,53,71,253,219,236,219,30,71,115,244,45,57,142,229,42,58,150,11,143,107,83,39,84,151,19,185,240,100,142,147,213,196,169,28,167,52,199,233,28,199,115,156,110,227,104,201,139,134,183,121,70,149,156,201,133,103,115,156,205,121,78,45,199,243,57,206,229,104,201,113,190,228,184,160,68,23,114,225,197,28,23,115,94,202,213,151,254,114,142,75,57,46,231,194,43,57,174,148,28,87,149,242,106,46,188,150,227,90,206,235,90,121,35,199,245,28,55,114,225,77,205,209,240,54,251,181,199,205,28,253,74,142,91,185,138,110,229,194,86,109,234,182,234,114,59,23,222,201,113,167,154,184,155,227,174,230,184,151,163,53,199,189,54,142,251,121,209,248,54,31,168,146,7,185,240,97,142,135,57,31,229,133,197,199,57,30,229,184,159,227,113,201,241,68,137,158,228,194,167,57,158,230,124,150,171,123,177,231,57,158,229,120,158,11,95,228,120,81,114,188,84,202,151,185,176,174,130,186,10,59,85,148,178,115,5,157,42,232,92,17,118,169,232,179,213,219,236,223,30,93,42,232,95,114,116,173,168,168,107,69,216,173,162,76,117,175,192,65,247,138,176,71,5,61,170,137,158,21,244,172,40,142,94,21,116,171,160,87,229,53,71,239,74,209,244,54,251,168,146,62,21,97,223,10,250,86,216,175,82,216,236,95,65,191,10,122,87,208,191,82,229,24,160,68,3,42,194,250,10,234,43,28,88,81,247,98,131,42,24,88,193,160,138,112,112,5,131,43,85,142,33,74,57,164,34,28,90,193,208,10,135,105,229,240,10,134,85,48,188,34,28,161,57,154,222,230,128,246,24,81,193,128,146,99,100,69,69,35,43,194,81,218,212,104,213,101,116,69,56,166,130,49,213,196,216,10,198,106,142,113,21,140,170,96,92,27,199,248,74,209,252,54,27,84,73,67,69,56,161,130,9,21,78,172,20,14,39,85,48,177,130,241,21,76,42,57,38,43,209,228,138,112,74,5,83,42,156,90,81,247,98,211,42,152,90,193,180,138,112,122,5,211,75,142,25,74,57,163,34,156,89,193,204,10,103,105,229,236,10,102,85,48,187,34,156,163,57,154,223,102,125,123,204,169,160,190,228,152,91,81,209,220,138,112,158,54,213,168,186,52,86,132,243,43,152,95,77,44,168,96,129,230,88,88,193,188,10,22,182,113,44,170,20,45,111,115,177,42,89,92,17,46,169,96,73,133,75,43,133,203,101,21,44,173,96,81,5,203,74,142,229,74,180,188,34,92,81,193,138,10,87,86,244,59,151,21,172,172,96,85,69,184,186,130,213,37,199,26,165,92,83,17,174,173,96,109,133,77,90,185,174,130,166,10,214,85,132,235,53,71,203,219,28,216,30,235,43,24,88,114,108,168,168,104,67,69,184,81,155,218,164,186,108,170,8,55,87,176,185,154,216,82,193,22,205,177,181,130,141,21,108,109,227,216,86,41,90,223,230,118,85,178,189,34,220,81,193,142,10,119,86,10,143,187,42,216,89,193,182,10,118,149,28,187,149,104,119,69,184,167,130,61,21,54,87,138,243,30,247,86,208,92,193,222,138,112,95,5,251,74,142,253,74,185,191,34,60,80,193,129,10,15,106,229,161,10,14,86,112,168,34,60,172,57,90,223,230,160,246,56,92,193,160,146,227,72,69,69,71,42,194,163,218,212,49,213,229,88,69,120,188,130,227,213,196,137,10,78,104,142,147,21,28,173,224,100,27,199,169,74,81,247,57,158,86,37,167,43,194,150,10,90,42,60,83,41,124,158,173,224,76,5,167,42,56,91,114,156,83,162,115,21,225,249,10,206,87,120,161,82,140,112,121,177,130,11,21,92,172,8,47,85,240,127,49,245,94,63,86,164,223,222,31,204,12,51,231,156,25,219,47,149,115,125,191,85,181,47,124,105,89,214,43,203,178,172,146,101,89,150,229,253,147,255,141,117,55,255,65,147,51,52,57,67,147,155,220,64,147,83,211,228,220,228,12,77,78,13,52,185,201,175,158,103,23,103,207,229,210,250,172,181,215,135,98,215,83,245,168,170,247,227,202,227,137,34,159,12,21,62,29,138,167,67,249,76,147,207,135,226,217,80,60,31,42,236,211,30,45,54,167,215,209,55,20,211,43,143,23,67,85,244,98,168,240,165,30,234,149,234,242,106,168,176,127,40,250,27,137,215,67,241,90,123,188,25,138,151,67,241,166,233,241,118,104,217,106,243,157,42,121,55,84,248,126,40,222,15,229,135,161,229,191,243,227,80,124,24,138,183,67,241,177,242,24,80,208,192,80,225,167,161,248,52,148,159,135,150,19,127,231,151,161,248,60,20,95,134,10,191,14,197,215,202,227,155,34,191,13,21,126,31,138,239,67,249,67,147,45,6,126,12,69,139,33,28,102,232,245,195,230,140,58,134,25,152,81,121,12,55,84,52,220,16,142,48,212,80,35,13,12,193,72,67,56,202,192,168,70,98,180,129,209,134,242,24,99,96,132,129,49,198,127,122,140,53,202,54,155,227,84,201,56,67,56,222,192,120,131,19,140,242,63,56,209,192,4,3,99,13,76,52,26,30,147,20,52,201,16,78,54,48,217,224,20,163,188,250,7,91,13,76,49,208,106,8,167,26,152,106,52,60,166,41,114,154,33,156,110,96,186,193,25,154,156,105,96,134,129,153,134,112,150,246,104,179,57,179,142,89,6,102,86,30,179,13,21,205,54,132,115,244,80,115,85,151,185,134,112,158,129,121,141,196,124,3,243,181,199,2,3,115,12,44,104,122,44,52,202,14,155,139,84,201,34,67,184,216,192,98,131,109,70,249,39,151,24,104,51,176,208,192,146,202,99,169,130,150,26,194,101,6,150,25,92,110,168,123,227,21,6,150,27,88,97,8,87,26,88,89,121,172,82,228,42,67,216,110,160,221,224,106,77,174,49,176,218,192,26,67,184,86,123,116,216,156,85,199,90,3,179,42,143,117,134,138,214,25,194,245,122,168,13,170,203,6,67,184,209,192,198,70,162,195,64,135,246,216,100,96,189,129,77,77,143,205,70,217,101,115,139,42,217,98,8,59,13,116,26,220,106,148,127,113,155,129,173,6,54,27,216,86,121,108,87,208,118,67,184,195,192,14,131,59,13,253,23,21,13,236,52,176,203,16,238,54,176,187,242,216,163,200,61,134,112,175,129,189,6,247,105,114,191,129,125,6,246,27,194,46,237,209,101,115,118,29,93,6,102,87,30,7,12,21,29,48,132,221,122,168,131,170,203,65,67,120,200,192,161,70,226,176,129,195,218,227,136,129,110,3,71,154,30,71,141,178,199,230,49,85,114,204,16,30,55,112,220,224,9,163,252,239,120,210,192,9,3,71,13,156,172,60,78,41,232,148,33,60,109,224,180,193,51,134,186,55,62,107,224,140,129,179,134,176,199,64,79,229,113,78,145,231,12,225,121,3,231,13,94,208,228,69,3,23,12,92,52,132,151,180,71,143,205,57,117,92,50,48,167,242,184,108,168,232,178,33,188,162,135,186,170,186,92,53,132,215,12,92,107,36,174,27,184,174,61,110,24,184,98,224,70,211,227,166,81,246,218,188,165,74,110,25,194,219,6,110,27,188,99,148,255,61,123,13,220,49,112,211,64,111,229,113,87,65,119,13,225,61,3,247,12,222,55,202,5,127,240,129,129,251,6,30,24,194,135,6,30,86,30,143,20,249,200,16,62,54,240,216,224,19,77,62,53,240,196,192,83,67,248,76,123,244,218,156,91,199,51,3,115,43,143,231,134,138,158,27,194,62,61,212,11,213,229,133,33,124,105,224,101,35,241,202,192,43,237,209,111,160,207,64,127,211,227,181,81,246,219,124,163,74,222,24,194,183,6,222,26,124,103,148,255,3,223,27,120,103,224,181,129,247,149,199,7,5,125,48,132,31,13,124,52,56,96,168,123,252,79,6,6,12,124,50,132,159,13,124,174,60,190,40,242,139,33,252,106,224,171,193,111,154,252,110,224,155,129,239,134,240,135,246,232,183,57,175,142,31,6,230,85,30,45,166,138,90,76,225,48,83,13,53,220,196,16,12,55,133,35,76,140,48,117,98,164,137,145,166,222,221,55,49,204,196,40,179,185,187,111,150,45,14,199,168,146,49,166,112,172,137,177,38,199,153,229,127,225,120,19,227,76,140,54,49,222,172,118,247,21,52,193,20,78,52,49,209,228,36,83,221,227,79,54,49,201,196,100,83,56,197,196,20,179,218,221,87,100,171,41,156,106,98,170,201,105,154,156,110,98,154,137,233,166,112,134,169,215,15,135,243,235,152,97,98,126,229,49,211,84,209,76,83,56,75,15,53,91,117,153,109,10,231,152,152,211,72,204,53,49,87,123,204,51,49,203,196,60,229,241,215,255,255,103,249,68,221,126,205,55,75,151,11,76,125,251,53,223,196,2,83,221,126,45,52,203,193,92,100,98,161,137,69,230,223,92,108,98,177,249,143,219,175,54,179,108,117,184,68,125,210,18,83,184,212,196,82,147,203,204,114,16,151,155,88,102,162,205,196,242,74,127,133,130,86,152,194,149,38,86,154,92,101,170,47,125,187,137,85,38,218,77,225,106,19,171,43,253,53,138,92,99,10,215,154,88,107,114,157,38,215,155,88,103,98,189,41,220,160,245,91,29,46,168,99,131,137,5,149,254,70,83,69,27,77,97,135,30,106,147,234,178,201,20,110,54,177,185,145,216,98,98,139,214,239,52,209,97,162,83,235,255,235,207,242,135,210,223,170,244,183,53,244,183,154,216,166,245,183,43,253,29,38,182,155,216,97,254,205,157,38,118,254,83,127,151,89,182,57,220,173,62,105,183,41,220,99,98,143,201,189,74,127,159,137,189,38,118,153,216,87,233,239,87,208,126,83,216,101,162,203,228,1,45,213,109,226,128,137,110,83,120,208,196,193,74,255,144,34,15,153,194,195,38,14,155,60,162,201,163,38,142,152,56,106,10,143,105,253,54,135,11,235,56,102,98,97,165,127,220,84,209,113,83,120,66,15,117,82,117,57,105,10,79,153,56,213,72,156,54,113,90,235,159,49,113,194,196,153,230,255,226,179,102,217,225,176,71,149,244,152,194,115,38,206,153,60,175,220,47,152,56,111,226,172,137,11,149,199,69,5,93,52,133,151,76,92,50,121,217,44,219,255,224,21,19,151,77,92,49,133,87,77,92,173,60,174,41,242,154,41,188,110,226,186,201,27,154,188,105,226,134,137,155,166,240,150,246,232,112,184,168,142,91,38,22,85,30,183,77,21,221,54,133,119,244,80,189,170,75,175,41,188,107,226,110,35,113,207,196,61,237,113,223,196,29,19,247,245,97,252,255,254,44,103,173,237,26,196,7,102,105,243,97,227,48,62,48,241,80,31,198,71,74,229,177,137,71,38,30,155,127,243,137,137,39,255,60,140,79,205,178,203,225,51,245,73,207,76,225,115,19,207,77,246,169,195,248,194,68,159,137,167,38,94,84,250,47,21,244,210,20,190,50,241,202,100,191,62,56,175,77,244,155,120,109,10,223,152,120,83,233,191,85,228,91,83,248,206,196,59,147,239,53,249,193,196,123,19,31,76,225,71,173,223,229,112,113,29,31,77,44,174,244,7,76,21,13,152,194,79,122,168,207,170,203,103,83,248,197,196,151,70,226,171,137,175,90,255,155,137,79,38,190,53,15,227,119,179,236,113,248,67,149,252,48,133,45,22,90,44,14,179,202,193,28,110,97,152,133,239,38,134,91,213,223,187,182,48,4,35,44,225,72,11,35,45,142,178,202,222,95,57,218,194,40,11,163,45,225,24,11,99,172,234,239,93,43,114,172,37,28,103,97,156,197,241,154,156,96,97,188,133,9,150,112,162,165,23,57,135,109,117,76,180,208,86,121,76,178,84,52,201,18,78,182,212,80,83,84,151,41,150,176,213,66,107,35,49,213,194,84,75,255,189,107,11,147,45,76,179,154,127,239,218,42,123,29,206,80,37,51,44,225,76,11,51,45,206,178,202,95,56,219,194,44,11,211,45,204,174,60,230,40,104,142,37,156,107,97,174,197,121,86,217,247,43,231,91,152,103,97,190,37,92,96,97,65,229,177,80,145,11,45,225,34,11,139,44,46,214,100,155,133,197,22,218,44,225,18,237,209,235,112,73,29,75,44,44,169,60,150,90,42,90,106,9,151,233,161,150,171,46,203,45,225,10,11,43,26,137,149,22,86,106,143,85,22,150,89,88,213,244,104,183,202,126,135,171,85,201,106,75,184,198,194,26,139,107,173,242,87,174,179,176,214,66,187,133,117,149,199,122,5,173,183,132,27,44,108,176,184,209,82,183,112,29,22,54,90,232,176,132,155,44,108,170,60,54,43,114,179,37,220,98,97,139,197,78,77,110,181,208,105,97,171,37,220,166,61,250,29,46,173,99,155,133,165,149,199,118,75,69,219,45,225,14,61,212,78,213,101,167,37,220,101,97,87,35,177,219,194,110,237,177,199,194,14,11,123,154,30,123,173,178,197,229,62,85,178,207,18,238,183,176,223,98,151,85,254,198,3,22,186,44,236,181,112,160,242,232,86,80,183,37,60,104,225,160,197,67,150,250,210,31,182,112,200,194,97,75,120,196,194,145,202,227,168,34,143,90,194,99,22,142,89,60,174,201,19,22,142,91,56,97,9,79,106,143,22,151,203,234,56,105,97,89,229,113,202,82,209,41,75,120,90,15,117,70,117,57,99,9,207,90,56,219,72,244,88,232,209,30,231,44,156,182,112,174,233,113,222,42,91,93,94,80,37,23,44,225,69,11,23,45,94,178,202,33,188,108,225,146,133,243,22,46,87,30,87,20,116,197,18,94,181,112,213,226,53,75,191,115,105,225,154,133,235,150,240,134,133,27,149,199,77,69,222,180,132,183,44,220,178,120,91,147,119,44,220,182,112,199,18,246,106,143,86,151,203,235,232,181,176,188,242,184,107,169,232,174,37,188,167,135,186,175,186,220,183,132,15,44,60,104,36,30,90,120,168,61,30,89,184,103,225,81,211,227,177,85,182,185,124,162,74,158,88,194,167,22,158,90,124,102,149,191,243,185,133,103,22,30,91,120,94,121,244,41,168,207,18,190,176,240,194,226,75,75,191,115,105,225,165,133,87,150,176,223,66,127,229,241,90,145,175,45,225,27,11,111,44,190,213,228,59,11,111,45,188,179,132,239,181,71,155,203,21,117,188,183,176,162,242,248,96,169,232,131,37,252,168,135,26,80,93,6,44,225,39,11,159,26,137,207,22,62,107,143,47,22,62,90,248,162,60,254,250,127,255,44,215,170,211,245,87,75,221,103,90,250,116,253,213,194,55,75,157,174,191,171,83,214,15,11,223,45,252,176,254,102,139,141,22,251,31,167,235,97,118,217,225,114,184,173,46,211,108,225,8,27,35,108,142,180,203,65,28,101,99,164,141,97,54,70,217,13,253,209,10,26,109,11,199,216,24,99,115,172,93,182,253,194,113,54,198,218,24,103,11,199,219,24,111,55,244,39,40,114,130,45,156,104,99,162,205,73,154,156,108,99,146,141,201,182,112,138,173,87,43,151,43,235,152,98,99,101,165,223,106,171,168,213,22,78,213,67,77,83,93,166,217,194,233,54,166,55,18,51,108,204,176,149,254,76,27,83,109,204,180,255,243,48,206,178,203,46,151,179,85,201,108,91,56,199,198,28,155,115,237,114,48,231,217,152,107,99,150,141,121,149,199,124,5,205,183,133,11,108,44,176,185,208,86,39,225,69,54,22,218,88,100,11,23,219,88,92,121,180,41,178,205,22,46,177,177,196,230,82,77,46,179,177,212,198,50,91,184,92,123,116,185,92,85,199,114,27,171,42,143,21,182,138,86,216,194,149,122,168,85,170,203,42,91,216,110,163,189,145,88,109,99,181,246,88,99,99,165,141,53,77,143,181,118,217,227,114,157,42,89,103,11,215,219,88,111,115,131,93,254,194,141,54,54,216,88,107,99,99,229,209,161,160,14,91,184,201,198,38,155,155,109,245,165,223,98,99,179,141,45,182,176,211,70,103,229,177,85,145,91,109,225,54,27,219,108,110,215,228,14,27,219,109,236,176,133,59,181,71,143,203,246,58,118,218,104,175,60,118,217,42,218,101,11,119,235,161,246,168,46,123,108,225,94,27,123,27,137,125,54,246,105,143,253,54,118,219,216,223,244,232,178,203,94,151,7,84,201,1,91,216,109,163,219,230,65,187,252,149,135,108,28,180,209,101,227,80,229,113,88,65,135,109,225,17,27,71,108,30,181,213,98,114,204,198,81,27,199,108,225,113,27,199,43,143,19,138,60,97,11,79,218,56,105,243,148,38,79,219,56,101,227,180,45,60,163,61,122,93,174,174,227,140,141,213,149,199,89,91,69,103,109,97,143,30,234,156,234,114,206,22,158,183,113,190,145,184,96,227,130,246,184,104,163,199,198,197,166,199,37,187,236,119,121,89,149,92,182,133,87,108,92,177,121,213,46,127,227,53,27,87,109,92,178,113,173,242,184,174,160,235,182,240,134,141,27,54,111,218,106,49,185,101,227,166,141,91,182,240,182,141,219,149,199,29,69,222,177,133,189,54,122,109,222,213,228,61,27,119,109,220,179,133,247,181,71,191,203,53,117,220,183,177,166,242,120,96,171,232,129,45,124,168,135,122,164,186,60,178,133,143,109,60,110,36,158,216,120,162,61,158,218,120,104,227,105,211,227,153,93,182,120,124,174,74,158,219,194,62,27,125,54,95,216,229,16,190,180,241,194,198,51,27,47,43,143,87,10,122,101,11,251,109,244,219,124,109,171,139,173,55,54,94,219,120,99,11,223,218,120,91,121,188,83,228,59,91,248,222,198,123,155,31,52,249,209,198,7,27,31,109,225,128,246,104,241,184,182,142,1,27,107,43,143,79,182,138,62,217,194,207,122,168,47,170,203,23,91,248,213,198,215,70,226,155,141,111,218,227,187,141,207,54,190,55,61,126,216,101,171,199,22,7,67,208,226,8,135,57,24,230,112,184,83,254,206,17,14,134,59,248,97,99,132,83,189,102,169,160,145,142,112,148,131,81,14,71,59,229,200,63,56,198,193,104,7,99,28,225,88,7,99,157,234,53,75,69,142,115,132,227,29,140,119,56,65,147,19,29,76,112,48,209,17,78,114,244,178,227,113,93,29,147,28,172,171,60,38,59,42,154,236,8,167,56,106,168,86,213,165,213,17,78,117,48,181,145,152,230,96,154,163,95,179,116,48,197,193,116,167,249,154,165,83,182,121,156,169,74,102,58,194,89,14,102,57,156,237,148,127,112,142,131,217,14,102,56,152,83,121,204,85,208,92,71,56,207,193,60,135,243,29,181,40,46,112,48,223,193,2,71,184,208,193,194,202,99,145,34,23,57,194,197,14,22,59,108,211,228,18,7,109,14,150,56,194,165,218,163,205,227,250,58,150,58,88,95,121,44,115,84,180,204,17,46,215,67,173,80,93,86,56,194,149,14,86,54,18,171,28,172,210,30,237,14,150,59,104,111,122,172,118,202,14,143,107,84,201,26,71,184,214,193,90,135,235,156,242,223,184,222,193,58,7,171,29,172,175,60,54,40,104,131,35,220,232,96,163,195,14,71,45,138,155,28,116,56,216,228,8,55,59,216,92,121,108,81,228,22,71,216,233,160,211,225,86,77,110,115,176,213,193,54,71,184,93,123,116,120,220,80,199,118,7,27,42,143,29,142,138,118,56,194,157,122,168,93,170,203,46,71,184,219,193,238,70,98,143,131,61,218,99,175,131,157,14,246,42,143,191,254,159,63,203,221,106,249,220,167,254,245,247,59,122,249,220,231,96,191,163,150,207,46,167,28,204,3,14,186,28,28,112,254,102,183,131,110,231,31,203,231,65,167,236,242,120,72,125,210,33,71,120,216,193,97,135,71,156,114,16,143,58,56,226,224,160,131,163,149,254,49,5,29,115,132,199,29,28,119,120,194,81,95,150,147,14,78,56,56,233,8,79,57,56,85,233,159,86,228,105,71,120,198,193,25,135,103,53,217,227,224,172,131,30,71,120,78,235,119,121,220,88,199,57,7,27,127,62,136,225,168,232,188,35,188,160,135,186,168,186,92,116,132,151,28,92,106,36,46,59,184,172,245,175,56,184,224,224,74,243,48,94,117,202,30,143,215,84,201,53,71,120,221,193,117,135,55,148,251,77,7,55,28,92,117,112,179,242,184,165,160,91,142,240,182,131,219,14,239,56,229,200,193,236,117,112,199,65,175,35,188,235,224,110,229,113,79,145,247,28,225,125,7,247,29,62,208,228,67,7,15,28,60,116,132,143,180,71,143,199,142,58,30,57,232,248,249,32,134,163,162,199,142,240,137,30,234,169,234,242,212,17,62,115,240,172,145,120,238,224,185,246,232,115,240,196,65,95,211,227,133,83,246,122,124,169,74,94,58,194,87,14,94,57,236,119,202,95,248,218,65,191,131,23,14,94,87,30,111,20,244,198,17,190,117,240,214,225,59,71,157,132,223,59,120,231,224,189,35,252,224,224,67,229,241,81,145,31,29,225,128,131,1,135,159,52,249,217,193,39,7,159,29,225,23,237,209,235,113,83,29,95,28,108,170,60,190,58,42,250,234,8,191,233,161,190,171,46,223,29,225,15,7,63,26,137,22,23,45,174,126,205,210,197,55,7,195,220,230,107,150,110,217,239,113,132,171,110,44,93,225,72,23,35,93,142,114,203,95,57,218,197,40,23,195,93,140,118,171,215,44,21,52,198,21,142,117,49,214,229,56,183,236,26,204,241,46,198,185,24,239,10,39,184,152,224,86,175,89,42,114,162,43,156,228,98,146,203,201,154,156,226,98,178,139,41,174,176,213,213,203,142,199,205,117,180,186,216,92,121,76,117,85,52,213,21,78,211,67,77,87,93,166,187,194,25,46,102,52,18,51,93,204,212,30,179,92,76,115,49,171,233,49,219,45,91,124,206,81,37,115,92,225,92,23,115,93,206,115,203,223,56,223,197,60,23,179,93,204,175,60,22,40,104,129,43,92,232,98,161,203,69,110,57,48,136,139,93,44,114,177,216,21,182,185,104,171,60,150,40,114,137,43,92,234,98,169,203,101,154,92,238,98,153,139,229,174,112,133,246,104,241,185,165,142,21,46,182,84,30,43,93,21,173,116,133,171,244,80,237,170,75,187,43,92,237,98,117,35,177,198,197,26,237,177,214,197,42,23,107,155,30,235,220,178,213,231,122,85,178,222,21,110,112,177,193,229,70,183,28,194,14,23,27,93,172,115,209,81,121,108,82,208,38,87,184,217,197,102,151,91,220,178,125,48,59,93,108,113,209,233,10,183,186,216,90,121,108,83,228,54,87,184,221,197,118,151,59,52,185,211,197,14,23,59,93,225,46,237,209,234,179,179,142,93,46,58,43,143,221,174,138,118,187,194,61,122,168,189,170,203,94,87,184,207,197,190,70,98,191,139,253,218,163,203,197,30,23,93,202,227,175,255,251,207,178,91,157,230,14,184,165,201,110,87,159,230,14,184,232,118,213,105,238,160,91,14,230,33,23,7,93,28,114,255,230,97,23,135,221,127,156,230,142,184,101,155,207,163,234,147,142,186,194,99,46,142,185,60,238,150,131,120,194,197,113,23,71,92,156,168,244,79,42,232,164,43,60,229,226,148,203,211,174,58,121,157,113,113,218,197,25,87,120,214,197,217,74,191,71,145,61,174,240,156,139,115,46,207,107,242,130,139,243,46,46,184,194,139,90,191,205,231,214,58,46,186,216,90,233,95,114,85,116,201,21,94,214,67,93,81,93,174,184,194,171,46,174,54,18,215,92,92,211,250,215,93,92,118,113,189,121,24,111,184,101,135,207,155,170,228,166,43,188,229,226,150,203,219,202,253,142,139,219,46,110,184,184,83,121,244,42,168,215,21,222,117,113,215,229,61,183,236,253,157,247,93,220,115,113,223,21,62,112,241,160,242,120,168,200,135,174,240,145,139,71,46,31,107,242,137,139,199,46,158,184,194,167,218,163,195,231,182,58,158,186,216,86,121,60,115,85,244,204,21,62,215,67,245,169,46,125,174,240,133,139,23,141,196,75,23,47,181,199,43,23,207,93,188,106,122,244,187,101,151,207,215,170,228,181,43,124,227,226,141,203,183,110,249,11,223,185,120,235,162,223,197,187,202,227,189,130,222,187,194,15,46,62,184,252,232,170,123,152,1,23,31,93,12,184,194,79,46,62,85,30,159,21,249,217,21,126,113,241,197,229,87,77,126,115,241,213,197,55,87,248,93,123,116,249,220,94,199,119,23,219,43,143,31,174,138,126,184,194,22,79,13,53,204,195,16,12,243,132,195,61,12,247,116,98,132,135,17,158,254,123,215,30,90,60,140,244,154,127,239,218,43,123,124,142,86,37,163,61,225,24,15,99,60,142,245,202,95,57,206,195,88,15,163,60,140,243,170,215,44,21,52,222,19,78,240,48,193,227,68,175,236,252,131,147,60,76,244,48,201,19,78,246,48,217,171,94,179,84,228,20,79,216,234,161,213,227,84,77,78,243,48,213,195,52,79,56,221,211,203,142,207,29,117,76,247,176,163,242,152,225,169,104,134,39,156,169,135,154,165,186,204,242,132,179,61,204,110,36,230,120,152,163,61,230,122,152,233,97,110,211,99,158,87,246,250,156,175,74,230,123,194,5,30,22,120,92,232,149,191,113,145,135,133,30,230,121,88,84,121,44,86,208,98,79,216,230,161,205,227,18,175,124,240,27,151,122,88,226,97,169,39,92,230,97,89,229,177,92,145,203,61,225,10,15,43,60,174,212,228,42,15,43,61,172,242,132,237,218,163,215,231,206,58,218,61,236,172,60,86,123,42,90,237,9,215,232,161,214,170,46,107,61,225,58,15,235,26,137,245,30,214,107,143,13,30,214,120,216,208,244,216,232,149,253,62,59,84,73,135,39,220,228,97,147,199,205,94,57,132,91,60,108,246,176,209,195,150,202,163,83,65,157,158,112,171,135,173,30,183,121,234,154,121,187,135,109,30,182,123,194,29,30,118,84,30,59,21,185,211,19,238,242,176,203,227,110,77,238,241,176,219,195,30,79,184,87,123,244,251,220,85,199,94,15,187,42,143,125,158,138,246,121,194,253,122,168,46,213,165,203,19,30,240,112,160,145,232,246,208,173,61,14,122,216,239,225,96,211,227,144,87,182,4,60,172,74,14,123,194,35,30,142,120,60,234,149,191,243,152,135,163,30,14,121,56,86,121,28,87,208,113,79,120,194,195,9,143,39,61,156,212,115,255,27,79,121,234,90,76,165,79,123,194,51,30,206,120,56,229,9,207,234,230,61,42,209,227,9,207,121,56,215,72,156,247,112,94,207,115,193,195,89,15,23,26,243,252,143,191,182,4,220,93,199,16,236,174,255,215,95,255,75,99,192,139,94,217,26,240,146,234,113,201,19,94,246,112,217,227,21,175,252,131,87,61,92,241,112,209,195,213,106,192,107,10,186,230,9,175,123,184,238,241,134,167,46,234,111,122,184,225,225,166,39,188,229,225,86,245,15,125,91,145,183,61,225,29,15,119,60,246,106,242,174,135,94,15,119,61,225,61,253,15,221,26,112,79,29,247,60,236,169,254,161,239,123,42,186,239,9,31,232,161,30,170,46,15,61,225,35,15,143,26,137,199,30,30,107,177,39,30,30,120,120,210,252,135,126,234,149,109,1,159,169,146,103,158,240,185,135,231,30,251,188,242,223,248,194,67,159,135,167,30,94,84,30,47,21,244,210,19,190,242,240,202,99,191,167,46,234,95,123,232,247,240,218,19,190,241,240,166,242,120,171,200,183,158,240,157,135,119,30,223,107,242,131,135,247,30,62,120,194,143,218,163,45,224,222,58,62,122,216,251,115,183,223,83,209,128,39,252,164,135,250,172,186,124,246,132,95,60,124,105,36,190,122,248,170,61,190,121,248,228,225,91,211,227,187,87,118,4,252,161,74,126,120,194,22,31,45,62,135,249,229,191,115,184,143,97,62,190,123,24,94,253,222,235,8,95,93,148,249,194,145,62,70,250,28,229,151,93,127,112,180,143,81,62,70,251,194,49,62,198,248,213,110,191,34,199,250,194,113,62,198,249,28,175,201,9,62,198,251,152,224,11,39,250,122,97,8,184,175,142,137,62,246,253,220,237,247,85,52,201,23,78,246,213,80,83,84,151,41,190,176,213,71,107,35,49,213,199,84,95,239,246,251,152,236,99,154,223,220,237,247,203,174,128,51,84,201,12,95,56,211,199,76,159,179,252,242,63,56,219,199,44,31,211,125,204,174,60,230,40,104,142,47,156,235,99,174,207,121,126,217,55,136,243,125,204,243,49,223,23,46,240,177,160,242,88,168,200,133,190,112,145,143,69,62,23,107,178,205,199,98,31,109,190,112,137,246,232,10,184,191,142,37,62,246,255,220,237,247,85,180,212,23,46,211,67,45,87,93,150,251,194,21,62,86,52,18,43,125,172,212,30,171,124,44,243,177,74,121,252,245,127,253,89,94,82,215,41,237,126,105,112,181,223,248,117,75,31,171,125,253,235,150,126,57,152,107,125,172,241,177,214,255,155,235,124,172,243,255,249,235,150,126,217,19,112,131,250,164,13,190,112,163,143,141,62,59,252,114,16,55,249,232,240,177,222,199,166,74,127,179,130,54,251,194,45,62,182,248,236,212,7,103,171,143,78,31,91,125,225,54,31,219,42,253,237,138,220,238,11,119,248,216,225,115,167,38,119,249,216,233,99,151,47,220,173,245,123,2,118,213,177,219,71,87,165,191,199,87,209,30,95,184,87,15,181,79,117,217,231,11,247,251,216,223,72,116,249,232,210,250,7,124,236,245,113,160,121,24,187,253,178,55,224,65,85,114,208,23,30,242,113,200,231,97,229,126,196,199,97,31,221,62,142,84,30,71,21,116,212,23,30,243,113,204,231,113,95,173,18,39,124,28,247,113,194,23,158,244,113,178,242,56,165,200,83,190,240,180,143,211,62,207,104,242,172,143,51,62,206,250,194,30,237,209,27,240,64,29,61,62,14,84,30,231,124,21,157,243,133,231,245,80,23,84,151,11,190,240,162,143,139,141,196,37,31,151,180,199,101,31,231,125,92,110,122,92,241,203,254,128,87,85,201,85,95,120,205,199,53,159,215,253,242,23,222,240,113,221,199,21,31,55,42,143,155,10,186,233,11,111,249,184,229,243,182,175,110,178,238,248,184,237,227,142,47,236,245,209,91,121,220,85,228,93,95,120,207,199,61,159,247,53,249,192,199,125,31,15,124,225,67,237,209,31,176,187,142,135,62,186,43,143,71,190,138,30,249,194,199,122,168,39,170,203,19,95,248,212,199,211,70,226,153,143,103,218,227,185,143,199,62,158,55,61,250,252,178,37,228,11,85,242,194,23,190,244,241,210,231,43,191,252,149,253,62,94,249,232,243,209,95,121,188,86,208,107,95,248,198,199,27,159,111,253,242,212,31,124,231,227,173,143,119,190,240,189,143,247,149,199,7,69,126,240,133,31,125,124,244,57,160,201,79,62,6,124,124,242,133,159,181,71,75,200,131,117,124,246,113,176,242,248,226,171,232,139,47,252,170,135,250,166,186,124,243,133,223,125,124,111,36,126,248,248,161,61,90,2,124,245,209,18,252,167,199,176,160,108,13,57,60,192,16,12,15,132,35,2,140,8,56,50,40,127,227,168,0,35,3,12,11,48,42,168,118,251,21,52,58,16,142,9,48,38,224,216,160,236,255,141,227,2,140,13,48,46,16,142,15,48,62,168,118,251,21,57,33,16,78,12,48,49,224,36,77,78,14,48,41,192,228,64,56,37,208,203,78,200,67,117,76,9,112,232,231,110,127,160,162,214,64,56,85,15,53,77,117,153,22,8,167,7,152,222,72,204,8,48,35,208,187,253,1,166,6,152,217,244,152,21,148,109,33,103,171,146,217,129,112,78,128,57,1,231,6,229,16,206,11,48,55,192,172,0,243,42,143,249,10,154,31,8,23,4,88,16,112,97,160,238,50,22,5,88,24,96,81,32,92,28,96,113,229,209,166,200,182,64,184,36,192,146,128,75,53,185,44,192,210,0,203,2,225,114,237,209,22,242,112,29,203,3,28,254,185,219,31,168,104,69,32,92,169,135,90,165,186,172,10,132,237,1,218,27,137,213,1,86,107,143,53,1,86,6,88,211,244,88,27,148,29,33,215,169,146,117,129,112,125,128,245,1,55,4,229,239,220,24,96,67,128,181,1,54,86,30,29,10,234,8,132,155,2,108,10,184,57,80,87,231,91,2,108,14,176,37,16,118,6,232,172,60,182,42,114,107,32,220,22,96,91,192,237,154,220,17,96,123,128,29,129,112,167,246,232,8,121,164,142,157,1,142,252,220,237,15,84,180,43,16,238,214,67,237,81,93,246,4,194,189,1,246,54,18,251,2,236,211,30,251,3,236,14,176,191,233,209,21,148,93,33,15,168,146,3,129,176,59,64,119,192,131,65,249,7,15,5,56,24,160,43,192,161,202,227,176,130,14,7,194,35,1,142,4,60,26,168,197,228,88,128,163,1,142,5,194,227,1,142,87,30,39,20,121,34,16,158,12,112,50,224,41,77,158,14,112,42,192,233,64,120,70,123,116,133,60,90,199,153,0,71,127,238,246,7,42,58,27,8,123,244,80,231,84,151,115,129,240,124,128,243,141,196,133,0,23,180,199,197,0,61,1,46,54,61,46,5,101,79,200,203,170,228,114,32,188,18,224,74,192,171,65,249,111,188,22,224,106,128,75,1,174,85,30,215,21,116,61,16,222,8,112,35,224,205,64,93,213,222,10,112,51,192,173,64,120,59,192,237,202,227,142,34,239,4,194,222,0,189,1,239,106,242,94,128,187,1,238,5,194,251,218,163,39,228,177,58,238,7,56,246,115,183,63,80,209,131,64,248,80,15,245,72,117,121,20,8,31,7,120,220,72,60,9,240,68,123,60,13,240,48,192,211,166,199,179,160,236,13,249,92,149,60,15,132,125,1,250,2,190,8,202,127,231,203,0,47,2,60,11,240,178,242,120,165,160,87,129,176,63,64,127,192,215,129,186,104,124,19,224,117,128,55,129,240,109,128,183,149,199,59,69,190,11,132,239,3,188,15,248,65,147,31,3,124,8,240,49,16,14,104,143,222,144,199,235,24,8,112,252,231,110,127,160,162,79,129,240,179,30,234,139,234,242,37,16,126,13,240,181,145,248,22,224,155,246,248,30,224,115,128,239,77,143,31,65,217,31,178,37,196,16,180,132,194,97,33,134,133,28,30,150,255,193,17,33,134,135,248,17,96,68,88,237,246,43,104,100,40,28,21,98,84,200,209,161,186,104,28,19,98,116,136,49,161,112,108,136,177,97,181,219,175,200,113,161,112,124,136,241,33,39,104,114,98,136,9,33,38,134,194,73,161,94,63,66,158,168,99,82,136,19,63,119,251,67,21,77,14,133,83,66,53,84,171,234,210,26,10,167,134,152,218,72,76,11,49,45,212,187,253,33,166,132,152,30,170,203,153,255,243,207,242,177,186,156,153,17,150,6,103,134,250,114,102,70,136,153,161,186,156,153,21,150,131,57,59,196,172,16,179,195,191,57,39,196,156,240,31,151,51,115,195,178,37,226,60,245,73,243,66,225,252,16,243,67,46,8,203,65,92,24,98,65,136,185,33,22,86,250,139,20,180,40,20,46,14,177,56,100,91,168,46,82,150,132,104,11,177,36,20,46,13,177,180,210,95,166,200,101,161,112,121,136,229,33,87,104,114,101,136,21,33,86,134,194,85,90,191,37,226,201,58,86,133,56,249,243,181,203,80,69,237,161,112,181,30,106,141,234,178,38,20,174,13,177,182,145,88,23,98,157,214,95,31,98,117,136,245,97,243,181,203,176,108,141,184,81,149,108,12,133,29,33,58,66,110,82,238,155,67,108,10,177,33,196,230,202,99,139,130,182,132,194,206,16,157,33,183,134,234,34,101,91,136,173,33,182,133,194,237,33,182,87,30,59,20,185,35,20,238,12,177,51,228,46,77,238,14,177,43,196,238,80,184,71,123,180,70,60,85,199,158,16,167,126,190,118,25,170,104,111,40,220,167,135,218,175,186,236,15,133,93,33,186,26,137,3,33,14,104,143,238,16,251,66,116,55,61,14,134,101,91,196,67,170,228,80,40,60,28,226,112,200,35,97,249,11,143,134,56,18,226,96,136,163,149,199,49,5,29,11,133,199,67,28,15,121,34,84,139,251,201,16,39,66,156,12,133,167,66,156,170,60,78,43,242,116,40,60,19,226,76,200,179,154,236,9,113,54,68,79,40,60,167,61,218,34,158,174,227,92,136,211,63,119,251,67,21,157,15,133,23,244,80,23,85,151,139,161,240,82,136,75,141,196,229,16,151,181,199,149,16,23,66,92,105,122,92,13,203,142,136,215,84,201,181,80,120,61,196,245,144,55,194,242,87,222,12,113,35,196,213,16,55,43,143,91,10,186,21,10,111,135,184,29,242,78,168,22,247,222,16,119,66,244,134,194,187,33,238,86,30,247,20,121,47,20,222,15,113,63,228,3,77,62,12,241,32,196,195,80,248,72,123,116,68,60,83,199,163,16,103,126,238,246,135,42,122,28,10,159,232,161,158,170,46,79,67,225,179,16,207,26,137,231,33,158,107,143,190,16,79,66,244,53,61,94,132,101,87,196,151,170,228,101,40,124,21,226,85,200,254,176,252,141,175,67,244,135,120,17,226,117,229,241,70,65,111,66,225,219,16,111,67,190,11,213,162,248,62,196,187,16,239,67,225,135,16,31,42,143,143,138,252,24,10,7,66,12,132,252,164,201,207,33,62,133,248,28,10,191,104,143,174,136,103,235,248,18,226,236,207,221,254,80,69,95,67,225,55,61,212,119,213,229,123,40,252,17,226,71,35,209,18,161,37,210,187,253,17,190,133,24,22,53,119,251,163,178,39,226,136,72,221,88,70,194,145,17,70,70,28,21,149,67,56,58,194,168,8,195,35,140,142,170,221,126,5,141,137,132,99,35,140,141,56,46,82,23,41,227,35,140,139,48,62,18,78,136,48,33,170,118,251,21,57,49,18,78,138,48,41,226,100,77,78,137,48,57,194,148,72,216,26,233,101,39,98,79,29,173,17,122,126,238,246,71,42,154,26,9,167,233,161,166,171,46,211,35,225,140,8,51,26,137,153,17,102,106,143,89,17,166,69,152,213,244,152,29,149,189,17,231,168,146,57,145,112,110,132,185,17,231,69,229,239,156,31,97,94,132,217,17,230,87,30,11,20,180,32,18,46,140,176,48,226,162,72,45,138,139,35,44,138,176,56,18,182,69,104,171,60,150,40,114,73,36,92,26,97,105,196,101,154,92,30,97,89,132,229,145,112,133,246,232,141,120,174,142,21,17,206,253,220,237,143,84,180,50,18,174,210,67,181,171,46,237,145,112,117,132,213,141,196,154,8,107,180,199,218,8,171,34,172,109,122,172,139,202,254,136,235,85,201,250,72,184,33,194,134,136,27,163,242,15,118,68,216,24,97,93,132,142,202,99,147,130,54,69,194,205,17,54,71,220,18,169,69,177,51,194,150,8,157,145,112,107,132,173,149,199,54,69,110,139,132,219,35,108,143,184,67,147,59,35,236,136,176,51,18,238,210,30,253,17,207,215,177,43,194,249,159,187,253,145,138,118,71,194,61,122,168,189,170,203,222,72,184,47,194,190,70,98,127,132,253,218,163,43,194,158,8,93,77,143,3,81,217,18,179,91,149,116,71,194,131,17,14,70,60,20,149,255,198,195,17,14,69,56,16,225,112,229,113,68,65,71,34,225,209,8,71,35,30,139,212,162,120,60,194,177,8,199,35,225,137,8,39,42,143,147,138,60,25,9,79,69,56,21,241,180,38,207,68,56,29,225,76,36,60,171,61,90,98,94,168,227,108,132,11,149,71,79,164,162,158,72,120,78,15,117,94,117,57,31,9,47,68,184,208,72,92,140,112,81,123,92,138,112,46,194,37,229,241,87,249,103,249,73,45,159,151,163,50,224,149,72,47,159,151,35,92,137,212,242,121,53,42,7,243,90,132,171,17,174,69,127,243,122,132,235,209,63,150,207,27,81,217,26,243,166,250,164,155,145,240,86,132,91,17,111,71,229,32,222,137,112,59,194,141,8,119,42,253,94,5,245,70,194,187,17,238,70,188,167,191,44,247,35,220,139,112,63,18,62,136,240,160,210,127,168,200,135,145,240,81,132,71,17,31,107,242,73,132,199,17,158,68,194,167,90,191,53,230,197,58,158,70,184,248,115,183,63,82,209,179,72,248,92,15,213,167,186,244,69,194,23,17,94,52,18,47,35,188,212,250,175,34,60,143,240,170,121,24,251,163,178,45,230,107,85,242,58,18,190,137,240,38,226,91,229,254,46,194,219,8,253,17,222,85,30,239,21,244,62,18,126,136,240,33,226,199,168,28,57,152,3,17,62,70,24,136,132,159,34,124,170,60,62,43,242,115,36,252,18,225,75,196,175,154,252,22,225,107,132,111,145,240,187,246,104,139,121,169,142,239,17,46,253,220,237,143,84,244,35,18,182,196,106,168,97,49,134,96,88,44,28,30,99,120,172,19,35,98,140,136,245,110,127,140,150,24,35,227,230,110,127,92,118,196,28,173,74,70,199,194,49,49,198,196,28,27,151,191,112,92,140,177,49,70,197,24,23,87,187,253,10,26,31,11,39,196,152,16,115,98,92,118,13,230,164,24,19,99,76,138,133,147,99,76,142,171,221,126,69,78,137,133,173,49,90,99,78,213,228,180,24,83,99,76,139,133,211,99,189,236,196,188,92,199,244,24,151,127,238,246,199,42,154,17,11,103,234,161,102,169,46,179,98,225,236,24,179,27,137,57,49,230,104,143,185,49,102,198,152,219,244,152,23,151,93,49,231,171,146,249,177,112,65,140,5,49,23,198,229,175,92,20,99,97,140,121,49,22,85,30,139,21,180,56,22,182,197,104,139,185,36,46,7,6,113,105,140,37,49,150,198,194,101,49,150,85,30,203,21,185,60,22,174,136,177,34,230,74,77,174,138,177,50,198,170,88,216,174,61,186,98,94,169,163,61,198,149,159,187,253,177,138,86,199,194,53,122,168,181,170,203,218,88,184,46,198,186,70,98,125,140,245,218,99,67,140,53,49,54,52,61,54,198,101,79,204,14,85,210,17,11,55,197,216,20,115,115,92,254,198,45,49,54,199,216,24,99,75,229,209,169,160,206,88,184,53,198,214,152,219,226,178,125,48,183,199,216,22,99,123,44,220,17,99,71,229,177,83,145,59,99,225,174,24,187,98,238,214,228,158,24,187,99,236,137,133,123,181,71,79,204,171,117,236,141,113,245,231,110,127,172,162,125,177,112,191,30,170,75,117,233,138,133,7,98,28,104,36,186,99,116,107,143,131,49,246,199,56,216,244,56,20,151,189,49,15,171,146,195,177,240,72,140,35,49,143,198,229,16,30,139,113,52,198,161,24,199,42,143,227,10,58,30,11,79,196,56,17,243,100,92,182,14,230,169,24,39,99,156,138,133,167,99,156,174,60,206,40,242,76,44,60,27,227,108,204,30,77,158,139,209,19,227,92,44,60,175,61,122,99,94,171,227,124,140,107,149,199,133,88,69,23,98,225,69,61,212,37,213,229,82,44,188,28,227,114,35,113,37,198,21,237,113,53,198,197,24,87,149,199,95,255,199,159,229,244,117,93,131,120,45,46,125,94,143,245,105,238,90,140,235,177,58,205,221,136,203,193,188,25,227,70,140,155,241,223,188,21,227,86,252,143,211,220,237,184,236,143,121,71,125,210,157,88,216,27,163,55,230,221,184,28,196,123,49,238,198,184,29,227,94,165,127,95,65,247,99,225,131,24,15,98,62,212,82,143,98,60,140,241,40,22,62,142,241,184,210,127,162,200,39,177,240,105,140,167,49,159,105,242,121,140,103,49,158,199,194,62,173,223,31,243,122,29,125,49,174,255,124,237,50,86,209,139,88,248,82,15,245,74,117,121,21,11,251,99,244,55,18,175,99,188,214,250,111,98,188,140,241,166,121,24,223,198,101,75,194,119,170,228,93,44,124,31,227,125,204,15,202,253,99,140,15,49,222,198,248,88,121,12,40,104,32,22,126,138,241,41,230,231,184,28,248,149,95,98,124,142,241,37,22,126,141,241,181,242,248,166,200,111,177,240,123,140,239,49,127,104,178,37,193,143,24,45,137,112,88,162,87,171,132,55,234,24,150,224,198,207,215,46,19,21,13,79,132,35,18,53,212,200,68,221,92,38,194,81,9,70,53,18,163,19,140,78,244,107,151,9,70,36,24,147,52,95,187,76,202,214,132,227,84,201,184,68,56,62,193,248,132,19,146,242,23,78,76,48,33,193,216,4,19,147,234,181,75,5,77,74,132,147,19,76,78,56,37,41,219,255,96,107,130,41,9,90,19,225,212,4,83,147,234,181,75,69,78,75,132,211,19,76,79,56,67,147,51,19,204,72,48,51,17,206,210,30,173,9,111,214,49,43,193,205,159,175,93,38,42,154,157,8,231,232,161,230,170,46,115,19,225,188,4,243,26,137,249,9,230,107,143,5,9,230,36,88,208,244,88,152,148,109,9,23,169,146,69,137,112,113,130,197,9,219,146,242,87,46,73,208,150,96,97,130,37,149,199,82,5,45,77,132,203,18,44,75,184,60,41,199,14,225,138,4,203,19,172,72,132,43,19,172,172,60,86,41,114,85,34,108,79,208,158,112,181,38,215,36,88,157,96,77,34,92,171,61,218,18,222,170,99,109,130,91,63,95,187,76,84,180,46,17,174,215,67,109,80,93,54,36,194,141,9,54,54,18,29,9,58,180,199,166,4,235,19,108,106,122,108,78,202,142,132,91,84,201,150,68,216,153,160,51,225,214,164,252,141,219,18,108,77,176,57,193,182,202,99,187,130,182,39,194,29,9,118,36,220,153,232,215,46,19,236,76,176,43,17,238,78,176,187,242,216,163,200,61,137,112,111,130,189,9,247,105,114,127,130,125,9,246,39,194,46,237,209,145,240,118,29,93,9,110,255,124,237,50,81,209,129,68,216,173,135,58,168,186,28,76,132,135,18,28,106,36,14,39,56,172,61,142,36,232,78,112,164,233,113,52,41,187,18,30,83,37,199,18,225,241,4,199,19,158,72,202,33,60,153,224,68,130,163,9,78,86,30,167,20,116,42,17,158,78,112,58,225,153,68,221,195,156,77,112,38,193,217,68,216,147,160,167,242,56,167,200,115,137,240,124,130,243,9,47,104,242,98,130,11,9,46,38,194,75,218,163,43,225,157,58,46,37,184,243,243,181,203,68,69,151,19,225,21,61,212,85,213,229,106,34,188,150,224,90,35,113,61,193,117,237,113,35,193,149,4,55,154,30,55,147,178,39,225,45,85,114,43,17,222,78,112,59,225,157,164,252,157,189,9,238,36,184,153,160,183,242,184,171,160,187,137,240,94,130,123,9,239,39,234,154,249,65,130,251,9,30,36,194,135,9,30,86,30,143,20,249,40,17,62,78,240,56,225,19,77,62,77,240,36,193,211,68,248,76,123,244,36,236,173,227,89,130,222,159,175,93,38,42,122,158,8,251,244,80,47,84,151,23,137,240,101,130,151,141,196,171,4,175,180,71,127,130,190,4,253,77,143,215,73,217,155,240,141,42,121,147,8,223,38,120,155,240,93,82,254,193,247,9,222,37,120,157,224,125,229,241,65,65,31,18,225,199,4,31,19,14,36,234,154,249,83,130,129,4,159,18,225,231,4,159,43,143,47,138,252,146,8,191,38,248,154,240,155,38,191,39,248,150,224,123,34,252,161,61,122,19,222,173,227,71,130,187,63,95,187,76,85,212,146,10,135,165,106,168,225,41,134,96,120,42,28,145,98,68,170,19,35,83,140,76,245,107,151,41,134,165,24,149,170,101,231,127,255,179,92,167,150,157,209,105,233,112,76,218,248,117,203,20,99,82,253,235,150,105,57,152,227,82,140,77,49,46,253,155,227,83,140,79,255,249,235,150,105,217,159,112,162,250,164,137,169,112,82,138,73,41,39,167,229,32,78,73,49,57,197,132,20,83,210,134,126,171,130,90,83,225,212,20,83,83,78,75,213,98,50,61,197,180,20,211,83,225,140,20,51,210,134,254,76,69,206,76,133,179,82,204,74,57,91,147,115,82,204,78,49,39,21,206,77,245,178,147,240,94,29,115,83,220,171,244,231,165,42,154,151,10,231,235,161,22,168,46,11,82,225,194,20,11,27,137,69,41,22,105,253,197,41,230,167,88,156,54,127,221,50,45,91,82,46,81,37,75,82,225,210,20,75,83,46,83,238,203,83,44,75,209,150,98,121,229,177,66,65,43,82,225,202,20,43,83,174,74,203,7,131,217,158,98,85,138,246,84,184,58,197,234,202,99,141,34,215,164,194,181,41,214,166,92,167,201,245,41,214,165,88,159,10,55,104,143,150,148,247,235,216,144,226,254,207,215,46,83,21,109,76,133,29,122,168,77,170,203,166,84,184,57,197,230,70,98,75,138,45,218,163,51,69,71,138,206,166,199,214,180,108,77,185,77,149,108,75,133,219,83,108,79,185,35,45,127,225,206,20,59,82,108,77,177,179,242,216,165,160,93,169,112,119,138,221,41,247,164,101,203,239,220,155,98,79,138,189,169,112,95,138,125,149,199,126,69,238,79,133,93,41,186,82,30,208,100,119,138,3,41,186,83,225,65,237,209,154,242,65,29,7,83,60,168,60,14,165,42,58,148,10,15,235,161,142,168,46,71,82,225,209,20,71,27,137,99,41,142,105,143,227,41,14,167,56,222,244,56,145,150,109,41,79,170,146,147,169,240,84,138,83,41,79,167,229,175,60,147,226,116,138,19,41,206,84,30,103,21,116,54,21,246,164,232,73,121,46,85,39,225,243,41,206,165,56,159,10,47,164,184,80,121,92,84,228,197,84,120,41,197,165,148,151,53,121,37,197,229,20,87,82,225,85,237,209,150,242,97,29,87,83,60,172,60,174,165,42,186,150,10,175,235,161,110,168,46,55,82,225,205,20,55,27,137,91,41,110,105,143,219,41,174,167,184,221,244,184,147,150,29,41,123,85,73,111,42,188,155,226,110,202,123,105,249,27,239,167,184,151,226,78,138,251,149,199,3,5,61,72,133,15,83,60,76,249,40,85,39,225,199,41,30,165,120,156,10,159,164,120,82,121,60,85,228,211,84,248,44,197,179,148,207,53,217,151,226,121,138,190,84,248,66,123,116,164,124,84,199,139,20,143,42,143,151,169,138,94,166,194,87,122,168,126,213,165,63,21,190,78,241,186,145,120,147,226,141,246,120,155,226,85,138,183,250,244,240,191,253,89,118,171,211,195,59,117,122,120,223,56,61,188,75,241,94,159,30,62,168,175,200,199,20,31,82,124,76,255,230,64,138,129,127,158,30,62,165,101,87,202,207,234,147,62,167,194,47,41,190,164,252,170,78,15,223,82,124,77,241,41,197,183,74,255,187,130,190,167,194,31,41,126,164,108,129,58,56,195,128,22,96,24,132,195,129,225,104,232,143,0,134,96,4,132,35,129,145,224,40,77,142,6,70,1,163,33,28,3,189,90,165,124,92,199,24,224,113,165,63,22,42,26,11,225,56,168,161,198,171,46,227,33,156,0,76,104,36,38,2,19,161,244,39,1,227,128,73,104,254,186,37,202,158,148,83,84,201,20,8,91,129,86,112,42,202,193,156,6,76,5,38,3,211,208,240,152,174,160,233,16,206,0,102,128,51,161,110,169,103,1,51,129,89,16,206,6,102,87,30,115,20,57,7,194,185,192,92,112,158,38,231,3,243,128,249,16,46,208,30,61,41,159,212,177,0,120,82,121,44,132,138,22,66,184,72,15,181,88,117,89,12,97,27,208,214,72,44,1,150,104,143,165,192,34,96,105,211,99,25,202,222,148,203,85,201,114,8,87,0,43,192,149,40,127,225,42,96,37,176,12,88,85,121,180,43,168,29,194,213,192,106,112,13,212,53,218,90,96,13,176,22,194,117,192,186,202,99,189,34,215,67,184,1,216,0,110,212,100,7,176,17,232,128,112,147,246,232,77,249,180,142,77,192,211,202,99,51,84,180,25,194,45,122,168,78,213,165,19,194,173,192,214,70,98,27,176,77,123,108,7,182,0,219,155,30,59,80,246,167,220,169,74,118,66,184,11,216,5,238,70,249,43,247,0,187,129,29,192,158,202,99,175,130,246,66,184,15,216,7,238,135,186,102,238,2,246,3,93,16,30,0,14,84,30,221,138,236,134,240,32,112,16,60,164,201,195,192,33,224,48,132,71,180,71,127,202,103,117,28,1,158,85,30,71,161,162,163,16,30,211,67,29,87,93,142,67,120,2,56,209,72,156,4,78,106,143,83,192,49,224,84,211,227,52,202,22,240,140,42,57,3,225,89,224,44,216,131,242,55,158,3,122,128,211,192,185,202,227,188,130,206,67,120,1,184,0,94,68,217,53,152,151,128,139,192,37,8,47,3,151,43,143,43,138,188,2,225,85,224,42,120,77,147,215,129,107,192,117,8,111,104,143,22,240,121,29,55,128,231,149,199,77,168,232,38,132,183,244,80,183,85,151,219,16,222,1,238,52,18,189,64,175,246,184,11,220,2,238,54,61,238,161,108,5,239,171,146,251,16,62,0,30,128,15,81,14,225,35,224,33,112,15,120,84,121,60,86,208,99,8,159,0,79,192,167,40,7,6,241,25,240,20,120,6,225,115,224,121,229,209,167,200,62,8,95,0,47,192,151,154,124,5,188,4,94,65,216,175,61,90,193,190,58,250,129,190,202,227,53,84,244,26,194,55,122,168,183,170,203,91,8,223,1,239,26,137,247,192,123,237,241,1,120,3,124,104,122,124,68,217,6,14,168,146,1,8,63,1,159,192,207,40,127,231,23,224,51,240,17,248,82,121,124,85,208,87,8,191,1,223,192,239,40,219,7,243,7,240,29,248,1,97,11,209,194,134,199,48,98,8,134,81,56,156,24,78,142,160,34,71,18,35,136,145,20,142,162,94,118,192,23,117,140,34,94,84,30,163,169,162,209,20,142,161,26,106,172,234,50,150,194,113,196,184,70,98,60,49,158,202,99,2,49,134,152,192,255,244,152,200,178,3,156,164,74,38,81,56,153,152,76,78,97,249,7,91,137,41,196,68,162,149,13,143,169,10,154,74,225,52,98,26,57,157,234,98,107,6,49,157,152,65,225,76,98,102,229,49,75,145,179,40,156,77,204,38,231,104,114,46,49,135,152,75,225,60,237,209,1,190,172,99,30,241,178,242,152,79,21,205,167,112,129,30,106,161,234,178,144,194,69,196,162,70,98,49,177,88,123,180,17,11,136,54,229,241,215,255,250,103,121,85,45,59,75,88,90,92,74,189,236,44,33,150,82,45,59,203,168,174,204,136,101,196,114,254,205,21,196,10,254,99,217,89,201,178,11,92,165,62,105,21,133,237,68,59,185,154,229,32,174,33,86,19,43,137,53,149,254,90,5,173,165,112,29,177,142,92,207,242,234,96,110,32,214,19,27,40,220,72,108,172,244,59,20,217,65,225,38,98,19,185,89,147,91,136,205,196,22,10,59,181,126,23,248,170,142,78,226,85,165,191,149,42,218,74,225,54,61,212,118,213,101,59,133,59,136,29,141,196,78,98,167,214,223,69,108,35,118,53,15,227,110,150,61,224,30,85,178,135,194,189,196,94,114,159,114,223,79,236,35,118,19,251,43,143,46,5,117,81,120,128,56,64,118,179,236,253,157,7,137,110,226,32,133,135,136,67,149,199,97,69,30,166,240,8,113,132,60,170,201,99,196,81,226,24,133,199,181,71,15,216,95,199,113,162,191,242,56,65,21,157,160,240,164,30,234,148,234,114,138,194,211,196,233,70,226,12,113,70,123,156,37,78,18,103,155,30,61,44,123,193,115,170,228,28,133,231,137,243,228,5,150,191,240,34,113,129,232,33,46,86,30,151,20,116,137,194,203,196,101,242,10,203,182,95,120,149,184,66,92,165,240,26,113,173,242,184,174,200,235,20,222,32,110,144,55,53,121,139,184,73,220,162,240,182,246,232,5,95,215,113,155,120,93,121,220,161,138,238,80,216,171,135,186,171,186,220,165,240,30,113,175,145,184,79,220,215,30,15,136,94,226,65,211,227,33,203,126,240,145,42,121,68,225,99,226,49,249,132,229,175,124,74,60,33,30,18,79,43,143,103,10,122,70,225,115,226,57,217,71,117,141,246,130,232,35,94,80,248,146,120,89,121,188,82,228,43,10,251,137,126,242,181,38,223,16,175,137,55,20,190,213,30,253,224,155,58,222,18,111,42,143,119,84,209,59,10,223,235,161,62,168,46,31,40,252,72,124,108,36,6,136,1,237,241,137,120,79,124,106,122,124,102,217,66,126,81,37,95,40,252,74,124,37,191,177,252,141,223,137,111,196,103,226,123,229,241,67,65,63,40,108,201,208,146,113,88,86,142,252,131,195,51,12,203,48,60,19,142,200,48,34,107,120,140,204,48,4,35,51,225,168,12,163,50,142,214,228,152,12,163,51,140,201,132,99,51,189,236,144,111,235,24,155,225,109,229,49,46,83,209,184,76,56,62,83,67,77,80,93,38,100,194,137,25,38,54,18,147,50,76,202,148,199,228,12,227,51,76,206,212,233,225,191,254,89,246,169,211,195,148,172,244,217,154,233,211,195,148,12,173,153,58,61,76,205,212,149,89,134,169,25,166,101,127,115,122,134,233,217,63,78,15,51,178,178,149,156,169,62,105,102,38,156,149,97,86,198,217,89,57,136,115,50,204,206,48,35,195,156,172,122,237,82,65,115,51,225,188,12,243,50,206,207,212,151,126,65,134,249,25,22,100,194,133,25,22,86,250,139,20,185,40,19,46,206,176,56,99,155,38,151,100,104,203,176,36,19,46,213,250,173,228,187,58,150,102,120,247,243,181,203,76,69,203,50,225,114,61,212,10,213,101,69,38,92,153,97,101,35,177,42,195,42,173,223,158,97,121,134,246,172,249,218,101,86,182,145,107,84,201,154,76,184,54,195,218,140,235,148,251,250,12,235,50,172,206,176,190,242,216,160,160,13,153,112,99,134,141,25,59,50,245,165,223,148,161,35,195,166,76,184,57,195,230,202,99,139,34,183,100,194,206,12,157,25,183,106,114,91,134,173,25,182,101,194,237,218,163,141,124,95,199,246,12,239,127,190,118,153,169,104,71,38,220,169,135,218,165,186,236,202,132,187,51,236,110,36,246,100,216,163,61,246,102,216,153,97,111,211,99,95,86,118,144,251,85,201,254,76,216,149,161,43,227,129,172,252,133,221,25,14,100,216,151,161,187,242,56,168,160,131,153,240,80,134,67,25,15,103,234,75,127,36,195,225,12,71,50,225,209,12,71,43,143,99,138,60,150,9,143,103,56,158,241,132,38,79,102,56,145,225,100,38,60,165,61,58,200,15,117,156,202,240,161,242,56,157,169,232,116,38,60,163,135,58,171,186,156,205,132,61,25,122,26,137,115,25,206,105,143,243,25,206,100,56,223,244,184,144,149,93,228,69,85,114,49,19,94,202,112,41,227,229,172,252,149,87,50,92,206,112,33,195,149,202,227,170,130,174,102,194,107,25,174,101,188,158,169,47,253,141,12,215,51,220,200,132,55,51,220,172,60,110,41,242,86,38,188,157,225,118,198,59,154,236,205,112,39,67,111,38,188,171,61,186,200,143,117,220,205,240,177,242,184,151,169,232,94,38,188,175,135,122,160,186,60,200,132,15,51,60,108,36,30,101,120,164,61,30,103,184,159,225,113,211,227,73,86,246,144,79,85,201,211,76,248,44,195,179,140,207,179,242,55,246,101,120,158,225,73,134,190,202,227,133,130,94,100,194,151,25,94,102,124,165,191,244,253,25,94,101,232,207,132,175,51,188,174,60,222,40,242,77,38,124,155,225,109,198,119,154,124,159,225,93,134,247,153,240,131,246,232,33,7,234,248,144,97,160,242,248,152,169,232,99,38,28,208,67,125,82,93,62,101,194,207,25,62,55,18,95,50,124,209,30,95,51,12,100,248,170,79,15,255,203,159,229,168,245,93,131,248,45,43,255,224,247,198,233,225,91,134,239,250,244,240,67,125,69,90,114,252,200,208,146,255,205,97,57,134,229,255,56,61,12,207,203,94,114,68,174,238,50,115,225,200,28,35,115,142,202,203,65,28,157,99,84,142,225,57,70,231,213,131,24,10,26,147,11,199,230,24,155,115,92,174,31,196,200,49,46,199,248,92,56,33,199,132,188,122,16,67,145,19,115,225,164,28,147,114,78,214,228,148,28,147,115,76,201,133,173,185,94,173,200,79,117,180,230,248,244,243,65,140,92,69,83,115,225,52,61,212,116,213,101,122,46,156,145,99,70,35,49,51,199,204,92,63,136,145,99,90,142,89,121,243,65,140,188,236,39,231,168,146,57,185,112,110,142,185,57,231,229,229,96,206,207,49,47,199,236,28,243,43,143,5,10,90,144,11,23,230,88,152,115,81,94,158,26,204,197,57,22,229,88,156,11,219,114,180,85,30,75,20,185,36,23,46,205,177,52,231,50,77,46,207,177,44,199,242,92,184,66,123,244,147,159,235,88,145,227,243,207,7,49,114,21,173,204,133,171,244,80,237,170,75,123,46,92,157,99,117,35,177,38,199,26,237,177,54,199,170,28,107,149,199,95,255,243,159,229,68,117,24,215,229,165,207,245,185,62,140,235,114,172,207,213,97,220,160,84,54,230,216,144,99,99,254,55,59,114,116,252,243,48,110,202,203,150,140,155,213,39,109,206,133,91,114,108,201,217,169,14,227,214,28,157,57,54,229,216,90,233,111,83,208,182,92,184,61,199,246,156,59,244,193,217,153,99,71,142,157,185,112,87,142,93,149,254,110,69,238,206,133,123,114,236,201,185,87,147,251,114,236,205,177,47,23,238,215,250,45,25,191,212,177,63,199,151,74,191,43,87,81,87,46,60,160,135,234,86,93,186,115,225,193,28,7,27,137,67,57,14,105,253,195,57,14,228,56,220,60,140,71,242,178,53,227,81,85,114,52,23,30,203,113,44,231,113,229,126,34,199,241,28,71,114,156,168,60,78,42,232,100,46,60,149,227,84,206,211,121,249,224,55,158,201,113,58,199,153,92,120,54,199,217,202,163,71,145,61,185,240,92,142,115,57,207,107,242,66,142,243,57,46,228,194,139,218,163,53,227,215,58,46,230,248,250,243,181,203,92,69,151,114,225,101,61,212,21,213,229,74,46,188,154,227,106,35,113,45,199,53,237,113,61,199,229,28,215,155,30,55,242,178,45,227,77,85,114,51,23,222,202,113,43,231,237,188,252,133,119,114,220,206,113,35,199,157,202,163,87,65,189,185,240,110,142,187,57,239,229,234,156,119,63,199,189,28,247,115,225,131,28,15,42,143,135,138,124,152,11,31,229,120,148,243,177,38,159,228,120,156,227,73,46,124,170,61,218,50,126,171,227,105,142,111,63,31,196,200,85,244,44,23,62,215,67,245,169,46,125,185,240,69,142,23,141,196,203,28,47,181,199,171,28,207,115,188,106,122,244,231,101,71,198,215,170,228,117,46,124,147,227,77,206,183,121,249,43,223,229,120,155,163,63,199,187,202,227,189,130,222,231,194,15,57,62,228,252,152,171,181,116,32,199,199,28,3,185,240,83,142,79,149,199,103,69,126,206,133,95,114,124,201,249,85,147,223,114,124,205,241,45,23,126,215,30,29,25,191,215,241,61,199,247,159,15,98,228,42,250,145,11,91,10,53,212,176,66,221,105,22,194,225,5,134,23,58,49,162,192,136,66,63,136,81,160,165,192,200,162,249,32,70,81,118,101,28,173,74,70,23,194,49,5,198,20,28,91,148,191,113,92,129,177,5,70,21,24,87,84,15,98,40,104,124,33,156,80,96,66,193,137,69,217,242,43,39,21,152,88,96,82,33,156,92,96,114,81,61,136,161,200,41,133,176,181,64,107,193,169,154,156,86,96,106,129,105,133,112,122,161,87,171,140,63,234,152,94,224,199,207,7,49,10,21,205,40,132,51,245,80,179,84,151,89,133,112,118,129,217,141,196,156,2,115,180,199,220,2,51,11,204,109,122,204,43,202,158,140,243,85,201,252,66,184,160,192,130,130,11,139,114,8,23,21,88,88,96,94,129,69,149,199,98,5,45,46,132,109,5,218,10,46,41,202,142,223,185,180,192,146,2,75,11,225,178,2,203,42,143,229,138,92,94,8,87,20,88,81,112,165,38,87,21,88,89,96,85,33,108,215,30,61,25,91,254,133,246,2,45,255,170,30,196,40,84,180,186,16,174,209,67,173,85,93,214,22,194,117,5,214,53,18,235,11,172,215,30,27,10,172,41,176,161,233,177,177,40,123,51,118,168,146,142,66,184,169,192,166,130,155,139,242,119,110,41,176,185,192,198,2,91,42,143,78,5,117,22,194,173,5,182,22,220,86,148,157,131,185,189,192,182,2,219,11,225,142,2,59,42,143,157,138,220,89,8,119,21,216,85,112,183,38,247,20,216,93,96,79,33,220,171,61,122,51,14,251,23,246,22,24,86,121,236,43,84,180,175,16,238,215,67,117,169,46,93,133,240,64,129,3,141,68,119,129,110,237,113,176,192,254,2,7,149,199,95,255,211,159,229,10,117,186,62,84,148,33,15,23,250,116,125,168,192,225,66,157,174,143,20,229,96,30,45,112,164,192,209,226,111,30,43,112,172,248,199,233,250,120,81,246,103,60,161,62,233,68,33,60,89,224,100,193,83,69,57,136,167,11,156,42,112,188,192,233,74,255,140,130,206,20,194,179,5,206,22,236,41,212,73,248,92,129,158,2,231,10,225,249,2,231,43,253,11,138,188,80,8,47,22,184,88,240,146,38,47,23,184,84,224,114,33,188,162,245,251,51,14,255,23,174,20,24,94,233,95,45,84,116,181,16,94,211,67,93,87,93,174,23,194,27,5,110,52,18,55,11,220,212,250,183,10,92,43,112,171,121,24,111,23,101,75,206,59,170,228,78,33,236,45,208,91,240,174,114,191,87,224,110,129,219,5,238,85,30,247,21,116,191,16,62,40,240,160,224,195,162,28,57,152,143,10,60,44,240,168,16,62,46,240,184,242,120,162,200,39,133,240,105,129,167,5,159,105,242,121,129,103,5,158,23,194,62,237,209,146,115,196,191,208,87,96,68,229,241,162,80,209,139,66,248,82,15,245,74,117,121,85,8,251,11,244,55,18,175,11,188,214,30,111,10,188,44,240,166,233,241,182,40,91,115,190,83,37,239,10,225,251,2,239,11,126,40,202,95,248,177,192,135,2,111,11,124,172,60,6,20,52,80,8,63,21,248,84,240,115,81,142,29,194,47,5,62,23,248,82,8,191,22,248,90,121,124,83,228,183,66,248,189,192,247,130,63,52,217,82,195,143,2,45,53,225,176,154,94,118,114,142,252,23,134,213,48,178,242,24,94,83,209,240,154,112,68,77,13,53,178,166,238,52,107,194,81,53,140,106,36,70,215,48,186,166,31,196,168,97,68,13,99,106,205,7,49,106,101,91,206,113,170,100,92,77,56,190,134,241,53,78,168,149,191,114,98,13,19,106,24,91,195,196,90,245,32,134,130,38,213,132,147,107,152,92,227,148,90,217,53,152,173,53,76,169,161,181,38,156,90,195,212,90,245,32,134,34,167,213,132,211,107,152,94,227,12,77,206,172,97,70,13,51,107,194,89,218,163,45,231,168,127,97,86,13,163,42,143,217,53,21,205,174,9,231,232,161,230,170,46,115,107,194,121,53,204,107,36,230,215,48,95,123,44,168,97,78,13,11,154,30,11,107,101,71,206,69,170,100,81,77,184,184,134,197,53,182,213,202,223,184,164,134,182,26,22,214,176,164,242,88,170,160,165,53,225,178,26,150,213,184,188,86,14,12,226,138,26,150,215,176,162,38,92,89,195,202,202,99,149,34,87,213,132,237,53,180,215,184,90,147,107,106,88,93,195,154,154,112,173,246,232,200,57,250,95,88,91,195,232,202,99,93,77,69,235,106,194,245,122,168,13,170,203,134,154,112,99,13,27,27,137,142,26,58,180,199,166,26,214,215,176,169,233,177,185,86,118,229,220,162,74,182,212,132,157,53,116,214,184,181,86,14,225,182,26,182,214,176,185,134,109,149,199,118,5,109,175,9,119,212,176,163,198,157,181,178,125,48,119,213,176,179,134,93,53,225,238,26,118,87,30,123,20,185,167,38,220,91,195,222,26,247,105,114,127,13,251,106,216,95,19,118,105,143,174,156,99,254,133,174,26,198,84,30,7,106,42,58,80,19,118,235,161,14,170,46,7,107,194,67,53,28,106,36,14,215,112,88,123,28,169,161,187,134,35,77,143,163,181,178,39,231,49,85,114,172,38,60,94,195,241,26,79,212,202,223,121,178,134,19,181,255,198,212,127,54,71,149,117,237,154,104,57,234,121,223,93,181,119,196,57,59,78,236,211,221,209,177,239,59,222,210,242,62,115,25,69,244,151,245,11,242,127,140,111,245,15,132,247,32,188,7,225,61,8,239,65,120,15,194,123,16,222,131,240,30,58,230,204,165,71,245,113,196,184,198,200,113,85,86,174,57,115,198,84,130,195,45,56,94,121,156,80,208,137,22,225,201,22,156,108,225,169,150,178,253,103,158,110,193,169,22,156,110,17,118,183,160,187,242,56,163,200,51,45,194,179,45,56,219,194,115,154,60,223,130,115,45,56,223,34,188,160,61,186,255,139,35,26,184,208,130,17,149,199,197,22,21,93,108,17,94,210,67,93,86,93,46,183,8,175,180,224,74,51,113,181,5,87,181,199,181,22,92,106,193,53,229,241,103,248,71,217,165,30,215,215,91,202,255,205,27,45,250,113,125,189,5,55,90,212,227,250,102,75,249,51,111,181,224,102,11,110,181,252,205,158,22,244,180,252,227,113,125,187,165,236,249,47,222,81,175,116,167,69,120,183,5,119,91,120,175,165,252,137,247,91,112,175,5,183,91,112,191,210,127,160,160,7,45,194,135,45,120,216,194,71,45,234,33,252,184,5,143,90,240,184,69,248,164,5,79,42,253,167,138,124,218,34,124,214,130,103,45,124,174,201,23,45,120,222,130,23,45,194,151,90,191,231,191,56,178,129,151,45,24,89,233,247,182,168,168,183,69,248,74,15,245,90,117,121,221,34,124,211,130,55,205,196,219,22,188,213,250,239,90,240,170,5,239,250,223,198,247,45,101,239,127,241,131,42,249,208,34,252,216,130,143,45,252,164,220,63,183,224,83,11,222,183,224,115,229,241,69,65,95,90,132,95,91,240,181,133,223,90,212,67,248,123,11,190,181,224,123,139,240,71,11,126,84,30,109,6,6,160,205,16,14,52,48,208,224,32,67,145,131,13,12,50,48,216,16,14,49,244,178,243,95,28,213,192,16,3,163,42,143,161,134,138,134,26,194,97,134,26,106,184,234,50,220,16,142,48,48,162,153,24,105,96,164,161,60,70,25,24,102,96,148,241,111,143,209,70,217,246,23,199,168,146,49,134,112,172,129,177,6,199,25,229,47,28,111,96,156,129,209,6,198,27,213,69,12,5,181,27,194,9,6,38,24,156,104,168,135,240,36,3,19,13,76,50,132,147,13,76,54,170,139,24,138,156,98,8,167,26,152,106,112,154,38,167,27,152,102,96,186,33,156,161,61,218,254,226,232,6,102,24,24,93,121,204,52,84,52,211,16,206,210,67,205,86,93,102,27,194,57,6,230,52,19,115,13,204,213,30,243,12,204,50,48,175,223,163,195,40,219,255,226,124,85,50,223,16,46,48,176,192,224,66,163,252,149,139,12,44,52,208,97,96,81,229,177,88,65,139,13,225,18,3,75,12,46,53,212,67,120,153,129,165,6,150,25,194,229,6,150,87,30,43,20,185,194,16,174,52,176,210,224,42,77,174,54,176,202,192,106,67,184,70,123,180,255,197,49,13,172,49,48,166,242,88,107,168,104,173,33,236,212,67,173,83,93,214,25,194,245,6,214,55,19,27,12,108,208,30,27,13,116,26,216,216,239,177,201,40,59,254,226,102,85,178,217,16,110,49,176,197,224,86,163,252,141,219,12,108,53,176,201,192,182,202,99,187,130,182,27,194,29,6,118,24,220,105,168,135,240,46,3,59,13,236,50,132,187,13,236,174,60,246,40,114,143,33,236,50,208,101,112,175,38,247,25,216,107,96,159,33,220,175,61,58,254,226,216,6,246,27,24,91,121,28,48,84,116,192,16,30,212,67,29,82,93,14,25,194,195,6,14,55,19,71,12,28,209,30,71,13,28,52,112,180,223,227,152,81,118,254,197,227,170,228,184,33,60,97,224,132,193,147,70,57,128,167,12,156,52,112,204,192,169,202,227,180,130,78,27,194,110,3,221,6,207,24,234,33,124,214,192,25,3,103,13,225,57,3,231,42,143,243,138,60,111,8,47,24,184,96,240,162,38,47,25,184,104,224,146,33,188,172,61,58,255,226,184,6,46,27,24,87,121,92,49,84,116,197,16,94,213,67,93,83,93,174,25,194,235,6,174,55,19,55,12,220,208,30,55,13,92,53,112,179,223,227,150,81,118,253,197,30,85,210,99,8,111,27,184,109,240,142,81,254,206,187,6,238,24,184,101,224,110,229,113,79,65,247,12,225,125,3,247,13,62,48,212,67,248,161,129,7,6,30,26,194,71,6,30,85,30,143,21,249,216,16,62,49,240,196,224,83,77,62,51,240,212,192,51,67,248,92,123,116,253,197,241,13,60,55,48,190,242,120,97,168,232,133,33,124,169,135,234,85,93,122,13,225,43,3,175,154,137,215,6,94,107,143,55,6,94,26,120,163,60,254,244,255,40,111,169,199,245,91,163,252,95,124,103,52,47,98,24,120,103,232,139,24,70,249,51,63,24,120,111,224,131,241,55,63,26,248,104,252,243,34,134,81,118,255,197,207,234,149,62,27,194,47,6,190,24,252,106,148,63,241,155,129,175,6,62,25,248,86,233,127,87,208,119,67,248,195,192,15,131,109,166,190,136,97,162,205,196,64,83,56,200,196,32,179,186,136,97,98,0,6,155,194,33,38,134,152,28,170,201,97,38,134,154,24,102,10,135,155,122,181,250,139,237,13,12,55,209,94,233,143,48,85,52,194,20,142,52,213,80,163,84,151,81,166,112,180,137,209,205,196,24,19,99,76,125,17,195,196,72,19,99,205,254,139,24,102,217,243,23,199,171,146,241,166,176,221,68,187,201,9,102,249,51,39,154,152,96,98,156,137,137,102,117,17,67,65,147,76,225,100,19,147,77,78,49,245,69,12,19,83,76,76,53,133,211,76,76,171,60,166,43,114,186,41,156,97,98,134,201,153,154,156,101,98,166,137,89,166,112,182,246,232,249,139,19,26,152,109,98,66,229,49,199,84,209,28,83,56,87,15,53,79,117,153,103,10,59,76,116,52,19,243,77,204,215,30,11,76,204,53,177,160,223,99,161,89,246,254,197,69,170,100,145,41,92,108,98,177,201,37,102,249,11,151,154,88,98,98,161,137,165,149,199,50,5,45,51,133,203,77,44,55,185,194,212,23,49,76,172,48,177,210,20,174,50,177,170,242,88,173,200,213,166,112,141,137,53,38,215,106,178,211,196,90,19,157,166,112,157,246,232,253,139,19,27,88,103,98,98,229,177,222,84,209,122,83,184,65,15,181,81,117,217,104,10,55,153,216,212,76,108,54,177,89,123,108,49,177,193,196,150,126,143,173,102,217,214,194,109,170,100,155,41,220,110,98,187,201,29,102,249,43,119,154,216,97,98,171,137,157,149,199,46,5,237,50,133,187,77,236,54,185,199,212,23,49,76,236,49,209,101,10,247,154,216,91,121,236,83,228,62,83,184,223,196,126,147,7,52,121,208,196,1,19,7,77,225,33,237,209,214,194,73,13,28,50,49,169,242,56,108,170,232,176,41,60,162,135,58,170,186,28,53,133,199,76,28,107,38,142,155,56,174,61,78,152,56,98,226,68,191,199,73,179,108,111,225,41,85,114,202,20,158,54,113,218,100,183,89,254,198,51,38,186,77,156,52,113,166,242,56,171,160,179,166,240,156,137,115,38,207,155,250,34,134,137,243,38,46,152,194,139,38,46,86,30,151,20,121,201,20,94,54,113,217,228,21,77,94,53,113,197,196,85,83,120,77,123,180,183,112,114,3,215,76,76,174,60,174,155,42,186,110,10,111,232,161,110,170,46,55,77,225,45,19,183,154,137,30,19,61,218,227,182,137,27,38,110,247,123,220,49,203,142,22,222,85,37,119,77,225,61,19,247,76,222,55,203,1,124,96,226,190,137,59,38,30,84,30,15,21,244,208,20,62,50,241,200,228,99,83,95,196,48,241,216,196,19,83,248,212,196,211,202,227,153,34,159,153,194,231,38,158,155,124,161,201,151,38,94,152,120,105,10,123,181,71,71,11,167,52,208,107,98,74,229,241,202,84,209,43,83,248,90,15,245,70,117,121,99,10,223,154,120,219,76,188,51,241,78,123,188,55,241,218,196,251,126,143,15,102,217,217,194,143,170,228,163,41,252,100,226,147,201,207,102,249,59,191,152,248,108,226,131,137,47,149,199,87,5,125,53,133,223,76,124,51,249,221,212,23,49,76,124,55,241,195,20,182,89,104,179,170,139,24,22,6,96,160,37,28,100,97,144,197,193,150,190,136,97,97,176,133,33,150,112,168,165,151,157,22,78,109,96,168,133,169,149,199,48,75,69,195,44,225,112,75,13,53,66,117,25,97,9,71,90,24,217,76,140,178,48,202,210,23,49,44,12,183,48,218,234,191,136,97,149,93,45,28,171,74,198,90,194,113,22,198,89,28,111,149,255,98,187,133,241,22,198,88,104,183,170,139,24,10,154,96,9,39,90,152,104,113,146,165,47,98,88,152,100,97,178,37,156,98,97,74,229,49,85,145,83,45,225,52,11,211,44,78,215,228,12,11,211,45,204,176,132,51,181,71,87,11,167,53,48,211,194,180,202,99,150,165,162,89,150,112,182,30,106,142,234,50,199,18,206,181,48,183,153,152,103,97,158,246,232,176,48,219,66,135,242,248,211,253,163,124,175,150,157,249,86,249,255,225,2,171,121,17,195,194,2,75,95,196,176,202,159,185,200,194,66,11,139,172,191,185,216,194,98,235,159,23,49,172,178,187,133,75,213,43,45,181,132,203,44,44,179,184,220,42,127,226,10,11,203,45,44,177,176,162,210,95,169,160,149,150,112,149,133,85,22,87,91,106,49,89,99,97,181,133,53,150,112,173,133,181,149,126,167,34,59,45,225,58,11,235,44,174,215,228,6,11,235,45,108,176,132,27,181,126,119,11,167,55,176,209,194,244,74,127,147,165,162,77,150,112,179,30,106,139,234,178,197,18,110,181,176,181,153,216,102,97,155,214,223,110,97,179,133,237,253,111,227,14,171,236,105,225,78,85,178,211,18,238,178,176,203,226,110,229,190,199,194,110,11,59,44,236,169,60,186,20,212,101,9,247,90,216,107,113,159,85,246,252,202,253,22,246,89,216,111,9,15,88,56,80,121,28,84,228,65,75,120,200,194,33,139,135,53,121,196,194,97,11,71,44,225,81,237,209,211,194,25,13,28,181,48,163,242,56,102,169,232,152,37,60,174,135,58,161,186,156,176,132,39,45,156,108,38,78,89,56,165,61,78,91,56,110,225,116,191,71,183,85,246,182,240,140,42,57,99,9,207,90,56,107,241,156,85,254,194,243,22,206,89,232,182,112,190,242,184,160,160,11,150,240,162,133,139,22,47,89,229,179,95,121,217,194,37,11,151,45,225,21,11,87,42,143,171,138,188,106,9,175,89,184,102,241,186,38,111,88,184,110,225,134,37,188,169,61,122,91,56,179,129,155,22,102,86,30,183,44,21,221,178,132,61,122,168,219,170,203,109,75,120,199,194,157,102,226,174,133,187,218,227,158,133,30,11,247,250,61,238,91,101,155,193,7,170,228,129,37,124,104,225,161,197,71,86,249,43,31,91,120,100,225,190,133,199,149,199,19,5,61,177,132,79,45,60,181,248,204,82,139,226,115,11,207,44,60,183,132,47,44,188,168,60,94,42,242,165,37,236,181,208,107,241,149,38,95,91,120,101,225,181,37,124,163,61,218,12,206,106,224,141,133,89,149,199,91,75,69,111,45,225,59,61,212,123,213,229,189,37,252,96,225,67,51,241,209,194,71,237,241,201,194,59,11,159,250,61,62,91,101,187,193,47,170,228,139,37,252,106,225,171,197,111,86,249,27,191,91,248,102,225,179,133,239,149,199,15,5,253,176,132,109,54,218,108,14,180,213,162,56,200,198,64,27,131,108,225,96,27,131,237,234,34,134,141,1,24,98,11,135,218,24,106,115,152,38,135,219,24,102,99,184,45,28,97,235,101,199,224,236,6,70,216,152,93,121,140,180,85,52,210,22,142,178,213,80,163,85,151,209,182,112,140,141,49,205,196,88,27,99,109,125,17,195,198,40,27,227,236,127,123,140,183,203,14,131,237,170,164,221,22,78,176,49,193,230,68,187,28,192,73,54,38,218,24,111,99,146,221,244,152,172,160,201,182,112,138,141,41,54,167,218,229,206,223,57,205,198,84,27,211,108,225,116,27,211,43,143,25,138,156,97,11,103,218,152,105,115,150,38,103,219,152,101,99,182,45,156,163,61,58,12,206,105,96,142,141,57,149,199,92,91,69,115,109,225,60,61,84,135,234,210,97,11,231,219,152,223,76,44,176,177,64,123,44,180,49,207,198,194,126,143,69,118,217,105,112,177,42,89,108,11,151,216,88,98,115,169,93,254,206,101,54,150,218,88,100,99,89,229,177,92,65,203,109,225,10,27,43,108,174,180,203,235,3,184,202,198,74,27,171,108,225,106,27,171,43,143,53,138,92,99,11,215,218,88,107,179,83,147,235,108,116,218,88,103,11,215,107,143,78,131,115,27,88,111,99,110,229,177,193,86,209,6,91,184,81,15,181,73,117,217,100,11,55,219,216,220,76,108,177,177,69,123,108,181,177,209,198,86,229,241,167,253,71,57,124,77,215,79,220,102,171,175,150,182,126,92,111,179,177,221,86,143,235,29,118,249,51,119,218,216,97,99,167,253,55,119,217,216,101,255,227,113,189,219,46,187,12,238,81,175,180,199,22,118,217,232,178,185,215,46,127,226,62,27,123,109,236,182,177,175,210,223,175,160,253,182,240,128,141,3,54,15,218,229,198,159,121,200,198,65,27,135,108,225,97,27,135,43,253,35,138,60,98,11,143,218,56,106,243,152,38,143,219,56,102,227,184,45,60,161,245,187,12,206,107,224,132,141,121,149,254,73,91,69,39,109,225,41,61,212,105,213,229,180,45,236,182,209,221,76,156,177,113,70,235,159,181,113,202,198,217,254,183,241,156,93,118,27,60,175,74,206,219,194,11,54,46,216,188,168,220,47,217,184,104,227,156,141,75,149,199,101,5,93,182,133,87,108,92,177,121,213,86,123,255,107,54,174,218,184,102,11,175,219,184,94,121,220,80,228,13,91,120,211,198,77,155,183,52,217,99,227,150,141,30,91,120,91,123,116,27,236,104,224,182,141,142,202,227,142,173,162,59,182,240,174,30,234,158,234,114,207,22,222,183,113,191,153,120,96,227,129,246,120,104,227,174,141,135,253,30,143,236,178,199,224,99,85,242,216,22,62,177,241,196,230,83,187,252,133,207,108,60,181,241,200,198,179,202,227,185,130,158,219,194,23,54,94,216,124,105,171,189,102,175,141,151,54,122,109,225,43,27,175,42,143,215,138,124,109,11,223,216,120,99,243,173,38,223,217,120,107,227,157,45,124,175,61,122,12,206,111,224,189,141,249,149,199,7,91,69,31,108,225,71,61,212,39,213,229,147,45,252,108,227,115,51,241,197,198,23,237,241,213,198,71,27,95,251,61,190,217,101,175,193,239,170,228,187,45,252,97,227,135,205,54,167,252,149,3,29,180,57,248,102,99,160,211,244,24,228,96,0,6,57,194,193,14,6,59,28,226,168,189,205,80,7,67,28,12,117,132,195,28,12,115,154,30,195,21,57,220,17,142,112,48,194,225,72,77,142,114,48,210,193,40,71,56,218,209,203,142,193,5,13,140,118,176,160,242,24,227,168,104,140,35,28,235,168,161,198,169,46,227,28,225,120,7,227,155,137,118,7,237,142,242,152,224,96,172,131,9,142,250,88,153,127,148,211,212,199,106,162,83,254,159,156,228,232,143,213,68,7,147,28,245,177,154,236,148,63,115,138,131,201,14,166,56,127,115,170,131,169,206,63,62,86,211,156,178,205,228,116,245,74,211,29,225,12,7,51,28,206,116,202,159,56,203,193,76,7,211,28,204,170,244,103,43,104,182,35,156,227,96,142,195,185,142,218,219,204,115,48,215,193,60,71,216,225,160,163,210,159,175,200,249,142,112,129,131,5,14,23,106,114,145,131,133,14,22,57,194,197,90,191,205,228,194,6,22,59,88,88,233,47,113,84,180,196,17,46,213,67,45,83,93,150,57,194,229,14,150,55,19,43,28,172,208,250,43,29,44,117,176,210,233,255,69,12,167,108,55,185,90,149,172,118,132,107,28,172,113,184,86,185,119,58,88,235,96,149,131,206,202,99,157,130,214,57,194,245,14,214,59,220,224,168,53,104,163,131,13,14,54,58,194,77,14,54,85,30,155,21,185,217,17,110,113,176,197,225,86,77,110,115,176,213,193,54,71,184,93,123,180,155,92,212,192,118,7,139,42,143,29,142,138,118,56,194,157,122,168,93,170,203,46,71,184,219,193,238,102,98,143,131,61,218,163,203,193,78,7,93,253,30,123,157,178,195,228,62,85,178,207,17,238,119,176,223,225,1,167,252,133,7,29,28,112,176,215,193,193,202,227,144,130,14,57,194,195,14,14,59,60,226,168,61,218,81,7,71,28,28,117,132,199,28,28,171,60,142,43,242,184,35,60,225,224,132,195,147,154,60,229,224,164,131,83,142,240,180,246,232,48,185,184,129,211,14,22,87,30,221,142,138,186,29,225,25,61,212,89,213,229,172,35,60,231,224,92,51,113,222,193,121,237,113,193,193,25,7,23,250,61,46,58,101,167,201,75,170,228,146,35,188,236,224,178,195,43,234,99,117,213,193,21,7,23,29,92,173,60,174,41,232,154,35,188,238,224,186,195,27,78,217,241,11,111,58,184,225,224,166,35,188,229,224,86,229,209,163,200,30,71,120,219,193,109,135,119,52,121,215,193,29,7,119,29,225,61,237,209,105,114,73,3,247,28,44,169,60,238,59,42,186,239,8,31,232,161,30,170,46,15,29,225,35,7,143,154,137,199,14,30,107,143,39,14,30,56,120,162,63,86,45,127,148,235,212,199,234,169,83,254,15,62,107,126,172,158,58,120,166,63,86,207,213,255,90,47,28,60,119,240,194,249,155,47,29,188,252,231,199,170,215,41,187,76,190,82,175,244,202,17,190,118,240,218,225,27,245,177,122,235,224,141,131,94,7,111,43,253,119,10,122,231,8,223,59,120,239,240,131,163,214,160,143,14,62,56,248,232,8,63,57,248,84,233,127,86,228,103,71,248,197,193,23,135,95,53,249,205,193,87,7,223,28,225,119,173,223,101,114,105,3,223,29,44,173,244,127,56,42,250,225,8,219,92,53,212,64,87,125,211,116,133,131,92,12,114,117,98,176,139,193,174,190,136,225,162,205,197,16,183,255,34,134,91,118,155,28,166,74,134,185,194,225,46,134,187,28,225,150,63,115,164,139,17,46,134,186,24,233,86,23,49,20,52,202,21,142,118,49,218,229,24,87,173,65,99,93,140,113,49,214,21,142,115,49,206,173,46,98,40,114,188,43,108,119,209,238,114,130,38,39,186,152,224,98,162,43,156,228,234,213,202,228,178,6,38,185,88,86,121,76,118,85,52,217,21,78,209,67,77,85,93,166,186,194,105,46,166,53,19,211,93,76,215,30,51,92,76,113,49,163,223,99,166,91,246,152,156,165,74,102,185,194,217,46,102,187,156,227,150,191,112,174,139,57,46,102,186,152,91,121,204,83,208,60,87,216,225,162,195,229,124,87,173,65,11,92,204,119,177,192,21,46,116,177,176,242,88,164,200,69,174,112,177,139,197,46,151,104,114,169,139,37,46,150,186,194,101,218,163,199,228,242,6,150,185,88,222,119,17,195,213,145,43,92,161,135,90,169,186,172,116,133,171,92,172,106,38,86,187,88,173,61,214,184,88,225,98,77,191,199,90,183,236,53,217,169,74,58,93,225,58,23,235,92,174,119,203,95,185,193,197,122,23,107,93,108,168,60,54,42,104,163,43,220,228,98,147,203,205,110,121,254,39,110,113,177,217,197,22,87,184,213,197,214,202,99,155,34,183,185,194,237,46,182,187,220,161,201,157,46,118,184,216,233,10,119,105,143,94,147,43,26,216,229,98,69,223,69,12,87,69,187,93,225,30,61,84,151,234,210,229,10,247,186,216,219,76,236,115,177,79,123,236,119,177,199,197,254,126,143,3,110,217,102,241,160,42,57,232,10,15,185,56,228,242,176,91,254,198,35,46,14,187,56,224,226,72,229,113,84,65,71,93,225,49,23,199,92,30,119,245,47,98,184,56,238,226,132,43,60,233,226,100,229,113,74,145,167,92,225,105,23,167,93,118,107,242,140,139,110,23,103,92,225,89,237,209,102,113,101,3,103,93,172,172,60,206,185,42,58,231,10,207,235,161,46,168,46,23,92,225,69,23,23,155,137,75,46,46,105,143,203,46,206,187,184,172,60,254,252,175,63,202,61,234,241,112,197,45,255,39,175,186,205,95,196,112,113,213,213,191,136,161,62,34,215,93,92,115,113,221,253,155,55,92,220,112,255,249,139,24,110,217,110,241,150,122,165,91,174,176,199,69,143,203,219,110,249,19,239,184,184,237,226,166,139,59,149,254,93,5,221,117,133,247,92,220,115,121,223,85,107,233,3,23,247,93,60,112,133,15,93,60,172,244,31,41,242,145,43,124,236,226,177,203,39,154,124,234,226,137,139,167,174,240,153,214,111,183,184,170,129,103,46,86,245,93,196,112,85,244,220,21,190,208,67,189,84,93,94,186,194,94,23,189,205,196,43,23,175,180,254,107,23,47,92,188,238,127,27,223,184,101,135,197,183,170,228,173,43,124,231,226,157,203,247,202,253,131,139,247,46,222,184,248,80,121,124,84,208,71,87,248,201,197,39,151,159,221,242,222,111,252,226,226,179,139,47,174,240,171,139,175,149,199,55,69,126,115,133,223,93,124,119,249,67,147,109,30,126,184,104,243,132,3,61,189,90,89,92,221,192,64,15,171,251,46,98,120,42,26,228,9,7,123,106,168,33,158,250,166,233,9,135,122,24,218,76,12,243,48,204,211,23,49,60,12,246,48,220,235,191,136,225,149,157,22,71,170,146,145,158,112,148,135,81,30,71,123,229,47,28,227,97,180,135,17,30,198,120,213,69,12,5,141,245,132,227,60,140,243,56,222,43,87,13,96,187,135,241,30,218,61,225,4,15,19,188,234,34,134,34,39,122,194,73,30,38,121,156,172,201,41,30,38,123,152,226,9,167,106,143,78,139,107,26,152,234,97,77,223,69,12,79,69,211,60,225,116,61,212,12,213,101,134,39,156,233,97,102,51,49,203,195,44,237,49,219,195,116,15,179,251,61,230,120,101,151,197,185,170,100,174,39,156,231,97,158,199,14,175,252,149,243,61,116,120,152,227,97,126,229,177,64,65,11,60,225,66,15,11,61,46,242,202,49,191,114,177,135,69,30,22,123,194,37,30,150,84,30,75,21,185,212,19,46,243,176,204,227,114,77,174,240,176,220,195,10,79,184,82,123,116,89,92,219,192,74,15,107,251,46,98,120,42,90,229,9,87,235,161,214,168,46,107,60,225,90,15,107,155,137,78,15,157,218,99,157,135,213,30,214,245,123,172,247,202,110,139,27,84,201,6,79,184,209,195,70,143,155,188,242,55,110,246,176,201,195,122,15,155,43,143,45,10,218,226,9,183,122,216,234,113,155,87,110,29,192,237,30,182,121,216,238,9,119,120,216,81,121,236,84,228,78,79,184,203,195,46,143,187,53,185,199,195,110,15,123,60,97,151,246,232,182,216,217,64,151,135,206,190,139,24,158,138,246,122,194,125,122,168,253,170,203,126,79,120,192,195,129,102,226,160,135,131,218,227,144,135,125,30,14,245,123,28,246,202,30,139,71,84,201,17,79,120,212,195,81,143,199,188,114,0,143,123,56,230,225,176,135,227,149,199,9,5,157,240,132,39,61,156,244,120,202,43,23,253,202,211,30,78,121,56,237,9,187,61,116,87,30,103,20,121,198,19,158,245,112,214,227,57,77,158,247,112,206,195,121,79,120,65,123,244,88,92,215,192,5,15,235,250,46,98,120,42,186,232,9,47,233,161,46,171,46,151,61,225,21,15,87,154,137,171,30,174,106,143,107,30,46,121,184,214,239,113,221,43,123,45,222,80,37,55,60,225,77,15,55,61,222,242,202,223,217,227,225,150,135,235,30,122,42,143,219,10,186,237,9,239,120,184,227,241,174,87,182,253,202,123,30,238,122,184,231,9,239,123,184,95,121,60,80,228,3,79,248,208,195,67,143,143,52,249,216,195,35,15,143,61,225,19,237,209,107,113,125,3,79,60,172,175,60,158,122,42,122,234,9,159,233,161,158,171,46,207,61,225,11,15,47,154,137,151,30,94,106,143,94,15,207,60,244,246,123,188,242,202,54,155,175,85,201,107,79,248,198,195,27,143,111,189,242,95,124,231,225,173,135,87,30,222,85,30,239,21,244,222,19,126,240,240,193,227,71,175,236,24,192,79,30,62,122,248,228,9,63,123,248,92,121,124,81,228,23,79,248,213,195,87,143,223,52,249,221,195,55,15,223,61,225,15,237,209,102,115,67,3,63,60,108,168,60,218,124,21,181,249,194,129,190,26,106,144,175,190,92,250,194,193,62,6,251,58,49,196,199,16,95,255,34,134,143,129,62,134,250,255,246,24,230,151,237,54,135,171,146,225,190,112,132,143,17,62,71,250,229,127,112,148,143,145,62,134,249,24,229,55,61,70,43,104,180,47,28,227,99,140,207,177,126,121,224,23,142,243,49,214,199,56,95,56,222,199,120,191,233,209,174,200,118,95,56,193,199,4,159,19,53,57,201,199,68,31,147,124,225,100,95,175,31,54,55,54,48,217,199,198,202,99,138,175,162,41,190,112,170,30,106,154,234,50,205,23,78,247,49,189,153,152,225,99,134,246,152,233,99,170,143,153,253,30,179,252,178,195,230,108,85,50,219,23,206,241,49,199,231,92,191,252,79,206,243,49,215,199,44,31,243,42,143,14,5,117,248,194,249,62,230,251,92,224,151,157,191,115,161,143,5,62,22,250,194,69,62,22,85,30,139,21,185,216,23,46,241,177,196,231,82,77,46,243,177,212,199,50,95,184,92,123,116,216,220,212,192,114,31,155,42,143,21,190,138,86,248,194,149,122,168,85,170,203,42,95,184,218,199,234,102,98,141,143,53,218,99,173,143,149,62,214,42,143,63,249,71,121,86,109,3,58,253,242,255,203,117,190,222,6,116,250,88,231,171,109,192,122,191,252,153,27,124,172,247,177,193,255,155,27,125,108,244,255,177,13,216,228,151,157,54,55,171,87,218,236,11,183,248,216,226,115,171,95,254,196,109,62,182,250,216,228,99,91,165,191,93,65,219,125,225,14,31,59,124,238,244,203,238,95,184,203,199,78,31,187,124,225,110,31,187,43,253,61,138,220,227,11,187,124,116,249,220,171,201,125,62,246,250,216,231,11,247,107,125,245,178,13,236,247,177,185,239,34,134,175,162,3,190,240,160,30,234,144,234,114,200,23,30,246,113,184,153,56,226,227,136,214,63,234,227,160,143,163,253,111,227,49,191,236,178,121,92,149,28,247,133,39,124,156,240,121,82,185,159,242,113,210,199,49,31,167,42,143,211,10,58,237,11,187,125,116,251,60,227,235,95,196,240,113,198,199,89,95,120,206,199,185,202,227,188,34,207,251,194,11,62,46,248,188,168,201,75,62,46,250,184,228,11,47,107,143,46,155,91,26,184,236,99,75,223,69,12,95,69,87,124,225,85,61,212,53,213,229,154,47,188,238,227,122,51,113,195,199,13,237,113,211,199,85,31,55,251,61,110,249,101,183,205,30,85,210,227,11,111,251,184,237,243,142,95,254,194,187,62,238,248,184,229,227,110,229,113,79,65,247,124,225,125,31,247,125,62,240,245,47,98,248,120,224,227,161,47,124,228,227,81,229,241,88,145,143,125,225,19,31,79,124,62,213,228,51,31,79,125,60,243,133,207,181,71,183,205,173,13,60,247,177,181,239,34,134,175,162,23,190,240,165,30,170,87,117,233,245,133,175,124,188,106,38,94,251,120,173,61,222,248,120,233,227,77,191,199,91,191,236,177,249,78,149,188,243,133,239,125,188,247,249,193,47,127,229,71,31,31,124,188,245,241,177,242,248,164,160,79,190,240,179,143,207,62,191,248,101,207,239,252,234,227,139,143,175,190,240,155,143,111,149,199,119,69,126,247,133,63,124,252,240,217,22,40,114,96,128,182,0,3,3,225,160,64,47,59,54,183,53,48,40,192,182,202,99,112,160,162,193,129,112,72,160,134,26,26,96,0,134,6,194,97,1,134,53,19,195,3,12,15,148,199,136,0,67,2,140,8,254,237,49,50,40,123,109,142,82,37,163,2,225,232,0,163,3,142,9,202,223,56,54,192,152,0,35,3,140,13,154,30,227,20,52,46,16,142,15,48,62,96,123,80,118,252,194,9,1,218,3,76,8,132,19,3,76,12,154,30,147,20,57,41,16,78,14,48,57,224,20,77,78,13,48,37,192,212,64,56,77,123,244,218,220,222,192,180,0,219,43,143,233,129,138,166,7,194,25,122,168,153,170,203,204,64,56,43,192,172,102,98,118,128,217,218,99,78,128,25,1,230,244,123,204,13,202,54,135,243,84,201,188,64,216,17,160,35,224,252,160,28,192,5,1,230,7,152,27,96,65,229,177,80,65,11,3,225,162,0,139,2,46,14,202,17,3,184,36,192,226,0,75,2,225,210,0,75,43,143,101,138,92,22,8,151,7,88,30,112,133,38,87,6,88,17,96,101,32,92,165,61,218,28,238,104,96,85,128,29,149,199,234,64,69,171,3,225,26,61,212,90,213,101,109,32,236,12,208,217,76,172,11,176,78,123,172,15,176,38,192,250,126,143,13,65,217,238,112,163,42,217,24,8,55,5,216,20,112,115,80,254,206,45,1,54,7,216,16,96,75,229,177,85,65,91,3,225,182,0,219,2,110,15,202,157,191,115,71,128,237,1,118,4,194,157,1,118,86,30,187,20,185,43,16,238,14,176,59,224,30,77,118,5,216,19,160,43,16,238,213,30,237,14,119,54,176,55,192,206,202,99,95,160,162,125,129,112,191,30,234,128,234,114,32,16,30,12,112,176,153,56,20,224,144,246,56,28,96,127,128,195,253,30,71,130,178,195,225,81,85,114,52,16,30,11,112,44,224,241,160,252,23,79,4,56,30,224,72,128,19,149,199,73,5,157,12,132,167,2,156,10,120,58,40,35,118,7,56,29,160,59,16,158,9,112,166,210,56,171,192,179,129,240,92,128,115,1,207,43,240,66,128,243,1,46,4,194,139,218,162,195,225,174,6,46,6,216,85,89,92,10,84,116,41,16,94,214,35,93,81,77,174,4,194,171,1,174,54,19,215,2,92,211,22,215,3,92,14,112,93,89,252,249,191,255,40,239,169,69,231,70,80,254,79,222,12,244,162,115,35,192,205,64,45,58,183,130,242,103,246,4,184,21,160,39,248,155,183,3,220,14,254,177,232,220,9,202,78,135,119,213,43,221,13,132,247,2,220,11,120,63,40,127,226,131,0,247,3,220,9,240,160,146,127,168,160,135,129,240,81,128,71,1,31,7,106,41,121,18,224,113,128,39,129,240,105,128,167,149,253,51,69,62,11,132,207,3,60,15,248,66,147,47,3,188,8,240,50,16,246,106,253,78,135,187,27,232,13,176,187,239,26,70,160,162,87,129,240,181,30,234,141,234,242,38,16,190,13,240,182,153,120,23,224,157,214,127,31,224,117,128,247,253,111,226,135,160,236,114,248,81,149,124,12,132,159,2,124,10,248,89,185,127,9,240,57,192,135,0,95,42,143,175,10,250,26,8,191,5,248,22,240,123,160,150,146,31,1,190,7,248,17,8,219,66,180,133,213,53,140,16,3,48,48,20,14,10,49,40,228,224,80,145,67,66,12,14,49,36,20,14,13,245,162,227,112,79,3,67,67,236,233,187,134,17,170,104,88,40,28,30,170,161,70,168,46,35,66,225,200,16,35,155,137,81,33,70,133,250,26,70,136,225,33,70,135,253,215,48,194,178,219,225,88,85,50,54,20,142,11,49,46,228,248,176,252,133,237,33,198,135,24,19,162,61,172,174,97,40,104,66,40,156,24,98,98,200,73,161,90,74,38,135,152,20,98,114,40,156,18,98,74,229,49,85,145,83,67,225,180,16,211,66,78,215,228,140,16,211,67,204,8,133,51,181,71,183,195,174,6,102,134,232,234,187,134,17,170,104,86,40,156,173,135,154,163,186,204,9,133,115,67,204,109,38,230,133,152,167,61,58,66,204,14,209,209,239,49,63,44,123,28,46,80,37,11,66,225,194,16,11,67,46,10,203,95,185,56,196,162,16,243,67,44,174,60,150,40,104,73,40,92,26,98,105,200,101,161,90,74,150,135,88,22,98,121,40,92,17,98,69,229,177,82,145,43,67,225,170,16,171,66,174,214,228,154,16,171,67,172,9,133,107,181,71,143,195,189,13,172,13,177,183,242,232,12,85,212,25,10,215,233,161,214,171,46,235,67,225,134,16,27,154,137,141,33,54,106,143,77,33,214,133,216,212,239,177,57,44,123,29,110,81,37,91,66,225,214,16,91,67,110,11,203,223,184,61,196,182,16,155,67,108,175,60,118,40,104,71,40,220,25,98,103,200,93,161,90,74,118,135,216,21,98,119,40,220,19,98,79,229,209,165,200,174,80,184,55,196,222,144,251,52,185,63,196,190,16,251,67,225,1,237,209,235,112,95,3,7,66,236,171,60,14,134,42,58,24,10,15,233,161,14,171,46,135,67,225,145,16,71,154,137,163,33,142,106,143,99,33,14,133,56,214,239,113,60,44,219,92,158,80,37,39,66,225,201,16,39,67,158,10,203,1,60,29,226,84,136,227,33,78,87,30,221,10,234,14,133,103,66,156,9,121,54,84,75,201,185,16,103,67,156,11,133,231,67,156,175,60,46,40,242,66,40,188,24,226,98,200,75,154,188,28,226,82,136,203,161,240,138,246,104,115,185,191,129,43,33,246,87,30,87,67,21,93,13,133,215,244,80,215,85,151,235,161,240,70,136,27,205,196,205,16,55,181,199,173,16,215,66,220,234,247,232,9,203,118,151,183,85,201,237,80,120,39,196,157,144,119,195,242,119,222,11,113,55,68,79,136,123,149,199,125,5,221,15,133,15,66,60,8,249,48,84,75,201,163,16,15,67,60,10,133,143,67,60,174,60,158,40,242,73,40,124,26,226,105,200,103,154,124,30,226,89,136,231,161,240,133,246,104,119,121,160,129,23,33,14,84,30,47,67,21,189,12,133,189,122,168,87,170,203,171,80,248,58,196,235,102,226,77,136,55,218,227,109,136,222,16,111,149,199,159,255,247,31,229,7,245,184,126,167,254,47,122,31,234,199,245,187,16,239,67,245,184,254,16,150,63,243,99,136,15,33,62,134,127,243,83,136,79,225,63,30,215,159,195,178,195,229,23,245,74,95,66,225,215,16,95,67,126,11,203,159,248,61,196,183,16,159,67,124,175,244,127,40,232,71,40,108,139,208,22,113,96,164,30,194,131,34,12,140,48,40,18,14,142,48,56,170,174,97,68,24,128,33,145,112,104,132,161,17,135,105,114,120,132,97,17,134,71,194,17,145,94,173,92,30,108,96,68,132,131,125,215,48,34,21,141,140,132,163,34,53,212,104,213,101,116,36,28,19,97,76,51,49,54,194,216,72,95,195,136,48,42,194,184,168,255,26,70,84,118,186,108,87,37,237,145,112,66,132,9,17,39,70,229,207,156,20,97,98,132,241,17,38,69,213,53,12,5,77,142,132,83,34,76,137,56,53,82,255,147,77,139,48,53,194,180,72,56,61,194,244,202,99,134,34,103,68,194,153,17,102,70,156,165,201,217,17,102,69,152,29,9,231,104,143,78,151,135,26,152,19,225,80,223,53,140,72,69,115,35,225,60,61,84,135,234,210,17,9,231,71,152,223,76,44,136,176,64,123,44,140,48,47,194,194,126,143,69,81,217,229,114,177,42,89,28,9,151,68,88,18,113,105,84,254,194,101,17,150,70,88,20,97,89,229,177,92,65,203,35,225,138,8,43,34,174,140,202,255,63,87,69,88,25,97,85,36,92,29,97,117,165,177,70,129,107,34,225,218,8,107,35,118,42,112,93,132,206,8,235,34,225,122,109,209,229,242,112,3,235,35,28,238,187,132,17,169,104,67,36,220,168,71,218,164,154,108,138,132,155,35,108,110,38,182,68,216,162,45,182,70,216,24,97,107,191,197,182,168,236,118,185,93,149,108,143,132,59,34,236,136,184,51,42,127,229,174,8,59,35,108,139,176,171,178,216,173,160,221,145,112,79,132,61,17,187,162,242,47,238,141,208,21,97,111,36,220,23,97,95,101,177,95,129,251,35,225,129,8,7,34,30,84,224,161,8,7,35,28,138,132,135,181,69,183,203,35,13,28,142,112,164,178,56,18,233,40,18,30,213,35,29,83,77,142,69,194,227,17,142,55,19,39,34,156,208,22,39,35,28,141,112,178,223,226,84,84,246,184,60,173,74,78,71,194,238,8,221,17,207,68,229,111,60,27,225,76,132,83,17,206,86,22,231,20,116,46,18,158,143,112,62,226,133,168,252,147,23,35,92,136,112,49,18,94,138,112,169,178,184,172,192,203,145,240,74,132,43,17,175,42,240,90,132,171,17,174,69,194,235,218,162,199,229,209,6,174,71,56,90,89,220,136,84,116,35,18,222,212,35,221,82,77,110,69,194,158,8,61,205,196,237,8,183,181,197,157,8,55,35,220,233,183,184,27,149,189,46,239,169,146,123,145,240,126,132,251,17,31,68,229,0,62,140,240,32,194,221,8,15,43,139,71,10,122,20,9,31,71,120,28,241,73,84,62,250,133,79,35,60,137,240,52,18,62,139,240,172,210,120,174,200,231,145,240,69,132,23,17,95,106,178,55,194,203,8,189,145,240,149,246,232,117,121,172,129,87,17,142,85,30,175,35,21,189,142,132,111,244,80,111,85,151,183,145,240,93,132,119,205,196,251,8,239,181,199,135,8,111,34,124,232,247,248,24,149,109,30,63,169,146,79,145,240,115,132,207,17,191,68,229,239,252,26,225,75,132,143,17,190,86,30,223,20,244,45,18,126,143,240,61,226,143,168,188,254,11,219,98,252,136,208,22,11,7,198,24,24,55,61,6,197,24,128,65,177,112,112,140,193,49,135,196,138,28,26,99,72,140,161,177,112,88,172,23,28,143,199,27,24,22,227,120,229,49,60,86,209,240,88,56,34,86,67,141,84,93,70,198,194,81,49,70,53,19,163,99,140,142,149,199,152,24,35,98,140,137,255,237,49,54,46,219,61,142,83,37,227,98,225,248,24,227,99,182,199,229,191,56,33,70,123,140,177,49,38,196,77,143,137,10,154,24,11,39,197,152,20,115,114,172,150,145,41,49,38,199,152,18,11,167,198,152,90,121,76,83,228,180,88,56,61,198,244,152,51,52,57,51,198,140,24,51,99,225,44,237,209,238,241,68,3,179,98,156,168,60,102,199,42,154,29,11,231,232,161,230,170,46,115,99,225,188,24,243,154,137,142,24,29,218,99,126,140,57,49,230,247,123,44,136,203,14,143,11,85,201,194,88,184,40,198,162,152,139,227,242,63,184,36,198,226,24,11,98,44,169,60,150,42,104,105,44,92,22,99,89,204,229,49,150,235,185,255,131,43,98,181,11,83,233,149,177,112,85,140,85,49,86,196,194,213,186,249,26,149,88,19,11,215,198,88,219,76,116,198,232,212,243,172,139,177,58,198,186,184,250,55,102,59,60,158,108,168,239,82,141,127,255,27,179,235,227,178,211,227,6,213,99,67,44,220,24,99,99,204,77,113,249,159,220,28,99,83,140,245,49,54,87,3,110,81,208,150,88,184,53,198,214,152,219,226,114,200,191,184,61,198,182,24,219,99,225,142,24,59,170,255,208,59,21,185,51,22,238,138,177,43,230,110,77,238,137,177,59,198,158,88,216,165,255,67,119,122,60,213,64,87,140,83,125,167,252,177,138,246,198,194,125,122,168,253,170,203,254,88,120,32,198,129,102,226,96,140,131,90,236,80,140,125,49,14,245,255,135,62,28,151,93,30,143,168,146,35,177,240,104,140,163,49,143,197,229,127,227,241,24,199,98,28,142,113,188,242,56,161,160,19,177,240,100,140,147,49,79,197,229,245,1,60,29,227,84,140,211,177,176,59,70,119,229,113,70,145,103,98,225,217,24,103,99,158,211,228,249,24,231,98,156,143,133,23,180,71,151,199,211,13,92,136,113,186,239,148,63,86,209,197,88,120,73,15,117,89,117,185,28,11,175,196,184,210,76,92,141,113,85,123,92,139,113,41,198,181,126,143,235,113,217,237,241,134,42,185,17,11,111,198,184,25,243,86,92,254,193,158,24,183,98,92,143,209,83,121,220,86,208,237,88,120,39,198,157,152,119,227,50,226,189,24,119,99,220,139,133,247,99,220,175,52,30,40,240,65,44,124,24,227,97,204,71,10,124,28,227,81,140,199,177,240,137,182,232,246,216,221,192,147,24,221,125,103,252,177,138,158,198,194,103,122,164,231,170,201,243,88,248,34,198,139,102,226,101,140,151,218,162,55,198,179,24,189,202,226,207,255,235,143,242,139,218,103,189,138,203,223,249,58,214,251,172,87,49,94,199,106,159,245,38,46,127,230,219,24,111,98,188,141,255,230,187,24,239,226,127,236,179,222,199,101,143,199,15,234,149,62,196,194,143,49,62,198,252,20,151,63,241,115,140,79,49,222,199,248,92,201,127,81,208,151,88,248,53,198,215,152,223,148,211,247,24,223,98,124,143,133,63,98,252,168,228,219,18,12,64,91,34,28,152,96,96,194,65,73,25,113,112,130,65,9,6,39,194,33,137,94,75,60,158,105,96,72,130,51,125,127,106,153,168,104,104,34,28,150,168,145,134,171,38,195,19,225,136,4,35,154,137,145,9,70,38,250,79,45,19,12,75,48,42,233,255,83,203,164,236,245,56,70,149,140,73,132,99,19,140,77,56,46,41,127,230,248,4,227,18,140,78,48,62,169,254,212,82,65,237,137,112,66,130,9,9,39,38,229,198,159,57,41,193,196,4,147,18,225,228,4,147,147,234,79,45,21,57,37,17,78,77,48,53,225,52,77,78,79,48,45,193,244,68,56,67,123,244,122,60,219,192,140,4,103,251,254,212,50,81,209,204,68,56,75,15,53,91,117,153,157,8,231,36,152,211,76,204,77,48,87,123,204,75,48,43,193,188,126,143,142,164,108,243,57,95,149,204,79,132,11,18,44,72,184,48,41,127,225,162,4,11,19,116,36,88,84,121,44,86,208,226,68,184,36,193,146,132,75,19,245,149,125,89,130,165,9,150,37,194,229,9,150,87,30,43,20,185,34,17,174,76,176,50,225,42,77,174,78,176,42,193,234,68,184,70,123,180,249,60,215,192,154,4,231,250,254,212,50,81,209,218,68,216,169,135,90,167,186,172,75,132,235,19,172,111,38,54,36,216,160,61,54,38,232,76,176,177,223,99,83,82,182,251,220,172,74,54,39,194,45,9,182,36,220,154,148,191,114,91,130,173,9,54,37,216,86,121,108,87,208,246,68,184,35,193,142,132,59,19,245,21,113,87,130,157,9,118,37,194,221,9,118,87,30,123,20,185,39,17,118,37,232,74,184,87,147,251,18,236,77,176,47,17,238,215,30,237,62,207,55,176,63,193,249,190,19,254,68,69,7,18,225,65,61,212,33,213,229,80,34,60,156,224,112,51,113,36,193,17,237,113,52,193,193,4,71,251,61,142,37,101,135,207,227,170,228,120,34,60,145,224,68,194,147,73,249,27,79,37,56,153,224,88,130,83,149,199,105,5,157,78,132,221,9,186,19,158,73,202,158,95,121,54,193,153,4,103,19,225,185,4,231,42,143,243,138,60,159,8,47,36,184,144,240,162,38,47,37,184,152,224,82,34,188,172,61,58,124,94,104,224,114,130,11,125,39,252,137,138,174,36,194,171,122,168,107,170,203,181,68,120,61,193,245,102,226,70,130,27,218,227,102,130,171,9,110,246,123,220,74,202,78,159,61,170,164,39,17,222,78,112,59,225,157,164,28,192,187,9,238,36,184,149,224,110,229,113,79,65,247,18,225,253,4,247,19,62,72,202,243,191,243,97,130,7,9,30,38,194,71,9,30,85,30,143,21,249,56,17,62,73,240,36,225,83,77,62,75,240,52,193,179,68,248,92,123,116,250,188,216,192,243,4,23,251,78,248,19,21,189,72,132,47,245,80,189,170,75,111,34,124,149,224,85,51,241,58,193,107,237,241,38,193,203,4,111,250,61,222,38,101,151,207,119,170,228,93,34,124,159,224,125,194,15,73,249,59,63,38,248,144,224,109,130,143,149,199,39,5,125,74,132,159,19,124,78,248,37,41,223,254,194,175,9,190,36,248,154,8,191,37,248,86,121,124,87,228,247,68,248,35,193,143,132,109,53,69,14,172,161,173,134,129,53,225,160,154,94,114,124,94,106,96,80,13,151,250,78,248,107,42,26,92,19,14,169,169,161,134,214,48,0,67,107,194,97,53,12,107,38,134,215,48,188,166,79,248,107,24,82,195,136,90,255,9,127,173,236,246,57,74,149,140,170,9,71,215,48,186,198,49,181,242,95,28,91,195,152,26,70,214,48,182,86,157,240,43,104,92,77,56,190,134,241,53,182,215,202,49,191,114,66,13,237,53,76,168,9,39,214,48,177,86,157,240,43,114,82,77,56,185,134,201,53,78,209,228,212,26,166,212,48,181,38,156,166,61,186,125,94,110,96,90,13,151,251,78,248,107,42,154,94,19,206,208,67,205,84,93,102,214,132,179,106,152,213,76,204,174,97,182,246,152,83,195,140,26,230,244,123,204,173,149,61,62,231,169,146,121,53,97,71,13,29,53,206,175,149,255,193,5,53,204,175,97,110,13,11,42,143,133,10,90,88,19,46,170,97,81,141,139,107,229,244,95,185,164,134,197,53,44,169,9,151,214,176,180,242,88,166,200,101,53,225,242,26,150,215,184,66,147,43,107,88,81,195,202,154,112,149,246,232,241,121,165,129,85,53,92,233,59,225,175,169,104,117,77,184,70,15,181,86,117,89,91,19,118,214,208,217,76,172,171,97,157,246,88,95,195,154,26,214,247,123,108,168,149,189,62,55,170,146,141,53,225,166,26,54,213,184,185,86,254,39,183,212,176,185,134,13,53,108,169,60,182,42,104,107,77,184,173,134,109,53,110,175,149,91,127,225,142,26,182,215,176,163,38,220,89,195,206,202,99,151,34,119,213,132,187,107,216,93,227,30,77,118,213,176,167,134,174,154,112,175,246,232,245,121,181,129,189,53,92,237,59,225,175,169,104,95,77,184,95,15,117,64,117,57,80,19,30,172,225,96,51,113,168,134,67,218,227,112,13,251,107,56,220,239,113,164,86,182,5,60,170,74,142,214,132,199,106,56,86,227,241,90,249,223,120,162,134,227,53,28,169,225,68,229,113,82,65,39,107,194,83,53,156,170,241,116,173,108,255,23,187,107,56,93,67,119,77,120,166,134,51,149,199,89,69,158,173,9,207,213,112,174,198,243,154,188,80,195,249,26,46,212,132,23,181,71,91,192,107,13,92,172,225,90,223,25,127,77,69,151,106,194,203,122,168,43,170,203,149,154,240,106,13,87,155,137,107,53,92,211,30,215,107,184,92,195,245,126,143,27,181,178,61,224,77,85,114,179,38,188,85,195,173,26,123,106,229,31,188,93,67,79,13,55,106,184,93,121,220,81,208,157,154,240,110,13,119,107,188,87,83,223,48,238,215,112,175,134,251,53,225,131,26,30,84,30,15,21,249,176,38,124,84,195,163,26,31,107,242,73,13,143,107,120,82,19,62,213,30,237,1,175,55,240,180,134,235,149,199,179,154,138,158,213,132,207,245,80,47,84,151,23,53,225,203,26,94,54,19,189,53,244,106,143,87,53,60,175,225,85,191,199,235,90,217,17,240,141,42,121,83,19,190,173,225,109,141,239,106,229,159,124,95,195,187,26,94,215,240,190,242,248,160,160,15,53,225,199,26,62,214,248,169,86,30,249,157,159,107,248,84,195,231,154,240,75,13,95,42,143,175,138,252,90,19,126,171,225,91,141,223,53,249,163,134,239,53,252,168,9,219,234,122,253,8,120,163,129,182,58,110,84,30,3,235,42,26,88,23,14,170,171,161,6,215,49,0,131,235,194,33,117,12,105,38,134,214,49,180,174,60,134,213,49,168,142,97,245,127,123,12,175,151,157,1,71,168,146,17,117,225,200,58,70,214,57,170,94,254,119,142,174,99,84,29,195,235,24,93,111,122,140,81,208,152,186,112,108,29,99,235,28,87,47,59,127,231,248,58,198,213,49,190,46,108,175,163,189,222,244,152,160,200,9,117,225,196,58,38,214,57,73,147,147,235,152,84,199,228,186,112,138,246,232,12,120,179,129,41,117,220,172,60,166,214,85,52,181,46,156,166,135,154,174,186,76,175,11,103,212,49,163,153,152,89,199,76,237,49,171,142,105,117,204,82,30,127,254,31,127,148,3,215,118,253,196,217,245,242,55,206,169,235,77,242,236,58,230,212,213,38,121,110,189,252,153,243,234,152,91,199,188,250,223,236,168,163,163,254,143,77,242,252,122,217,21,112,129,122,165,5,117,225,194,58,22,214,185,168,94,254,196,197,117,44,170,99,126,29,139,43,253,37,10,90,82,23,46,173,99,105,157,203,234,106,179,181,188,142,101,117,44,175,11,87,212,177,162,210,95,169,200,149,117,225,170,58,86,213,185,90,147,107,234,88,93,199,154,186,112,173,214,239,10,120,171,129,181,117,220,234,59,227,175,171,168,179,46,92,167,135,90,175,186,172,175,11,55,212,177,161,153,216,88,199,70,173,191,169,142,117,117,108,234,127,27,55,215,203,238,128,91,84,201,150,186,112,107,29,91,235,220,166,220,183,215,177,173,142,205,117,108,175,60,118,40,104,71,93,184,179,142,157,117,238,170,171,69,113,119,29,187,234,216,93,23,238,169,99,79,229,209,165,200,174,186,112,111,29,123,235,220,167,201,253,117,236,171,99,127,93,120,64,123,116,7,236,105,224,64,29,61,125,103,252,117,21,29,172,11,15,233,161,14,171,46,135,235,194,35,117,28,105,38,142,214,113,84,123,28,171,227,80,29,199,250,61,142,215,203,158,128,39,84,201,137,186,240,100,29,39,235,60,85,47,127,225,233,58,78,213,113,188,142,211,149,71,183,130,186,235,194,51,117,156,169,243,108,93,109,182,206,213,113,182,142,115,117,225,249,58,206,87,30,23,20,121,161,46,188,88,199,197,58,47,105,242,114,29,151,234,184,92,23,94,209,30,61,1,111,55,112,165,142,219,125,103,252,117,21,93,173,11,175,233,161,174,171,46,215,235,194,27,117,220,104,38,110,214,113,83,123,220,170,227,90,29,183,250,61,122,234,101,111,192,219,170,228,118,93,120,167,142,59,117,222,173,151,191,242,94,29,119,235,232,169,227,94,229,113,95,65,247,235,194,7,117,60,168,243,97,189,140,248,168,142,135,117,60,170,11,31,215,241,184,210,120,162,192,39,117,225,211,58,158,214,249,76,129,207,235,120,86,199,243,186,240,133,182,232,13,120,167,129,23,117,220,233,59,225,175,171,232,101,93,216,171,71,122,165,154,188,170,11,95,215,241,186,153,120,83,199,27,109,241,182,142,222,58,222,246,91,188,171,151,109,33,223,171,146,247,117,225,135,58,62,212,249,81,125,204,62,213,241,177,142,119,117,124,170,44,62,43,232,115,93,248,165,142,47,117,126,173,151,35,6,240,91,29,95,235,248,86,23,126,175,227,123,165,241,67,145,63,234,194,182,20,109,41,7,166,138,28,148,98,96,138,65,169,112,112,170,23,157,144,119,27,24,156,226,110,229,49,36,85,209,144,84,56,52,85,67,13,75,49,0,195,82,225,240,20,195,155,137,17,41,70,164,202,99,100,138,161,41,70,166,255,246,24,149,150,237,33,71,171,146,209,169,112,76,138,49,41,199,166,229,0,142,75,49,54,197,168,20,227,210,166,199,120,5,141,79,133,237,41,218,83,78,72,203,101,255,226,196,20,19,82,76,76,133,147,82,76,74,155,30,147,21,57,57,21,78,73,49,37,229,84,77,78,75,49,53,197,180,84,56,93,123,180,135,188,215,192,244,20,247,42,143,25,169,138,102,164,194,153,122,168,89,170,203,172,84,56,59,197,236,102,98,78,138,57,218,99,110,138,153,41,230,246,123,204,75,203,142,144,29,170,164,35,21,206,79,49,63,229,130,180,252,157,11,83,44,72,49,47,197,194,202,99,145,130,22,165,194,197,41,22,167,92,146,170,37,113,105,138,37,41,150,166,194,101,41,150,85,30,203,21,185,60,21,174,72,177,34,229,74,77,174,74,177,50,197,170,84,184,90,123,116,132,188,223,192,234,20,247,43,143,53,169,138,214,164,194,181,122,168,78,213,165,51,21,174,75,177,174,153,88,159,98,189,246,216,144,98,109,138,13,253,30,27,211,178,51,228,38,85,178,41,21,110,78,177,57,229,150,180,252,23,183,166,216,146,98,99,138,173,149,199,54,5,109,75,133,219,83,108,79,185,35,85,75,226,206,20,59,82,236,76,133,187,82,236,170,60,118,43,114,119,42,220,147,98,79,202,46,77,238,77,209,149,98,111,42,220,167,61,58,67,62,104,96,95,138,7,149,199,254,84,69,251,83,225,1,61,212,65,213,229,96,42,60,148,226,80,51,113,56,197,97,237,113,36,197,129,20,71,250,61,142,166,101,87,200,99,170,228,88,42,60,158,226,120,202,19,105,249,31,60,153,226,68,138,163,41,78,86,30,167,20,116,42,21,158,78,113,58,101,119,170,150,196,51,41,186,83,156,73,133,103,83,156,173,60,206,41,242,92,42,60,159,226,124,202,11,154,188,152,226,66,138,139,169,240,146,246,232,10,249,176,129,75,41,30,246,253,140,98,170,162,203,169,240,138,30,234,170,234,114,53,21,94,75,113,173,153,184,158,226,186,246,184,145,226,74,138,27,202,227,207,255,245,71,57,84,45,158,55,213,212,183,82,189,120,222,76,113,43,85,139,103,79,90,254,204,219,41,122,82,220,78,255,230,157,20,119,210,127,44,158,119,211,178,59,228,61,245,74,247,82,225,253,20,247,83,62,72,203,159,248,48,197,131,20,119,83,60,172,244,31,41,232,81,42,124,156,226,113,202,39,169,250,70,249,52,197,147,20,79,83,225,179,20,207,42,253,231,138,124,158,10,95,164,120,145,242,165,38,123,83,188,76,209,155,10,95,105,253,238,144,143,26,120,149,226,81,223,57,127,170,162,215,169,240,141,30,234,173,234,242,54,21,190,75,241,174,153,120,159,226,189,214,255,144,226,77,138,15,253,111,227,199,180,236,9,249,73,149,124,74,133,159,83,124,78,249,69,185,127,77,241,37,197,199,20,95,43,143,111,10,250,150,10,191,167,248,158,242,71,90,126,252,157,109,25,126,164,104,203,132,3,51,12,204,170,115,254,12,3,48,40,19,14,206,48,56,227,144,76,145,67,51,12,201,48,52,19,14,203,244,162,19,242,113,3,195,50,60,238,59,231,207,84,52,60,19,142,200,212,80,35,85,151,145,153,112,84,134,81,205,196,232,12,163,51,125,206,159,97,68,134,49,89,255,57,127,86,246,134,28,167,74,198,101,194,241,25,198,103,108,207,202,95,56,33,67,123,134,177,25,38,100,213,57,191,130,38,102,194,73,25,38,101,156,156,169,45,202,148,12,147,51,76,201,132,83,51,76,173,60,166,41,114,90,38,156,158,97,122,198,25,154,156,153,97,70,134,153,153,112,150,246,232,13,249,164,129,89,25,158,244,157,243,103,42,154,157,9,231,232,161,230,170,46,115,51,225,188,12,243,154,137,142,12,29,218,99,126,134,57,25,230,247,123,44,200,202,182,136,11,85,201,194,76,184,40,195,162,140,139,179,242,87,46,201,176,56,195,130,12,75,42,143,165,10,90,154,9,151,101,88,150,113,121,166,182,40,43,50,44,207,176,34,19,174,204,176,178,242,88,165,200,85,153,112,117,134,213,25,215,104,114,109,134,53,25,214,102,194,78,237,209,22,241,105,3,157,25,158,86,30,235,50,21,173,203,132,235,245,80,27,84,151,13,153,112,99,134,141,205,196,166,12,155,180,199,230,12,235,51,108,238,247,216,146,149,237,17,183,170,146,173,153,112,91,134,109,25,183,103,229,111,220,145,97,123,134,45,25,118,84,30,59,21,180,51,19,238,202,176,43,227,238,76,125,19,219,147,97,119,134,61,153,176,43,67,87,229,177,87,145,123,51,225,190,12,251,50,238,215,228,129,12,251,51,28,200,132,7,181,71,123,196,103,13,28,204,240,172,242,56,148,169,232,80,38,60,172,135,58,162,186,28,201,132,71,51,28,109,38,142,101,56,166,61,142,103,56,156,225,120,191,199,137,172,236,136,120,82,149,156,204,132,167,50,156,202,120,58,43,7,176,59,195,233,12,39,50,116,87,30,103,20,116,38,19,158,205,112,54,227,185,76,255,227,150,25,206,101,56,159,9,47,100,184,80,121,92,84,228,197,76,120,41,195,165,140,151,53,121,37,195,229,12,87,50,225,85,237,209,17,241,121,3,87,51,60,175,60,174,101,42,186,150,9,175,235,161,110,168,46,55,50,225,205,12,55,155,137,91,25,110,105,143,158,12,215,51,244,244,123,220,206,202,206,136,119,84,201,157,76,120,55,195,221,140,247,178,242,119,222,207,112,47,195,237,12,247,43,143,7,10,122,144,9,31,102,120,152,241,81,86,70,124,156,225,81,134,199,153,240,73,134,39,149,198,83,5,62,205,132,207,50,60,203,248,92,129,47,50,60,207,240,34,19,190,212,22,157,17,95,52,240,50,195,139,190,31,81,204,84,212,155,9,95,233,145,94,171,38,175,51,225,155,12,111,154,137,183,25,222,106,139,119,25,94,101,120,215,111,241,62,43,187,34,126,80,37,31,50,225,199,12,31,51,126,202,202,127,241,115,134,79,25,222,103,248,92,89,124,81,208,151,76,248,53,195,215,140,223,178,178,247,103,126,207,240,45,195,247,76,248,35,195,143,74,163,45,199,0,180,229,194,129,57,6,230,28,148,43,114,112,142,65,57,6,231,194,33,185,94,116,34,190,108,96,72,142,151,125,39,251,185,138,134,230,194,97,185,26,106,184,234,50,60,23,142,200,49,162,153,24,153,99,100,174,79,246,115,12,203,49,42,239,63,217,207,203,238,136,99,84,201,152,92,56,54,199,216,156,227,242,242,63,56,62,199,184,28,163,115,140,207,171,147,125,5,181,231,194,9,57,38,228,156,152,235,31,81,204,49,49,199,164,92,56,57,199,228,188,58,217,87,228,148,92,56,53,199,212,156,211,52,57,61,199,180,28,211,115,225,12,237,209,29,177,183,129,25,57,122,251,78,246,115,21,205,204,133,179,244,80,179,85,151,217,185,112,78,142,57,205,196,220,28,115,181,199,188,28,179,114,204,235,247,232,200,203,158,136,243,85,201,252,92,184,32,199,130,156,11,243,242,63,185,40,199,194,28,29,57,22,85,30,139,21,180,56,23,46,201,177,36,231,210,92,109,181,150,229,88,154,99,89,46,92,158,99,121,229,177,66,145,43,114,225,202,28,43,115,174,210,228,234,28,171,114,172,206,133,107,180,71,79,196,87,13,172,201,241,170,239,100,63,87,209,218,92,216,169,135,90,167,186,172,203,133,235,115,172,111,38,54,228,216,160,61,54,230,232,204,177,177,223,99,83,94,246,70,220,172,74,54,231,194,45,57,182,228,220,154,151,255,141,219,114,108,205,177,41,199,182,202,99,187,130,182,231,194,29,57,118,228,220,153,171,173,214,174,28,59,115,236,202,133,187,115,236,174,60,246,40,114,79,46,236,202,209,149,115,175,38,247,229,216,155,99,95,46,220,175,61,122,35,190,110,96,127,142,215,125,39,251,185,138,14,228,194,131,122,168,67,170,203,161,92,120,56,199,225,102,226,72,142,35,218,227,104,142,131,57,142,246,123,28,203,203,182,152,199,85,201,241,92,120,34,199,137,156,39,243,242,15,158,202,113,50,199,177,28,167,42,143,211,10,58,157,11,187,115,116,231,60,147,171,173,214,217,28,103,114,156,205,133,231,114,156,171,60,206,43,242,124,46,188,144,227,66,206,139,154,188,148,227,98,142,75,185,240,178,246,104,139,249,166,129,203,57,222,244,157,236,231,42,186,146,11,175,234,161,174,169,46,215,114,225,245,28,215,155,137,27,57,110,104,143,155,57,174,230,184,217,239,113,43,47,219,99,246,168,146,158,92,120,59,199,237,156,119,242,242,79,222,205,113,39,199,173,28,119,43,143,123,10,186,151,11,239,231,184,159,243,65,94,46,250,157,15,115,60,200,241,48,23,62,202,241,168,242,120,172,200,199,185,240,73,142,39,57,159,106,242,89,142,167,57,158,229,194,231,218,163,61,230,219,6,158,231,120,219,119,178,159,171,232,69,46,124,169,135,234,85,93,122,115,225,171,28,175,154,137,215,57,94,107,143,55,57,94,230,120,211,239,241,54,47,59,98,190,83,37,239,114,225,251,28,239,115,126,200,203,255,206,143,57,62,228,120,155,227,99,229,241,73,65,159,114,225,231,28,159,115,126,201,203,35,63,241,107,142,47,57,190,230,194,111,57,190,85,30,223,21,249,61,23,254,200,241,35,103,91,161,200,129,5,218,10,12,44,132,131,10,189,122,196,124,215,192,160,2,239,250,78,246,11,21,13,46,132,67,10,53,212,208,2,3,48,180,16,14,43,48,172,153,24,94,96,120,161,79,246,11,12,41,48,162,232,63,217,47,202,206,152,163,84,201,168,66,56,186,192,232,130,99,138,242,127,112,108,129,49,5,70,22,24,91,84,39,251,10,26,87,8,199,23,24,95,176,189,40,255,31,78,40,208,94,96,66,33,156,88,96,98,81,29,236,43,112,82,33,156,92,96,114,193,41,10,156,90,96,74,129,169,133,112,154,182,232,140,249,190,129,105,5,222,247,157,235,23,42,154,94,8,103,232,145,102,170,38,51,11,225,172,2,179,154,137,217,5,102,107,139,57,5,102,20,152,163,44,254,252,255,253,81,142,85,91,253,185,69,249,59,231,21,122,171,63,183,192,188,66,109,245,59,138,242,103,206,47,208,81,96,126,241,55,23,20,88,80,252,99,171,191,176,40,187,98,46,82,175,180,168,16,46,46,176,184,224,146,162,252,137,75,11,44,41,176,176,192,210,74,126,153,130,150,21,194,229,5,150,23,92,81,168,165,100,101,129,21,5,86,22,194,85,5,86,85,246,171,21,185,186,16,174,41,176,166,224,90,77,118,22,88,91,160,179,16,174,211,250,93,49,63,52,176,174,192,135,190,159,80,44,84,180,190,16,110,208,67,109,84,93,54,22,194,77,5,54,53,19,155,11,108,214,250,91,10,108,40,176,165,255,77,220,90,148,221,49,183,169,146,109,133,112,123,129,237,5,119,40,247,157,5,118,20,216,90,96,103,229,177,75,65,187,10,225,238,2,187,11,238,41,202,203,63,179,171,192,158,2,93,133,112,111,129,189,149,199,62,69,238,43,132,251,11,236,47,120,64,147,7,11,28,40,112,176,16,30,210,30,221,49,63,54,112,168,192,199,190,159,80,44,84,116,184,16,30,209,67,29,85,93,142,22,194,99,5,142,53,19,199,11,28,215,30,39,10,28,41,112,162,223,227,100,81,246,196,60,165,74,78,21,194,211,5,78,23,236,46,202,95,120,166,64,119,129,147,5,206,84,30,103,21,116,182,16,158,43,112,174,224,249,66,109,224,47,20,56,95,224,66,33,188,88,224,98,229,113,73,145,151,10,225,229,2,151,11,94,209,228,213,2,87,10,92,45,132,215,180,71,79,204,79,13,92,43,240,169,239,39,20,11,21,93,47,132,55,244,80,55,85,151,155,133,240,86,129,91,205,68,79,129,30,237,113,187,192,141,2,183,251,61,238,20,101,111,204,187,170,228,110,33,188,87,224,94,193,251,69,249,43,31,20,184,95,224,78,129,7,149,199,67,5,61,44,132,143,10,60,42,248,184,80,27,248,39,5,30,23,120,82,8,159,22,120,90,121,60,83,228,179,66,248,188,192,243,130,47,52,249,178,192,139,2,47,11,97,175,246,232,141,249,185,129,222,2,159,251,238,238,23,42,122,85,8,95,235,161,222,168,46,111,10,225,219,2,111,155,137,119,5,222,105,143,247,5,94,23,120,223,239,241,161,40,219,18,126,84,37,31,11,225,167,2,159,10,126,46,202,223,248,165,192,231,2,31,10,124,169,60,190,42,232,107,33,252,86,224,91,193,239,133,218,192,255,40,240,189,192,143,66,216,214,138,182,214,234,238,126,43,6,96,96,171,112,80,43,6,181,114,112,171,34,135,180,98,112,43,134,180,10,135,182,234,69,39,225,151,6,134,182,226,75,223,221,253,86,21,13,107,21,14,111,85,67,141,80,93,70,180,10,71,182,98,100,51,49,170,21,163,90,245,221,253,86,12,111,197,232,214,254,187,251,173,101,123,194,177,170,100,108,171,112,92,43,198,181,114,124,107,57,128,237,173,24,223,138,49,173,104,111,173,238,238,43,104,66,171,112,98,43,38,182,114,82,171,190,187,223,138,73,173,152,220,42,156,210,138,41,149,199,84,69,78,109,21,78,107,197,180,86,78,215,228,140,86,76,111,197,140,86,225,76,237,209,158,240,107,3,51,91,241,181,239,238,126,171,138,102,181,10,103,235,161,230,168,46,115,90,133,115,91,49,183,153,152,215,138,121,218,163,163,21,179,91,209,209,239,49,191,181,236,72,184,64,149,44,104,21,46,108,197,194,86,46,106,45,127,231,226,86,44,106,197,252,86,44,174,60,150,40,104,73,171,112,105,43,150,182,114,89,107,121,254,119,46,111,197,178,86,44,111,21,174,104,197,138,255,151,169,255,92,146,34,75,218,53,208,238,153,233,81,221,223,222,231,216,185,129,247,189,131,177,105,153,161,87,102,134,14,108,231,117,248,191,185,131,66,107,40,180,134,66,107,40,180,134,66,107,40,180,134,66,107,40,180,134,99,107,101,212,151,243,211,205,31,247,244,167,211,172,195,195,173,44,41,61,150,107,114,121,69,184,162,130,21,21,174,52,228,170,10,86,86,176,170,34,92,109,60,58,254,205,47,255,15,171,43,248,210,119,215,175,232,168,179,34,92,99,134,90,171,187,172,173,8,215,85,176,174,153,88,95,193,122,227,177,161,130,53,21,108,104,121,108,172,168,206,127,115,147,46,217,84,17,110,174,96,115,133,91,42,234,111,220,90,193,150,10,54,86,176,181,244,216,166,161,109,21,225,246,10,182,87,184,163,162,254,197,157,21,236,168,96,103,69,184,171,130,93,165,70,151,6,187,42,194,221,21,236,174,112,143,6,247,86,176,167,130,189,21,225,62,99,209,249,111,126,253,127,216,87,193,215,190,171,126,69,71,251,43,194,3,102,164,131,186,201,193,138,240,80,5,135,154,137,195,21,28,54,22,71,42,56,80,193,145,150,197,209,138,234,250,55,143,233,146,99,21,225,241,10,142,87,120,162,162,254,206,147,21,156,168,224,104,5,39,75,139,110,13,117,87,132,167,42,56,85,225,233,138,249,203,253,10,78,87,112,166,34,60,91,193,217,82,227,156,38,207,85,132,231,43,56,95,225,5,67,94,172,224,66,5,23,43,194,75,198,163,235,223,252,246,255,112,169,130,111,125,87,253,138,142,46,87,132,87,204,80,87,117,151,171,21,225,181,10,174,53,19,215,43,184,110,60,110,84,112,165,130,27,45,143,158,138,234,254,55,111,234,146,155,21,225,173,10,110,85,120,187,162,254,193,59,21,220,174,160,167,130,59,165,199,93,13,221,173,8,239,85,112,175,194,251,21,243,151,251,21,220,175,224,65,69,248,176,130,135,165,199,35,77,62,170,8,31,87,240,184,194,39,134,124,90,193,147,10,158,86,132,207,140,71,247,191,217,214,192,179,10,218,26,229,93,191,162,163,231,21,97,175,25,234,133,238,242,162,34,124,89,193,203,102,226,85,5,175,140,199,235,10,122,43,120,221,242,120,83,81,61,255,230,91,93,242,182,34,124,87,193,187,10,223,87,212,63,249,161,130,247,21,188,169,224,67,233,241,81,67,31,43,194,79,21,124,170,240,115,69,47,240,95,42,248,92,193,151,138,240,107,5,95,75,143,111,154,252,86,17,182,89,104,179,216,223,210,228,0,11,253,45,12,176,132,3,45,243,244,248,55,251,55,48,208,66,255,210,99,144,165,163,65,150,112,176,165,135,26,98,225,7,12,177,132,67,45,12,109,38,134,89,24,102,153,187,190,133,193,22,134,91,173,187,190,165,122,255,205,145,186,100,164,37,28,101,97,148,197,209,150,250,145,99,44,140,182,48,194,194,24,171,188,235,107,104,172,37,108,183,208,110,113,156,165,23,248,241,22,198,89,24,111,9,39,88,152,96,149,119,125,77,78,180,132,147,44,76,178,56,217,144,83,44,76,182,48,197,18,78,53,30,189,255,230,128,6,166,90,24,80,122,76,179,116,52,205,18,78,55,67,205,208,93,102,88,194,153,22,102,54,19,179,44,204,50,30,179,45,76,183,48,187,229,49,199,82,109,63,179,67,151,116,88,194,185,22,230,90,156,103,169,159,56,223,194,60,11,115,44,204,47,61,22,104,104,129,37,92,104,97,161,197,69,150,94,124,23,91,88,100,97,177,37,92,98,97,73,233,177,84,147,75,45,225,50,11,203,44,46,55,228,10,11,203,45,172,176,132,43,141,71,219,207,28,216,192,74,11,3,75,143,85,150,142,86,89,194,213,102,168,78,221,165,211,18,174,177,176,166,153,88,107,97,173,241,88,103,97,181,133,117,45,143,245,150,106,255,153,27,116,201,6,75,184,209,194,70,139,155,44,245,63,220,108,97,147,133,245,22,54,151,30,91,52,180,197,18,110,181,176,213,226,54,75,57,220,110,97,155,133,237,150,112,135,133,29,165,198,78,13,238,180,132,187,44,236,178,216,165,193,221,22,186,44,236,182,132,123,140,69,251,207,28,212,192,30,11,131,74,139,189,150,142,246,90,194,125,102,164,253,186,201,126,75,120,192,194,129,102,226,160,133,131,198,226,144,133,125,22,14,105,139,159,254,127,63,170,9,122,69,62,108,169,191,240,136,101,86,228,195,22,142,88,122,69,62,106,169,239,121,204,194,81,11,199,172,255,240,184,133,227,214,127,173,200,39,44,213,241,51,79,234,79,58,105,9,187,45,116,91,60,101,169,239,120,218,194,41,11,39,44,156,46,229,207,104,232,140,37,60,107,225,172,197,115,150,94,124,207,91,56,103,225,188,37,188,96,225,66,105,127,81,147,23,45,225,37,11,151,44,94,54,228,21,11,151,45,92,177,132,87,141,126,199,207,28,220,192,85,11,131,75,253,107,150,142,174,89,194,235,102,168,27,186,203,13,75,216,99,161,167,153,184,105,225,166,209,191,101,225,186,133,91,173,47,241,182,165,58,127,230,29,93,114,199,18,222,181,112,215,226,61,237,126,223,194,61,11,183,45,220,47,61,30,104,232,129,37,124,104,225,161,197,71,150,94,124,31,91,120,100,225,177,37,124,98,225,73,233,241,84,147,79,45,225,51,11,207,44,62,55,100,175,133,231,22,122,45,225,11,227,209,249,51,135,52,240,194,194,144,210,227,165,165,163,151,150,240,149,25,234,181,238,242,218,18,190,177,240,166,153,120,107,225,173,241,120,103,225,149,133,119,45,143,247,150,234,250,153,31,116,201,7,75,248,209,194,71,139,159,44,245,39,126,182,240,201,194,123,11,159,75,143,47,26,250,98,9,191,90,248,106,241,155,165,23,223,54,27,223,44,180,217,194,254,54,250,219,229,85,223,198,15,24,96,11,7,218,24,104,115,144,173,201,193,54,6,217,24,108,11,135,216,230,161,243,51,135,54,48,196,198,208,210,99,168,109,34,91,56,204,214,67,13,215,93,134,219,194,17,54,70,52,19,35,109,140,180,205,85,223,198,48,27,163,236,214,85,223,86,221,63,115,140,46,25,99,11,199,218,24,107,179,221,86,127,230,56,27,237,54,70,219,24,103,151,87,125,13,141,183,133,19,108,76,176,57,209,214,139,239,36,27,19,109,76,178,133,147,109,76,46,61,166,104,114,138,45,156,106,99,170,205,105,134,156,110,99,154,141,233,182,112,134,241,232,254,153,195,26,152,97,99,88,233,49,211,214,209,76,91,56,203,12,53,91,119,153,109,11,231,216,152,211,76,116,216,232,48,30,115,109,204,178,49,183,229,49,207,86,61,63,115,190,46,153,111,11,23,216,88,96,115,161,173,254,194,69,54,22,218,152,103,99,81,233,177,88,67,139,109,225,18,27,75,108,46,181,245,226,187,204,198,82,27,203,108,225,114,27,203,75,143,21,154,92,97,11,87,218,88,105,115,149,33,87,219,88,101,99,181,45,236,52,30,61,63,115,120,3,157,54,134,151,30,107,108,29,173,177,133,107,205,80,235,116,151,117,182,112,189,141,245,205,196,6,27,27,140,199,70,27,107,109,108,108,121,108,178,85,239,207,220,172,75,54,219,194,45,54,182,216,220,106,171,31,184,205,198,86,27,155,108,108,43,61,182,107,104,187,45,220,97,99,135,205,157,182,94,124,119,217,216,105,99,151,45,236,178,209,85,122,236,214,228,110,91,184,199,198,30,155,123,13,185,207,198,94,27,251,108,225,126,227,209,251,51,71,52,176,223,198,136,210,227,128,173,163,3,182,240,160,25,234,144,238,114,200,22,30,182,113,184,153,56,98,227,136,241,56,106,227,160,141,163,45,143,99,182,106,251,133,199,117,201,113,91,120,194,198,9,155,39,109,245,87,118,219,56,105,227,152,141,238,210,227,148,134,78,217,194,211,54,78,219,60,99,235,197,247,172,141,51,54,206,218,194,115,54,206,149,30,231,53,121,222,22,94,176,113,193,230,69,67,94,178,113,209,198,37,91,120,217,120,180,253,194,145,13,92,182,49,178,244,184,98,235,232,138,45,188,106,134,186,166,187,92,179,133,215,109,92,111,38,110,216,184,97,60,122,108,92,181,209,211,242,184,105,171,246,95,120,75,151,220,178,133,183,109,220,182,121,199,86,127,227,93,27,119,108,220,180,113,183,244,184,167,161,123,182,240,190,141,251,54,31,216,234,95,124,104,227,129,141,135,182,240,145,141,71,165,198,99,13,62,182,133,79,108,60,177,249,84,131,207,108,60,181,241,204,22,62,55,22,237,191,112,84,3,207,109,140,42,45,122,109,29,245,218,194,23,102,164,151,186,201,75,91,248,202,198,171,102,226,181,141,215,198,226,141,141,23,54,222,180,44,222,218,170,227,23,190,211,37,239,108,225,123,27,239,109,126,176,213,223,249,209,198,7,27,111,109,124,44,45,62,105,232,147,45,252,108,227,179,205,47,182,94,124,191,218,248,98,227,171,45,252,102,227,91,169,209,230,224,7,180,57,194,254,14,250,59,28,224,104,114,160,131,1,14,6,58,194,65,142,121,122,252,194,209,13,12,114,48,186,244,24,236,232,104,176,35,28,226,232,161,134,234,46,67,29,225,48,7,195,154,137,225,14,134,59,230,170,239,96,136,131,17,78,235,170,239,168,206,95,56,74,151,140,114,132,163,29,140,118,56,198,81,255,224,88,7,99,28,140,116,48,214,41,175,250,26,106,119,132,227,28,140,115,56,222,209,139,239,4,7,227,29,76,112,132,19,29,76,116,202,171,190,38,39,57,194,201,14,38,59,156,98,200,169,14,166,56,152,234,8,167,25,143,206,95,56,166,129,105,14,198,148,30,211,29,29,77,119,132,51,204,80,51,117,151,153,142,112,150,131,89,205,196,108,7,179,141,199,28,7,51,28,204,105,121,116,56,170,235,23,206,213,37,115,29,225,60,7,243,28,206,119,212,63,185,192,193,124,7,29,14,22,148,30,11,53,180,208,17,46,114,176,200,225,98,71,47,190,75,28,44,118,176,196,17,46,117,176,180,244,88,166,201,101,142,112,185,131,229,14,87,24,114,165,131,21,14,86,58,194,85,198,163,235,23,142,109,96,149,131,177,165,199,106,71,71,171,29,97,167,25,106,141,238,178,198,17,174,117,176,182,153,88,231,96,157,241,88,239,160,211,193,250,150,199,6,71,117,255,194,141,186,100,163,35,220,228,96,147,195,205,142,250,145,91,28,108,118,176,193,193,150,210,99,171,134,182,58,194,109,14,182,57,220,238,232,197,119,135,131,237,14,118,56,194,157,14,118,150,30,187,52,185,203,17,118,57,232,114,184,219,144,123,28,236,118,176,199,17,238,53,30,221,191,176,189,129,189,14,218,75,143,125,142,142,246,57,194,253,102,168,3,186,203,1,71,120,208,193,193,102,226,144,131,67,198,227,176,131,253,14,14,183,60,142,56,170,231,23,30,213,37,71,29,225,49,7,199,28,30,119,212,79,60,225,224,184,131,35,14,78,148,30,39,53,116,210,17,118,59,232,118,120,202,209,139,239,105,7,167,28,156,118,132,103,28,156,41,61,206,106,242,172,35,60,231,224,156,195,243,134,188,224,224,188,131,11,142,240,162,241,232,249,133,227,26,184,232,96,92,233,113,201,209,209,37,71,120,217,12,117,69,119,185,226,8,175,58,184,218,76,92,115,112,205,120,92,119,112,217,193,245,150,199,13,71,245,254,194,30,93,210,227,8,111,58,184,233,240,150,163,254,135,183,29,220,114,112,195,193,237,210,227,142,134,238,56,194,187,14,238,58,188,231,40,135,247,29,220,115,112,223,17,62,112,240,160,212,120,168,193,135,142,240,145,131,71,14,31,107,240,137,131,199,14,158,56,194,167,198,162,247,23,142,111,224,169,131,241,165,197,51,71,71,207,28,225,115,51,82,175,110,210,235,8,95,56,120,209,76,188,116,240,210,88,188,114,240,220,193,43,109,241,211,255,247,71,53,69,175,200,175,29,245,87,190,113,154,255,48,146,131,55,142,249,135,145,28,245,61,223,57,120,235,224,157,243,31,190,119,240,222,249,239,127,24,201,81,109,191,242,163,254,164,143,142,240,147,131,79,14,63,59,234,59,126,113,240,217,193,7,7,95,74,249,175,26,250,234,8,191,57,248,230,176,205,85,255,98,127,23,109,46,250,187,194,1,46,6,184,77,249,129,46,126,192,64,87,56,200,197,32,151,131,53,56,196,197,96,23,67,92,225,80,215,60,112,126,229,132,6,134,186,152,80,202,15,115,117,52,204,21,14,119,245,72,35,116,147,17,174,112,164,139,145,205,196,40,23,163,92,45,63,218,197,112,23,163,221,214,63,139,228,170,246,95,57,86,151,140,117,133,237,46,218,93,142,115,213,247,28,239,98,156,139,49,46,198,187,77,139,9,26,154,224,10,39,186,152,232,114,146,171,222,255,149,147,93,76,114,49,217,21,78,113,49,165,212,152,170,201,169,174,112,154,139,105,46,167,27,114,134,139,233,46,102,184,194,153,198,163,253,87,78,108,96,166,139,137,165,199,44,87,71,179,92,225,108,51,212,28,221,101,142,43,236,112,209,209,76,204,117,49,215,120,204,115,49,219,197,188,150,199,124,87,117,252,202,5,186,100,129,43,92,232,98,161,203,69,174,250,19,23,187,88,228,98,190,139,197,165,199,18,13,45,113,133,75,93,44,117,185,204,213,143,245,229,46,150,185,88,238,10,87,184,88,81,122,172,212,228,74,87,184,202,197,42,151,171,13,217,233,98,181,139,78,87,184,198,120,116,252,202,73,13,172,113,49,169,244,88,235,234,104,173,43,92,103,134,90,175,187,172,119,133,27,92,108,104,38,54,186,216,104,60,54,185,88,231,98,83,203,99,179,171,58,127,229,22,93,178,197,21,110,117,177,213,229,54,87,253,153,219,93,108,115,177,217,197,246,210,99,135,134,118,184,194,157,46,118,186,220,229,234,53,171,203,197,46,23,93,174,112,183,139,221,165,199,30,77,238,113,133,123,93,236,117,185,207,144,251,93,236,115,177,223,21,30,48,30,157,191,114,114,3,7,92,76,46,61,14,186,58,58,232,10,15,153,161,14,235,46,135,93,225,17,23,71,154,137,163,46,142,26,143,99,46,14,185,56,214,242,56,238,170,174,95,121,66,151,156,112,133,39,93,156,116,217,237,170,191,240,148,139,110,23,199,93,156,42,61,78,107,232,180,43,60,227,226,140,203,179,174,185,233,187,56,235,226,156,43,60,239,226,124,233,113,65,147,23,92,225,69,23,23,93,94,50,228,101,23,151,92,92,118,133,87,140,71,215,175,156,210,192,21,23,83,74,143,171,174,142,174,186,194,107,102,168,235,186,203,117,87,120,195,197,141,102,162,199,69,143,241,184,233,226,154,139,155,45,143,91,174,234,254,149,183,117,201,109,87,120,199,197,29,151,119,93,245,3,239,185,184,235,226,150,139,123,165,199,125,13,221,119,133,15,92,60,112,249,208,85,29,127,226,35,23,15,93,60,114,133,143,93,60,46,61,158,104,242,137,43,124,234,226,169,203,103,134,124,238,226,153,139,231,174,176,215,120,116,255,202,169,13,244,186,152,90,122,188,112,117,244,194,21,190,52,67,189,210,93,94,185,194,215,46,94,55,19,111,92,188,49,30,111,93,188,116,241,182,229,241,206,85,61,191,242,189,46,121,239,10,63,184,248,224,242,163,171,254,202,79,46,62,186,120,231,226,83,233,241,89,67,159,93,225,23,23,95,92,126,117,205,77,223,197,87,23,223,92,97,155,135,54,175,188,233,123,248,1,253,61,225,0,15,3,60,14,244,204,77,223,195,64,15,131,60,225,96,207,60,114,126,229,180,6,6,123,152,86,122,12,241,116,52,196,19,14,245,244,80,195,116,151,97,158,112,184,135,225,205,196,8,15,35,60,115,211,247,48,212,195,72,175,117,211,247,84,239,175,28,173,75,70,123,194,49,30,198,120,28,235,169,191,177,221,195,88,15,163,60,180,123,229,77,95,67,227,60,225,120,15,227,61,78,240,244,194,56,209,195,4,15,19,61,225,36,15,147,74,143,201,154,156,236,9,167,120,152,226,113,170,33,167,121,152,234,97,154,39,156,110,60,122,127,229,244,6,166,123,152,94,122,204,240,116,52,195,19,206,52,67,205,210,93,102,121,194,217,30,102,55,19,115,60,204,49,30,29,30,102,122,232,104,121,204,245,84,219,111,156,167,75,230,121,194,249,30,230,123,92,224,169,191,115,161,135,5,30,230,122,88,88,122,44,210,208,34,79,184,216,195,98,143,75,60,189,48,46,245,176,196,195,82,79,184,204,195,178,210,99,185,38,151,123,194,21,30,86,120,92,105,200,85,30,86,122,88,229,9,87,27,143,182,223,56,163,129,213,30,102,148,30,157,158,142,58,61,225,26,51,212,90,221,101,173,39,92,231,97,93,51,177,222,195,122,227,177,193,195,26,15,27,90,30,27,61,213,254,27,55,233,146,77,158,112,179,135,205,30,183,120,234,31,220,234,97,139,135,141,30,182,150,30,219,52,180,205,19,110,247,176,221,227,14,79,47,140,59,61,236,240,176,211,19,238,242,176,171,244,232,210,100,151,39,220,237,97,183,199,61,134,220,235,97,143,135,189,158,112,159,241,104,255,141,51,27,216,231,97,102,233,177,223,211,209,126,79,120,192,12,117,80,119,57,232,9,15,121,56,212,76,28,246,112,216,120,28,241,112,192,195,145,150,199,81,79,117,252,198,99,186,228,152,39,60,238,225,184,199,19,158,250,39,79,122,56,225,225,168,135,147,165,71,183,134,186,61,225,41,15,167,60,158,246,244,194,120,198,195,105,15,103,60,225,89,15,103,75,143,115,154,60,231,9,207,123,56,239,241,130,33,47,122,184,224,225,162,39,188,100,60,58,126,227,172,6,46,121,152,85,122,92,246,116,116,217,19,94,49,67,93,213,93,174,122,194,107,30,174,53,19,215,61,92,55,30,55,60,92,241,112,163,229,209,227,169,206,223,120,83,151,220,244,132,183,60,220,242,120,219,83,63,242,142,135,219,30,122,60,220,41,61,238,106,232,174,39,188,231,225,158,199,251,158,94,24,31,120,184,239,225,129,39,124,232,225,97,233,241,72,147,143,60,225,99,15,143,61,62,49,228,83,15,79,60,60,245,132,207,140,71,231,111,156,221,192,51,15,179,251,174,250,158,142,158,123,194,94,51,212,11,221,229,133,39,124,233,225,101,51,241,202,195,43,227,241,218,67,175,135,215,45,143,55,158,234,250,141,111,117,201,91,79,248,206,195,59,143,239,61,245,19,63,120,120,239,225,141,135,15,165,199,71,13,125,244,132,159,60,124,242,248,217,83,14,191,120,248,236,225,139,39,252,234,225,107,169,241,77,131,223,60,97,155,143,54,159,253,125,229,112,128,143,254,62,6,248,194,129,190,121,122,252,198,57,13,12,244,49,167,239,166,239,235,104,144,47,28,236,235,145,134,248,248,1,67,124,225,80,31,67,155,137,97,62,134,249,230,166,239,99,176,143,225,190,94,45,255,239,143,106,150,94,45,71,248,234,111,28,233,155,213,114,132,143,145,190,94,45,71,249,234,123,142,246,49,202,199,104,255,63,28,227,99,140,255,95,171,229,88,95,117,255,198,118,253,73,237,190,112,156,143,113,62,199,251,234,59,78,240,49,222,199,88,31,19,252,242,215,120,52,52,209,23,78,242,49,201,231,100,95,253,139,83,124,76,246,49,197,23,78,245,49,213,47,127,140,71,131,211,124,225,116,31,211,125,206,208,224,76,31,51,124,204,244,133,179,140,124,247,111,236,104,96,150,143,142,82,126,182,175,163,217,190,112,142,25,169,67,55,233,240,133,115,125,204,109,38,230,249,152,103,228,231,251,152,227,99,190,223,250,45,30,95,245,252,198,133,186,100,161,47,92,228,99,145,207,197,218,124,137,143,197,62,22,248,88,82,90,44,213,208,82,95,184,204,199,50,159,203,125,189,48,174,240,177,220,199,10,95,184,210,199,202,82,99,149,38,87,249,194,213,62,86,251,236,52,228,26,31,157,62,214,248,194,181,198,163,231,55,206,109,96,173,143,185,165,199,58,95,71,235,124,225,122,51,212,6,221,101,131,47,220,232,99,99,51,177,201,199,38,227,177,217,199,122,31,155,91,30,91,124,213,251,27,183,234,146,173,190,112,155,143,109,62,183,251,234,79,220,225,99,187,143,45,62,118,148,30,59,53,180,211,23,238,242,177,203,103,151,175,23,198,221,62,186,124,236,246,133,123,124,236,41,61,246,106,114,175,47,220,231,99,159,207,253,134,60,224,99,191,143,3,190,240,160,241,232,253,141,243,26,56,232,99,94,233,113,200,215,209,33,95,120,216,12,117,68,119,57,226,11,143,250,56,218,76,28,243,113,204,120,28,247,113,216,199,241,150,199,9,95,181,253,206,147,186,228,164,47,236,246,209,237,243,148,175,254,204,211,62,78,249,56,225,227,116,233,113,70,67,103,124,225,89,31,103,125,158,243,245,194,120,222,199,57,31,231,125,225,5,31,23,74,143,139,154,188,232,11,47,249,184,228,243,178,33,175,248,184,236,227,138,47,188,106,60,218,126,231,252,6,174,250,152,223,119,211,247,117,116,205,23,94,55,67,221,208,93,110,248,194,30,31,61,205,196,77,31,55,141,199,45,31,215,125,220,106,121,220,246,85,251,239,188,163,75,238,248,194,187,62,238,250,188,231,171,191,240,190,143,123,62,110,251,184,95,122,60,208,208,3,95,248,208,199,67,159,143,124,243,163,251,62,30,249,120,236,11,159,248,120,82,122,60,213,228,83,95,248,204,199,51,159,207,13,217,235,227,185,143,94,95,248,194,120,180,255,206,5,13,188,240,177,160,239,166,239,235,232,165,47,124,101,134,122,173,187,188,246,133,111,124,188,105,38,222,250,120,107,60,222,249,120,229,227,93,203,227,189,175,58,126,231,7,93,242,193,23,126,244,241,209,231,39,95,253,192,207,62,62,249,120,239,227,115,233,241,69,67,95,124,225,87,31,95,125,126,243,245,194,216,22,224,155,143,182,64,216,63,64,255,160,188,233,7,248,1,3,2,225,192,0,3,3,14,10,52,57,56,192,160,0,131,3,225,144,192,60,114,126,231,194,6,134,4,88,216,119,211,15,116,52,52,16,14,11,244,80,195,117,151,225,129,112,68,128,17,205,196,200,0,35,3,115,211,15,48,44,192,168,160,117,211,15,84,231,239,28,163,75,198,4,194,177,1,198,6,108,15,212,95,57,46,64,123,128,209,1,198,5,229,77,95,67,227,3,225,132,0,19,2,78,12,244,194,56,41,192,196,0,147,2,225,228,0,147,75,143,41,154,156,18,8,167,6,152,26,112,154,33,167,7,152,22,96,122,32,156,97,60,58,127,231,162,6,102,4,88,212,119,211,15,116,52,51,16,206,50,67,205,214,93,102,7,194,57,1,230,52,19,29,1,58,140,199,220,0,179,2,204,109,121,204,11,84,215,239,156,175,75,230,7,194,5,1,22,4,92,24,168,191,113,81,128,133,1,230,5,88,84,122,44,214,208,226,64,184,36,192,146,128,75,3,189,48,46,11,176,52,192,178,64,184,60,192,242,210,99,133,38,87,4,194,149,1,86,6,92,101,200,213,1,86,5,88,29,8,59,141,71,215,239,92,220,64,103,128,197,125,55,253,64,71,107,2,225,90,51,212,58,221,101,93,32,92,31,96,125,51,177,33,192,6,227,177,49,192,218,0,27,91,30,155,2,213,253,59,55,235,146,205,129,112,75,128,45,1,183,6,234,239,220,22,96,107,128,77,1,182,149,30,219,53,180,61,16,238,8,176,35,224,206,64,47,140,187,2,236,12,176,43,16,118,5,232,42,61,118,107,114,119,32,220,19,96,79,192,189,134,220,23,96,111,128,125,129,112,191,241,232,254,157,75,26,216,31,96,73,223,77,63,208,209,129,64,120,208,12,117,72,119,57,20,8,15,7,56,220,76,28,9,112,196,120,28,13,112,48,192,209,150,199,177,64,245,252,206,227,186,228,120,32,60,17,224,68,192,147,129,250,7,187,3,156,12,112,44,64,119,233,113,74,67,167,2,225,233,0,167,3,158,9,244,194,120,54,192,153,0,103,3,225,185,0,231,74,143,243,154,60,31,8,47,4,184,16,240,162,33,47,5,184,24,224,82,32,188,108,60,122,126,231,210,6,46,7,88,218,119,211,15,116,116,37,16,94,53,67,93,211,93,174,5,194,235,1,174,55,19,55,2,220,48,30,61,1,174,6,232,105,121,220,12,84,239,239,188,165,75,110,5,194,219,1,110,7,188,19,168,127,242,110,128,59,1,110,6,184,91,122,220,211,208,189,64,120,63,192,253,128,15,2,189,48,62,12,240,32,192,195,64,248,40,192,163,210,227,177,38,31,7,194,39,1,158,4,124,106,200,103,1,158,6,120,22,8,159,27,143,222,223,185,172,129,231,1,150,245,93,245,3,29,245,6,194,23,102,168,151,186,203,203,64,248,42,192,171,102,226,117,128,215,198,227,77,128,23,1,222,180,60,222,6,170,237,15,190,211,37,239,2,225,251,0,239,3,126,8,212,143,252,24,224,67,128,183,1,62,150,30,159,52,244,41,16,126,14,240,57,224,151,64,47,140,95,3,124,9,240,53,16,126,11,240,173,244,104,83,248,1,109,74,216,95,161,191,226,0,165,201,129,10,3,20,6,42,225,32,101,158,31,127,112,121,3,131,20,150,247,93,245,149,142,6,43,225,16,165,135,26,170,187,12,85,194,97,10,195,154,137,225,10,195,149,185,234,43,12,81,24,161,90,87,125,165,218,255,224,40,93,50,74,9,71,43,140,86,28,163,212,79,28,171,48,70,97,164,194,88,85,94,245,53,212,174,132,227,20,198,41,142,87,202,225,4,133,241,10,19,148,112,162,194,68,85,30,245,53,56,73,9,39,43,76,86,156,162,193,169,10,83,20,166,42,225,52,99,209,254,7,87,52,48,77,97,69,223,77,95,233,104,186,18,206,48,35,205,212,77,102,42,225,44,133,89,205,196,108,133,217,198,98,142,194,12,133,57,218,226,167,255,249,81,45,208,171,101,135,82,127,231,92,101,86,203,14,133,185,74,175,150,243,148,250,158,243,21,230,41,204,87,255,225,2,133,5,234,191,86,203,133,74,117,252,193,69,250,147,22,41,225,98,133,197,138,75,148,250,142,75,21,150,40,44,84,88,90,202,47,211,208,50,37,92,174,176,92,113,133,50,63,200,163,176,66,97,165,18,174,82,88,85,218,175,214,228,106,37,236,84,232,84,92,99,200,181,10,107,20,214,42,225,58,163,223,241,7,87,54,176,78,97,101,169,191,94,233,104,189,18,110,48,67,109,212,93,54,42,225,38,133,77,205,196,102,133,205,70,127,139,194,6,133,45,173,47,113,171,82,157,127,112,155,46,217,166,132,219,21,182,43,238,208,238,59,21,118,40,108,85,216,89,122,236,210,208,46,37,236,82,232,82,220,173,204,15,242,40,236,86,216,163,132,123,21,246,150,30,251,52,185,79,9,247,43,236,87,60,96,200,131,10,7,20,14,42,225,33,227,209,249,7,87,53,112,72,97,85,233,113,88,233,232,176,18,30,49,67,29,213,93,142,42,225,49,133,99,205,196,113,133,227,198,227,132,194,17,133,19,45,143,147,74,117,253,193,110,93,210,173,132,167,20,78,41,158,86,234,79,60,163,112,90,225,164,194,153,210,227,172,134,206,42,225,57,133,115,138,231,149,94,25,47,40,156,87,184,160,132,23,21,46,150,30,151,52,121,73,9,47,43,92,86,188,98,200,171,10,87,20,174,42,225,53,227,209,245,7,87,55,112,77,97,117,233,113,93,233,232,186,18,222,48,67,245,232,46,61,74,120,83,225,102,51,113,75,225,150,241,184,173,112,67,225,118,203,227,142,82,221,127,240,174,46,185,171,132,247,20,238,41,222,87,234,207,124,160,112,95,225,142,194,131,210,227,161,134,30,42,225,35,133,71,138,143,149,94,225,159,40,60,86,120,162,132,79,21,158,150,30,207,52,249,76,9,159,43,60,87,236,53,228,11,133,94,133,23,74,248,210,120,116,255,193,206,6,94,42,116,150,30,175,148,142,94,41,225,107,51,212,27,221,229,141,18,190,85,120,219,76,188,83,120,103,60,222,43,188,86,120,223,242,248,160,84,207,31,252,168,75,62,42,225,39,133,79,138,159,149,250,11,191,40,124,86,248,160,240,165,244,248,170,161,175,74,248,77,225,155,98,91,85,175,190,253,171,104,171,162,127,85,56,160,138,1,213,242,172,95,197,15,24,88,21,14,170,98,80,149,131,13,57,164,138,193,85,12,169,10,135,86,205,67,231,15,174,105,96,104,21,107,250,238,250,85,29,13,171,10,135,87,245,80,35,116,151,17,85,225,200,42,70,54,19,163,170,24,85,53,119,253,42,134,87,49,186,218,186,235,87,85,239,31,28,171,75,198,86,133,237,85,180,87,57,174,170,126,224,248,42,198,85,49,166,138,241,213,242,174,175,161,9,85,225,196,42,38,86,57,169,170,87,148,201,85,76,170,98,114,85,56,165,138,41,165,199,84,77,78,173,10,167,85,49,173,202,233,134,156,81,197,244,42,102,84,133,51,141,71,239,31,92,219,192,204,42,214,246,221,245,171,58,154,85,21,206,54,67,205,209,93,230,84,133,29,85,116,52,19,115,171,152,107,60,230,85,49,187,138,121,45,143,249,85,213,86,225,2,93,178,160,42,92,88,197,194,42,23,85,213,95,185,184,138,69,85,204,175,98,113,233,177,68,67,75,170,194,165,85,44,173,114,89,85,253,139,203,171,88,86,197,242,170,112,69,21,43,74,141,149,26,92,89,21,174,170,98,85,149,171,53,216,89,197,234,42,58,171,194,53,198,162,173,194,117,13,172,169,98,93,223,85,191,170,163,181,85,225,58,51,210,122,221,100,125,85,184,161,138,13,205,196,198,42,54,26,139,77,85,172,171,98,83,203,98,115,85,181,87,184,69,151,108,169,10,183,86,177,181,202,109,85,245,55,110,175,98,91,21,155,171,216,94,90,236,208,208,142,170,112,103,21,59,171,220,85,85,235,191,103,87,21,187,170,232,170,10,119,87,177,187,212,216,163,201,61,85,225,222,42,246,86,185,207,144,251,171,216,87,197,254,170,240,128,241,104,175,112,125,3,7,170,88,223,119,213,175,234,232,96,85,120,200,12,117,88,119,57,92,21,30,169,226,72,51,113,180,138,163,198,227,88,21,135,170,56,214,242,56,94,85,29,21,158,208,37,39,170,194,147,85,156,172,178,187,170,254,206,83,85,116,87,113,188,138,83,165,199,105,13,157,174,10,207,84,113,166,202,179,85,213,251,61,207,85,113,182,138,115,85,225,249,42,206,151,30,23,52,121,161,42,188,88,197,197,42,47,25,242,114,21,151,170,184,92,21,94,49,30,29,21,110,104,224,74,21,27,250,174,250,85,29,93,173,10,175,153,161,174,235,46,215,171,194,27,85,220,104,38,122,170,232,49,30,55,171,184,86,197,205,150,199,173,170,234,172,240,182,46,185,93,21,222,169,226,78,149,119,171,234,31,188,87,197,221,42,110,85,113,175,244,184,175,161,251,85,225,131,42,30,84,249,176,170,95,68,30,85,241,176,138,71,85,225,227,42,30,151,30,79,52,249,164,42,124,90,197,211,42,159,25,242,121,21,207,170,120,94,21,246,26,143,206,10,55,54,208,91,197,198,190,171,126,85,71,47,170,194,151,102,168,87,186,203,171,170,240,117,21,175,155,137,55,85,188,49,30,111,171,120,89,197,219,150,199,187,170,234,170,240,189,46,121,95,21,126,168,226,67,149,31,171,234,159,252,84,197,199,42,222,85,241,169,244,248,172,161,207,85,225,151,42,190,84,249,181,170,23,248,111,85,124,173,226,91,85,216,86,67,91,173,188,234,215,240,3,250,215,132,3,106,24,80,227,192,154,38,7,213,48,176,134,65,53,225,224,154,121,122,84,184,169,129,193,53,108,234,187,234,215,116,52,164,38,28,90,211,67,13,211,93,134,213,132,195,107,24,222,76,140,168,97,68,205,92,245,107,24,90,195,200,90,235,170,95,83,221,21,142,214,37,163,107,194,49,53,140,169,113,108,77,253,200,246,26,198,214,48,170,134,246,90,121,213,215,208,184,154,112,124,13,227,107,156,80,211,11,252,196,26,38,212,48,177,38,156,84,195,164,210,99,178,38,39,215,132,83,106,152,82,227,84,67,78,171,97,106,13,211,106,194,233,198,163,187,194,205,13,76,175,97,115,223,85,191,166,163,25,53,225,76,51,212,44,221,101,86,77,56,187,134,217,205,196,156,26,230,24,143,142,26,102,214,208,209,242,152,91,83,61,21,206,211,37,243,106,194,249,53,204,175,113,65,77,253,196,133,53,44,168,97,110,13,11,75,143,69,26,90,84,19,46,174,97,113,141,75,106,122,129,95,90,195,146,26,150,214,132,203,106,88,86,122,44,215,228,242,154,112,69,13,43,106,92,105,200,85,53,172,172,97,85,77,184,218,120,244,84,184,165,129,213,53,108,233,187,234,215,116,212,89,19,174,49,67,173,213,93,214,214,132,235,106,88,215,76,172,175,97,189,241,216,80,195,154,26,54,180,60,54,214,84,111,133,155,116,201,166,154,112,115,13,155,107,220,82,83,255,195,173,53,108,169,97,99,13,91,75,143,109,26,218,86,19,110,175,97,123,141,59,106,122,129,223,89,195,142,26,118,214,132,187,106,216,85,122,116,105,178,171,38,220,93,195,238,26,247,24,114,111,13,123,106,216,91,19,238,51,30,189,21,110,109,96,95,13,91,251,174,250,53,29,237,175,9,15,152,161,14,234,46,7,107,194,67,53,28,106,38,14,215,112,216,120,28,169,225,64,13,71,90,30,71,107,170,205,226,49,93,114,172,38,60,94,195,241,26,79,212,212,255,225,201,26,78,212,112,180,134,147,165,71,183,134,186,107,194,83,53,156,170,241,116,77,57,60,83,195,233,26,206,212,132,103,107,56,91,106,156,211,224,185,154,240,124,13,231,107,188,160,193,139,53,92,168,225,98,77,120,201,88,180,89,220,214,192,165,26,182,245,221,244,107,58,186,92,19,94,49,35,93,213,77,174,214,132,215,106,184,214,76,92,175,225,186,177,184,81,195,149,26,110,104,139,159,126,252,81,173,208,171,126,79,77,253,149,55,107,102,213,239,169,225,102,77,175,250,183,106,234,123,222,174,225,86,13,183,107,255,225,157,26,238,212,254,107,213,191,91,83,237,22,239,233,79,186,87,19,222,175,225,126,141,15,106,234,59,62,172,225,65,13,119,107,120,88,202,63,210,208,163,154,240,113,13,143,107,124,82,211,11,227,211,26,158,212,240,180,38,124,86,195,179,210,254,185,38,159,215,132,189,53,244,214,248,194,144,47,107,120,81,195,203,154,240,149,209,111,183,184,189,129,87,53,108,47,245,95,215,116,244,186,38,124,99,134,122,171,187,188,173,9,223,213,240,174,153,120,95,195,123,163,255,161,134,55,53,124,104,125,137,31,107,170,195,226,39,93,242,169,38,252,92,195,231,26,191,104,247,175,53,124,169,225,99,13,95,75,143,111,26,250,86,19,182,213,209,86,103,255,186,94,24,7,212,209,191,142,1,117,225,192,58,6,214,203,223,216,175,227,7,12,170,11,7,215,49,184,206,33,134,28,90,199,144,58,134,214,133,195,234,230,161,99,113,71,3,195,234,216,81,122,12,175,235,104,120,93,56,162,174,135,26,169,187,140,172,11,71,213,49,170,153,24,93,199,232,186,249,141,253,58,70,212,49,166,222,250,141,253,186,234,180,216,174,75,218,235,194,113,117,140,171,115,124,93,253,137,19,234,24,95,199,216,58,38,212,203,171,190,134,38,214,133,147,234,152,84,231,228,186,250,252,61,167,212,49,185,142,41,117,225,212,58,166,150,30,211,52,57,173,46,156,94,199,244,58,103,24,114,102,29,51,234,152,89,23,206,50,30,157,22,119,54,48,171,142,157,125,119,253,186,142,102,215,133,115,204,80,29,186,75,71,93,56,183,142,185,205,196,188,58,230,25,143,249,117,204,169,99,126,203,99,65,93,117,89,92,168,75,22,214,133,139,234,88,84,231,226,186,250,51,151,212,177,184,142,5,117,44,41,61,150,106,104,105,93,184,172,142,101,117,46,175,171,97,127,226,138,58,150,215,177,162,46,92,89,199,202,210,99,149,38,87,213,133,171,235,88,93,103,167,33,215,212,209,89,199,154,186,112,173,241,232,178,184,171,129,181,117,236,234,187,235,215,117,180,174,46,92,111,134,218,160,187,108,168,11,55,214,177,177,153,216,84,199,38,227,177,185,142,245,117,108,110,121,108,169,171,110,139,91,117,201,214,186,112,91,29,219,234,220,94,87,127,225,142,58,182,215,177,165,142,29,165,199,78,13,237,172,11,119,213,177,171,206,174,186,94,224,119,215,209,85,199,238,186,112,79,29,123,74,143,189,154,220,91,23,238,171,99,95,157,251,13,121,160,142,253,117,28,168,11,15,26,143,110,139,93,13,28,172,163,171,239,174,95,215,209,161,186,240,176,25,234,136,238,114,164,46,60,90,199,209,102,226,88,29,199,140,199,241,58,14,215,113,188,229,113,162,174,122,44,158,212,37,39,235,194,238,58,186,235,60,85,87,63,240,116,29,167,234,56,81,199,233,210,227,140,134,206,212,133,103,235,56,91,231,185,186,126,81,63,95,199,185,58,206,215,133,23,234,184,80,122,92,212,228,197,186,240,82,29,151,234,188,108,200,43,117,92,174,227,74,93,120,213,120,244,88,220,221,192,213,58,118,247,221,245,235,58,186,86,23,94,55,67,221,208,93,110,212,133,61,117,244,52,19,55,235,184,105,60,110,213,113,189,142,91,45,143,219,117,213,107,241,142,46,185,83,23,222,173,227,110,157,247,234,234,175,188,95,199,189,58,110,215,113,191,244,120,160,161,7,117,225,195,58,30,214,249,168,174,95,212,31,215,241,168,142,199,117,225,147,58,158,148,30,79,53,249,180,46,124,86,199,179,58,159,27,178,183,142,231,117,244,214,133,47,140,71,175,197,61,13,188,168,99,79,223,93,191,174,163,151,117,225,43,51,212,107,221,229,117,93,248,166,142,55,205,196,219,58,222,26,143,119,117,188,170,227,93,203,227,125,93,181,217,252,160,75,62,212,133,31,235,248,88,231,167,186,250,27,63,215,241,169,142,247,117,124,46,61,190,104,232,75,93,248,181,142,175,117,126,171,171,207,127,97,91,136,111,117,180,133,194,254,33,250,135,229,93,63,196,15,24,16,10,7,134,24,24,114,80,168,201,193,33,6,133,24,28,10,135,132,230,177,99,115,111,3,67,66,236,237,187,235,135,58,26,26,10,135,133,122,168,225,186,203,240,80,56,34,196,136,102,98,100,136,145,161,185,235,135,24,22,98,84,216,186,235,135,170,221,230,24,93,50,38,20,142,13,49,54,100,123,168,254,206,113,33,218,67,140,14,49,46,44,239,250,26,26,31,10,39,132,152,16,114,98,168,38,254,137,147,66,76,12,49,41,20,78,14,49,185,244,152,162,201,41,161,112,106,136,169,33,167,25,114,122,136,105,33,166,135,194,25,198,163,221,230,190,6,102,132,216,215,119,215,15,117,52,51,20,206,50,67,205,214,93,102,135,194,57,33,230,52,19,29,33,58,140,199,220,16,179,66,204,109,121,204,11,85,135,205,249,186,100,126,40,92,16,98,65,200,133,161,250,7,23,133,88,24,98,94,136,69,165,199,98,13,45,14,133,75,66,44,9,185,52,84,255,226,178,16,75,67,44,11,133,203,67,44,47,53,86,104,112,69,40,92,25,98,101,200,85,26,92,29,98,85,136,213,161,176,211,88,116,216,220,223,64,103,136,253,125,87,253,80,71,107,66,225,90,51,210,58,221,100,93,40,92,31,98,125,51,177,33,196,6,99,177,49,196,218,16,27,91,22,155,66,213,105,115,179,46,217,28,10,183,132,216,18,114,107,168,254,201,109,33,182,134,216,20,98,91,105,177,93,67,219,67,225,142,16,59,66,238,12,245,107,250,174,16,59,67,236,10,133,93,33,186,74,141,221,154,220,29,10,247,132,216,19,114,175,33,247,133,216,27,98,95,40,220,111,60,58,109,30,104,96,127,136,3,125,87,253,208,68,161,240,160,25,234,144,238,114,40,20,30,14,113,184,153,56,18,226,136,241,56,26,226,96,136,163,45,143,99,161,234,178,121,92,151,28,15,133,39,66,156,8,121,50,84,63,178,59,196,201,16,199,66,116,151,30,167,52,116,42,20,158,14,113,58,228,153,80,191,136,156,13,113,38,196,217,80,120,46,196,185,210,227,188,38,207,135,194,11,33,46,132,188,104,200,75,33,46,134,184,20,10,47,27,143,46,155,7,27,184,28,226,96,223,85,63,212,209,149,80,120,213,12,117,77,119,185,22,10,175,135,184,222,76,220,8,113,195,120,244,132,184,26,162,167,229,113,51,84,221,54,111,233,146,91,161,240,118,136,219,33,239,132,234,39,222,13,113,39,196,205,16,119,75,143,123,26,186,23,10,239,135,184,31,242,65,168,95,68,30,134,120,16,226,97,40,124,20,226,81,233,241,88,147,143,67,225,147,16,79,66,62,53,228,179,16,79,67,60,11,133,207,141,71,183,205,67,13,60,15,113,168,239,170,31,234,168,55,20,190,48,67,189,212,93,94,134,194,87,33,94,53,19,175,67,188,54,30,111,66,188,8,241,166,229,241,54,84,61,54,223,233,146,119,161,240,125,136,247,33,63,132,234,127,248,49,196,135,16,111,67,124,44,61,62,105,232,83,40,252,28,226,115,200,47,161,126,17,249,26,226,75,136,175,161,240,91,136,111,165,71,91,132,31,208,22,9,251,71,232,31,113,64,164,201,129,17,6,68,24,24,9,7,69,230,233,97,243,112,3,131,34,28,238,187,234,71,58,26,28,9,135,68,122,168,161,186,203,208,72,56,44,194,176,102,98,120,132,225,145,185,234,71,24,18,97,68,212,186,234,71,170,215,230,40,93,50,42,18,142,142,48,58,226,152,72,253,31,142,141,48,38,194,200,8,99,163,242,170,175,161,246,72,56,46,194,184,136,227,35,181,224,175,156,16,97,124,132,9,145,112,98,132,137,81,121,214,215,228,164,72,56,57,194,228,136,83,12,57,53,194,148,8,83,35,225,52,227,209,107,243,72,3,211,34,28,233,187,235,71,58,154,30,9,103,152,161,102,234,46,51,35,225,172,8,179,154,137,217,17,102,27,143,57,17,102,68,152,211,242,232,136,84,155,195,185,186,100,110,36,156,23,97,94,196,249,145,250,191,92,16,97,126,132,142,8,11,74,143,133,26,90,24,9,23,69,88,20,113,113,164,95,168,150,68,88,28,97,73,36,92,26,97,105,233,177,76,147,203,34,225,242,8,203,35,174,48,228,202,8,43,34,172,140,132,171,140,71,155,195,163,13,172,138,112,180,239,111,245,35,29,173,142,132,157,102,168,53,186,203,154,72,184,54,194,218,102,98,93,132,117,198,99,125,132,206,8,235,91,30,27,34,213,238,112,163,46,217,24,9,55,69,216,20,113,115,164,254,63,220,18,97,115,132,13,17,182,148,30,91,53,180,53,18,110,139,176,45,226,246,72,57,220,17,97,123,132,29,145,112,103,132,157,165,198,46,13,238,138,132,93,17,186,34,238,214,224,158,8,187,35,236,137,132,123,141,69,187,195,99,13,236,141,112,172,239,47,245,35,29,237,139,132,251,205,72,7,116,147,3,145,240,96,132,131,205,196,161,8,135,140,197,225,8,251,35,28,214,22,63,253,227,71,181,86,191,122,29,137,212,159,121,52,50,175,94,71,34,28,141,244,171,215,177,72,125,207,227,17,142,69,56,30,253,135,39,34,156,136,254,235,213,235,100,164,58,28,118,235,79,234,142,132,167,34,156,138,120,58,82,223,241,76,132,211,17,78,70,56,83,202,159,213,208,217,72,120,46,194,185,136,231,35,245,47,94,136,112,62,194,133,72,120,49,194,197,82,254,146,6,47,69,194,203,17,46,71,188,162,193,171,17,174,68,184,26,9,175,25,249,14,135,199,27,184,22,225,120,223,77,63,210,209,245,72,120,195,140,212,163,155,244,68,194,155,17,110,54,19,183,34,220,50,242,183,35,220,136,112,187,245,21,222,137,84,167,195,187,186,228,110,36,188,23,225,94,196,251,218,252,65,132,251,17,238,68,120,80,90,60,212,208,195,72,248,40,194,163,136,143,35,213,251,61,159,68,120,28,225,73,36,124,26,225,105,169,241,76,147,207,34,225,243,8,207,35,246,26,242,69,132,222,8,47,34,225,75,227,209,233,240,68,3,47,35,156,232,187,233,71,58,122,21,9,95,155,161,222,232,46,111,34,225,219,8,111,155,137,119,17,222,25,143,247,17,94,71,120,223,242,248,16,169,46,135,31,117,201,199,72,248,41,194,167,136,159,35,245,39,126,137,240,57,194,135,8,95,74,143,175,26,250,26,9,191,69,248,22,177,45,214,175,183,253,99,180,197,232,31,11,7,196,24,16,151,55,253,24,63,96,96,44,28,20,99,80,204,193,134,28,18,99,112,140,33,177,112,104,108,30,57,14,79,54,48,52,198,201,190,155,126,172,163,97,177,112,120,172,135,26,161,187,140,136,133,35,99,140,108,38,70,197,24,21,155,155,126,140,225,49,70,199,173,155,126,172,186,29,142,213,37,99,99,97,123,140,246,152,227,98,245,103,142,143,49,46,198,152,24,227,227,242,166,175,161,9,177,112,98,140,137,49,39,197,250,53,100,114,140,73,49,38,199,194,41,49,166,148,30,83,53,57,53,22,78,139,49,45,230,116,67,206,136,49,61,198,140,88,56,211,120,116,59,236,110,96,102,140,238,190,155,126,172,163,89,177,112,182,25,106,142,238,50,39,22,118,196,232,104,38,230,198,152,107,60,230,197,152,29,99,94,203,99,126,172,122,28,46,208,37,11,98,225,194,24,11,99,46,138,213,95,184,56,198,162,24,243,99,44,46,61,150,104,104,73,44,92,26,99,105,204,101,177,126,13,89,30,99,89,140,229,177,112,69,140,21,165,199,74,77,174,140,133,171,98,172,138,185,218,144,157,49,86,199,232,140,133,107,140,71,143,195,83,13,172,137,113,170,239,170,31,235,104,109,44,92,103,134,90,175,187,172,143,133,27,98,108,104,38,54,198,216,104,60,54,197,88,23,99,83,203,99,115,172,122,29,110,209,37,91,98,225,214,24,91,99,110,139,213,15,220,30,99,91,140,205,49,182,151,30,59,52,180,35,22,238,140,177,51,230,174,88,191,134,116,197,216,21,163,43,22,238,142,177,187,244,216,163,201,61,177,112,111,140,189,49,247,25,114,127,140,125,49,246,199,194,3,198,163,215,225,233,6,14,196,56,221,119,213,143,117,116,48,22,30,50,67,29,214,93,14,199,194,35,49,142,52,19,71,99,28,53,30,199,98,28,138,113,172,229,113,60,86,109,46,79,232,146,19,177,240,100,140,147,49,187,99,245,87,158,138,209,29,227,120,140,83,165,199,105,13,157,142,133,103,98,156,137,121,54,214,11,227,185,24,103,99,156,139,133,231,99,156,47,61,46,104,242,66,44,188,24,227,98,204,75,134,188,28,227,82,140,203,177,240,138,241,104,115,121,166,129,43,49,206,244,93,245,99,29,93,141,133,215,204,80,215,117,151,235,177,240,70,140,27,205,68,79,140,30,227,113,51,198,181,24,55,91,30,183,98,213,238,242,182,46,185,29,11,239,196,184,19,243,110,172,254,198,123,49,238,198,184,21,227,94,233,113,95,67,247,99,225,131,24,15,98,62,140,205,143,236,199,120,24,227,81,44,124,28,227,113,233,241,68,147,79,98,225,211,24,79,99,62,51,228,243,24,207,98,60,143,133,189,198,163,221,229,217,6,122,99,156,237,187,234,199,58,122,17,11,95,154,161,94,233,46,175,98,225,235,24,175,155,137,55,49,222,24,143,183,49,94,198,120,219,242,120,23,171,14,151,239,117,201,251,88,248,33,198,135,152,31,99,245,119,126,138,241,49,198,187,24,159,74,143,207,26,250,28,11,191,196,248,18,243,107,108,126,100,63,198,215,24,223,98,97,91,130,182,164,188,234,39,248,1,253,19,225,128,4,3,18,14,76,52,57,40,193,192,4,131,18,225,224,196,60,63,92,158,107,96,112,130,115,125,87,253,68,71,67,18,225,208,68,15,53,76,119,25,150,8,135,39,24,222,76,140,72,48,34,49,87,253,4,67,19,140,76,90,87,253,68,117,186,28,173,75,70,39,194,49,9,198,36,28,155,168,127,176,61,193,216,4,163,18,180,39,229,85,95,67,227,18,225,248,4,227,19,78,72,244,130,50,49,193,132,4,19,19,225,164,4,147,74,143,201,154,156,156,8,167,36,152,146,112,170,33,167,37,152,154,96,90,34,156,110,60,58,93,158,111,96,122,130,243,125,87,253,68,71,51,18,225,76,51,212,44,221,101,86,34,156,157,96,118,51,49,39,193,28,227,209,145,96,102,130,142,150,199,220,68,117,185,156,167,75,230,37,194,249,9,230,39,92,144,168,127,114,97,130,5,9,230,38,88,88,122,44,210,208,162,68,184,56,193,226,132,75,18,229,112,105,130,37,9,150,38,194,101,9,150,149,26,203,53,184,60,17,174,72,176,34,225,74,13,174,74,176,50,193,170,68,184,218,88,116,185,188,208,192,234,4,23,250,110,250,137,142,58,19,225,26,51,210,90,221,100,109,34,92,151,96,93,51,177,62,193,122,99,177,33,193,154,4,27,180,197,79,127,251,81,109,208,171,204,198,68,253,149,155,18,179,202,108,76,176,41,209,171,204,230,68,125,207,45,9,54,39,216,146,252,135,91,19,108,77,254,107,149,217,150,168,110,151,219,245,39,109,79,132,59,18,236,72,184,51,81,223,113,87,130,157,9,182,37,216,85,202,119,105,168,43,17,238,78,176,59,225,158,68,253,139,123,19,236,73,176,55,17,238,75,176,175,148,223,175,193,253,137,240,64,130,3,9,15,106,240,80,130,131,9,14,37,194,195,70,190,219,229,197,6,14,39,184,88,202,31,73,116,116,36,17,30,53,35,29,211,77,142,37,194,227,9,142,55,19,39,18,156,48,242,39,19,28,77,112,178,245,21,118,39,170,199,229,41,93,114,42,17,158,78,112,58,225,25,109,126,54,193,153,4,221,9,206,150,22,231,52,116,46,17,158,79,112,62,225,133,68,47,40,23,19,92,72,112,49,17,94,74,112,169,212,184,172,201,203,137,240,74,130,43,9,175,26,242,90,130,171,9,174,37,194,235,198,163,199,229,165,6,174,39,184,84,122,220,72,116,116,35,17,246,152,161,110,234,46,55,19,225,173,4,183,154,137,219,9,110,27,143,59,9,122,18,220,105,121,220,77,84,175,203,123,186,228,94,34,188,159,224,126,194,7,137,250,19,31,38,120,144,224,110,130,135,165,199,35,13,61,74,132,143,19,60,78,248,36,49,55,253,4,79,18,60,77,132,207,18,60,43,61,158,107,242,121,34,236,77,208,155,240,133,33,95,38,120,145,224,101,34,124,101,60,122,93,94,110,224,85,130,203,125,55,253,68,71,175,19,225,27,51,212,91,221,229,109,34,124,151,224,93,51,241,62,193,123,227,241,33,193,155,4,31,90,30,31,19,213,230,241,147,46,249,148,8,63,39,248,156,240,75,162,254,204,175,9,190,36,248,152,224,107,233,241,77,67,223,18,97,91,138,182,148,253,83,189,160,12,72,209,63,197,128,84,56,48,197,192,180,188,233,167,248,1,131,82,225,224,20,131,83,14,49,228,208,20,67,82,12,77,133,195,82,243,200,241,120,165,129,97,41,174,244,221,244,83,29,13,79,133,35,82,61,212,72,221,101,100,42,28,149,98,84,51,49,58,197,232,212,220,244,83,140,72,49,38,109,221,244,83,213,238,177,93,151,180,167,194,113,41,198,165,28,159,170,191,112,66,138,241,41,198,166,152,144,150,55,125,13,77,76,133,147,82,76,74,57,57,213,11,202,148,20,147,83,76,73,133,83,83,76,45,61,166,105,114,90,42,156,158,98,122,202,25,134,156,153,98,70,138,153,169,112,150,241,104,247,120,181,129,89,41,174,246,221,244,83,29,205,78,133,115,204,80,29,186,75,71,42,156,155,98,110,51,49,47,197,60,227,49,63,197,156,20,243,91,30,11,82,213,225,113,161,46,89,152,10,23,165,88,148,114,113,170,126,224,146,20,139,83,44,72,177,164,244,88,170,161,165,169,112,89,138,101,41,151,167,122,65,89,145,98,121,138,21,169,112,101,138,149,165,199,42,77,174,74,133,171,83,172,78,217,105,200,53,41,58,83,172,73,133,107,141,71,135,199,107,13,172,77,113,173,239,166,159,234,104,93,42,92,111,134,218,160,187,108,72,133,27,83,108,108,38,54,165,216,100,60,54,167,88,159,98,115,203,99,75,170,58,61,110,213,37,91,83,225,182,20,219,82,110,79,213,95,185,35,197,246,20,91,82,236,40,61,118,106,104,103,42,220,149,98,87,202,174,84,47,40,187,83,116,165,216,157,10,247,164,216,83,122,236,213,228,222,84,184,47,197,190,148,251,13,121,32,197,254,20,7,82,225,65,227,209,233,241,122,3,7,83,92,239,187,233,167,58,58,148,10,15,155,161,142,232,46,71,82,225,209,20,71,155,137,99,41,142,25,143,227,41,14,167,56,222,242,56,145,170,46,143,39,117,201,201,84,216,157,162,59,229,169,84,253,141,167,83,156,74,113,34,197,233,210,227,140,134,206,164,194,179,41,206,166,60,151,234,5,229,124,138,115,41,206,167,194,11,41,46,148,30,23,53,121,49,21,94,74,113,41,229,101,67,94,73,113,57,197,149,84,120,213,120,116,121,188,209,192,213,20,55,250,110,250,169,142,174,165,194,235,102,168,27,186,203,141,84,216,147,162,167,153,184,153,226,166,241,184,149,226,122,138,91,45,143,219,169,234,246,120,71,151,220,73,133,119,83,220,77,121,47,85,127,231,253,20,247,82,220,78,113,191,244,120,160,161,7,169,240,97,138,135,41,31,165,122,65,121,156,226,81,138,199,169,240,73,138,39,165,199,83,77,62,77,133,207,82,60,75,249,220,144,189,41,158,167,232,77,133,47,140,71,183,199,158,6,94,164,232,233,187,233,167,58,122,153,10,95,153,161,94,235,46,175,83,225,155,20,111,154,137,183,41,222,26,143,119,41,94,165,120,215,242,120,159,170,30,143,31,116,201,135,84,248,49,197,199,148,159,82,245,15,126,78,241,41,197,251,20,159,75,143,47,26,250,146,10,191,166,248,154,242,91,170,58,255,202,182,12,223,82,180,101,194,254,25,250,103,229,77,63,195,15,24,144,9,7,102,24,152,113,80,166,201,193,25,6,101,24,156,9,135,100,230,249,225,241,102,3,67,50,220,236,187,233,103,58,26,154,9,135,101,122,168,225,186,203,240,76,56,34,195,136,102,98,100,134,145,153,185,233,103,24,150,97,84,214,186,233,103,170,215,227,24,93,50,38,19,142,205,48,54,99,123,166,254,201,113,25,218,51,140,206,48,46,43,111,250,26,26,159,9,39,100,152,144,113,98,166,23,173,73,25,38,102,152,148,9,39,103,152,92,122,76,209,228,148,76,56,53,195,212,140,211,12,57,61,195,180,12,211,51,225,12,227,209,235,241,86,3,51,50,220,234,187,233,103,58,154,153,9,103,153,161,102,235,46,179,51,225,156,12,115,154,137,142,12,29,198,99,110,134,89,25,230,182,60,230,101,170,205,231,124,93,50,63,19,46,200,176,32,227,194,76,253,200,69,25,22,102,152,151,97,81,233,177,88,67,139,51,225,146,12,75,50,46,205,148,195,101,25,150,102,88,150,9,151,103,88,94,106,172,208,224,138,76,184,50,195,202,140,171,52,184,58,195,170,12,171,51,97,167,177,104,243,121,187,129,206,12,183,251,110,250,153,142,214,100,194,181,102,164,117,186,201,186,76,184,62,195,250,102,98,67,134,13,198,98,99,134,181,25,54,106,139,159,126,248,81,109,211,43,217,166,76,253,157,155,51,179,146,109,202,176,57,211,43,217,150,76,125,207,173,25,182,100,216,154,253,135,219,50,108,203,254,107,37,219,158,169,118,159,59,244,39,237,200,132,59,51,236,204,184,43,83,223,177,43,195,174,12,219,51,116,149,242,187,53,180,59,19,238,201,176,39,227,222,76,253,139,251,50,236,205,176,47,19,238,207,176,191,148,63,160,193,3,153,240,96,134,131,25,15,105,240,112,134,67,25,14,103,194,35,70,190,221,231,157,6,142,100,184,83,202,31,205,116,116,52,19,30,51,35,29,215,77,142,103,194,19,25,78,52,19,39,51,156,52,242,221,25,142,101,232,110,125,133,167,50,213,225,243,180,46,57,157,9,207,100,56,147,241,172,54,63,151,225,108,134,83,25,206,149,22,231,53,116,62,19,94,200,112,33,227,197,76,47,90,151,50,92,204,112,41,19,94,206,112,185,212,184,162,201,43,153,240,106,134,171,25,175,25,242,122,134,107,25,174,103,194,27,198,163,195,231,221,6,110,100,184,91,122,244,100,58,234,201,132,55,205,80,183,116,151,91,153,240,118,134,219,205,196,157,12,119,140,199,221,12,55,51,220,109,121,220,203,84,167,207,251,186,228,126,38,124,144,225,65,198,135,153,250,19,31,101,120,152,225,94,134,71,165,199,99,13,61,206,132,79,50,60,201,248,52,211,15,246,103,25,158,102,120,150,9,159,103,120,94,122,244,106,178,55,19,190,200,240,34,227,75,67,190,202,240,50,195,171,76,248,218,120,116,250,188,215,192,235,12,247,74,143,55,153,142,222,100,194,183,102,168,119,186,203,187,76,248,62,195,251,102,226,67,134,15,198,227,99,134,183,25,62,182,60,62,101,170,203,231,103,93,242,57,19,126,201,240,37,227,215,76,253,153,223,50,124,205,240,41,195,183,210,163,45,199,15,104,203,133,253,115,244,207,57,32,87,93,223,115,96,142,1,57,6,230,194,65,57,6,229,77,143,193,154,28,156,11,135,228,24,146,115,168,33,135,229,24,154,99,88,46,28,158,155,71,142,207,251,13,12,207,113,191,244,24,145,235,104,68,46,28,153,235,161,70,233,46,163,114,225,232,28,163,155,137,49,57,198,228,218,99,108,142,145,57,198,230,255,235,209,158,171,110,159,227,116,201,184,92,56,62,199,248,156,19,114,245,23,78,204,49,33,71,123,142,137,121,211,99,146,134,38,229,194,201,57,38,231,156,146,155,127,58,55,199,148,28,83,115,225,180,28,211,74,143,233,154,156,158,11,103,228,152,145,115,166,33,103,229,152,153,99,86,46,156,109,60,186,125,62,104,96,118,142,7,165,199,156,92,71,115,114,97,135,25,106,174,238,50,55,23,206,203,49,175,153,152,159,99,190,241,88,144,163,35,199,130,150,199,194,92,245,248,92,164,75,22,229,194,197,57,22,231,92,146,171,31,184,52,199,146,28,11,115,44,45,61,150,105,104,89,46,92,158,99,121,206,21,185,154,249,61,87,230,88,145,99,101,46,92,149,99,85,233,177,90,147,171,115,97,103,142,206,156,107,12,185,54,199,154,28,107,115,225,58,227,209,227,243,97,3,235,114,60,236,251,75,253,92,71,235,115,225,6,51,212,70,221,101,99,46,220,148,99,83,51,177,57,199,102,227,177,37,199,134,28,91,90,30,91,115,213,235,115,155,46,217,150,11,183,231,216,158,115,71,174,254,202,157,57,118,228,216,154,99,103,233,177,75,67,187,114,97,87,142,174,156,187,115,189,160,236,201,177,59,199,158,92,184,55,199,222,210,99,159,38,247,229,194,253,57,246,231,60,96,200,131,57,14,228,56,152,11,15,25,143,94,159,143,26,56,148,227,81,223,95,234,231,58,58,156,11,143,152,161,142,234,46,71,115,225,177,28,199,154,137,227,57,142,27,143,19,57,142,228,56,209,242,56,153,171,182,174,239,216,173,107,186,115,225,169,28,167,114,158,206,213,223,120,38,199,233,28,39,115,156,41,69,206,106,232,108,46,60,151,227,92,206,243,185,222,80,46,228,56,159,227,66,46,188,152,227,98,41,114,73,147,151,114,225,229,28,151,115,94,49,228,213,28,87,114,92,205,133,215,140,72,91,192,199,13,92,203,241,184,239,172,159,235,232,122,46,188,209,156,170,71,183,233,201,133,55,115,220,108,102,110,229,184,101,76,110,231,184,145,227,182,54,249,233,207,63,170,189,250,177,115,71,143,125,55,55,143,157,59,57,238,230,250,177,115,47,87,223,243,126,142,123,57,238,231,255,225,131,28,15,242,255,249,254,167,63,149,143,157,135,185,106,239,250,142,143,244,71,61,202,133,143,115,60,206,249,36,87,223,241,105,142,39,57,30,230,120,90,254,7,120,166,161,103,185,240,121,142,231,57,123,115,245,47,190,200,209,155,227,69,46,124,153,227,101,233,255,74,131,175,114,225,235,28,175,115,190,209,224,219,28,111,114,188,205,133,239,140,126,123,192,39,13,188,203,241,164,212,127,159,235,232,125,46,252,208,156,233,163,238,242,49,23,126,202,241,169,153,249,156,227,179,209,255,146,227,67,142,47,173,47,242,107,174,58,186,190,227,55,93,243,45,23,182,21,104,43,216,191,80,223,115,64,129,254,5,190,230,24,80,52,61,6,22,248,1,3,11,225,160,2,131,10,14,46,244,243,100,72,129,193,5,134,20,194,161,5,134,22,77,145,97,154,28,86,8,135,23,24,94,112,132,33,71,22,24,81,96,100,33,28,85,152,39,79,192,167,13,140,42,240,180,52,25,93,232,104,116,33,28,83,152,169,198,234,54,99,11,97,123,129,246,102,102,92,129,113,133,54,25,95,96,76,129,241,197,255,154,76,40,84,103,215,119,156,168,107,38,22,194,73,5,38,21,156,92,168,63,113,74,129,201,5,38,20,152,82,154,76,213,208,212,66,56,173,192,180,130,211,11,253,68,153,81,96,122,129,25,133,112,102,129,153,165,201,44,77,206,42,132,179,11,204,46,56,199,144,29,5,230,20,232,40,132,115,141,73,103,192,103,13,204,45,240,172,52,153,87,232,104,94,33,156,223,156,106,129,110,179,160,16,46,44,176,176,153,89,84,96,145,49,89,92,96,126,129,197,45,147,37,133,234,234,250,142,75,117,205,210,66,184,172,192,178,130,203,11,245,103,174,40,176,188,192,146,2,43,74,147,149,26,90,89,8,87,21,88,85,112,117,161,159,41,157,5,86,23,232,44,132,107,10,172,41,77,214,106,114,109,33,92,87,96,93,193,245,134,220,80,96,125,129,13,133,112,163,49,233,10,248,188,129,141,5,158,151,38,155,10,29,109,42,132,155,155,83,109,209,109,182,20,194,173,5,182,54,51,219,10,108,51,38,219,11,108,46,176,189,101,178,163,80,221,93,223,113,167,174,217,89,8,119,21,216,85,176,171,80,127,225,238,2,93,5,118,20,216,93,154,236,209,208,158,66,184,183,192,222,130,251,10,243,23,252,5,246,21,216,95,8,15,20,56,80,154,28,212,228,193,66,120,168,192,161,130,135,13,121,164,192,225,2,71,10,225,81,99,210,29,176,183,129,163,5,122,75,147,99,133,142,142,21,194,227,205,169,78,232,54,39,10,225,201,2,39,155,153,238,2,221,198,228,84,129,227,5,78,181,76,78,23,170,167,235,59,158,209,53,103,10,225,217,2,103,11,158,43,212,15,60,95,224,92,129,211,5,206,151,38,23,52,116,161,16,94,44,112,177,224,165,66,255,255,248,114,129,75,5,46,23,194,43,5,174,148,38,87,53,121,181,16,94,43,112,173,224,117,67,222,40,112,189,192,141,66,216,99,76,122,2,190,104,160,167,192,139,210,228,102,161,163,155,133,240,86,115,170,219,186,205,237,66,120,167,192,157,102,230,110,129,187,198,228,94,129,91,5,238,181,76,238,23,170,183,235,59,62,208,53,15,10,225,195,2,15,11,62,42,212,95,249,184,192,163,2,247,11,60,46,77,158,104,232,73,33,124,90,224,105,193,103,133,254,31,242,243,2,207,10,60,47,132,189,5,122,75,147,23,154,124,81,8,95,22,120,89,240,149,33,95,23,120,85,224,117,33,124,99,76,122,3,190,108,224,77,129,151,165,201,219,66,71,111,11,225,187,230,84,239,117,155,247,133,240,67,129,15,205,204,199,2,31,141,201,167,2,239,10,124,210,38,255,187,253,127,46,84,219,238,239,248,69,151,125,41,132,95,11,124,45,248,173,80,223,177,173,31,190,21,248,92,160,173,95,83,166,127,63,252,128,254,253,132,3,250,97,64,63,14,236,167,254,197,65,253,48,176,31,6,245,19,14,238,135,193,253,154,46,67,52,56,164,159,112,104,63,12,237,199,97,26,28,222,15,195,250,97,120,63,225,136,126,230,41,164,248,170,129,17,253,240,170,84,25,217,79,71,35,251,9,71,245,51,51,141,214,93,70,247,19,142,233,135,49,205,204,216,126,24,219,79,171,180,247,195,168,126,104,239,247,191,95,202,184,126,170,125,247,119,28,175,107,198,247,19,78,232,135,9,253,56,177,159,250,158,147,250,97,98,63,140,235,135,73,165,199,100,13,77,238,247,255,103,231,222,255,115,122,247,252,240,91,215,58,159,239,236,61,78,123,127,166,125,189,59,187,237,244,52,157,158,86,79,211,118,174,182,233,89,59,61,159,207,231,107,122,152,204,76,167,211,153,233,76,16,4,65,16,4,65,16,4,65,16,4,65,16,4,65,16,4,65,16,4,65,16,4,193,247,241,94,247,189,50,247,159,240,253,161,143,253,75,174,107,191,222,175,247,157,39,86,88,51,143,173,104,197,52,172,152,70,181,211,100,141,73,43,167,161,118,26,86,78,83,180,106,26,86,21,190,145,213,156,92,61,77,81,221,52,212,77,163,53,105,114,237,52,172,153,134,181,211,20,173,75,191,147,106,73,35,63,135,117,211,48,82,248,78,234,167,241,169,126,154,162,245,249,79,181,129,107,54,76,83,180,113,26,54,230,255,155,134,105,104,72,191,147,77,211,176,126,26,54,241,119,226,203,97,155,54,79,227,127,101,242,192,150,105,138,26,167,97,2,26,167,97,243,180,220,217,220,15,160,229,90,34,89,127,124,2,109,229,192,214,105,138,182,77,195,182,105,63,154,16,251,135,158,105,90,227,247,127,235,39,38,144,46,219,127,156,12,232,48,126,158,76,152,63,154,0,19,90,34,250,126,0,19,34,17,253,63,144,19,200,146,26,217,82,35,7,22,156,50,114,197,207,254,191,255,252,191,255,252,255,253,63,112,195,9,82,35,15,54,60,69,62,252,82,10,164,70,33,2,132,101,20,33,74,95,107,200,242,163,237,19,40,150,223,81,78,14,30,105,159,64,37,136,145,67,73,238,116,48,193,151,26,125,15,62,190,167,232,251,248,126,41,253,152,212,104,34,126,12,19,203,104,18,38,21,141,79,150,223,209,148,252,248,84,76,198,20,76,205,198,127,128,239,227,7,138,126,136,31,150,210,119,82,163,31,199,119,248,241,50,250,29,248,29,69,227,191,83,126,71,200,143,19,126,39,0,202,198,127,23,126,136,223,165,232,39,240,19,165,244,35,169,209,239,198,143,240,187,203,232,247,224,247,20,141,255,94,249,29,253,100,126,252,247,225,247,226,39,241,251,178,241,223,143,159,192,239,87,244,7,240,7,74,233,15,74,141,254,16,254,32,254,80,25,253,20,126,170,104,252,15,203,239,232,167,243,227,127,4,127,24,63,141,63,146,141,255,81,252,1,252,81,69,127,12,127,172,148,254,184,212,232,79,224,143,227,79,148,81,130,164,104,252,79,202,239,232,79,229,199,255,52,254,36,254,20,254,116,54,254,103,240,199,240,103,20,253,89,252,217,82,250,25,169,209,159,195,207,224,207,149,209,159,199,159,47,26,255,11,242,59,250,217,252,184,196,95,192,207,66,102,227,127,17,127,22,127,81,209,95,194,95,42,165,191,44,53,42,197,95,70,105,25,253,21,252,149,162,241,191,42,191,163,191,150,31,255,235,248,171,248,107,248,235,217,248,223,192,95,194,223,80,244,55,241,55,75,137,255,126,61,13,127,11,211,202,232,111,227,111,23,141,255,29,249,29,253,92,126,252,239,226,239,224,231,240,119,179,241,191,135,191,137,191,167,232,239,227,239,151,210,63,144,26,253,67,252,3,252,195,50,250,71,248,71,69,227,255,88,126,71,255,36,63,254,79,241,143,241,79,240,79,179,241,127,134,191,143,127,166,232,159,227,159,151,210,191,144,26,253,75,252,11,252,203,50,250,87,248,87,69,227,255,90,126,71,255,38,63,254,111,241,175,241,111,240,111,179,241,127,135,127,142,127,167,232,223,227,223,151,210,127,144,26,253,71,252,7,252,199,50,250,79,248,79,69,227,255,89,126,71,255,37,63,254,95,241,159,241,95,240,95,179,113,133,127,15,165,232,231,241,243,165,244,223,164,70,255,29,255,13,255,189,140,254,7,254,71,209,248,255,148,223,209,47,228,199,203,240,63,241,11,40,203,198,127,17,63,143,95,84,244,75,248,165,82,250,101,169,209,255,194,47,227,127,149,209,175,224,87,138,198,255,183,252,142,126,53,63,254,127,240,191,241,171,248,63,217,248,175,225,151,240,107,138,126,29,191,94,74,191,33,53,250,191,248,13,252,223,50,250,77,252,102,209,248,111,201,239,168,92,203,207,79,215,240,91,40,215,48,93,203,42,102,104,248,117,204,208,20,205,212,48,83,43,165,10,77,106,52,75,67,133,134,89,90,25,205,214,48,91,43,42,155,163,201,239,168,178,208,54,87,195,28,13,149,26,230,142,215,205,227,22,204,211,20,205,215,48,95,43,165,42,238,91,160,161,74,195,2,173,140,22,106,88,88,220,183,136,251,170,11,125,139,53,44,210,80,173,97,241,120,223,18,110,193,18,77,209,82,13,75,181,82,170,225,190,101,26,106,52,44,211,202,104,185,134,229,197,125,43,184,175,182,208,183,82,195,10,13,181,26,86,142,247,173,226,22,172,210,20,173,214,176,90,43,165,58,238,91,163,161,78,195,26,173,140,214,106,88,91,220,183,142,251,234,11,125,235,53,172,211,80,175,97,253,120,223,6,110,193,6,77,209,70,13,27,181,82,106,224,190,77,26,26,52,108,210,202,104,179,134,205,197,125,91,184,175,177,208,183,85,195,22,13,141,26,182,142,247,109,227,22,108,211,20,109,215,176,93,43,165,38,238,219,161,161,73,195,14,173,140,118,106,216,89,220,183,139,251,154,11,125,187,53,236,210,208,172,97,247,120,223,30,110,193,30,77,209,94,13,123,181,82,106,225,190,125,26,90,52,236,211,202,104,191,134,253,197,125,7,184,175,181,208,119,80,195,1,13,173,26,14,142,247,29,226,22,28,210,20,29,214,112,88,43,165,54,238,59,162,161,77,195,17,173,140,142,106,56,90,220,119,140,251,218,11,125,199,53,28,211,208,174,225,248,120,223,9,110,193,9,77,209,73,13,39,181,82,234,224,190,83,26,58,52,156,210,202,232,180,134,211,197,125,103,184,175,179,208,119,86,195,25,13,157,26,206,142,247,157,227,22,156,211,20,157,215,112,94,43,165,46,238,187,160,161,75,195,5,173,140,46,106,184,88,220,119,137,251,186,11,125,151,53,92,210,208,173,225,242,120,223,21,110,193,21,77,209,85,13,87,181,82,234,225,190,107,26,122,52,92,211,202,232,186,134,235,197,125,55,184,175,183,208,119,83,195,13,13,189,26,110,142,247,221,226,22,220,210,20,221,214,112,91,43,165,62,238,187,163,161,79,195,29,173,140,238,106,184,91,220,119,143,251,250,11,125,247,53,220,211,208,175,225,254,120,223,3,110,193,3,77,209,67,13,15,181,82,26,224,190,71,26,6,52,60,210,202,232,177,134,199,197,125,79,184,111,176,208,247,84,195,19,13,131,26,158,142,247,61,227,22,60,211,20,61,215,240,92,43,165,33,238,123,161,97,72,195,11,173,140,94,106,120,89,220,247,138,251,134,11,125,175,53,188,210,48,172,225,245,120,223,27,110,193,27,77,209,91,13,111,181,82,26,225,190,119,26,70,52,188,211,202,232,189,134,247,197,125,31,184,111,180,208,247,81,195,7,13,163,26,62,142,247,125,226,22,124,210,20,125,214,240,89,43,165,49,238,251,162,97,76,195,23,173,140,190,106,248,90,220,247,141,251,202,69,225,233,39,240,77,67,185,192,116,49,254,248,19,248,172,97,134,80,52,83,96,166,40,165,10,193,207,63,129,10,129,89,162,140,102,11,204,22,197,207,63,193,207,191,66,223,92,129,57,2,149,2,115,199,251,230,113,11,230,9,69,243,5,230,139,82,170,226,190,5,2,85,2,11,68,25,45,20,88,88,220,183,136,251,170,11,125,139,5,22,9,84,11,44,30,239,91,194,45,88,34,20,45,21,88,42,74,169,134,251,150,9,212,8,44,19,101,180,92,96,121,113,223,10,238,171,45,244,173,20,88,33,80,43,176,114,188,111,21,183,96,149,80,180,90,96,181,40,165,58,238,91,35,80,39,176,70,148,209,90,129,181,197,125,235,184,175,190,208,183,94,96,157,64,189,192,250,241,190,13,220,130,13,66,209,70,129,141,162,148,26,184,111,147,64,131,192,38,81,70,155,5,54,23,247,109,225,190,198,66,223,86,129,45,2,141,2,91,199,251,182,113,11,182,9,69,219,5,182,139,82,106,226,190,29,2,77,2,59,68,25,237,20,216,89,220,183,139,251,154,11,125,187,5,118,9,52,11,236,30,239,219,195,45,216,35,20,237,21,216,43,74,169,133,251,246,9,180,8,236,19,101,180,95,96,127,113,223,1,238,107,45,244,29,20,56,32,208,42,112,112,188,239,16,183,224,144,80,116,88,224,176,40,165,54,238,59,34,208,38,112,68,148,209,81,129,163,197,125,199,184,175,189,208,119,92,224,152,64,187,192,241,241,190,19,220,130,19,66,209,73,129,147,162,148,58,184,239,148,64,135,192,41,81,70,167,5,78,23,247,157,225,190,206,66,223,89,129,51,2,157,2,103,199,251,206,113,11,206,9,69,231,5,206,139,82,234,226,190,11,2,93,2,23,68,25,93,20,184,88,220,119,137,251,186,11,125,151,5,46,9,116,11,92,30,239,187,194,45,184,34,20,93,21,184,42,74,169,135,251,174,9,244,8,92,19,101,116,93,224,122,113,223,13,238,235,45,244,221,20,184,33,208,43,112,115,188,239,22,183,224,150,80,116,91,224,182,40,165,62,238,187,35,208,39,112,71,148,209,93,129,187,197,125,247,184,175,191,208,119,95,224,158,64,191,192,253,241,190,7,220,130,7,66,209,67,129,135,162,148,6,184,239,145,192,128,192,35,81,70,143,5,30,23,247,61,225,190,193,66,223,83,129,39,2,131,2,79,199,251,158,113,11,158,9,69,207,5,158,139,82,26,226,190,23,2,67,2,47,68,25,189,20,120,89,220,247,138,251,134,11,125,175,5,94,9,12,11,188,30,239,123,195,45,120,35,20,189,21,120,43,74,105,132,251,222,9,140,8,188,19,101,244,94,224,125,113,223,7,238,27,45,244,125,20,248,32,48,42,240,113,188,239,19,183,224,147,80,244,89,224,179,40,165,49,238,251,34,48,38,240,69,148,209,87,129,175,197,125,223,184,175,92,47,60,255,116,124,19,40,215,49,93,31,127,254,233,248,44,48,67,87,52,83,199,76,189,148,42,116,126,254,233,168,208,49,75,47,163,217,58,102,235,197,207,63,157,159,127,133,190,185,58,230,232,168,212,49,119,188,111,30,183,96,158,174,104,190,142,249,122,41,85,113,223,2,29,85,58,22,232,101,180,80,199,194,226,190,69,220,87,93,232,91,172,99,145,142,106,29,139,199,251,150,112,11,150,232,138,150,234,88,170,151,82,13,247,45,211,81,163,99,153,94,70,203,117,44,47,238,91,193,125,181,133,190,149,58,86,232,168,213,177,114,188,111,21,183,96,149,174,104,181,142,213,122,41,213,113,223,26,29,117,58,214,232,101,180,86,199,218,226,190,117,220,87,95,232,91,175,99,157,142,122,29,235,199,251,54,112,11,54,232,138,54,234,216,168,151,82,3,247,109,210,209,160,99,147,94,70,155,117,108,46,238,219,194,125,141,133,190,173,58,182,232,104,212,177,117,188,111,27,183,96,155,174,104,187,142,237,122,41,53,113,223,14,29,77,58,118,232,101,180,83,199,206,226,190,93,220,215,92,232,219,173,99,151,142,102,29,187,199,251,246,112,11,246,232,138,246,234,216,171,151,82,11,247,237,211,209,162,99,159,94,70,251,117,236,47,238,59,192,125,173,133,190,131,58,14,232,104,213,113,112,188,239,16,183,224,144,174,232,176,142,195,122,41,181,113,223,17,29,109,58,142,232,101,116,84,199,209,226,190,99,220,215,94,232,59,174,227,152,142,118,29,199,199,251,78,112,11,78,232,138,78,234,56,169,151,82,7,247,157,210,209,161,227,148,94,70,167,117,156,46,238,59,195,125,157,133,190,179,58,206,232,232,212,113,118,188,239,28,183,224,156,174,232,188,142,243,122,41,117,113,223,5,29,93,58,46,232,101,116,81,199,197,226,190,75,220,215,93,232,187,172,227,146,142,110,29,151,199,251,174,112,11,174,232,138,174,234,184,170,151,82,15,247,93,211,209,163,227,154,94,70,215,117,92,47,238,187,193,125,189,133,190,155,58,110,232,232,213,113,115,188,239,22,183,224,150,174,232,182,142,219,122,41,245,113,223,29,29,125,58,238,232,101,116,87,199,221,226,190,123,220,215,95,232,187,175,227,158,142,126,29,247,199,251,30,112,11,30,232,138,30,234,120,168,151,210,0,247,61,210,49,160,227,145,94,70,143,117,60,46,238,123,194,125,131,133,190,167,58,158,232,24,212,241,116,188,239,25,183,224,153,174,232,185,142,231,122,41,13,113,223,11,29,67,58,94,232,101,244,82,199,203,226,190,87,220,55,92,232,123,173,227,149,142,97,29,175,199,251,222,112,11,222,232,138,222,234,120,171,151,210,8,247,189,211,49,162,227,157,94,70,239,117,188,47,238,251,192,125,163,133,190,143,58,62,232,24,213,241,113,188,239,19,183,224,147,174,232,179,142,207,122,41,141,113,223,23,29,99,58,190,232,101,244,85,199,215,226,190,111,220,87,110,20,158,127,6,190,233,40,55,48,221,24,127,254,25,248,172,99,134,161,104,166,129,153,70,41,85,24,252,252,51,80,97,96,150,81,70,179,13,204,54,138,159,127,6,63,255,10,125,115,13,204,49,80,105,96,238,120,223,60,110,193,60,67,209,124,3,243,141,82,170,226,190,5,6,170,12,44,48,202,104,161,129,133,197,125,139,184,175,186,208,183,216,192,34,3,213,6,22,143,247,45,225,22,44,49,20,45,53,176,212,40,165,26,238,91,102,160,198,192,50,163,140,150,27,88,94,220,183,130,251,106,11,125,43,13,172,48,80,107,96,229,120,223,42,110,193,42,67,209,106,3,171,141,82,170,227,190,53,6,234,12,172,49,202,104,173,129,181,197,125,235,184,175,190,208,183,222,192,58,3,245,6,214,143,247,109,224,22,108,48,20,109,52,176,209,40,165,6,238,219,100,160,193,192,38,163,140,54,27,216,92,220,183,133,251,26,11,125,91,13,108,49,208,104,96,235,120,223,54,110,193,54,67,209,118,3,219,141,82,106,226,190,29,6,154,12,236,48,202,104,167,129,157,197,125,187,184,175,185,208,183,219,192,46,3,205,6,118,143,247,237,225,22,236,49,20,237,53,176,215,40,165,22,238,219,103,160,197,192,62,163,140,246,27,216,95,220,119,128,251,90,11,125,7,13,28,48,208,106,224,224,120,223,33,110,193,33,67,209,97,3,135,141,82,106,227,190,35,6,218,12,28,49,202,232,168,129,163,197,125,199,184,175,189,208,119,220,192,49,3,237,6,142,143,247,157,224,22,156,48,20,157,52,112,210,40,165,14,238,59,101,160,195,192,41,163,140,78,27,56,93,220,119,134,251,58,11,125,103,13,156,49,208,105,224,236,120,223,57,110,193,57,67,209,121,3,231,141,82,234,226,190,11,6,186,12,92,48,202,232,162,129,139,197,125,151,184,175,187,208,119,217,192,37,3,221,6,46,143,247,93,225,22,92,49,20,93,53,112,213,40,165,30,238,187,102,160,199,192,53,163,140,174,27,184,94,220,119,131,251,122,11,125,55,13,220,48,208,107,224,230,120,223,45,110,193,45,67,209,109,3,183,141,82,234,227,190,59,6,250,12,220,49,202,232,174,129,187,197,125,247,184,175,191,208,119,223,192,61,3,253,6,238,143,247,61,224,22,60,48,20,61,52,240,208,40,165,1,238,123,100,96,192,192,35,163,140,30,27,120,92,220,247,132,251,6,11,125,79,13,60,49,48,104,224,233,120,223,51,110,193,51,67,209,115,3,207,141,82,26,226,190,23,6,134,12,188,48,202,232,165,129,151,197,125,175,184,111,184,208,247,218,192,43,3,195,6,94,143,247,189,225,22,188,49,20,189,53,240,214,40,165,17,238,123,103,96,196,192,59,163,140,222,27,120,95,220,247,129,251,70,11,125,31,13,124,48,48,106,224,227,120,223,39,110,193,39,67,209,103,3,159,141,82,26,227,190,47,6,198,12,124,49,202,232,171,129,175,197,125,223,184,175,220,44,60,255,76,124,51,80,110,98,186,57,254,252,51,241,217,192,12,83,209,76,19,51,205,82,170,48,249,249,103,162,194,196,44,179,140,102,155,152,109,22,63,255,76,126,254,21,250,230,154,152,99,162,210,196,220,241,190,121,220,130,121,166,162,249,38,230,155,165,84,197,125,11,76,84,153,88,96,150,209,66,19,11,139,251,22,113,95,117,161,111,177,137,69,38,170,77,44,30,239,91,194,45,88,98,42,90,106,98,169,89,74,53,220,183,204,68,141,137,101,102,25,45,55,177,188,184,111,5,247,213,22,250,86,154,88,97,162,214,196,202,241,190,85,220,130,85,166,162,213,38,86,155,165,84,199,125,107,76,212,153,88,99,150,209,90,19,107,139,251,214,113,95,125,161,111,189,137,117,38,234,77,172,47,244,53,79,164,13,38,76,108,48,21,109,52,177,209,164,6,83,214,241,220,38,83,134,180,217,68,131,9,129,77,38,54,243,182,220,77,87,54,78,164,45,60,178,197,84,212,104,162,209,164,173,38,247,108,227,203,109,166,162,237,38,182,155,212,100,98,171,137,38,51,183,216,129,249,147,162,113,34,237,224,15,186,211,148,19,104,151,137,93,38,118,154,216,97,254,144,154,77,52,155,165,233,255,3,79,254,19,239,230,79,188,167,240,137,247,154,216,109,98,143,137,189,249,79,92,232,106,49,249,139,166,137,180,143,183,182,152,137,24,252,1,76,236,51,19,49,244,131,194,77,253,196,194,77,195,68,185,149,139,247,155,210,167,3,166,28,140,169,149,199,90,77,69,7,77,89,63,145,14,241,241,144,169,232,176,137,131,38,14,155,216,111,226,128,9,45,215,100,240,162,161,152,218,210,141,131,49,29,49,101,127,76,71,121,226,168,169,232,152,137,99,38,142,152,104,51,115,245,233,183,218,31,83,123,26,30,136,233,56,199,142,155,137,104,227,15,211,110,38,162,117,34,255,87,173,19,233,132,137,19,133,239,187,240,189,156,228,240,73,51,17,3,63,200,127,243,29,166,28,142,233,20,95,159,50,21,157,54,113,154,3,232,48,115,187,61,30,26,142,233,76,186,106,36,166,78,142,117,154,137,168,227,85,103,204,68,212,78,12,182,106,190,12,232,172,9,13,103,77,69,231,76,217,194,18,231,249,23,183,203,148,221,49,93,224,177,11,166,162,139,169,196,37,62,94,50,21,117,155,184,104,162,219,196,121,19,93,38,206,153,5,138,158,152,46,167,43,187,99,186,98,202,206,152,174,242,200,85,83,81,143,137,30,19,87,76,92,206,40,58,99,186,150,134,187,98,186,206,177,235,102,34,58,248,243,93,51,19,209,158,82,180,79,164,27,38,110,20,81,180,77,164,94,14,247,154,137,24,46,80,220,52,101,111,76,183,248,250,150,169,232,182,137,219,28,192,205,140,162,55,166,190,116,85,95,76,119,56,118,39,163,232,203,83,108,214,124,57,133,238,50,197,93,83,209,61,83,30,103,138,126,83,70,116,223,148,173,49,61,224,177,7,166,162,135,41,197,0,31,7,76,69,143,76,60,52,241,200,68,191,137,251,38,238,101,20,109,49,61,78,87,182,198,244,196,148,205,49,13,242,200,160,169,232,169,137,167,38,158,152,120,156,81,52,199,244,44,13,183,196,244,156,99,207,205,68,116,241,231,123,102,38,162,51,165,232,156,72,67,38,134,138,40,58,38,210,11,14,191,48,19,49,82,160,120,105,202,246,152,94,241,245,43,83,209,176,137,97,14,224,101,70,209,30,211,235,116,85,71,76,111,56,246,38,163,120,157,167,104,208,124,249,35,122,203,20,111,77,69,35,166,188,196,20,239,248,119,197,123,83,214,199,244,129,199,62,152,138,70,83,138,143,124,252,104,42,250,100,98,212,196,39,19,239,76,188,55,49,146,81,52,196,244,57,93,89,31,211,152,41,107,99,250,194,35,95,76,69,95,77,124,53,49,102,226,115,70,81,27,211,183,52,92,23,83,185,5,19,229,86,34,122,248,243,125,51,19,209,157,82,116,79,164,233,22,166,91,191,77,209,53,145,102,112,120,134,149,136,209,2,197,76,75,54,198,84,193,215,21,150,162,89,22,102,89,152,97,97,166,85,160,104,140,105,182,149,254,241,138,105,14,199,230,88,5,138,217,86,74,177,65,243,229,79,83,165,5,13,149,150,162,185,150,236,99,138,121,150,116,105,190,37,43,99,170,226,177,42,75,209,2,139,41,22,242,113,161,165,104,145,133,5,22,22,89,152,103,97,190,133,185,86,129,162,42,166,234,116,101,101,76,139,45,89,30,211,18,30,89,98,41,90,106,97,169,133,197,22,170,173,2,69,121,76,53,105,184,34,166,101,28,91,102,37,162,143,63,95,141,149,136,222,148,162,119,34,45,183,176,188,136,162,103,34,173,224,240,10,43,17,99,5,138,90,75,86,199,180,146,175,87,90,138,86,89,88,101,97,133,133,218,140,162,58,166,213,233,170,154,152,234,56,86,151,81,172,206,83,212,107,190,252,25,90,195,20,107,44,69,107,45,249,40,253,1,98,201,239,83,189,37,135,35,90,207,99,235,45,69,27,82,138,141,124,220,104,41,106,176,176,193,66,131,133,117,22,234,45,172,205,40,70,34,218,148,174,28,142,104,179,37,7,35,218,194,35,91,44,69,141,22,26,45,108,182,176,41,163,24,140,104,107,26,30,138,104,27,199,182,89,137,24,224,207,183,213,74,68,127,74,209,63,145,182,91,216,94,68,209,55,145,154,56,220,100,37,162,252,135,121,138,29,150,28,141,104,39,95,239,180,20,237,178,176,203,66,147,133,29,25,197,104,68,205,233,170,177,136,118,115,108,119,70,209,156,167,88,171,249,178,115,2,237,97,139,61,150,162,189,150,28,101,139,22,75,254,144,246,89,178,55,162,253,60,183,223,82,116,32,181,104,229,99,171,165,232,160,133,3,22,14,90,104,177,176,207,194,222,204,162,47,162,67,233,206,222,136,14,91,178,59,162,54,30,105,179,20,29,177,112,196,194,97,11,135,50,139,238,136,142,166,225,158,136,142,113,236,152,149,136,33,254,128,71,173,68,12,166,22,131,19,169,221,66,123,145,197,192,68,58,206,225,227,86,34,42,10,22,39,44,217,31,209,73,190,62,105,41,234,176,208,97,225,184,133,19,153,69,127,68,167,210,85,3,17,157,230,216,233,204,226,84,222,162,78,243,101,207,4,58,195,22,103,44,69,157,150,92,122,140,255,238,110,201,28,157,179,100,123,68,231,121,238,188,165,168,43,181,184,192,199,11,150,162,139,22,186,44,92,180,112,214,194,57,11,157,153,69,71,68,151,210,157,237,17,117,91,178,53,162,203,60,114,217,82,116,197,194,21,11,221,22,46,101,22,173,17,93,77,195,109,17,245,112,172,199,74,196,8,127,192,171,86,34,134,83,139,225,137,116,205,194,181,34,139,161,137,116,157,195,215,173,68,84,22,44,110,88,178,51,162,94,190,238,181,20,221,180,112,211,194,117,11,55,50,139,206,136,110,165,171,186,34,186,205,177,219,153,197,173,188,197,42,205,151,253,19,168,143,45,250,44,69,119,44,185,145,45,238,90,50,162,123,150,108,140,168,159,231,250,45,69,247,83,139,7,124,124,96,41,122,104,225,190,133,135,22,238,90,184,103,225,78,102,209,20,209,64,186,179,49,162,71,150,172,143,232,49,143,60,182,20,61,177,240,196,194,35,11,3,153,69,125,68,131,105,184,33,162,167,28,123,202,79,0,254,128,131,252,84,76,45,70,39,210,51,11,207,138,44,70,38,210,115,14,63,183,18,81,85,176,24,178,100,115,68,47,248,250,133,165,232,165,133,151,22,158,91,24,202,44,154,35,122,149,174,106,137,104,152,99,195,153,197,171,188,69,173,230,203,161,9,244,154,45,94,91,138,222,88,114,55,91,188,181,164,69,35,150,172,142,232,29,207,189,179,20,189,79,45,62,240,241,131,165,104,212,194,123,11,163,22,222,90,24,177,240,38,179,168,137,232,99,186,179,58,162,79,150,172,140,232,51,143,124,182,20,141,89,24,179,240,201,194,199,204,162,50,162,47,105,184,42,162,175,28,251,202,191,237,39,241,79,29,126,22,76,74,31,175,147,232,155,133,111,69,22,99,19,169,220,230,31,57,118,34,170,11,22,211,109,89,27,209,12,190,158,97,43,154,105,99,166,141,114,27,211,237,130,69,109,68,21,118,250,3,43,162,89,28,155,101,23,44,42,236,212,98,185,230,203,209,9,52,219,134,134,217,182,162,57,182,60,192,22,149,182,244,104,174,45,71,67,154,199,115,243,108,69,243,109,182,168,226,99,149,173,104,129,141,249,54,22,216,168,180,49,215,198,28,187,96,49,22,210,194,116,231,104,72,139,108,57,28,82,53,143,84,219,138,22,219,88,108,99,145,141,133,118,193,98,56,164,37,105,120,36,164,165,28,91,106,39,162,138,45,150,216,137,168,76,45,42,39,81,141,141,26,251,183,45,42,38,209,50,14,47,179,19,81,83,176,88,110,203,242,136,86,240,245,10,91,81,173,141,90,27,203,108,44,207,44,202,35,90,153,174,170,136,104,21,199,86,101,22,43,243,22,53,154,47,43,52,90,205,22,171,109,69,117,182,60,206,22,107,108,249,99,180,214,150,253,33,173,227,185,117,182,162,250,212,98,61,31,215,219,138,54,216,168,183,177,193,198,26,27,107,109,212,101,22,3,33,109,76,119,246,135,212,96,203,222,144,54,241,200,38,91,209,102,27,155,109,52,216,216,152,89,244,134,180,37,13,247,133,212,200,177,70,254,246,216,98,11,255,154,167,22,213,147,104,171,141,173,69,22,85,147,104,27,135,183,241,55,81,176,216,110,203,193,144,154,248,186,201,86,180,195,198,14,27,219,108,108,207,44,6,67,218,153,174,26,10,105,23,199,118,101,22,59,243,22,75,52,95,86,107,212,204,22,205,182,162,221,182,188,198,22,123,108,249,67,218,107,203,206,144,90,120,174,197,86,180,47,181,216,207,199,253,182,162,3,54,246,217,56,96,99,143,141,189,54,118,103,22,93,33,181,166,59,59,67,58,104,203,246,144,14,241,200,33,91,209,97,27,135,109,28,180,209,154,89,180,135,212,150,134,59,66,58,194,177,35,252,1,217,162,141,63,96,106,81,59,137,142,218,56,90,100,81,51,137,142,113,248,24,135,11,22,237,182,236,14,233,56,95,31,183,21,157,176,113,194,198,49,27,237,153,69,119,72,39,211,85,61,33,117,112,172,35,179,56,153,183,168,214,124,89,167,209,41,182,56,101,43,58,109,203,97,182,56,99,203,169,212,105,203,230,144,206,242,220,89,91,209,185,212,226,60,31,207,219,138,186,108,156,179,209,101,227,140,141,78,27,167,51,139,150,144,46,164,59,155,67,186,104,203,198,144,46,241,200,37,91,81,183,141,110,27,23,109,92,200,44,26,67,186,156,134,155,66,186,194,177,43,118,34,26,216,226,178,157,136,250,212,162,126,18,93,181,113,181,200,162,110,18,245,112,184,135,51,5,139,107,182,108,13,233,58,95,95,183,21,221,176,113,195,70,143,141,107,153,69,107,72,189,233,170,182,144,110,114,236,102,102,209,155,183,88,168,249,178,81,163,91,108,113,203,86,116,219,150,115,219,219,39,80,159,45,137,238,216,178,54,164,187,60,119,215,86,116,47,181,232,231,99,191,173,232,190,141,123,54,238,219,232,179,113,199,198,237,204,162,46,164,7,233,206,218,144,30,218,178,58,164,1,30,25,176,21,61,178,241,200,198,67,27,15,50,139,234,144,30,167,225,154,144,158,112,236,137,157,136,38,182,120,108,39,162,49,181,104,156,68,131,54,6,139,44,26,38,209,83,14,63,101,184,130,197,51,91,214,135,244,156,175,159,219,138,134,108,12,217,120,106,227,89,102,81,31,210,139,116,85,67,72,47,57,246,50,179,120,145,183,168,210,124,217,162,209,43,182,120,101,43,26,182,229,54,182,120,109,203,239,211,27,91,150,135,244,150,231,222,218,138,70,82,139,119,124,124,103,43,122,111,99,196,198,123,27,175,109,188,177,49,156,89,84,132,244,33,221,89,30,210,168,45,71,3,250,200,35,31,109,69,159,108,124,178,49,106,227,67,102,49,26,208,231,52,60,22,208,24,199,198,236,68,180,176,197,103,59,17,205,169,69,243,36,250,98,227,75,145,69,211,36,250,202,225,175,236,85,176,248,102,203,202,144,202,29,254,241,226,40,154,238,96,186,131,175,54,190,101,22,149,33,205,72,119,86,133,52,147,99,51,157,130,197,12,39,181,152,167,249,178,93,163,10,7,26,42,28,69,179,28,121,132,45,102,59,50,166,57,142,28,12,168,146,231,42,29,69,115,29,182,152,199,199,121,142,162,249,14,230,58,152,239,96,182,131,57,14,102,57,217,171,139,128,170,242,127,191,14,104,129,35,251,3,90,200,35,11,29,69,139,28,44,114,176,192,65,149,147,189,186,8,168,58,253,98,32,160,197,28,91,236,36,162,141,45,170,157,68,180,166,22,173,147,104,137,131,37,206,111,91,180,76,162,165,28,94,234,36,162,169,96,81,227,200,225,128,150,241,245,50,71,209,114,7,203,29,44,117,80,227,100,175,46,2,90,145,174,26,9,168,150,99,181,153,197,138,188,69,165,230,203,46,141,86,178,197,74,71,209,42,71,118,177,197,106,71,218,84,231,200,238,128,214,240,220,26,71,209,218,212,98,29,31,215,57,138,234,29,172,117,80,239,96,181,131,58,7,171,50,139,158,128,214,231,255,126,29,208,6,71,118,6,180,145,71,54,58,138,26,28,52,56,216,224,96,125,102,209,25,208,166,244,139,174,128,54,115,108,179,147,136,14,182,216,228,36,162,61,181,104,159,68,91,28,108,41,178,104,155,68,141,28,110,116,18,209,92,176,216,234,200,222,128,182,241,245,54,71,209,118,7,219,29,52,58,216,154,89,244,6,212,148,174,234,11,104,7,199,118,100,22,77,121,139,217,154,47,123,53,218,201,22,59,29,69,187,28,121,149,45,154,29,233,208,110,71,182,6,180,135,231,246,56,138,246,166,22,45,124,108,113,20,237,115,176,215,193,62,7,205,14,118,59,216,149,89,180,5,180,63,255,247,235,128,14,56,178,57,160,86,30,105,117,20,29,116,112,208,193,1,7,251,51,139,230,128,14,165,95,180,4,116,152,99,135,157,68,116,177,197,33,39,17,157,169,69,231,36,106,115,208,86,100,209,49,137,142,112,248,136,147,136,150,130,197,81,71,182,7,116,140,175,143,57,138,218,29,180,59,56,226,224,104,102,209,30,208,241,116,85,71,64,39,56,118,34,179,56,158,183,168,208,124,57,160,209,73,182,56,233,40,234,112,228,109,182,56,229,200,239,209,105,71,214,7,116,134,231,206,56,138,58,83,139,179,124,60,235,40,58,231,160,211,193,57,7,167,28,156,118,208,145,89,52,4,116,62,255,247,235,128,186,28,89,27,208,5,30,185,224,40,186,232,224,162,131,46,7,231,51,139,218,128,46,165,95,212,5,212,205,177,110,39,17,61,108,113,201,73,68,119,106,209,61,137,46,59,184,92,100,209,53,137,174,112,248,10,255,57,42,88,92,117,100,99,64,61,124,221,227,40,186,230,224,154,131,43,14,174,102,22,141,1,93,79,87,53,5,116,131,99,55,50,139,235,121,139,25,154,159,254,207,254,176,69,175,163,232,166,35,95,176,197,45,126,94,220,118,100,101,64,125,60,215,231,40,186,147,90,220,229,227,93,71,209,61,7,119,28,220,115,112,203,193,109,7,55,51,139,170,128,250,243,127,191,14,232,190,35,203,3,122,192,35,15,28,69,15,29,60,116,112,223,65,127,102,81,30,208,64,250,69,69,64,143,56,246,200,73,68,31,91,12,56,137,232,77,45,122,39,209,99,7,143,139,44,122,38,209,19,14,63,225,135,75,193,98,208,145,213,1,61,229,235,167,142,162,103,14,158,57,120,226,96,48,179,168,14,232,121,186,170,38,160,33,142,13,101,22,207,243,22,229,154,47,199,52,122,193,22,47,28,69,47,29,57,198,22,175,28,233,211,176,35,135,125,122,205,115,175,29,69,111,82,139,183,124,124,235,40,26,113,240,198,193,136,131,87,14,134,29,188,204,44,70,124,122,151,255,251,181,79,239,29,57,232,211,7,30,249,224,40,26,117,48,234,224,189,131,119,153,197,160,79,31,211,47,134,124,250,196,177,79,78,34,6,216,226,163,147,136,254,212,162,127,18,125,118,240,185,200,162,111,18,141,113,120,140,159,41,5,139,47,142,28,245,233,43,95,127,117,20,125,115,240,205,193,152,131,47,153,197,168,79,229,110,250,35,203,167,233,46,76,76,119,11,22,229,110,106,241,155,190,172,20,52,195,133,134,25,174,162,153,174,156,115,188,125,2,85,184,178,132,102,185,178,215,167,217,60,54,219,85,52,199,101,138,74,62,86,186,138,230,186,152,227,98,174,139,10,23,179,92,204,116,179,215,23,62,205,75,87,246,250,52,223,149,221,62,85,241,72,149,171,104,129,139,5,46,230,187,152,231,102,175,47,124,90,152,134,123,124,90,196,177,69,110,34,134,152,98,161,155,136,193,148,98,112,18,85,187,168,118,139,94,95,76,162,197,28,94,236,38,162,163,64,177,196,149,253,62,45,229,235,165,174,162,26,23,53,46,22,187,88,226,102,175,47,124,90,150,174,26,240,105,57,199,150,103,20,203,242,20,191,225,203,26,65,43,152,98,133,171,168,214,149,181,76,177,210,149,83,104,149,43,219,125,90,205,99,171,93,69,117,41,197,26,62,174,113,21,173,117,81,231,98,173,139,149,46,86,185,168,205,40,58,124,90,151,174,108,247,169,222,149,173,62,173,231,145,245,174,162,13,46,54,184,168,119,177,46,163,104,245,105,99,26,110,243,169,129,99,13,110,34,70,152,98,163,155,136,225,148,98,120,18,109,114,177,169,136,98,104,18,109,230,240,102,55,17,157,5,138,45,174,236,244,169,145,175,27,93,69,91,93,108,117,177,217,197,150,140,162,211,167,109,233,170,46,159,182,115,108,123,70,177,45,79,241,107,126,250,191,129,196,20,77,174,162,29,174,108,102,138,157,174,180,105,151,43,27,125,106,230,177,102,87,209,238,148,98,15,31,247,184,138,246,186,216,237,98,175,139,157,46,118,185,216,145,81,52,249,212,146,174,108,244,105,159,43,235,125,218,207,35,251,93,69,7,92,28,112,177,207,69,75,70,81,239,83,107,26,110,240,233,32,199,14,186,137,24,99,138,86,55,17,163,41,197,232,36,58,228,226,80,17,197,200,36,58,204,225,195,110,34,186,10,20,109,174,108,246,233,8,95,31,113,21,29,117,113,212,197,97,23,109,25,69,179,79,199,210,85,45,62,181,115,172,61,163,56,150,167,248,85,95,54,9,58,206,20,199,93,69,39,92,121,128,41,78,186,50,71,29,174,172,246,233,20,143,157,114,21,157,78,41,206,240,241,140,171,168,211,197,105,23,157,46,78,186,232,112,113,34,163,168,241,233,108,186,178,218,167,115,174,172,244,233,60,143,156,119,21,117,185,232,114,113,206,197,217,140,162,210,167,11,105,184,202,167,139,28,187,232,38,162,98,50,255,204,113,19,81,62,57,125,182,78,166,75,46,46,21,81,140,77,162,110,14,119,187,137,232,46,80,92,118,101,173,79,87,248,250,138,171,232,170,139,171,46,186,93,92,206,40,106,125,234,73,87,213,249,116,141,99,215,50,138,158,60,197,175,248,178,85,208,117,166,184,238,42,186,225,202,51,76,209,235,202,136,110,186,114,212,163,91,60,118,203,85,116,59,165,232,227,99,159,171,232,142,139,219,46,238,184,232,117,113,211,197,141,140,98,204,163,187,233,202,81,143,238,185,114,216,163,126,30,233,119,21,221,119,113,223,197,61,23,119,51,138,97,143,30,164,225,17,143,30,114,236,161,155,136,42,166,120,224,38,162,50,165,168,156,76,3,46,6,138,40,42,38,211,35,14,63,114,19,209,83,160,120,236,202,114,159,158,240,245,19,87,209,160,139,65,23,143,92,60,206,40,202,125,122,154,174,170,240,233,25,199,158,101,20,79,243,20,191,236,203,14,65,207,153,226,185,171,104,200,149,215,152,226,133,43,39,209,75,87,246,123,244,138,199,94,185,138,134,83,138,215,124,124,237,42,122,227,98,216,197,27,23,47,92,188,116,49,148,81,12,120,244,54,93,217,239,209,136,43,123,61,122,199,35,239,92,69,239,93,188,119,49,226,226,109,70,209,235,209,135,52,220,231,209,40,199,70,221,68,212,48,197,7,55,17,213,41,69,245,100,250,232,226,99,17,69,213,100,250,196,225,79,110,34,122,11,20,159,93,57,232,209,24,95,143,185,138,190,184,248,226,226,147,139,207,25,197,160,71,95,211,85,67,30,125,227,216,183,140,226,107,158,226,23,125,217,45,168,220,131,134,114,79,209,116,79,62,103,138,25,158,180,104,166,39,59,61,170,240,96,162,194,83,52,203,99,138,217,124,156,237,41,154,227,97,150,135,57,30,102,120,152,233,97,186,151,189,184,240,168,50,255,156,242,104,174,39,219,61,154,199,35,243,60,69,243,61,204,247,48,215,67,165,151,189,184,240,168,42,13,119,120,180,128,99,11,188,68,212,49,69,149,151,136,218,148,162,118,50,45,244,176,208,43,122,113,49,153,22,113,120,145,151,136,190,2,69,181,39,187,61,90,204,215,139,61,69,75,60,44,241,176,200,67,181,151,189,184,240,104,105,250,69,143,71,53,28,171,241,10,20,75,189,148,226,23,124,217,39,104,25,83,44,243,20,45,247,228,107,166,88,225,201,136,106,61,217,236,209,74,30,91,233,41,90,149,82,172,230,227,106,79,81,157,135,85,30,234,60,172,240,80,235,97,121,70,209,226,209,154,252,115,202,163,181,158,108,244,104,29,143,172,243,20,213,123,168,247,176,214,195,154,140,162,209,163,245,105,184,201,163,13,28,219,224,37,162,129,41,214,123,137,168,79,41,234,39,211,70,15,27,139,40,234,38,83,3,135,27,188,68,244,23,40,54,121,178,213,163,205,124,189,217,83,180,197,195,22,15,13,30,54,101,20,173,30,53,166,95,180,121,180,149,99,91,51,138,198,60,197,255,240,229,160,160,109,76,177,205,83,180,221,147,223,152,162,201,147,62,237,240,100,173,71,59,121,108,167,167,104,87,74,209,204,199,102,79,209,110,15,187,60,236,246,208,228,97,135,135,237,25,69,157,71,123,242,207,41,143,246,122,178,218,163,22,30,105,241,20,237,243,176,207,195,94,15,123,50,138,106,143,246,167,225,26,143,14,112,236,128,151,136,38,166,216,239,37,162,49,165,104,156,76,173,30,90,139,40,26,38,211,65,14,31,244,18,49,80,160,56,228,201,122,143,14,243,245,97,79,81,155,135,54,15,7,61,28,202,40,234,61,58,146,126,209,224,209,81,142,29,205,40,142,228,41,254,155,47,71,4,29,99,138,99,158,162,118,79,206,59,209,62,129,142,243,239,138,19,158,44,247,232,36,143,157,244,20,117,164,20,167,248,120,202,83,116,218,67,135,135,211,30,142,123,56,225,161,61,163,168,240,232,76,254,57,229,81,167,39,71,93,58,203,35,103,61,69,231,60,156,243,208,233,225,76,70,49,234,210,249,52,60,230,82,23,199,186,188,68,180,48,197,121,47,17,205,41,69,243,100,186,224,225,66,17,69,211,100,186,200,225,139,94,34,6,11,20,151,60,89,233,81,55,95,119,123,138,46,123,184,236,225,162,135,75,25,69,165,71,87,210,47,170,60,186,202,177,171,25,197,149,60,133,242,101,185,78,61,76,209,227,41,186,230,201,90,166,184,238,201,73,116,195,147,131,46,245,242,88,175,167,232,102,74,113,139,143,183,60,69,183,61,220,244,112,219,195,117,15,55,60,92,203,40,134,92,234,203,63,167,92,186,227,201,126,151,238,242,200,93,79,209,61,15,247,60,220,241,208,151,81,244,187,212,159,134,7,92,186,207,177,251,94,34,218,152,162,223,75,68,107,74,209,58,153,30,120,120,80,68,209,50,153,30,114,248,161,151,136,161,2,197,128,39,135,93,122,196,215,143,60,69,143,61,60,246,240,208,195,64,70,49,236,210,147,244,139,17,151,6,57,54,152,81,60,201,83,252,23,95,86,233,244,148,41,158,122,138,158,121,114,39,83,60,247,228,247,105,200,147,221,46,189,224,177,23,158,162,151,41,197,43,62,190,242,20,13,123,120,233,97,216,195,115,15,67,30,158,101,20,61,46,189,206,63,167,92,122,227,201,78,151,222,242,200,91,79,209,136,135,17,15,111,60,188,206,40,58,93,122,151,134,187,92,122,207,177,247,94,34,58,152,226,157,151,136,246,148,162,125,50,125,240,240,161,136,162,109,50,141,114,120,212,75,196,112,129,226,163,39,123,93,250,196,215,159,60,69,159,61,124,246,48,234,225,99,70,209,235,210,88,250,69,159,75,95,56,246,37,163,24,203,83,252,39,95,214,234,244,149,41,190,122,138,190,121,242,56,83,148,251,242,199,104,186,47,91,93,154,225,195,196,12,95,209,76,159,41,42,248,88,225,43,154,229,99,166,143,89,62,202,125,76,247,241,45,163,104,115,105,118,250,129,91,93,154,227,203,102,151,42,121,164,210,87,52,215,199,92,31,115,124,204,246,179,87,22,46,205,203,255,66,187,52,159,99,243,253,68,116,49,197,60,63,17,157,41,69,231,100,170,242,81,229,23,189,178,152,76,11,56,188,192,79,196,72,129,98,161,47,219,93,90,196,215,139,124,69,213,62,170,125,44,240,177,208,207,94,89,184,180,56,63,237,210,18,142,45,241,11,20,139,253,148,226,63,248,178,65,167,165,62,52,44,245,21,213,248,242,26,83,44,243,229,119,180,220,151,245,46,173,224,177,21,190,162,218,148,98,37,31,87,250,138,86,249,168,245,177,202,199,50,31,203,125,212,248,217,27,11,151,86,167,43,235,93,170,243,101,173,75,107,120,100,141,175,104,173,143,181,62,234,124,172,206,40,106,93,90,151,255,161,224,82,61,199,234,253,68,244,48,197,58,63,17,221,41,69,247,100,90,239,99,125,17,69,215,100,218,192,225,13,126,34,70,11,20,27,125,217,232,82,3,95,55,248,138,54,249,216,228,99,131,143,141,25,69,163,75,155,243,79,26,151,182,112,108,75,70,177,57,79,241,239,124,217,172,83,35,83,52,250,138,182,250,242,53,83,108,243,101,76,219,125,89,233,82,19,143,53,249,138,118,164,20,59,249,184,211,87,180,203,199,14,31,187,124,108,243,177,221,199,214,140,162,202,165,230,116,101,165,75,187,125,89,238,210,30,30,217,227,43,218,235,99,175,143,221,62,154,51,138,114,151,90,242,127,129,116,105,31,199,246,249,137,232,99,138,22,63,17,189,41,69,239,100,218,239,99,127,17,69,207,100,58,192,225,3,126,34,198,10,20,173,190,172,118,233,32,95,31,244,21,29,242,113,200,199,1,31,173,25,69,181,75,135,243,127,43,113,169,141,99,109,25,197,225,60,197,191,241,101,155,78,71,152,226,136,175,232,168,47,203,79,182,79,160,99,252,7,164,221,151,195,14,29,231,177,227,190,162,19,41,197,73,62,158,244,21,117,248,56,225,163,195,199,49,31,237,62,142,102,20,35,14,157,74,87,14,59,116,218,151,131,14,157,225,145,51,190,162,78,31,157,62,78,251,56,149,81,12,58,116,54,255,143,77,135,206,113,236,156,159,136,1,166,56,235,39,162,63,165,232,159,76,231,125,156,47,162,232,155,76,93,28,238,242,19,81,254,93,158,226,130,47,71,29,186,200,215,23,125,69,151,124,92,242,209,229,227,66,70,49,234,80,119,254,95,48,14,93,230,216,229,140,162,59,79,241,175,124,217,169,211,21,166,184,226,43,186,234,203,26,166,232,241,229,100,186,230,203,94,135,174,243,216,117,95,209,141,148,162,151,143,189,190,162,155,62,110,248,184,233,163,199,199,53,31,87,51,138,62,135,110,165,43,123,29,186,237,203,110,135,250,120,164,207,87,116,199,199,29,31,183,125,220,202,40,186,29,186,155,255,133,118,232,30,199,238,249,137,24,98,138,187,126,34,6,83,138,193,201,212,239,163,191,136,98,96,50,221,231,240,125,63,17,21,5,138,7,190,236,119,232,33,95,63,244,21,13,248,24,240,113,223,199,131,140,162,223,161,71,249,105,135,30,115,236,113,70,241,40,79,241,47,124,217,163,211,19,166,120,226,43,26,244,229,118,166,120,234,75,135,158,249,178,221,161,231,60,246,220,87,52,148,82,188,224,227,11,95,209,75,31,67,62,94,250,120,234,227,153,143,193,140,162,195,161,87,233,202,118,135,134,125,217,234,208,107,30,121,237,43,122,227,227,141,143,97,31,175,50,138,86,135,222,230,127,40,56,52,194,177,17,126,18,50,197,91,63,17,195,41,197,240,100,122,231,227,93,17,197,208,100,122,207,225,247,126,34,42,11,20,31,124,217,233,208,40,95,143,250,138,62,250,248,232,227,189,143,15,25,69,167,67,159,242,79,26,135,62,115,236,115,70,241,41,79,241,207,124,217,175,211,24,83,140,249,138,190,248,114,47,83,124,245,165,65,223,124,217,232,80,121,0,19,229,129,162,233,1,83,204,224,227,140,64,209,204,0,211,3,204,12,240,213,199,55,31,95,50,138,38,135,42,130,244,57,229,208,172,64,214,59,52,155,71,102,7,138,230,4,152,19,96,86,128,138,32,123,95,225,80,101,26,110,112,104,46,199,230,6,137,24,99,138,202,32,17,163,41,197,232,100,154,23,96,94,80,244,190,98,50,205,231,240,252,32,17,85,5,138,170,64,54,59,180,128,175,23,4,138,22,6,88,24,96,126,128,170,32,123,95,225,208,162,116,85,139,67,213,28,171,14,10,20,139,130,148,226,159,248,114,72,167,197,1,52,44,14,20,45,9,228,1,166,88,26,200,136,106,2,89,237,208,50,30,91,22,40,90,158,82,172,224,227,138,64,81,109,128,229,1,106,3,44,13,80,19,96,73,144,189,175,112,104,101,186,178,218,161,85,129,172,116,104,53,143,172,14,20,213,5,168,11,176,42,192,202,140,162,210,161,53,105,184,202,161,181,28,91,27,36,162,98,10,255,196,9,18,81,62,37,125,180,78,161,117,1,214,21,81,140,77,166,122,14,215,7,137,168,46,80,172,15,100,173,67,27,248,122,67,160,104,99,128,141,1,234,3,172,207,40,106,29,106,72,87,213,57,180,137,99,155,50,138,134,60,197,63,242,229,168,78,155,153,98,115,160,104,75,32,79,49,69,99,32,167,208,214,64,142,218,180,141,199,182,5,138,182,167,20,77,124,108,10,20,237,8,176,61,192,142,0,141,1,182,6,216,146,81,140,217,180,51,93,57,106,211,174,64,14,219,212,204,35,205,129,162,221,1,118,7,216,21,96,103,70,49,108,211,158,52,60,98,211,94,142,237,229,95,104,166,216,19,36,162,50,165,168,156,66,45,1,90,138,40,42,166,208,62,14,239,11,18,81,83,160,216,31,200,114,135,14,240,245,129,64,81,107,128,214,0,251,2,236,207,40,202,29,58,152,174,170,112,232,16,199,14,101,20,7,243,20,255,192,151,21,6,29,102,138,195,129,162,182,64,222,97,138,35,129,244,233,104,32,251,109,58,198,99,199,2,69,237,41,197,113,62,30,15,20,157,8,208,30,224,68,128,35,1,142,6,104,203,40,6,108,58,153,174,236,183,169,35,144,189,54,157,226,145,83,129,162,211,1,78,7,232,8,112,50,163,232,181,233,76,26,238,179,169,147,99,157,252,221,49,197,25,254,21,79,41,170,167,208,217,0,103,139,40,170,166,208,57,14,159,227,239,161,64,113,62,144,131,54,117,241,117,87,160,232,66,128,11,1,206,5,56,159,81,12,218,116,49,93,53,100,211,37,142,93,202,40,46,230,41,254,158,47,171,13,234,102,138,238,64,209,229,64,14,50,197,149,64,6,116,53,144,157,54,245,240,88,79,160,232,90,74,113,157,143,215,3,69,55,2,92,11,112,35,192,149,0,87,3,92,206,40,186,108,234,77,87,118,218,116,51,144,237,54,221,226,145,91,129,162,219,1,110,7,184,25,160,55,163,104,183,169,47,13,119,216,116,135,99,119,248,243,49,69,31,127,190,148,162,118,10,221,13,112,183,136,162,102,10,221,227,240,61,14,23,40,250,3,217,109,211,125,190,190,31,40,122,16,224,65,128,123,1,250,51,138,110,155,30,166,171,122,108,26,224,216,64,70,241,48,79,241,115,190,172,51,232,17,83,60,10,20,61,14,228,8,83,60,9,228,143,211,96,32,155,109,122,202,99,79,3,69,207,82,138,231,124,124,30,40,26,10,240,44,192,80,128,39,1,6,3,60,206,40,90,108,122,145,174,108,182,233,101,32,27,109,122,197,35,175,2,69,195,1,134,3,188,12,240,34,163,104,180,233,117,26,110,178,233,13,199,222,4,137,104,96,138,215,65,34,234,83,138,250,41,244,54,192,219,34,138,186,41,52,194,225,17,206,20,40,222,5,178,213,166,247,124,253,62,80,244,33,192,135,0,35,1,222,101,20,173,54,141,166,171,218,108,250,200,177,143,25,197,104,158,226,111,251,178,209,160,79,76,241,41,80,244,57,144,139,59,218,39,208,88,32,29,250,18,200,90,155,190,242,216,215,64,209,183,148,162,60,228,31,40,161,162,233,33,190,5,152,30,98,44,192,151,0,159,51,138,58,155,102,132,233,175,166,77,51,67,89,109,83,5,143,84,132,138,102,133,152,21,98,102,136,25,97,246,190,194,166,217,105,184,198,166,57,28,155,19,38,162,137,41,102,135,137,104,76,41,26,167,80,101,136,202,176,232,125,197,20,154,203,225,185,97,34,26,10,20,243,66,89,111,211,124,190,158,31,42,170,10,81,21,98,110,136,121,97,246,190,194,166,5,233,170,6,155,22,114,108,97,88,160,88,16,166,20,127,203,151,45,6,45,10,161,97,81,168,168,58,148,43,153,98,113,40,191,71,75,66,89,110,211,82,30,91,26,42,170,9,153,98,25,31,151,133,138,150,135,168,9,177,60,196,226,16,75,66,84,135,217,251,10,155,86,164,43,203,109,170,13,229,168,69,43,121,100,101,168,104,85,136,85,33,106,67,172,200,40,70,45,90,157,134,199,44,170,227,88,93,152,136,22,166,88,29,38,162,57,165,104,158,66,107,66,172,41,162,104,154,66,107,57,188,150,185,10,20,235,66,89,105,83,61,95,215,135,138,214,135,88,31,98,109,136,117,25,69,165,77,27,210,85,85,54,109,228,216,198,140,98,67,158,226,111,248,178,221,160,6,166,104,8,21,109,10,229,118,166,216,28,202,144,182,132,114,208,162,70,30,107,12,21,109,77,41,182,241,113,91,168,104,123,136,173,33,182,135,216,28,98,75,136,77,25,197,144,69,77,233,202,65,139,118,132,178,223,162,157,60,178,51,84,180,43,196,174,16,59,66,52,101,20,253,22,53,167,225,1,139,118,115,108,119,152,136,54,166,104,14,19,209,154,82,180,78,161,61,33,246,20,81,180,76,161,189,28,222,203,191,133,10,20,45,161,28,182,104,31,95,239,11,21,237,15,177,63,196,222,16,45,25,197,176,69,7,210,85,35,22,181,114,172,53,163,56,144,167,248,107,190,236,50,232,32,83,28,12,21,29,10,101,43,83,28,14,229,143,168,45,148,221,22,29,225,177,35,161,162,163,41,197,49,62,30,11,21,181,135,56,26,162,61,196,225,16,109,33,14,101,20,61,22,29,79,87,118,91,116,34,148,157,22,157,228,145,147,161,162,142,16,29,33,78,132,56,158,81,116,90,116,42,13,119,89,116,154,99,167,195,68,116,48,197,169,48,17,237,41,69,251,20,58,19,226,76,17,69,219,20,234,228,112,39,255,206,41,80,156,13,101,175,69,231,248,250,92,168,232,124,136,243,33,58,67,156,205,40,122,45,234,74,87,245,89,116,129,99,23,50,138,174,60,197,95,241,101,175,65,23,153,226,98,168,232,82,40,251,152,162,59,148,63,69,151,67,217,106,209,21,30,187,18,42,186,154,82,244,240,177,39,84,116,45,196,213,16,215,66,116,135,184,28,226,82,70,209,102,209,245,116,101,171,69,55,66,217,108,81,47,143,244,134,138,110,134,184,25,226,70,136,235,25,69,179,69,183,210,112,139,69,183,57,118,59,76,68,23,83,220,10,19,209,153,82,116,78,161,190,16,125,69,20,29,83,232,14,135,239,240,159,166,2,197,221,80,182,91,116,143,175,239,133,138,250,67,244,135,184,19,226,110,70,209,110,209,253,116,85,135,69,15,56,246,32,163,184,159,167,248,203,190,28,48,232,33,83,60,12,21,13,132,114,222,169,246,9,244,40,148,38,61,14,101,189,69,79,120,236,73,168,104,48,165,120,202,199,167,161,162,103,33,6,67,60,11,241,40,196,227,16,3,25,69,131,69,207,211,149,245,22,13,133,178,214,162,23,60,242,34,84,244,50,196,203,16,67,33,158,103,20,181,22,189,74,195,117,22,13,115,108,56,76,68,15,83,188,10,19,209,157,82,116,79,161,215,33,94,23,81,116,77,161,55,28,126,195,127,136,10,20,111,67,217,104,209,8,95,143,132,138,222,133,120,23,226,77,136,183,25,69,163,69,239,211,85,77,22,125,224,216,135,140,226,125,158,226,47,250,114,216,160,81,166,24,13,21,125,12,229,34,166,248,20,202,239,211,231,80,86,90,52,198,99,99,161,162,47,41,197,87,62,126,13,21,125,11,241,37,196,183,16,159,66,124,14,241,49,163,168,178,168,60,74,159,83,22,77,143,100,185,69,51,34,254,103,75,164,104,102,132,153,17,166,71,40,143,178,247,21,22,85,164,225,10,139,102,113,108,86,148,136,62,166,168,136,18,209,155,82,244,78,161,217,17,102,71,69,239,43,166,208,28,14,207,137,18,209,86,160,168,140,100,181,69,115,249,122,110,164,104,94,132,121,17,230,68,168,140,178,247,21,22,205,79,87,213,88,84,197,177,170,168,64,49,63,74,41,126,214,151,99,6,45,136,160,97,65,164,104,97,36,55,48,197,162,72,126,143,170,35,57,108,210,98,30,91,28,41,90,18,49,197,82,62,46,141,20,213,68,88,18,161,38,194,162,8,213,17,22,70,217,251,10,147,150,165,43,135,77,90,30,201,65,147,86,240,200,138,72,81,109,132,218,8,203,35,44,203,40,6,77,90,153,134,135,76,90,197,177,85,81,34,6,152,98,101,148,136,254,148,162,127,10,173,142,176,186,136,162,111,10,213,113,184,46,74,68,123,129,98,77,36,71,77,90,203,215,107,35,69,235,34,172,139,80,23,97,77,70,49,106,82,125,186,106,204,164,245,28,91,159,81,212,231,41,254,188,47,43,77,218,192,20,27,34,69,27,35,217,194,20,13,145,52,105,83,36,123,77,218,204,99,155,35,69,91,82,138,70,62,54,70,138,182,70,216,18,97,107,132,134,8,155,34,108,204,40,250,76,218,150,174,236,53,105,123,36,187,77,106,226,145,166,72,209,142,8,59,34,108,143,176,45,163,232,54,105,103,26,238,49,105,23,199,118,69,137,24,98,138,157,81,34,6,83,138,193,41,212,28,161,185,136,98,96,10,237,230,240,238,40,17,29,5,138,61,145,236,55,105,47,95,239,141,20,181,68,104,137,176,59,194,158,140,162,223,164,125,233,170,1,147,246,115,108,127,70,177,47,79,241,51,190,172,49,233,0,83,28,136,20,181,70,242,32,83,28,140,164,79,135,34,217,110,210,97,30,59,28,41,106,75,41,142,240,241,72,164,232,104,132,182,8,71,35,28,140,112,40,66,107,70,209,97,210,177,116,101,187,73,237,145,108,53,233,56,143,28,143,20,157,136,112,34,66,123,132,99,25,69,171,73,39,211,112,155,73,29,28,235,136,18,49,194,20,39,163,68,12,167,20,195,83,232,84,132,83,69,20,67,83,232,52,135,79,71,137,232,44,80,156,137,100,167,73,157,124,221,25,41,58,27,225,108,132,211,17,206,100,20,157,38,157,75,87,117,153,116,158,99,231,51,138,115,121,138,63,227,203,122,147,186,152,162,43,82,116,33,146,29,76,113,49,146,19,233,82,36,27,77,234,230,177,238,72,209,229,148,226,10,31,175,68,138,174,70,184,28,225,106,132,139,17,46,69,184,144,81,52,153,212,147,174,108,52,233,90,196,237,215,121,228,122,164,232,70,132,27,17,174,69,232,201,40,234,77,234,77,195,13,38,221,228,216,205,40,17,99,76,209,27,37,98,52,165,24,157,66,183,34,220,42,162,24,153,66,183,57,124,59,74,68,87,129,162,47,146,205,38,221,225,235,59,145,162,187,17,238,70,184,29,161,47,163,104,54,233,94,186,170,197,164,126,142,245,103,20,247,242,20,127,202,151,77,38,221,103,138,251,145,162,7,145,188,201,20,15,249,89,49,16,201,106,147,30,241,216,163,72,209,227,148,226,9,31,159,68,138,6,35,60,142,48,24,225,97,132,129,8,15,50,138,26,147,158,166,43,171,77,122,22,241,31,191,231,60,242,60,82,52,20,97,40,194,179,8,79,51,138,74,147,94,164,225,42,147,94,114,236,101,148,136,138,169,252,19,39,74,68,249,212,244,209,58,149,94,69,120,85,68,49,54,133,134,57,60,28,37,162,187,64,241,58,146,181,38,189,225,235,55,145,162,183,17,222,70,24,142,240,58,163,168,53,105,36,93,85,103,210,59,142,189,203,40,70,242,20,137,207,191,133,223,51,197,251,72,209,135,72,62,103,138,209,72,254,144,62,70,114,212,160,79,60,246,41,82,244,57,165,24,227,227,88,164,232,75,132,207,17,190,68,24,141,240,49,194,135,140,98,204,160,175,233,202,81,131,190,69,252,243,169,60,230,127,182,196,138,166,199,152,30,227,91,132,175,25,197,176,65,51,226,244,23,218,160,153,28,155,25,39,162,138,41,102,196,137,168,76,41,42,167,82,69,140,138,184,232,125,197,84,154,197,225,89,113,34,122,10,20,179,99,89,110,210,28,190,158,19,43,170,140,81,25,99,86,140,217,113,246,190,194,164,185,233,170,10,147,230,113,108,94,92,160,152,27,167,20,127,220,151,29,38,205,143,161,97,126,172,168,42,150,179,79,183,79,160,5,177,12,105,97,44,251,13,90,196,99,139,98,69,213,49,83,44,230,227,226,88,209,146,24,213,49,150,196,88,16,99,97,140,170,56,123,95,97,208,210,116,101,191,65,53,49,255,5,110,25,143,44,139,21,45,143,177,60,70,77,140,165,113,246,190,194,160,21,105,184,207,160,90,142,213,198,137,168,97,138,21,113,34,170,83,138,234,169,180,50,198,202,34,138,170,169,180,138,195,171,226,68,244,22,40,86,199,114,208,160,58,190,174,139,21,173,137,177,38,198,170,24,171,51,138,65,131,214,166,171,134,12,90,199,177,117,25,197,218,60,197,31,245,249,25,95,207,20,245,177,162,245,177,92,202,20,27,98,57,153,54,198,178,211,160,6,30,107,136,21,109,74,41,54,243,113,115,172,104,75,140,77,49,182,196,216,16,99,99,140,245,25,69,151,65,141,233,202,78,131,182,198,252,47,156,109,60,178,45,86,180,61,198,246,24,91,99,52,102,20,237,6,53,165,225,14,131,118,112,108,7,127,62,166,104,226,207,151,82,212,78,165,157,49,118,22,81,212,76,165,93,28,222,21,39,162,175,64,209,28,203,110,131,118,243,245,238,88,209,158,24,123,98,236,138,209,156,81,116,27,180,55,93,213,99,80,11,199,90,50,138,189,121,138,159,246,101,159,73,251,152,98,95,172,104,127,44,183,49,197,129,88,26,212,26,203,102,131,14,242,216,193,88,209,161,148,226,48,31,15,199,138,218,98,28,138,209,22,227,64,140,214,24,251,51,138,22,131,142,164,43,155,13,58,26,203,70,131,142,241,200,177,88,81,123,140,246,24,71,99,28,201,40,26,13,58,158,134,155,12,58,193,177,19,113,34,26,152,226,120,156,136,250,148,162,126,42,157,140,113,178,136,162,110,42,117,112,184,35,78,68,127,129,226,84,44,91,13,58,205,215,167,99,69,103,98,156,137,209,17,227,84,70,209,106,80,103,186,170,205,160,179,28,59,155,81,116,230,41,126,202,231,191,4,157,99,138,115,177,162,243,177,220,201,20,93,177,204,209,133,88,214,26,116,145,199,46,198,138,46,165,20,221,124,236,142,21,93,142,113,41,198,229,24,93,49,46,196,56,159,81,212,25,116,37,93,89,107,208,213,88,86,27,212,195,35,61,177,162,107,49,174,197,184,26,227,74,70,81,109,208,245,52,92,99,208,13,142,221,136,19,209,196,20,215,227,68,52,166,20,141,83,169,55,70,111,17,69,195,84,186,201,225,155,113,34,6,10,20,183,98,89,111,208,109,190,190,29,43,234,139,209,23,227,102,140,91,25,69,189,65,119,210,85,13,6,221,229,216,221,140,226,78,158,226,15,250,114,196,164,123,76,113,47,86,212,31,203,163,76,113,63,150,14,61,136,101,185,65,15,121,236,97,172,104,32,165,120,196,199,71,177,162,199,49,6,98,60,142,113,63,198,131,24,253,25,69,133,65,79,210,149,229,6,13,198,114,84,167,167,60,242,52,86,244,44,198,179,24,131,49,158,100,20,163,58,61,79,195,99,58,13,113,108,40,78,68,11,83,60,143,19,209,156,82,52,79,165,23,49,94,20,81,52,77,165,151,28,126,25,39,98,176,64,241,42,150,149,6,13,243,245,112,172,232,117,140,215,49,94,198,120,149,81,84,26,244,38,93,85,101,208,91,142,189,205,40,222,228,41,126,191,207,255,74,24,97,138,145,88,209,187,88,158,102,138,247,252,187,226,67,44,7,117,26,229,177,209,88,209,199,148,226,19,31,63,197,138,62,199,248,24,227,115,140,247,49,62,196,120,151,81,12,233,52,150,174,28,212,233,75,44,251,117,250,202,35,95,99,69,223,98,124,139,241,37,198,88,70,209,175,83,121,46,125,216,234,52,61,7,19,211,115,137,104,99,138,242,92,34,90,83,138,214,169,52,35,135,25,185,162,247,21,83,105,38,135,103,230,18,49,84,160,168,200,201,97,157,102,241,245,172,156,162,217,57,204,206,97,102,14,21,185,236,125,133,78,115,210,85,35,58,85,114,172,50,87,160,152,147,75,41,126,210,151,85,22,205,205,65,195,220,156,162,121,57,121,157,41,230,231,228,247,168,42,39,187,117,90,192,99,11,114,138,22,230,152,98,17,31,23,229,20,85,231,176,48,135,234,28,230,231,80,149,195,188,92,246,190,66,167,197,233,202,110,157,150,228,100,167,78,75,121,100,105,78,81,77,14,53,57,44,201,97,113,46,123,95,161,211,178,52,220,165,211,114,142,45,207,37,162,131,41,150,229,18,209,158,82,180,79,165,21,57,172,40,162,104,155,74,181,28,174,205,37,98,184,64,177,50,39,123,117,90,197,215,171,114,138,86,231,176,58,135,218,28,86,102,20,189,58,213,165,171,250,116,90,195,177,53,25,69,93,158,226,247,248,252,207,232,181,76,177,54,167,104,93,78,14,50,69,125,78,254,24,173,207,201,86,157,54,240,216,134,156,162,141,41,69,3,31,27,114,138,54,229,176,49,135,77,57,212,231,176,62,135,117,25,69,155,78,155,211,149,173,58,109,201,165,255,119,122,30,105,204,41,218,154,195,214,28,182,228,176,57,163,104,214,105,91,26,110,209,105,59,199,182,231,18,209,197,20,219,114,137,232,76,41,58,167,82,83,14,77,69,20,29,83,105,7,135,119,228,18,49,82,160,216,153,147,237,58,237,226,235,93,57,69,205,57,52,231,176,35,135,157,25,69,187,78,187,211,85,29,58,237,225,216,158,140,98,119,158,226,71,190,108,176,104,47,83,236,205,41,106,201,201,49,166,216,151,147,49,237,207,201,122,157,14,240,216,129,156,162,214,148,226,32,31,15,230,20,29,202,161,53,135,67,57,236,203,97,127,14,45,25,69,131,78,135,211,149,245,58,181,229,100,173,78,71,120,228,72,78,209,209,28,142,230,208,150,195,225,140,162,86,167,99,105,184,78,167,118,142,181,231,18,209,195,20,199,114,137,232,78,41,186,167,210,241,28,142,23,81,116,77,165,19,28,62,145,75,196,104,129,226,100,78,54,234,212,193,215,29,57,69,167,114,56,149,195,137,28,78,102,20,141,58,157,78,87,53,233,116,134,99,103,50,138,211,121,138,223,229,203,102,139,58,153,162,51,167,232,108,78,206,63,211,62,129,206,229,100,9,157,207,201,74,157,186,120,172,43,167,232,66,74,113,145,143,23,115,138,46,229,112,33,135,75,57,156,203,225,124,14,103,51,138,42,157,186,211,149,149,58,93,206,201,114,157,174,240,200,149,156,162,171,57,92,205,225,114,14,221,25,69,185,78,61,105,184,66,167,107,28,187,150,75,68,31,83,244,228,18,209,155,82,244,78,165,235,57,92,47,162,232,153,74,55,56,124,35,151,136,177,2,69,111,78,86,235,116,147,175,111,230,20,221,202,225,86,14,55,114,232,205,40,170,117,186,157,174,170,209,169,143,99,125,25,197,237,60,5,124,217,102,209,29,166,184,147,83,116,55,39,235,152,226,94,78,70,212,159,147,195,130,238,243,216,253,156,162,7,41,197,67,62,62,204,41,26,200,225,65,14,3,57,220,203,161,63,135,187,25,197,136,160,71,233,202,97,65,143,115,114,80,208,19,30,121,146,83,52,152,195,96,14,143,115,120,148,81,12,10,122,154,134,135,4,61,227,216,179,92,34,6,152,226,105,46,17,253,41,69,255,84,122,158,195,243,34,138,190,169,52,196,225,161,92,34,202,127,60,79,241,34,39,71,5,189,228,235,151,57,69,175,114,120,149,195,80,14,47,50,138,81,65,195,233,170,49,65,175,57,246,58,163,24,206,83,252,14,95,118,90,244,134,41,222,228,20,189,205,201,109,76,49,146,147,223,167,119,57,217,43,232,61,143,189,207,41,250,144,82,140,242,113,52,167,232,99,14,31,114,248,152,195,72,14,239,114,120,155,81,244,9,250,148,174,236,21,244,57,39,187,5,141,241,200,88,78,209,151,28,190,228,240,57,135,79,25,69,183,160,175,105,184,71,208,55,142,125,227,31,10,76,241,53,151,136,193,148,98,112,42,149,151,160,188,164,232,125,197,84,154,94,194,63,110,74,18,81,81,160,152,81,34,251,5,205,228,235,153,37,138,42,74,80,81,130,233,37,152,81,146,189,175,16,52,171,36,157,22,52,155,99,179,75,10,20,179,74,82,138,239,124,217,99,209,156,18,104,152,83,162,168,178,68,30,97,138,185,37,210,164,121,37,178,93,208,124,30,155,95,162,168,170,132,41,22,240,113,65,137,162,133,37,168,42,193,194,18,204,45,193,188,18,84,150,100,239,43,4,45,74,87,182,11,170,46,145,173,130,22,243,200,226,18,69,75,74,176,164,4,213,37,88,84,146,189,175,16,180,52,13,183,9,170,225,88,77,73,34,70,152,98,105,73,34,134,83,138,225,169,180,172,4,203,138,40,134,166,210,114,14,47,47,73,68,101,129,98,69,137,236,20,84,203,215,181,37,138,86,150,96,101,9,150,151,96,69,70,209,41,104,85,186,170,75,208,106,142,173,206,40,86,229,41,126,224,203,126,139,234,152,162,174,68,209,154,18,121,130,41,214,150,200,144,214,149,200,70,65,245,60,86,95,162,104,125,74,177,129,143,27,74,20,109,44,193,250,18,108,44,193,218,18,172,43,193,154,140,162,73,80,67,186,178,81,208,166,18,89,47,104,51,143,108,46,81,180,165,4,91,74,176,169,4,13,25,69,189,160,198,52,220,32,104,43,199,182,150,36,98,140,41,26,75,18,49,154,82,140,78,165,109,37,216,86,68,49,50,149,182,115,120,123,73,34,170,10,20,77,37,178,89,208,14,190,222,81,162,104,103,9,118,150,96,123,9,154,50,138,230,255,143,184,247,142,174,35,73,206,124,81,230,218,186,166,110,129,236,233,38,213,173,239,147,122,164,225,62,141,212,114,192,168,101,75,210,180,252,174,180,43,187,79,110,229,149,90,25,200,206,174,204,128,30,244,160,7,61,232,65,15,122,208,131,30,244,160,247,36,232,61,9,122,208,191,19,81,117,57,236,222,127,222,251,235,157,211,7,236,170,136,47,50,43,34,43,43,111,225,34,127,54,151,104,83,43,108,54,139,91,115,57,21,75,162,84,188,239,133,183,147,92,42,169,88,90,50,92,86,10,15,72,42,150,151,194,74,174,40,133,245,54,87,138,108,101,201,112,149,166,98,181,28,174,46,25,182,148,176,170,132,150,18,150,151,176,162,132,101,229,84,140,177,185,70,155,172,183,185,182,20,214,217,92,39,146,117,37,195,245,37,172,47,97,109,9,107,202,169,168,179,185,65,157,135,218,220,40,110,27,101,204,247,144,39,78,169,202,174,237,161,83,107,15,110,42,97,211,59,169,120,249,1,91,197,185,181,84,101,215,199,169,216,92,10,27,108,110,145,211,91,74,134,91,75,216,90,66,107,9,155,203,169,104,176,185,77,155,154,108,115,187,184,109,47,167,98,91,148,138,247,188,176,43,201,29,146,138,29,37,195,157,165,240,162,164,162,173,20,122,220,85,10,187,44,238,22,217,238,146,225,30,77,197,94,57,220,91,50,220,87,194,158,18,246,149,208,86,194,174,18,118,150,83,241,210,226,126,109,178,203,226,129,82,216,105,177,93,36,237,37,195,131,37,28,44,225,64,9,251,203,169,232,180,120,72,157,31,89,60,44,110,135,165,208,146,138,67,50,248,53,21,117,61,120,164,132,35,239,164,162,95,15,30,21,231,163,165,42,123,76,156,138,99,165,176,214,230,113,57,125,188,100,120,162,132,19,37,28,45,225,88,57,21,181,54,79,106,83,253,108,158,18,183,83,229,84,156,140,82,209,205,11,251,165,120,90,82,113,186,100,120,166,20,222,145,84,156,149,27,228,92,41,236,176,120,94,100,231,75,134,29,154,138,11,114,120,161,100,120,177,132,142,18,46,150,112,182,132,115,37,156,41,167,226,178,197,75,218,100,135,197,203,165,240,132,197,43,34,185,82,50,188,90,194,213,18,46,151,112,169,156,138,19,22,175,169,243,25,139,215,197,237,186,92,157,164,226,154,84,92,83,81,223,131,55,74,184,241,78,42,134,246,224,77,113,190,41,215,16,167,226,86,41,188,110,241,182,156,190,93,50,188,83,194,157,18,110,150,112,171,156,138,235,22,239,106,83,183,45,222,19,183,123,229,84,220,141,82,17,120,97,125,138,157,146,138,206,146,225,253,82,248,92,82,241,160,20,230,248,176,20,182,89,124,36,178,71,37,195,199,154,138,39,114,248,164,100,248,180,132,199,37,60,45,225,65,9,15,75,184,95,78,197,94,139,93,218,100,155,197,103,165,176,213,226,115,145,60,47,25,190,40,225,69,9,207,74,232,42,167,162,213,226,75,117,222,102,241,149,184,189,146,254,73,42,94,74,255,52,21,13,61,248,186,132,215,239,164,98,76,15,190,17,231,55,226,28,167,162,54,8,219,45,246,14,228,193,18,24,246,9,208,39,192,155,18,106,131,242,251,10,139,125,3,125,88,89,236,39,110,253,130,56,21,125,3,77,133,239,133,147,83,236,31,192,66,255,192,112,64,16,14,104,107,173,224,192,32,172,100,93,16,54,91,28,36,178,65,129,225,224,64,82,49,68,14,135,4,134,67,3,12,14,48,52,192,192,0,117,1,6,4,229,247,21,22,135,105,147,205,22,135,7,97,147,197,17,34,25,17,24,214,7,168,15,48,60,192,176,160,252,190,194,226,72,117,94,104,113,148,184,141,10,170,236,89,146,138,145,65,149,221,168,169,104,236,193,209,1,70,7,239,188,175,232,193,49,226,60,70,124,226,84,140,13,194,22,139,227,228,244,184,192,112,124,128,241,1,198,4,24,91,78,69,139,197,6,109,106,189,197,9,226,54,161,156,138,134,40,21,5,47,108,74,113,162,164,98,98,96,56,41,8,39,72,42,38,7,161,207,41,65,216,96,113,170,200,166,6,134,211,52,21,141,114,216,24,24,78,15,48,45,192,244,0,147,3,76,9,48,169,156,138,201,22,103,104,147,13,22,103,6,97,189,197,89,34,153,21,24,206,14,48,59,192,204,0,51,202,169,168,183,56,71,157,199,88,156,43,110,115,131,42,123,161,164,98,78,80,101,55,105,42,154,122,176,41,64,211,59,169,152,213,131,243,196,121,158,228,45,78,197,252,32,108,180,184,64,78,47,8,12,23,6,88,24,96,94,128,249,229,84,52,90,92,164,77,205,178,184,88,220,22,151,83,177,40,74,69,206,11,87,164,184,68,82,177,36,48,108,14,194,121,146,138,165,65,152,231,178,32,172,181,184,92,100,203,3,195,21,154,138,149,114,184,50,48,92,21,96,69,128,85,1,150,6,88,22,160,185,156,138,126,22,87,107,147,181,22,91,130,176,171,130,107,68,178,38,48,92,27,96,109,128,150,0,171,203,169,248,6,215,169,239,191,113,189,56,173,15,170,236,21,146,136,117,65,149,221,172,137,104,238,193,13,1,54,188,147,136,133,61,184,81,156,55,74,178,226,68,108,10,194,58,139,173,114,186,53,48,220,28,96,115,128,141,1,54,149,19,81,103,113,139,182,52,212,226,86,113,219,90,78,196,150,40,17,89,47,108,77,113,155,36,98,91,96,184,61,8,87,73,34,118,4,97,55,238,12,194,235,21,108,19,89,91,96,184,75,19,177,91,14,119,7,134,123,2,236,10,176,39,192,142,0,59,3,108,47,39,226,127,114,175,182,248,23,220,23,132,29,21,220,47,130,253,129,225,129,0,7,2,236,11,176,183,156,134,63,100,187,186,254,9,15,138,211,193,160,202,94,47,105,104,15,170,236,22,77,67,75,15,30,10,112,232,157,52,172,232,193,195,226,124,88,6,79,156,134,35,65,216,89,193,163,114,250,104,96,120,44,192,177,0,135,3,28,41,167,225,239,120,92,27,250,71,158,16,167,19,229,36,28,143,146,144,246,194,189,41,158,148,36,156,12,12,79,5,225,110,73,194,233,32,116,121,38,8,219,43,120,86,100,103,3,195,115,154,132,243,114,120,62,48,236,8,112,46,64,71,128,211,1,206,4,56,85,78,194,175,243,130,54,248,171,188,24,132,109,21,188,36,130,75,129,225,229,0,151,3,92,12,112,161,156,132,159,231,21,117,253,101,94,21,167,171,65,149,189,77,146,112,37,168,178,91,53,9,173,61,120,45,192,181,119,146,176,190,7,175,139,243,117,25,47,113,18,110,4,225,137,10,222,148,211,55,3,195,91,1,110,5,184,30,224,70,57,9,191,205,219,218,208,239,242,142,56,221,41,39,225,118,148,132,164,23,158,72,241,174,36,225,110,96,120,47,8,247,75,18,58,131,48,193,251,65,248,53,62,16,213,131,192,240,161,230,224,145,28,62,10,12,31,7,120,24,224,113,128,206,0,247,3,220,43,231,224,199,248,68,219,251,26,159,6,225,39,236,18,255,174,192,240,89,128,103,1,158,6,120,82,78,193,39,124,174,158,63,196,23,226,244,34,168,178,247,74,10,158,7,85,118,155,166,160,173,7,95,6,120,249,78,10,182,245,224,43,113,126,37,247,78,156,130,215,65,216,90,193,55,114,250,77,96,88,91,137,218,74,188,10,240,186,156,130,159,98,239,74,249,247,103,217,167,18,9,244,169,140,83,208,187,82,83,224,122,225,229,20,251,86,194,66,223,74,195,126,149,225,97,73,65,255,202,176,200,1,149,33,56,80,84,3,43,13,235,42,37,5,131,228,112,80,165,225,224,74,212,85,98,112,37,250,87,98,64,37,250,85,198,41,248,152,67,180,61,112,104,101,248,62,135,137,255,176,74,195,225,149,24,94,137,161,149,24,82,25,167,224,125,142,80,207,111,99,189,56,213,87,86,217,71,36,5,35,42,171,236,118,77,65,123,15,142,172,196,200,202,119,222,73,244,224,40,113,30,85,89,101,183,196,41,24,93,25,126,133,99,228,236,152,74,195,177,149,24,91,137,81,149,24,93,25,103,224,43,28,167,237,124,15,199,139,211,248,114,6,198,69,25,136,2,55,118,103,131,122,205,234,206,9,149,97,154,19,197,119,98,165,225,164,74,76,170,68,67,37,38,84,250,187,245,79,82,211,156,172,174,57,78,17,167,41,229,128,147,223,13,120,164,7,167,138,117,106,101,149,189,62,238,233,180,202,208,103,163,156,109,172,52,156,94,137,233,149,152,90,137,105,229,158,250,156,161,129,187,113,166,56,205,44,7,158,161,129,245,203,244,179,196,48,171,210,112,118,37,102,87,114,78,37,230,84,250,135,114,218,100,67,119,206,85,253,228,238,108,170,68,5,154,42,171,108,23,21,152,91,89,101,87,132,173,31,114,158,168,231,85,26,206,175,196,252,202,143,43,138,222,179,101,150,125,217,255,102,167,245,31,202,79,173,255,232,139,252,84,251,211,138,98,132,81,221,251,33,18,95,173,40,50,25,166,153,66,18,169,95,234,241,255,55,22,243,255,21,58,51,89,200,88,182,227,38,146,169,116,166,194,11,187,49,141,4,210,159,86,172,238,25,22,153,65,2,25,195,44,18,200,86,217,117,31,133,37,122,72,192,171,178,135,126,20,22,153,67,2,57,195,60,18,200,87,217,181,31,69,166,126,31,233,83,239,35,70,223,124,249,136,146,161,66,149,221,217,19,9,20,245,15,179,78,244,164,143,4,124,195,18,74,12,194,89,203,90,43,88,25,90,236,22,118,246,164,20,181,187,225,123,120,143,95,66,128,74,116,195,151,208,205,159,227,132,109,61,249,62,18,120,223,240,3,124,192,30,18,71,130,246,52,252,54,124,27,63,68,15,124,232,215,122,97,154,31,133,45,61,249,237,72,224,219,13,1,224,35,67,138,250,59,144,136,41,155,114,234,99,124,252,21,187,130,95,6,241,101,37,6,247,114,218,122,150,95,10,85,59,45,61,165,164,171,123,242,187,194,166,158,252,110,36,240,221,134,95,193,87,216,75,162,255,39,36,98,226,38,191,7,189,240,93,248,30,255,186,23,186,252,42,42,240, \ No newline at end of file diff --git a/solana-program-library/spl-token-22/Cargo.lock b/solana-program-library/spl-token-22/Cargo.lock new file mode 100644 index 0000000..eb38540 --- /dev/null +++ b/solana-program-library/spl-token-22/Cargo.lock @@ -0,0 +1,459 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive", + "hashbrown", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "num-traits", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "serde" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_derive" +version = "1.0.190" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "substreams-solana-spl-token" +version = "1.0.0" +dependencies = [ + "borsh", + "bs58", + "bytes", + "chrono", + "console_error_panic_hook", + "num-bigint", + "prost", + "serde", + "serde-wasm-bindgen", + "serde_json", + "wasm-bindgen", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "zerocopy" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] diff --git a/solana-program-library/spl-token-22/Cargo.toml b/solana-program-library/spl-token-22/Cargo.toml new file mode 100644 index 0000000..2576515 --- /dev/null +++ b/solana-program-library/spl-token-22/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "substreams-solana-spl-token" +version = "1.0.0" +edition = "2021" + +[lib] +name = "spl_token_22" +crate-type = ["cdylib"] + +[dependencies] +bytes = "1.1.0" +prost = "0.11" +num-bigint = "0.4" +bs58 = "0.5.0" +borsh = { version = "0.10.3"} +chrono = { version = "0.4", features = [ "std" ], default-features = false } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +wasm-bindgen = { version = "0.2", features = ["serde-serialize"] } +serde-wasm-bindgen = "0.5" +console_error_panic_hook = "0.1" + +[profile.release] +lto = true +opt-level = 's' +strip = "debuginfo" \ No newline at end of file diff --git a/solana-program-library/spl-token-22/Makefile b/solana-program-library/spl-token-22/Makefile new file mode 100644 index 0000000..c020a04 --- /dev/null +++ b/solana-program-library/spl-token-22/Makefile @@ -0,0 +1,27 @@ +ENDPOINT ?= mainnet.sol.streamingfast.io:443 + +.PHONY: build +build: + LDFLAGS="-Wl,-no_compact_unwind" cargo build --target wasm32-unknown-unknown --release + +.PHONY: stream +stream: build + substreams run -e $(ENDPOINT) substreams.yaml map_block -s 311081162 -t +1000 + +.PHONY: protogen +protogen: + substreams protogen ./substreams.yaml --exclude-paths="sf/substreams,google" + +.PHONY: package +package: + substreams pack ./substreams.yaml + +.PHONY wasm_pack: +wasm_pack: + wasm-pack build --no-typescript --target no-modules + +.PHONY convert_and_gcloud_upload: +convert_and_gcloud_upload: + go build utils/convert.go && mv convert utils/convert + utils/script.sh spl_token_22 + \ No newline at end of file diff --git a/solana-program-library/spl-token-22/index.html b/solana-program-library/spl-token-22/index.html new file mode 100644 index 0000000..71a8ad3 --- /dev/null +++ b/solana-program-library/spl-token-22/index.html @@ -0,0 +1,21 @@ + + + + + + hello-wasm example + + + + + + + \ No newline at end of file diff --git a/solana-program-library/spl-token-22/src/constants.rs b/solana-program-library/spl-token-22/src/constants.rs new file mode 100644 index 0000000..5d0167e --- /dev/null +++ b/solana-program-library/spl-token-22/src/constants.rs @@ -0,0 +1 @@ +pub const PROGRAM_ADDRESS: &str = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; diff --git a/solana-program-library/spl-token-22/src/instruction.rs b/solana-program-library/spl-token-22/src/instruction.rs new file mode 100644 index 0000000..d32f889 --- /dev/null +++ b/solana-program-library/spl-token-22/src/instruction.rs @@ -0,0 +1,1294 @@ +extern crate bs58; +use borsh::{BorshDeserialize, BorshSerialize}; +use serde::{Serialize, Serializer}; + +fn u64_to_string(num: &u64, serializer: S) -> Result +where + S: Serializer, +{ + serializer.serialize_str(&num.to_string()) +} + +#[derive(BorshDeserialize, BorshSerialize, Debug, Clone, Default, Copy, Serialize)] +pub struct PubkeyLayout { + value: [u8; 32], +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializeMintLayout { + decimals: u8, + mint_authority: PubkeyLayout, + freeze_authority: Option, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializeMultisigLayout { + m: u8, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct TransferLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct ApproveLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub enum AuthorityTypeLayout { + #[default] + MintTokens = 0, + FreezeAccount = 1, + AccountOwner = 2, + CloseAccount = 3, + TransferFeeConfig = 4, + WithheldWithdraw = 5, + CloseMint = 6, + InterestRate = 7, + PermanentDelegate = 8, + ConfidentialTransferMint = 9, + TransferHookProgramId = 10, + ConfidentialTransferFeeConfig = 11, + MetadataPointer = 12, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub enum ExtensionTypeLayout { + #[default] + Uninitialized = 0, + TransferFeeConfig = 1, + TransferFeeAmount = 2, + MintCloseAuthority = 3, + ConfidentialTransferMint = 4, + ConfidentialTransferAccount = 5, + DefaultAccountState = 6, + ImmutableOwner = 7, + MemoTransfer = 8, + NonTransferable = 9, + InterestBearingConfig = 10, + CpiGuard = 11, + PermanentDelegate = 12, + NonTransferableAccount = 13, + TransferHook = 14, + TransferHookAccount = 15, + ConfidentialTransferFeeConfig = 16, + ConfidentialTransferFeeAmount = 17, + MetadataPointer = 18, + TokenMetadata = 19, + VariableLenMintTest = 65533, + AccountPaddingTest = 65534, + MintPaddingTest = 65535, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub enum AccountStateLayout { + #[default] + Uninitialized = 0, + Initialized = 1, + Frozen = 2, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct SourceDecryptHandlesLayout { + lo: [u8; 32], + hi: [u8; 32], +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct DecryptableBalanceLayout { + nonce: [u8; 12], + ciphertext: [u8; 24], +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct SetAuthorityLayout { + authority_type: AuthorityTypeLayout, + new_authority: Option, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct MintToLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct BurnLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct TransferCheckedLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, + decimals: u8, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct ApproveCheckedLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, + decimals: u8, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct MintToCheckedLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, + decimals: u8, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct BurnCheckedLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, + decimals: u8, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializeAccount2Layout { + owner: PubkeyLayout, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializeAccount3Layout { + owner: PubkeyLayout, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializeMultisig2Layout { + m: u8, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializeMint2Layout { + decimals: u8, + mint_authority: PubkeyLayout, + freeze_authority: Option, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct GetAccountDataSizeLayout { + extension_types: Vec, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct AmountToUiAmountLayout { + #[serde(serialize_with = "u64_to_string")] + amount: u64, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct UiAmountToAmountLayout { + ui_amount: String, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializeMintCloseAuthorityLayout { + close_authority: Option, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum TransferFeeExtensionLayout { + InitializeTransferFeeConfig { + transfer_fee_config_authority: Option, + withdraw_withheld_authority: Option, + transfer_fee_basis_points: u16, + maximum_fee: u64, + }, + TransferCheckedWithFee { + #[serde(serialize_with = "u64_to_string")] + amount: u64, + decimals: u8, + fee: u64, + }, + WithdrawWithheldTokensFromMint, + WithdrawWithheldTokensFromAccounts { + num_token_accounts: u8, + }, + HarvestWithheldTokensToMint, + SetTransferFee { + transfer_fee_basis_points: u16, + maximum_fee: u64, + }, +} + +impl Default for TransferFeeExtensionLayout { + fn default() -> Self { + TransferFeeExtensionLayout::InitializeTransferFeeConfig { + transfer_fee_config_authority: Some(PubkeyLayout::default()), + withdraw_withheld_authority: Some(PubkeyLayout::default()), + transfer_fee_basis_points: 0, + maximum_fee: 0, + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum ConfidentialTransferExtensionLayout { + InitializeMint { + authority: PubkeyLayout, + auto_approve_new_accounts: bool, + auditor_elgamal_pubkey: PubkeyLayout, + }, + UpdateMint { + auto_approve_new_accounts: bool, + auditor_elgamal_pubkey: PubkeyLayout, + }, + ConfigureAccount { + decryptable_zero_balance: DecryptableBalanceLayout, + maximum_pending_balance_credit_counter: u64, + proof_instruction_offset: i8, + }, + ApproveAccount, + EmptyAccount { + proof_instruction_offset: i8, + }, + Deposit { + #[serde(serialize_with = "u64_to_string")] + amount: u64, + decimals: u8, + }, + Withdraw { + #[serde(serialize_with = "u64_to_string")] + amount: u64, + decimals: u8, + new_decryptable_available_balance: DecryptableBalanceLayout, + proof_instruction_offset: i8, + }, + Transfer { + new_source_decryptable_available_balance: DecryptableBalanceLayout, + proof_instruction_offset: i8, + }, + ApplyPendingBalance { + expected_pending_balance_credit_counter: u64, + new_decryptable_available_balance: DecryptableBalanceLayout, + }, + EnableConfidentialCredits, + DisableConfidentialCredits, + EnableNonConfidentialCredits, + DisableNonConfidentialCredits, + TransferWithSplitProofs { + new_source_decryptable_available_balance: DecryptableBalanceLayout, + no_op_on_uninitialized_split_context_state: bool, + close_split_context_state_on_execution: bool, + source_decrypt_handles: SourceDecryptHandlesLayout, + }, +} + +impl Default for ConfidentialTransferExtensionLayout { + fn default() -> Self { + ConfidentialTransferExtensionLayout::InitializeMint { + authority: PubkeyLayout::default(), + auto_approve_new_accounts: false, + auditor_elgamal_pubkey: PubkeyLayout::default(), + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum DefaultAccountStateExtensionLayout { + Initialize { name: AccountStateLayout }, + Update { name: AccountStateLayout }, +} + +impl Default for DefaultAccountStateExtensionLayout { + fn default() -> Self { + DefaultAccountStateExtensionLayout::Initialize { + name: AccountStateLayout::default(), + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct ReallocateLayout { + extension_types: Vec, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub enum MemoTransferExtensionLayout { + #[default] + Enable, + Disable, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum InterestBearingMintExtensionLayout { + Initialize { + rate_authority: PubkeyLayout, + rate: [u8; 2], + }, + UpdateRate { + rate: [u8; 2], + }, +} + +impl Default for InterestBearingMintExtensionLayout { + fn default() -> Self { + InterestBearingMintExtensionLayout::Initialize { + rate_authority: PubkeyLayout::default(), + rate: [0, 0], + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub enum CpiGuardExtensionLayout { + #[default] + Enable, + Disable, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InitializePermanentDelegateLayout { + delegate: PubkeyLayout, +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum TransferHookExtensionLayout { + Initialize { + authority: PubkeyLayout, + program_id: PubkeyLayout, + }, + Update { + program_id: PubkeyLayout, + }, +} + +impl Default for TransferHookExtensionLayout { + fn default() -> Self { + TransferHookExtensionLayout::Initialize { + authority: PubkeyLayout::default(), + program_id: PubkeyLayout::default(), + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum ConfidentialTransferFeeExtensionLayout { + InitializeConfidentialTransferFeeConfig { + authority: PubkeyLayout, + withdraw_withheld_authority_elgamal_pubkey: PubkeyLayout, + }, + WithdrawWithheldTokensFromMint { + proof_instruction_offset: i8, + new_decryptable_available_balance: DecryptableBalanceLayout, + }, + WithdrawWithheldTokensFromAccounts { + num_token_accounts: u8, + proof_instruction_offset: i8, + new_decryptable_available_balance: DecryptableBalanceLayout, + }, + HarvestWithheldTokensToMint, + EnableHarvestToMint, + DisableHarvestToMint, +} + +impl Default for ConfidentialTransferFeeExtensionLayout { + fn default() -> Self { + ConfidentialTransferFeeExtensionLayout::InitializeConfidentialTransferFeeConfig { + authority: PubkeyLayout::default(), + withdraw_withheld_authority_elgamal_pubkey: PubkeyLayout::default(), + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum MetadataPointerExtensionLayout { + Initialize { + authority: PubkeyLayout, + metadata_address: PubkeyLayout, + }, + Update { + metadata_address: PubkeyLayout, + }, +} + +impl Default for MetadataPointerExtensionLayout { + fn default() -> Self { + MetadataPointerExtensionLayout::Initialize { + authority: PubkeyLayout::default(), + metadata_address: PubkeyLayout::default(), + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum GroupPointerExtensionLayout { + Initialize { + authority: PubkeyLayout, + group_address: PubkeyLayout, + }, + Update { + group_address: PubkeyLayout, + }, +} + +impl Default for GroupPointerExtensionLayout { + fn default() -> Self { + GroupPointerExtensionLayout::Initialize { + authority: PubkeyLayout::default(), + group_address: PubkeyLayout::default(), + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Serialize)] +pub enum GroupMemberPointerExtensionLayout { + Initialize { + authority: PubkeyLayout, + member_address: PubkeyLayout, + }, + Update { + member_address: PubkeyLayout, + }, +} + +impl Default for GroupMemberPointerExtensionLayout { + fn default() -> Self { + GroupMemberPointerExtensionLayout::Initialize { + authority: PubkeyLayout::default(), + member_address: PubkeyLayout::default(), + } + } +} + +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] +pub struct InstructionAccounts { + pub account: String, + pub authority: String, + pub context_VerifyBatchedGroupedCiphertext2HandlesValidityProof: String, + pub context_VerifyBatchedRangeProofU128: String, + pub context_VerifyCiphertextCommitmentEqualityProof: String, + pub current_authority: String, + pub delegate: String, + pub destination: String, + pub destination_account: String, + pub fee_account_owner: String, + pub fee_receiver: String, + pub funding_account: String, + pub lamports_destination: String, + pub mint_associated: String, + pub mint: String, + pub mint_authority: String, + pub owner: String, + pub payer: String, + pub rent_sysvar: String, + pub rest_sysvar: String, + pub signers: Vec, + pub source: String, + pub source_account: String, + pub sources: Vec, + pub system_program: String, + pub sysvar: String, + pub withdraw_from: Vec, + pub withdraw_withheld_authority: String, + pub zk_token_proof: String, +} + +#[derive(Debug, Serialize)] +pub struct Instruction { + pub joinKey: String, + pub name: String, + pub instruction_accounts: InstructionAccounts, + pub initializeMintArgs: InitializeMintLayout, + pub initializeMultisigArgs: InitializeMultisigLayout, + pub transferArgs: TransferLayout, + pub approveArgs: ApproveLayout, + pub setAuthorityArgs: SetAuthorityLayout, + pub mintToArgs: MintToLayout, + pub burnArgs: BurnLayout, + pub transferCheckedArgs: TransferCheckedLayout, + pub approveCheckedArgs: ApproveCheckedLayout, + pub mintToCheckedArgs: MintToCheckedLayout, + pub burnCheckedArgs: BurnCheckedLayout, + pub initializeAccount2Args: InitializeAccount2Layout, + pub initializeAccount3Args: InitializeAccount3Layout, + pub initializeMultisig2Args: InitializeMultisig2Layout, + pub initializeMint2Args: InitializeMint2Layout, + pub getAccountDataSizeArgs: GetAccountDataSizeLayout, + pub amountToUiAmountArgs: AmountToUiAmountLayout, + pub uiAmountToAmountArgs: UiAmountToAmountLayout, + pub initializeMintCloseAuthorityArgs: InitializeMintCloseAuthorityLayout, + pub transferFeeExtensionArgs: TransferFeeExtensionLayout, + pub confidentialTransferExtensionArgs: ConfidentialTransferExtensionLayout, + pub defaultAccountStateExtensionArgs: DefaultAccountStateExtensionLayout, + pub reallocateArgs: ReallocateLayout, + pub memoTransferExtensionArgs: MemoTransferExtensionLayout, + pub interestBearingMintExtensionArgs: InterestBearingMintExtensionLayout, + pub cpiGuardExtensionArgs: CpiGuardExtensionLayout, + pub initializePermanentDelegateArgs: InitializePermanentDelegateLayout, + pub transferHookExtensionArgs: TransferHookExtensionLayout, + pub confidentialTransferFeeExtensionArgs: ConfidentialTransferFeeExtensionLayout, + pub metadataPointerExtensionArgs: MetadataPointerExtensionLayout, + pub groupPointerExtensionArgs: GroupPointerExtensionLayout, + pub groupMemberPointerExtensionArgs: GroupMemberPointerExtensionLayout, +} + +pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instruction { + let mut instruction_name = String::default(); + let mut instruction_accounts = InstructionAccounts::default(); + + let mut initializeMintArgs = InitializeMintLayout::default(); + let mut initializeMultisigArgs = InitializeMultisigLayout::default(); + let mut transferArgs = TransferLayout::default(); + let mut approveArgs = ApproveLayout::default(); + let mut setAuthorityArgs = SetAuthorityLayout::default(); + let mut mintToArgs = MintToLayout::default(); + let mut burnArgs = BurnLayout::default(); + let mut transferCheckedArgs = TransferCheckedLayout::default(); + let mut approveCheckedArgs = ApproveCheckedLayout::default(); + let mut mintToCheckedArgs = MintToCheckedLayout::default(); + let mut burnCheckedArgs = BurnCheckedLayout::default(); + let mut initializeAccount2Args = InitializeAccount2Layout::default(); + let mut initializeAccount3Args = InitializeAccount3Layout::default(); + let mut initializeMultisig2Args = InitializeMultisig2Layout::default(); + let mut initializeMint2Args = InitializeMint2Layout::default(); + let mut getAccountDataSizeArgs = GetAccountDataSizeLayout::default(); + let mut amountToUiAmountArgs = AmountToUiAmountLayout::default(); + let mut uiAmountToAmountArgs = UiAmountToAmountLayout::default(); + let mut initializeMintCloseAuthorityArgs = InitializeMintCloseAuthorityLayout::default(); + let mut transferFeeExtensionArgs = TransferFeeExtensionLayout::default(); + let mut confidentialTransferExtensionArgs = ConfidentialTransferExtensionLayout::default(); + let mut defaultAccountStateExtensionArgs = DefaultAccountStateExtensionLayout::default(); + let mut reallocateArgs = ReallocateLayout::default(); + let mut memoTransferExtensionArgs = MemoTransferExtensionLayout::default(); + let mut interestBearingMintExtensionArgs = InterestBearingMintExtensionLayout::default(); + let mut cpiGuardExtensionArgs = CpiGuardExtensionLayout::default(); + let mut initializePermanentDelegateArgs = InitializePermanentDelegateLayout::default(); + let mut transferHookExtensionArgs = TransferHookExtensionLayout::default(); + let mut confidentialTransferFeeExtensionArgs = + ConfidentialTransferFeeExtensionLayout::default(); + let mut metadataPointerExtensionArgs = MetadataPointerExtensionLayout::default(); + let mut groupPointerExtensionArgs = GroupPointerExtensionLayout::default(); + let mut groupMemberPointerExtensionArgs = GroupMemberPointerExtensionLayout::default(); + + let (disc_bytes, rest) = bytes_stream.split_at(1); + let discriminator: u8 = u8::from(disc_bytes[0]); + + match discriminator { + 0 => { + instruction_name = String::from("InitializeMint"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.rent_sysvar = accounts.get(1).unwrap().to_string(); + + initializeMintArgs = + InitializeMintLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 1 => { + instruction_name = String::from("InitializeAccount"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint_associated = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + instruction_accounts.rent_sysvar = accounts.get(3).unwrap().to_string(); + } + 2 => { + instruction_name = String::from("InitializeMultisig"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.rent_sysvar = accounts.get(1).unwrap().to_string(); + if accounts.len() >= 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + + initializeMultisigArgs = + InitializeMultisigLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 3 => { + instruction_name = String::from("Transfer"); + + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.destination = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + + transferArgs = TransferLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 4 => { + instruction_name = String::from("Approve"); + + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.delegate = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + + approveArgs = ApproveLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 5 => { + instruction_name = String::from("Revoke"); + + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + 6 => { + instruction_name = String::from("SetAuthority"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.current_authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + + setAuthorityArgs = + SetAuthorityLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 7 => { + instruction_name = String::from("MintTo"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.account = accounts.get(1).unwrap().to_string(); + instruction_accounts.mint_authority = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + + mintToArgs = MintToLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 8 => { + instruction_name = String::from("Burn"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + + burnArgs = BurnLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 9 => { + instruction_name = String::from("CloseAccount"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.destination = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + } + 10 => { + instruction_name = String::from("FreezeAccount"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.authority = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + } + 11 => { + instruction_name = String::from("ThawAccount"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.authority = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + } + 12 => { + instruction_name = String::from("TransferChecked"); + + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.destination = accounts.get(2).unwrap().to_string(); + instruction_accounts.owner = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.signers = accounts.split_at(4).1.to_vec(); + } + + transferCheckedArgs = + TransferCheckedLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 13 => { + instruction_name = String::from("ApproveChecked"); + + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.delegate = accounts.get(2).unwrap().to_string(); + instruction_accounts.owner = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.signers = accounts.split_at(4).1.to_vec(); + } + + approveCheckedArgs = + ApproveCheckedLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 14 => { + instruction_name = String::from("MintToChecked"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.account = accounts.get(1).unwrap().to_string(); + instruction_accounts.mint_authority = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + + mintToCheckedArgs = + MintToCheckedLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 15 => { + instruction_name = String::from("BurnChecked"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + + burnCheckedArgs = BurnCheckedLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 16 => { + instruction_name = String::from("InitializeAccount2"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.rent_sysvar = accounts.get(2).unwrap().to_string(); + + initializeAccount2Args = + InitializeAccount2Layout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 17 => { + instruction_name = String::from("SyncNative"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + } + 18 => { + instruction_name = String::from("InitializeAccount3"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + + initializeAccount3Args = + InitializeAccount3Layout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 19 => { + instruction_name = String::from("InitializeMultisig2"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + if accounts.len() > 1 { + instruction_accounts.signers = accounts.split_at(1).1.to_vec(); + } + + initializeMultisig2Args = + InitializeMultisig2Layout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 20 => { + instruction_name = String::from("InitializeMint2"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + + initializeMint2Args = + InitializeMint2Layout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 21 => { + instruction_name = String::from("GetAccountDataSize"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + + getAccountDataSizeArgs = + GetAccountDataSizeLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 22 => { + instruction_name = String::from("InitializeImmutableOwner"); + + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + } + 23 => { + instruction_name = String::from("AmountToUiAmount"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + + amountToUiAmountArgs = + AmountToUiAmountLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 24 => { + instruction_name = String::from("UiAmountToAmount"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + + uiAmountToAmountArgs = + UiAmountToAmountLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + } + 25 => { + instruction_name = String::from("InitializeMintCloseAuthority"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + + initializeMintCloseAuthorityArgs = + InitializeMintCloseAuthorityLayout::deserialize(&mut rest.clone()) + .unwrap_or_default(); + } + 26 => { + instruction_name = String::from("TransferFeeExtension"); + transferFeeExtensionArgs = + TransferFeeExtensionLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + + match transferFeeExtensionArgs { + TransferFeeExtensionLayout::InitializeTransferFeeConfig { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + TransferFeeExtensionLayout::TransferCheckedWithFee { .. } => { + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.destination = accounts.get(2).unwrap().to_string(); + instruction_accounts.owner = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.signers = accounts.split_at(4).1.to_vec(); + } + } + TransferFeeExtensionLayout::WithdrawWithheldTokensFromMint { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.fee_receiver = accounts.get(1).unwrap().to_string(); + instruction_accounts.withdraw_withheld_authority = + accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + } + TransferFeeExtensionLayout::WithdrawWithheldTokensFromAccounts { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.fee_receiver = accounts.get(1).unwrap().to_string(); + instruction_accounts.withdraw_withheld_authority = + accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.sources = accounts.split_at(3).1.to_vec(); + } + } + TransferFeeExtensionLayout::HarvestWithheldTokensToMint { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + if accounts.len() > 1 { + instruction_accounts.sources = accounts.split_at(1).1.to_vec(); + } + } + TransferFeeExtensionLayout::SetTransferFee { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.fee_account_owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 27 => { + instruction_name = String::from("ConfidentialTransferExtension"); + + confidentialTransferExtensionArgs = + ConfidentialTransferExtensionLayout::deserialize(&mut rest.clone()) + .unwrap_or_default(); + + match confidentialTransferExtensionArgs { + ConfidentialTransferExtensionLayout::InitializeMint { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + ConfidentialTransferExtensionLayout::UpdateMint { .. } => { + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + } + ConfidentialTransferExtensionLayout::ConfigureAccount { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.sysvar = accounts.get(2).unwrap().to_string(); + instruction_accounts.owner = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.signers = accounts.split_at(4).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::ApproveAccount { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.authority = accounts.get(2).unwrap().to_string(); + } + ConfidentialTransferExtensionLayout::EmptyAccount { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.sysvar = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::Deposit { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.owner = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::Withdraw { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.sysvar = accounts.get(2).unwrap().to_string(); + instruction_accounts.owner = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.signers = accounts.split_at(4).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::Transfer { .. } => { + instruction_accounts.source_account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.destination_account = accounts.get(2).unwrap().to_string(); + instruction_accounts.sysvar = accounts.get(3).unwrap().to_string(); + instruction_accounts.owner = accounts.get(4).unwrap().to_string(); + if accounts.len() > 5 { + instruction_accounts.signers = accounts.split_at(5).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::ApplyPendingBalance { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::EnableConfidentialCredits { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::DisableConfidentialCredits { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::EnableNonConfidentialCredits { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::DisableNonConfidentialCredits { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + ConfidentialTransferExtensionLayout::TransferWithSplitProofs { .. } => { + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.destination = accounts.get(2).unwrap().to_string(); + + instruction_accounts.context_VerifyCiphertextCommitmentEqualityProof = + accounts.get(3).unwrap().to_string(); + instruction_accounts + .context_VerifyBatchedGroupedCiphertext2HandlesValidityProof = + accounts.get(4).unwrap().to_string(); + instruction_accounts.context_VerifyBatchedRangeProofU128 = + accounts.get(5).unwrap().to_string(); + instruction_accounts.owner = accounts.get(6).unwrap().to_string(); + instruction_accounts.lamports_destination = + accounts.get(7).unwrap().to_string(); + instruction_accounts.zk_token_proof = accounts.get(8).unwrap().to_string(); + } + } + } + 28 => { + instruction_name = String::from("DefaultAccountStateExtension"); + defaultAccountStateExtensionArgs = + DefaultAccountStateExtensionLayout::deserialize(&mut rest.clone()) + .unwrap_or_default(); + + match defaultAccountStateExtensionArgs { + DefaultAccountStateExtensionLayout::Initialize { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + DefaultAccountStateExtensionLayout::Update { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 29 => { + instruction_name = String::from("Reallocate"); + reallocateArgs = ReallocateLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.payer = accounts.get(1).unwrap().to_string(); + instruction_accounts.system_program = accounts.get(2).unwrap().to_string(); + instruction_accounts.owner = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.signers = accounts.split_at(4).1.to_vec(); + } + } + 30 => { + instruction_name = String::from("MemoTransferExtension"); + memoTransferExtensionArgs = + MemoTransferExtensionLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + + match memoTransferExtensionArgs { + MemoTransferExtensionLayout::Enable { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + MemoTransferExtensionLayout::Disable { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 31 => { + instruction_name = String::from("CreateNativeMint"); + + instruction_accounts.funding_account = accounts.get(0).unwrap().to_string(); + instruction_accounts.mint = accounts.get(1).unwrap().to_string(); + instruction_accounts.system_program = accounts.get(2).unwrap().to_string(); + } + 32 => { + instruction_name = String::from("InitializeNonTransferableMint"); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + 33 => { + instruction_name = String::from("InterestBearingMintExtension"); + interestBearingMintExtensionArgs = + InterestBearingMintExtensionLayout::deserialize(&mut rest.clone()) + .unwrap_or_default(); + + match interestBearingMintExtensionArgs { + InterestBearingMintExtensionLayout::Initialize { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + InterestBearingMintExtensionLayout::UpdateRate { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 34 => { + instruction_name = String::from("CpiGuardExtension"); + cpiGuardExtensionArgs = + CpiGuardExtensionLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + + match cpiGuardExtensionArgs { + CpiGuardExtensionLayout::Enable { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + CpiGuardExtensionLayout::Disable { .. } => { + instruction_accounts.account = accounts.get(0).unwrap().to_string(); + instruction_accounts.owner = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 35 => { + instruction_name = String::from("InitializePermanentDelegate"); + initializePermanentDelegateArgs = + InitializePermanentDelegateLayout::deserialize(&mut rest.clone()) + .unwrap_or_default(); + + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + 36 => { + instruction_name = String::from("TransferHookExtension"); + transferHookExtensionArgs = + TransferHookExtensionLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + + match transferHookExtensionArgs { + TransferHookExtensionLayout::Initialize { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + TransferHookExtensionLayout::Update { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 37 => { + instruction_name = String::from("ConfidentialTransferFeeExtension"); + confidentialTransferFeeExtensionArgs = + ConfidentialTransferFeeExtensionLayout::deserialize(&mut rest.clone()) + .unwrap_or_default(); + + match confidentialTransferFeeExtensionArgs { + ConfidentialTransferFeeExtensionLayout::InitializeConfidentialTransferFeeConfig { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + ConfidentialTransferFeeExtensionLayout::WithdrawWithheldTokensFromMint { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.fee_receiver = accounts.get(1).unwrap().to_string(); + instruction_accounts.sysvar = accounts.get(2).unwrap().to_string(); + instruction_accounts.withdraw_withheld_authority = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.signers = accounts.split_at(4).1.to_vec(); + } + } + ConfidentialTransferFeeExtensionLayout::WithdrawWithheldTokensFromAccounts { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.fee_receiver = accounts.get(1).unwrap().to_string(); + instruction_accounts.sysvar = accounts.get(2).unwrap().to_string(); + instruction_accounts.withdraw_withheld_authority = accounts.get(3).unwrap().to_string(); + if accounts.len() > 4 { + instruction_accounts.withdraw_from = accounts.split_at(4).1.to_vec(); + } + } + ConfidentialTransferFeeExtensionLayout::HarvestWithheldTokensToMint { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + if accounts.len() > 1 { + instruction_accounts.sources = accounts.split_at(1).1.to_vec(); + } + } + ConfidentialTransferFeeExtensionLayout::EnableHarvestToMint { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + ConfidentialTransferFeeExtensionLayout::DisableHarvestToMint { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 38 => { + instruction_name = String::from("WithdrawExcessLamports"); + + instruction_accounts.source = accounts.get(0).unwrap().to_string(); + instruction_accounts.destination = accounts.get(1).unwrap().to_string(); + instruction_accounts.authority = accounts.get(2).unwrap().to_string(); + if accounts.len() > 3 { + instruction_accounts.signers = accounts.split_at(3).1.to_vec(); + } + } + 39 => { + instruction_name = String::from("MetadataPointerExtension"); + metadataPointerExtensionArgs = + MetadataPointerExtensionLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + + match metadataPointerExtensionArgs { + MetadataPointerExtensionLayout::Initialize { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + MetadataPointerExtensionLayout::Update { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 40 => { + instruction_name = String::from("GroupPointerExtension"); + groupPointerExtensionArgs = + GroupPointerExtensionLayout::deserialize(&mut rest.clone()).unwrap_or_default(); + + match groupPointerExtensionArgs { + GroupPointerExtensionLayout::Initialize { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + GroupPointerExtensionLayout::Update { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + 41 => { + instruction_name = String::from("GroupMemberPointerExtension"); + groupMemberPointerExtensionArgs = + GroupMemberPointerExtensionLayout::deserialize(&mut rest.clone()) + .unwrap_or_default(); + match groupMemberPointerExtensionArgs { + GroupMemberPointerExtensionLayout::Initialize { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + } + GroupMemberPointerExtensionLayout::Update { .. } => { + instruction_accounts.mint = accounts.get(0).unwrap().to_string(); + instruction_accounts.authority = accounts.get(1).unwrap().to_string(); + if accounts.len() > 2 { + instruction_accounts.signers = accounts.split_at(2).1.to_vec(); + } + } + } + } + _ => {} + } + + let result: Instruction = Instruction { + joinKey: "".to_string(), + name: instruction_name, + instruction_accounts: instruction_accounts, + initializeMintArgs: initializeMintArgs, + initializeMultisigArgs: initializeMultisigArgs, + transferArgs: transferArgs, + approveArgs: approveArgs, + setAuthorityArgs: setAuthorityArgs, + mintToArgs: mintToArgs, + burnArgs: burnArgs, + transferCheckedArgs: transferCheckedArgs, + approveCheckedArgs: approveCheckedArgs, + mintToCheckedArgs: mintToCheckedArgs, + burnCheckedArgs: burnCheckedArgs, + initializeAccount2Args: initializeAccount2Args, + initializeAccount3Args: initializeAccount3Args, + initializeMultisig2Args: initializeMultisig2Args, + initializeMint2Args: initializeMint2Args, + getAccountDataSizeArgs: getAccountDataSizeArgs, + amountToUiAmountArgs: amountToUiAmountArgs, + uiAmountToAmountArgs: uiAmountToAmountArgs, + initializeMintCloseAuthorityArgs: initializeMintCloseAuthorityArgs, + transferFeeExtensionArgs: transferFeeExtensionArgs, + confidentialTransferExtensionArgs: confidentialTransferExtensionArgs, + defaultAccountStateExtensionArgs: defaultAccountStateExtensionArgs, + reallocateArgs: reallocateArgs, + memoTransferExtensionArgs: memoTransferExtensionArgs, + interestBearingMintExtensionArgs: interestBearingMintExtensionArgs, + cpiGuardExtensionArgs: cpiGuardExtensionArgs, + initializePermanentDelegateArgs: initializePermanentDelegateArgs, + transferHookExtensionArgs: transferHookExtensionArgs, + confidentialTransferFeeExtensionArgs: confidentialTransferFeeExtensionArgs, + metadataPointerExtensionArgs: metadataPointerExtensionArgs, + groupPointerExtensionArgs: groupPointerExtensionArgs, + groupMemberPointerExtensionArgs: groupMemberPointerExtensionArgs, + }; + + return result; +} diff --git a/solana-program-library/spl-token-22/src/lib.rs b/solana-program-library/spl-token-22/src/lib.rs new file mode 100644 index 0000000..4e29f68 --- /dev/null +++ b/solana-program-library/spl-token-22/src/lib.rs @@ -0,0 +1,27 @@ +#![allow(dead_code)] +#![allow(unused_variables)] +#![allow(non_snake_case)] + +mod constants; +mod instruction; +mod utils; + +use instruction::parse_instruction; + +use serde_wasm_bindgen; +use std::panic; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen(start)] +pub fn run() { + panic::set_hook(Box::new(console_error_panic_hook::hook)); +} + +#[wasm_bindgen] +pub fn parse(join_key: &str, base58_str: &str, accounts_js: JsValue) -> JsValue { + let accounts: Vec = accounts_js.into_serde().unwrap(); + let decoded_bytes: Vec = bs58::decode(base58_str).into_vec().unwrap(); + let mut data = parse_instruction(decoded_bytes, accounts); + data.joinKey = join_key.to_string(); + serde_wasm_bindgen::to_value(&data).unwrap() +} diff --git a/solana-program-library/spl-token-22/src/utils.rs b/solana-program-library/spl-token-22/src/utils.rs new file mode 100644 index 0000000..f71d8e5 --- /dev/null +++ b/solana-program-library/spl-token-22/src/utils.rs @@ -0,0 +1,9 @@ +extern crate chrono; +use chrono::prelude::*; + +pub fn convert_to_date(ts: i64) -> String { + let nt = NaiveDateTime::from_timestamp_opt(ts, 0); + let dt: DateTime = DateTime::from_utc(nt.unwrap(), Utc); + let res = dt.format("%Y-%m-%d"); + return res.to_string(); +} diff --git a/solana-program-library/spl-token-22/utils/convert b/solana-program-library/spl-token-22/utils/convert new file mode 100755 index 0000000..439add3 Binary files /dev/null and b/solana-program-library/spl-token-22/utils/convert differ diff --git a/solana-program-library/spl-token-22/utils/convert.go b/solana-program-library/spl-token-22/utils/convert.go new file mode 100644 index 0000000..c58e5fb --- /dev/null +++ b/solana-program-library/spl-token-22/utils/convert.go @@ -0,0 +1,43 @@ +package main + +import ( + "bytes" + "compress/zlib" + "fmt" + "io" + "log" + "os" +) + +func main() { + // Read all data from stdin + bs, err := io.ReadAll(os.Stdin) + if err != nil { + log.Fatal(err) + } + + // Compress the data using zlib + var b bytes.Buffer + w := zlib.NewWriter(&b) + _, err = w.Write(bs) + if err != nil { + log.Fatal(err) + } + err = w.Close() + if err != nil { + log.Fatal(err) + } + + // Get the compressed data + compressedData := b.Bytes() + + // Build a string representation of the compressed byte slice + fmt.Print("const bytes = new Uint8Array([") + for i, c := range compressedData { + if i > 0 { + fmt.Print(",") + } + fmt.Print(c) + } + fmt.Println("]);") +} diff --git a/solana-program-library/spl-token-22/utils/script.sh b/solana-program-library/spl-token-22/utils/script.sh new file mode 100755 index 0000000..838f0f7 --- /dev/null +++ b/solana-program-library/spl-token-22/utils/script.sh @@ -0,0 +1,7 @@ +#!/bin/bash +name=${1} + +cd utils || exit +./convert < ../pkg/${name}_bg.wasm > wasm_bytes.js +/Users/harshvardhansharma/Downloads/google-cloud-sdk/bin/gsutil cp wasm_bytes.js gs://tt-bq-js/solana/${name}/wasm_bytes.js +/Users/harshvardhansharma/Downloads/google-cloud-sdk/bin/gsutil cp ../pkg/${name}.js gs://tt-bq-js/solana/${name}/ \ No newline at end of file diff --git a/solana-program-library/spl-token-22/utils/wasm_bytes.js b/solana-program-library/spl-token-22/utils/wasm_bytes.js new file mode 100644 index 0000000..d6dc892 --- /dev/null +++ b/solana-program-library/spl-token-22/utils/wasm_bytes.js @@ -0,0 +1 @@ +const bytes = new Uint8Array([120,156,236,253,13,120,29,197,117,48,142,207,199,238,222,189,119,119,229,43,217,6,99,25,152,189,118,18,153,224,216,124,73,142,157,182,26,21,249,35,198,113,146,230,187,121,203,167,73,178,34,16,27,7,210,150,162,27,112,136,0,67,20,98,64,128,0,1,14,200,70,198,34,56,68,9,78,43,39,110,235,246,117,243,234,77,77,95,183,113,19,191,137,223,188,42,117,83,61,141,211,191,255,191,58,225,247,156,51,179,187,115,247,222,107,73,198,105,211,254,242,248,177,238,158,217,153,51,231,156,57,115,230,204,215,89,114,245,205,159,164,132,16,250,29,122,238,85,172,187,155,118,95,197,187,241,135,117,119,19,124,38,87,209,110,114,149,213,141,143,118,183,249,75,187,175,114,186,117,10,237,166,183,95,69,104,183,202,73,187,33,161,27,243,221,222,77,174,34,36,206,9,111,110,131,63,183,211,238,171,242,42,237,246,219,111,39,87,229,186,147,12,252,118,252,1,76,183,199,5,111,199,74,255,168,27,105,249,35,77,195,109,10,188,77,131,183,43,16,126,216,9,94,228,183,94,243,177,185,87,94,121,235,53,31,187,242,198,245,183,94,121,233,146,203,214,95,124,241,245,151,188,125,201,101,109,173,215,174,191,152,20,146,12,159,184,241,186,143,173,191,241,202,155,174,137,214,95,187,233,202,235,54,222,244,169,43,55,174,191,158,88,144,97,182,145,225,230,77,27,63,113,35,98,35,36,131,125,233,213,173,215,95,124,201,210,171,91,215,95,187,126,105,235,250,171,21,246,121,42,195,205,155,174,190,182,235,202,37,235,175,107,187,236,186,214,165,151,181,93,118,205,146,235,47,185,150,48,35,203,250,141,27,111,218,120,101,219,101,151,92,122,205,210,245,111,191,250,146,214,235,47,186,250,154,75,85,150,230,106,26,175,189,225,166,27,215,35,145,126,134,144,182,165,215,175,191,230,162,37,75,175,105,189,180,237,226,182,139,46,81,132,152,92,220,248,233,79,94,179,126,35,114,97,202,232,230,245,155,174,188,164,109,233,37,109,75,46,190,228,250,75,174,107,187,116,201,250,165,132,103,51,44,93,210,118,221,101,215,47,185,230,250,107,47,190,244,234,171,219,84,134,89,6,118,197,72,165,136,244,171,107,62,241,177,79,220,184,233,202,235,55,222,244,201,43,63,221,122,41,105,132,12,231,24,25,162,155,111,186,241,202,155,215,111,252,196,213,55,124,226,15,214,43,230,207,54,222,95,183,254,154,79,127,76,183,130,122,91,52,222,110,250,248,198,155,110,37,140,191,64,135,104,206,247,57,229,132,16,143,49,203,227,116,6,37,132,50,78,131,128,49,194,154,136,237,230,130,153,140,17,50,139,16,98,17,194,8,39,140,80,194,102,51,110,219,252,44,135,18,187,129,57,140,185,140,18,135,216,156,115,78,92,232,42,132,113,66,44,151,19,139,184,220,177,41,227,44,199,72,3,99,204,99,128,137,204,32,78,238,236,115,154,109,102,51,139,16,234,0,126,139,17,66,45,192,132,197,9,37,13,148,178,66,62,159,207,115,203,178,233,167,232,251,223,111,115,74,26,157,60,237,166,178,92,30,37,94,238,227,57,231,147,235,63,121,211,198,223,103,132,111,252,244,141,228,125,246,167,174,222,120,243,122,82,156,97,48,125,253,198,245,235,201,243,180,209,72,250,228,213,55,220,112,211,181,100,99,147,145,182,113,189,74,220,76,139,21,250,124,245,198,77,228,125,249,94,74,137,164,222,251,118,210,229,67,244,89,186,157,190,64,127,115,217,19,244,41,250,52,189,238,126,250,225,251,232,253,244,94,250,8,221,74,239,163,247,209,47,208,94,250,69,122,15,29,166,61,180,251,183,183,208,103,233,89,119,209,65,122,55,29,164,219,232,151,169,188,241,21,218,71,95,161,191,223,246,177,87,48,121,55,125,153,14,208,111,208,17,186,244,45,43,63,185,139,118,126,252,21,250,12,253,173,79,60,76,251,233,99,244,166,57,23,62,73,223,219,22,61,78,191,70,191,78,63,79,223,249,145,219,119,208,135,104,225,222,127,201,13,209,131,255,204,217,54,218,61,251,246,249,68,142,122,93,165,252,2,34,242,130,182,178,119,171,159,43,68,94,144,86,182,74,228,229,126,18,149,72,241,102,145,111,97,239,14,175,128,159,85,225,38,145,23,92,101,230,42,51,131,204,73,182,14,149,109,173,200,203,246,46,97,21,3,128,219,67,42,242,240,112,121,137,169,178,76,149,165,70,217,85,161,167,80,56,34,47,15,145,168,131,180,113,34,242,178,76,151,145,171,68,190,163,92,46,151,139,109,28,74,59,170,180,215,202,86,177,118,214,205,218,133,99,181,139,188,60,72,162,176,65,146,144,242,118,65,133,23,45,34,164,68,100,190,171,196,228,217,107,36,21,108,147,252,82,185,108,109,232,220,24,48,225,8,42,105,84,162,43,3,226,41,156,239,246,68,94,218,173,108,208,83,204,139,188,28,244,162,226,71,125,234,105,17,97,109,80,31,145,223,35,43,176,206,215,9,146,167,145,33,119,146,180,178,1,79,228,59,172,54,222,231,73,43,244,133,19,18,73,67,206,219,161,172,160,107,160,40,176,92,64,74,11,72,41,3,74,27,21,165,141,38,165,164,146,82,162,41,101,53,40,181,12,74,161,46,38,47,92,105,193,207,223,147,21,1,23,60,160,34,47,115,53,10,230,60,245,50,229,35,67,41,71,74,121,74,105,65,81,90,152,2,165,181,100,154,139,41,245,144,186,149,1,180,245,236,26,25,109,47,67,9,67,74,24,82,194,207,0,37,118,76,137,224,178,180,50,224,170,1,63,170,101,161,90,116,208,139,116,169,134,226,76,32,99,200,43,17,248,29,244,36,91,17,88,115,69,94,46,141,32,97,216,43,241,226,109,34,127,25,123,71,184,157,66,202,82,65,4,47,190,68,195,70,128,250,61,209,164,52,167,207,139,66,58,159,72,209,85,34,11,8,54,87,19,208,204,58,3,34,45,65,91,152,85,42,72,186,169,228,11,38,152,240,87,55,151,152,96,210,90,219,92,242,165,127,67,200,132,47,159,127,117,199,171,100,181,100,155,194,38,214,46,10,22,104,166,213,202,102,9,34,10,210,191,161,149,205,1,73,180,48,210,202,138,160,198,4,88,155,229,9,34,154,4,19,68,22,163,226,21,130,180,48,43,100,240,67,58,45,144,173,223,202,44,16,113,43,35,62,131,246,249,108,185,92,254,204,138,128,10,160,141,120,197,50,37,128,75,68,11,80,8,3,94,216,4,191,125,94,232,123,194,23,77,210,191,33,42,17,177,157,10,190,179,67,220,181,185,141,89,130,136,198,86,70,148,29,24,240,128,209,38,232,38,146,132,92,245,123,20,214,21,33,241,169,231,41,73,133,5,133,213,231,105,155,141,120,145,60,248,200,94,82,92,16,22,146,116,104,11,124,115,20,223,8,82,220,148,20,46,17,209,84,188,147,42,140,32,160,226,60,79,18,47,244,129,148,69,228,42,73,35,236,193,168,90,186,219,0,61,37,69,79,137,172,182,218,121,59,171,248,103,232,159,191,214,106,23,160,134,146,173,14,114,32,99,46,207,87,105,193,202,128,98,199,146,98,69,224,8,142,157,144,9,46,47,92,17,36,38,69,228,101,49,130,182,72,84,22,30,86,55,23,175,148,63,31,218,75,22,17,50,23,232,152,165,164,84,12,137,156,85,108,44,209,206,192,21,84,158,5,45,84,240,42,204,15,17,116,109,192,179,125,164,65,245,145,134,186,125,132,132,20,218,218,196,228,119,6,249,164,239,165,8,1,29,87,232,120,61,116,216,128,31,234,12,124,248,125,95,113,158,239,67,75,137,41,48,186,64,233,129,8,25,50,74,58,3,71,16,80,69,95,16,228,23,74,181,178,34,168,25,52,43,232,188,95,156,231,9,20,4,143,77,73,44,219,37,83,168,242,82,37,219,37,169,108,109,65,193,22,17,211,74,229,101,203,20,112,93,168,112,181,164,184,120,220,78,182,87,203,42,129,224,1,249,156,41,32,159,167,144,207,137,145,7,212,35,158,160,48,18,192,47,224,243,193,72,183,178,34,107,23,62,72,70,11,169,51,160,32,37,159,122,169,10,183,128,139,69,40,7,12,110,4,157,63,96,104,117,176,11,10,186,136,88,146,175,12,104,252,186,4,6,162,132,118,194,42,241,22,70,26,45,34,120,11,179,58,3,34,24,54,1,252,161,88,141,160,97,193,19,5,213,61,147,222,248,33,101,195,223,135,93,16,108,5,140,219,94,113,158,167,200,149,36,100,202,250,190,91,228,59,104,27,215,94,136,232,40,126,80,117,80,39,33,191,195,106,23,29,98,109,20,206,84,214,163,65,172,13,1,105,35,111,23,222,133,56,240,147,85,86,187,188,163,188,15,84,219,5,123,245,58,221,80,162,242,187,15,239,37,186,99,188,78,87,4,57,53,80,138,6,232,180,78,72,5,43,145,0,251,2,19,13,178,60,50,74,138,215,16,15,213,159,130,246,47,187,65,240,168,196,151,17,213,84,33,21,92,186,183,132,92,16,73,187,74,4,149,159,91,136,113,93,96,9,38,156,72,96,110,6,185,153,39,26,225,183,81,160,9,244,196,76,212,5,38,26,224,255,154,230,144,136,142,144,139,181,202,135,129,250,46,130,209,130,8,24,101,226,10,1,167,36,41,78,193,161,106,30,128,225,4,44,1,23,76,178,117,56,240,211,91,66,162,10,208,174,144,10,7,7,114,190,136,144,208,19,28,107,64,78,132,167,25,234,66,134,104,84,201,16,98,69,155,197,84,103,16,249,133,236,138,54,24,205,208,117,234,131,223,166,86,54,12,191,133,86,54,4,191,126,58,216,134,57,53,136,134,51,36,9,9,216,124,112,211,160,189,37,9,157,14,18,110,7,96,166,36,232,191,53,130,111,234,118,149,236,5,68,178,240,70,97,203,55,107,126,109,89,212,142,161,45,103,195,19,166,145,229,116,129,176,33,221,21,182,252,51,146,100,94,146,100,190,204,204,124,185,202,220,34,108,249,227,52,243,24,73,114,191,74,204,236,215,169,236,171,132,45,239,162,73,246,137,52,251,207,42,178,111,166,42,255,199,133,45,71,32,63,24,45,91,14,194,227,114,10,143,189,52,41,250,16,62,66,42,164,12,235,162,3,84,161,122,66,195,61,0,159,72,113,29,73,17,140,167,20,237,79,83,199,146,84,72,153,208,104,14,233,223,81,64,215,199,146,220,189,233,99,79,242,8,63,101,38,108,249,199,44,169,97,48,205,184,147,153,60,239,97,154,112,40,48,158,230,154,72,31,79,164,143,223,79,49,238,79,83,255,42,193,8,41,71,152,194,124,88,99,30,5,120,148,167,164,240,164,224,46,72,109,197,212,39,210,12,61,105,134,251,184,137,121,132,107,90,185,170,161,95,195,101,128,39,210,82,39,210,199,178,149,60,254,56,173,97,44,205,240,106,69,13,227,26,243,81,141,121,63,192,195,41,142,145,244,113,52,125,124,214,74,48,247,166,169,15,90,38,230,65,75,97,222,102,105,197,0,120,34,205,125,34,125,44,219,41,205,41,230,177,52,195,171,21,152,199,53,230,163,26,243,126,139,181,179,219,245,63,101,116,111,143,167,63,250,41,254,31,255,173,245,212,158,164,164,111,178,185,210,28,241,191,74,104,234,255,98,124,237,85,184,186,107,224,237,206,252,102,49,116,159,18,99,37,238,238,12,212,173,252,72,112,242,75,55,181,48,183,212,108,181,139,102,48,175,179,37,13,155,196,77,48,150,206,2,59,123,142,180,194,167,168,164,225,197,146,134,151,72,22,206,149,52,244,37,13,215,72,26,46,147,52,252,148,180,194,15,75,26,62,13,153,150,74,43,44,74,26,46,148,52,124,6,18,206,151,52,220,32,105,88,144,52,156,35,105,232,73,26,110,131,23,82,210,240,35,146,134,95,6,96,185,164,225,70,73,195,103,1,120,14,254,220,44,105,56,8,15,23,74,26,158,39,105,24,156,150,196,255,67,254,137,89,139,8,105,184,128,80,198,45,219,201,185,249,130,231,7,13,51,138,141,77,51,103,205,62,235,236,57,187,104,63,125,132,246,209,135,233,67,244,65,250,69,122,47,189,135,222,77,63,79,55,211,59,233,31,126,230,214,127,165,94,226,86,201,134,98,99,41,232,12,118,81,17,72,39,146,63,121,98,148,44,36,216,45,2,57,158,2,51,160,13,105,103,240,59,96,223,114,81,137,67,138,114,137,4,81,254,81,113,3,140,159,43,130,247,10,187,133,77,228,194,179,224,247,88,46,60,27,126,199,115,97,65,192,144,234,71,170,200,44,93,68,229,253,45,157,247,183,117,222,133,194,22,179,91,217,86,87,216,226,156,86,214,235,34,219,179,173,118,97,139,102,201,186,244,171,89,146,69,240,22,4,66,67,6,126,151,45,251,203,163,164,149,29,203,9,27,28,195,113,248,45,59,145,162,187,120,185,176,47,34,101,167,195,122,111,128,153,129,23,180,56,110,84,162,197,86,97,47,34,227,57,96,65,126,23,185,180,23,145,127,204,41,211,49,236,70,37,71,216,242,100,46,42,121,11,153,182,34,95,117,163,146,47,108,249,89,55,210,162,178,133,189,152,252,67,110,57,29,203,193,179,60,158,139,74,13,152,127,208,21,246,66,96,243,43,232,223,22,23,169,234,128,43,57,145,3,129,132,174,22,4,247,15,34,125,247,59,138,190,59,220,104,33,85,3,165,236,113,192,65,78,73,232,181,35,65,23,242,120,68,181,35,65,226,188,194,94,76,95,203,45,167,3,142,176,5,16,81,26,162,109,188,12,16,60,244,216,170,102,108,199,240,211,64,206,63,228,194,91,52,13,183,10,91,126,35,23,161,183,180,76,51,70,199,114,203,233,8,200,244,103,185,72,248,154,101,34,156,184,126,97,47,228,131,110,27,31,207,41,14,90,88,217,9,57,252,110,118,66,215,255,174,169,123,141,74,247,94,0,221,43,70,114,219,19,163,68,87,21,72,55,146,253,166,46,110,173,214,197,117,186,253,156,250,186,248,46,173,95,243,52,75,231,106,253,58,79,56,53,116,145,74,182,54,88,171,139,124,84,23,249,140,46,50,7,139,204,209,69,68,82,132,175,8,174,208,69,132,46,50,95,23,57,31,139,44,208,69,46,60,181,198,203,198,208,213,206,33,245,191,101,138,169,73,137,105,167,22,211,196,227,163,100,49,33,203,99,49,141,63,110,136,233,200,227,85,98,122,231,228,93,118,117,93,49,77,167,203,114,148,15,72,177,171,184,70,90,146,192,212,75,101,230,58,51,213,153,139,98,54,216,146,115,192,15,255,125,217,164,56,247,127,106,114,237,42,174,135,168,8,58,14,30,253,220,79,95,254,206,223,126,229,95,42,24,91,57,57,99,43,116,253,151,234,250,219,116,253,75,107,50,134,237,223,169,139,188,93,23,121,135,46,178,92,243,87,217,254,245,26,158,194,212,241,119,164,21,46,148,36,156,35,137,255,62,131,181,156,98,237,121,104,80,30,201,159,246,143,146,22,130,30,92,32,39,82,32,230,243,183,39,231,179,99,250,124,74,93,228,93,186,200,127,211,69,54,78,159,207,247,27,124,126,192,224,211,81,124,238,0,62,173,72,30,232,55,20,119,127,53,159,191,165,249,44,212,231,243,55,235,242,89,168,171,168,85,68,75,39,116,65,6,107,130,15,196,29,14,29,8,82,105,157,124,69,253,118,170,186,217,54,179,149,250,251,171,186,217,59,52,245,172,62,245,203,235,118,51,86,151,250,117,58,239,239,233,188,207,82,69,250,135,36,241,63,92,45,235,65,45,235,241,199,12,89,31,125,172,74,214,111,159,92,167,150,78,107,28,71,157,106,59,165,29,169,173,83,239,214,121,175,212,121,55,40,157,250,176,154,36,251,31,49,120,180,20,143,207,1,143,223,122,237,47,126,234,152,28,93,54,57,71,151,78,203,204,33,71,151,156,82,8,211,234,37,31,145,22,218,57,224,234,119,171,245,236,89,173,103,229,199,12,61,59,241,104,149,158,93,52,121,47,89,82,143,79,233,135,110,205,158,130,188,46,174,107,249,10,211,229,245,163,102,199,242,255,196,236,86,129,98,247,203,192,174,29,201,111,62,106,140,94,35,213,236,46,154,188,89,47,156,126,179,190,245,52,154,245,2,157,247,173,58,239,133,50,64,59,2,236,250,251,76,22,61,197,226,54,96,49,23,201,59,31,53,90,244,228,35,85,44,46,156,156,197,150,233,179,248,150,51,194,162,151,178,248,109,147,197,25,138,197,103,52,139,47,61,98,180,226,80,134,69,214,25,188,233,148,174,26,3,22,23,212,53,237,181,92,53,6,44,206,175,203,98,45,87,141,129,171,86,170,171,227,245,93,181,106,29,103,210,90,99,181,99,145,37,17,64,181,29,30,116,116,180,227,227,137,217,210,93,29,252,158,104,150,249,174,112,182,152,37,243,81,120,142,152,181,144,208,112,23,245,175,172,158,146,61,173,167,100,63,236,51,100,123,184,175,74,182,98,114,217,158,63,125,217,158,55,125,217,158,91,215,163,248,247,145,237,85,181,100,187,147,250,87,87,91,159,167,180,245,121,202,148,109,127,95,85,215,108,158,188,107,206,157,254,48,121,206,153,27,38,175,209,3,202,181,213,230,103,64,247,205,255,251,176,97,126,142,60,92,197,227,217,147,243,120,214,244,205,207,236,51,55,112,94,171,121,188,174,122,78,244,164,158,19,13,61,92,57,39,218,246,176,217,174,25,158,157,206,96,166,230,153,214,228,217,1,158,155,234,242,76,107,240,236,0,207,141,117,121,166,117,121,174,179,242,177,197,86,43,31,61,182,160,48,229,183,163,98,43,235,86,235,5,157,184,96,112,159,94,25,48,22,30,244,202,0,46,81,36,171,3,15,184,81,102,21,195,88,44,248,170,27,9,146,93,183,232,117,227,117,139,100,213,34,94,158,248,3,69,173,90,104,121,192,77,150,85,135,221,100,89,245,171,174,185,48,14,184,58,52,146,22,181,40,163,80,21,239,160,146,120,225,31,170,13,11,133,45,94,103,128,142,143,56,19,58,47,139,20,102,131,84,218,235,226,78,70,188,224,208,226,191,104,14,80,5,165,32,79,104,175,170,199,84,144,114,165,66,116,6,51,148,58,212,84,134,122,174,84,65,79,90,191,82,99,170,254,184,86,203,195,15,85,170,229,193,135,12,181,60,240,80,149,90,6,147,171,165,63,45,181,172,167,143,191,202,58,118,219,153,214,177,63,82,251,92,25,29,27,35,89,37,123,149,212,209,178,235,82,45,91,229,239,50,219,123,166,106,239,126,104,239,25,145,252,218,67,134,169,117,35,57,108,182,247,96,166,189,73,103,80,48,245,142,66,211,209,201,244,78,16,73,87,6,87,75,226,95,83,237,142,61,166,77,254,23,204,122,123,30,202,104,187,59,169,182,215,81,152,233,45,199,146,169,44,199,66,23,170,177,36,75,245,146,44,75,150,100,221,95,242,146,236,75,84,80,193,78,189,36,187,61,89,146,165,53,150,100,89,102,73,150,85,44,201,210,233,46,201,130,58,132,183,235,37,217,110,77,67,153,78,121,77,150,214,92,147,221,94,99,77,246,185,26,22,236,81,109,193,142,63,88,105,193,142,61,104,104,214,209,7,51,154,101,39,43,234,245,53,186,142,110,109,118,148,110,149,29,65,148,138,20,231,202,166,208,101,221,42,95,105,46,180,9,150,252,172,118,4,125,197,75,166,195,179,112,174,36,158,255,140,201,212,28,197,212,35,154,169,3,38,19,110,36,247,153,240,158,44,83,252,52,6,135,57,122,112,216,105,82,81,84,84,244,197,11,74,102,173,253,217,90,233,105,116,210,217,210,93,103,181,203,162,170,92,156,179,144,224,146,214,228,157,176,8,74,174,58,225,123,96,78,135,26,162,244,163,120,7,173,148,165,230,226,97,205,197,102,147,139,147,91,43,184,192,94,52,125,125,152,45,249,90,44,90,135,106,82,188,28,52,186,236,148,182,211,142,215,233,157,96,57,158,164,254,227,212,19,231,180,16,2,115,162,126,45,190,144,176,118,60,250,44,152,96,248,176,174,185,68,139,141,37,142,39,212,172,174,69,132,72,190,1,1,34,104,241,43,116,174,167,14,88,185,234,199,18,68,240,86,6,182,140,120,98,150,180,163,144,136,102,105,119,133,201,108,68,237,201,241,118,193,133,187,34,102,89,118,11,46,233,38,64,187,170,185,196,241,4,35,95,211,92,252,96,92,202,131,236,171,3,61,151,41,121,194,141,66,159,117,67,106,87,201,17,96,141,156,53,205,37,24,243,45,68,189,18,143,51,197,27,36,250,164,10,145,52,242,153,39,137,36,242,120,121,148,20,175,38,30,228,18,78,241,37,58,87,56,120,164,73,56,152,85,56,145,23,18,225,8,55,42,185,130,173,14,136,238,62,161,35,236,203,128,136,33,250,238,128,10,103,167,62,181,24,110,167,98,136,62,23,54,249,79,160,18,149,157,40,100,137,34,0,211,114,174,58,162,70,210,99,90,224,231,202,147,95,75,172,6,65,43,242,181,68,47,8,90,17,19,62,154,0,184,20,70,59,3,34,104,199,163,229,114,121,128,183,225,65,76,210,202,72,229,122,25,212,9,110,206,50,226,10,34,251,62,183,151,168,166,162,173,12,154,26,33,38,211,134,67,117,1,126,144,97,152,27,249,253,138,39,161,52,67,172,107,46,222,38,209,216,75,210,202,38,112,156,104,97,150,82,63,120,36,165,34,232,32,195,195,144,130,90,237,73,27,44,34,68,157,22,138,42,199,60,48,105,160,184,208,149,228,32,184,72,104,214,46,215,71,127,184,50,203,134,18,179,216,158,165,122,36,220,226,31,104,149,113,227,105,175,39,92,81,212,135,170,108,245,82,210,168,228,34,217,76,210,174,18,195,182,197,113,109,123,188,229,210,148,28,54,195,158,130,21,89,237,162,88,156,231,9,39,120,140,250,79,82,64,204,229,200,29,163,164,120,21,241,228,241,199,246,18,249,86,185,229,193,81,82,252,195,20,30,202,192,7,51,240,9,13,215,26,65,159,164,73,182,190,135,42,139,237,201,192,19,25,248,72,6,222,242,112,37,60,150,129,71,51,240,112,6,222,210,87,9,159,204,188,63,150,129,15,100,242,239,201,192,67,25,184,255,145,76,125,25,248,100,38,255,177,44,156,201,127,56,3,31,200,192,123,50,240,224,163,149,112,95,6,238,201,192,227,25,248,80,6,222,159,129,183,61,86,9,111,205,192,155,51,240,193,12,188,47,3,239,206,192,91,250,51,242,202,188,63,150,129,71,50,249,7,51,240,145,12,60,150,129,251,30,207,200,39,3,159,200,150,207,188,31,205,192,195,25,120,243,19,149,240,241,204,251,67,153,247,251,51,240,72,6,30,124,162,126,55,43,167,221,172,231,201,12,27,49,154,161,207,142,18,57,95,30,188,51,65,51,137,147,208,148,58,9,239,85,190,152,225,35,120,18,143,202,43,155,69,228,130,72,80,201,43,87,238,142,229,194,57,233,34,7,88,45,47,228,210,13,221,216,111,1,159,101,78,72,197,194,228,132,207,28,244,97,194,175,81,61,2,77,241,104,71,53,117,89,188,48,45,36,254,195,244,52,40,142,169,205,105,47,171,22,197,254,163,83,241,186,114,134,215,85,155,125,73,124,238,101,120,169,145,199,96,99,170,251,239,106,195,211,11,9,252,153,231,127,113,138,40,210,85,87,15,112,101,38,133,250,24,155,152,221,121,42,247,45,105,45,116,225,134,146,209,143,226,158,145,133,106,84,115,86,105,227,188,178,68,150,145,30,91,90,130,200,96,117,64,231,170,233,92,7,109,195,147,161,84,87,120,244,73,168,123,92,215,61,164,86,27,6,221,40,30,218,101,143,29,181,50,92,118,40,235,69,14,220,188,45,94,32,152,156,37,72,241,6,160,15,125,162,142,114,249,182,59,149,47,212,225,246,60,23,18,112,138,64,230,117,94,121,37,87,190,78,55,72,43,29,196,113,50,107,206,45,177,49,210,53,15,213,117,238,199,73,100,245,196,210,201,172,182,12,187,81,58,183,147,47,187,48,213,204,76,46,211,121,110,213,242,202,29,177,106,67,203,226,228,114,51,21,72,193,118,218,33,122,158,3,31,209,21,241,218,201,85,122,50,91,185,82,242,16,166,188,156,210,25,207,66,199,157,116,182,217,99,75,63,116,227,179,205,68,146,144,249,159,159,164,199,213,214,51,221,227,28,115,94,243,192,84,122,152,243,6,77,150,65,142,91,69,14,144,226,134,69,105,133,174,34,233,11,111,208,70,105,100,202,54,221,125,10,73,169,69,147,83,116,108,138,102,99,10,140,85,148,172,48,36,83,47,5,70,132,122,161,231,111,158,18,255,153,137,27,245,88,55,174,36,225,89,160,203,229,140,84,101,240,108,188,156,210,50,82,53,218,26,136,64,179,119,81,255,115,20,84,253,57,173,238,160,231,51,50,106,42,169,255,201,55,204,202,231,168,108,56,83,188,84,35,2,21,41,87,49,210,144,237,111,93,167,209,221,212,218,30,234,120,157,13,181,55,222,206,119,81,25,36,180,158,166,80,82,4,208,176,59,169,127,91,86,28,129,33,14,255,61,103,94,20,67,167,43,10,16,132,244,12,234,80,42,254,239,159,6,50,82,129,71,18,255,51,89,41,100,222,191,43,150,3,149,126,132,119,92,166,98,129,227,134,251,60,149,51,227,115,138,254,167,167,96,130,49,119,186,184,244,230,185,25,179,167,81,109,50,86,152,154,213,10,211,82,17,200,179,35,249,111,119,26,107,234,197,72,30,191,179,114,241,238,152,9,31,77,1,116,78,246,228,148,115,50,146,51,79,184,11,91,159,79,159,162,163,146,44,79,251,86,234,155,32,106,229,155,140,228,12,223,100,204,97,237,130,52,48,139,36,131,139,45,71,114,81,188,146,61,189,157,149,59,114,21,59,43,149,71,125,31,180,107,236,172,148,43,135,254,30,59,89,8,144,212,183,61,181,98,112,44,87,114,91,153,246,18,148,99,80,226,173,236,96,206,207,121,122,93,152,171,134,82,26,126,58,30,214,152,83,203,195,162,197,11,4,141,61,44,77,10,214,172,148,206,83,116,161,160,147,195,217,35,57,243,112,54,136,232,105,229,42,85,238,4,112,189,19,224,84,236,4,20,148,148,75,94,86,80,184,0,175,246,2,252,202,189,128,237,234,120,118,92,33,75,218,203,203,180,85,90,211,107,78,69,59,245,85,236,128,61,94,107,7,12,93,37,191,106,253,191,55,38,98,132,234,230,103,230,82,255,128,163,90,24,219,190,144,144,3,122,193,179,203,253,61,182,50,141,182,252,55,229,131,218,232,193,97,129,50,46,71,61,104,167,218,183,3,83,94,115,210,29,178,30,236,3,125,134,223,119,31,166,60,94,185,67,86,6,102,176,201,23,145,59,114,203,136,210,170,133,188,199,110,35,63,205,169,60,227,206,114,58,232,170,244,94,87,179,187,157,182,145,255,9,188,252,11,146,119,40,23,165,156,46,100,99,185,54,250,90,14,29,153,83,107,44,157,44,135,167,248,77,238,8,229,210,235,89,250,81,57,84,32,2,153,242,222,145,50,109,222,19,202,169,77,199,65,189,233,88,118,132,43,56,250,111,120,19,73,97,77,36,118,2,83,78,24,41,101,244,157,203,134,84,127,140,121,118,152,123,147,152,210,227,24,123,147,152,114,159,99,72,30,166,39,234,222,18,72,120,208,85,119,151,212,0,161,239,47,97,184,5,48,56,167,189,167,32,155,211,97,250,124,47,57,115,68,43,207,140,100,22,246,241,204,17,171,187,190,207,113,232,81,69,102,77,114,254,172,57,116,5,147,124,181,213,142,84,8,18,94,141,70,76,143,96,115,34,193,78,53,87,77,10,165,174,93,232,235,253,101,59,89,19,25,216,92,185,70,82,206,192,189,49,156,12,81,179,213,16,213,38,2,25,68,242,155,155,43,135,164,17,19,30,222,252,235,33,233,215,67,210,127,137,33,233,235,191,30,146,254,211,13,73,195,85,67,210,72,213,144,52,106,101,135,164,103,171,134,164,222,170,33,233,193,122,67,210,160,49,36,109,51,134,164,158,55,54,36,201,217,122,40,82,221,18,204,194,191,251,112,52,187,106,56,186,38,177,11,211,24,142,174,169,49,28,89,233,78,76,102,248,217,159,129,15,197,176,129,68,29,145,244,66,24,167,115,213,39,31,46,85,115,167,158,207,85,14,84,101,19,62,241,235,129,234,215,3,213,127,141,129,234,27,103,104,160,98,191,30,168,166,50,80,177,51,50,119,226,85,115,39,94,53,119,170,26,168,126,204,171,230,78,188,106,238,196,235,205,157,184,49,119,226,198,220,137,11,22,80,61,66,177,105,140,80,115,42,70,40,47,44,84,154,104,255,114,47,57,117,79,39,63,117,127,170,33,171,222,81,223,170,33,75,80,28,174,82,210,88,120,109,245,192,17,130,121,134,60,53,118,1,113,87,238,148,123,0,38,98,68,234,243,116,27,252,115,153,185,84,6,30,136,97,226,133,191,229,51,99,232,58,75,13,93,23,138,64,54,68,242,59,153,161,107,191,9,143,38,128,246,48,148,148,147,243,103,167,184,33,30,51,53,181,171,49,120,181,33,110,151,218,119,136,166,122,179,234,44,117,179,106,133,218,73,210,77,112,26,219,47,33,49,164,125,40,35,221,241,12,124,34,134,169,127,182,33,106,161,68,253,86,17,200,57,145,28,184,203,16,109,49,146,125,119,85,138,190,215,132,123,238,170,244,26,134,244,161,242,65,187,102,236,144,236,191,41,199,57,153,190,191,145,139,253,141,18,211,100,41,143,99,208,54,60,142,190,196,185,17,164,193,41,16,234,121,158,237,9,229,83,138,102,201,187,146,178,92,149,157,181,136,176,208,199,248,88,83,161,72,18,240,240,98,170,28,229,69,0,222,18,169,141,89,144,206,192,194,60,86,90,183,149,228,224,161,231,59,83,58,87,109,84,107,165,222,212,160,29,21,223,106,122,83,163,152,252,243,28,90,71,180,151,127,142,41,155,221,72,47,187,219,234,100,49,190,31,209,187,231,110,180,152,146,229,116,220,70,240,30,109,127,95,179,133,118,153,74,48,64,253,131,163,70,54,24,217,199,29,177,157,118,44,237,121,14,109,204,113,28,175,64,141,229,189,110,116,9,33,225,48,238,70,191,134,42,142,187,210,158,164,48,3,90,200,199,157,112,59,6,48,51,71,42,199,28,169,188,86,118,208,241,11,241,201,102,87,123,97,158,234,80,147,250,95,251,20,19,163,118,234,127,245,229,162,86,54,106,79,193,255,194,186,227,61,98,181,237,58,105,203,120,233,126,8,53,136,86,100,107,110,232,41,154,236,101,116,55,204,99,2,224,194,145,140,251,11,13,75,146,65,80,53,234,215,42,26,85,249,185,208,84,92,59,24,192,209,16,109,163,119,228,210,179,4,232,20,67,30,60,98,126,143,27,93,130,85,110,113,163,139,8,9,95,136,79,17,224,113,198,178,58,112,40,108,249,205,10,149,88,76,94,113,81,91,94,160,29,197,187,54,67,107,15,41,109,192,135,37,160,22,146,133,36,235,178,212,104,102,236,64,248,174,210,209,29,180,179,142,238,161,156,58,79,241,139,28,10,10,197,240,131,156,58,79,241,185,10,65,252,171,206,1,14,16,58,181,133,197,20,207,83,37,71,40,65,137,149,106,190,150,131,246,67,150,253,58,174,238,228,83,147,83,206,69,84,135,137,5,135,254,46,60,23,106,222,21,64,10,161,243,96,11,59,49,83,216,250,204,244,106,199,114,216,130,174,44,255,130,111,144,238,45,120,6,21,207,125,253,157,173,39,4,175,217,202,133,218,165,15,157,252,121,46,17,146,28,116,212,116,96,212,112,199,250,220,168,180,40,117,142,99,127,189,244,182,74,247,24,106,31,201,181,113,53,105,88,76,199,237,229,244,144,157,56,186,232,182,11,14,179,191,216,177,133,202,71,177,203,28,114,84,168,66,69,216,40,79,143,189,46,100,99,14,170,238,136,19,235,39,87,193,208,12,41,12,114,240,244,13,41,12,56,58,240,217,19,60,51,59,56,100,171,80,104,242,62,30,137,183,165,173,199,35,177,200,196,128,46,56,23,120,198,71,80,233,110,218,24,58,184,141,218,96,99,48,166,201,53,152,78,150,195,83,214,27,68,80,34,73,192,55,80,163,36,228,27,204,225,226,160,111,208,126,60,206,6,109,226,116,24,141,81,48,67,191,57,58,244,155,163,28,113,104,5,128,123,93,225,10,175,120,7,213,50,38,137,55,13,2,76,21,21,132,203,18,225,130,8,121,58,227,225,230,169,164,251,184,49,197,66,5,112,84,3,153,141,96,138,61,21,45,24,72,117,200,1,212,83,57,225,249,73,47,74,85,239,92,128,47,42,98,175,215,9,91,133,23,46,18,126,248,54,65,194,203,208,229,74,188,95,191,43,93,74,202,79,190,148,84,152,214,82,18,222,166,246,116,145,248,232,87,167,46,34,129,66,44,54,71,23,171,184,81,29,95,246,251,13,93,236,55,117,177,101,88,100,129,46,82,121,163,122,133,206,187,82,231,93,131,55,170,3,199,159,147,50,233,79,206,100,48,125,38,27,78,143,201,25,103,142,73,203,63,59,157,97,85,92,234,100,128,133,77,170,51,2,157,114,186,50,96,245,213,38,51,113,146,196,255,68,42,217,25,147,75,182,120,70,86,34,5,174,68,178,53,193,204,41,83,154,8,135,117,2,17,147,209,89,255,54,243,244,233,76,87,76,167,34,81,234,207,242,252,166,216,1,98,210,143,240,174,69,118,50,244,30,93,217,123,117,101,31,158,186,36,62,150,174,217,214,10,50,48,158,11,159,162,245,176,37,139,182,19,185,176,39,62,76,121,55,53,244,129,158,26,123,253,41,116,157,202,244,25,59,191,49,157,199,125,62,115,56,60,3,239,207,192,135,50,240,120,6,62,113,87,230,240,123,230,125,95,6,30,204,226,203,148,223,159,129,15,101,224,193,12,60,114,87,114,10,125,242,149,244,169,200,45,109,114,234,133,203,240,28,245,52,244,207,11,207,151,212,127,63,46,74,8,159,86,111,252,182,168,141,223,7,123,50,51,99,19,238,233,249,245,122,250,175,215,211,255,75,172,167,191,242,235,141,223,255,116,27,191,227,44,187,158,62,193,178,235,233,39,88,118,61,253,251,44,187,158,190,159,101,215,211,255,138,213,89,79,63,194,210,245,244,195,44,93,79,31,101,103,230,44,210,236,170,115,218,21,110,216,251,126,37,54,132,175,171,179,186,126,154,67,91,22,33,245,115,233,149,179,158,204,90,122,6,30,142,97,226,91,213,231,107,223,172,206,215,254,223,158,202,243,181,71,50,99,218,33,19,30,203,140,105,70,8,145,120,120,249,85,9,35,162,229,121,230,194,136,220,67,85,48,248,76,28,145,65,150,189,29,179,147,213,137,35,178,135,165,6,113,128,85,92,145,159,210,246,82,51,76,163,194,123,227,3,16,249,244,46,100,79,246,128,154,14,173,251,38,213,166,91,238,174,140,172,187,249,110,243,210,126,143,185,121,50,173,203,91,187,140,227,248,86,200,165,21,186,234,250,214,57,248,233,41,117,81,43,116,225,157,94,98,103,156,146,211,29,196,107,95,217,170,24,196,241,202,214,46,117,25,43,238,72,113,199,42,138,93,244,57,36,80,110,102,33,151,52,164,126,85,52,12,200,164,75,99,110,175,198,78,132,190,222,181,18,239,229,23,139,119,32,26,10,137,1,77,167,159,108,242,13,62,46,166,31,118,183,58,154,105,99,28,205,148,86,124,91,194,10,139,201,17,25,154,68,177,56,21,57,214,25,36,7,247,28,179,228,56,167,113,79,145,132,36,61,240,57,237,114,137,37,188,59,115,89,55,3,247,102,224,129,24,166,225,22,234,95,239,249,111,55,250,214,60,213,183,22,168,221,178,241,187,51,246,243,238,140,253,52,225,177,187,235,206,9,186,167,176,211,165,130,8,36,51,129,65,119,202,51,129,113,115,38,208,44,173,117,58,118,143,149,150,177,84,153,89,139,9,43,17,233,222,130,247,160,236,58,27,26,53,40,209,119,88,117,161,22,54,232,198,155,26,67,46,56,63,91,149,109,136,95,64,114,200,209,199,159,220,26,28,212,110,124,46,181,6,227,224,210,143,105,90,38,115,233,183,198,193,19,92,189,123,208,235,166,90,85,49,37,2,185,104,199,91,13,218,79,59,85,131,82,229,168,245,85,76,169,17,108,40,117,234,43,93,250,231,41,195,37,178,61,185,18,81,159,169,177,5,73,91,207,110,97,35,248,70,181,7,89,140,31,243,129,246,168,123,219,104,44,151,9,168,180,144,143,229,140,75,66,200,8,78,223,128,157,244,76,95,213,197,206,7,237,26,67,87,236,231,87,250,242,96,80,190,228,100,125,249,62,61,172,155,203,255,207,211,54,242,37,55,117,208,245,160,125,135,246,177,31,112,83,31,253,94,20,89,11,121,216,109,37,159,119,42,125,116,217,199,76,127,160,23,71,217,94,195,47,237,201,122,170,177,255,89,102,98,134,116,129,48,222,25,88,24,185,4,63,255,84,114,146,19,2,94,77,71,209,49,79,8,84,59,138,222,52,28,197,121,161,43,156,216,44,210,14,18,62,79,227,99,19,191,35,72,248,62,193,195,245,137,163,71,66,158,222,224,68,143,209,201,26,61,237,33,158,2,75,214,52,194,192,23,251,11,25,115,119,50,49,119,94,120,62,52,238,71,125,223,211,187,42,189,174,190,75,22,114,177,29,135,68,221,204,36,249,124,142,185,51,129,23,150,205,79,232,196,115,18,221,64,78,69,3,166,205,9,141,75,170,27,14,213,25,26,207,107,97,164,210,89,58,245,54,0,14,60,243,112,194,144,145,145,33,101,154,76,45,168,191,58,141,60,113,79,214,155,58,87,89,252,243,68,32,103,71,242,197,123,42,207,71,12,221,83,105,241,183,153,112,255,61,153,192,78,211,57,79,116,110,28,244,197,83,183,245,27,51,231,137,46,76,163,127,84,209,172,227,52,205,213,145,7,77,154,14,220,83,225,241,77,255,176,204,125,241,178,231,253,177,4,183,209,201,207,203,76,45,148,172,202,251,126,157,247,122,157,247,83,113,84,43,189,64,188,50,141,139,114,79,38,46,72,6,62,89,37,25,189,134,119,142,90,195,123,228,222,202,214,219,106,194,91,238,61,109,223,120,231,175,164,111,188,179,158,111,188,115,42,190,113,82,122,231,127,18,223,120,246,175,150,111,60,251,180,125,227,216,167,173,50,234,147,248,198,167,40,151,4,226,185,55,19,168,39,3,111,203,192,187,239,77,124,227,47,80,255,195,158,36,254,219,170,3,175,206,209,183,115,239,53,191,67,112,111,165,247,107,196,252,139,61,49,140,251,151,196,252,187,49,137,149,209,59,73,204,191,27,193,60,126,145,214,62,254,119,138,118,173,63,184,215,141,108,28,155,179,15,232,34,15,196,130,126,134,214,140,109,140,159,136,225,245,236,26,22,153,98,108,108,89,64,253,177,214,86,234,143,127,121,170,3,75,64,7,170,119,179,106,234,128,164,254,138,52,220,86,166,149,203,91,50,51,164,12,60,176,37,107,86,245,180,232,108,53,45,218,191,165,114,90,52,186,37,115,71,206,132,135,183,212,91,86,154,210,180,168,190,241,125,143,106,224,216,120,21,123,158,11,157,216,138,113,101,197,244,214,130,157,206,161,182,164,103,5,123,204,179,130,189,174,50,211,148,157,182,153,238,117,167,108,166,51,180,86,216,105,189,0,100,28,235,235,177,163,226,42,53,131,209,129,103,240,132,146,131,110,164,105,249,129,235,100,96,18,60,116,124,150,193,130,1,77,170,49,73,26,114,185,153,85,33,36,9,66,152,0,210,144,11,18,58,113,198,132,232,132,29,160,158,196,55,98,124,86,55,143,122,79,241,251,200,106,156,244,66,82,121,92,212,28,108,8,14,54,146,132,142,250,4,177,49,224,76,239,146,209,188,196,205,72,108,115,226,36,226,74,196,191,247,1,110,156,57,212,25,52,172,211,52,254,233,129,225,99,153,110,125,32,3,31,222,146,24,251,223,85,161,162,222,87,237,23,159,165,252,226,47,222,87,233,23,111,185,175,178,203,111,54,225,147,153,46,127,82,119,249,19,118,157,175,14,254,123,255,155,70,253,211,223,187,13,146,179,201,174,102,29,236,77,105,46,240,31,91,28,190,140,188,228,76,90,53,111,104,152,71,131,243,24,183,242,246,121,231,157,119,158,51,53,219,180,213,77,237,145,182,77,47,57,58,204,214,84,246,72,143,217,241,130,138,95,76,191,169,236,78,195,68,239,168,240,143,221,120,17,139,119,37,2,225,81,42,14,166,14,107,163,109,66,79,153,121,98,71,26,127,107,71,108,139,118,196,110,108,18,127,186,134,40,198,239,72,68,193,107,138,2,143,255,86,137,162,58,56,88,93,10,188,196,54,197,103,173,132,45,79,216,201,42,19,70,122,63,228,100,119,223,142,96,74,143,107,108,62,38,251,117,99,78,178,157,23,62,79,19,179,169,78,166,22,244,201,84,95,91,107,152,32,114,127,158,199,186,133,171,87,250,170,5,11,98,157,222,39,19,27,240,82,20,76,89,252,102,79,52,203,194,234,192,69,228,5,83,145,11,177,34,207,90,72,88,248,60,245,207,210,121,237,201,242,110,167,224,7,99,94,170,243,26,57,43,242,49,51,84,248,137,244,132,52,244,44,121,40,87,37,217,220,41,36,155,83,199,153,23,17,18,54,168,35,206,139,41,9,63,88,41,111,121,183,202,65,38,19,189,90,220,59,105,151,120,221,222,208,235,70,130,226,90,157,171,86,184,146,181,58,112,88,182,131,42,133,59,168,63,11,186,4,126,219,58,22,152,221,194,78,216,37,42,105,220,53,40,76,38,87,197,247,24,196,170,6,198,8,5,237,95,117,166,180,63,25,231,138,23,8,46,103,9,154,104,127,76,167,72,23,26,103,162,250,175,242,78,105,11,122,93,115,181,146,159,74,2,51,113,185,22,191,238,125,74,9,172,78,36,176,58,145,192,234,51,45,1,167,120,129,112,38,147,64,19,74,96,181,215,65,32,93,133,114,119,226,141,125,170,180,174,212,20,111,70,238,200,69,165,119,26,95,170,78,118,244,21,51,92,138,117,248,45,28,197,181,39,103,198,183,52,154,132,39,155,99,101,126,167,240,228,249,169,102,123,11,137,167,80,9,111,49,57,23,176,161,30,137,84,138,158,20,74,126,222,98,66,74,84,206,217,20,206,21,84,186,183,132,142,240,22,145,121,33,133,159,66,216,4,200,24,180,132,97,39,250,117,99,246,193,239,48,118,172,62,221,152,77,146,132,115,193,11,3,1,13,231,74,47,152,65,175,108,57,224,234,19,8,201,18,116,159,155,61,165,240,16,34,220,81,113,0,3,79,23,244,234,37,228,193,220,114,186,21,56,106,90,70,122,96,6,185,67,159,89,89,72,62,171,98,60,227,134,115,83,135,177,211,236,85,172,72,166,146,245,106,75,118,78,186,120,173,132,137,103,68,64,130,85,242,3,41,93,174,164,52,68,81,156,225,59,77,97,237,214,194,26,198,157,10,228,109,88,11,235,157,184,160,158,17,18,104,79,147,12,112,121,253,103,184,48,93,113,212,2,245,169,49,115,32,99,216,141,68,99,197,70,185,103,30,205,192,193,86,43,196,229,203,200,64,78,203,12,15,193,12,209,54,14,13,185,144,60,146,195,203,28,114,63,90,254,1,99,139,123,52,123,248,38,94,150,31,129,49,233,101,124,251,144,217,96,139,233,214,220,114,186,219,73,134,180,35,70,147,171,97,239,80,46,202,222,78,24,115,196,92,241,65,209,32,139,155,54,202,215,95,127,61,183,97,99,232,97,4,242,15,250,115,192,16,188,0,92,224,29,18,181,28,253,2,14,246,103,77,103,4,115,189,138,225,56,189,86,35,93,20,249,105,140,201,106,184,72,134,16,160,62,244,78,115,236,64,102,68,114,128,72,95,175,74,15,16,29,179,113,80,168,193,1,248,25,241,190,85,48,29,137,216,104,172,209,73,0,67,171,21,124,110,108,96,231,2,221,211,116,19,236,12,137,104,203,140,243,32,131,88,200,188,150,51,140,41,119,85,8,57,190,148,131,151,21,62,159,8,16,154,162,133,225,37,170,120,208,134,190,79,127,146,83,110,17,125,77,203,247,31,80,190,122,36,70,127,130,167,252,169,110,207,99,46,57,160,193,75,125,74,136,59,168,239,77,245,146,93,198,155,45,120,137,210,12,59,89,173,31,172,220,156,26,112,64,135,164,19,114,117,220,121,90,177,255,222,19,4,126,67,29,101,176,83,62,28,28,66,119,66,25,24,166,192,95,21,4,193,14,247,174,205,155,177,71,197,27,60,136,239,212,234,23,84,95,88,195,23,122,95,117,220,70,193,157,26,7,138,168,7,169,126,221,184,119,216,139,41,159,175,80,130,255,159,126,143,231,12,123,82,37,184,27,239,111,129,18,44,36,255,172,91,30,122,84,81,247,168,66,124,69,43,241,198,92,21,198,49,109,122,87,53,189,43,221,174,208,21,124,33,33,208,119,166,30,208,113,135,25,219,178,70,23,82,245,176,88,197,216,52,58,82,21,254,68,165,122,171,12,105,79,165,33,45,163,33,149,44,228,40,102,52,244,227,240,163,109,166,154,32,185,245,95,225,134,252,104,85,227,236,63,69,227,140,188,225,198,225,40,188,170,254,121,250,194,219,94,75,120,251,171,132,55,90,41,188,17,37,188,156,62,151,128,251,159,70,247,80,251,159,106,169,16,230,123,119,117,148,127,193,177,87,189,254,217,219,238,220,92,43,175,53,141,188,60,157,174,213,179,196,167,25,42,21,103,109,182,222,84,174,195,21,245,106,77,84,227,30,83,191,51,171,224,13,85,195,230,137,83,12,155,227,211,154,202,38,171,11,74,85,200,27,93,99,32,89,45,35,233,100,130,192,100,130,38,43,13,180,238,74,3,53,87,26,232,153,94,105,168,94,16,174,75,65,178,210,96,70,27,55,26,80,95,242,174,106,159,253,217,246,209,61,98,194,201,186,62,39,156,90,109,56,162,79,103,140,59,149,75,19,234,178,236,63,231,194,38,248,253,9,126,92,6,199,228,248,210,44,73,78,55,76,174,87,217,113,139,214,25,183,60,29,132,228,136,141,23,38,91,25,209,97,56,228,126,219,56,155,48,102,71,37,39,57,7,106,171,187,145,42,38,150,29,149,60,99,30,22,95,140,28,213,191,131,118,122,138,225,4,141,4,105,97,80,11,84,73,205,83,12,227,52,18,78,122,116,154,26,183,79,229,24,141,96,186,160,223,125,23,27,234,89,187,98,154,115,200,110,227,19,84,61,143,218,109,252,144,126,30,180,219,248,40,85,158,245,54,91,133,119,199,147,252,149,199,230,213,100,202,184,141,155,222,176,5,87,69,146,36,32,73,124,193,178,41,217,67,66,13,6,1,53,168,134,79,153,176,213,132,227,144,57,225,176,163,210,76,165,86,105,88,49,59,42,133,74,177,146,178,207,218,81,169,164,166,8,73,218,131,118,84,90,80,121,200,8,72,46,189,169,242,40,18,78,10,28,213,2,241,253,209,65,117,37,154,238,118,150,211,109,182,121,32,73,157,50,194,85,73,80,2,208,37,27,117,233,205,170,149,160,205,212,163,40,198,234,182,144,143,219,56,49,194,187,200,240,48,65,117,19,54,36,212,66,243,54,154,52,197,205,130,205,25,86,52,245,204,138,75,15,186,201,176,161,75,230,212,168,162,1,23,84,52,222,155,170,27,14,7,197,134,128,50,110,217,57,55,95,240,252,160,33,185,22,59,199,220,216,104,104,97,68,52,156,234,44,9,158,133,17,77,97,131,112,194,5,194,11,223,36,72,248,102,81,8,223,34,252,112,166,96,97,40,104,216,40,120,88,194,197,11,73,195,38,245,53,181,26,167,237,205,109,17,138,193,234,113,95,164,49,161,169,52,179,38,85,141,146,174,72,190,127,91,29,115,101,166,104,208,251,34,13,147,238,139,156,113,134,240,91,229,171,82,78,206,153,156,147,185,117,143,5,212,226,164,81,178,181,65,115,157,77,161,57,88,100,142,46,34,146,34,124,69,48,79,212,187,33,11,69,22,232,34,147,109,30,159,27,186,162,81,90,107,130,217,103,88,15,230,128,14,132,115,36,5,179,226,223,156,10,112,222,228,2,60,119,250,2,172,243,101,234,154,226,251,101,232,78,149,0,42,216,191,45,101,255,188,201,217,63,127,250,236,139,83,42,67,109,1,212,83,6,190,50,104,58,115,114,80,223,148,241,13,91,32,38,151,64,56,125,9,148,166,213,131,38,149,64,241,204,73,32,233,10,248,125,134,142,84,16,225,228,130,40,77,95,16,245,190,127,127,10,83,178,224,204,154,146,224,151,99,74,124,153,138,110,193,228,162,123,147,38,244,75,241,92,98,107,188,253,253,52,173,47,189,55,215,145,222,172,250,210,123,139,46,242,33,93,228,193,184,158,47,211,154,242,107,148,214,218,160,229,148,34,95,162,139,44,157,146,200,237,149,129,119,134,69,62,11,69,238,73,234,223,97,244,220,150,201,165,190,112,90,10,123,106,190,216,154,32,239,255,70,90,253,194,201,171,191,224,52,170,175,57,16,168,234,115,103,222,151,208,35,194,45,41,91,23,76,206,214,91,207,172,84,109,127,121,90,253,91,39,175,254,194,51,91,61,255,37,73,149,154,108,93,56,57,91,139,206,44,91,244,204,178,229,183,165,204,44,154,156,153,183,77,203,125,70,91,183,120,26,62,19,90,186,37,162,94,140,195,186,118,238,34,93,228,99,186,200,199,117,145,231,104,77,67,215,40,237,21,193,197,186,204,67,177,229,254,132,46,52,168,10,189,67,23,218,71,146,82,206,218,224,18,93,42,210,133,30,142,205,240,205,88,104,63,209,165,198,210,82,185,21,193,165,245,218,21,11,29,140,11,29,78,11,185,107,131,203,116,161,46,93,168,47,174,106,54,150,58,18,151,26,215,165,222,248,172,68,87,248,72,44,145,71,227,26,51,62,167,152,29,122,254,29,201,170,29,180,35,180,117,157,91,34,111,72,87,69,246,252,216,101,255,17,181,26,38,245,63,186,254,143,255,135,214,79,253,155,254,131,249,191,62,173,255,29,80,191,253,239,81,127,226,169,224,55,174,226,250,151,64,253,53,14,60,255,18,234,175,156,231,174,79,105,88,0,52,240,255,175,208,96,232,193,250,95,137,118,72,206,174,62,144,249,34,115,6,222,147,129,143,125,49,115,83,40,3,111,201,228,239,207,226,203,228,63,144,129,15,103,241,101,224,254,12,60,148,45,223,155,161,55,3,159,204,192,253,25,120,40,3,239,201,192,7,178,240,23,50,245,103,224,99,25,248,100,6,222,146,173,63,243,126,79,54,127,6,238,207,214,119,127,166,190,12,124,32,3,31,206,192,67,25,120,79,6,238,191,47,147,63,3,239,201,192,7,50,240,225,12,124,44,3,159,204,192,91,178,245,223,159,156,173,214,29,202,11,223,238,95,124,134,39,120,233,176,225,133,82,18,127,177,167,59,206,34,47,78,254,136,191,202,56,212,61,75,29,234,158,169,14,113,31,123,192,184,199,225,70,242,232,3,198,33,238,195,15,84,30,226,62,168,47,244,140,165,231,150,111,215,255,79,227,144,180,155,28,146,46,104,212,120,72,218,215,49,51,227,67,210,105,8,103,125,32,218,9,104,3,107,224,83,59,8,125,204,73,111,147,155,123,114,184,71,57,217,65,232,130,121,179,220,247,60,49,91,230,87,7,44,62,217,170,40,109,150,133,174,176,144,28,92,229,158,40,24,71,114,15,58,146,131,109,211,199,114,199,28,21,6,186,136,23,112,167,126,172,73,146,176,8,136,20,17,108,237,180,68,237,250,142,39,252,197,24,144,185,89,90,93,210,141,207,234,250,93,137,228,125,77,221,66,98,77,37,0,181,17,243,218,19,133,41,70,202,46,154,145,178,153,39,252,69,4,18,11,32,85,42,108,120,136,9,242,101,94,17,228,47,36,84,223,35,49,98,63,23,234,70,46,168,73,35,239,32,94,248,34,197,83,211,211,42,72,161,224,118,154,108,174,103,142,198,160,130,164,33,7,154,204,72,98,99,78,84,226,197,69,149,71,163,70,227,115,202,24,94,91,109,185,198,219,182,120,204,66,237,191,134,47,210,202,45,87,28,26,93,21,178,57,140,67,50,23,5,17,60,254,236,52,30,129,194,67,65,47,80,36,68,36,219,175,250,66,190,222,126,69,154,21,169,42,234,150,25,236,224,126,39,19,122,58,142,18,61,82,25,236,160,236,196,219,189,70,208,3,181,135,127,208,41,113,73,235,106,232,120,229,46,254,184,147,156,143,124,79,160,14,4,183,176,49,167,228,128,186,50,193,37,67,117,37,120,124,164,16,107,135,131,199,197,199,28,225,84,31,95,157,98,109,239,13,26,189,228,172,218,104,46,105,16,29,1,194,60,127,169,226,113,223,239,24,66,169,140,120,60,226,44,167,241,70,102,217,105,227,131,208,95,185,62,5,133,161,150,7,157,180,130,94,91,69,138,203,124,113,27,143,130,86,124,115,91,29,32,43,235,184,102,163,118,28,143,221,216,21,221,78,219,212,177,3,221,204,24,20,219,87,219,141,241,30,118,124,154,115,76,35,26,212,241,153,229,8,141,132,111,230,26,203,181,113,140,53,61,72,35,225,164,42,170,142,29,13,232,29,234,113,123,57,125,2,114,61,68,35,225,37,49,202,123,105,38,22,115,143,221,198,123,116,153,67,246,114,58,146,171,117,191,5,35,43,19,202,184,53,87,175,146,120,105,148,94,95,173,146,56,48,9,119,146,85,18,207,140,210,91,189,74,226,11,71,175,146,56,201,42,137,103,70,233,173,190,175,5,69,230,232,34,34,41,98,68,232,173,94,39,129,34,11,116,145,201,214,211,103,197,97,138,61,105,173,9,114,130,134,139,5,11,151,8,18,94,44,138,225,37,130,135,23,157,98,120,135,25,225,59,83,217,248,147,203,166,110,112,95,160,164,190,124,234,6,248,173,41,159,122,145,122,61,201,87,6,54,240,24,135,101,152,58,163,196,100,180,97,114,70,103,156,30,163,197,51,199,40,63,93,70,215,104,70,157,36,88,175,98,211,131,202,189,73,99,229,205,194,120,35,116,101,64,223,40,1,94,26,45,248,20,146,174,27,45,184,174,164,85,254,27,116,254,199,226,25,227,71,64,110,171,173,246,105,147,141,99,3,202,9,154,8,26,210,152,141,78,5,89,213,68,83,79,97,211,80,196,158,244,1,59,61,61,196,85,241,138,107,11,61,230,97,1,212,199,127,121,85,93,113,102,170,170,14,189,69,67,207,68,190,4,144,91,149,200,107,224,157,20,167,218,84,189,34,189,161,190,53,115,67,61,3,15,100,224,225,12,60,246,165,74,248,72,6,158,200,192,3,25,120,56,3,143,102,224,222,44,190,204,242,65,249,75,201,244,207,243,151,198,247,27,122,221,248,126,67,65,221,111,240,212,29,41,28,184,213,217,54,237,54,80,105,248,11,172,195,112,20,156,14,53,228,118,232,203,109,29,241,1,106,253,197,150,14,21,139,215,21,5,117,162,109,164,226,68,27,140,237,52,117,70,168,241,29,9,28,209,29,211,1,137,61,130,122,62,64,237,113,94,82,108,82,84,165,56,64,207,139,20,244,211,171,17,21,177,210,220,164,131,229,52,70,201,186,198,73,117,133,37,105,35,110,173,19,214,128,232,104,111,91,51,209,222,182,102,162,189,153,240,216,214,76,236,31,154,184,255,211,248,144,65,85,164,77,162,111,234,47,170,140,178,121,191,158,172,154,223,133,169,21,101,179,50,172,230,203,24,86,51,227,204,159,34,172,102,127,60,217,120,92,207,50,106,71,228,32,94,248,132,158,162,100,60,217,127,197,148,151,43,103,16,189,110,28,46,77,249,174,227,57,227,34,62,245,91,61,99,149,69,183,144,240,138,243,96,202,213,212,25,48,159,170,232,222,218,232,132,52,113,31,213,9,209,210,39,75,4,154,144,200,92,87,137,73,34,136,96,235,154,67,79,52,73,30,201,219,54,136,166,174,208,231,149,142,103,147,104,81,159,30,25,45,57,146,172,194,216,6,13,146,134,115,106,184,168,61,127,61,74,240,238,15,235,106,224,132,178,38,79,180,72,26,149,152,32,171,3,71,146,112,142,223,8,253,120,78,146,188,46,40,10,38,154,162,11,245,44,230,8,237,82,183,84,184,12,86,4,24,60,129,232,204,42,218,199,28,191,232,165,37,146,154,39,192,59,166,132,16,70,60,225,200,25,17,30,6,102,107,3,215,111,244,4,147,19,68,165,44,89,29,20,252,25,144,242,133,238,119,6,13,126,30,30,175,218,32,7,186,87,6,1,126,204,74,14,116,191,43,240,125,188,203,224,200,243,85,49,31,175,31,202,219,55,200,27,87,4,20,143,102,52,64,222,63,233,126,39,230,133,20,193,100,251,187,2,63,230,143,105,254,18,106,229,159,116,95,17,56,184,98,203,194,6,223,51,95,188,51,200,195,124,219,23,45,93,146,111,8,168,240,68,203,218,128,113,37,126,252,106,131,44,127,246,142,205,159,217,16,112,193,164,21,85,36,128,148,221,168,212,178,38,32,158,226,161,125,85,192,124,87,73,63,108,209,82,76,17,66,165,100,85,192,99,217,182,172,132,146,150,146,53,51,100,237,84,16,105,181,35,229,78,204,34,215,44,218,21,44,18,201,149,130,0,71,12,9,64,196,64,157,39,168,104,106,101,22,246,118,129,134,150,162,45,87,7,200,231,192,251,22,245,62,31,137,134,101,68,217,5,49,71,61,209,86,12,57,2,246,32,153,198,151,134,104,71,185,92,46,79,156,127,39,254,10,140,117,34,134,104,27,59,174,191,216,132,157,18,234,85,215,74,91,89,143,35,236,14,125,91,82,150,157,40,100,243,137,92,210,85,34,11,8,134,178,11,57,235,22,84,22,65,151,49,168,6,149,141,234,228,110,14,3,85,32,33,130,8,222,202,138,130,72,222,202,124,129,189,42,106,101,174,32,29,172,141,45,16,4,38,215,243,4,145,227,175,194,116,123,142,80,113,49,90,153,16,76,110,254,236,40,193,104,21,197,16,12,7,1,140,190,194,8,8,168,66,64,21,130,221,167,70,224,97,188,155,5,36,176,204,89,185,57,95,85,115,109,193,228,108,21,135,165,168,189,77,21,86,104,60,87,156,231,169,108,104,59,182,211,231,180,189,0,11,86,76,131,77,127,18,215,88,241,100,219,118,250,92,248,164,249,210,11,241,82,252,0,6,152,242,45,79,30,188,119,47,145,109,170,62,217,255,217,81,34,199,183,236,37,197,255,22,127,175,215,199,211,234,96,9,191,145,83,65,137,59,72,248,18,53,34,128,171,155,159,70,100,226,145,92,114,59,152,11,87,199,247,238,113,50,135,189,245,218,204,67,118,106,254,239,162,145,170,39,57,167,60,65,178,247,109,127,134,41,250,251,110,181,66,62,194,240,93,142,23,50,114,203,233,102,154,222,201,253,184,156,129,102,186,193,139,191,83,193,224,207,251,225,207,165,58,116,75,81,18,127,166,39,155,140,248,109,196,11,63,128,254,92,23,252,105,135,63,55,192,159,15,97,226,187,224,207,58,248,243,49,248,243,113,248,19,249,103,123,105,168,111,15,240,120,225,135,36,245,194,229,128,92,29,255,55,4,250,149,233,11,116,184,242,244,188,108,192,47,213,169,181,29,83,168,111,206,202,180,152,21,233,236,58,18,29,115,82,137,14,186,169,68,23,164,2,69,97,86,126,157,200,51,5,246,110,96,121,14,252,81,43,247,94,34,171,223,3,248,102,120,250,4,38,94,0,127,222,138,143,231,226,223,171,188,14,226,133,123,40,2,191,219,65,194,33,196,219,34,73,232,224,171,151,113,20,221,137,49,119,46,199,148,111,226,242,230,46,252,251,85,252,187,155,122,34,39,2,60,67,159,19,183,44,35,223,115,68,78,156,215,202,202,92,228,228,132,29,9,23,122,95,78,30,75,31,15,217,145,120,132,170,231,131,118,36,30,213,207,99,118,36,124,245,120,192,142,196,10,245,184,223,142,196,74,245,184,207,142,196,26,245,56,106,71,162,71,151,219,99,71,226,110,253,60,98,71,226,41,253,188,219,142,196,111,168,199,97,59,18,191,169,30,135,236,72,44,83,143,131,118,36,222,175,30,183,217,145,184,94,61,14,216,145,248,148,122,236,183,35,241,30,245,216,103,71,226,189,234,113,171,29,137,15,171,199,94,59,18,95,210,213,109,177,35,177,85,63,247,216,145,120,90,63,111,182,35,113,169,122,44,219,145,104,83,143,39,173,72,44,85,143,39,172,8,236,29,60,30,183,34,161,139,77,88,145,40,106,217,89,145,114,244,115,242,168,165,247,47,114,242,136,21,137,223,82,169,135,173,72,252,182,22,174,21,137,133,90,182,86,36,62,160,69,107,69,226,1,141,248,128,21,137,103,244,243,126,43,18,66,11,215,138,196,124,45,92,43,18,231,107,217,90,145,120,183,22,173,21,137,43,181,100,173,72,108,208,146,181,34,113,150,150,172,21,137,179,181,100,173,72,20,180,100,173,72,124,84,75,214,138,196,103,180,100,173,72,204,209,146,181,34,209,165,37,107,69,162,79,147,214,107,69,194,211,146,181,34,113,95,44,89,43,18,247,199,146,181,34,177,77,63,151,173,72,180,107,209,242,72,116,106,209,242,72,72,45,90,30,137,27,180,104,121,36,30,211,229,142,241,72,124,68,61,142,243,72,124,72,139,153,71,226,65,157,227,8,143,196,151,245,243,97,30,137,183,107,65,243,72,188,67,11,154,71,98,185,22,52,143,196,187,180,156,121,36,254,155,22,51,143,196,70,45,102,30,137,117,90,204,60,18,191,167,197,204,35,241,108,172,194,60,18,31,211,114,230,145,248,184,150,51,143,196,115,58,199,16,143,68,164,5,205,35,241,176,78,222,198,35,113,179,150,52,143,196,67,58,185,159,71,226,19,90,212,60,18,131,58,121,43,143,196,5,90,212,60,18,111,213,162,230,145,184,80,75,154,71,98,158,22,52,143,196,185,234,241,251,78,36,110,133,233,78,78,254,208,137,196,167,213,227,73,39,18,108,25,62,150,115,145,248,10,109,195,231,195,48,2,45,166,99,206,114,4,127,12,32,58,244,8,254,196,49,230,2,152,114,220,49,230,2,152,242,115,133,97,129,66,240,58,190,127,115,108,106,115,234,210,240,66,174,17,170,11,195,197,20,223,131,152,48,59,54,188,57,121,119,33,18,119,82,69,243,125,133,72,220,161,158,197,31,180,146,156,200,137,63,108,37,96,182,62,95,136,244,135,65,48,227,23,11,81,28,143,24,192,71,10,149,65,142,115,242,201,130,49,38,96,10,70,30,254,51,146,16,10,232,46,95,174,158,22,242,150,54,226,137,156,156,9,153,150,164,104,230,0,124,89,74,108,9,224,31,87,34,185,110,57,17,34,39,223,18,137,219,20,23,243,35,241,71,234,105,41,100,127,149,164,229,47,129,132,49,146,86,240,86,228,99,21,2,162,123,25,121,60,167,66,48,135,20,180,39,23,137,219,21,166,129,92,36,202,90,74,79,228,34,65,149,28,94,206,25,219,26,152,162,130,125,232,173,15,76,25,84,13,82,118,20,248,199,185,72,232,166,218,139,121,239,162,105,227,253,73,14,197,188,89,163,255,86,46,18,47,105,197,249,95,152,249,103,6,51,234,126,220,132,193,205,95,170,170,62,174,32,112,127,62,169,181,213,137,196,147,74,203,193,217,5,95,5,198,219,16,222,237,42,68,162,95,179,246,124,33,18,143,235,231,237,133,72,16,69,199,94,108,77,29,109,0,83,94,41,24,35,58,166,188,164,84,98,60,167,192,167,105,36,22,47,167,240,248,20,141,196,37,170,185,46,90,70,6,64,178,67,232,117,141,80,116,69,49,211,54,138,197,135,105,27,130,195,52,18,47,234,231,81,204,60,72,227,237,159,28,174,198,216,11,249,128,206,240,45,26,137,139,209,209,88,76,159,160,200,212,159,210,8,131,106,195,243,183,105,194,200,247,16,213,67,52,101,228,85,76,233,165,41,35,127,165,144,247,232,210,71,105,36,150,224,66,15,120,34,136,252,49,22,137,183,168,6,123,148,69,98,166,122,124,132,69,34,84,108,150,150,145,62,6,230,147,70,120,107,14,123,58,82,161,120,85,95,153,81,220,99,217,126,134,117,78,232,58,71,48,195,184,161,24,195,152,114,196,32,115,80,21,57,164,139,140,178,8,191,208,131,90,196,244,4,41,135,31,227,88,160,30,191,193,34,241,38,85,221,215,89,36,222,172,82,15,33,226,49,163,170,49,76,217,111,84,181,95,85,53,170,209,255,45,139,68,163,202,123,24,243,126,55,151,150,254,59,166,236,91,78,177,122,132,69,226,5,221,76,63,96,145,248,160,202,245,247,44,18,239,84,77,242,51,68,145,126,164,40,167,63,194,163,99,169,96,201,113,69,64,175,171,192,255,147,143,196,239,40,68,71,243,145,120,159,18,250,250,101,228,71,121,145,147,191,96,145,88,173,222,254,156,69,98,149,122,252,69,62,82,33,180,19,174,254,21,83,122,141,148,159,96,74,143,145,242,227,188,234,187,76,129,223,194,137,192,31,179,10,251,179,135,45,39,237,34,39,255,156,68,226,94,221,119,190,77,34,113,143,126,62,132,133,118,178,148,193,191,198,148,65,163,158,255,78,148,66,171,122,196,117,203,200,15,114,48,86,171,171,202,70,70,181,88,52,97,164,168,235,204,227,70,202,17,101,5,142,104,162,239,64,247,252,251,41,209,234,107,82,139,233,97,166,90,224,78,55,18,175,232,182,85,247,99,255,202,32,246,75,152,178,223,192,127,175,171,212,65,227,239,119,34,177,72,33,126,204,137,196,219,148,96,46,91,70,30,117,68,78,126,89,109,14,243,180,246,199,213,144,55,194,85,241,103,157,72,180,42,66,190,134,121,119,241,248,147,186,57,29,244,100,144,27,106,175,74,15,232,210,223,196,12,79,24,232,95,81,195,99,63,87,56,255,216,137,196,176,102,238,175,49,243,125,60,101,238,59,234,138,183,129,255,207,20,254,178,194,47,174,93,70,6,92,232,49,40,133,178,149,102,124,81,5,106,50,138,110,87,129,154,140,148,167,148,164,198,53,177,223,198,12,63,54,136,221,171,90,226,168,38,118,159,27,137,111,196,189,12,51,191,106,16,123,16,83,198,12,252,7,20,254,253,154,216,107,150,145,255,13,196,254,63,152,113,212,32,246,95,48,101,196,72,121,13,83,134,141,148,31,42,100,131,150,2,55,99,103,120,214,74,137,189,35,143,196,110,179,20,177,159,203,71,226,235,154,216,71,49,243,131,86,74,236,131,170,119,25,248,239,83,125,169,71,225,23,87,47,35,79,67,119,125,5,51,150,13,223,225,37,76,57,97,20,125,30,83,38,140,148,103,20,178,113,77,236,159,98,134,31,27,196,126,91,17,123,84,19,251,103,249,72,140,104,98,191,135,153,95,53,136,253,27,76,25,51,240,127,71,225,223,175,137,253,253,101,164,15,180,249,168,29,79,59,96,202,113,216,22,57,249,92,33,18,87,41,157,223,76,151,145,187,10,34,39,118,211,54,126,130,138,156,248,154,186,50,157,19,187,104,27,239,97,34,39,190,74,241,99,11,57,241,121,186,140,60,2,56,251,104,36,90,20,2,252,162,28,140,143,61,52,18,119,81,149,248,50,148,128,196,19,36,18,159,211,137,59,105,27,255,20,244,126,18,137,203,85,210,55,105,27,191,10,28,79,59,18,3,218,163,61,97,71,226,179,122,220,159,219,202,142,3,193,127,89,136,132,163,138,252,238,50,242,23,64,239,19,116,25,25,132,135,61,64,0,80,183,133,46,35,7,32,229,11,116,25,249,239,5,112,142,157,72,124,49,158,136,56,145,232,213,104,111,108,101,91,226,120,248,248,25,130,22,134,91,88,51,90,152,101,181,11,82,156,231,137,155,212,243,77,240,106,30,6,79,113,163,5,68,228,165,27,137,43,138,183,137,124,11,243,67,2,63,174,216,36,174,40,190,68,67,42,242,208,215,213,39,13,242,45,108,155,3,37,243,114,200,137,196,21,80,115,94,144,86,54,232,136,60,204,14,183,57,243,137,156,176,187,74,108,1,17,12,154,232,144,93,36,37,42,203,195,163,68,230,68,94,238,39,81,137,203,195,120,229,93,112,104,72,32,230,81,42,168,124,224,249,81,34,45,193,229,120,252,118,34,126,91,36,37,71,254,98,8,113,112,89,230,250,125,15,143,75,59,242,78,40,157,23,28,230,9,234,237,86,227,237,231,118,142,18,185,92,112,152,103,168,183,3,198,219,81,120,59,95,112,152,167,168,183,67,198,219,31,193,219,197,130,195,68,71,189,29,49,222,62,240,194,40,145,141,130,195,68,73,189,221,103,188,253,11,160,202,21,28,230,89,234,237,152,241,246,25,40,235,9,14,211,52,245,246,176,241,246,5,120,59,83,112,152,230,169,183,227,198,219,189,113,189,199,226,183,199,141,183,223,133,183,190,224,96,24,213,219,178,149,190,253,62,188,157,33,56,76,83,213,219,45,198,219,127,130,183,179,4,7,171,161,222,246,25,111,63,187,75,151,237,143,223,110,51,222,246,238,210,109,56,24,191,29,54,222,126,249,201,81,34,27,4,135,89,186,122,187,199,120,219,183,109,148,72,91,112,176,152,234,237,126,227,237,214,93,250,237,129,248,237,65,227,237,35,187,180,36,15,197,111,143,24,111,183,197,111,143,198,111,143,37,111,25,46,238,56,114,215,46,173,93,19,113,158,19,42,207,167,244,14,6,107,97,99,182,133,191,7,109,21,178,213,145,47,67,41,71,112,121,50,46,181,217,78,235,221,179,75,243,219,19,107,116,175,157,214,187,31,235,253,203,184,222,173,113,158,126,149,231,83,80,211,126,93,227,129,164,198,255,25,227,28,136,243,15,26,53,254,32,166,103,40,126,187,219,168,113,20,107,252,63,144,39,0,53,142,243,140,26,53,142,234,26,247,37,53,238,126,118,148,200,102,80,236,56,255,1,163,198,127,137,233,25,139,223,30,50,250,244,231,161,223,207,42,206,23,78,177,128,157,248,241,39,117,135,56,137,129,54,138,15,0,93,35,118,36,24,46,190,25,58,242,115,39,42,126,90,201,125,68,211,180,71,211,196,112,213,44,46,241,18,148,40,10,46,191,231,68,197,245,144,111,88,231,223,173,243,83,249,24,208,209,148,208,65,228,183,161,16,21,124,17,233,115,128,8,42,119,66,150,179,138,243,5,129,44,161,35,24,174,194,113,57,65,163,226,251,1,221,144,157,141,235,93,181,193,198,90,216,160,221,137,59,81,251,160,6,71,225,19,84,126,27,208,251,49,5,136,126,0,209,159,136,209,111,179,67,2,191,3,118,64,171,203,255,15,40,239,169,242,130,203,187,10,81,72,16,15,135,161,111,17,193,239,250,251,28,63,236,175,98,111,48,104,188,205,116,117,208,40,156,34,245,27,99,176,136,96,209,147,125,79,141,18,89,40,206,247,125,79,142,60,10,74,81,156,239,123,158,220,242,148,34,213,47,120,242,196,163,250,57,239,201,127,27,0,147,83,156,239,187,158,252,71,120,46,22,231,251,57,79,254,16,158,243,197,249,190,227,201,191,25,208,249,109,79,254,105,156,223,242,228,78,120,158,83,156,239,115,79,246,193,243,236,226,124,159,121,242,223,128,203,115,139,243,125,234,201,99,240,60,163,56,223,11,11,194,145,63,127,6,20,161,56,95,20,138,5,193,112,149,51,110,241,123,183,161,6,19,213,218,125,186,181,251,65,126,138,69,142,44,114,104,249,191,27,86,132,26,114,199,207,190,202,50,211,114,223,10,205,90,209,132,189,181,155,240,181,97,37,47,141,10,70,184,30,68,213,19,163,218,98,135,142,32,105,57,7,203,29,135,114,110,133,102,149,177,220,17,162,203,109,214,77,95,174,209,244,70,159,25,39,113,159,161,242,36,32,157,89,193,23,174,214,202,137,24,233,73,75,33,61,97,5,236,20,72,79,24,72,191,240,162,217,77,16,233,4,34,45,199,74,122,92,35,157,176,64,200,117,145,246,208,20,233,83,47,42,53,48,144,142,35,210,222,24,233,49,141,116,220,10,172,83,32,237,51,144,126,229,69,165,43,40,98,134,43,206,168,29,104,100,226,145,164,248,105,192,122,196,234,12,108,120,56,106,37,10,226,162,130,184,113,151,200,33,152,139,65,7,65,39,6,109,4,237,24,180,16,180,188,106,93,219,251,162,54,33,138,168,67,53,137,146,34,82,116,29,178,148,222,30,182,106,233,237,255,50,112,101,44,214,35,218,98,253,19,100,57,59,214,43,211,184,254,113,46,53,174,99,86,13,227,250,39,185,196,184,142,105,50,14,90,177,113,221,111,213,48,174,143,231,180,113,221,175,243,31,176,98,227,186,249,43,169,42,194,40,99,33,195,224,145,196,67,194,73,53,36,44,193,1,70,151,223,151,178,157,72,148,202,135,191,98,178,141,202,50,162,148,37,238,99,123,44,232,174,56,44,88,53,187,233,206,175,84,140,57,68,14,109,211,174,97,217,137,29,71,39,29,162,246,198,217,9,82,63,92,209,104,95,221,166,189,157,193,66,60,182,88,157,1,197,193,37,165,191,158,130,80,249,42,32,23,138,150,90,145,250,161,57,7,40,30,28,166,57,198,45,2,242,63,193,77,18,30,134,225,247,92,193,229,83,84,147,112,130,107,133,62,201,67,226,187,94,108,214,80,78,131,113,167,218,170,59,85,111,45,41,25,186,242,20,77,117,165,199,104,249,255,255,151,71,137,228,224,193,225,18,84,113,29,32,235,177,58,3,11,45,157,21,18,207,207,121,40,224,151,32,107,83,37,46,133,103,167,32,59,59,196,93,42,6,26,147,165,86,118,20,126,191,248,229,81,210,202,142,192,99,31,86,121,196,142,138,159,67,177,246,91,48,116,252,43,200,189,25,135,14,173,75,79,227,186,99,241,75,64,230,160,65,230,63,110,211,190,221,160,65,230,160,214,177,33,75,125,147,147,9,7,63,4,192,100,131,166,96,223,182,152,2,133,9,183,9,25,238,3,153,212,108,179,160,55,166,197,207,210,197,127,244,229,154,197,203,153,226,155,45,117,216,99,130,167,4,39,238,212,183,226,246,156,224,138,218,227,208,156,220,19,142,224,139,233,81,170,120,29,231,213,188,46,228,227,84,49,58,174,139,30,211,69,83,74,155,53,165,39,107,83,122,132,87,82,122,148,195,8,252,167,208,144,231,193,8,76,4,149,63,251,138,26,179,65,99,42,84,183,187,198,135,39,234,248,69,232,97,49,12,12,54,147,158,205,102,240,64,121,40,168,232,35,204,84,244,100,6,247,8,211,22,114,132,117,6,51,177,207,51,127,22,20,56,194,84,214,45,59,128,50,193,229,163,44,42,126,0,141,60,235,12,26,144,17,230,207,64,173,84,136,64,29,31,172,167,142,190,150,209,15,183,39,234,56,206,42,229,114,140,249,115,146,14,198,161,131,141,38,126,3,215,29,140,159,186,131,105,42,84,7,227,208,142,143,110,31,37,50,20,92,62,22,147,223,195,59,3,15,251,21,135,126,213,132,210,169,48,3,63,29,28,37,242,45,170,254,68,207,71,98,75,176,135,131,243,245,231,144,231,156,226,124,127,182,39,119,194,243,220,226,124,127,150,39,191,8,207,243,138,243,253,153,158,60,254,156,118,184,176,142,67,92,97,255,49,40,101,139,150,61,82,116,72,107,214,97,208,172,0,58,216,207,153,14,155,234,200,251,1,201,5,197,249,242,14,42,239,164,130,52,163,79,250,139,52,195,8,100,120,115,101,6,6,115,223,34,41,21,228,107,224,218,49,193,229,55,89,84,188,21,148,7,7,34,93,227,65,174,135,33,30,137,130,60,22,231,253,123,200,139,3,16,215,22,248,0,7,61,45,160,205,13,68,161,136,225,164,29,249,253,231,244,16,130,142,99,210,33,206,214,141,253,63,158,173,217,33,70,51,29,98,31,87,199,210,134,43,91,44,145,207,112,76,197,110,160,194,47,152,125,111,166,174,234,200,96,205,170,6,51,85,13,113,117,84,109,32,219,24,137,118,15,240,206,192,71,123,164,44,62,152,136,69,228,81,166,84,59,174,214,213,213,254,245,246,218,198,41,83,237,102,238,251,177,106,159,96,160,218,3,177,106,159,100,218,117,100,157,65,30,143,152,225,6,69,108,135,182,65,247,123,115,70,23,15,49,45,144,195,204,195,243,69,138,200,71,50,68,22,99,187,84,155,200,177,76,255,59,200,226,1,142,203,175,167,250,117,112,135,210,244,74,253,218,111,208,248,79,144,227,44,211,154,236,103,218,113,97,89,91,89,208,52,253,229,142,218,170,145,161,105,31,3,87,145,203,191,157,140,158,225,90,244,124,61,166,103,152,117,6,28,53,8,4,6,154,123,39,93,27,228,209,121,200,123,242,39,219,213,252,167,146,212,120,252,26,127,162,182,106,101,72,29,98,62,78,3,167,96,155,98,11,233,152,22,50,167,171,251,94,106,33,39,50,85,28,199,96,199,78,198,220,102,117,114,240,241,154,244,246,101,116,178,159,171,161,231,190,151,160,191,105,122,249,34,242,23,133,16,123,8,211,179,222,120,184,17,92,254,101,50,251,197,207,157,201,3,207,232,153,44,243,228,15,158,81,147,102,24,219,254,246,25,37,2,53,187,84,139,141,218,72,16,81,104,101,150,208,103,214,161,155,105,253,31,96,97,1,171,241,172,118,117,53,148,73,71,115,180,229,249,74,142,50,146,235,203,136,169,159,169,79,156,169,86,198,179,200,26,97,172,125,15,157,26,97,111,6,225,86,166,190,136,166,167,44,94,236,131,82,249,194,75,169,211,9,99,14,139,253,241,45,177,255,187,213,73,253,241,30,221,45,182,176,106,127,150,202,239,188,164,103,225,224,192,118,67,83,252,119,32,91,62,247,188,146,38,72,118,0,158,115,177,215,112,248,37,213,21,226,166,251,81,222,104,50,253,95,16,197,250,4,77,59,200,43,207,235,185,201,143,243,186,131,76,80,109,81,142,83,229,70,149,227,254,84,34,168,112,71,243,81,241,51,56,111,102,1,171,209,159,119,166,18,37,90,225,78,208,74,41,158,164,234,12,236,120,74,137,137,120,156,234,62,122,140,122,56,42,181,176,205,208,91,117,51,38,19,197,234,186,179,173,25,251,93,153,250,143,82,237,107,197,109,70,98,57,31,152,68,206,15,238,86,171,40,122,222,114,136,154,222,66,178,238,220,222,165,39,155,84,15,231,180,86,43,239,0,92,231,39,139,75,71,114,81,72,128,134,31,228,194,66,85,219,105,181,29,53,218,78,187,110,68,213,53,26,183,219,62,221,110,99,113,214,18,116,189,255,9,153,11,113,230,49,90,209,116,53,122,87,65,139,110,127,70,116,7,116,211,141,24,132,104,220,92,150,221,216,135,140,91,112,79,210,130,7,233,27,105,193,225,12,25,187,117,11,254,197,238,84,239,181,121,234,206,122,194,143,58,56,213,179,120,14,191,204,200,112,131,169,134,7,252,152,163,169,239,161,241,124,11,191,131,250,207,207,171,153,182,159,243,228,247,158,87,243,86,223,193,41,82,58,9,123,44,89,89,5,85,238,119,18,163,172,238,194,166,190,204,227,142,118,47,6,181,114,12,209,202,193,166,122,186,86,57,89,202,72,98,27,208,168,77,205,99,70,181,125,149,213,246,199,213,246,233,106,251,149,154,36,213,158,167,171,253,211,218,213,246,102,170,221,138,115,109,38,203,134,30,108,31,2,7,85,112,249,74,44,201,50,126,204,23,250,175,209,250,241,186,79,58,223,164,38,33,111,209,132,220,49,84,147,144,19,164,146,144,219,148,34,252,16,20,97,65,108,0,229,83,174,238,76,3,110,253,206,116,132,212,235,76,87,233,190,116,157,158,73,18,179,43,253,245,16,174,206,232,172,159,154,106,79,26,207,16,126,131,234,72,135,12,34,52,102,46,247,198,29,233,67,186,31,125,52,238,70,155,222,72,47,26,203,144,240,62,37,187,187,190,170,102,42,90,118,63,140,101,247,191,79,33,187,165,245,68,183,84,139,238,29,74,116,251,43,68,247,163,33,189,134,140,89,87,77,85,116,237,93,21,100,95,174,36,183,36,37,65,227,229,242,142,120,24,91,162,5,119,105,44,184,43,222,136,224,90,42,229,118,161,146,219,211,95,53,7,93,249,76,94,203,237,233,124,125,185,21,235,201,173,168,229,54,75,201,77,196,98,227,194,145,19,67,56,74,235,156,98,50,177,113,77,245,156,74,170,231,41,177,185,41,5,26,47,151,223,142,197,230,106,177,249,177,216,22,188,1,177,85,212,110,41,153,189,242,85,61,232,145,98,1,35,253,219,177,119,150,44,195,170,129,146,33,152,184,90,20,65,26,131,4,64,15,63,39,75,229,102,186,206,106,23,180,72,61,129,87,4,113,87,220,18,121,117,138,154,201,9,27,55,220,91,152,165,246,217,73,192,224,103,208,169,220,93,223,109,236,184,15,235,180,3,60,77,219,207,85,218,161,36,77,111,33,171,228,163,105,242,17,35,121,34,77,62,102,36,159,76,147,79,24,201,61,86,146,172,182,137,85,242,214,52,185,215,72,30,72,147,251,141,228,161,52,121,208,72,30,73,147,119,27,201,251,210,228,81,35,121,44,77,62,96,36,31,78,147,15,25,201,227,105,242,81,35,249,120,154,60,97,36,151,237,36,249,164,145,188,37,77,86,123,183,42,185,47,77,222,106,36,111,75,147,7,140,228,225,52,121,200,72,214,219,174,249,120,219,245,78,42,242,114,143,157,182,238,136,173,50,238,79,203,239,51,202,31,76,147,199,140,228,195,49,218,163,6,218,35,6,218,195,26,237,177,180,252,184,81,254,68,154,124,220,72,214,107,230,249,120,205,28,209,110,54,244,179,172,245,179,55,73,211,243,12,149,220,159,38,247,25,201,163,6,134,61,177,134,27,105,251,117,218,33,35,237,32,166,89,186,147,89,208,201,58,172,118,177,22,82,175,176,218,197,38,141,218,131,62,70,102,120,146,132,141,178,92,222,71,66,237,215,52,200,222,145,81,82,188,134,120,250,216,138,39,191,247,232,94,34,223,10,234,233,69,114,240,177,189,68,30,125,76,221,129,18,121,48,250,171,210,28,251,73,36,123,32,199,190,36,71,11,131,122,21,169,130,238,20,141,122,194,150,41,213,7,165,14,234,82,47,158,207,220,110,122,251,100,159,203,173,90,72,37,242,103,200,55,145,127,245,250,31,174,11,102,11,34,189,168,68,228,103,54,132,92,142,13,237,37,45,140,148,220,206,192,150,68,240,174,144,177,110,137,231,62,216,234,128,204,149,231,11,142,31,170,91,19,144,185,130,75,71,16,233,222,242,177,18,233,186,69,210,13,130,72,186,169,75,254,102,228,149,114,146,109,146,187,183,239,197,32,161,37,26,168,203,98,76,127,56,87,30,208,245,80,240,58,164,23,201,207,64,97,111,117,115,137,75,126,75,137,221,82,34,146,111,128,241,133,203,131,42,239,218,192,21,36,160,9,137,164,19,18,36,17,164,107,195,199,43,106,179,90,152,5,8,121,87,72,133,213,194,138,234,11,58,150,138,195,16,18,79,16,171,157,183,11,146,228,43,57,130,174,14,109,225,8,42,236,230,144,10,34,44,120,176,32,79,177,196,172,110,193,236,248,195,213,94,137,224,253,70,171,248,27,130,202,226,234,128,11,75,112,201,55,130,133,230,194,130,1,142,74,138,32,21,92,93,119,137,185,40,217,1,243,231,122,216,14,221,55,131,204,24,8,159,111,42,113,121,96,135,102,0,70,180,146,141,172,8,46,247,65,114,137,175,4,22,4,94,64,228,194,106,101,46,76,229,64,142,130,202,219,5,185,117,3,222,152,100,2,145,17,77,14,65,244,138,83,69,145,61,195,99,237,18,6,178,243,55,148,216,166,146,37,137,176,186,54,66,206,77,27,74,177,60,75,12,176,216,41,73,4,72,114,20,73,182,38,201,86,36,217,64,146,93,77,18,211,36,145,68,56,68,240,168,4,131,43,223,84,162,32,246,152,40,34,104,4,8,82,49,209,206,224,108,65,229,103,54,168,186,66,34,15,171,55,168,144,177,250,112,73,5,149,252,150,77,37,186,193,194,6,53,72,16,28,47,164,16,15,219,147,181,50,87,80,248,241,213,52,30,126,40,208,124,182,39,236,201,42,114,36,21,54,86,100,87,85,100,11,39,174,200,142,43,178,51,21,217,186,34,165,17,70,243,88,149,205,163,238,252,129,196,206,17,57,73,111,233,146,231,111,144,68,228,228,249,43,155,55,133,54,135,14,76,149,218,194,244,8,189,6,165,191,108,93,64,4,13,45,225,148,88,160,194,234,82,181,62,73,149,218,150,28,65,148,130,203,115,111,145,214,134,72,22,85,223,92,217,12,47,154,241,130,38,221,20,218,130,162,122,19,97,109,236,196,203,193,150,112,37,19,185,77,90,59,54,110,128,190,199,107,246,61,236,92,157,1,245,160,123,9,43,238,98,208,218,235,4,213,148,174,222,80,194,190,229,128,96,154,67,166,58,25,181,186,5,173,238,100,157,1,73,109,64,137,172,5,153,10,222,181,110,67,64,176,7,50,232,129,44,219,3,97,186,24,247,64,22,65,99,16,92,247,1,175,139,10,86,108,247,185,151,234,154,224,235,2,46,15,197,117,8,190,6,195,203,49,193,229,174,50,180,144,44,222,210,14,198,170,123,69,201,14,102,64,175,223,84,178,58,131,25,242,232,208,94,20,131,44,151,111,219,32,236,230,146,141,73,45,140,68,37,2,250,60,14,25,198,147,138,8,168,250,234,102,120,115,68,39,178,206,192,146,187,119,236,37,33,81,54,9,243,181,48,171,228,68,194,90,17,56,168,109,40,14,181,130,158,170,106,166,39,48,84,80,86,165,160,44,237,9,32,60,80,122,165,251,190,160,74,65,177,95,224,7,209,44,200,125,10,5,133,113,211,141,102,120,73,47,33,160,145,208,176,76,206,88,107,181,99,58,174,127,162,120,213,74,40,216,3,158,116,244,18,85,42,172,20,158,170,118,192,38,194,194,202,74,128,49,0,98,76,3,193,244,85,108,133,203,195,43,210,51,60,57,145,12,8,64,238,154,141,129,237,187,30,144,140,124,173,217,24,128,4,172,213,1,85,89,211,252,2,249,195,214,0,51,22,133,84,183,3,12,81,28,216,130,124,43,181,56,75,36,0,231,93,97,6,21,79,26,141,181,11,166,27,14,189,118,20,87,4,154,190,38,160,152,223,197,35,14,30,182,185,178,115,135,208,114,200,150,46,84,19,160,36,225,212,138,100,75,43,179,228,49,32,182,92,46,227,193,92,38,28,41,186,160,237,221,174,18,70,115,144,197,104,117,115,137,202,102,200,11,164,44,100,36,204,227,93,118,185,71,129,109,12,204,96,190,141,185,114,100,7,212,7,53,67,86,69,3,228,194,75,247,0,140,238,136,91,139,202,121,145,210,69,153,67,137,75,212,1,103,117,64,60,144,232,138,0,12,41,54,225,237,27,128,100,6,169,93,37,146,244,56,213,232,178,204,64,28,76,144,98,187,159,135,230,74,52,151,26,154,107,73,10,99,214,45,155,74,4,52,151,154,154,11,54,8,73,194,153,150,50,173,36,54,173,52,177,176,248,117,71,197,148,80,202,42,96,194,102,25,86,129,42,187,96,119,133,60,238,121,130,66,211,210,88,147,87,4,28,153,130,161,111,131,164,43,3,27,218,21,140,87,204,9,45,254,134,58,168,226,107,123,170,3,153,148,114,128,40,7,83,72,95,56,34,103,12,132,49,151,48,28,74,126,75,58,34,70,33,215,157,1,230,112,204,183,181,114,216,177,114,196,230,8,123,163,186,222,175,5,12,243,75,28,117,128,69,44,149,216,18,34,103,68,104,110,165,219,85,133,200,198,24,14,130,118,69,48,150,91,170,169,173,46,161,122,34,234,84,13,205,243,29,79,41,43,88,221,18,141,45,87,90,37,16,168,236,107,226,245,24,35,190,116,163,144,1,142,195,9,119,104,23,14,214,227,14,88,83,241,34,124,166,58,44,182,43,76,155,193,194,41,141,195,15,103,106,107,111,235,171,197,92,183,146,45,120,177,29,218,137,215,182,148,84,82,32,175,166,165,164,130,197,150,18,154,7,70,109,168,65,57,56,68,253,240,86,230,38,86,240,56,240,242,250,249,192,86,173,30,54,6,157,10,72,192,198,0,224,128,6,14,152,111,142,0,112,80,3,7,205,108,227,0,28,214,192,97,51,219,4,0,71,53,112,212,204,118,2,128,99,26,56,102,102,43,63,191,151,200,227,26,56,110,102,235,129,55,39,53,0,191,73,182,196,46,200,94,200,179,249,121,149,188,217,44,176,197,124,211,7,192,22,13,108,53,129,1,0,182,106,160,223,4,6,1,232,215,192,54,19,24,6,96,155,6,134,76,96,4,128,33,13,236,54,129,81,0,118,107,96,143,9,236,7,96,143,6,246,153,192,24,0,251,52,112,8,128,3,26,56,96,190,57,2,192,65,13,28,52,179,141,3,112,88,3,135,205,108,19,0,28,213,192,81,51,219,9,0,142,105,224,152,153,173,12,122,117,92,3,199,205,108,61,240,230,164,6,78,62,111,100,235,133,55,155,135,116,251,152,217,250,0,216,162,223,108,49,179,13,0,176,85,3,91,205,108,131,0,244,107,160,223,204,54,12,192,54,13,108,51,179,141,0,48,164,129,33,51,219,40,0,187,53,176,219,204,182,31,128,61,26,216,99,102,75,7,203,125,102,158,105,142,156,24,41,195,244,237,214,6,228,13,26,180,25,158,96,51,178,22,77,141,62,78,156,206,147,116,21,201,6,236,133,247,228,108,54,179,155,222,174,34,208,20,22,192,24,137,67,137,142,110,212,173,230,231,45,204,106,96,132,114,79,176,128,201,190,231,246,170,227,148,129,114,71,74,240,94,77,76,137,58,182,226,70,194,42,222,38,10,45,204,15,25,252,184,37,28,13,139,47,81,120,15,132,205,17,5,24,53,103,137,2,88,177,34,110,26,203,98,36,72,241,2,40,48,39,180,224,167,24,122,158,164,97,78,210,144,234,128,28,46,184,65,138,60,52,204,37,46,221,181,48,216,201,147,15,236,197,3,191,184,75,147,0,28,44,48,23,206,138,128,65,105,16,96,164,144,9,22,218,42,58,17,139,36,58,129,118,151,138,143,2,166,157,203,188,220,255,55,163,164,120,53,52,24,52,41,186,137,194,93,81,226,205,184,202,74,4,111,22,44,10,193,161,130,113,51,39,243,224,144,32,189,36,228,6,205,78,5,205,60,42,229,171,104,110,16,249,20,200,195,203,188,104,80,52,59,149,52,243,74,154,121,23,126,68,20,105,206,215,160,57,47,28,145,95,81,162,64,115,94,18,65,107,209,204,112,144,130,129,101,117,137,52,151,184,44,172,182,218,133,43,28,65,154,75,46,14,137,194,85,75,52,72,155,171,104,13,243,248,9,83,120,14,193,55,225,24,225,139,99,48,101,152,51,228,225,135,169,143,226,210,40,180,69,30,126,242,248,245,223,196,121,5,79,45,116,60,225,148,130,78,12,240,149,211,82,99,32,69,222,46,24,204,62,98,153,233,37,35,42,187,111,22,164,75,230,163,146,141,233,210,69,201,118,149,28,153,95,135,49,222,18,105,218,194,49,116,67,13,200,14,250,86,64,13,211,181,229,4,13,185,111,121,72,99,137,129,92,145,16,140,40,45,243,242,144,150,171,112,100,94,142,103,132,236,128,147,181,162,196,154,113,29,159,8,214,44,0,181,39,114,194,93,25,80,207,203,176,229,164,108,53,212,97,43,159,178,229,68,93,37,91,177,101,42,73,5,143,24,202,89,228,107,178,229,0,91,13,138,45,199,96,43,111,178,101,215,96,203,22,118,194,150,93,139,45,225,162,166,200,124,232,203,60,244,50,248,191,166,185,43,228,194,85,51,117,12,107,238,74,190,33,164,12,244,198,130,236,168,48,104,67,92,121,219,134,144,233,4,222,222,65,5,185,136,144,187,196,172,205,240,40,105,4,144,122,102,198,51,87,207,225,44,156,10,224,125,5,171,171,196,84,144,175,206,192,174,192,132,185,104,132,125,150,118,149,40,76,91,109,168,58,47,71,254,70,47,154,114,32,95,77,99,248,234,102,200,237,202,238,208,199,160,94,195,251,182,186,225,44,236,117,50,47,7,227,34,174,32,10,184,86,149,151,125,250,141,36,161,45,73,152,99,237,194,194,238,133,162,225,50,191,182,57,108,128,36,92,4,4,115,128,209,238,186,197,44,65,133,23,149,102,92,68,72,79,7,189,243,221,184,200,40,184,240,225,255,234,102,17,52,3,221,249,90,87,116,112,78,212,189,2,154,64,248,34,104,134,177,2,120,88,211,28,230,5,87,115,38,165,21,4,204,137,163,215,181,214,5,57,65,196,12,232,146,68,41,145,22,209,34,66,176,243,174,8,112,229,206,237,10,153,112,69,208,25,248,115,253,0,52,198,93,19,48,101,58,28,64,195,107,160,233,170,66,195,187,4,137,80,43,69,16,120,50,239,23,60,121,171,160,93,97,78,88,130,98,159,237,194,176,82,4,99,175,149,138,122,93,9,235,105,148,183,174,180,64,76,141,50,15,164,99,76,52,190,50,200,195,12,185,11,3,152,137,25,145,204,39,49,224,92,97,137,92,228,97,62,124,177,136,192,240,134,177,244,10,171,3,230,33,166,18,19,94,132,95,191,103,10,41,16,33,200,202,128,250,158,39,252,56,52,94,193,19,106,9,194,146,91,31,220,75,138,207,81,162,42,44,177,12,230,117,65,206,19,57,137,92,105,125,83,86,207,39,30,81,186,179,255,190,189,218,134,8,75,30,138,129,6,232,121,49,16,47,199,169,117,0,97,201,19,241,27,120,167,68,32,55,39,148,0,17,161,47,44,181,80,146,139,148,242,185,171,3,11,52,80,248,11,9,233,24,248,179,111,254,232,111,94,120,236,107,226,189,129,141,24,194,153,200,44,40,35,24,155,198,174,16,116,185,17,250,187,23,233,193,11,102,101,97,94,56,240,150,137,70,120,27,132,142,82,185,100,225,158,194,248,219,132,141,99,137,166,181,184,210,224,174,12,96,150,235,96,203,80,145,75,154,133,11,87,228,35,175,51,208,233,217,86,1,202,1,205,154,160,32,138,98,230,26,156,237,22,59,3,112,168,138,107,113,93,183,184,34,192,187,44,158,40,34,218,246,85,129,3,99,87,163,188,117,5,230,155,185,22,91,189,97,165,58,134,230,39,145,15,193,187,16,17,22,20,164,216,33,10,139,136,8,10,34,128,234,208,211,88,128,253,181,81,222,164,16,5,10,17,131,10,29,173,97,141,113,157,182,39,154,64,64,194,93,217,12,165,1,179,206,33,120,138,28,177,218,130,10,107,77,0,84,82,224,133,254,191,220,253,13,148,93,231,117,23,140,63,95,231,227,222,115,207,204,25,105,44,201,26,57,222,231,204,216,154,177,165,72,142,109,201,145,93,103,246,93,29,201,131,162,200,105,189,178,66,224,15,37,139,245,7,206,53,89,29,121,16,161,29,105,198,181,35,68,95,147,10,234,213,186,93,46,81,18,131,18,136,169,219,56,68,77,157,213,153,212,188,117,26,215,53,16,72,0,175,23,183,56,193,11,210,96,104,128,240,54,205,188,107,239,253,156,115,207,189,51,35,91,198,121,225,37,89,214,220,243,245,124,236,231,107,127,254,182,76,54,13,142,138,118,9,140,250,66,109,2,109,226,204,118,209,244,163,193,220,6,14,159,168,7,58,162,169,20,85,231,104,76,211,140,211,82,147,212,30,210,159,144,213,57,231,63,186,166,240,32,94,254,232,154,199,231,164,190,192,54,124,182,46,136,238,100,176,29,159,174,239,164,140,243,204,238,148,116,58,181,146,188,195,19,171,87,104,112,204,209,168,60,160,127,34,162,226,52,77,206,182,224,111,19,127,217,134,246,140,205,14,91,96,58,100,15,212,160,173,32,42,107,34,3,228,138,51,154,88,222,216,130,67,38,3,11,145,216,13,140,72,180,138,69,103,81,247,180,25,81,16,236,104,162,146,143,142,234,246,242,164,194,217,178,112,83,74,56,40,54,245,107,226,42,3,208,232,202,162,195,42,143,147,204,122,104,54,22,65,32,204,137,229,45,210,2,47,213,34,193,207,252,117,57,48,89,233,74,146,58,234,82,180,227,68,203,194,210,182,22,177,90,41,204,3,102,3,105,138,135,16,151,226,46,121,5,43,86,130,47,177,102,46,193,226,40,23,31,50,131,70,165,59,226,108,99,136,64,103,127,182,79,31,55,109,198,115,195,230,160,60,96,250,232,185,116,59,45,42,86,128,98,230,21,149,94,103,124,200,100,104,36,105,68,120,60,213,196,113,28,103,39,133,22,180,179,211,85,125,182,8,164,63,17,91,18,105,106,82,197,118,168,226,41,177,67,65,110,100,96,168,98,43,106,44,139,44,55,88,170,56,163,77,159,74,54,37,151,187,73,183,219,168,133,207,198,63,80,39,216,58,246,123,254,111,65,199,142,197,3,71,83,26,217,151,212,49,241,82,138,11,118,126,112,71,89,19,103,179,159,224,155,57,155,49,173,31,14,35,138,24,124,73,29,81,170,115,45,157,175,191,175,122,35,129,211,90,7,172,72,249,182,234,141,196,129,82,42,84,81,204,210,204,46,233,41,181,117,168,179,123,164,179,187,250,157,221,221,239,108,167,209,217,241,228,106,27,88,80,251,174,185,234,207,14,208,103,87,95,91,76,159,109,191,234,207,58,244,217,182,171,254,172,77,159,141,93,245,103,41,125,150,93,245,103,45,250,108,148,6,114,186,4,157,221,14,238,128,158,158,35,206,152,126,221,84,4,184,242,93,187,80,132,184,242,20,27,30,67,92,185,108,143,138,17,245,144,57,72,59,42,30,44,179,63,147,91,170,60,192,149,167,126,99,249,1,92,255,153,103,150,143,167,186,206,46,245,55,252,190,72,239,22,180,30,223,15,110,191,58,152,70,244,231,22,81,34,199,133,111,27,207,217,0,54,123,205,162,225,55,254,139,58,150,134,252,6,55,152,223,56,160,223,65,205,156,237,225,250,186,93,160,102,115,84,38,174,60,167,74,190,69,173,123,209,255,198,246,226,169,194,226,202,138,35,73,102,229,41,251,0,219,245,123,184,114,225,153,229,147,244,230,202,179,234,216,2,113,59,56,42,253,140,184,147,35,212,9,69,119,2,92,97,45,127,128,43,217,73,177,127,226,187,22,112,69,159,58,162,222,193,87,157,211,248,50,93,29,228,171,240,116,253,248,22,78,87,148,37,3,223,220,82,189,181,202,223,32,137,156,163,252,10,93,105,95,247,180,217,151,219,78,71,198,89,100,170,227,212,77,218,149,90,67,187,146,87,146,79,155,184,254,69,251,61,114,232,54,127,216,146,15,219,53,10,45,180,100,219,243,159,35,79,41,146,228,190,117,110,77,88,238,16,34,185,248,32,143,231,206,161,73,16,111,118,51,226,134,223,150,91,58,212,55,78,156,128,122,25,214,132,184,149,181,245,13,114,213,212,28,36,213,182,211,24,45,224,107,66,45,231,179,23,65,136,143,252,245,70,83,249,130,154,202,226,104,179,19,223,171,58,193,125,119,104,216,233,83,166,104,192,7,80,118,154,83,192,144,48,71,235,135,139,231,83,138,127,208,190,234,48,46,249,232,131,8,162,161,237,175,35,135,76,220,63,100,116,255,144,113,155,28,50,140,0,233,112,182,55,165,232,8,166,58,240,165,115,194,134,254,98,71,39,181,86,72,21,98,75,42,236,41,94,168,86,56,28,35,50,62,43,146,132,109,209,185,99,134,222,229,150,89,228,34,98,35,42,73,38,198,44,131,221,71,146,57,170,247,240,186,94,215,11,28,20,163,75,214,153,239,87,26,223,181,192,153,52,174,95,200,105,124,254,44,115,131,24,46,66,124,138,223,52,213,155,6,223,181,0,49,134,139,167,248,253,31,23,45,134,195,206,162,188,104,249,69,135,219,22,113,101,229,53,181,64,223,216,250,155,83,180,108,87,158,85,114,110,185,50,41,88,175,223,35,142,75,158,28,243,58,11,110,185,146,118,59,84,239,1,135,63,54,127,10,28,254,248,252,41,113,236,32,182,118,67,45,190,133,212,114,223,45,106,217,169,83,190,86,205,190,40,16,204,177,125,48,16,28,108,75,63,143,114,189,124,69,60,183,103,25,137,145,230,12,70,180,157,78,228,134,142,49,250,161,19,72,230,82,54,0,186,92,202,52,152,137,229,75,11,216,122,17,146,220,229,122,69,155,68,243,24,85,197,45,209,146,99,22,152,238,179,251,9,46,63,80,162,61,201,141,137,152,153,34,238,189,112,94,66,34,121,68,151,141,11,211,188,176,245,5,143,188,43,139,72,166,237,156,248,6,112,121,174,241,14,21,150,211,162,210,189,34,160,87,205,44,196,115,236,84,208,198,165,133,126,189,121,139,184,96,106,106,139,10,208,82,0,221,52,245,77,227,111,18,223,106,78,19,195,12,173,146,100,75,8,243,136,138,181,184,170,33,134,24,87,245,201,137,34,164,62,147,204,99,22,89,48,12,241,123,122,161,104,123,151,131,14,163,238,182,209,44,150,121,202,62,8,17,171,167,56,90,206,129,21,203,225,242,3,24,157,166,201,121,250,20,62,248,83,15,199,11,37,79,165,43,60,140,175,244,176,179,229,195,156,246,166,172,44,44,164,199,152,164,49,132,36,19,68,208,41,115,146,47,227,211,184,254,224,247,162,5,154,140,244,183,196,7,87,220,253,152,157,38,222,56,128,214,28,113,185,145,116,206,118,76,221,185,194,137,245,94,170,180,253,42,115,11,45,162,56,27,46,167,141,219,236,157,146,95,50,245,75,241,22,47,177,254,88,234,14,196,23,215,46,228,142,39,42,107,136,72,22,212,254,53,92,90,96,21,39,223,177,172,169,172,103,152,173,70,158,126,153,250,151,149,129,15,152,246,44,33,185,94,17,86,238,27,122,176,144,60,168,4,41,71,179,206,165,42,17,99,29,83,112,207,2,216,205,8,72,203,46,153,247,75,52,129,160,87,184,60,168,28,218,246,43,224,176,45,165,43,185,86,250,226,80,159,246,147,156,126,5,73,85,179,18,129,42,119,149,183,73,30,177,15,74,174,68,128,193,42,53,65,4,138,37,134,49,165,230,88,217,60,42,14,186,202,239,33,134,152,17,224,13,191,51,166,85,90,41,81,45,4,71,169,177,163,117,149,67,37,113,29,16,204,143,50,138,191,154,54,227,92,142,111,152,148,70,155,141,29,221,234,105,242,119,18,29,144,172,150,245,10,59,165,54,21,146,244,200,180,142,253,255,140,139,99,27,111,242,191,136,254,9,85,2,26,95,82,71,83,71,199,182,194,21,119,167,110,131,234,170,195,154,42,126,233,101,117,167,86,155,63,122,85,211,163,112,179,71,175,240,163,96,179,71,47,241,35,183,217,163,203,252,200,74,164,214,2,141,195,198,119,94,224,246,72,52,215,138,91,144,84,23,195,47,61,203,47,233,164,143,201,130,154,95,213,152,44,242,44,55,152,231,14,115,154,75,162,105,193,101,158,54,96,202,194,161,89,196,87,190,185,202,142,77,152,44,22,17,132,199,152,115,154,40,34,212,204,13,231,1,111,84,124,0,173,115,234,41,222,82,13,31,19,189,220,209,113,50,239,143,49,255,164,118,159,55,8,39,216,129,158,189,240,234,138,174,57,157,7,244,236,88,170,241,107,65,238,240,122,58,140,114,204,241,217,111,122,237,177,195,87,27,111,59,144,136,89,212,189,100,160,201,235,235,235,106,161,35,232,231,198,8,171,186,252,64,233,217,134,94,30,225,215,56,121,30,126,45,56,49,193,187,152,238,229,142,168,98,107,173,189,129,0,95,253,119,146,235,163,44,12,177,141,154,11,210,101,17,208,86,72,52,32,9,64,8,75,27,44,3,210,131,69,117,167,38,46,224,143,213,17,53,74,231,24,142,46,224,107,175,172,122,180,223,17,190,229,78,15,222,77,249,110,60,116,183,195,119,59,67,119,19,190,155,13,221,109,243,221,241,161,187,45,54,229,253,5,52,167,209,244,10,141,201,201,148,132,162,176,4,93,22,6,63,243,141,85,117,64,49,168,172,65,83,226,63,252,198,170,242,208,131,10,236,140,102,172,95,69,92,159,197,17,198,173,229,235,246,17,230,35,245,17,213,22,152,14,152,79,13,27,22,214,213,60,79,179,149,21,81,64,225,202,74,44,63,94,123,232,142,30,94,248,94,50,15,26,159,250,173,78,15,95,252,194,205,243,167,64,227,87,254,94,167,135,1,221,254,59,223,73,122,248,251,201,252,41,186,253,123,95,75,122,248,177,93,116,255,19,191,148,244,112,132,95,62,187,128,127,231,181,246,81,208,248,99,11,248,242,239,180,143,158,58,117,42,13,64,227,23,190,221,238,97,56,159,242,62,175,241,223,255,95,171,10,247,225,151,254,205,170,194,103,53,158,251,189,85,133,95,178,217,109,169,199,21,121,254,95,174,42,156,198,199,255,213,170,194,143,25,252,245,151,86,21,254,178,201,110,155,75,217,236,165,197,228,185,162,73,92,228,56,134,175,5,248,213,106,26,106,108,227,227,223,88,85,217,143,241,134,246,255,145,145,159,103,117,201,91,56,242,122,3,37,178,114,74,37,151,218,90,47,139,169,215,76,189,14,222,87,223,57,219,135,32,143,105,211,132,224,26,205,198,196,183,119,191,210,71,84,12,6,175,61,68,135,130,63,199,20,7,166,196,229,33,147,145,88,50,14,70,210,138,24,201,75,98,240,217,255,36,105,69,12,187,141,29,50,192,14,100,156,146,100,140,203,157,177,241,97,75,229,238,190,170,114,63,181,117,185,217,96,185,19,111,85,185,163,92,238,205,54,126,39,151,187,231,170,202,125,100,235,114,71,18,113,226,115,172,38,193,235,174,170,220,111,189,182,101,185,169,208,193,56,161,195,219,222,88,185,90,202,253,250,214,229,118,146,70,49,254,99,37,31,63,118,105,77,73,234,24,95,204,115,175,85,89,101,252,199,201,85,124,252,244,240,199,237,171,248,248,226,240,199,173,171,248,248,145,225,143,227,171,248,248,59,255,113,232,227,232,42,62,126,101,248,227,240,42,62,254,250,240,199,193,85,124,252,252,240,199,238,42,62,190,60,252,177,189,154,161,26,254,216,92,197,199,231,135,63,166,77,145,62,97,103,76,37,98,87,85,156,103,96,57,222,113,74,37,191,16,235,104,89,78,77,118,119,208,24,156,238,51,247,211,230,162,46,28,75,249,186,199,220,188,89,4,85,162,235,229,134,189,118,251,215,196,193,76,31,103,49,215,165,226,26,88,68,56,77,71,125,232,181,96,138,133,19,134,42,225,2,132,213,199,101,17,234,248,0,175,241,27,52,174,170,147,114,80,70,56,141,47,127,195,31,123,252,216,33,231,4,66,125,98,162,48,36,130,25,185,79,107,220,214,87,29,170,167,190,202,192,96,80,95,141,131,193,176,190,218,5,6,163,250,138,72,26,215,87,68,231,86,125,69,244,111,215,87,211,96,48,169,175,246,129,193,78,125,117,16,12,167,86,147,171,219,192,224,72,125,117,7,24,28,173,175,238,162,253,165,190,34,158,116,172,190,250,97,48,184,173,190,186,7,12,110,175,175,222,13,6,199,235,171,123,193,224,53,245,213,125,96,112,71,125,245,126,48,184,179,190,250,211,52,77,234,171,31,163,243,172,190,250,243,116,10,213,87,127,145,206,142,250,234,126,218,241,235,171,31,167,125,186,190,90,164,221,181,190,250,48,24,188,190,190,90,34,134,186,190,90,33,102,57,175,47,31,166,203,162,190,60,79,151,147,245,229,35,116,57,85,95,94,160,203,27,234,203,71,233,242,198,250,242,49,186,220,91,95,62,78,151,211,71,83,131,211,205,9,100,27,23,248,211,223,92,85,120,157,92,255,164,74,100,194,147,204,107,64,227,245,11,5,167,58,100,159,231,139,26,212,104,34,82,12,77,218,189,44,61,228,226,157,102,22,197,39,153,77,201,133,62,45,242,171,145,151,152,183,89,44,171,224,81,93,230,30,79,108,139,70,177,153,158,89,252,248,56,47,200,235,23,114,205,101,208,74,139,123,226,40,132,166,39,139,139,196,126,146,139,22,69,45,19,130,62,125,74,60,114,29,251,166,72,131,205,188,15,43,9,88,239,161,189,2,117,81,84,162,174,234,31,46,55,26,242,217,150,54,196,67,189,166,4,10,90,249,83,211,175,180,46,231,98,48,56,93,226,51,255,199,154,128,174,160,61,162,104,226,131,172,27,191,40,252,10,147,69,72,196,156,186,218,184,185,62,139,198,122,214,222,200,46,181,129,71,219,182,125,252,154,29,59,119,37,77,118,142,182,173,17,171,141,245,193,89,62,9,249,109,253,116,155,222,74,182,135,25,71,124,234,137,181,42,221,38,179,212,159,122,98,173,202,168,105,241,98,255,194,116,31,93,89,89,89,53,135,105,241,210,200,210,138,254,170,42,49,23,50,20,188,58,193,224,109,37,175,76,14,112,231,245,219,53,135,121,145,89,89,135,151,63,177,38,235,83,66,219,101,57,18,57,37,146,63,203,57,244,93,16,22,238,200,246,36,233,117,157,9,218,4,3,6,45,178,180,167,29,146,54,144,32,107,241,233,39,36,20,72,234,183,248,245,191,91,93,223,211,175,227,14,97,117,254,188,156,32,220,140,199,251,205,184,99,147,86,164,123,58,187,19,137,54,247,68,44,44,27,179,166,141,203,198,211,137,206,181,201,224,3,126,149,158,138,214,37,221,221,217,69,223,191,242,183,215,20,238,202,254,174,78,175,237,236,164,27,95,166,27,19,116,99,87,103,7,221,248,101,186,177,155,110,236,100,99,35,254,28,221,184,150,110,236,16,248,184,159,166,27,29,186,113,13,27,8,241,191,253,173,53,133,219,233,198,184,224,161,189,82,223,216,46,240,95,255,130,110,140,208,141,109,204,26,227,115,245,141,49,201,82,249,204,223,170,10,205,4,198,235,31,214,111,140,50,23,137,23,235,27,35,108,10,194,191,89,215,146,114,146,73,252,195,11,85,211,59,140,36,134,159,163,27,119,211,141,68,18,96,126,156,110,140,211,141,54,177,83,6,255,224,103,214,20,222,70,55,90,196,34,25,92,163,27,251,232,70,44,241,70,191,68,55,166,232,70,36,225,246,63,243,51,85,59,66,65,204,248,222,71,171,118,4,162,182,121,153,110,236,161,27,126,163,121,238,163,158,234,115,169,143,161,109,50,6,244,162,0,188,48,180,66,157,167,223,224,183,148,207,192,104,240,149,250,167,207,206,75,71,209,36,79,30,80,204,29,255,69,254,213,225,201,51,200,98,243,156,123,127,197,196,216,195,124,192,58,57,131,47,254,236,90,181,45,208,76,171,184,152,204,207,252,119,203,204,191,39,219,227,97,51,196,76,83,37,61,228,111,240,145,71,214,250,73,15,191,26,154,84,188,124,161,87,4,83,10,117,62,82,235,159,10,154,146,89,49,74,51,146,67,167,68,45,171,59,222,71,52,207,64,229,161,104,163,32,44,146,125,74,21,157,202,86,163,203,60,132,14,155,108,88,236,76,188,181,134,110,94,191,144,199,208,17,107,77,140,225,34,132,167,242,54,36,104,196,89,133,222,101,123,77,200,246,154,22,36,104,165,52,54,219,180,32,102,179,77,91,220,4,107,91,74,72,242,232,187,22,160,37,22,155,118,173,247,76,208,149,121,152,64,0,109,124,112,197,101,215,136,49,133,94,95,97,59,65,176,95,37,244,79,91,156,142,180,120,250,68,199,83,246,212,243,206,57,39,250,206,57,45,246,89,174,140,45,49,157,65,145,188,21,201,91,209,177,180,37,84,234,123,57,197,222,222,194,159,66,4,174,71,228,101,85,44,157,51,187,74,246,219,172,231,19,231,28,84,197,216,97,155,193,216,37,110,215,138,62,234,102,113,133,61,157,217,101,114,133,163,130,130,253,106,119,145,210,159,137,147,105,0,1,164,168,203,35,106,55,164,236,122,38,41,16,83,222,1,57,132,77,229,49,180,124,170,234,105,51,158,59,201,182,200,66,176,131,81,175,245,165,55,219,82,182,3,135,237,19,19,185,212,81,180,192,129,131,214,252,68,222,33,238,21,152,137,11,88,101,88,180,168,94,7,233,81,206,250,153,149,224,74,170,141,149,139,241,126,165,234,226,147,78,152,152,101,212,208,198,21,205,209,218,6,218,184,62,122,130,126,90,116,116,127,197,205,79,36,16,149,57,113,181,144,244,32,44,243,8,66,200,42,99,91,138,109,124,170,98,10,92,195,26,211,31,46,78,241,79,180,214,185,171,102,174,171,199,196,240,179,156,1,112,120,88,116,99,76,104,1,80,115,243,145,4,2,132,114,74,193,200,40,207,124,112,160,241,229,127,178,90,59,253,209,157,8,95,172,238,124,62,174,86,213,108,201,10,21,175,226,158,54,174,112,104,69,147,250,248,202,170,231,144,141,28,255,140,77,2,101,246,195,180,103,100,197,104,119,93,63,212,117,239,101,149,178,15,77,28,61,108,24,156,85,131,67,215,43,188,37,92,11,55,229,124,160,84,56,173,84,209,230,104,62,225,61,56,243,171,162,1,173,207,241,149,12,218,68,226,140,141,91,122,49,27,43,34,110,149,48,43,16,74,172,92,116,200,168,74,219,12,173,185,171,105,247,143,112,24,125,11,29,219,56,194,202,148,164,161,197,46,171,210,114,158,51,161,108,148,110,191,82,133,59,162,70,125,98,210,224,42,121,29,55,178,115,215,230,92,14,139,111,90,218,252,202,199,86,69,74,161,35,125,159,116,226,174,250,32,159,230,95,163,114,232,99,86,22,142,187,86,216,236,38,176,56,14,46,187,159,58,9,197,40,231,128,79,96,180,155,157,191,148,91,24,237,198,231,47,229,29,24,189,148,7,157,157,108,120,233,236,72,216,65,226,154,132,93,41,198,19,118,0,216,158,96,144,219,206,182,4,195,220,118,198,18,140,216,205,2,99,118,165,192,22,251,80,96,59,183,157,52,193,132,253,40,176,147,219,78,146,96,154,219,78,59,193,145,220,118,90,9,142,178,39,3,102,236,187,128,99,236,184,128,219,216,197,0,183,179,191,58,254,241,186,229,152,0,252,62,255,48,9,174,243,15,77,237,222,186,253,52,108,52,100,52,235,105,219,113,199,4,26,199,65,124,212,45,203,81,81,121,220,197,172,91,159,75,21,50,98,151,43,82,212,139,5,167,166,133,104,126,162,32,177,211,157,152,40,98,137,214,142,113,101,133,150,53,93,141,152,89,118,48,116,52,203,118,145,172,76,103,156,243,194,111,38,70,49,146,61,19,112,48,194,27,76,86,102,239,102,3,35,205,169,105,35,128,122,16,203,92,13,124,228,93,128,15,174,172,172,124,248,104,170,217,150,172,146,108,69,179,29,130,87,176,17,11,154,153,54,113,0,113,130,122,17,162,18,236,157,154,15,223,105,195,29,98,103,148,48,167,77,72,247,138,118,202,107,156,15,114,227,21,172,253,131,159,109,98,213,250,12,158,164,201,15,201,147,93,56,7,246,201,238,250,186,125,168,155,157,123,24,58,252,160,27,159,123,248,225,195,70,72,197,54,187,108,79,71,39,60,63,103,123,83,42,249,124,104,130,101,115,118,208,48,134,209,66,97,92,83,197,96,113,134,53,195,149,137,150,249,24,179,136,23,191,188,170,202,219,141,18,7,208,30,174,175,175,175,219,133,194,240,32,161,93,96,93,130,165,79,149,120,117,6,248,189,245,245,245,104,33,15,64,44,41,6,204,237,70,65,124,22,162,165,34,186,155,153,25,218,87,192,85,183,187,112,190,126,18,111,249,164,179,197,19,250,73,228,199,172,228,156,192,78,108,249,98,85,245,178,212,7,85,2,33,131,94,108,222,154,220,84,197,132,52,60,98,188,141,46,21,70,140,58,123,197,15,157,197,76,9,195,22,179,166,247,162,185,200,42,240,120,97,46,117,125,106,158,76,117,159,154,46,121,29,234,117,217,6,155,27,9,0,169,40,88,221,173,219,221,93,249,210,215,14,108,74,200,234,201,166,180,220,236,97,103,235,135,91,81,212,36,91,8,242,195,228,221,164,153,111,5,133,51,14,88,197,199,191,176,170,208,100,111,99,133,149,220,122,226,11,12,67,202,183,86,149,220,123,250,11,12,243,200,247,86,4,31,3,95,252,2,195,112,202,61,137,127,197,243,191,206,152,117,111,75,70,7,187,247,177,72,7,203,180,52,123,5,29,151,174,39,158,10,31,94,40,84,217,200,199,175,23,184,3,150,13,181,124,108,90,80,28,255,193,241,117,117,120,181,240,209,14,237,2,218,99,169,150,224,56,229,25,250,126,48,185,110,196,243,105,9,4,102,43,250,166,33,216,174,14,193,102,44,18,6,33,233,8,36,201,102,33,216,182,14,193,22,224,127,87,88,100,34,144,156,186,101,245,181,1,185,14,28,55,199,248,212,246,61,163,206,188,84,69,250,13,70,55,123,20,136,205,59,37,1,142,122,67,156,246,198,143,26,49,234,90,162,229,62,188,80,56,166,50,135,189,248,64,123,161,141,169,105,227,55,212,66,154,91,209,198,188,30,109,54,107,109,191,9,199,82,211,31,186,10,69,67,2,132,107,232,7,218,189,191,85,1,83,156,72,117,19,235,130,56,24,109,102,235,136,76,135,51,243,169,234,3,96,120,36,133,64,34,199,24,73,1,204,241,212,36,125,24,140,132,145,11,56,22,146,215,156,4,236,53,159,251,176,108,226,227,112,253,250,19,19,226,117,236,78,166,90,98,67,151,101,86,169,26,17,68,101,44,133,201,135,223,241,68,209,62,196,84,165,234,205,212,56,154,140,14,128,30,12,3,215,52,64,15,204,32,232,129,192,117,48,62,172,96,212,136,41,182,83,225,215,48,194,66,156,124,59,208,97,195,172,8,6,91,39,189,239,239,129,194,16,165,71,19,15,99,242,252,250,79,30,79,13,3,49,10,216,146,197,100,158,129,142,120,115,19,102,247,195,236,20,228,11,11,209,202,246,16,247,242,152,153,127,54,252,199,101,17,85,195,201,254,47,77,248,132,136,81,75,208,44,164,33,80,113,36,214,208,46,171,79,166,78,76,40,43,102,158,25,125,119,106,254,20,71,35,225,131,43,241,73,15,217,193,209,73,140,231,18,177,223,166,94,0,125,10,57,34,191,66,33,160,245,33,69,158,72,237,240,75,160,169,121,70,202,241,161,187,18,234,91,71,249,242,214,74,133,125,117,160,48,49,219,243,119,150,97,76,170,162,93,85,52,247,188,9,92,194,199,154,78,182,106,67,133,79,192,104,42,90,52,175,77,208,12,31,38,108,234,48,97,122,67,92,98,117,143,189,53,90,126,89,71,178,172,35,191,172,45,68,131,168,19,30,17,106,11,212,137,176,191,172,189,87,98,64,18,170,26,32,174,75,26,119,183,238,178,120,202,242,198,78,255,205,79,100,159,213,187,65,49,191,5,86,156,93,101,219,90,194,15,115,121,133,70,187,48,193,56,78,76,133,250,51,250,74,194,168,133,96,12,94,83,227,245,20,150,21,119,125,4,159,236,134,4,84,242,241,192,116,150,13,137,128,23,53,59,61,129,69,250,157,253,170,206,91,21,8,203,69,237,195,51,133,159,11,208,44,230,177,68,242,240,250,17,143,66,59,11,226,122,88,178,185,40,204,13,123,203,106,145,178,217,143,205,137,166,60,228,51,45,143,36,246,37,201,53,171,37,18,136,158,204,179,174,202,71,33,38,78,129,86,146,44,30,222,29,246,30,103,151,188,81,176,183,27,181,36,76,91,118,118,169,24,37,110,128,228,132,124,180,114,150,243,91,137,147,42,35,90,142,17,149,31,144,4,113,169,144,44,49,60,137,68,151,223,2,205,60,2,139,165,29,47,0,54,153,146,129,139,118,53,1,53,180,231,39,242,54,36,185,150,8,185,160,201,187,120,98,25,246,197,148,126,167,149,166,62,31,161,174,49,193,34,190,14,237,44,68,121,2,97,110,73,138,168,252,119,243,176,10,155,34,49,34,143,185,75,69,144,59,246,40,77,32,174,8,214,201,99,72,114,7,186,138,112,3,55,76,176,240,10,4,243,62,171,161,84,25,19,193,98,14,124,108,16,204,66,82,86,22,146,150,103,170,152,96,169,16,172,105,236,0,55,72,48,249,22,172,39,88,144,187,77,8,166,160,69,19,239,179,26,218,108,184,160,171,114,74,37,63,21,232,216,59,229,133,83,74,242,81,184,194,185,89,212,222,19,159,22,184,87,135,232,221,9,170,250,188,182,115,169,218,45,113,28,1,88,236,220,95,178,87,117,167,204,91,141,32,192,224,128,22,140,122,163,37,144,92,16,107,214,148,120,23,9,156,128,181,92,31,126,231,197,85,133,171,10,44,213,22,237,38,137,168,44,12,174,170,227,94,62,48,115,169,21,139,210,187,68,129,66,95,212,154,28,214,118,208,29,246,100,230,162,199,180,154,75,45,50,136,180,47,157,187,240,116,67,113,19,48,254,78,109,242,237,127,167,145,117,191,193,1,109,114,3,45,241,22,10,189,62,5,66,140,203,225,140,48,253,238,106,197,162,85,92,178,136,117,64,155,194,226,171,209,73,55,139,142,147,97,93,120,65,205,79,228,142,24,18,205,206,186,237,249,212,162,225,196,67,175,200,35,46,192,149,137,112,29,33,77,120,71,135,100,135,65,173,2,124,229,197,213,42,188,129,121,218,144,145,21,74,94,222,226,79,10,97,137,81,89,144,100,208,254,80,97,241,191,234,251,193,148,120,240,212,17,165,18,100,213,203,81,26,196,8,77,207,11,45,150,227,78,138,136,62,104,99,251,199,229,101,94,98,208,230,2,172,47,0,34,124,69,125,136,61,208,169,230,163,108,96,203,13,175,29,151,12,16,82,161,150,222,116,202,34,128,248,24,71,13,38,16,138,227,209,186,211,209,178,89,6,237,102,241,102,86,216,210,190,184,167,160,115,170,208,19,121,139,189,218,59,130,76,181,39,15,113,127,222,226,13,50,225,168,204,16,221,130,136,109,134,57,95,22,226,68,152,180,11,69,155,221,229,115,109,103,33,6,93,59,245,86,72,15,125,233,158,195,214,203,60,74,106,163,153,224,13,232,202,231,182,8,43,135,214,66,65,139,185,150,51,204,222,214,115,61,18,24,180,120,158,149,223,241,66,234,32,134,168,87,68,121,200,78,191,133,246,182,53,205,163,126,229,146,57,29,148,162,77,74,84,150,17,234,211,180,153,123,231,96,230,78,132,169,243,150,131,168,118,14,142,155,206,193,18,213,78,155,12,77,218,104,131,115,176,174,157,131,53,71,200,213,61,131,152,4,19,250,66,22,63,243,193,203,116,248,72,20,128,222,93,181,96,168,96,174,50,129,112,222,235,90,25,168,3,20,30,60,100,50,166,67,222,241,245,234,35,10,54,33,66,187,110,132,98,2,114,45,67,157,9,241,32,67,128,12,119,38,228,70,183,107,5,174,130,14,87,2,201,33,147,177,131,179,30,77,252,91,149,99,199,67,129,68,145,30,172,14,105,16,12,76,154,65,71,212,52,221,56,100,118,73,252,233,148,68,163,238,145,171,76,254,196,30,10,197,76,155,172,240,40,211,178,73,42,15,41,29,115,127,237,34,199,194,123,189,130,94,144,227,135,213,81,130,95,230,67,1,220,44,241,19,123,64,56,62,250,13,190,67,46,17,51,180,229,136,30,121,127,76,41,198,117,136,101,54,196,18,91,30,247,181,42,198,83,88,137,215,113,176,200,195,33,173,120,215,86,141,208,3,141,208,205,70,88,14,124,133,54,157,241,153,168,192,118,177,47,227,30,113,97,156,230,11,31,3,60,85,239,242,161,16,162,10,39,113,181,110,43,46,189,137,218,40,195,240,210,118,145,120,172,14,177,84,225,177,84,115,120,19,151,192,155,37,213,30,246,97,69,43,50,244,11,28,40,205,249,210,194,186,180,208,151,230,168,180,86,34,197,140,131,133,22,13,104,92,225,79,162,93,100,180,179,138,216,211,198,17,165,77,69,98,49,8,136,83,113,34,186,209,232,120,69,52,62,57,35,46,66,100,100,122,220,32,161,78,144,149,241,188,77,177,87,209,127,112,186,229,79,98,175,88,149,132,33,130,2,204,193,58,17,56,236,148,181,50,33,56,84,157,206,113,193,113,210,78,172,11,86,144,228,88,181,193,211,152,215,92,75,22,98,155,174,246,208,230,164,161,205,102,153,16,172,232,47,185,215,213,34,4,157,93,47,218,45,239,206,111,7,221,249,233,112,228,156,159,180,134,241,32,99,4,240,2,103,125,173,3,231,125,174,20,113,252,36,165,144,64,27,157,152,200,35,100,128,211,128,121,221,206,253,116,246,215,167,167,105,50,11,172,133,154,54,222,105,158,231,136,76,102,83,30,208,170,8,26,199,105,32,199,41,19,20,2,58,74,213,110,62,75,3,62,75,19,118,80,239,176,139,10,195,38,18,187,210,43,44,7,16,177,39,23,68,243,44,155,208,238,146,219,90,162,92,215,172,250,235,141,88,69,231,185,68,88,241,49,67,59,209,105,118,121,145,237,152,181,175,12,97,81,109,199,245,238,46,112,46,236,81,50,199,158,93,49,13,77,181,113,9,112,200,32,233,93,118,189,164,22,210,244,147,119,94,99,103,145,129,49,121,223,245,85,13,21,197,149,128,157,23,212,204,150,108,123,109,81,163,163,206,77,194,218,243,41,18,212,255,222,53,38,91,14,206,202,116,203,100,186,225,35,159,94,171,142,189,199,62,189,166,186,234,176,81,248,232,167,215,20,174,254,188,135,226,162,219,154,110,95,252,180,87,157,80,217,23,228,195,212,255,100,109,5,127,40,154,131,78,47,15,185,68,209,242,168,5,106,223,147,197,120,247,218,243,221,7,127,234,225,243,23,46,174,174,232,179,249,53,158,185,38,1,96,70,169,98,59,92,243,145,98,91,119,249,35,176,173,255,218,153,135,186,43,213,197,242,67,249,54,59,11,219,238,117,179,176,29,182,119,245,185,129,135,247,206,249,112,128,184,44,130,18,220,130,168,187,183,253,68,190,3,182,117,245,25,216,246,80,190,141,241,120,118,92,66,123,26,12,189,211,43,90,196,201,22,17,143,199,177,148,15,54,7,90,22,185,5,126,202,220,21,62,222,39,151,170,230,140,153,101,202,80,71,5,81,103,46,85,102,182,238,124,2,9,27,72,209,158,198,232,126,72,48,158,159,40,198,56,124,99,158,113,50,12,140,113,152,62,17,225,248,68,97,144,157,240,13,91,76,204,201,212,9,104,234,98,97,112,100,62,213,187,113,25,12,70,31,66,221,251,11,167,37,32,18,29,198,28,37,53,145,20,230,201,110,231,108,177,173,11,231,47,165,6,182,93,42,44,49,131,14,236,60,3,3,48,206,173,99,108,69,11,110,30,44,254,247,245,245,245,232,228,169,212,32,201,136,214,205,246,3,69,73,90,142,230,82,35,56,34,184,174,121,73,146,32,27,202,220,102,148,100,238,85,64,189,130,145,94,222,174,230,64,30,65,43,181,76,48,154,143,138,233,33,72,100,244,6,109,230,196,212,214,175,135,50,225,25,253,198,34,107,130,13,53,221,130,153,167,49,160,38,114,253,146,181,164,53,239,165,78,230,69,93,153,112,172,99,200,66,209,140,85,60,135,186,81,99,174,61,4,219,186,235,223,255,227,63,250,111,255,241,223,252,198,186,122,120,233,176,85,40,225,100,194,252,181,132,236,33,180,74,8,197,125,169,210,169,210,110,209,98,204,40,214,213,135,133,233,29,103,21,86,192,130,36,253,161,93,103,148,163,78,132,231,101,245,140,19,11,141,128,87,19,95,26,17,15,26,201,19,48,85,168,163,247,228,247,34,163,128,78,64,60,239,35,248,2,98,38,3,92,90,40,218,37,71,99,26,32,238,158,138,35,150,161,141,234,221,41,113,136,75,11,69,135,53,248,200,145,154,139,69,218,195,93,11,36,201,242,177,199,172,176,131,244,52,159,82,133,131,209,69,209,223,137,214,63,38,49,56,102,172,230,68,128,215,212,187,105,29,176,128,16,215,126,169,155,188,77,189,229,184,208,8,218,165,172,54,139,75,11,185,67,229,153,241,94,222,129,182,167,23,131,148,212,209,107,236,25,64,125,175,192,75,192,29,151,136,60,226,52,122,69,155,122,197,104,168,10,130,30,227,137,69,208,241,189,231,8,115,84,239,105,244,190,199,189,143,55,244,62,102,241,221,245,10,226,205,71,23,133,4,49,164,167,43,18,176,151,173,32,155,176,186,140,138,165,157,183,45,46,188,253,207,27,132,104,124,67,244,178,11,178,213,7,16,209,172,176,96,122,9,235,74,180,20,224,123,108,124,143,13,223,175,122,204,149,74,252,115,80,250,121,209,120,179,20,39,96,89,179,92,95,139,49,115,66,218,102,83,8,171,120,40,58,191,192,20,65,89,196,226,227,66,123,89,10,6,23,239,47,76,153,115,130,200,146,190,233,240,166,219,102,5,29,113,174,109,230,52,216,217,98,161,104,229,150,151,193,140,82,205,173,181,160,61,23,227,74,100,44,217,171,46,150,35,201,210,119,118,147,47,184,177,33,108,251,9,222,109,109,73,239,73,52,176,120,11,205,216,129,47,248,53,70,19,123,50,223,70,171,188,7,1,180,122,15,64,178,128,241,60,43,153,104,137,239,87,68,169,109,221,107,207,95,42,172,208,40,238,65,178,64,189,139,75,240,183,22,239,135,176,204,45,174,235,99,110,22,23,125,195,93,89,180,246,43,222,158,68,237,212,242,116,110,65,84,145,155,97,195,58,2,102,182,174,233,110,208,172,192,223,99,126,130,243,186,116,136,83,17,119,72,195,0,75,178,121,64,236,219,104,54,20,1,116,43,17,141,31,237,202,157,94,78,115,62,225,35,71,54,205,49,24,233,201,30,169,18,177,189,43,6,99,28,47,187,222,28,205,218,118,133,47,253,193,170,104,39,60,247,149,49,179,138,151,191,189,170,178,7,5,40,168,211,203,71,236,44,11,187,53,237,71,32,198,197,251,203,66,246,131,57,111,249,202,157,23,148,54,31,207,43,204,128,45,190,216,48,3,130,55,54,3,104,164,193,225,181,167,27,35,28,108,54,194,245,40,80,119,232,156,34,46,175,57,32,86,6,132,134,35,57,202,142,11,57,43,251,174,124,54,129,192,82,37,124,250,99,196,136,197,166,20,84,169,8,76,47,219,195,126,194,58,51,121,80,243,61,174,62,245,67,80,244,254,22,20,180,21,5,13,203,25,172,163,52,16,110,254,133,223,17,61,5,77,73,239,113,16,125,97,132,134,14,220,102,84,44,44,187,126,49,98,145,43,97,156,167,98,75,102,110,220,131,112,1,152,17,32,166,81,49,45,42,238,134,35,80,25,154,153,57,62,207,220,48,234,6,75,166,60,109,100,246,11,250,176,145,24,60,134,185,102,139,51,155,97,179,80,56,195,11,3,223,103,204,142,142,38,120,225,231,214,20,102,144,209,92,189,72,191,159,248,121,113,77,252,29,103,108,237,68,37,81,195,203,27,221,155,227,66,12,111,243,174,82,221,0,59,251,22,14,191,161,4,13,162,56,154,6,224,112,255,209,52,4,135,255,90,145,28,104,177,125,68,29,100,249,139,117,246,239,237,180,233,132,254,67,255,201,55,213,209,52,6,135,223,230,151,5,174,77,214,214,239,254,194,154,66,155,29,45,28,231,7,142,54,43,229,59,254,235,63,82,71,83,62,248,251,96,102,44,243,181,15,153,131,108,63,63,88,102,127,90,210,170,30,100,124,188,236,70,226,90,14,118,237,123,89,79,189,171,4,139,119,148,236,64,74,59,29,61,59,108,51,246,189,230,250,254,255,157,144,62,78,134,26,17,136,88,81,59,165,248,198,91,65,35,83,216,41,179,237,44,144,34,91,91,237,140,153,98,12,140,128,203,129,240,176,185,109,168,56,59,109,166,242,10,204,187,46,142,27,173,26,141,246,226,242,38,141,102,32,37,110,177,229,210,238,96,245,231,0,101,159,35,202,58,166,172,145,184,204,129,78,233,193,183,159,239,143,131,102,139,251,224,235,9,168,108,145,213,5,236,88,3,46,249,104,160,221,178,184,173,154,254,244,113,197,144,83,128,200,45,32,218,53,6,126,188,178,83,128,222,224,20,160,106,36,94,94,15,77,143,0,37,230,49,85,91,189,213,155,243,8,216,194,31,64,53,48,128,181,168,177,88,69,249,122,190,0,106,131,47,128,192,147,169,205,74,172,124,1,212,6,95,128,77,62,106,86,181,137,237,125,180,118,15,16,45,223,91,239,30,176,73,7,54,182,74,96,143,71,197,230,43,40,146,58,155,229,235,45,13,226,141,76,46,102,179,76,46,38,201,181,7,252,175,18,87,248,100,0,146,212,34,249,175,129,137,106,124,101,55,165,188,233,174,175,199,170,48,236,184,70,129,108,219,85,2,177,148,193,6,20,51,35,40,102,182,9,227,99,5,198,39,168,97,124,98,80,93,75,75,81,208,124,196,143,52,240,30,152,49,3,253,50,246,98,17,227,193,163,2,141,124,156,69,161,141,136,140,108,88,53,93,149,205,119,28,113,71,183,200,179,150,52,51,147,102,134,91,65,218,213,205,52,253,102,166,91,54,147,43,56,216,99,7,186,188,77,229,158,72,141,109,182,171,96,63,197,34,198,246,201,212,66,140,193,113,104,119,127,225,179,223,124,158,254,187,246,71,78,53,175,62,192,137,154,60,36,30,245,27,218,221,246,89,239,184,183,36,229,31,227,64,58,113,25,20,139,10,170,122,211,96,53,91,232,7,232,68,234,161,60,99,8,73,52,17,3,44,67,12,242,209,46,224,130,65,31,9,148,133,149,183,31,77,73,80,252,199,234,24,4,248,13,117,108,193,99,115,88,104,131,201,102,56,140,18,12,196,188,213,133,158,21,61,38,208,131,140,198,82,189,122,171,32,207,84,151,211,9,40,115,150,209,251,36,16,203,221,108,167,223,105,227,174,242,126,207,211,102,234,144,137,187,54,57,108,149,136,164,177,12,21,53,199,136,233,213,30,159,216,10,37,170,30,55,245,70,198,205,36,222,53,218,64,59,155,23,96,181,41,149,124,204,233,100,89,116,154,109,137,145,242,89,71,68,24,177,169,246,110,242,36,226,112,98,19,87,178,200,103,192,245,138,144,197,243,202,224,230,17,139,20,4,71,89,221,31,48,20,138,66,175,205,22,78,0,219,116,254,91,193,45,86,76,70,75,50,124,175,136,79,164,62,197,97,44,240,222,54,17,60,20,81,220,22,45,92,126,0,90,248,211,143,126,234,69,245,0,3,212,244,22,144,216,171,15,47,176,83,182,243,217,166,150,31,0,181,213,91,86,116,44,241,9,175,68,10,143,74,32,92,199,85,117,73,19,105,189,9,246,114,232,101,188,99,98,40,118,18,130,226,170,239,108,178,177,123,26,194,102,247,140,24,16,37,31,14,171,19,24,49,151,179,46,209,54,200,95,29,99,58,89,112,121,12,174,74,14,239,78,178,224,161,115,11,17,35,6,153,66,29,77,233,12,129,206,126,165,24,195,114,245,133,85,133,174,54,179,120,204,86,78,39,21,9,226,120,11,104,151,139,142,185,101,206,252,129,186,39,237,12,160,149,176,152,159,71,192,206,40,85,33,115,30,8,59,77,32,77,254,179,211,169,87,134,199,83,170,2,222,99,236,237,136,119,83,158,51,181,217,173,218,34,131,147,204,145,39,101,222,129,136,214,98,10,45,8,216,126,52,130,58,247,233,137,121,223,232,240,170,28,165,157,35,227,157,99,76,86,102,56,199,201,153,66,146,240,71,17,78,209,218,76,221,110,63,137,45,184,108,134,184,181,49,218,96,236,192,6,99,55,217,96,160,85,210,154,106,51,175,68,123,76,230,247,24,182,159,28,207,219,48,226,119,161,114,46,101,5,20,215,93,71,19,115,183,189,90,63,228,132,89,124,64,112,200,133,236,211,173,254,158,44,193,14,84,154,19,107,64,88,197,72,180,164,35,71,83,157,212,29,9,100,231,232,95,206,48,238,53,53,57,215,146,42,149,205,123,17,205,138,152,54,9,118,186,1,93,109,18,193,224,38,17,203,38,17,211,50,118,213,38,193,113,23,195,155,132,19,121,181,185,185,7,16,29,101,119,173,180,76,56,64,180,34,246,173,52,137,99,95,117,84,161,236,111,172,218,73,213,170,95,181,234,87,29,108,89,53,251,93,199,98,134,254,106,160,35,63,231,34,14,130,106,87,243,142,71,40,168,206,199,106,178,197,39,83,85,219,155,252,58,188,153,205,187,98,42,104,15,96,163,138,221,46,111,245,29,35,4,50,63,98,177,11,226,193,3,61,18,98,70,3,196,212,111,164,71,110,224,64,135,0,154,48,212,69,32,147,60,226,26,195,161,26,157,212,168,54,173,241,138,195,23,66,124,210,159,199,3,213,37,114,26,55,79,218,0,105,137,168,99,144,96,116,252,84,117,249,30,58,254,2,108,223,79,107,151,54,5,246,17,224,227,163,54,137,121,100,95,219,85,208,158,184,215,245,249,35,191,56,196,153,151,21,124,1,196,67,224,219,166,162,138,199,191,13,143,121,85,91,31,26,209,143,43,23,251,58,24,137,188,210,60,68,226,200,70,136,68,237,207,189,31,86,254,127,213,143,21,48,19,239,180,49,42,143,161,72,243,174,177,8,205,178,172,59,71,135,152,194,235,255,10,235,253,63,252,0,103,97,115,247,64,128,234,79,60,48,33,158,29,116,62,13,188,17,160,186,135,95,123,96,34,201,110,77,32,146,89,253,146,213,97,223,182,61,24,84,192,174,56,115,213,174,34,138,124,111,153,174,60,222,163,133,60,50,108,101,96,167,6,201,254,123,151,120,153,127,151,125,227,25,48,207,136,170,32,238,249,64,86,255,119,151,255,11,254,239,180,255,123,208,255,189,163,39,46,141,254,127,236,194,54,219,227,194,189,249,26,12,222,213,75,104,98,178,212,226,74,209,56,201,103,185,171,148,78,130,26,233,49,17,58,62,115,170,67,117,143,152,123,221,28,17,123,126,65,224,174,88,38,116,169,24,197,170,104,49,121,185,49,234,217,24,43,113,19,111,225,23,43,177,19,100,96,150,105,5,32,24,74,206,96,54,99,68,212,37,246,92,99,92,95,131,230,95,25,131,245,225,75,159,91,85,44,185,103,249,92,106,240,153,127,180,170,240,86,176,56,93,226,107,244,251,177,207,175,178,218,131,163,85,4,242,179,25,112,98,251,145,129,222,104,252,95,172,113,203,110,56,200,76,44,21,222,24,140,29,65,20,23,147,103,35,88,204,113,228,169,2,119,64,181,243,0,220,140,50,121,72,87,222,204,250,122,49,94,97,29,227,213,101,147,77,194,1,126,33,71,184,67,112,167,142,193,204,40,157,183,24,133,67,221,192,127,44,16,137,196,133,217,226,174,94,163,57,68,58,145,163,237,140,74,232,77,195,164,98,141,221,13,96,247,171,118,174,233,153,201,35,176,7,148,143,37,99,3,52,173,143,208,135,197,85,13,191,75,26,126,71,149,165,252,142,50,251,97,118,153,230,24,240,25,123,176,136,235,14,36,28,163,171,110,56,172,2,137,214,5,233,133,62,162,118,129,129,136,6,208,204,168,49,143,132,79,191,3,193,89,234,148,18,19,196,23,83,37,4,184,242,125,187,128,241,105,110,20,238,41,161,37,207,38,74,8,239,226,95,215,150,224,4,148,201,149,16,203,83,91,66,116,151,64,56,221,169,56,214,239,136,12,67,221,189,248,176,113,117,136,208,111,91,129,25,200,6,160,154,80,52,23,130,16,92,88,18,129,79,78,136,51,26,123,201,79,155,113,252,221,203,156,110,124,0,216,132,13,236,220,28,30,14,122,237,31,93,230,44,248,122,16,222,15,12,50,240,149,1,123,68,85,233,72,121,9,226,255,121,89,18,169,99,148,189,3,127,133,46,2,94,174,24,103,239,0,179,95,117,114,234,166,58,70,191,211,185,84,239,166,198,166,122,55,51,207,251,213,30,241,225,98,95,3,252,93,98,46,135,208,3,43,212,65,124,129,30,234,161,135,122,67,7,46,82,19,198,134,58,160,250,29,80,195,29,120,253,54,43,105,179,122,227,109,214,87,104,179,64,3,76,169,228,31,89,99,196,73,248,101,1,141,232,239,205,182,25,108,233,227,20,167,171,133,56,93,47,68,215,12,18,245,211,197,209,106,224,80,75,139,122,112,153,233,106,153,49,46,251,17,53,42,113,49,35,198,40,94,247,12,176,125,136,58,61,77,213,207,152,125,140,59,217,44,152,125,22,92,73,239,220,44,19,221,148,96,14,168,25,129,37,187,78,252,163,215,84,89,97,63,224,46,182,222,226,93,213,198,40,64,15,51,180,13,201,226,50,251,216,53,106,119,9,218,127,164,240,154,82,246,63,190,72,75,112,242,43,40,193,175,190,21,83,131,42,222,86,178,99,130,16,137,104,245,212,67,171,30,110,198,114,220,188,71,164,58,88,71,119,102,18,191,207,77,157,238,135,119,234,236,254,126,111,205,140,157,62,204,73,63,105,38,220,41,195,246,178,162,113,251,125,163,221,176,46,58,130,248,125,204,94,197,103,32,126,127,26,65,8,17,132,103,238,163,127,187,250,220,25,136,187,250,220,7,22,88,86,243,111,134,16,159,41,194,51,16,190,63,181,73,39,146,148,169,96,231,5,199,71,126,249,172,204,36,240,72,186,130,163,156,235,135,147,37,37,116,242,37,96,203,162,77,28,207,59,57,167,74,27,248,66,151,172,225,135,22,73,64,156,51,150,241,248,241,32,199,223,102,191,170,119,119,108,98,150,241,22,16,95,94,141,183,28,33,174,137,230,204,81,185,193,111,91,255,54,30,20,80,200,181,194,65,176,198,104,25,39,78,165,70,204,8,186,244,174,202,96,240,213,47,87,137,115,192,224,119,171,11,67,77,80,124,239,252,111,215,126,201,142,78,10,193,182,22,54,74,2,93,216,124,240,239,140,14,150,205,44,254,206,250,79,98,198,106,235,236,196,68,161,122,160,79,176,39,27,237,80,18,30,162,57,23,183,43,177,83,202,193,45,236,8,43,20,149,55,183,138,80,150,251,227,173,25,70,194,6,24,201,14,76,140,7,163,225,208,238,208,163,250,202,130,33,106,76,143,145,98,37,200,196,39,152,93,0,43,193,7,62,85,244,64,24,64,63,66,193,244,99,45,54,141,21,240,224,83,74,212,205,158,16,96,74,31,248,197,42,106,205,186,105,197,234,200,194,48,239,120,34,245,122,214,58,6,194,231,191,213,162,39,113,205,156,218,94,61,93,213,234,56,66,129,237,77,9,216,228,75,86,219,229,44,202,3,224,36,28,196,35,133,2,13,251,198,112,0,7,86,129,57,160,85,225,70,198,55,11,196,102,111,229,239,175,219,222,136,185,102,199,120,130,207,127,114,85,97,154,77,118,118,36,248,71,23,105,207,206,38,59,215,36,248,235,159,244,191,199,19,252,52,253,222,150,77,118,182,39,248,36,189,179,43,155,236,108,75,240,163,159,228,56,192,201,206,88,130,127,244,137,85,133,219,179,201,78,150,224,31,124,130,99,6,39,59,163,9,254,30,253,238,100,147,157,145,4,255,41,253,30,205,38,59,105,130,95,164,223,215,100,147,157,78,130,159,163,223,113,54,217,73,18,252,199,85,27,218,9,126,140,238,239,200,38,59,173,4,127,182,42,39,78,112,165,170,43,74,240,143,62,182,170,240,186,108,178,19,38,248,111,63,238,127,7,9,126,235,99,190,46,151,224,191,248,184,239,163,77,240,55,63,238,191,53,9,254,202,199,125,191,116,130,159,248,184,188,207,76,20,26,102,176,89,0,110,245,211,184,152,42,10,83,227,47,61,33,175,67,144,181,171,197,242,136,213,186,118,164,163,153,206,18,208,9,206,118,70,251,36,109,242,107,69,136,234,79,176,157,65,75,74,21,246,246,182,96,78,86,239,237,146,63,85,230,80,118,114,228,36,77,146,99,48,32,158,134,246,35,185,24,247,24,39,1,102,37,254,212,87,86,89,183,111,89,237,237,78,166,1,56,70,149,101,17,191,42,92,113,225,40,105,199,113,133,191,113,190,154,126,13,117,161,10,66,230,91,27,197,58,46,182,160,237,39,101,158,179,20,13,89,85,182,79,105,206,120,58,96,122,204,228,206,185,89,52,185,30,104,9,212,141,223,83,55,158,6,230,91,207,173,42,204,241,153,223,22,136,43,124,254,183,249,250,53,127,45,245,76,65,64,71,37,231,123,116,62,99,158,79,7,75,163,241,160,53,65,109,185,20,80,149,200,3,44,165,236,145,25,136,71,166,42,194,105,179,167,136,61,51,17,18,191,240,101,226,23,190,242,194,170,130,214,4,187,49,182,38,32,28,116,190,228,23,89,106,12,167,205,174,129,187,248,168,240,34,3,15,44,132,224,198,148,202,57,243,81,171,174,234,89,122,215,110,86,250,158,60,102,167,132,35,106,39,4,120,176,196,79,189,176,234,65,73,194,25,51,126,216,198,140,39,183,147,79,82,190,23,19,211,30,206,24,149,183,73,2,63,100,110,163,251,211,38,163,99,56,128,112,191,130,35,234,14,8,160,125,216,238,226,143,99,14,179,223,7,156,232,62,219,155,42,136,125,235,249,194,50,36,10,183,59,229,48,141,125,248,91,210,183,96,218,28,244,76,93,228,153,100,214,61,30,81,52,147,216,218,167,146,127,111,140,89,50,125,149,14,216,47,16,143,209,223,209,192,129,195,235,255,74,17,63,0,113,175,136,241,115,230,36,71,75,6,181,224,254,231,216,106,172,222,147,26,8,126,248,226,115,255,225,35,127,248,252,239,45,127,146,164,37,124,218,112,60,118,243,251,167,141,184,44,197,104,23,241,229,255,180,170,202,155,173,98,148,63,117,143,132,232,125,50,15,68,221,21,126,162,168,106,121,109,249,131,117,141,175,173,127,112,33,149,136,185,43,43,37,54,87,16,9,78,251,235,125,184,81,207,163,68,17,86,43,123,54,213,105,136,241,21,130,95,28,80,98,120,53,195,239,24,29,46,115,184,154,94,148,252,14,94,14,202,105,127,90,215,11,121,71,104,206,78,252,166,204,185,161,251,149,46,76,153,199,208,230,221,170,144,4,215,208,62,158,90,81,16,23,26,90,199,4,129,41,130,88,210,124,197,243,169,1,11,81,21,19,80,131,73,231,134,75,169,162,18,58,18,102,194,185,170,135,75,227,226,240,51,255,210,231,231,139,193,201,5,179,36,188,39,230,28,210,89,114,162,78,113,167,10,124,214,54,110,232,42,39,118,112,203,192,243,206,50,208,196,126,165,193,225,186,90,192,120,241,84,206,219,105,153,176,55,156,238,21,17,170,123,216,107,81,63,192,190,94,129,215,205,86,185,103,158,249,151,126,115,49,168,23,146,127,111,36,34,161,239,12,222,55,3,122,189,23,186,82,114,151,6,189,194,136,111,240,137,9,201,1,210,200,112,101,188,75,109,36,73,167,12,4,101,209,174,114,235,120,101,221,51,127,195,167,137,76,112,157,209,133,116,238,83,134,196,32,28,227,6,117,152,29,74,25,18,244,245,97,157,129,185,99,43,13,33,186,69,72,202,188,178,100,161,59,38,136,26,225,157,218,160,71,162,48,156,27,27,31,255,235,62,167,157,150,19,200,249,144,135,13,105,170,156,168,229,212,166,54,207,77,82,151,176,15,180,2,58,12,189,242,109,52,81,201,127,54,198,45,91,218,169,95,244,168,125,6,111,47,11,215,245,162,203,193,178,96,108,36,37,26,140,233,166,246,204,34,84,218,21,24,148,178,64,14,72,176,184,157,165,32,43,238,50,187,106,145,200,171,57,166,7,52,27,97,165,217,104,104,96,222,45,50,205,61,44,252,11,54,216,160,38,99,182,136,154,154,12,76,5,178,230,246,190,244,21,151,236,159,123,176,242,200,96,29,199,116,17,213,90,14,16,205,205,46,48,51,234,90,214,114,92,91,130,171,5,177,241,146,129,168,106,149,71,116,120,163,254,34,188,178,254,34,242,250,139,23,89,120,122,216,53,115,1,120,152,68,15,68,126,194,39,57,47,4,115,237,168,155,29,132,155,49,149,99,53,198,181,253,45,68,189,88,176,238,6,130,249,137,130,189,131,79,76,20,1,46,63,128,215,159,230,240,228,144,55,143,80,96,102,180,192,204,168,205,96,102,76,5,51,243,163,205,57,86,163,90,250,142,87,72,51,166,143,52,99,54,34,205,176,81,83,38,93,229,181,194,154,207,18,180,39,16,107,23,59,102,25,180,207,207,84,99,176,91,208,117,38,33,65,37,111,228,26,26,169,112,198,171,27,2,71,222,200,53,212,65,39,226,152,222,248,17,167,123,234,12,151,153,34,207,187,230,23,105,245,206,170,20,201,30,13,218,99,225,241,24,177,251,51,207,162,236,61,253,238,250,78,90,14,87,145,168,107,47,209,196,21,222,56,170,100,205,24,35,60,210,138,30,156,8,222,211,90,19,107,100,48,91,16,69,8,176,201,117,198,42,212,160,179,119,178,78,104,198,42,118,121,21,107,168,45,113,93,149,120,16,191,166,192,93,194,209,133,194,96,123,126,2,76,41,106,10,221,203,21,184,238,232,251,192,117,221,249,220,241,30,132,43,188,35,61,168,217,76,128,26,87,126,87,148,57,84,220,138,22,193,48,3,158,206,91,84,119,248,45,175,141,29,134,52,111,81,96,112,69,227,107,47,120,184,246,129,171,85,83,177,153,7,5,187,111,47,59,134,171,238,133,23,212,125,140,241,19,119,116,66,60,13,182,74,18,81,29,186,158,60,94,41,226,238,107,191,98,207,130,90,186,84,132,146,110,236,21,245,161,34,66,189,136,63,245,187,171,170,244,56,243,14,77,15,34,124,124,153,93,44,249,189,161,55,60,112,170,234,174,175,125,237,192,251,32,206,149,240,65,151,10,135,255,86,113,80,20,73,47,150,91,81,210,253,70,125,238,10,37,39,236,15,196,54,171,129,18,220,208,123,178,146,116,243,133,131,37,187,213,18,141,31,187,180,70,2,189,39,1,238,5,219,203,128,153,218,41,149,124,209,104,187,236,167,160,123,131,83,240,118,211,156,130,252,1,170,218,169,184,63,5,21,205,9,203,115,194,150,13,87,111,133,163,199,105,27,57,205,132,226,17,45,11,181,113,78,112,105,50,39,76,53,3,183,168,237,240,91,93,25,237,97,213,4,84,3,19,112,224,234,55,7,201,215,52,46,109,164,219,45,202,211,45,151,76,42,236,147,90,175,166,38,229,204,112,103,252,106,50,133,165,158,24,176,56,122,124,120,61,233,193,245,228,154,235,73,188,27,182,170,241,240,15,164,66,115,197,165,91,209,23,84,242,203,87,67,196,39,27,36,124,171,102,157,190,194,68,96,202,189,69,19,238,117,234,49,87,156,106,13,130,253,154,97,168,39,246,119,19,55,78,14,230,45,56,201,141,194,113,204,152,107,41,196,208,53,33,110,131,18,194,220,169,144,121,76,3,162,38,22,192,72,197,104,149,19,130,200,158,7,96,10,77,165,24,54,241,73,168,136,153,200,29,104,174,193,84,229,138,74,192,107,235,44,135,124,73,131,246,160,89,196,167,63,189,166,196,181,158,29,109,49,195,113,198,84,5,117,116,194,43,58,244,92,106,196,136,33,151,169,194,23,63,179,38,255,136,59,35,21,198,238,140,163,158,45,222,197,225,156,5,43,122,152,187,149,143,119,213,209,132,18,237,75,237,7,85,179,194,187,146,228,243,166,118,115,48,149,90,66,166,218,120,225,112,111,223,100,146,21,129,8,222,130,112,132,15,154,236,26,98,191,60,100,42,207,200,184,204,67,92,225,196,91,140,173,37,96,164,102,191,106,23,138,254,36,39,89,65,35,170,104,146,4,219,39,57,203,184,97,119,116,45,72,164,86,48,21,148,4,29,104,97,179,125,178,235,160,10,147,52,9,182,165,96,154,67,237,19,19,185,84,64,242,144,160,180,112,156,165,68,166,131,4,102,22,150,43,5,205,121,239,129,37,77,155,51,42,16,167,32,239,163,156,2,245,60,96,253,72,101,152,129,136,55,190,62,184,232,69,211,52,186,109,193,179,90,207,179,46,211,121,158,253,4,223,12,64,162,104,149,112,125,50,53,98,225,7,133,209,175,92,67,177,83,22,106,51,94,208,12,240,130,102,152,23,52,195,188,160,217,148,23,52,3,188,160,25,224,5,205,166,188,160,25,224,5,205,16,47,8,170,204,78,87,244,66,149,60,101,180,91,198,235,105,11,232,170,195,38,35,210,172,175,11,28,46,134,156,45,231,47,20,182,119,154,21,231,168,23,123,120,119,233,185,99,73,33,80,173,150,62,172,83,181,4,138,0,53,152,197,130,213,239,206,99,102,59,214,252,179,43,63,11,144,252,50,73,196,30,14,72,213,80,237,187,36,179,196,181,180,69,157,238,225,245,11,12,2,114,253,177,137,197,42,242,14,175,59,141,110,161,196,172,20,179,0,7,112,137,179,128,4,22,246,171,243,225,222,113,225,125,122,189,135,175,79,139,48,224,225,59,154,64,80,53,195,202,234,172,252,128,25,17,235,231,7,230,212,86,147,105,182,49,153,60,194,94,83,154,176,125,105,226,127,155,169,244,211,134,3,63,56,11,160,136,147,149,113,115,52,105,186,176,12,56,93,209,232,30,245,59,169,143,183,214,94,27,148,52,0,199,68,103,100,188,130,188,87,56,108,29,79,29,216,39,187,237,179,69,200,225,178,150,195,14,29,159,109,94,157,228,15,55,58,22,194,75,133,227,0,188,147,180,123,176,19,231,64,89,125,144,36,176,216,190,95,130,163,168,61,62,161,128,152,120,88,70,30,77,106,41,185,223,65,80,104,250,215,201,71,141,36,102,26,220,120,150,189,158,111,218,196,167,42,212,94,1,140,234,148,102,153,79,78,118,99,247,227,175,250,227,175,6,198,95,209,232,190,86,141,156,26,158,13,106,96,54,160,247,68,85,27,223,121,121,211,34,104,240,205,224,23,105,245,78,53,248,222,124,79,191,117,146,141,247,83,177,52,206,162,49,213,183,152,127,158,184,165,33,220,29,45,225,62,18,170,111,156,128,163,176,1,156,214,173,68,10,251,159,9,13,213,13,149,47,228,140,81,67,184,200,102,22,119,123,27,98,95,219,100,112,87,137,223,251,124,35,247,86,86,226,119,62,191,170,26,58,22,252,86,243,250,149,250,2,59,146,48,65,129,237,254,226,202,202,202,69,123,184,118,36,234,163,49,119,250,118,203,113,73,153,117,249,243,98,26,49,130,198,198,27,11,205,27,43,206,99,246,152,184,188,57,113,84,22,169,156,249,140,49,39,103,41,227,79,238,73,4,187,76,37,201,55,244,134,137,84,205,27,63,107,180,159,53,63,136,93,195,94,245,174,97,94,103,215,240,219,138,159,56,123,171,249,177,174,107,76,43,47,208,241,86,90,249,8,211,1,113,124,66,50,104,42,129,244,242,122,228,62,146,174,133,232,168,232,139,32,216,144,49,185,86,59,234,42,21,6,173,243,74,33,36,155,179,192,7,215,145,189,97,153,183,68,57,29,247,33,212,90,251,149,98,115,61,235,90,169,166,97,5,103,237,119,88,215,68,114,72,75,34,235,132,125,229,105,148,213,208,14,150,6,250,247,7,199,121,224,80,248,223,101,144,255,111,93,233,142,54,194,171,219,55,6,82,238,154,32,229,122,83,111,25,93,123,203,136,125,130,232,162,145,125,50,12,238,171,93,78,134,113,197,95,7,80,92,15,2,138,179,199,137,120,157,85,83,200,201,158,68,147,86,56,70,58,31,106,247,175,63,212,149,203,80,54,32,47,154,1,159,216,121,215,116,77,46,56,228,196,112,200,201,81,14,57,57,122,42,213,73,151,1,28,56,240,32,234,184,164,171,242,176,171,192,158,41,162,174,250,81,55,219,53,57,167,204,176,95,248,98,119,165,250,223,242,71,196,41,220,137,215,42,170,108,70,84,164,28,38,233,124,74,58,9,4,25,124,111,218,191,167,54,190,103,18,112,51,54,102,115,30,68,135,45,35,172,137,24,32,3,254,159,181,113,181,166,139,166,181,22,4,66,234,234,156,239,42,31,180,211,101,17,120,121,162,171,197,143,208,176,58,126,31,143,25,94,124,156,152,196,44,151,77,93,96,31,109,157,167,3,138,240,176,205,100,73,202,70,11,225,97,65,163,20,160,140,190,15,166,198,142,143,175,116,51,236,63,171,105,62,184,198,161,193,61,224,157,93,207,185,89,182,104,84,8,226,154,43,240,37,41,124,238,147,107,170,239,1,83,101,26,251,215,90,156,119,155,195,44,251,148,147,36,25,6,255,254,63,255,251,255,92,29,231,249,216,185,191,176,226,242,106,221,242,0,116,71,0,6,255,1,189,56,143,102,49,41,56,198,129,222,151,192,38,118,152,246,254,247,222,118,40,89,78,22,216,4,86,176,243,127,163,223,49,199,24,31,102,195,121,167,204,3,38,68,174,189,2,206,243,56,198,231,242,151,78,133,125,127,231,209,202,187,245,95,209,46,229,205,177,2,159,165,93,19,27,150,227,153,45,131,164,219,126,34,108,106,121,170,37,177,47,81,172,19,247,79,110,208,216,154,79,57,65,190,245,200,133,96,178,235,56,9,204,92,106,7,222,59,201,9,92,178,49,241,101,19,218,115,48,190,160,4,243,151,7,152,107,72,10,43,28,248,192,59,232,87,170,30,184,155,160,78,232,207,170,22,190,190,50,91,8,188,128,5,51,207,102,11,241,188,22,155,5,7,94,205,79,176,191,102,124,98,66,50,98,95,127,90,194,157,248,12,50,3,54,11,189,153,205,130,125,69,54,64,227,179,15,116,44,8,139,162,224,240,254,191,28,222,206,118,139,60,232,51,164,32,128,82,108,185,72,126,163,223,3,91,89,32,197,127,73,31,31,48,189,112,55,120,195,4,55,63,193,210,57,117,195,249,110,104,223,13,43,221,176,210,13,219,52,189,88,223,13,14,22,17,247,232,31,229,129,207,25,117,204,155,94,116,109,122,113,254,164,213,125,211,139,110,152,94,172,116,224,57,127,8,206,150,69,56,165,232,120,61,108,99,179,44,74,221,253,138,5,139,160,218,212,178,251,24,82,110,143,223,209,67,201,67,16,226,202,207,9,138,66,136,187,105,255,8,33,196,105,206,184,19,50,2,12,237,237,33,30,44,25,201,48,187,9,194,105,115,27,253,115,176,176,244,231,142,44,201,25,70,45,219,147,120,40,201,172,195,248,30,95,200,98,137,13,181,224,178,73,208,89,91,252,167,107,31,18,73,226,33,219,253,175,135,162,29,244,217,121,158,250,244,154,252,227,13,95,37,231,231,96,188,42,117,79,170,240,123,50,203,57,164,153,47,88,138,192,239,210,175,239,126,166,25,127,207,142,50,227,16,224,133,39,214,152,69,8,60,108,68,76,194,207,17,181,75,124,128,50,124,194,215,102,164,6,186,244,6,45,185,192,207,200,11,28,236,165,4,147,170,78,95,195,158,34,12,78,231,77,172,130,93,33,194,50,237,208,153,104,240,232,100,52,248,232,243,171,62,171,148,146,227,172,211,95,126,123,64,17,243,51,5,226,90,205,233,69,105,192,126,152,4,38,58,113,21,62,241,252,42,39,11,164,55,104,207,167,141,228,229,203,171,116,121,7,123,221,107,47,20,168,194,136,64,32,40,149,45,213,93,251,111,255,253,213,231,127,246,87,255,9,254,72,170,42,149,132,194,246,213,214,71,253,104,86,153,138,228,33,0,128,183,121,143,35,69,7,81,29,40,221,41,5,12,64,251,41,165,136,153,156,146,201,0,124,64,114,149,86,170,252,222,87,154,85,22,122,99,165,133,201,114,246,143,156,46,251,168,138,82,153,154,177,25,157,137,26,207,255,218,170,194,191,253,107,171,42,59,205,251,87,102,11,155,137,85,143,227,248,88,159,26,113,225,16,113,205,180,63,220,1,38,123,64,44,128,119,20,129,96,40,206,22,81,153,157,6,205,165,225,163,85,145,179,189,66,176,246,234,154,225,176,149,239,233,107,30,132,44,224,192,142,128,164,20,139,15,51,91,106,51,102,124,216,80,76,114,153,79,92,69,29,195,239,94,94,237,231,173,170,166,37,234,94,0,134,246,93,153,238,2,161,148,234,132,78,153,207,235,58,171,49,99,59,202,137,196,204,51,201,208,188,82,152,215,183,56,238,87,191,21,52,21,139,143,60,42,139,193,226,245,2,252,40,102,253,76,162,63,128,15,165,108,155,108,97,251,74,122,73,73,49,70,138,49,82,204,75,63,91,21,3,53,126,36,12,151,54,237,75,171,241,0,127,75,215,38,114,209,211,58,86,15,137,110,215,226,211,63,191,166,48,168,36,228,34,164,209,10,24,242,82,246,183,202,59,221,226,63,19,239,115,126,200,102,70,8,179,63,53,87,1,243,255,19,239,80,37,126,95,117,210,159,42,243,162,8,2,194,189,242,121,206,110,96,217,159,98,134,227,183,42,87,45,166,192,195,151,214,170,122,114,87,107,81,93,242,20,187,30,210,217,190,60,120,174,55,195,109,232,36,54,245,153,110,147,250,192,231,124,99,3,175,105,127,186,107,228,211,61,225,112,172,225,131,24,106,112,1,14,86,27,124,210,116,50,110,30,222,254,81,242,82,255,236,83,77,238,186,218,117,57,70,42,90,112,179,217,231,244,92,170,251,19,241,137,10,253,46,117,67,239,166,154,247,72,212,117,182,152,13,216,61,15,127,114,109,51,236,158,79,125,114,77,176,123,178,207,53,202,224,106,7,171,152,75,85,246,57,157,42,252,212,167,253,158,47,13,243,16,32,124,42,146,116,248,203,90,142,19,145,155,54,203,77,249,240,131,171,87,151,155,18,180,24,229,57,11,221,59,43,252,32,49,152,176,234,52,206,76,238,252,73,40,167,91,157,181,86,100,154,209,70,130,186,59,74,124,252,193,198,58,255,37,173,221,50,35,31,228,113,166,242,40,139,88,213,31,96,231,24,67,19,4,85,188,223,229,44,206,4,25,56,15,56,150,54,194,111,127,114,85,97,144,77,66,72,71,108,30,212,223,238,170,190,117,34,31,109,242,237,31,210,183,109,249,86,68,152,108,18,162,172,45,27,98,213,129,228,159,89,159,14,88,52,13,33,171,187,61,72,36,3,196,21,130,11,12,236,43,33,211,170,10,243,8,25,193,160,176,158,165,34,182,48,16,126,202,50,160,216,70,182,144,118,129,64,16,212,100,24,180,68,55,52,248,41,227,249,41,78,7,19,128,17,14,27,156,171,50,160,240,10,12,152,179,54,21,240,117,17,203,142,96,100,5,186,132,5,35,6,138,179,217,117,29,147,12,8,20,117,53,18,129,39,201,0,116,82,212,45,107,220,71,31,96,228,6,238,122,78,217,3,77,241,84,153,107,176,217,53,147,231,250,76,158,107,48,121,102,200,191,198,35,132,8,44,94,132,70,60,6,148,4,6,234,236,87,245,110,240,80,253,166,172,152,225,240,168,108,92,13,104,181,74,114,73,62,230,23,73,54,16,146,19,23,182,246,195,19,141,73,237,168,233,6,149,55,70,188,228,204,86,1,188,110,131,151,28,106,111,155,244,222,110,2,165,171,125,174,197,42,123,191,170,244,31,127,171,175,227,9,167,252,6,203,136,161,162,186,54,196,130,133,138,131,31,133,25,141,11,125,92,188,126,217,43,144,19,57,130,201,246,160,227,9,239,243,161,162,99,184,254,236,186,34,152,75,25,136,128,189,153,253,103,125,254,212,8,127,234,5,186,95,97,129,238,231,116,5,214,4,13,9,221,14,74,232,90,130,129,92,67,66,207,234,224,156,61,96,112,143,151,208,181,72,232,36,122,214,64,182,70,20,55,129,132,90,198,21,74,51,4,135,101,247,238,75,209,254,252,98,73,224,111,250,237,188,98,1,186,234,176,221,197,190,120,133,184,128,101,35,192,65,25,123,10,129,116,22,19,13,223,218,37,7,247,148,48,13,150,25,52,42,130,211,222,91,73,167,111,241,60,111,216,187,42,190,128,221,212,179,156,211,8,202,89,23,11,131,195,7,251,249,129,169,37,93,20,140,224,218,195,211,86,22,194,130,13,71,131,209,238,27,167,150,18,229,130,146,201,85,43,181,133,12,114,140,84,50,253,33,83,205,32,80,201,217,90,66,10,166,148,132,4,116,196,94,21,11,231,63,46,34,66,6,1,78,121,174,38,192,187,74,153,189,129,244,62,192,199,94,144,92,234,1,177,173,183,177,99,247,65,102,150,3,246,193,39,166,81,156,189,137,203,21,143,110,62,208,254,218,149,233,192,52,248,193,116,252,47,105,225,69,128,49,117,172,0,189,179,5,81,123,164,93,135,186,20,163,78,251,104,17,136,205,95,204,64,146,234,186,214,117,136,199,156,193,231,207,173,213,17,77,253,37,146,252,229,33,238,83,130,119,171,224,139,62,171,88,137,3,53,211,248,196,63,93,245,76,163,222,192,123,114,160,227,116,147,11,5,195,20,29,174,77,170,241,149,94,169,182,239,62,191,117,109,190,42,174,244,138,181,189,225,190,61,251,86,244,237,13,215,246,221,55,83,219,66,45,114,115,128,173,15,173,5,157,221,37,113,113,130,241,204,123,219,56,29,95,196,203,141,131,169,89,55,35,92,157,193,87,88,90,139,145,85,27,2,154,155,83,17,204,17,232,236,174,234,40,75,238,31,216,207,151,217,207,92,44,18,1,62,168,113,69,243,116,156,144,8,252,184,100,86,37,235,241,206,158,115,152,69,135,97,181,37,29,98,173,86,72,42,181,142,223,185,125,202,133,37,171,151,245,89,189,84,187,224,54,225,244,84,63,102,88,221,108,169,116,198,193,231,141,246,157,54,246,110,151,177,0,212,202,125,119,216,198,222,63,82,238,155,254,253,196,195,190,189,215,59,126,38,255,63,233,41,12,165,72,223,53,16,73,207,218,250,70,36,189,241,145,244,177,152,219,157,68,234,114,64,189,16,181,162,227,91,88,250,243,47,254,32,75,127,246,35,107,63,192,210,249,12,29,44,253,199,54,236,183,25,73,146,143,125,140,35,159,117,246,87,37,131,65,220,200,240,76,91,46,167,85,104,10,231,117,146,191,134,186,154,7,150,150,104,211,140,218,183,123,130,241,59,179,29,76,156,185,153,249,147,216,156,24,12,62,254,11,107,91,154,63,73,142,121,223,0,177,234,190,191,97,98,109,49,194,111,69,177,155,12,237,95,238,219,172,101,145,177,213,118,196,40,109,235,60,240,196,142,51,40,150,4,219,236,87,222,200,91,33,4,54,212,86,156,50,126,204,41,175,32,87,196,201,37,181,181,55,249,147,218,44,147,168,195,162,130,99,160,253,50,143,104,47,177,94,234,97,158,213,235,249,77,45,249,112,130,129,194,65,36,94,46,149,208,19,246,163,12,223,223,8,50,148,115,211,7,43,12,194,103,24,111,174,172,22,255,103,57,225,199,144,85,64,228,112,111,14,184,135,153,216,191,132,250,152,96,154,128,238,129,154,63,149,42,80,13,13,0,155,47,91,18,115,161,68,65,175,178,177,132,185,107,78,237,161,146,31,97,74,123,96,71,239,234,119,92,92,106,148,168,163,231,196,48,206,28,183,246,86,63,48,217,117,12,71,151,12,182,47,161,34,79,52,237,169,82,118,135,157,171,101,145,48,231,210,96,51,64,249,105,65,165,254,153,156,147,135,213,10,17,157,204,55,119,122,191,153,203,78,222,201,181,176,234,111,112,27,63,163,25,51,158,253,158,135,124,242,251,246,111,54,101,113,192,73,118,66,162,222,248,37,145,171,216,93,111,46,213,181,157,173,163,189,132,53,236,203,175,193,122,71,126,195,209,159,113,50,235,39,25,203,211,240,122,242,244,38,115,233,30,218,47,84,174,179,136,189,176,52,154,163,2,127,35,17,239,117,41,194,122,113,41,6,63,255,15,56,115,232,36,184,126,65,199,180,94,174,18,49,246,233,96,125,108,130,5,83,197,38,120,71,60,118,153,226,89,217,232,15,170,100,118,200,110,206,132,211,168,137,112,226,242,165,250,100,83,66,54,211,180,106,221,83,111,30,146,72,166,227,149,60,22,61,159,82,233,215,153,113,217,35,108,12,203,13,30,253,196,122,254,227,93,188,204,36,219,126,157,113,130,228,246,134,17,139,118,76,106,130,31,175,166,104,150,188,147,161,114,57,115,192,179,234,88,149,206,171,202,22,145,234,221,9,216,84,35,35,94,242,65,93,37,249,74,230,180,105,24,15,181,184,59,136,113,21,227,1,75,102,45,187,18,203,254,245,1,3,102,242,149,31,183,249,242,196,89,189,196,62,204,168,57,187,240,205,86,229,119,215,178,52,39,60,208,236,14,33,249,97,198,38,21,190,60,34,171,226,238,47,230,55,154,89,184,27,238,254,32,7,238,50,4,195,141,221,117,249,95,244,80,177,183,50,221,196,15,195,141,93,125,174,251,125,121,52,250,16,220,216,189,237,252,37,92,31,93,40,244,68,49,221,213,15,161,205,93,31,36,5,13,58,184,177,250,252,187,235,234,161,98,242,222,66,77,192,100,227,222,123,39,56,1,189,154,128,189,247,78,160,169,220,138,208,73,164,177,198,207,198,189,142,78,170,47,0,166,187,250,28,76,215,141,122,111,161,38,242,105,252,202,95,197,231,255,42,149,162,203,36,111,221,155,187,100,208,111,105,227,255,209,114,188,5,195,103,113,100,213,201,137,130,54,192,135,190,178,170,240,97,250,135,166,16,4,19,112,99,87,253,232,68,190,3,117,238,80,195,141,221,119,157,191,4,193,68,190,167,58,99,168,213,156,134,12,23,49,128,214,90,209,65,117,207,4,116,238,47,20,254,198,31,171,227,105,8,211,247,166,236,24,115,186,200,240,154,50,31,197,149,149,179,168,96,172,7,99,184,178,98,78,78,172,229,41,94,92,134,22,66,15,90,190,123,217,125,68,87,90,37,160,96,186,11,231,96,26,244,68,81,81,111,85,249,231,49,61,159,236,102,231,96,178,249,124,101,69,251,23,156,188,16,111,120,161,170,193,200,11,110,195,11,84,7,15,152,161,71,106,162,152,234,170,63,89,232,94,161,122,107,248,162,186,31,159,186,20,148,248,66,246,33,116,139,69,128,47,126,113,85,149,51,86,21,147,93,153,34,197,12,76,129,126,242,92,113,99,23,206,23,83,103,139,189,93,56,15,83,48,73,151,147,103,151,96,210,207,181,209,135,232,41,221,94,130,189,254,14,76,193,204,89,190,83,21,183,196,13,139,151,56,33,243,100,87,35,3,51,226,215,169,218,3,90,149,189,162,141,239,90,120,178,184,137,42,212,103,138,189,15,21,51,247,114,142,48,117,200,156,143,59,237,4,2,252,87,254,237,60,240,214,240,73,184,233,252,165,66,227,133,23,124,174,188,213,135,127,136,193,64,112,229,75,95,59,48,159,26,140,145,246,198,149,71,255,195,75,118,158,230,91,196,79,228,6,168,9,153,168,175,208,215,28,69,174,241,213,200,191,247,138,194,87,35,121,5,219,140,100,219,58,94,68,19,36,1,59,182,42,92,252,155,161,127,245,194,11,138,174,128,69,15,12,49,162,42,159,252,125,231,31,175,62,252,67,124,9,106,130,115,28,8,220,226,90,177,29,210,119,167,17,180,57,170,7,182,67,218,43,212,26,140,130,130,209,249,137,98,27,106,6,57,180,179,114,254,241,249,226,62,84,40,9,219,1,118,36,185,191,39,242,246,209,52,172,34,88,77,5,146,223,158,167,127,62,148,59,70,111,127,234,185,85,133,215,226,115,95,238,199,208,150,185,195,251,33,235,229,26,117,143,168,159,79,117,117,126,131,157,133,27,96,234,252,189,115,13,242,243,225,228,74,212,71,83,49,235,22,10,92,9,51,221,246,217,130,7,193,55,234,134,110,251,108,126,3,76,194,222,135,242,25,216,230,161,22,5,147,21,207,243,89,49,10,219,168,175,48,3,55,194,13,217,219,59,113,66,123,23,132,104,238,212,151,83,24,227,90,159,75,75,24,19,253,153,186,83,63,155,138,185,121,149,254,10,26,194,51,244,243,114,90,118,70,37,57,96,72,167,7,63,255,200,224,243,17,78,150,229,159,157,235,63,147,218,228,157,180,249,206,223,24,122,135,55,15,218,80,242,29,254,245,78,130,159,124,102,85,225,30,188,80,81,83,58,199,227,84,245,79,63,9,55,157,131,153,37,112,252,227,198,236,237,226,232,51,138,95,255,178,120,203,227,35,180,87,221,128,79,127,101,147,82,80,113,41,147,221,246,74,191,4,86,50,158,143,11,199,233,44,96,250,110,243,88,76,93,71,211,223,120,212,196,33,115,185,197,73,123,166,187,112,254,18,208,141,199,233,181,139,113,137,10,31,19,85,111,136,171,173,18,221,41,84,248,120,117,135,72,216,146,191,47,183,161,245,228,111,210,150,125,230,175,157,233,126,233,23,215,94,117,103,187,43,31,255,157,139,79,27,90,195,151,10,181,150,199,102,22,58,62,47,1,62,22,151,208,226,153,156,237,220,45,18,56,85,160,160,213,91,203,118,238,78,204,44,196,18,227,207,239,162,130,184,183,150,77,212,111,250,152,242,108,130,58,22,78,155,151,219,69,112,200,124,125,68,104,238,75,227,244,156,187,5,27,18,167,137,117,9,228,216,11,241,169,180,204,35,24,205,91,116,139,67,45,152,231,119,104,22,243,182,89,166,153,88,167,170,87,115,156,156,254,6,95,118,187,244,14,198,12,3,187,0,10,191,47,185,234,141,100,105,113,244,174,36,53,97,109,227,237,134,38,58,156,123,184,152,234,242,70,178,82,76,222,205,250,109,78,10,59,217,93,249,214,163,159,92,58,11,83,75,155,188,212,120,154,223,64,140,103,79,224,76,196,245,121,142,225,247,226,50,65,215,27,168,202,151,113,183,81,9,180,176,213,43,90,216,58,145,50,130,197,215,71,124,194,237,164,145,247,244,131,42,169,188,134,160,133,102,17,191,243,107,171,170,244,217,174,253,87,26,103,78,166,25,114,108,141,219,205,74,237,60,2,245,100,190,151,147,8,214,212,98,244,186,105,79,172,168,164,29,240,210,55,87,21,78,72,85,63,169,182,32,94,8,81,201,227,66,4,156,30,34,224,180,208,6,246,14,18,111,138,246,142,179,103,134,30,250,187,249,244,27,34,24,23,13,123,133,88,220,213,68,204,236,151,91,172,44,214,243,19,133,198,233,227,105,82,177,143,117,156,77,203,227,8,8,202,2,39,84,198,179,11,156,3,235,49,73,221,65,68,144,224,39,81,186,119,216,46,83,22,187,160,133,122,161,44,50,113,16,114,101,17,49,130,68,209,174,146,180,149,69,11,50,216,53,15,29,216,117,252,20,163,244,42,136,160,53,15,45,104,207,159,202,91,220,145,62,96,227,54,24,65,83,22,35,199,164,155,9,93,46,22,109,105,66,93,188,243,107,175,45,85,180,161,85,151,76,7,0,180,143,159,18,171,149,228,192,225,60,198,177,31,75,206,58,236,129,74,37,4,0,66,226,77,191,62,2,26,2,1,145,149,89,146,200,236,112,146,218,215,205,226,114,149,226,135,23,166,228,174,6,231,219,198,130,248,49,78,25,55,193,17,6,140,226,176,140,10,220,68,46,49,8,39,220,172,207,45,194,81,142,84,71,7,188,50,79,194,16,27,51,80,64,109,209,242,138,68,59,95,109,34,178,50,197,207,233,123,50,235,116,243,137,140,210,237,70,117,219,103,225,134,37,63,209,252,216,248,219,147,194,145,220,237,101,253,173,158,116,182,120,66,63,121,29,103,236,104,73,52,209,94,229,29,30,208,23,226,60,166,137,247,72,156,183,216,239,151,35,43,54,111,83,238,170,194,26,129,16,55,92,18,156,94,69,195,22,248,161,86,156,251,216,59,201,232,50,167,89,78,66,210,229,22,77,97,137,85,75,33,94,43,244,187,137,202,144,246,136,171,208,144,246,152,177,104,165,50,213,37,127,94,112,200,156,239,64,136,175,182,105,105,242,104,22,218,111,180,156,107,99,103,126,93,181,35,31,50,79,209,177,120,161,195,120,95,253,151,76,182,51,127,91,255,165,106,211,110,190,20,226,51,173,50,191,30,66,124,165,93,230,180,97,63,210,41,115,128,16,159,78,203,60,39,46,62,219,153,23,178,74,115,37,69,137,210,246,124,39,223,73,127,159,74,243,107,101,57,231,19,168,242,182,36,101,202,179,134,107,175,146,156,215,109,162,74,155,233,196,26,157,90,178,17,80,104,6,2,103,74,186,210,147,94,92,110,73,206,155,160,255,170,105,63,190,201,180,135,188,148,117,95,47,128,199,98,191,0,142,65,4,157,77,167,60,199,82,153,147,169,221,205,129,140,168,243,17,154,232,27,119,154,93,126,135,49,213,60,238,239,52,219,121,167,193,229,7,202,226,26,24,225,205,102,219,240,102,211,169,54,27,126,109,4,182,193,53,243,176,29,174,105,236,55,35,180,1,141,28,63,149,143,12,237,55,187,24,163,80,176,209,69,201,67,251,77,213,193,66,148,173,188,202,139,186,6,7,35,101,33,254,189,16,205,19,71,58,127,42,53,157,177,4,90,144,205,167,14,90,48,74,19,183,5,217,49,231,25,217,140,209,245,32,99,188,60,209,212,231,174,211,73,96,100,46,29,245,59,208,229,22,232,92,97,156,228,227,160,224,90,250,239,248,68,17,209,152,88,78,89,62,52,38,176,213,152,240,54,180,249,152,8,78,6,235,63,24,242,201,204,114,26,248,106,108,216,72,206,163,19,209,232,68,213,232,92,232,92,253,232,120,87,249,43,141,142,135,139,126,131,163,163,183,24,29,13,14,222,182,201,232,208,192,16,7,207,135,65,214,39,117,196,164,30,71,119,42,31,79,32,130,157,244,95,53,251,179,205,102,127,178,21,165,213,49,80,175,75,105,73,212,204,199,238,0,165,55,93,7,175,182,255,23,88,7,91,81,154,214,193,117,87,94,7,3,148,214,158,210,166,36,74,247,143,87,62,250,198,100,175,26,164,244,245,111,98,159,233,83,90,64,28,13,235,224,42,74,123,164,71,214,204,9,175,230,41,189,218,250,159,68,105,65,202,175,41,173,7,40,237,87,77,228,5,4,55,72,109,93,83,91,111,164,182,242,212,214,76,237,209,129,221,7,198,189,176,90,179,27,209,85,177,27,225,255,130,236,70,64,157,28,197,11,95,20,201,146,72,145,65,11,87,190,232,209,187,90,48,42,23,31,228,4,119,125,33,225,127,144,37,49,175,203,146,16,115,203,40,99,154,55,217,142,168,247,32,144,147,58,240,230,91,129,38,236,15,129,107,12,129,171,134,128,102,233,230,28,95,253,164,223,149,96,104,8,218,208,246,183,135,135,96,139,39,157,45,158,92,129,227,11,182,36,108,112,21,132,13,136,176,158,177,134,160,79,88,49,20,120,158,237,229,118,197,242,176,59,185,223,73,230,121,101,191,30,163,174,97,195,190,173,183,216,77,120,63,89,215,11,35,70,233,32,161,243,209,49,48,110,161,96,244,36,143,62,13,126,41,190,244,115,169,75,228,192,151,7,133,129,86,41,89,204,153,18,140,201,235,243,182,74,191,73,88,81,125,76,94,37,190,198,130,201,219,2,199,152,188,173,147,41,99,43,19,215,224,42,76,94,39,152,188,45,198,228,13,241,150,35,42,22,200,222,163,114,163,213,68,240,197,131,9,203,26,107,69,12,233,187,169,133,39,79,165,108,173,23,128,224,142,77,58,28,144,51,138,23,253,2,226,5,243,84,181,96,26,125,202,93,194,188,53,43,50,168,79,16,195,152,240,108,217,45,236,74,150,59,246,4,35,121,242,127,68,175,165,175,172,215,74,136,71,198,199,59,165,15,131,160,197,246,88,7,66,216,115,200,60,74,127,119,28,50,23,58,156,193,231,66,167,204,10,8,241,229,145,114,138,69,43,234,219,170,239,27,78,87,115,246,207,169,4,95,251,198,170,194,221,181,88,63,154,176,249,193,209,209,49,169,240,229,182,24,125,134,13,15,59,135,13,15,83,111,196,240,16,77,20,55,119,245,67,249,94,180,249,206,55,105,120,152,234,27,30,108,130,46,223,201,232,142,248,217,184,151,107,216,123,111,190,179,171,243,219,7,108,16,55,119,245,57,184,121,208,6,113,115,215,116,53,168,137,252,246,190,49,34,42,125,9,201,128,237,97,121,131,37,98,231,213,88,34,246,160,206,227,166,37,98,164,182,66,88,101,18,184,249,94,49,106,222,220,213,103,138,153,195,246,2,39,139,188,83,63,22,131,6,141,208,3,13,55,195,237,75,197,225,74,219,23,212,102,134,195,93,56,7,135,33,24,52,51,4,195,102,134,96,200,204,16,12,155,25,130,33,51,67,48,108,102,8,174,104,102,184,169,171,254,100,17,244,138,168,183,86,248,164,165,166,187,12,234,201,98,242,124,49,5,51,15,29,182,175,134,48,5,51,31,144,104,90,238,156,129,155,125,103,167,224,230,234,141,155,63,224,102,241,226,50,68,155,24,44,84,223,96,49,85,89,33,14,194,205,48,217,125,215,67,197,141,231,216,28,81,188,83,140,22,197,126,152,162,63,239,128,119,158,93,130,119,212,38,137,202,108,81,220,58,96,184,56,184,165,225,34,63,210,213,72,12,141,106,216,45,216,106,177,239,92,113,160,171,207,228,183,192,65,152,129,170,254,189,103,235,198,193,193,126,181,147,190,2,120,199,217,98,179,90,110,128,189,240,142,179,249,180,28,17,51,220,248,252,70,80,125,243,71,228,205,31,239,128,155,32,120,210,215,118,231,217,226,38,56,8,119,250,78,223,181,105,87,127,232,13,118,181,56,184,212,213,75,197,33,216,119,254,82,17,84,246,149,160,178,175,4,3,246,149,160,97,95,73,54,218,87,130,134,125,37,168,236,43,201,6,251,74,128,173,227,69,82,219,87,130,218,190,146,108,98,95,9,250,246,149,100,208,190,98,225,200,82,126,7,220,2,135,30,202,167,32,129,136,83,91,93,11,135,224,70,152,94,130,153,37,58,136,167,207,80,239,222,14,183,60,148,207,160,228,195,49,56,90,2,51,100,1,88,177,178,20,41,157,17,111,231,3,214,222,223,43,130,39,97,223,185,226,54,152,90,42,38,223,151,198,156,32,183,82,99,169,174,206,39,249,156,155,204,111,132,153,124,47,40,28,19,115,204,40,157,144,48,213,109,159,45,166,136,158,84,178,245,240,89,101,78,203,170,125,54,159,132,189,244,194,12,76,193,45,15,21,83,239,167,227,112,6,166,206,20,211,112,224,3,121,12,147,112,8,238,56,67,67,60,185,148,223,10,211,112,224,190,52,129,155,96,242,76,241,118,152,122,127,202,46,25,37,142,148,121,192,37,193,20,28,88,58,147,223,0,7,224,237,103,242,105,120,59,76,157,201,111,234,170,124,191,157,229,103,197,36,188,253,62,184,9,246,47,193,20,76,47,125,224,148,152,209,227,78,154,48,36,167,238,73,35,111,128,253,75,197,222,170,17,111,255,64,154,194,126,56,112,38,223,15,147,249,20,208,3,98,126,58,9,142,225,24,190,244,156,63,62,69,181,7,22,219,243,244,207,135,114,219,52,66,93,124,78,206,151,78,135,14,94,14,135,194,235,240,171,191,230,177,164,43,227,202,115,181,169,202,178,97,194,84,182,25,250,73,167,106,139,183,83,182,205,236,1,131,151,91,101,39,106,190,126,110,232,117,255,78,152,136,239,33,191,243,145,205,223,9,124,31,20,219,45,198,136,177,122,59,17,251,70,176,60,11,246,125,32,183,60,36,197,222,174,94,202,111,129,27,97,223,125,176,151,246,237,27,96,242,253,167,82,13,83,176,143,168,188,127,9,110,93,130,35,180,28,223,9,119,158,57,187,4,119,157,129,31,58,3,7,137,134,119,193,15,45,193,193,37,184,105,41,159,233,42,184,3,166,224,182,165,37,26,41,3,211,48,41,23,55,210,172,130,219,104,24,110,184,15,102,224,166,37,216,15,183,201,144,241,7,249,36,251,24,49,2,112,74,35,199,19,151,234,207,167,224,70,152,89,202,167,225,6,216,251,62,71,229,236,91,202,39,97,31,236,95,202,247,195,12,236,59,147,207,192,52,236,251,64,170,147,132,127,228,214,151,41,70,145,49,124,254,185,42,83,193,28,76,194,45,82,45,149,83,76,193,45,247,193,45,48,121,134,102,237,153,15,156,74,109,66,39,193,125,52,81,186,238,204,251,78,165,134,26,53,149,79,38,16,211,199,183,86,31,31,160,143,111,189,15,110,149,143,111,165,143,153,137,24,63,11,147,239,75,21,91,151,223,127,22,102,150,222,47,169,103,110,190,155,195,107,52,26,127,122,123,75,215,42,173,48,5,55,215,150,174,41,137,207,169,237,92,60,210,207,105,249,251,170,1,131,207,233,178,136,6,44,95,252,236,130,3,3,183,223,109,94,163,119,94,51,101,17,12,189,243,152,43,55,126,245,152,147,191,151,3,208,79,254,38,28,190,146,189,236,90,51,11,122,205,159,137,146,21,137,133,29,157,237,220,13,17,240,159,128,255,136,203,20,85,168,64,215,246,179,107,197,126,70,159,162,130,107,233,128,205,38,164,67,32,191,94,51,252,171,254,188,97,84,227,228,6,171,154,196,230,175,183,101,146,75,73,125,155,154,143,96,54,211,230,130,43,182,131,134,237,199,39,138,0,167,79,112,206,232,90,84,99,237,113,138,62,185,32,137,37,156,149,23,245,2,4,120,118,33,31,149,134,228,177,212,194,193,243,28,40,160,138,140,19,208,149,197,54,72,56,227,31,195,98,54,84,42,113,101,41,233,64,27,182,205,67,6,219,142,159,170,85,88,157,121,136,160,115,252,84,158,84,105,192,99,250,19,195,40,164,104,202,34,173,245,8,41,154,69,78,166,114,185,213,212,216,8,129,172,84,97,169,13,21,238,212,60,88,136,230,189,165,68,202,96,49,204,111,7,34,134,225,128,24,198,49,60,68,202,105,115,57,224,99,35,96,123,135,197,153,147,105,139,35,69,114,43,217,72,88,12,179,36,134,85,109,170,80,86,120,148,250,98,88,48,63,81,196,77,49,204,78,228,113,2,49,236,124,15,107,199,196,18,83,89,172,4,194,167,150,153,3,177,193,217,133,60,134,64,100,102,26,224,220,118,85,62,37,38,21,47,50,7,141,7,50,56,94,248,159,242,50,170,237,27,234,134,20,16,86,108,255,155,62,233,108,241,132,249,152,41,118,109,206,137,5,112,146,183,140,72,125,45,31,206,36,128,181,19,136,221,236,150,173,201,109,85,76,76,27,92,204,18,243,212,165,10,193,111,239,241,52,172,214,20,9,204,170,105,211,98,212,191,85,158,216,175,26,81,109,70,131,150,191,173,232,40,201,83,133,146,207,233,138,148,122,136,148,245,147,255,121,180,124,43,136,71,219,200,86,212,123,213,152,89,216,46,10,134,237,115,21,150,214,5,118,244,218,222,160,157,110,204,65,93,81,142,54,3,161,156,25,162,92,253,228,127,226,44,212,212,131,134,222,230,170,9,105,152,148,110,25,182,139,70,76,118,153,237,125,74,110,71,93,6,176,61,33,130,209,235,209,33,243,50,17,124,53,160,166,242,22,48,108,114,3,217,175,47,7,135,204,121,218,71,95,13,55,49,185,229,253,151,158,162,141,234,66,60,244,18,155,212,196,45,147,118,126,250,251,84,171,184,6,52,92,83,239,236,96,240,153,160,228,56,178,87,194,50,223,5,6,31,137,203,124,187,148,156,79,208,223,151,195,252,58,250,123,62,206,223,230,129,97,131,13,219,27,108,47,197,220,93,111,116,208,80,87,183,55,221,217,80,229,99,68,202,234,132,97,77,53,31,47,91,29,44,23,98,57,88,160,58,87,146,230,201,194,218,225,109,205,163,165,214,33,199,13,45,245,224,233,226,45,47,111,226,116,129,166,146,218,54,204,98,124,182,248,114,27,103,203,8,159,45,169,63,59,86,53,198,249,24,4,156,24,165,202,104,222,56,135,223,70,255,241,56,137,170,116,35,197,119,109,65,113,62,75,54,167,56,179,179,222,64,16,136,129,224,141,144,253,213,240,234,200,94,155,163,182,38,123,255,80,215,111,130,236,117,5,86,236,177,125,178,247,143,116,13,150,237,93,59,152,236,215,212,100,135,49,116,167,242,49,146,115,174,163,255,42,43,204,14,209,157,14,210,120,247,22,52,102,195,226,235,209,56,24,50,194,84,52,222,96,132,25,149,237,224,205,76,237,224,13,77,237,224,205,79,109,226,83,96,147,169,109,33,96,26,207,15,209,88,121,26,155,146,104,60,100,81,31,19,155,226,166,140,81,197,10,181,161,65,231,224,24,4,175,75,103,53,100,86,172,232,188,193,172,56,42,213,188,153,185,124,37,58,247,231,242,155,161,115,93,129,240,236,118,171,249,76,4,31,162,181,246,180,214,76,235,168,161,114,136,74,24,171,61,69,133,243,25,7,13,227,199,61,135,154,113,170,232,92,93,129,81,125,78,95,105,60,130,161,241,8,124,123,54,147,46,106,169,98,7,104,216,113,124,162,24,195,233,227,169,51,179,48,38,76,216,216,176,84,49,38,35,55,70,35,55,70,35,215,217,84,170,240,67,215,242,114,197,245,101,49,90,143,91,27,218,126,88,43,169,34,129,81,184,126,30,90,112,61,13,26,143,112,2,217,60,180,33,153,223,56,104,157,77,7,45,171,164,138,186,242,182,63,241,51,169,36,43,5,42,205,74,201,217,241,1,169,98,140,120,4,95,6,173,145,74,170,168,134,208,192,24,147,112,2,198,96,12,38,230,235,209,122,125,121,34,27,144,39,218,199,168,242,205,229,137,0,118,222,67,66,197,61,167,230,42,177,98,91,159,29,110,13,178,195,145,100,57,102,150,46,218,32,86,112,2,172,171,18,43,54,181,107,218,45,109,161,246,202,182,208,77,24,186,72,4,166,52,224,126,86,2,51,75,215,194,8,5,94,102,227,52,233,21,133,199,60,133,57,188,158,247,137,71,93,153,103,21,193,193,194,104,153,211,74,200,4,199,205,245,114,139,203,213,14,217,174,143,132,173,68,56,52,39,211,144,151,232,201,212,212,90,193,136,10,33,57,131,106,193,101,90,189,94,117,198,111,216,146,53,113,185,237,219,200,252,125,145,82,36,224,181,74,98,137,166,132,136,120,249,0,77,137,7,33,102,83,25,107,187,110,57,162,70,125,126,104,118,191,137,88,131,17,225,232,241,212,37,120,144,62,23,81,12,34,218,183,85,167,147,116,198,68,167,183,250,140,215,233,41,28,195,23,159,169,51,64,141,225,203,213,147,177,38,255,28,225,216,124,26,242,11,175,61,243,102,121,234,169,75,180,191,168,202,93,177,33,217,5,155,72,118,188,99,140,11,155,52,46,211,120,156,36,147,241,215,155,198,125,153,206,12,205,227,55,32,211,253,192,39,178,166,30,252,143,72,38,21,21,199,43,42,146,136,55,222,39,99,229,31,97,96,92,68,60,51,11,59,132,140,59,132,140,59,136,140,59,94,143,140,3,2,94,112,149,2,222,255,27,100,220,241,150,144,113,7,145,209,250,221,126,71,159,140,59,136,140,59,136,140,59,88,141,168,161,41,98,81,17,255,15,113,239,1,31,69,245,45,0,223,41,219,19,50,64,40,73,40,147,72,73,32,101,55,61,161,101,67,18,18,8,73,32,161,7,54,147,221,217,100,146,221,153,101,102,54,133,26,16,20,5,165,136,162,20,41,42,29,5,69,69,64,169,2,34,2,10,34,42,10,34,216,64,1,69,4,41,249,126,115,103,118,179,217,68,255,239,189,239,125,223,203,79,220,57,247,156,123,238,185,237,220,115,219,185,1,90,67,0,110,144,61,191,202,93,159,12,129,71,2,119,233,170,8,147,236,224,69,11,15,219,24,224,109,230,149,218,42,82,171,220,147,76,70,225,6,89,155,100,116,169,244,219,37,25,93,164,37,113,121,42,68,68,144,168,249,146,190,170,7,144,187,57,60,113,33,95,174,67,122,192,129,95,162,82,158,247,146,140,120,185,243,116,174,146,147,142,0,77,215,117,225,243,13,160,233,186,46,162,220,208,212,62,6,204,55,65,181,236,254,194,60,239,147,253,178,23,60,249,89,104,79,64,176,20,0,29,5,16,62,62,47,32,170,51,52,195,164,153,169,226,190,70,101,62,1,188,238,49,14,55,125,94,1,85,153,152,236,62,3,79,70,75,73,149,249,54,100,48,86,118,154,209,31,58,200,72,173,74,70,203,228,163,22,198,42,210,71,124,248,208,164,143,248,42,69,124,82,225,140,203,156,207,130,42,179,65,78,175,117,41,148,164,207,254,67,210,240,139,172,74,70,139,12,94,215,29,185,94,215,29,25,240,171,179,236,206,195,124,30,84,153,175,188,183,95,246,76,213,108,159,157,196,124,219,35,226,11,248,30,33,105,185,29,223,156,22,248,0,25,222,91,149,178,235,192,22,174,179,94,125,103,127,107,174,179,182,190,163,8,184,14,245,58,244,242,94,234,14,38,81,243,206,19,251,21,239,215,158,123,153,208,229,89,103,89,247,18,242,85,80,160,92,5,141,128,206,8,225,165,103,229,205,190,93,175,28,80,110,8,192,11,141,242,221,102,159,91,152,114,124,68,185,202,31,129,42,247,28,49,175,195,83,169,111,40,87,192,177,64,248,12,30,20,4,250,20,9,68,20,255,89,242,13,76,12,246,31,204,239,222,37,98,126,240,202,1,160,188,16,28,41,149,69,36,170,149,198,77,130,40,130,165,15,188,207,223,73,196,63,253,11,113,34,244,198,106,110,68,38,155,177,28,197,91,79,4,80,92,149,54,119,42,14,60,119,205,13,209,128,68,160,198,81,124,182,40,215,172,225,53,116,115,64,149,124,8,88,62,67,100,48,196,192,39,104,125,110,120,99,213,36,146,199,43,238,61,225,213,215,174,17,32,80,118,118,100,48,34,240,174,183,92,100,40,161,60,124,40,11,68,60,70,162,208,15,23,230,227,135,171,155,82,204,96,91,38,32,193,214,233,82,120,65,4,144,102,104,8,145,102,120,76,190,81,235,113,178,163,28,243,82,238,221,3,57,59,221,17,116,6,124,227,43,2,37,209,204,65,79,70,96,115,73,108,58,137,102,130,113,144,135,146,132,82,112,178,47,62,143,51,16,34,196,16,33,159,241,145,237,206,99,159,66,207,99,193,176,97,31,254,20,94,90,14,134,28,178,241,12,232,49,73,190,122,12,221,53,193,123,185,26,224,155,0,222,74,2,93,90,139,13,227,170,192,191,32,13,255,134,236,252,111,200,208,127,67,118,1,134,16,105,100,105,68,38,239,34,180,225,152,252,198,27,241,24,137,17,122,67,87,160,236,0,73,40,132,4,230,207,94,221,15,204,33,202,117,246,208,150,76,33,75,12,178,68,246,191,171,68,218,179,73,126,238,217,27,73,234,248,82,141,203,254,179,60,247,171,37,33,225,179,255,215,63,222,15,204,109,154,63,251,239,69,54,119,153,168,32,59,251,75,162,92,145,54,116,132,215,162,9,212,47,95,30,102,103,111,237,135,158,124,91,77,233,152,148,146,222,15,25,12,90,246,18,41,21,248,214,129,66,42,135,135,67,90,216,150,21,183,27,128,64,32,173,71,209,224,138,155,48,169,221,119,0,178,235,57,217,163,4,108,58,68,176,161,189,63,99,34,220,208,78,105,93,178,35,95,162,198,12,12,109,229,8,62,18,5,193,84,154,40,130,189,145,36,66,41,47,0,24,158,215,201,206,41,189,131,167,252,234,166,252,242,178,114,205,104,22,90,136,103,152,27,208,112,181,212,237,162,65,3,106,222,55,115,104,160,164,98,194,213,82,64,35,162,4,60,82,2,30,121,2,30,42,1,15,165,128,252,64,20,190,152,43,143,196,146,118,55,171,194,213,230,187,231,246,131,112,13,52,202,72,196,7,7,119,204,53,242,107,181,136,89,226,69,226,196,6,169,118,33,143,46,164,138,212,192,145,187,105,79,48,47,66,45,175,245,100,227,94,205,76,98,195,113,143,155,139,64,216,0,134,203,79,45,229,4,42,110,218,208,170,104,0,204,25,185,208,137,92,56,148,3,250,153,71,164,137,235,48,92,121,168,82,77,162,102,172,58,2,147,95,104,45,12,139,192,242,2,165,2,193,72,117,14,244,51,171,174,146,223,142,215,86,135,203,47,35,69,232,36,190,251,102,14,133,135,234,144,106,57,51,40,137,73,244,240,124,34,234,75,128,122,9,180,57,129,64,57,123,232,75,128,253,39,2,188,57,129,218,172,170,14,215,24,228,39,118,165,145,9,151,189,27,98,114,1,96,82,1,64,135,20,88,149,204,37,63,80,7,157,104,84,171,72,196,144,13,115,7,115,132,68,3,169,5,195,125,93,36,6,32,230,65,147,195,53,36,48,119,159,12,31,9,179,200,94,203,213,34,169,225,229,247,224,84,242,248,147,140,246,48,203,27,128,49,0,53,15,154,76,106,204,106,145,135,81,93,133,129,8,169,33,81,115,128,200,203,239,133,65,11,8,62,190,64,170,204,23,154,62,37,99,72,217,210,236,239,181,144,112,232,159,204,124,225,11,105,216,55,146,42,137,34,31,218,53,199,128,215,79,89,103,175,45,36,25,64,99,225,87,128,100,21,121,77,161,92,249,36,70,59,209,220,208,112,19,76,150,228,196,188,114,242,17,0,58,93,200,9,196,149,199,127,122,152,17,248,28,75,94,32,8,53,75,57,111,12,26,46,125,194,115,126,230,134,6,60,47,76,178,140,85,178,171,45,120,32,7,122,171,135,146,171,100,201,175,55,229,204,47,191,1,77,249,213,200,159,178,23,54,243,246,243,255,41,151,149,222,92,202,249,141,244,230,183,135,55,191,36,204,47,204,10,124,200,34,12,202,40,73,166,216,179,126,101,174,124,98,178,12,107,254,99,73,143,245,202,80,228,149,33,87,126,130,67,109,190,125,94,62,226,173,24,92,36,238,177,182,100,95,225,74,183,150,172,101,217,163,28,225,81,133,178,239,184,224,230,1,138,90,108,225,171,194,0,141,24,104,213,24,164,46,233,125,165,16,66,222,183,30,13,109,100,77,24,138,101,4,0,3,128,72,89,49,162,68,111,8,121,95,38,53,4,0,243,177,223,246,3,115,60,17,164,56,92,37,17,217,163,187,57,104,120,147,231,24,0,223,10,52,99,147,35,176,170,112,28,46,197,128,112,4,62,99,166,74,87,94,178,142,64,72,92,185,255,170,60,195,111,158,6,233,17,18,83,222,242,135,70,219,172,217,115,180,14,184,114,136,43,15,23,72,19,80,156,68,228,200,40,60,111,14,79,110,203,79,161,161,45,146,65,101,74,96,120,11,149,61,154,162,17,184,71,92,180,133,184,42,69,92,148,68,160,11,24,148,84,67,143,149,146,2,65,154,30,122,38,85,50,87,149,36,86,117,132,86,18,94,83,37,123,160,132,62,241,37,118,56,188,136,4,242,3,165,60,77,155,28,161,150,102,171,8,116,195,135,137,17,186,106,115,231,201,202,201,99,217,219,12,169,38,117,53,178,133,170,38,113,145,79,86,30,60,135,143,110,227,240,177,227,60,101,118,12,217,2,18,131,197,170,242,12,154,173,81,195,119,219,165,116,228,183,197,13,36,142,203,15,30,194,66,149,95,0,73,111,122,94,92,201,30,230,41,52,157,199,231,176,193,224,245,179,158,109,8,4,153,79,108,223,252,230,7,223,158,223,186,101,166,4,189,57,123,249,111,47,157,59,240,250,235,16,122,249,252,227,31,125,176,231,143,191,230,207,52,4,248,120,32,55,160,64,250,207,240,217,122,36,64,210,16,251,129,225,205,116,59,197,56,104,27,41,114,164,157,113,56,200,218,74,206,65,147,229,110,187,157,230,1,0,4,8,3,0,244,4,0,196,241,110,65,180,198,209,229,241,201,241,105,201,229,73,73,201,86,218,110,50,218,203,83,76,9,84,66,170,61,193,102,74,46,79,75,77,77,54,166,26,237,241,201,113,14,166,156,167,248,250,56,65,180,197,9,188,53,142,225,226,24,167,203,33,196,242,2,136,4,4,24,6,0,248,3,0,16,168,240,15,0,0,224,0,128,94,0,128,222,0,128,72,0,64,148,242,94,62,2,0,232,3,0,160,4,129,230,69,134,99,73,89,234,116,210,201,216,200,254,3,72,129,118,216,99,29,52,27,25,21,55,74,160,121,33,174,146,226,133,202,26,138,183,85,82,172,80,73,241,78,42,46,214,74,241,21,92,28,79,87,48,130,40,9,38,9,197,218,232,186,88,43,79,137,180,16,203,112,49,201,118,83,138,45,62,190,188,156,50,37,25,141,38,123,92,57,199,11,149,49,198,88,147,49,54,1,198,176,209,113,78,206,22,203,11,167,0,1,24,0,192,90,0,64,15,0,64,30,91,67,57,24,27,89,206,113,14,146,167,93,60,45,208,172,72,73,210,166,147,0,128,92,132,0,93,125,232,10,93,48,35,254,148,177,100,73,37,77,218,25,94,16,201,242,122,145,38,157,110,233,139,38,141,36,199,147,38,0,92,8,1,186,3,0,22,42,191,114,54,4,145,119,91,37,14,82,241,130,253,8,1,218,1,0,250,161,0,244,5,0,12,225,57,183,107,56,237,44,167,249,34,142,97,69,154,207,174,19,105,86,96,56,214,75,123,1,7,192,12,154,226,126,131,3,144,227,3,127,169,224,33,175,22,92,154,232,142,251,241,249,216,143,207,81,5,63,156,22,41,27,37,82,254,172,60,116,187,252,248,188,231,199,231,109,5,63,134,17,43,109,60,85,155,93,103,165,5,33,159,114,186,56,94,244,41,131,13,56,124,90,203,11,111,196,1,200,240,129,55,225,0,12,4,0,12,230,88,59,99,163,89,145,161,28,37,60,197,10,118,154,207,161,233,22,114,173,244,147,107,149,159,92,207,251,225,95,240,195,47,244,195,63,225,7,63,137,3,144,231,3,207,195,1,24,236,3,63,133,3,48,214,7,158,238,23,127,134,95,252,153,126,241,27,252,226,79,81,226,123,242,156,203,113,213,173,213,107,149,95,58,213,126,249,170,80,240,121,44,35,21,33,51,133,46,162,121,39,197,210,172,152,69,59,232,10,74,164,189,180,147,112,0,210,164,50,119,49,67,220,20,111,107,45,189,34,28,128,44,31,120,4,14,64,166,15,156,231,135,31,170,224,243,164,214,68,11,98,38,77,241,12,91,49,156,97,197,22,117,152,238,151,151,126,126,121,73,105,145,151,2,142,245,20,16,85,238,160,37,174,62,244,49,158,252,240,52,37,210,5,148,200,212,64,18,15,190,151,159,172,189,21,122,15,28,169,212,209,112,218,201,121,146,105,173,76,194,252,248,116,241,43,147,96,63,124,7,5,63,146,166,28,14,206,42,85,129,23,167,242,147,65,141,195,113,200,11,107,252,218,141,86,193,103,209,118,202,237,16,205,86,43,231,102,197,98,145,18,91,246,145,123,88,243,242,253,27,107,94,190,119,20,124,107,125,174,181,124,95,192,154,203,242,141,31,255,111,49,0,114,125,224,239,48,121,236,240,192,87,252,224,31,252,224,31,177,230,229,248,179,31,254,23,12,192,241,202,3,127,142,53,47,231,115,126,241,79,250,225,79,249,225,143,250,225,143,249,225,247,251,225,15,248,149,223,123,126,248,221,126,241,223,240,147,119,187,95,121,237,192,0,40,242,129,223,244,43,223,183,252,248,173,247,75,111,131,31,191,141,126,241,55,249,197,127,217,47,254,106,191,248,107,252,232,95,240,163,95,230,199,255,69,63,250,197,126,244,75,252,248,63,231,87,126,243,252,232,159,242,163,127,218,47,189,249,126,233,205,241,195,207,245,227,63,11,107,174,83,91,27,71,92,126,105,78,198,0,40,240,213,183,126,120,202,15,46,199,154,235,121,155,95,155,29,235,71,63,206,143,126,130,31,125,161,95,158,138,252,226,143,240,235,99,35,253,202,36,31,243,215,153,146,6,28,236,224,4,218,236,22,43,57,158,17,235,61,180,131,48,89,247,140,98,204,78,73,139,148,112,242,175,87,255,42,120,15,214,67,231,193,199,41,248,166,180,242,156,78,183,40,105,230,194,90,150,230,61,116,125,48,0,250,75,54,11,237,209,87,89,148,72,21,51,83,124,244,96,68,11,94,146,220,241,94,124,104,75,188,219,33,50,2,83,209,68,19,164,164,211,68,163,36,151,224,163,95,21,26,175,126,85,248,22,215,179,86,121,196,104,194,33,255,196,47,190,137,230,47,180,57,191,187,104,115,125,126,15,149,237,156,76,55,207,14,174,164,173,213,180,205,139,187,230,23,247,186,95,220,95,81,89,215,75,37,81,194,121,98,251,232,91,63,250,139,126,252,46,161,114,91,50,187,92,60,87,67,123,25,120,240,167,209,230,54,217,167,126,252,62,67,1,24,224,3,159,81,228,241,244,39,255,252,28,244,227,119,200,143,223,97,180,185,205,247,161,135,95,37,85,171,148,172,23,183,203,47,47,239,249,241,218,141,202,246,98,14,79,211,222,122,241,193,191,238,23,255,13,191,248,219,149,248,114,207,144,163,123,112,175,250,197,125,205,79,238,245,104,243,49,250,69,63,250,151,252,210,90,222,172,30,155,194,23,248,209,61,227,199,231,89,165,254,138,105,177,69,223,109,240,163,157,133,202,186,111,36,93,195,85,251,180,225,90,191,58,169,83,100,81,218,68,147,29,233,71,231,240,171,123,167,95,221,123,194,45,126,241,202,252,202,138,82,226,181,236,183,77,52,197,126,121,41,81,120,180,232,119,62,52,195,252,226,228,163,205,199,146,225,126,117,84,208,130,167,108,60,122,240,153,126,117,49,88,161,175,161,28,110,218,70,91,25,39,229,16,156,12,43,90,40,79,85,216,97,211,107,130,157,20,212,142,163,88,186,206,69,91,69,218,70,214,80,60,67,177,34,9,231,183,233,228,241,32,2,132,182,156,115,253,195,148,7,6,87,248,206,7,138,120,174,130,167,156,121,182,214,98,72,217,105,97,234,123,172,240,145,148,72,195,150,46,81,73,83,181,74,218,97,243,76,217,90,164,169,148,54,212,225,114,155,173,166,89,1,38,64,217,108,12,91,81,66,11,30,77,238,19,50,90,202,109,185,131,206,167,89,24,139,22,228,152,158,236,254,67,62,149,209,197,39,159,10,107,223,32,63,195,95,161,240,76,92,252,38,27,114,46,252,231,10,62,70,125,243,97,170,21,83,186,53,81,21,124,203,225,180,69,94,70,177,140,183,149,217,114,120,110,10,205,54,53,59,155,131,171,100,88,142,181,210,86,198,85,73,243,34,93,39,122,155,144,69,172,119,209,44,93,219,212,168,56,73,66,218,99,181,64,188,224,102,44,114,83,179,74,114,52,209,22,211,162,143,44,162,242,105,177,211,180,165,156,18,24,193,226,146,26,156,224,164,234,24,167,219,41,133,231,82,124,13,45,120,91,132,92,209,37,156,167,149,72,173,163,57,46,135,231,156,74,65,8,172,219,105,17,165,80,11,165,132,252,115,28,216,32,154,15,27,18,81,14,77,219,105,186,169,112,90,52,197,102,153,176,194,160,166,252,214,42,201,89,106,149,244,154,80,30,70,82,34,197,46,7,35,22,241,28,103,23,164,162,21,56,55,111,165,45,54,218,202,215,187,96,43,176,80,53,20,227,128,95,229,148,131,98,173,52,203,89,56,151,133,99,45,110,223,170,180,8,18,39,73,12,169,210,44,130,212,82,228,42,104,5,33,197,166,235,104,171,91,100,56,182,121,154,150,74,138,181,57,104,33,139,17,164,68,11,56,214,183,189,13,230,105,27,35,10,217,236,63,227,148,136,255,24,171,21,132,217,229,114,212,23,209,172,212,89,51,229,76,122,212,148,197,37,7,123,50,111,177,194,40,22,88,167,52,47,149,217,191,22,150,75,42,90,139,207,226,151,133,179,219,5,218,219,130,178,104,23,39,48,98,182,211,37,214,43,109,71,25,125,60,221,24,214,171,155,247,192,190,169,77,161,121,206,147,144,167,225,254,187,188,163,92,54,74,132,138,142,114,139,156,133,146,147,178,192,94,165,180,83,202,109,99,68,142,183,208,142,10,202,73,57,44,46,119,121,53,93,239,109,60,50,7,150,114,250,180,76,165,200,229,242,149,9,36,165,202,43,255,154,90,158,77,81,189,46,89,89,91,24,155,18,85,233,107,114,239,146,249,52,11,106,74,235,95,7,132,127,105,244,126,249,113,42,122,215,66,217,108,60,45,8,21,60,231,118,121,0,39,92,134,244,64,74,193,120,26,240,104,154,103,236,245,153,148,104,173,164,109,112,165,145,182,13,246,106,171,248,92,185,249,142,166,28,140,141,17,235,97,215,106,53,234,72,138,173,160,33,122,148,41,62,181,57,73,19,191,193,156,211,201,136,78,154,21,179,39,187,41,135,151,163,155,231,105,223,241,214,70,11,34,195,194,5,90,159,79,79,165,74,10,66,249,180,64,165,41,5,240,180,149,102,106,104,222,238,150,91,140,66,224,80,150,39,45,62,124,228,177,93,16,56,43,67,137,180,77,2,93,84,61,45,203,32,212,11,53,20,47,13,49,202,167,192,84,176,52,47,200,253,90,233,221,158,214,37,135,9,245,130,72,59,45,74,51,144,99,121,235,206,206,115,206,41,213,138,246,132,253,167,138,99,216,97,116,189,111,47,242,240,99,154,153,44,102,190,194,55,68,49,166,164,80,143,174,148,190,149,86,47,125,10,62,214,163,4,59,225,136,46,125,149,187,121,214,55,162,162,152,125,226,251,132,56,125,39,33,158,216,62,32,211,98,146,212,106,104,66,235,242,251,17,195,185,159,20,84,209,98,202,8,165,243,155,144,74,97,110,191,73,108,75,134,205,71,109,223,140,251,46,12,72,225,214,127,91,16,147,8,108,255,178,250,38,225,121,239,74,31,44,186,214,214,19,101,249,254,121,145,20,202,225,191,48,219,60,83,45,204,61,223,60,53,91,64,254,167,76,249,103,220,249,15,187,1,176,42,90,219,113,240,34,90,223,214,144,208,242,222,7,174,252,139,6,0,196,0,0,98,165,57,134,178,55,5,203,10,110,235,72,125,163,134,182,198,242,130,149,114,81,86,70,172,39,57,169,251,58,184,90,0,0,17,70,128,182,0,128,219,161,4,232,2,0,8,64,1,80,73,115,12,210,206,241,78,74,20,25,182,130,20,121,138,17,73,198,233,114,208,78,207,126,14,201,211,162,155,103,105,27,73,177,36,205,243,28,15,226,252,246,180,90,202,98,119,138,177,188,208,16,70,128,206,0,128,114,20,0,210,111,143,204,232,7,155,148,176,141,97,4,136,7,0,36,0,0,18,1,128,223,73,0,0,159,153,129,131,102,43,196,74,146,179,147,12,235,114,139,0,220,206,39,64,5,0,192,133,0,56,71,240,192,115,16,57,143,5,28,107,22,172,12,51,184,146,226,41,171,72,243,112,78,161,236,98,121,3,173,158,143,76,184,115,88,194,113,197,78,202,225,248,111,236,237,233,245,197,34,101,173,78,215,235,245,250,150,251,124,180,141,118,136,20,57,112,0,105,244,20,152,149,227,105,88,94,172,219,25,103,99,234,45,118,7,71,137,112,255,107,71,23,2,132,75,115,51,0,128,14,52,193,5,10,140,2,0,130,1,0,199,0,0,167,53,0,144,5,0,100,4,98,160,97,78,55,0,98,76,8,56,120,205,0,150,38,213,2,112,128,251,253,137,199,160,156,179,110,108,157,59,193,236,140,249,13,7,230,189,187,247,3,67,123,164,123,213,62,219,175,169,236,175,203,54,124,117,251,222,160,159,177,194,206,192,124,73,66,245,66,6,62,31,171,123,233,34,246,48,181,67,80,220,21,241,177,235,127,158,58,163,189,128,31,254,106,251,39,123,67,102,38,172,199,122,117,255,185,0,5,230,141,123,246,3,195,82,13,50,45,246,197,9,79,158,249,128,95,253,229,249,39,227,58,180,59,82,244,109,181,139,29,122,42,232,252,243,159,179,147,223,236,181,221,126,100,91,143,228,14,93,199,159,201,236,223,166,164,209,186,95,24,117,162,211,141,123,244,239,145,123,71,253,117,244,66,195,133,95,217,219,39,111,92,176,252,85,172,2,173,22,143,221,33,198,219,104,107,156,212,73,69,186,162,62,206,198,83,21,112,179,176,101,81,219,98,157,210,212,113,32,105,4,183,187,18,176,189,30,80,202,205,3,223,147,230,202,62,240,223,202,62,174,7,70,16,185,13,122,224,97,8,128,123,149,30,152,70,154,211,79,70,228,61,84,15,92,131,52,231,255,184,194,239,98,118,232,0,236,84,232,15,7,238,159,120,36,213,201,241,35,203,143,118,122,228,218,114,225,254,89,8,23,94,216,251,193,131,29,181,141,119,238,95,128,112,192,185,106,243,141,197,163,63,104,251,224,10,132,251,63,152,185,104,91,247,211,207,68,63,184,14,225,199,151,143,50,69,150,142,56,147,243,224,54,132,223,254,104,253,182,133,91,39,175,162,30,60,128,240,199,243,127,123,172,54,98,229,47,83,31,224,141,18,236,44,174,203,88,156,119,226,245,23,30,4,64,120,204,201,119,38,214,183,235,63,123,199,131,96,8,167,140,190,63,60,121,41,113,240,227,7,93,32,92,248,98,110,42,247,203,11,139,126,120,208,3,194,71,211,103,247,252,120,174,248,5,120,24,13,225,219,203,246,45,251,228,212,19,107,194,30,38,66,248,234,214,62,157,94,212,39,222,72,122,216,31,194,207,190,153,212,231,126,69,234,155,69,15,179,32,220,111,208,145,207,46,158,61,54,167,250,97,62,132,119,127,114,38,180,119,214,55,31,206,125,88,2,225,23,62,234,185,231,228,234,234,231,214,60,44,133,240,156,215,202,167,247,112,108,253,122,247,67,27,132,239,124,101,9,28,107,223,242,202,231,15,29,16,238,117,235,208,183,207,221,189,252,199,141,135,34,132,119,53,52,110,222,184,237,237,183,245,143,166,65,120,254,208,105,14,149,165,252,201,158,143,230,64,184,216,120,32,177,172,113,239,71,131,30,45,128,240,168,94,187,23,47,152,91,240,194,248,71,75,33,252,254,140,40,87,143,218,123,23,197,71,43,33,188,112,215,213,93,171,223,191,184,126,225,163,87,33,188,116,186,56,239,148,101,211,221,77,143,182,66,248,212,138,141,11,159,115,101,189,119,248,209,78,8,87,119,8,218,119,247,166,246,233,139,143,246,66,248,29,147,137,30,213,115,251,39,247,30,29,134,240,214,153,83,79,31,185,60,232,165,224,198,19,16,86,247,235,219,231,48,81,122,37,182,241,44,132,207,44,17,152,151,122,244,216,156,215,120,1,194,109,142,131,199,127,127,251,201,135,214,198,43,16,190,22,218,118,137,77,123,117,239,140,198,235,16,62,49,175,136,211,157,216,187,224,165,198,219,16,142,166,67,46,143,237,244,238,167,111,53,62,104,4,230,35,7,247,3,131,42,99,229,201,70,28,152,207,74,192,206,182,196,107,103,127,250,169,49,64,209,93,229,91,63,188,86,183,13,131,186,4,128,57,186,165,119,235,210,6,205,234,6,199,8,0,222,234,160,249,104,234,201,101,251,83,97,219,6,192,85,250,203,212,147,241,51,22,22,195,177,8,128,202,134,159,183,188,154,250,217,231,78,168,171,1,200,142,88,222,169,87,239,194,213,243,224,250,18,0,189,239,31,62,107,90,103,253,117,29,92,95,2,96,227,182,99,11,82,233,111,183,191,15,245,26,0,95,211,91,66,159,213,30,125,252,60,236,43,0,44,239,58,57,243,94,215,137,135,127,7,165,16,30,251,99,216,250,104,102,248,146,64,196,6,225,95,158,113,133,218,126,67,190,234,141,56,32,60,180,246,198,242,151,94,113,174,203,68,68,8,207,173,158,190,115,106,157,238,247,82,100,26,132,107,59,127,83,191,246,74,201,206,90,100,14,132,15,126,184,98,194,146,39,38,60,177,4,89,0,225,1,19,95,56,246,97,113,210,177,173,200,82,57,191,107,150,253,93,186,179,207,243,71,145,149,16,254,222,178,230,165,247,87,231,124,251,29,242,42,132,123,46,72,251,58,241,224,138,215,30,32,91,33,92,186,250,197,87,248,229,71,238,116,68,119,66,248,228,7,63,151,20,239,187,240,174,9,221,11,225,203,230,136,223,59,253,241,96,94,62,122,24,194,175,213,149,158,89,113,146,60,97,71,79,64,248,98,113,248,212,63,198,119,124,113,22,122,22,194,233,198,238,203,46,188,189,230,242,10,244,2,132,95,120,235,251,210,226,79,191,220,248,14,122,5,194,253,179,54,188,250,229,180,21,247,79,163,215,33,76,100,189,186,33,63,191,102,207,53,244,54,132,67,87,102,188,115,227,217,45,243,213,216,3,8,71,207,25,179,158,184,209,253,52,137,225,210,32,5,162,76,139,127,190,250,42,177,162,31,22,0,225,85,1,43,215,222,95,65,252,56,10,11,150,241,183,251,149,127,73,70,110,117,97,93,32,60,247,212,134,41,147,134,101,53,204,199,122,64,56,230,155,173,88,198,149,240,125,175,97,209,16,94,216,152,53,41,110,101,197,179,251,177,68,8,155,119,45,88,185,170,83,194,217,175,176,254,16,222,20,246,253,206,37,95,135,188,252,39,150,5,225,47,107,47,238,102,247,189,112,45,8,207,135,240,127,77,211,87,240,140,224,134,163,226,165,199,8,104,253,108,2,242,200,238,129,245,8,128,214,13,37,138,180,211,37,146,34,71,218,152,26,198,70,147,229,245,164,52,13,246,161,237,136,200,187,62,30,56,3,145,71,134,150,195,72,120,185,219,30,203,8,22,137,101,125,100,148,79,156,11,138,101,33,101,66,15,0,144,90,231,79,24,0,68,111,0,214,60,129,128,140,204,32,208,240,194,139,0,124,247,167,10,28,95,222,207,19,47,1,149,229,244,192,14,84,78,219,3,159,64,1,24,226,3,127,143,202,187,160,30,248,134,130,255,215,114,147,15,247,128,206,61,9,32,141,251,123,149,178,106,153,191,114,183,125,130,113,34,57,144,44,47,237,109,44,149,172,26,79,156,247,149,56,198,216,216,152,190,70,134,181,23,80,5,173,198,151,79,44,73,70,141,147,170,115,208,172,15,143,153,168,60,66,182,144,213,238,20,21,25,99,165,60,93,236,73,64,107,38,147,227,121,174,118,184,91,204,150,140,204,116,240,98,49,1,219,240,223,61,9,88,206,158,95,23,197,50,210,196,137,164,68,178,119,239,104,146,236,37,135,135,247,34,0,6,64,51,235,52,25,0,0,141,61,146,115,139,146,197,88,206,185,89,155,144,78,138,149,180,100,71,146,140,64,146,229,110,17,194,50,33,35,144,0,100,245,34,160,197,106,235,37,175,104,251,90,225,41,146,222,24,208,178,52,202,34,29,180,93,36,73,158,169,168,20,163,202,244,36,41,193,233,100,89,89,180,94,14,148,190,211,201,229,189,8,16,34,233,26,133,247,135,189,8,104,93,126,170,200,255,79,248,234,84,57,159,233,36,240,150,77,112,111,185,236,250,250,88,168,169,64,94,141,79,7,0,144,210,223,84,125,180,62,154,36,167,146,211,201,233,145,250,200,86,235,131,117,59,165,54,83,210,91,62,45,199,40,214,165,177,206,104,52,154,140,241,198,4,99,162,49,201,152,108,76,49,166,26,211,76,70,147,201,20,111,74,48,37,154,146,76,201,166,20,83,170,41,45,222,24,111,138,143,143,79,136,79,140,79,138,79,142,79,137,79,141,79,75,48,38,152,18,226,19,18,18,18,19,146,18,146,19,82,18,82,19,210,18,141,137,166,196,248,196,132,196,196,196,164,196,228,196,148,196,212,196,180,36,99,146,41,41,62,41,33,41,49,41,41,41,57,41,37,41,53,41,45,217,152,108,74,142,79,78,72,78,76,78,74,78,78,78,73,78,77,78,75,49,166,152,82,226,83,18,82,18,83,146,82,146,83,82,82,82,83,210,82,141,169,166,212,248,212,132,212,196,212,164,212,228,212,148,212,212,212,180,52,99,154,41,45,62,45,33,45,49,45,41,45,57,45,37,45,53,45,173,121,29,246,3,242,14,200,0,0,192,225,158,114,158,207,171,0,232,38,229,249,255,229,159,135,223,103,42,121,182,38,242,110,218,78,57,4,218,39,173,96,157,156,150,7,14,211,1,208,17,0,192,83,108,5,77,10,34,197,43,27,31,164,167,225,202,24,59,199,147,130,131,177,210,82,144,50,15,186,25,41,183,19,52,138,0,17,94,30,52,107,83,56,36,70,17,128,240,193,203,241,101,28,76,73,144,122,18,236,5,52,107,131,0,40,137,34,160,60,85,81,4,236,195,200,255,241,31,48,31,63,187,31,24,18,208,127,253,195,252,254,112,233,15,152,231,125,190,31,24,206,118,97,88,43,39,205,108,69,154,116,139,246,152,84,249,108,162,64,79,118,211,172,149,38,237,60,231,84,74,5,128,121,125,8,56,163,99,148,147,142,114,4,47,45,103,39,97,108,193,55,214,222,62,242,14,213,185,62,202,46,160,127,63,19,68,62,206,37,141,80,60,60,226,120,183,143,124,250,49,83,37,247,93,95,56,194,7,30,173,146,103,198,30,56,73,13,64,7,31,216,234,7,219,20,120,66,108,108,236,68,152,71,165,37,49,66,115,45,40,125,149,1,48,189,47,1,12,0,128,121,125,229,58,247,232,153,114,186,130,97,201,254,3,96,83,138,148,62,162,200,218,74,154,133,13,144,97,43,164,184,187,250,18,160,13,0,224,72,95,2,246,171,227,125,229,182,230,225,33,165,201,114,34,73,145,210,236,90,78,151,226,235,251,145,140,40,161,24,86,144,198,104,50,82,46,204,40,40,145,71,158,7,125,9,56,219,142,136,38,128,86,154,97,71,19,64,237,195,187,213,242,85,198,190,177,209,114,191,210,32,0,158,88,109,65,235,102,25,43,103,163,227,92,60,195,194,197,114,104,94,128,57,209,4,156,237,75,99,122,23,31,56,84,25,75,0,130,169,84,106,53,170,81,107,53,186,182,250,46,134,144,128,208,64,162,77,64,16,78,96,237,218,181,215,117,68,58,225,157,145,16,44,84,19,134,116,65,187,119,36,177,190,88,140,33,22,49,98,38,52,30,217,128,110,66,55,227,91,180,127,163,247,85,15,209,71,88,163,110,91,93,253,252,103,214,25,199,140,157,191,96,81,151,111,218,4,13,203,191,255,32,54,110,80,233,68,203,229,57,207,60,187,120,201,166,29,187,247,124,120,228,163,227,223,94,185,218,8,240,182,237,162,76,137,41,233,253,6,228,13,157,56,231,217,37,155,118,236,220,189,231,200,241,147,167,174,92,5,120,96,27,136,77,239,151,157,147,55,116,146,141,158,179,120,197,170,143,78,158,10,108,27,149,222,47,59,111,204,132,210,73,22,27,253,204,226,77,59,119,239,249,240,163,139,87,174,222,12,108,155,157,103,163,27,230,188,185,247,131,125,159,127,113,243,214,227,115,231,191,186,254,131,125,31,30,61,245,213,215,185,47,190,255,201,145,147,167,242,10,10,199,140,155,100,121,234,217,133,59,222,121,119,223,129,35,71,191,104,219,177,211,132,210,59,127,61,106,108,112,78,254,246,98,155,238,44,215,165,171,101,250,140,215,223,152,185,103,111,199,78,221,186,231,12,41,40,28,59,190,116,210,140,153,111,127,120,246,243,11,55,111,253,201,11,11,69,247,11,189,98,227,54,188,241,238,190,163,167,190,184,184,60,99,217,139,198,133,221,63,59,123,178,177,160,112,252,4,141,54,136,232,29,247,219,13,150,75,25,48,40,51,123,209,226,226,10,247,177,143,78,127,122,254,203,31,31,53,2,210,18,49,251,34,62,59,75,27,134,171,219,206,218,218,166,97,139,170,187,110,86,24,22,162,69,240,56,60,17,215,96,136,70,173,105,171,47,10,106,167,25,165,193,240,46,122,29,166,197,52,152,164,10,2,112,21,102,80,35,109,58,168,10,52,97,154,49,26,84,221,41,160,8,31,140,197,96,8,222,86,29,20,144,142,119,237,105,33,157,120,85,207,134,99,170,217,219,177,80,245,236,135,216,56,77,71,93,103,93,112,64,112,64,149,90,175,14,85,143,211,244,85,229,232,163,241,0,28,193,76,134,104,60,84,109,192,26,182,170,245,234,56,211,112,172,225,85,109,127,44,8,235,175,73,213,246,85,205,110,108,219,89,27,215,54,6,11,15,10,15,106,88,128,207,94,22,98,232,48,111,169,42,78,213,79,131,182,233,172,107,248,32,66,12,104,56,23,26,160,106,104,84,53,92,12,248,125,21,150,162,155,85,26,220,176,75,219,240,177,74,223,185,31,166,87,167,106,115,180,1,106,209,208,13,27,143,143,211,53,60,222,185,139,190,163,46,31,111,120,90,189,229,213,128,78,184,105,45,62,235,171,94,154,0,149,170,97,61,49,235,79,13,66,246,81,231,227,13,207,224,13,31,96,97,88,80,32,80,35,8,134,224,168,74,163,65,181,90,29,170,87,25,208,54,56,129,180,69,219,169,218,183,13,70,58,160,157,208,144,192,46,170,174,218,238,72,15,164,10,175,70,223,192,118,160,123,209,83,232,167,232,217,128,207,117,231,208,47,208,175,144,75,170,239,208,31,241,159,208,223,200,155,248,93,244,111,236,62,18,208,187,223,192,130,194,133,47,191,188,122,234,252,231,94,88,247,230,238,39,118,168,53,186,228,1,3,71,255,113,250,83,60,184,115,114,202,232,49,51,55,191,254,198,251,73,151,218,61,249,212,179,47,123,27,163,212,22,11,10,109,116,233,59,239,134,117,209,104,245,134,224,78,201,105,233,27,55,157,255,82,151,178,104,241,70,141,190,223,64,59,179,112,73,91,206,178,239,183,27,227,203,111,63,104,44,46,89,190,34,54,174,119,228,168,85,107,214,190,242,234,134,141,219,118,239,61,172,54,4,116,232,154,62,40,123,196,250,13,39,62,89,163,9,9,141,232,57,112,208,143,215,111,52,126,120,4,39,31,235,217,43,50,33,53,61,119,104,126,81,241,168,209,82,219,43,179,210,246,106,161,110,250,204,167,95,221,252,198,246,253,167,95,127,131,229,62,120,110,82,196,84,21,134,199,96,118,12,137,139,109,152,221,21,51,5,117,193,123,232,186,169,250,170,178,240,54,125,26,54,171,123,224,61,240,72,109,162,161,96,240,172,20,93,71,189,182,115,191,236,52,204,170,213,25,59,170,194,177,48,21,146,145,138,15,83,197,225,122,141,78,147,65,246,198,3,116,201,88,186,42,84,131,7,104,138,242,82,18,2,19,52,177,90,253,172,94,35,135,245,213,246,233,24,218,171,75,112,39,93,1,222,67,151,21,24,162,209,171,115,181,189,117,110,67,230,192,62,234,126,42,189,122,132,26,81,17,152,170,97,126,121,183,92,173,190,97,253,164,136,108,131,94,29,216,62,93,173,79,142,198,59,53,188,215,223,86,28,144,171,211,231,100,135,229,106,139,3,243,52,250,134,59,57,250,174,216,144,188,20,172,141,86,175,78,211,232,103,37,135,104,250,97,93,70,35,65,241,129,143,175,176,187,13,13,135,159,206,183,6,206,49,18,29,23,110,158,61,100,237,123,179,211,52,125,240,82,117,47,125,142,62,82,213,126,246,246,9,244,48,60,77,211,54,67,106,18,203,238,106,231,156,235,163,91,247,227,172,132,32,164,171,186,13,174,157,181,224,41,188,90,21,136,233,52,196,146,178,33,58,177,127,195,29,189,160,117,117,200,153,34,117,133,49,186,144,134,39,103,13,193,230,102,6,117,152,83,212,93,173,110,248,188,175,106,96,56,226,138,193,66,113,116,86,70,247,182,233,42,100,214,233,62,179,127,104,248,43,42,31,215,227,232,227,109,179,242,7,52,28,236,175,70,240,81,170,176,68,116,86,155,104,220,22,48,90,223,240,122,106,215,192,104,92,167,65,219,168,27,150,63,126,30,111,139,5,98,181,184,69,29,128,35,65,1,120,170,86,175,142,212,70,20,204,42,9,232,138,233,52,201,218,54,184,78,163,211,52,124,220,83,63,71,253,143,58,92,249,181,216,40,145,138,229,5,163,41,62,33,49,41,57,37,53,141,42,183,218,104,123,139,120,180,96,165,92,178,194,111,136,151,199,236,68,101,190,83,234,158,234,13,43,7,0,206,99,90,157,107,149,51,21,138,201,12,246,199,19,208,150,219,138,200,115,142,150,51,3,150,43,135,115,155,86,22,42,153,10,70,20,200,254,100,162,177,37,146,19,43,105,30,46,98,130,220,120,2,174,56,23,41,43,207,30,184,20,200,118,163,52,113,120,28,39,193,98,85,25,152,216,126,13,104,215,137,236,30,64,150,117,191,17,189,166,111,31,35,25,205,173,191,20,141,110,44,139,233,118,191,44,22,60,34,147,95,110,44,75,126,136,124,151,140,232,195,83,122,4,126,151,178,165,13,149,22,215,121,109,154,177,11,149,251,71,183,181,249,25,137,84,209,205,170,181,35,10,185,240,145,171,246,174,29,9,78,81,197,244,167,107,139,193,87,225,37,224,210,119,163,94,191,76,141,185,126,37,124,220,233,159,214,142,35,193,111,227,110,34,51,199,3,23,208,128,24,4,65,80,4,69,144,92,131,177,3,129,208,26,84,141,162,8,254,24,210,45,108,130,33,93,167,67,58,227,136,14,193,16,85,95,172,191,182,79,103,132,76,65,16,4,215,226,8,166,209,163,93,145,116,41,58,174,69,116,136,30,13,69,80,52,13,193,81,92,50,236,144,110,40,134,24,36,88,133,160,56,18,140,118,84,35,18,53,138,224,90,68,131,233,209,110,72,63,4,65,2,16,29,18,137,96,72,10,130,96,42,12,193,53,168,1,114,149,68,194,16,21,42,193,93,208,52,180,41,149,174,72,46,130,35,40,134,32,90,100,4,130,106,2,180,229,8,170,51,104,242,208,48,104,121,166,180,65,84,8,170,50,32,61,116,136,29,71,212,8,138,162,33,40,142,17,120,32,130,162,106,36,8,1,24,192,186,162,221,208,110,104,6,138,104,180,8,106,208,33,49,24,130,184,209,8,164,6,195,81,29,162,198,190,70,81,73,90,141,196,17,213,170,245,40,98,236,110,194,141,26,4,81,33,145,186,0,148,196,81,20,193,82,17,40,8,150,174,69,209,23,49,36,16,209,72,9,98,232,145,12,128,28,10,7,216,51,72,25,9,212,12,10,112,68,79,162,69,40,144,180,61,18,130,170,144,101,104,104,187,64,164,151,54,196,16,139,25,17,169,200,122,35,131,213,146,77,28,128,104,145,56,36,1,65,48,20,85,161,8,210,7,213,34,191,73,197,134,0,4,16,132,52,125,68,46,35,207,171,0,134,160,42,60,18,195,145,215,80,128,3,180,8,203,49,152,240,169,72,114,80,20,130,162,122,204,132,163,168,6,25,128,245,80,33,218,129,72,0,154,168,211,227,40,98,193,164,162,84,35,40,178,10,193,180,29,96,201,34,72,71,164,141,6,83,29,210,74,153,233,36,149,170,90,170,40,169,18,174,33,40,174,70,17,52,12,29,165,149,66,170,16,24,29,161,49,20,71,84,64,135,160,127,34,122,20,65,112,100,17,142,162,56,66,234,35,213,176,166,212,40,22,27,136,160,64,131,168,17,100,100,71,84,35,113,155,162,198,36,174,26,4,201,149,146,66,0,106,64,19,85,42,233,11,81,7,1,85,63,13,64,6,225,35,16,128,130,88,180,19,64,16,12,87,105,181,168,166,27,190,20,3,41,120,188,22,105,131,116,84,33,65,64,131,180,133,28,85,54,100,141,6,32,3,112,128,3,141,83,3,202,26,110,130,92,74,168,36,161,137,72,182,220,87,219,151,44,239,166,197,253,79,46,102,85,82,66,101,57,207,213,178,49,198,88,83,66,172,201,179,139,167,24,177,87,146,9,184,42,58,94,233,243,86,7,39,184,121,201,154,175,225,170,105,27,201,211,86,55,47,48,53,180,163,158,228,120,146,178,139,52,79,150,211,146,101,110,227,57,151,139,182,201,219,225,158,147,116,83,82,100,91,93,116,187,28,180,39,16,0,176,40,69,158,227,177,116,173,88,239,106,194,108,76,33,64,16,0,192,205,50,94,30,251,83,228,181,8,154,117,59,207,166,200,54,191,147,114,129,75,41,242,218,133,103,134,116,61,69,182,217,61,60,101,73,0,120,160,200,160,220,28,131,7,4,131,83,101,158,74,58,14,55,13,64,100,42,1,109,112,56,125,161,120,158,170,7,160,191,18,38,136,188,148,71,80,148,74,0,141,84,46,158,125,59,178,172,172,44,85,158,59,120,230,8,112,63,77,162,134,167,183,200,178,105,169,205,231,39,12,43,210,21,82,76,0,192,202,84,2,174,197,121,231,63,28,231,160,41,22,226,118,249,225,40,82,150,2,152,127,184,181,31,24,126,238,112,115,144,188,232,212,35,67,254,29,39,255,102,44,148,127,231,29,146,127,171,238,194,223,134,57,177,102,233,247,116,59,43,252,157,243,197,50,248,75,127,242,137,244,75,90,214,160,153,0,128,159,106,114,83,164,223,117,75,67,157,153,0,100,92,93,105,92,151,9,192,162,110,135,247,158,203,4,32,177,215,159,213,1,131,65,195,165,148,250,67,230,193,96,205,249,185,99,18,107,6,131,99,5,21,206,3,91,6,131,1,139,203,174,140,253,110,112,198,130,183,235,186,190,209,33,171,232,198,229,115,87,66,135,101,45,249,124,184,250,212,205,134,172,59,67,191,59,138,198,188,157,181,115,213,151,245,131,235,126,201,90,140,70,70,247,153,79,102,39,97,241,239,222,222,86,146,141,206,121,116,101,242,151,79,101,207,106,215,61,238,199,222,251,179,195,191,248,225,239,75,166,219,217,191,44,88,147,54,110,96,84,78,143,237,218,121,55,158,177,228,116,98,85,111,191,189,235,185,156,149,31,229,68,124,191,254,88,14,54,237,252,47,43,78,63,202,153,61,252,40,79,101,38,12,249,158,172,63,117,175,93,229,144,48,102,204,224,93,157,94,30,178,99,109,199,62,103,78,126,54,164,235,208,149,183,159,156,173,201,125,173,244,208,173,40,235,128,220,31,67,66,83,254,158,200,231,82,107,46,29,174,251,115,125,110,253,177,206,119,206,189,121,33,55,127,250,169,113,71,110,180,205,123,185,116,240,205,119,171,115,242,142,36,148,92,127,77,61,45,175,116,205,206,183,122,207,217,145,39,28,91,187,198,116,245,106,222,194,244,227,218,25,147,194,134,46,183,205,248,176,77,216,136,161,251,31,126,83,243,25,53,119,168,113,250,243,193,67,118,239,30,58,144,253,198,225,216,121,115,232,201,143,130,231,61,249,93,143,97,230,7,33,85,63,135,140,31,182,105,64,209,101,83,209,162,97,237,135,95,25,63,208,118,120,216,152,178,85,183,134,79,191,55,204,185,11,103,215,94,136,203,207,250,227,224,149,43,63,91,243,59,108,255,163,235,164,43,47,230,135,173,116,189,230,238,122,42,127,49,101,127,146,225,177,225,127,194,109,211,212,225,252,221,133,223,31,46,103,135,15,185,159,214,102,207,195,117,195,67,166,28,251,52,234,253,47,134,175,126,49,61,71,220,26,88,96,91,125,101,203,177,249,153,5,3,142,126,115,110,119,108,109,65,64,218,243,11,152,191,183,22,108,24,252,205,95,179,186,92,46,88,188,244,172,123,221,43,29,11,223,126,47,175,253,252,252,252,194,182,193,109,174,159,123,99,86,97,199,151,218,110,56,17,246,78,225,132,198,207,79,239,91,119,173,240,165,125,115,47,191,155,29,94,52,51,174,247,215,61,151,141,42,178,220,191,57,226,198,131,167,139,194,86,37,63,215,225,219,253,69,229,89,248,221,229,29,254,44,154,58,74,245,14,50,161,207,8,231,168,67,109,191,171,43,27,113,172,79,226,232,144,101,75,71,76,73,58,176,229,226,222,143,70,56,14,140,253,216,208,17,140,60,122,43,246,131,103,195,18,71,166,189,190,219,201,71,48,35,143,142,139,210,5,85,175,30,217,245,252,123,244,207,235,206,140,236,81,16,185,239,149,249,218,226,109,212,239,175,47,120,125,96,113,192,244,49,191,118,138,17,138,11,75,183,253,52,241,238,134,98,235,91,231,203,221,119,190,41,238,230,58,58,81,183,187,93,73,207,252,180,183,231,87,14,41,137,93,253,228,186,215,51,167,151,76,63,180,180,231,182,188,55,75,74,111,223,99,59,95,248,161,68,152,188,235,233,110,207,117,25,245,83,206,91,29,255,248,122,196,168,117,157,203,46,220,24,249,196,168,227,221,234,206,108,249,113,207,168,65,237,251,218,62,118,221,26,213,230,124,210,128,71,39,122,142,110,87,240,248,137,1,25,19,70,127,76,124,182,186,151,118,241,232,71,75,143,12,49,14,253,112,244,128,244,93,227,246,174,252,123,180,189,71,251,93,127,174,53,142,105,248,181,83,47,225,184,109,204,165,159,86,221,8,122,248,210,152,5,59,14,254,25,53,240,244,152,27,19,19,132,157,195,241,177,213,73,96,81,56,149,54,246,195,76,112,155,121,143,27,187,39,170,33,245,242,153,87,198,246,73,92,115,228,171,99,231,199,38,153,115,235,218,222,111,51,238,64,100,204,181,95,74,7,143,187,197,223,125,173,103,98,221,184,109,11,107,130,226,204,175,143,59,17,178,153,121,255,167,203,227,6,173,9,62,124,125,93,167,241,133,199,66,254,220,48,127,248,248,248,174,198,123,185,181,179,199,207,232,49,45,37,172,195,187,227,95,142,153,160,42,255,234,250,248,217,15,198,14,158,174,141,152,240,74,191,184,165,43,159,30,61,97,129,190,223,123,131,99,22,76,88,246,195,225,226,161,43,15,76,24,64,190,243,83,41,118,103,194,240,141,223,71,36,206,233,91,106,204,59,249,252,154,120,170,116,218,215,230,61,185,51,159,47,157,48,178,221,47,161,23,143,151,214,11,195,62,115,125,12,38,142,41,250,86,61,252,81,226,68,231,149,231,115,47,13,168,154,120,248,245,137,49,91,237,107,38,186,67,223,78,29,211,112,118,98,59,234,178,218,185,70,55,105,203,180,225,61,178,240,140,73,231,190,46,139,25,165,18,39,157,104,247,94,221,102,245,166,73,51,199,252,216,113,84,238,197,73,111,188,80,20,155,244,76,123,203,132,189,87,234,103,187,114,45,252,181,137,157,95,89,48,195,210,251,173,244,27,87,59,189,101,185,101,209,85,95,252,230,71,203,175,239,126,156,61,230,243,174,101,183,71,174,158,63,250,181,145,101,59,122,63,25,187,181,224,201,178,85,183,34,211,199,68,188,95,134,46,27,55,167,38,233,247,178,67,15,184,158,103,15,246,162,110,223,255,56,246,41,161,148,170,155,62,232,253,164,99,139,169,115,165,11,163,7,167,31,161,2,18,223,250,235,204,177,251,212,147,224,244,148,57,19,77,229,155,192,156,151,174,238,164,203,207,130,171,141,221,34,86,148,207,33,111,88,138,255,60,93,254,218,79,191,164,108,140,87,89,79,173,187,154,61,114,102,186,245,192,220,55,170,159,91,232,178,198,87,172,200,169,123,235,85,235,163,140,204,177,163,47,125,105,93,93,25,245,87,82,52,97,59,114,240,15,113,112,74,150,173,238,45,227,200,224,236,122,219,232,75,123,237,227,94,120,195,150,28,144,124,233,175,247,191,183,13,94,56,248,188,123,91,103,58,88,40,41,56,115,190,128,190,126,244,54,49,103,200,227,244,79,247,76,29,232,144,93,52,85,55,99,252,7,221,127,163,7,24,22,222,61,119,38,194,30,112,242,205,119,78,204,27,99,95,56,203,114,165,177,234,25,251,189,237,123,126,187,88,126,208,158,186,170,234,151,101,247,239,216,159,200,82,93,157,190,59,186,226,236,208,199,222,120,246,54,85,241,84,215,235,227,223,156,252,66,197,181,30,27,110,117,107,115,162,162,125,173,118,204,153,121,72,229,23,75,143,71,107,175,37,85,6,166,63,76,57,78,87,87,230,102,61,42,127,185,251,218,202,241,159,191,127,127,110,197,231,149,59,134,110,155,82,113,64,207,188,81,176,117,235,165,93,25,204,248,242,47,190,232,252,163,200,220,74,255,36,240,34,185,153,57,151,181,166,114,126,201,37,38,96,244,177,204,215,153,224,170,133,213,83,206,132,204,201,171,18,212,227,114,201,171,51,171,180,175,166,196,36,222,120,171,74,255,204,220,84,228,218,79,85,249,55,215,63,113,160,103,247,106,227,232,200,219,47,214,22,87,239,169,142,55,205,28,53,175,122,179,122,230,195,111,171,62,168,238,99,227,38,125,140,254,81,157,52,192,144,60,227,80,111,199,236,128,103,15,77,220,57,209,241,233,209,212,229,187,23,45,113,28,185,119,36,227,231,196,163,142,148,93,119,23,61,134,62,116,60,38,172,72,31,29,30,239,188,86,152,249,209,150,77,118,231,15,223,47,217,211,177,100,165,211,117,178,95,210,179,59,63,117,6,28,124,250,224,142,112,53,187,144,143,73,232,182,185,31,251,82,197,131,139,35,135,78,102,103,206,186,191,236,199,149,175,177,23,169,191,167,135,227,95,179,209,211,247,254,182,244,50,193,213,172,172,238,147,30,150,205,45,125,92,253,182,182,124,10,55,160,93,143,201,217,211,183,115,39,58,58,63,121,97,229,21,110,102,233,177,134,189,135,66,92,167,210,166,159,30,21,90,228,26,60,111,101,214,53,114,142,171,100,243,161,14,189,162,222,115,253,188,52,113,5,39,220,112,181,253,6,28,232,185,241,177,201,163,131,205,166,184,37,99,39,87,143,91,252,112,247,59,207,78,254,254,139,41,223,38,198,31,154,124,225,153,144,142,7,31,253,53,185,248,214,234,21,252,163,24,254,236,157,193,107,53,251,202,249,167,110,47,125,234,35,118,25,191,197,244,247,181,169,67,63,225,13,150,105,194,51,5,168,240,73,205,132,211,198,203,201,194,172,18,30,127,127,185,67,56,45,30,141,120,231,210,90,1,31,89,191,229,251,177,231,132,39,214,143,121,161,203,13,131,24,124,236,206,55,147,221,102,177,243,20,113,212,201,207,220,226,203,47,126,250,203,172,33,91,68,107,227,193,248,29,1,223,137,253,247,9,51,191,41,236,224,54,188,81,116,241,236,43,67,221,21,206,37,6,122,125,131,123,191,182,182,224,209,169,157,238,91,199,131,47,63,196,126,113,159,123,148,191,109,70,38,89,179,96,224,154,177,221,138,75,106,226,10,142,253,118,181,226,169,154,61,212,148,170,139,7,246,213,116,152,190,96,93,223,47,255,168,25,191,50,110,126,205,169,200,90,215,227,247,99,74,48,75,109,175,248,247,87,6,151,63,87,187,125,198,245,67,47,165,31,171,45,125,249,199,196,140,188,71,181,247,14,18,225,199,126,141,175,219,245,71,73,84,250,166,138,186,215,140,155,223,154,247,220,170,186,138,73,67,93,73,211,62,171,67,238,148,158,200,12,211,212,207,78,16,103,182,191,220,191,222,180,102,99,92,126,32,95,63,224,216,146,126,171,23,173,175,31,62,165,86,127,52,241,66,189,107,235,211,246,7,107,218,78,89,48,38,166,161,159,46,103,10,183,45,181,236,233,249,83,167,208,142,199,166,37,167,236,152,50,115,72,116,24,62,247,234,148,73,227,254,10,207,254,33,116,234,215,203,210,147,174,157,42,154,250,217,128,167,208,31,176,185,83,115,158,233,251,248,197,172,221,83,243,83,239,239,48,84,223,156,106,81,79,121,249,228,220,30,211,238,60,217,57,39,115,195,184,105,127,151,156,170,126,74,187,104,90,106,159,67,71,182,232,15,79,59,122,91,216,53,58,240,222,180,187,183,22,217,183,22,197,77,239,183,44,116,127,245,18,235,116,253,128,240,237,234,218,23,167,231,47,136,42,61,182,244,228,244,237,127,189,148,246,176,11,54,99,165,27,204,235,127,37,101,6,246,28,216,60,236,27,231,140,203,19,50,134,22,110,94,55,227,43,254,116,151,239,75,190,152,177,104,33,126,37,172,79,224,204,221,95,206,102,71,164,103,206,140,90,244,216,241,171,199,106,102,38,136,91,251,119,159,186,117,230,154,99,215,230,254,113,226,187,153,255,149,195,103,243,50,91,63,124,54,208,103,235,72,50,244,36,35,78,50,212,254,151,61,53,8,52,111,163,45,85,2,199,198,152,98,141,177,38,99,170,60,37,160,41,155,188,60,125,33,147,0,78,0,192,90,68,222,158,243,192,71,16,0,218,251,192,159,35,114,126,60,240,199,136,124,88,205,3,159,66,228,252,121,224,129,168,92,30,255,113,27,6,32,192,60,111,222,1,96,64,16,96,222,250,212,1,96,56,208,221,195,100,61,38,239,189,54,254,55,255,0,130,98,184,74,173,209,234,148,0,189,33,32,176,77,208,63,71,248,79,248,255,227,191,127,58,45,72,145,89,140,224,114,80,245,255,241,128,37,233,246,30,118,116,212,183,56,101,248,63,245,98,210,116,58,83,158,187,72,77,170,75,142,236,197,228,130,14,192,121,217,255,148,247,63,237,113,213,229,16,160,16,0,240,72,37,55,88,95,56,220,7,214,171,155,227,37,56,188,213,181,52,232,38,133,17,44,210,172,207,226,217,79,138,100,233,90,139,131,102,163,60,249,105,196,229,179,7,202,28,153,99,73,7,227,100,68,146,174,179,210,180,141,182,53,21,48,220,221,226,236,100,37,93,71,202,11,131,34,79,49,14,105,206,232,157,88,10,77,65,156,211,73,57,56,150,38,29,52,101,147,66,4,55,207,115,21,20,220,101,243,97,2,39,158,100,53,93,239,117,126,98,103,88,70,164,201,200,10,78,36,11,168,2,105,202,222,55,46,134,97,237,81,158,77,70,56,247,77,39,189,146,73,177,69,78,138,75,145,172,219,89,78,243,82,26,147,221,156,72,11,190,156,61,147,81,43,199,138,60,231,104,146,155,140,44,117,27,141,70,99,140,244,99,202,137,34,237,82,121,145,181,149,140,131,38,93,20,47,72,25,240,196,246,110,117,202,171,169,36,252,31,156,54,43,105,251,110,68,123,136,101,148,7,146,179,238,149,191,44,162,204,231,54,159,195,221,132,129,71,169,155,232,162,203,164,210,40,155,94,214,34,104,162,79,80,122,89,118,97,78,11,225,33,227,214,16,114,174,90,193,176,36,87,94,69,91,197,214,34,57,24,65,36,41,145,116,48,44,77,194,115,40,145,209,16,72,39,163,73,43,231,112,59,101,79,56,115,243,228,189,200,249,121,242,58,199,115,121,242,218,196,156,98,207,186,130,92,34,98,189,11,70,245,230,2,0,176,63,79,94,3,57,153,39,175,85,52,167,101,221,14,71,115,250,235,121,178,215,157,255,127,6,27,168,128,224,104,19,60,148,0,44,0,224,91,68,62,171,224,129,47,43,231,165,60,240,207,126,248,223,17,89,231,121,224,59,202,224,67,90,41,182,55,108,176,94,135,65,146,206,19,72,138,28,74,213,80,197,86,158,113,137,74,139,242,156,111,57,59,148,128,39,13,41,135,52,8,214,147,242,58,58,109,243,213,137,153,255,31,149,77,76,45,37,56,99,202,25,214,86,65,179,49,198,216,164,88,35,140,237,96,202,97,249,24,135,17,128,87,12,4,169,62,97,115,81,228,242,140,5,148,247,204,192,127,123,24,241,14,139,10,172,147,135,61,162,177,109,187,246,193,29,26,59,118,234,28,18,26,214,165,107,183,238,164,140,15,143,120,172,71,207,94,189,35,163,250,244,109,140,142,137,141,107,218,6,129,104,47,100,206,28,156,149,157,51,36,119,232,176,252,225,5,69,35,70,22,151,140,26,61,102,236,184,241,242,102,73,69,37,83,85,237,100,57,215,100,94,16,221,53,181,117,245,83,254,43,134,211,130,252,214,13,39,202,33,208,188,155,118,59,28,205,79,203,15,246,59,61,159,245,191,95,135,229,66,82,170,79,173,217,104,73,161,193,203,17,14,135,164,78,70,210,130,219,33,166,167,187,217,90,158,114,69,70,149,145,28,43,41,135,178,108,158,47,243,172,67,102,251,24,126,57,138,33,168,85,224,33,64,246,38,225,193,231,41,158,172,60,237,99,215,112,89,39,116,82,206,98,121,224,206,10,47,15,28,166,148,133,71,48,121,109,212,95,48,178,172,128,99,105,143,96,254,183,66,134,2,249,156,160,167,223,184,89,43,37,210,21,28,207,76,145,134,56,169,101,202,187,73,242,167,172,201,157,180,147,227,235,91,14,133,118,198,65,187,89,193,237,114,113,188,72,219,56,23,205,203,134,10,188,159,194,187,93,34,109,163,248,10,183,100,193,200,26,83,228,56,210,193,53,141,33,18,7,150,114,210,82,184,147,98,235,37,21,90,45,88,121,78,16,98,108,116,13,99,165,97,136,164,226,121,72,104,163,41,155,131,179,86,203,151,62,225,98,187,196,131,44,119,11,245,188,114,71,12,2,48,20,38,71,241,21,180,4,201,119,197,224,176,72,121,199,119,129,166,171,165,98,115,179,210,151,151,31,203,145,130,200,241,84,5,77,10,46,202,74,215,242,210,144,60,133,230,57,145,113,210,54,105,136,243,100,193,70,137,148,231,27,94,51,145,70,9,41,75,146,57,64,57,104,146,165,197,90,142,175,150,229,148,47,165,250,136,227,224,56,151,148,61,134,181,49,60,13,239,164,41,38,72,36,29,91,17,75,10,245,78,88,2,18,93,148,164,219,98,56,214,81,79,250,112,224,120,175,172,78,218,198,184,157,50,35,142,175,135,39,106,224,153,84,70,82,158,222,112,249,160,141,23,108,170,183,90,206,237,176,145,229,176,128,89,145,17,235,73,143,62,165,235,24,65,20,202,121,174,154,102,73,23,227,162,61,185,178,113,181,172,114,191,81,62,192,227,185,184,234,9,100,88,210,45,208,18,202,202,177,44,108,63,202,135,148,34,85,14,155,142,135,155,155,229,105,202,90,41,197,175,228,4,209,23,246,137,36,141,9,98,51,216,238,22,104,155,139,230,157,140,0,141,56,27,205,50,180,77,201,131,148,182,108,208,68,114,130,98,56,123,218,127,204,8,121,108,245,140,199,86,138,149,200,157,156,141,177,215,195,195,158,240,20,41,89,201,113,213,242,25,46,74,14,169,134,215,160,42,165,210,41,26,65,64,93,230,239,5,208,75,23,203,11,11,70,200,251,63,79,42,183,75,60,112,17,42,143,137,249,62,186,114,184,114,78,211,163,63,10,0,128,182,46,161,192,69,0,128,17,126,52,35,1,0,197,173,156,105,109,170,91,193,109,181,210,130,96,119,59,36,62,109,1,128,103,207,8,229,95,123,5,14,84,198,168,14,138,60,6,229,91,250,23,164,224,218,43,243,149,84,0,224,249,211,78,10,173,78,57,15,69,40,97,33,10,125,160,114,70,84,171,232,176,54,10,77,71,133,175,65,249,14,84,190,37,254,93,71,16,32,96,4,1,254,46,34,192,47,69,4,248,170,136,0,71,139,8,240,118,17,1,54,22,17,96,121,17,1,230,22,17,160,190,136,0,108,17,1,198,21,17,32,171,136,0,73,69,4,232,93,68,128,224,34,2,252,86,72,128,119,10,9,176,170,144,0,79,20,18,96,74,33,1,38,23,18,160,162,144,0,99,10,9,144,81,72,128,222,133,4,8,41,36,64,64,33,1,238,22,16,224,102,1,1,62,47,32,192,209,2,2,188,91,64,128,181,5,4,88,80,64,128,89,5,4,168,46,32,192,164,2,2,20,23,16,32,163,128,0,67,133,209,146,142,133,231,189,167,21,203,246,157,167,29,229,83,83,234,73,134,21,68,138,181,74,189,94,32,93,60,93,195,112,110,193,81,79,150,211,82,39,226,24,129,99,105,155,172,139,251,252,239,143,107,28,188,181,77,59,28,49,166,88,83,170,159,77,114,162,152,0,85,82,125,97,114,61,241,52,205,138,188,236,70,131,17,1,200,45,145,109,79,15,221,52,120,70,219,60,111,147,52,165,47,1,46,157,139,231,108,110,43,205,11,168,214,65,177,21,110,170,130,70,240,145,110,65,4,1,46,158,147,90,26,109,139,41,175,199,84,112,162,216,213,20,155,98,138,53,145,145,222,9,35,25,111,140,79,136,49,166,198,24,19,162,212,181,148,131,119,11,106,99,108,124,66,108,66,128,175,57,165,49,198,198,199,154,140,70,16,29,36,74,138,92,180,216,105,74,116,243,180,128,246,13,82,252,75,196,84,56,184,114,202,33,244,213,10,76,5,27,67,215,137,255,79,0,0,0,255,255,112,250,176,136]); diff --git a/solana-program-library/spl-token/Cargo.lock b/solana-program-library/spl-token/Cargo.lock index 1951e9f..9a6497b 100644 --- a/solana-program-library/spl-token/Cargo.lock +++ b/solana-program-library/spl-token/Cargo.lock @@ -118,6 +118,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "bumpalo" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + [[package]] name = "bytes" version = "1.5.0" @@ -139,6 +145,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + [[package]] name = "either" version = "1.9.0" @@ -240,6 +256,16 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -324,7 +350,7 @@ dependencies = [ "proc-macro-crate 2.0.0", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.98", ] [[package]] @@ -382,9 +408,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -445,9 +471,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -503,6 +529,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + [[package]] name = "ryu" version = "1.0.15" @@ -518,6 +550,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_derive" version = "1.0.190" @@ -526,7 +569,7 @@ checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.98", ] [[package]] @@ -622,13 +665,16 @@ dependencies = [ "bs58 0.5.0", "bytes", "chrono", + "console_error_panic_hook", "num-bigint", "prost", "serde", + "serde-wasm-bindgen", "serde_json", "substreams", "substreams-solana", "substreams-solana-program-instructions", + "wasm-bindgen", ] [[package]] @@ -644,9 +690,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -683,7 +729,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.98", ] [[package]] @@ -745,6 +791,66 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "wasm-bindgen" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + [[package]] name = "which" version = "4.4.2" @@ -849,5 +955,5 @@ checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.98", ] diff --git a/solana-program-library/spl-token/Cargo.toml b/solana-program-library/spl-token/Cargo.toml index 82ca18e..85f099e 100644 --- a/solana-program-library/spl-token/Cargo.toml +++ b/solana-program-library/spl-token/Cargo.toml @@ -4,7 +4,7 @@ version = "1.0.0" edition = "2021" [lib] -name = "substreams" +name = "spl_token" crate-type = ["cdylib"] [dependencies] @@ -19,6 +19,9 @@ borsh = { version = "0.10.3"} chrono = { version = "0.4", features = [ "std" ], default-features = false } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" +wasm-bindgen = { version = "0.2", features = ["serde-serialize"] } +serde-wasm-bindgen = "0.5" +console_error_panic_hook = "0.1" [profile.release] lto = true diff --git a/solana-program-library/spl-token/Makefile b/solana-program-library/spl-token/Makefile index eddf360..23140c0 100644 --- a/solana-program-library/spl-token/Makefile +++ b/solana-program-library/spl-token/Makefile @@ -6,7 +6,7 @@ build: .PHONY: stream stream: build - substreams run -e $(ENDPOINT) substreams.yaml map_block -s 296561424 -t +1 + substreams run -e $(ENDPOINT) substreams.yaml map_block -s 311081162 -t +1000 .PHONY: protogen protogen: @@ -14,4 +14,14 @@ protogen: .PHONY: package package: - substreams pack ./substreams.yaml \ No newline at end of file + substreams pack ./substreams.yaml + +.PHONY wasm_pack: +wasm_pack: + wasm-pack build --no-typescript --target no-modules + +.PHONY convert_and_gcloud_upload: +convert_and_gcloud_upload: + go build utils/convert.go && mv convert utils/convert + utils/script.sh spl_token + \ No newline at end of file diff --git a/solana-program-library/spl-token/index.html b/solana-program-library/spl-token/index.html new file mode 100644 index 0000000..3e7ec1a --- /dev/null +++ b/solana-program-library/spl-token/index.html @@ -0,0 +1,21 @@ + + + + + + hello-wasm example + + + + + + + \ No newline at end of file diff --git a/solana-program-library/spl-token/src/instruction.rs b/solana-program-library/spl-token/src/instruction.rs index 47ed03c..d9416ea 100644 --- a/solana-program-library/spl-token/src/instruction.rs +++ b/solana-program-library/spl-token/src/instruction.rs @@ -1,42 +1,52 @@ extern crate bs58; use borsh::{BorshDeserialize, BorshSerialize}; use core::fmt; +use serde::{Deserialize, Serialize, Serializer}; +use std::error::Error; + +fn u64_to_string(num: &u64, serializer: S) -> Result +where + S: Serializer, +{ + serializer.serialize_str(&num.to_string()) +} -#[derive(BorshDeserialize, BorshSerialize, Debug, Clone, Default, Copy)] +#[derive(BorshDeserialize, BorshSerialize, Debug, Clone, Default, Copy, Serialize)] pub struct PubkeyLayout { pub value: [u8; 32], } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeMintLayout { pub decimals: u8, pub mint_authority: PubkeyLayout, - pub freeze_authority_option: u8, - pub freeze_authority: PubkeyLayout, + pub freeze_authority: Option, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeAccountLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeMultisigLayout { pub status: u8, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct TransferLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct ApproveLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct RevokeLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] #[repr(u8)] pub enum AuthorityTypeLayout { #[default] @@ -65,126 +75,133 @@ impl fmt::Display for AuthorityTypeLayout { } } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct SetAuthorityLayout { pub authority_type: AuthorityTypeLayout, pub new_authority_option: u8, pub new_authority: PubkeyLayout, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct MintToLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct BurnLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct CloseAccountLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct FreezeAccountLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct ThawAccountLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct TransferCheckedLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, pub decimals: u8, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct ApproveCheckedLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, pub decimals: u8, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct MintToCheckedLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, pub decimals: u8, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct BurnCheckedLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, pub decimals: u8, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeAccount2Layout { pub owner: PubkeyLayout, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct SyncNativeLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeAccount3Layout { pub owner: PubkeyLayout, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeMultisig2Layout { pub status: u8, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeMint2Layout { pub decimals: u8, pub mint_authority: PubkeyLayout, - pub freeze_authority: PubkeyLayout, + pub freeze_authority: Option, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct GetAccountDataSizeLayout { pub extension_type: u8, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeImmutableOwnerLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct AmountToUiAmountLayout { + #[serde(serialize_with = "u64_to_string")] pub amount: u64, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct UiAmountToAmountLayout { pub ui_amount: String, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeMintCloseAuthorityLayout { pub owner: PubkeyLayout, } -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct TransferFeeExtensionLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct ConfidentialTransferExtensionLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct DefaultAccountStateExtensionLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct ReallocateLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct MemoTransferExtensionLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct CreateNativeMintLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InitializeNonTransferableMintLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InterestBearingMintExtensionLayout {} -#[derive(BorshSerialize, BorshDeserialize, Debug, Default)] +#[derive(BorshSerialize, BorshDeserialize, Debug, Default, Serialize)] pub struct InstructionAccounts { pub mint: String, pub rent_sysvar: String, @@ -201,8 +218,9 @@ pub struct InstructionAccounts { pub mint_funding_sys_program: String, } -#[derive(Debug)] +#[derive(Debug, Serialize)] pub struct Instruction { + pub joinKey: String, pub name: String, pub instruction_accounts: InstructionAccounts, pub initializeMintArgs: InitializeMintLayout, @@ -300,7 +318,8 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.mint = accounts.get(0).unwrap().to_string(); instruction_accounts.rent_sysvar = accounts.get(1).unwrap().to_string(); - initializeMintArgs = InitializeMintLayout::try_from_slice(rest).unwrap_or_default(); + initializeMintArgs = + InitializeMintLayout::deserialize(&mut rest.clone()).unwrap_or_default(); } 1 => { instruction_name = String::from("InitializeAccount"); @@ -321,7 +340,8 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.signer_accounts = accounts.split_at(2).1.to_vec(); } - initializeMultisigArgs = InitializeMultisigLayout::try_from_slice(rest).unwrap(); + initializeMultisigArgs = + InitializeMultisigLayout::deserialize(&mut rest.clone()).unwrap(); } 3 => { instruction_name = String::from("Transfer"); @@ -335,9 +355,9 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru if rest.len() > 8 { let (rest_split, _) = rest.split_at(8); - transferArgs = TransferLayout::try_from_slice(rest_split).unwrap(); + transferArgs = TransferLayout::deserialize(&mut rest_split.clone()).unwrap(); } else { - transferArgs = TransferLayout::try_from_slice(rest).unwrap(); + transferArgs = TransferLayout::deserialize(&mut rest.clone()).unwrap(); } } 4 => { @@ -352,9 +372,9 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru if rest.len() > 8 { let (rest_split, _) = rest.split_at(8); - approveArgs = ApproveLayout::try_from_slice(rest_split).unwrap(); + approveArgs = ApproveLayout::deserialize(&mut rest_split.clone()).unwrap(); } else { - approveArgs = ApproveLayout::try_from_slice(rest).unwrap(); + approveArgs = ApproveLayout::deserialize(&mut rest.clone()).unwrap(); } } 5 => { @@ -375,7 +395,8 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.signer_accounts = accounts.split_at(2).1.to_vec(); } - setAuthorityArgs = SetAuthorityLayout::try_from_slice(rest).unwrap_or_default(); + setAuthorityArgs = + SetAuthorityLayout::deserialize(&mut rest.clone()).unwrap_or_default(); } 7 => { instruction_name = String::from("MintTo"); @@ -389,9 +410,9 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru if rest.len() > 8 { let (rest_split, _) = rest.split_at(8); - mintToArgs = MintToLayout::try_from_slice(rest_split).unwrap(); + mintToArgs = MintToLayout::deserialize(&mut rest_split.clone()).unwrap(); } else { - mintToArgs = MintToLayout::try_from_slice(rest).unwrap(); + mintToArgs = MintToLayout::deserialize(&mut rest.clone()).unwrap(); } } 8 => { @@ -461,7 +482,7 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.signer_accounts = accounts.split_at(4).1.to_vec(); } - approveCheckedArgs = ApproveCheckedLayout::try_from_slice(rest).unwrap(); + approveCheckedArgs = ApproveCheckedLayout::deserialize(&mut rest.clone()).unwrap(); } 14 => { instruction_name = String::from("MintToChecked"); @@ -473,7 +494,7 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.signer_accounts = accounts.split_at(3).1.to_vec(); } - mintToCheckedArgs = MintToCheckedLayout::try_from_slice(rest).unwrap(); + mintToCheckedArgs = MintToCheckedLayout::deserialize(&mut rest.clone()).unwrap(); } 15 => { instruction_name = String::from("BurnChecked"); @@ -485,7 +506,7 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.signer_accounts = accounts.split_at(3).1.to_vec(); } - burnCheckedArgs = BurnCheckedLayout::try_from_slice(rest).unwrap(); + burnCheckedArgs = BurnCheckedLayout::deserialize(&mut rest.clone()).unwrap(); } 16 => { instruction_name = String::from("InitializeAccount2"); @@ -494,7 +515,8 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.mint = accounts.get(1).unwrap().to_string(); instruction_accounts.rent_sysvar = accounts.get(2).unwrap().to_string(); - initializeAccount2Args = InitializeAccount2Layout::try_from_slice(rest).unwrap(); + initializeAccount2Args = + InitializeAccount2Layout::deserialize(&mut rest.clone()).unwrap(); } 17 => { instruction_name = String::from("SyncNative"); @@ -503,9 +525,9 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru if rest.len() > 0 { let (rest_split, _) = rest.split_at(0); - syncNativeArgs = SyncNativeLayout::try_from_slice(rest_split).unwrap(); + syncNativeArgs = SyncNativeLayout::deserialize(&mut rest_split.clone()).unwrap(); } else { - syncNativeArgs = SyncNativeLayout::try_from_slice(rest).unwrap(); + syncNativeArgs = SyncNativeLayout::deserialize(&mut rest.clone()).unwrap(); } } 18 => { @@ -525,14 +547,16 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.signer_accounts = accounts.split_at(1).1.to_vec(); } - initializeMultisig2Args = InitializeMultisig2Layout::try_from_slice(rest).unwrap(); + initializeMultisig2Args = + InitializeMultisig2Layout::deserialize(&mut rest.clone()).unwrap(); } 20 => { instruction_name = String::from("InitializeMint2"); instruction_accounts.mint = accounts.get(0).unwrap().to_string(); - initializeMint2Args = InitializeMint2Layout::try_from_slice(rest).unwrap_or_default(); + initializeMint2Args = + InitializeMint2Layout::deserialize(&mut rest.clone()).unwrap_or_default(); } 21 => { instruction_name = String::from("GetAccountDataSize"); @@ -542,11 +566,12 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru if rest.len() > 1 { let (rest_split, _) = rest.split_at(1); getAccountDataSizeArgs = - GetAccountDataSizeLayout::try_from_slice(rest_split).unwrap(); + GetAccountDataSizeLayout::deserialize(&mut rest_split.clone()).unwrap(); } else if rest.len() == 0 { getAccountDataSizeArgs = GetAccountDataSizeLayout::default(); } else { - getAccountDataSizeArgs = GetAccountDataSizeLayout::try_from_slice(rest).unwrap(); + getAccountDataSizeArgs = + GetAccountDataSizeLayout::deserialize(&mut rest.clone()).unwrap(); } } 22 => { @@ -555,21 +580,21 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.account = accounts.get(0).unwrap().to_string(); initializeImmutableOwnerArgs = - InitializeImmutableOwnerLayout::try_from_slice(rest).unwrap(); + InitializeImmutableOwnerLayout::deserialize(&mut rest.clone()).unwrap(); } 23 => { instruction_name = String::from("AmountToUiAmount"); instruction_accounts.mint = accounts.get(0).unwrap().to_string(); - amountToUiAmountArgs = AmountToUiAmountLayout::try_from_slice(rest).unwrap(); + amountToUiAmountArgs = AmountToUiAmountLayout::deserialize(&mut rest.clone()).unwrap(); } 24 => { instruction_name = String::from("UiAmountToAmount"); instruction_accounts.mint = accounts.get(0).unwrap().to_string(); - uiAmountToAmountArgs = UiAmountToAmountLayout::try_from_slice(rest).unwrap(); + uiAmountToAmountArgs = UiAmountToAmountLayout::deserialize(&mut rest.clone()).unwrap(); } 25 => { instruction_name = String::from("InitializeMintCloseAuthority"); @@ -577,7 +602,7 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru instruction_accounts.mint = accounts.get(0).unwrap().to_string(); initializeMintCloseAuthorityArgs = - InitializeMintCloseAuthorityLayout::try_from_slice(rest).unwrap(); + InitializeMintCloseAuthorityLayout::deserialize(&mut rest.clone()).unwrap(); } 26 => { instruction_name = String::from("TransferFeeExtension"); @@ -621,6 +646,7 @@ pub fn parse_instruction(bytes_stream: Vec, accounts: Vec) -> Instru } let result: Instruction = Instruction { + joinKey: "".to_string(), name: instruction_name, instruction_accounts: instruction_accounts, initializeMintArgs: initializeMintArgs, diff --git a/solana-program-library/spl-token/src/lib.rs b/solana-program-library/spl-token/src/lib.rs index 1848247..311a71f 100644 --- a/solana-program-library/spl-token/src/lib.rs +++ b/solana-program-library/spl-token/src/lib.rs @@ -14,14 +14,26 @@ use substreams_solana::pb::sf::solana::r#type::v1::Block; use substreams_solana::pb::sf::solana::r#type::v1::TokenBalance; use utils::convert_to_date; -#[derive(Default)] -pub struct OuterArg { - pub instruction_type: String, - pub input_accounts: Accounts, - pub arg: Arg, +use serde_json::json; +use serde_wasm_bindgen; +use std::panic; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen(start)] +pub fn run() { + panic::set_hook(Box::new(console_error_panic_hook::hook)); +} + +#[wasm_bindgen] +pub fn parse(join_key: &str, base58_str: &str, accounts_js: JsValue) -> JsValue { + let accounts: Vec = accounts_js.into_serde().unwrap(); + let decoded_bytes: Vec = bs58::decode(base58_str).into_vec().unwrap(); + let mut data = parse_instruction(decoded_bytes, accounts); + data.joinKey = join_key.to_string(); + serde_wasm_bindgen::to_value(&data).unwrap() } -#[substreams::handlers::map] +// #[substreams::handlers::map] fn map_block(block: Block) -> Result { let slot = block.slot; let parent_slot = block.parent_slot; @@ -101,6 +113,13 @@ fn map_block(block: Block) -> Result { Ok(Output { data }) } +#[derive(Default)] +pub struct OuterArg { + pub instruction_type: String, + pub input_accounts: Accounts, + pub arg: Arg, +} + fn handle_mints( mut obj: SplTokenMeta, pre_token_balances: &Vec, @@ -155,11 +174,11 @@ fn get_outer_arg( arg.decimals = Some(i32::from(instruction.initializeMintArgs.decimals)); arg.mint_authority = get_b58_string(instruction.initializeMintArgs.mint_authority.value); - arg.freeze_authority_option = Some(i32::from( - instruction.initializeMintArgs.freeze_authority_option, - )); - arg.freeze_authority = - get_b58_string(instruction.initializeMintArgs.freeze_authority.value); + + // Only set freeze_authority if it's actually present (Some) + if let Some(freeze_authority) = instruction.initializeMintArgs.freeze_authority { + arg.freeze_authority = get_b58_string(freeze_authority.value); + } } "InitializeAccount" => { outerArg.instruction_type = String::from("InitializeAccount"); @@ -243,8 +262,10 @@ fn get_outer_arg( arg.decimals = Some(i32::from(instruction.initializeMint2Args.decimals)); arg.mint_authority = get_b58_string(instruction.initializeMint2Args.mint_authority.value); - arg.freeze_authority = - get_b58_string(instruction.initializeMint2Args.freeze_authority.value); + // Only set freeze_authority if it's actually present (Some) + if let Some(freeze_authority) = instruction.initializeMint2Args.freeze_authority { + arg.freeze_authority = get_b58_string(freeze_authority.value); + } } "GetAccountDataSize" => { outerArg.instruction_type = String::from("GetAccountDataSize"); diff --git a/solana-program-library/spl-token/substreams.yaml b/solana-program-library/spl-token/substreams.yaml index 7798da1..b5d4103 100644 --- a/solana-program-library/spl-token/substreams.yaml +++ b/solana-program-library/spl-token/substreams.yaml @@ -12,7 +12,7 @@ protobuf: binaries: default: type: wasm/rust-v1 - file: target/wasm32-unknown-unknown/release/substreams.wasm + file: target/wasm32-unknown-unknown/release/spl_token.wasm modules: - name: map_block diff --git a/solana-program-library/spl-token/utils/convert b/solana-program-library/spl-token/utils/convert new file mode 100755 index 0000000..a80dbc8 Binary files /dev/null and b/solana-program-library/spl-token/utils/convert differ diff --git a/solana-program-library/spl-token/utils/convert.go b/solana-program-library/spl-token/utils/convert.go new file mode 100644 index 0000000..c58e5fb --- /dev/null +++ b/solana-program-library/spl-token/utils/convert.go @@ -0,0 +1,43 @@ +package main + +import ( + "bytes" + "compress/zlib" + "fmt" + "io" + "log" + "os" +) + +func main() { + // Read all data from stdin + bs, err := io.ReadAll(os.Stdin) + if err != nil { + log.Fatal(err) + } + + // Compress the data using zlib + var b bytes.Buffer + w := zlib.NewWriter(&b) + _, err = w.Write(bs) + if err != nil { + log.Fatal(err) + } + err = w.Close() + if err != nil { + log.Fatal(err) + } + + // Get the compressed data + compressedData := b.Bytes() + + // Build a string representation of the compressed byte slice + fmt.Print("const bytes = new Uint8Array([") + for i, c := range compressedData { + if i > 0 { + fmt.Print(",") + } + fmt.Print(c) + } + fmt.Println("]);") +} diff --git a/solana-program-library/spl-token/utils/script.sh b/solana-program-library/spl-token/utils/script.sh new file mode 100755 index 0000000..d055428 --- /dev/null +++ b/solana-program-library/spl-token/utils/script.sh @@ -0,0 +1,7 @@ +#!/bin/bash +name=${1} + +cd utils || exit +./convert < ../pkg/${name}_bg.wasm > wasm_bytes.js +gsutil cp wasm_bytes.js gs://tt-bq-js/solana/${name}/wasm_bytes.js +gsutil cp ../pkg/${name}.js gs://tt-bq-js/solana/${name}/ \ No newline at end of file diff --git a/solana-program-library/spl-token/utils/wasm_bytes.js b/solana-program-library/spl-token/utils/wasm_bytes.js new file mode 100644 index 0000000..02231d8 --- /dev/null +++ b/solana-program-library/spl-token/utils/wasm_bytes.js @@ -0,0 +1 @@ +const bytes = new Uint8Array([120,156,212,189,13,152,29,87,113,32,122,126,250,239,222,238,158,105,253,217,146,70,70,213,141,8,163,216,194,227,191,25,33,19,152,51,97,102,60,12,66,38,155,236,146,159,141,127,5,164,175,49,158,241,68,24,16,154,107,44,219,99,35,140,0,129,5,8,16,196,11,74,98,131,146,56,65,36,74,60,102,149,68,47,40,89,189,23,37,40,27,229,173,216,56,89,237,70,33,10,152,196,89,108,244,190,170,58,221,183,239,157,25,201,99,200,123,47,246,167,185,125,78,159,159,170,58,231,212,169,83,167,170,90,220,114,247,59,164,16,66,254,137,92,115,179,154,158,150,211,55,235,105,250,81,211,211,130,158,197,205,114,90,220,236,76,211,163,59,61,109,179,228,180,77,200,105,76,237,184,89,200,105,46,101,223,236,152,22,55,11,113,179,55,93,148,178,79,226,102,185,93,78,223,92,227,212,142,29,59,196,205,254,116,89,72,239,160,31,108,104,135,184,185,62,93,254,199,173,190,111,154,96,121,159,133,101,59,39,183,219,228,14,78,226,143,58,172,187,244,187,110,125,219,234,155,110,122,215,173,111,187,233,206,173,239,186,233,218,190,235,182,94,125,245,91,175,121,117,223,117,3,253,183,109,189,90,212,59,10,12,108,124,235,214,91,175,234,219,120,107,255,181,3,87,15,92,117,13,23,88,129,5,126,225,206,219,223,182,245,206,155,238,252,197,119,220,186,117,18,11,139,164,82,249,238,173,83,55,93,51,176,241,154,129,190,171,175,121,235,53,183,15,92,219,183,117,163,208,157,5,54,246,13,220,126,221,91,251,110,125,235,109,87,95,123,203,45,3,92,160,218,250,221,83,147,191,112,39,129,34,68,7,104,27,111,233,127,235,213,215,108,188,165,127,235,109,91,55,246,111,189,133,65,91,99,91,159,186,229,182,198,77,125,91,111,31,184,238,246,254,141,215,13,92,119,107,223,91,175,185,77,168,74,145,173,147,147,239,156,188,105,224,186,107,174,189,117,227,214,87,223,114,77,255,91,175,186,229,214,107,185,200,234,10,8,239,188,53,223,122,219,212,77,183,79,190,243,174,155,38,183,190,85,56,88,160,103,110,129,219,238,120,231,157,91,169,132,143,37,86,85,74,228,119,191,243,206,155,238,222,58,249,11,183,220,241,11,239,217,202,93,92,90,121,127,251,214,91,127,241,109,22,87,126,155,84,222,78,189,125,242,157,239,18,74,255,166,252,13,25,248,190,150,90,8,17,42,39,212,178,75,10,33,149,150,34,138,148,90,34,186,131,104,169,82,66,44,19,66,58,66,40,129,37,149,144,98,185,210,174,112,87,184,218,147,110,172,4,150,233,86,74,9,207,23,174,214,90,11,23,103,188,192,242,142,208,2,235,122,90,42,173,133,10,148,112,98,165,252,16,95,9,209,37,188,224,146,149,171,93,23,83,210,195,76,71,97,119,82,120,66,40,69,192,73,17,75,169,234,181,90,173,230,104,199,149,119,201,91,111,117,181,20,75,188,154,156,150,166,217,156,21,161,191,189,230,189,99,235,59,222,57,249,110,37,244,228,47,222,41,222,236,222,117,203,228,221,91,69,151,123,203,29,119,188,243,54,241,160,244,111,223,202,143,95,146,221,21,122,188,117,114,235,86,113,80,46,169,100,189,131,203,221,189,180,146,55,105,43,207,200,164,109,66,221,50,57,37,222,92,251,130,148,194,200,240,150,95,151,191,38,175,251,101,249,184,252,13,249,57,249,152,252,79,114,235,171,63,34,223,242,97,249,17,249,33,185,79,62,42,63,44,63,44,63,42,247,200,143,201,71,228,111,202,93,242,253,114,112,183,252,101,185,252,97,249,171,242,131,242,223,253,170,124,72,126,81,30,144,175,153,120,74,126,74,222,39,95,241,148,124,207,213,111,127,138,94,126,85,254,142,252,37,57,43,159,146,59,222,249,187,242,154,117,175,191,243,73,57,244,11,95,144,155,242,79,202,207,202,207,200,187,46,249,188,28,123,221,213,141,167,228,110,249,139,251,229,7,229,97,249,123,242,3,114,228,103,238,149,79,200,189,242,203,242,181,119,124,66,214,63,243,164,251,27,242,236,147,82,13,78,199,59,94,46,204,65,175,145,185,235,4,184,32,251,213,73,201,191,39,240,87,244,171,227,18,92,115,92,230,153,72,166,192,237,85,39,101,250,50,252,61,46,211,62,112,65,219,26,218,214,80,84,163,85,246,50,91,118,45,184,230,168,204,193,73,66,204,57,42,83,44,237,246,170,99,50,83,182,13,101,219,144,213,54,142,203,212,183,109,213,192,53,167,101,62,36,6,180,0,215,52,229,38,113,70,130,59,212,108,54,155,201,128,166,54,106,182,13,31,219,80,131,106,90,13,66,205,25,4,215,156,146,121,26,26,145,74,61,8,18,252,124,131,16,153,48,181,70,166,204,165,227,70,130,154,50,31,109,54,157,137,225,201,88,65,13,164,145,121,38,71,99,17,114,171,39,101,8,174,113,251,213,94,143,9,2,174,217,235,229,201,207,69,248,130,41,71,253,97,143,194,252,165,24,161,94,207,11,6,210,182,199,152,26,209,175,118,123,224,14,57,3,122,198,51,78,26,64,45,21,70,166,90,15,98,109,144,227,88,153,144,247,8,92,143,192,85,8,110,196,224,70,85,112,69,59,184,162,0,87,205,3,174,83,5,23,187,83,230,138,81,7,127,254,74,140,196,26,116,140,16,250,243,212,244,67,126,89,193,165,19,90,77,208,234,22,180,30,67,235,189,24,104,231,35,174,95,66,27,18,132,163,49,14,253,138,121,74,186,97,39,48,138,128,81,4,140,254,97,0,227,150,192,128,54,217,104,172,121,40,159,41,104,98,71,119,175,151,219,138,97,178,4,97,217,231,101,2,127,247,122,70,141,196,206,106,112,205,44,54,219,171,246,123,153,78,166,193,189,78,29,145,233,48,230,204,74,16,160,147,67,50,141,48,185,203,131,58,207,164,25,47,79,229,203,133,129,70,38,214,9,26,185,58,66,174,134,99,97,28,144,189,202,201,60,35,167,178,0,20,40,8,198,122,50,5,202,56,155,123,178,192,68,119,164,10,2,243,171,127,246,43,127,38,198,140,154,74,235,106,16,60,7,103,170,211,175,150,131,0,207,68,119,244,171,149,72,143,94,37,250,85,130,243,90,32,122,203,67,16,80,7,5,194,36,121,114,3,136,94,229,164,10,127,196,176,131,20,14,250,149,131,132,238,87,34,82,56,76,247,54,155,205,123,70,98,9,8,155,8,147,157,82,96,91,144,175,35,50,236,246,210,58,254,206,120,105,16,66,0,117,19,221,145,103,2,134,65,63,49,4,15,236,28,80,14,8,136,250,149,96,22,177,219,67,60,235,184,102,140,72,181,229,6,18,127,79,200,84,68,50,12,153,84,169,199,205,70,58,44,71,238,128,151,155,3,47,204,138,36,77,91,249,56,28,244,230,16,189,1,145,108,11,139,202,153,128,122,242,128,228,22,145,66,201,170,208,136,48,13,16,152,13,226,12,14,52,175,105,158,100,118,21,17,80,153,5,42,19,99,206,160,30,84,109,255,87,230,98,180,217,25,4,156,146,70,141,197,62,82,90,155,181,156,23,143,198,146,86,154,129,145,216,3,77,171,82,129,54,87,140,196,45,78,131,179,76,230,56,38,229,4,198,135,177,158,228,102,243,47,159,120,90,108,16,98,53,205,60,201,244,218,43,83,97,150,39,221,153,28,142,3,144,230,18,28,171,122,216,206,151,4,200,205,177,238,92,52,33,47,154,112,193,69,35,82,137,195,222,214,84,48,28,215,202,229,216,106,17,219,211,220,158,94,168,61,26,203,211,114,56,166,249,127,74,38,171,162,8,135,237,192,139,193,247,113,59,47,14,200,84,17,190,98,56,246,64,224,220,140,64,16,218,88,175,95,37,56,239,112,152,113,136,131,100,85,8,68,15,93,176,152,146,204,135,94,76,183,135,45,153,15,85,200,140,244,88,129,100,174,178,48,215,28,124,49,237,61,105,219,59,88,105,79,23,195,230,134,243,50,45,28,7,236,96,255,139,233,224,49,219,193,254,178,131,88,134,34,4,137,91,6,254,98,155,17,178,242,126,149,168,65,8,144,74,150,96,195,177,68,138,69,50,108,205,236,94,37,186,148,144,26,91,8,114,228,12,177,34,150,68,203,19,228,6,225,24,61,26,203,226,117,134,220,35,35,38,226,100,186,87,137,37,142,0,221,171,156,225,88,128,162,225,192,63,146,186,1,153,122,33,88,102,92,174,212,211,146,25,61,206,16,220,215,131,144,54,122,63,89,21,86,214,92,224,12,26,145,42,102,212,56,160,67,114,64,23,50,13,92,150,252,164,93,198,53,53,56,223,255,112,153,51,8,151,193,218,60,141,45,219,9,97,109,234,27,145,70,122,16,252,43,72,134,16,55,56,131,230,253,205,35,184,16,150,33,163,59,47,39,50,105,126,255,252,172,176,203,232,188,28,137,151,242,102,11,33,174,243,90,42,65,101,34,166,149,163,32,52,167,62,61,43,146,219,68,72,107,69,226,82,217,116,7,232,60,211,155,4,15,100,138,123,78,176,45,213,32,140,108,100,130,86,138,118,168,197,45,177,3,10,106,57,80,105,133,165,85,8,17,254,70,224,227,44,240,33,166,185,162,128,254,141,247,164,2,46,75,53,172,101,113,8,251,187,10,183,25,1,184,65,21,29,98,155,70,180,218,4,141,93,235,24,25,46,182,130,221,26,181,133,132,7,185,45,21,92,65,54,82,9,53,18,5,244,6,33,82,31,52,245,64,152,128,111,17,106,16,66,50,111,71,136,90,37,54,167,236,130,1,119,189,58,33,7,112,35,36,57,108,6,127,235,253,106,63,254,122,253,106,31,254,6,173,205,154,198,122,175,151,167,53,35,82,220,47,112,176,130,33,145,14,227,160,161,180,171,105,3,5,97,122,173,40,137,59,83,241,180,178,120,194,159,4,132,57,35,202,119,167,91,143,39,69,181,220,141,32,204,35,210,146,74,152,231,90,229,94,160,71,202,21,215,203,93,146,203,223,5,194,124,169,85,126,175,44,203,127,90,86,203,63,110,203,239,150,32,80,122,46,74,205,182,30,15,201,42,32,7,177,224,35,170,5,73,171,224,11,109,45,239,82,92,225,28,10,129,59,212,14,53,77,255,88,126,157,182,179,191,72,239,168,164,231,251,127,110,254,244,156,220,86,155,211,243,190,111,149,105,127,95,73,177,12,148,189,170,87,5,89,151,51,8,93,56,137,66,35,83,3,175,66,110,178,20,103,83,221,56,105,140,146,180,145,233,144,145,233,143,27,153,190,222,200,244,149,70,166,87,26,153,246,26,153,174,49,50,93,101,100,186,194,200,116,189,145,233,18,35,83,185,0,110,255,63,253,31,150,110,16,162,43,195,147,186,227,122,126,80,171,135,113,87,119,178,100,233,178,229,43,46,185,116,229,170,93,242,33,57,35,31,148,211,59,222,183,253,189,143,203,176,100,254,166,139,119,147,93,200,138,189,220,252,193,71,102,197,122,65,19,67,154,217,86,162,134,84,246,134,227,159,194,57,166,144,129,212,144,198,200,170,145,15,33,15,79,38,193,51,114,36,254,73,228,226,179,42,237,198,223,195,42,77,240,247,144,74,151,128,15,218,68,57,87,89,110,171,112,89,176,101,83,91,118,61,8,8,251,213,30,220,184,80,208,35,169,10,66,226,72,93,70,53,236,171,165,70,229,248,22,209,151,233,229,44,162,238,107,206,138,126,117,24,229,83,213,175,14,225,239,140,206,25,238,196,128,88,175,103,116,54,60,116,94,222,55,228,252,68,76,85,102,144,179,130,48,187,85,158,121,201,85,32,54,136,25,141,136,152,171,17,85,177,65,124,64,243,10,58,41,243,44,192,78,116,158,213,215,43,187,152,254,74,230,25,182,243,57,157,91,122,9,16,87,138,135,244,245,178,15,31,205,30,157,103,17,21,199,147,236,122,181,75,167,195,160,193,75,214,115,95,132,24,229,15,48,228,114,147,56,164,162,207,17,116,95,64,168,64,152,207,235,124,189,20,3,18,27,220,175,16,226,22,4,71,84,14,216,65,54,50,128,34,141,57,166,114,208,235,181,224,212,255,165,242,172,14,94,81,187,64,232,253,186,5,103,19,159,71,6,244,94,101,225,27,65,188,84,14,190,101,213,194,252,37,195,113,165,236,187,158,210,223,161,121,16,22,24,155,111,169,28,2,236,147,32,252,91,149,35,173,143,203,178,203,247,235,77,226,119,72,20,185,82,54,245,245,226,171,138,186,100,132,255,111,149,195,48,21,221,32,190,170,210,171,113,52,104,212,190,166,8,107,194,114,191,206,161,94,166,246,210,251,63,106,189,7,177,94,254,182,26,208,51,26,112,52,255,90,209,104,80,217,131,136,73,153,58,128,176,153,191,107,189,7,143,158,246,22,36,39,242,131,128,97,132,46,250,108,117,193,44,225,5,243,1,92,48,73,110,118,125,100,86,20,155,153,9,114,179,179,186,128,158,255,112,251,2,10,134,227,55,219,5,84,231,5,228,225,106,240,202,5,20,224,2,186,209,46,138,101,118,81,44,183,139,98,5,212,241,88,150,115,149,229,101,21,181,57,222,178,224,154,195,42,43,109,21,104,91,115,151,218,178,43,109,217,85,102,73,234,67,96,244,72,92,167,106,235,114,76,53,146,81,227,24,145,60,32,141,136,182,86,8,177,148,9,241,176,37,196,209,15,207,138,43,133,184,190,32,196,236,135,43,132,56,244,225,57,156,100,243,197,57,201,27,23,36,196,98,56,137,103,212,120,252,83,70,68,255,190,2,124,192,192,63,36,65,14,157,120,230,254,239,252,214,159,252,197,175,127,187,13,190,55,92,28,190,49,219,231,106,219,103,143,237,115,205,188,240,121,56,80,55,216,42,153,173,242,114,91,165,151,170,172,180,85,46,50,80,224,161,240,252,239,141,136,254,67,5,37,159,81,154,193,241,208,185,249,232,238,89,209,43,68,63,209,127,119,43,81,224,55,114,113,252,134,23,143,223,235,109,149,117,182,202,21,182,202,149,139,199,239,63,24,17,189,165,130,159,199,248,61,136,248,57,185,57,251,161,202,124,59,243,161,118,252,130,225,120,168,29,191,249,22,154,185,0,126,115,23,218,66,171,198,163,85,163,198,227,183,160,100,105,68,116,127,149,93,68,12,245,3,124,212,49,71,62,84,25,149,195,31,154,179,42,94,119,241,81,121,237,75,88,21,175,176,101,127,196,150,125,37,175,138,183,24,17,253,244,92,18,223,111,73,124,230,145,10,137,159,121,100,206,20,122,205,197,129,189,126,81,194,0,77,161,77,23,196,111,254,41,52,31,126,122,52,254,105,35,162,159,169,224,231,48,126,59,17,191,175,253,175,255,227,59,94,21,155,141,23,199,102,96,81,164,39,108,250,47,72,128,69,45,136,159,49,34,250,217,185,83,235,62,59,181,206,125,176,50,181,206,124,112,206,206,115,173,197,79,47,188,32,174,89,8,63,19,209,177,109,129,221,231,234,5,153,154,94,196,238,35,83,141,251,205,104,252,179,70,68,219,42,120,198,140,231,251,17,79,55,55,79,124,176,178,177,28,152,139,103,223,197,119,216,43,23,191,195,190,234,135,178,195,198,197,14,43,23,218,97,127,174,130,120,200,136,223,139,136,251,185,249,206,174,202,0,159,221,53,7,241,43,46,62,192,151,47,136,248,130,131,251,163,11,34,190,152,193,13,83,191,53,192,63,19,218,179,56,114,203,221,85,110,217,205,24,79,51,194,31,221,85,25,233,93,187,230,48,203,87,94,124,197,254,200,226,183,176,87,44,106,197,122,56,154,235,46,184,171,175,179,85,174,184,232,34,119,198,157,65,170,210,151,99,170,53,49,108,217,75,108,217,216,182,17,132,208,101,106,99,241,207,226,79,35,13,97,169,169,229,105,29,150,174,23,50,189,161,109,46,217,115,222,14,62,230,253,250,7,42,148,125,252,3,115,40,155,93,156,178,233,226,41,11,139,167,236,218,11,202,19,255,250,148,253,143,243,81,118,44,250,249,185,236,233,125,204,157,190,249,112,133,178,167,30,158,67,217,203,46,78,217,53,139,223,51,123,126,120,123,230,77,70,68,55,207,101,66,219,121,73,62,250,112,85,170,156,139,222,170,139,163,183,114,241,155,232,165,63,188,77,244,102,35,162,91,230,158,98,222,203,135,152,99,15,181,31,98,142,60,84,25,205,195,15,181,163,235,15,199,43,44,186,222,188,232,250,136,238,242,5,209,245,230,65,215,71,116,151,45,136,174,183,32,186,11,104,80,246,89,13,202,94,5,30,30,153,85,206,234,141,67,42,94,10,194,124,204,42,62,254,79,85,42,46,240,216,77,234,134,99,42,47,213,11,143,200,28,107,253,142,42,53,154,224,225,73,191,80,106,130,174,234,61,190,170,88,183,201,122,9,106,228,46,16,235,17,188,55,152,165,188,19,224,14,208,206,251,235,60,18,239,97,202,31,168,142,196,254,118,202,15,199,9,211,125,94,170,47,36,194,212,83,63,250,128,156,59,244,239,230,161,63,59,211,62,244,207,204,84,23,242,204,156,161,239,186,248,208,199,139,26,250,133,198,252,98,227,24,45,98,28,191,212,62,142,123,101,117,28,63,45,231,25,199,199,219,199,113,183,180,3,57,90,29,72,35,162,135,170,148,93,198,148,189,7,164,233,206,205,87,102,42,60,35,200,205,193,42,101,15,116,80,86,15,199,245,234,224,118,72,49,11,138,47,70,142,198,63,111,68,116,211,92,105,226,93,204,186,62,84,237,118,102,166,99,70,5,23,157,81,11,140,204,181,60,48,125,115,52,148,215,150,10,202,62,214,79,70,63,176,126,178,175,170,158,68,136,63,162,126,80,253,228,110,85,42,40,187,22,175,160,188,127,81,10,202,174,255,183,20,148,187,213,191,190,134,242,170,255,175,52,148,247,207,163,161,188,111,30,190,182,141,249,218,137,7,219,249,218,177,7,43,203,224,200,131,29,203,192,93,120,25,144,252,190,208,82,8,141,28,143,111,65,158,0,33,237,177,109,74,144,149,12,209,47,50,68,143,87,33,8,114,243,88,53,189,175,19,34,253,18,88,253,202,212,143,30,168,2,144,48,0,83,220,225,179,15,84,58,60,251,64,71,135,242,37,112,130,46,83,219,226,12,154,196,158,114,234,235,5,29,108,22,185,218,223,204,77,68,59,66,26,88,125,72,153,163,47,204,10,115,57,23,55,199,239,157,21,102,215,131,179,34,249,143,98,46,114,119,91,145,165,138,220,225,118,228,200,192,103,225,35,226,194,216,57,155,169,234,2,200,232,185,108,107,123,244,158,16,234,189,66,224,193,244,221,220,107,170,213,32,89,102,66,0,1,61,108,233,201,188,164,59,243,81,54,55,78,99,131,16,70,79,80,66,128,151,124,69,174,14,145,7,245,171,128,127,28,208,224,247,43,17,145,109,194,82,227,230,169,7,93,198,109,164,17,25,2,49,252,62,95,137,233,65,44,61,82,160,108,166,113,79,158,194,166,111,232,201,124,8,192,135,96,172,39,41,110,171,124,236,202,31,143,53,99,157,133,160,243,52,86,211,40,97,54,178,58,68,80,135,104,172,39,171,27,137,109,106,240,71,157,65,136,193,179,220,39,50,178,145,70,40,225,230,145,10,141,48,194,60,219,156,21,201,173,34,196,82,80,79,14,201,213,80,31,142,21,54,69,69,161,158,135,169,7,26,234,56,32,193,24,25,207,16,233,235,32,174,67,32,70,110,140,37,212,159,0,159,236,160,210,97,24,249,98,170,163,247,218,45,33,213,229,28,64,132,205,106,158,7,162,101,217,33,205,202,220,156,252,116,133,1,36,185,57,254,233,246,229,119,180,154,158,45,19,164,94,82,100,127,49,244,201,102,179,185,95,15,40,7,20,200,126,37,230,232,160,176,234,242,77,34,0,105,246,254,29,206,145,194,0,12,52,86,112,64,27,93,14,28,77,149,116,152,113,29,142,223,23,189,27,17,10,114,211,4,158,25,176,165,39,153,230,17,53,162,95,205,18,71,238,85,17,79,61,124,12,178,24,231,159,34,163,42,136,156,193,146,254,108,97,128,195,144,122,213,253,118,151,230,73,59,163,89,124,98,18,38,198,8,154,60,62,66,181,87,181,38,176,178,99,1,122,196,153,182,28,65,39,239,109,63,38,186,160,67,136,115,54,98,16,156,103,100,158,105,2,58,48,178,145,5,52,170,36,50,13,219,202,26,167,193,123,32,76,86,225,34,161,94,112,42,37,171,66,168,199,247,68,219,105,38,154,217,247,207,138,228,22,17,154,243,205,167,133,185,220,28,123,96,86,36,219,91,233,231,59,210,79,62,216,158,62,105,211,243,238,219,239,45,139,237,157,105,175,118,120,166,90,237,176,90,128,11,237,126,200,114,33,91,173,249,80,123,51,231,58,154,125,252,161,23,213,108,243,225,246,102,207,117,52,123,186,35,125,188,35,125,248,225,142,110,59,210,251,58,210,187,62,208,65,212,142,247,103,59,211,29,229,79,117,164,143,117,164,15,119,190,223,213,241,190,35,253,120,71,122,95,71,122,239,7,219,211,51,29,233,231,58,202,159,236,120,127,180,35,125,168,35,189,231,145,246,244,206,142,244,179,29,229,143,116,188,127,178,35,253,88,71,122,215,135,58,232,221,241,254,108,71,250,100,71,249,163,29,233,230,238,142,105,215,241,254,80,199,251,3,29,233,189,29,233,153,15,119,208,179,227,253,153,142,244,169,142,242,199,58,210,7,63,210,158,222,223,145,222,253,145,11,44,210,241,214,180,239,168,118,188,72,63,142,139,230,229,230,201,251,138,102,152,79,153,149,57,120,70,93,76,203,21,166,1,157,88,234,200,52,175,105,59,153,255,187,151,34,187,216,6,172,113,149,23,141,93,72,142,57,251,97,94,234,37,204,235,16,102,253,34,96,230,147,150,9,72,38,233,56,28,115,99,124,64,254,105,174,201,70,117,194,4,23,43,72,162,95,193,158,102,116,11,230,25,109,97,222,91,194,124,193,98,7,202,98,235,245,172,74,199,77,80,80,54,186,242,223,20,190,71,119,191,40,124,79,238,110,195,247,141,198,175,204,164,55,21,24,123,56,43,131,206,89,57,171,210,160,19,115,35,162,43,94,202,92,38,226,156,144,140,243,241,57,38,92,16,14,95,72,138,93,224,0,174,80,16,33,76,80,154,160,179,125,166,109,55,120,188,207,234,236,158,66,103,252,204,219,36,250,192,51,254,230,216,30,122,135,36,159,112,165,237,241,200,71,177,115,234,84,219,1,162,65,41,196,28,211,151,219,241,154,177,250,27,82,167,38,189,224,155,229,224,37,239,64,248,14,161,160,18,204,164,35,208,2,19,101,67,47,4,61,76,246,211,218,200,70,65,11,242,68,56,46,121,153,255,104,164,67,224,202,246,24,57,67,7,235,161,224,129,161,230,247,245,125,216,226,189,219,239,219,57,160,118,105,44,250,146,244,21,60,213,142,203,82,73,85,168,15,14,171,1,150,196,168,95,158,167,255,73,205,213,93,237,103,189,70,155,238,234,227,212,41,43,162,50,62,136,155,207,104,60,52,23,7,250,95,210,88,171,162,194,98,77,215,7,117,169,206,18,31,208,204,146,246,170,18,32,249,8,246,62,75,32,127,84,183,14,228,199,219,14,228,71,233,253,167,90,239,65,172,23,31,208,200,220,24,141,130,146,195,136,97,200,245,135,90,149,75,91,77,85,53,208,44,168,105,156,201,228,62,105,68,250,163,56,211,66,182,40,229,210,165,122,238,52,229,28,173,228,156,161,156,227,173,28,158,27,3,250,70,19,165,254,144,72,71,136,21,203,104,249,191,41,174,179,239,67,47,138,235,60,110,139,25,175,197,109,152,3,69,55,188,4,124,139,51,188,83,105,141,206,241,35,47,101,43,180,173,68,206,133,182,192,19,143,180,109,129,115,239,131,47,192,32,215,44,92,203,136,48,141,22,170,26,22,187,179,17,209,181,47,105,121,135,206,160,233,110,223,233,137,181,68,175,91,124,115,162,179,37,35,162,215,94,136,100,167,118,149,36,123,73,128,119,205,7,248,166,151,2,120,215,28,192,95,125,33,192,159,255,192,15,36,238,240,228,156,239,50,114,243,75,212,42,35,53,226,249,168,209,255,82,168,17,207,161,198,117,23,162,198,190,127,45,106,188,233,7,160,70,56,31,53,174,126,41,212,8,231,80,227,170,11,81,227,216,195,29,124,32,202,105,3,127,113,226,187,89,86,229,88,8,115,223,75,32,1,182,82,194,43,67,18,86,215,95,16,232,153,18,104,201,234,21,228,249,29,234,149,159,197,61,120,175,50,14,233,225,54,136,79,240,102,201,202,150,5,26,126,238,193,197,52,60,26,75,210,58,83,227,97,122,45,73,142,23,108,255,204,28,5,234,154,212,55,107,88,145,181,132,117,102,167,238,171,92,89,37,185,57,113,95,187,206,236,88,53,125,164,76,68,93,149,86,47,227,22,19,144,102,69,110,190,91,173,145,228,230,92,71,139,103,170,233,211,247,205,171,182,93,140,74,218,92,150,250,209,234,214,65,121,167,61,49,118,106,141,187,185,251,189,59,43,221,239,46,19,180,218,248,110,191,212,29,95,224,106,191,216,176,174,179,208,244,91,104,134,22,190,218,87,47,225,106,127,192,150,221,104,203,154,66,241,110,68,148,182,206,218,59,59,206,226,29,233,217,57,36,89,145,250,102,5,147,165,11,164,137,115,243,87,59,219,71,233,100,53,125,188,76,68,225,220,123,236,152,107,252,253,206,138,246,245,111,118,206,49,218,210,23,55,218,114,22,190,245,92,200,104,203,181,85,94,109,171,108,178,85,94,63,175,209,22,89,164,121,182,202,6,91,229,122,91,229,199,169,202,58,91,229,34,150,54,166,94,218,121,57,227,49,73,34,100,231,21,165,45,230,214,135,226,138,243,98,132,156,48,245,162,181,45,221,78,199,248,53,239,239,208,165,116,164,247,223,223,57,190,149,117,238,242,58,63,122,127,251,58,159,189,191,125,188,15,85,211,7,203,68,164,170,235,60,245,139,181,238,240,90,255,230,253,237,107,253,84,71,171,39,170,233,99,173,86,171,55,86,203,83,191,234,233,153,228,230,95,238,111,191,70,255,199,106,43,255,179,76,132,76,183,75,170,120,183,148,244,43,115,243,177,7,218,113,254,224,3,237,208,221,95,77,191,112,255,252,183,99,139,188,65,234,60,64,232,14,27,6,181,24,91,20,213,110,139,210,102,195,240,194,124,54,12,187,84,155,13,195,185,194,134,97,132,102,132,136,234,97,69,227,250,192,139,82,84,63,254,128,221,164,194,100,21,30,147,241,216,141,227,103,119,253,144,174,21,146,226,46,202,234,31,134,135,96,230,139,89,48,76,231,131,24,37,149,192,248,141,204,51,2,60,8,54,247,164,93,160,141,206,205,246,9,208,141,116,41,110,197,116,191,161,109,188,135,250,108,22,147,119,41,133,184,104,66,58,202,177,46,210,145,182,110,234,102,230,171,236,106,106,84,163,75,11,169,186,66,186,17,201,34,8,198,98,29,133,54,25,98,82,86,147,91,226,58,104,8,243,43,132,72,195,74,131,231,100,163,139,2,184,40,17,66,108,186,115,115,94,78,24,53,14,161,25,124,211,100,28,226,174,30,154,115,130,243,251,182,196,117,196,46,52,31,154,126,67,92,195,35,199,40,114,251,60,171,23,93,212,177,11,243,212,244,27,98,58,167,162,240,71,224,109,137,67,208,16,217,183,111,140,21,163,122,90,164,163,81,16,118,194,6,117,115,90,142,58,248,251,247,180,253,196,102,45,131,16,141,197,10,98,179,99,194,220,57,90,2,169,17,164,155,39,204,254,233,209,184,206,32,239,159,126,83,92,99,88,17,152,32,100,56,9,146,160,2,201,27,98,210,255,84,51,106,214,165,214,35,207,103,88,10,94,195,232,137,97,103,16,60,232,218,18,75,205,3,151,213,123,149,48,205,123,223,191,243,158,137,88,65,221,56,121,91,70,23,45,159,204,27,143,69,136,93,180,174,174,60,4,66,216,102,176,87,113,67,44,113,230,64,192,3,230,141,98,29,21,146,143,163,160,43,69,186,69,68,130,143,68,181,144,105,55,43,210,209,176,152,40,145,162,209,160,18,97,97,62,0,2,52,139,136,224,61,1,35,48,186,115,231,128,58,162,248,246,109,183,6,49,36,201,100,129,111,29,213,203,133,233,107,100,146,124,102,137,21,152,40,79,29,53,13,218,36,56,235,40,8,132,54,75,114,186,26,245,65,154,229,57,138,114,2,36,56,253,42,97,175,242,8,216,172,185,95,5,32,135,212,128,90,199,249,107,64,154,51,191,131,178,235,74,96,203,246,126,5,160,204,206,123,103,153,129,37,47,35,31,112,108,49,226,22,177,1,201,13,72,110,224,201,11,55,128,213,251,242,117,130,184,217,126,18,42,119,235,156,226,92,88,45,202,140,38,29,145,50,43,44,167,122,71,121,81,71,60,141,92,210,249,30,243,130,199,85,203,38,204,209,127,156,21,102,128,219,50,251,232,213,183,237,43,60,173,179,158,38,213,225,144,96,53,202,193,150,198,232,64,235,113,127,155,242,168,208,175,148,202,163,40,100,11,32,70,167,165,56,162,156,189,149,156,51,148,179,191,146,115,136,115,42,202,165,89,202,57,80,201,57,74,57,7,219,213,77,72,168,227,178,37,114,31,148,120,164,111,233,158,144,31,134,233,104,41,9,224,195,134,200,9,89,92,11,211,117,63,0,190,151,99,205,141,157,232,14,54,58,176,61,42,58,177,93,217,137,44,116,226,218,187,0,170,125,45,76,19,82,1,32,159,103,166,63,210,58,238,165,1,13,235,107,240,207,143,225,159,215,82,250,117,72,138,45,248,52,136,79,55,226,159,55,135,124,167,126,78,129,130,171,55,137,39,52,40,88,210,175,142,74,80,230,57,149,147,193,3,40,243,108,235,241,180,202,97,128,31,79,169,28,54,242,227,73,149,131,225,199,19,42,135,235,248,241,184,202,161,159,31,143,169,28,134,248,241,168,202,97,3,63,30,81,57,92,207,143,179,42,135,31,231,199,195,42,135,87,243,35,10,109,155,248,241,73,149,195,235,249,241,160,202,225,21,252,248,184,202,225,71,248,241,128,202,225,149,252,248,152,202,97,29,63,226,2,187,130,31,247,169,28,174,228,71,60,203,101,252,184,71,229,240,114,126,220,173,114,232,229,199,93,42,135,213,252,56,163,114,232,225,199,157,42,135,53,252,216,84,57,4,252,248,188,204,225,18,126,68,121,32,182,52,147,57,92,202,143,231,100,14,43,249,241,172,204,97,21,63,226,58,88,198,143,207,200,28,150,91,250,202,28,86,88,250,202,28,192,210,87,230,144,90,250,202,28,214,91,250,202,28,186,45,125,101,14,9,63,254,137,206,225,114,142,147,240,144,206,225,71,233,17,60,210,16,43,243,7,116,12,63,42,104,114,81,161,223,163,156,193,70,153,241,91,148,177,177,85,226,75,154,108,213,250,56,245,95,56,149,112,234,27,84,120,101,171,240,127,163,12,104,101,252,15,202,232,45,51,224,13,3,2,33,249,60,229,159,169,64,242,73,202,57,93,201,249,8,229,156,172,228,60,204,189,223,200,41,226,158,143,200,220,218,193,40,16,87,202,93,242,122,122,71,235,236,5,81,200,115,202,44,203,217,122,184,4,68,172,215,119,13,136,16,148,201,114,182,79,173,182,243,184,188,94,32,235,126,121,14,163,220,0,173,246,79,203,86,139,215,228,108,199,90,66,119,57,1,183,91,114,251,87,109,18,255,128,152,206,56,57,243,189,178,92,147,114,78,87,114,158,99,76,43,57,231,116,97,33,72,201,221,78,14,17,15,235,47,83,237,163,149,178,159,163,156,217,74,206,39,40,231,80,37,231,195,14,181,119,208,182,247,53,98,76,143,168,118,218,169,235,197,32,40,243,159,69,14,35,92,142,239,2,94,168,96,253,167,148,243,92,165,233,175,11,106,250,156,197,251,154,77,226,87,16,239,179,42,55,180,171,41,220,33,159,65,38,115,227,128,62,36,65,193,155,41,62,132,130,55,14,232,3,248,59,62,160,247,227,239,181,155,196,227,200,132,126,108,147,248,85,108,98,175,204,225,53,12,222,155,200,0,88,153,25,153,195,107,57,107,243,128,110,18,171,18,57,188,142,179,198,6,244,93,184,184,68,14,131,156,115,195,128,190,25,73,174,115,20,56,48,71,247,171,231,17,152,45,3,122,86,242,81,66,66,205,158,35,30,160,28,7,229,8,220,103,95,197,207,175,194,87,171,104,179,208,20,57,202,236,150,57,188,44,153,6,183,87,237,145,41,199,146,146,208,7,47,75,14,81,220,31,115,136,100,45,142,11,243,164,131,149,93,115,216,201,51,5,47,227,104,82,162,95,29,114,56,28,207,147,14,7,147,66,114,237,245,18,145,9,243,143,31,155,21,198,231,202,160,176,251,79,163,192,240,28,102,59,20,156,203,1,215,28,165,78,146,79,203,68,100,202,252,245,158,226,229,94,108,108,191,182,47,113,21,226,43,4,225,49,202,4,215,60,94,121,251,237,61,220,25,98,199,111,15,85,222,254,33,190,117,17,252,226,237,145,242,173,107,142,211,51,5,196,59,202,143,50,145,169,71,1,112,144,172,209,29,121,90,211,40,152,106,138,205,83,132,221,73,220,68,23,81,87,164,137,114,28,3,142,185,164,204,191,96,143,221,9,128,151,56,56,228,136,180,7,174,57,81,0,112,170,2,222,35,31,179,168,157,46,222,158,169,188,253,4,190,13,192,53,103,139,183,207,86,222,126,14,223,34,232,207,21,111,155,78,235,237,175,124,204,34,190,211,177,111,119,85,222,126,25,223,246,224,84,40,222,238,173,188,253,35,124,219,13,174,217,87,188,125,172,242,246,47,240,237,74,112,205,129,226,237,193,242,173,48,207,227,219,229,9,128,74,156,68,100,210,124,247,35,22,137,207,184,184,94,147,143,35,225,113,33,72,243,2,190,234,2,215,124,214,205,147,123,40,108,152,196,147,178,219,171,118,201,84,71,17,31,7,155,28,18,168,43,164,96,133,54,140,28,96,51,47,56,121,242,86,44,222,180,65,140,118,98,181,16,231,250,238,143,207,10,179,52,1,144,8,71,138,160,125,30,179,86,20,89,153,52,159,250,40,143,205,6,241,191,29,132,75,152,175,96,145,75,42,181,92,90,160,174,57,167,242,228,39,176,135,237,28,240,233,30,138,193,244,57,106,32,1,208,137,3,194,252,49,214,142,218,106,159,163,218,207,21,181,167,82,61,55,96,11,190,184,139,66,192,117,54,248,23,216,96,216,134,196,51,152,85,175,246,177,65,156,116,140,108,116,249,54,134,9,9,249,247,201,241,120,121,180,34,52,143,236,225,242,145,31,146,211,167,137,19,136,188,208,188,127,15,195,26,185,33,57,189,210,179,19,154,127,68,8,150,36,16,233,208,124,19,159,147,4,240,168,116,18,159,107,9,224,97,253,216,71,185,124,152,42,144,102,47,182,212,197,35,14,210,124,1,147,203,193,53,127,225,180,198,27,121,154,52,191,141,175,98,112,205,127,117,236,120,191,157,135,237,14,90,71,8,115,20,197,56,122,223,250,56,247,92,161,228,105,162,100,83,91,74,222,206,227,112,115,172,230,146,237,251,115,104,68,91,129,75,26,112,170,253,115,105,91,53,69,213,102,30,197,153,218,70,237,221,143,118,192,33,204,254,71,153,64,149,172,95,123,212,46,249,86,127,199,169,191,131,197,184,255,36,67,123,35,233,164,218,160,173,44,144,67,170,32,152,48,179,216,228,178,182,38,143,82,147,179,69,147,111,228,38,111,32,229,217,66,77,30,173,52,249,167,143,118,172,8,23,69,126,23,69,93,110,241,245,220,226,32,41,249,22,106,241,100,165,197,191,233,36,133,139,114,134,139,130,54,183,248,26,110,113,99,236,93,160,197,51,149,22,255,169,66,73,112,77,95,78,235,180,100,226,199,165,157,55,125,60,111,174,237,156,55,247,239,237,88,191,194,124,106,175,157,158,220,100,111,71,147,231,138,38,123,185,201,43,58,155,252,229,182,38,219,184,198,247,44,215,120,10,139,92,90,41,82,226,118,186,194,243,160,141,229,125,179,96,121,192,253,174,75,53,5,18,68,217,175,197,224,158,114,45,131,91,201,165,214,112,41,97,254,124,111,117,126,100,210,28,219,195,13,111,16,207,91,168,254,231,92,90,156,199,172,53,109,3,150,96,119,187,139,117,177,156,7,44,137,253,185,171,234,83,159,176,156,189,232,242,191,238,225,13,168,87,29,67,202,158,168,236,2,95,174,148,5,215,4,29,68,223,173,44,242,1,163,21,117,18,253,63,99,125,104,131,253,175,49,107,101,91,214,247,48,43,109,203,218,247,201,57,21,15,127,178,53,1,108,214,31,97,214,170,246,230,63,89,197,142,178,254,249,147,115,154,223,251,169,86,243,20,168,208,105,23,146,142,84,4,167,89,155,183,79,183,242,246,106,206,59,80,201,123,204,230,61,89,201,59,104,243,102,43,121,135,57,175,87,29,165,49,58,174,41,186,166,57,86,41,114,212,86,59,89,201,59,97,243,158,169,228,157,182,121,231,42,121,103,109,222,243,149,188,231,108,222,76,5,173,157,22,173,61,149,188,221,54,111,127,37,111,159,205,123,188,146,119,192,230,29,175,228,29,163,60,199,236,148,91,156,65,112,146,90,72,193,2,215,98,238,203,156,65,232,227,42,7,61,148,93,69,55,135,249,59,107,195,252,217,89,83,195,69,193,143,65,84,43,30,253,40,40,30,189,200,47,30,221,200,43,30,157,200,45,30,53,199,243,245,250,213,113,89,232,163,136,223,152,103,49,113,240,251,86,109,205,165,201,102,7,31,55,199,184,219,34,204,194,34,32,48,65,113,156,247,122,173,134,246,122,185,217,249,253,89,97,142,23,13,81,124,83,103,16,106,132,30,200,39,32,226,160,173,186,19,128,61,88,111,214,214,251,181,181,42,152,150,59,22,29,231,76,152,239,50,120,230,143,207,191,119,11,249,223,134,121,38,204,61,19,169,54,199,62,241,52,197,145,12,134,99,215,8,208,141,84,169,105,124,48,77,53,22,139,213,102,45,104,115,254,252,121,127,60,22,171,65,27,15,132,9,182,189,45,19,141,109,70,78,128,48,114,170,97,94,155,135,153,111,212,148,57,248,241,167,69,78,7,147,88,26,145,138,72,89,173,179,57,106,251,145,38,161,254,205,61,88,57,28,235,201,180,209,219,50,181,45,19,86,19,172,205,113,46,187,57,14,64,196,178,4,81,176,199,161,0,209,152,120,123,91,111,78,175,114,176,65,221,72,37,56,189,42,201,40,172,174,195,23,124,169,8,65,80,8,85,81,150,203,60,144,99,169,11,30,178,218,30,92,223,224,224,3,221,27,38,153,114,166,65,185,32,184,129,208,70,86,116,146,141,32,77,50,22,107,32,239,140,73,118,175,113,242,12,89,152,156,100,23,14,157,179,191,135,197,34,115,99,21,173,166,192,202,102,250,110,164,153,66,226,235,169,76,155,163,143,90,4,148,9,242,204,37,84,64,155,89,204,206,244,40,162,128,179,41,194,78,250,85,128,242,23,210,17,164,217,1,226,93,19,20,102,148,172,34,167,176,69,234,95,80,243,140,41,67,228,118,135,106,208,40,80,102,237,68,166,166,50,199,8,112,26,147,88,114,106,34,43,232,153,41,108,197,109,129,36,72,195,206,32,185,22,36,151,65,114,17,36,119,46,72,202,130,36,74,226,8,208,121,230,2,181,45,145,236,5,80,2,100,142,13,180,200,36,135,227,75,65,154,123,38,184,175,84,152,147,252,134,38,100,49,125,180,161,80,77,219,166,50,57,193,122,229,10,8,128,157,10,16,33,141,167,34,37,55,135,173,85,28,139,149,180,134,65,116,41,50,149,139,116,228,25,100,176,216,145,59,167,35,23,188,162,35,183,232,200,237,232,200,181,29,241,140,168,12,143,211,62,60,209,165,120,208,65,138,173,2,223,200,109,13,179,118,194,8,240,205,218,209,158,169,212,213,54,52,44,78,219,204,3,61,22,11,60,145,226,252,85,91,98,1,50,117,192,203,84,44,40,66,171,76,69,68,241,99,105,218,102,30,8,158,224,230,178,109,198,153,200,77,194,107,115,180,7,95,244,224,233,223,200,169,212,5,73,211,91,128,51,57,76,177,94,29,8,140,2,127,202,206,142,201,9,92,123,122,222,181,71,139,107,56,150,33,46,47,112,138,37,134,163,189,5,164,133,116,108,34,163,181,229,33,97,122,56,240,117,146,73,103,26,228,220,69,54,28,139,22,15,200,196,102,138,196,171,27,91,38,98,65,43,80,225,10,84,157,43,16,79,167,197,10,84,57,251,81,41,226,97,18,115,146,235,241,80,83,206,53,208,91,98,109,78,20,125,128,30,143,3,162,160,54,95,110,226,8,153,100,219,32,50,171,233,145,204,37,123,143,100,42,115,134,227,110,115,250,19,79,19,25,76,179,185,125,2,220,158,204,165,172,94,37,242,76,224,124,126,6,11,60,83,118,36,56,118,48,190,57,101,51,213,112,236,152,131,143,62,45,82,193,60,137,202,81,236,241,28,28,107,85,16,16,57,112,191,82,149,169,218,177,18,20,77,80,53,103,130,170,214,74,80,28,171,57,224,185,31,181,162,18,43,94,189,224,96,233,11,76,80,220,159,131,188,59,44,87,137,160,48,220,186,145,41,211,189,217,25,164,124,210,151,17,121,141,189,15,146,101,123,20,64,89,182,38,188,228,113,160,33,162,202,204,37,144,25,32,48,85,6,161,184,45,59,208,236,241,214,29,154,179,229,134,128,224,142,79,198,46,238,246,162,151,241,26,159,140,145,2,206,88,44,185,104,171,60,16,126,52,26,200,198,242,84,218,113,176,206,143,52,12,98,212,146,211,198,22,230,150,113,138,151,131,70,65,136,121,224,182,56,182,154,147,227,76,167,200,187,88,153,99,170,211,152,51,159,59,65,156,195,244,54,104,154,32,36,37,166,78,110,122,251,149,99,206,32,176,205,102,147,238,253,20,120,6,26,56,246,65,3,7,4,231,125,62,214,147,73,211,131,101,17,148,245,164,191,34,131,132,67,156,28,160,11,195,218,128,10,204,147,143,98,127,216,51,22,101,24,176,148,189,221,19,230,240,163,197,104,73,179,38,231,185,104,232,186,68,24,154,3,30,121,87,74,80,35,49,50,82,26,194,29,19,253,236,209,8,170,145,137,114,197,241,160,155,38,7,50,6,145,92,31,145,92,84,206,92,89,153,185,142,65,113,26,103,174,192,153,43,171,51,23,121,16,129,20,166,194,78,210,34,244,184,157,192,196,97,3,26,112,66,138,125,8,113,52,17,148,22,87,144,204,23,220,70,170,139,149,7,116,239,45,139,153,60,18,107,14,249,175,140,158,48,114,52,118,233,75,14,247,224,166,200,152,200,100,35,223,155,70,150,159,22,161,183,201,145,213,71,145,49,2,15,252,202,70,88,96,137,219,161,209,219,90,59,34,69,105,166,197,64,177,255,35,215,78,14,183,152,28,5,59,162,213,104,85,173,118,201,80,184,114,23,60,68,145,106,149,188,68,152,238,156,216,173,9,26,115,26,114,243,140,150,127,35,199,189,220,225,161,118,26,192,43,145,230,212,60,51,47,242,66,158,172,200,117,51,89,112,174,86,151,8,32,243,215,82,234,169,236,248,38,200,83,133,109,156,44,177,35,190,112,124,33,236,16,181,156,102,80,164,120,193,210,184,146,152,13,202,206,56,23,180,45,173,177,180,38,55,89,59,74,46,232,228,122,254,0,192,188,156,82,26,137,224,205,203,41,37,168,130,83,226,240,184,236,55,109,5,28,193,63,186,95,5,37,23,60,135,184,156,95,139,104,205,183,194,142,225,162,66,16,104,48,48,113,212,38,142,86,223,156,194,196,113,155,56,94,45,246,12,38,78,218,196,201,106,177,179,152,56,109,19,167,171,197,158,197,196,25,155,56,83,45,246,60,38,206,217,196,185,106,177,157,123,159,22,230,57,155,120,174,90,172,228,11,102,23,150,105,238,229,236,102,181,194,76,245,205,30,76,204,216,196,238,106,98,31,38,118,219,196,222,106,226,49,76,236,181,137,253,213,196,227,152,216,111,19,7,170,137,39,49,113,192,38,14,86,19,135,49,113,208,38,14,85,19,71,48,113,200,38,102,171,137,99,152,152,181,137,19,152,56,106,19,71,171,111,78,97,226,184,77,28,175,22,123,6,19,39,109,226,100,181,216,89,76,156,182,137,211,213,98,207,98,226,140,77,156,169,22,123,30,19,231,108,226,92,181,216,78,156,113,207,217,196,115,213,98,187,104,213,126,194,142,79,181,216,30,76,204,216,55,51,213,98,251,48,177,219,38,118,87,139,61,134,137,189,54,177,183,90,236,113,76,236,183,137,253,213,98,79,98,226,128,77,28,168,22,59,140,137,131,54,113,176,90,236,8,38,14,217,196,161,106,177,214,102,57,91,45,179,200,157,19,229,105,85,149,237,54,199,226,7,100,104,221,33,168,238,78,142,198,187,143,87,228,235,50,159,128,32,126,17,126,118,133,90,54,45,119,176,245,79,157,172,127,104,43,177,159,60,153,230,243,121,175,114,236,151,31,84,172,204,254,61,79,211,7,31,20,155,6,211,119,30,28,62,152,10,220,21,235,38,200,193,73,166,161,222,171,162,84,225,79,144,209,110,152,28,146,248,30,1,91,9,117,220,53,151,67,29,138,15,209,212,77,146,131,72,122,177,194,202,212,193,159,36,13,67,35,201,252,148,142,235,70,166,1,138,65,12,30,49,230,76,179,59,147,111,206,61,103,191,197,224,129,110,37,244,22,138,236,224,141,196,10,107,219,207,30,208,145,70,165,46,121,195,225,46,67,66,160,219,72,3,171,21,0,109,106,230,232,97,14,246,64,242,52,139,137,16,140,100,26,79,38,210,8,208,61,160,242,148,92,8,101,158,249,166,134,2,9,193,43,40,56,125,1,179,215,6,179,206,179,218,28,152,187,160,214,74,212,232,243,17,208,197,48,123,237,48,235,118,152,117,131,140,83,8,230,218,60,48,215,192,131,218,72,38,17,230,154,17,32,231,131,89,209,38,133,27,203,88,38,122,50,109,234,99,244,49,16,15,68,79,22,208,150,8,1,171,104,8,182,128,97,181,223,95,192,231,20,101,19,141,199,48,148,211,92,196,66,66,141,62,17,197,159,54,146,121,234,66,13,127,106,197,199,32,88,120,69,73,141,190,253,145,197,120,184,99,234,33,213,200,73,83,15,130,194,211,71,65,51,171,50,146,102,250,110,16,13,83,203,51,151,242,77,64,148,109,100,158,169,109,161,175,91,149,212,116,193,171,204,13,222,144,61,146,173,232,131,23,182,55,31,172,107,87,141,62,184,132,116,37,64,248,123,66,53,115,210,210,21,60,83,51,103,58,136,236,161,144,53,146,41,36,178,103,4,168,30,224,239,115,248,16,140,198,50,12,59,208,242,90,104,117,45,128,86,173,133,150,151,55,50,151,209,170,78,146,54,28,55,19,90,181,121,209,242,16,173,46,70,203,171,160,85,171,162,229,206,131,150,11,110,137,150,59,31,90,16,208,76,49,181,52,50,53,92,101,248,111,188,167,145,106,8,248,164,30,224,9,49,48,122,34,149,10,231,141,131,197,105,194,8,182,149,221,62,145,42,155,161,7,135,36,136,171,132,120,0,150,239,196,71,35,115,76,241,179,170,60,107,126,78,151,211,81,0,151,133,113,26,153,162,243,185,28,142,221,182,150,168,148,204,83,254,36,73,38,241,216,234,98,215,53,115,232,176,85,213,106,4,159,143,49,122,172,7,75,7,102,58,141,200,194,242,224,145,61,65,186,156,253,102,107,230,64,81,37,0,193,137,219,185,190,217,107,223,24,145,186,70,164,190,26,4,135,150,23,145,70,155,26,25,3,59,166,70,74,192,212,6,58,81,211,176,28,36,132,121,214,125,149,16,51,67,242,190,27,73,201,8,26,34,252,55,214,3,113,15,194,93,67,153,177,83,119,74,103,162,233,17,28,2,136,32,238,193,189,2,113,24,239,73,107,160,249,204,196,179,66,32,59,241,172,94,107,75,236,131,128,110,92,146,130,39,145,37,209,6,33,104,241,142,240,135,100,130,70,170,32,128,120,56,142,86,71,49,206,152,96,156,63,229,132,115,222,217,66,237,118,54,211,152,211,140,110,128,200,249,235,50,113,28,154,90,84,15,205,187,64,54,82,31,28,144,180,102,27,228,235,132,67,84,203,179,196,234,149,168,159,37,230,93,163,14,146,105,137,169,33,232,228,186,170,71,227,26,158,144,27,236,192,221,157,155,90,105,94,28,128,3,126,206,81,219,232,197,6,129,219,27,153,16,215,199,98,21,82,75,153,130,48,79,35,58,41,83,163,8,4,136,81,182,157,142,10,131,224,122,8,172,130,112,204,243,255,123,86,36,191,66,159,57,131,238,60,83,29,45,111,137,253,16,124,67,88,217,249,198,92,47,18,20,32,199,212,204,225,239,20,60,4,28,115,172,72,116,153,154,57,85,36,10,117,28,235,1,192,49,103,139,55,248,142,73,96,206,150,144,32,16,105,4,14,43,74,252,156,39,95,48,22,59,20,255,38,90,47,196,208,254,63,248,221,191,254,243,47,125,234,43,240,19,177,75,45,164,203,8,89,156,140,200,108,150,52,82,156,203,75,112,189,135,185,221,188,240,84,150,214,192,195,183,10,150,224,219,56,245,120,202,149,138,123,137,251,239,82,26,28,7,150,110,230,15,197,141,198,120,202,245,104,100,36,248,229,176,104,8,160,150,135,195,177,205,239,28,21,132,28,155,25,143,235,144,192,178,113,58,237,38,195,49,10,84,201,102,210,235,38,35,252,221,180,16,18,106,118,240,134,216,195,189,107,137,121,215,8,149,91,198,142,205,93,163,252,193,181,168,232,219,67,233,2,114,170,8,34,249,49,168,111,16,16,215,33,198,238,72,210,88,71,235,117,137,121,39,55,20,111,46,62,148,36,145,129,209,68,90,82,244,233,134,176,20,9,4,193,104,15,214,38,75,83,46,1,186,213,56,181,234,130,4,103,60,70,40,217,91,131,39,155,4,7,155,118,66,232,182,141,234,16,234,40,153,173,196,233,135,131,185,20,28,179,235,123,197,64,251,56,149,252,98,31,13,112,154,5,133,149,79,105,93,30,154,231,191,51,43,76,159,121,252,89,235,240,128,13,197,176,212,60,94,54,132,57,9,44,51,251,202,156,216,33,233,132,206,179,169,50,181,48,141,104,98,53,50,9,14,73,52,34,117,241,143,143,84,236,197,201,89,103,119,35,148,47,235,80,95,175,147,1,13,68,135,100,170,21,168,138,85,214,72,6,176,31,32,211,196,216,220,126,149,112,208,47,100,112,138,79,180,130,3,74,113,147,100,199,13,186,59,20,225,35,221,178,62,253,114,97,6,243,204,177,95,68,36,54,72,90,153,204,165,152,246,89,68,42,15,182,171,151,116,89,4,46,11,39,218,198,12,163,165,154,133,102,255,223,243,134,73,74,87,60,169,83,28,133,128,143,239,121,70,158,41,62,169,149,188,212,37,49,16,167,184,7,65,158,214,47,114,139,21,154,83,164,153,11,77,54,66,205,123,246,83,121,1,56,40,217,6,224,131,172,126,162,205,233,85,203,83,69,215,65,169,91,248,5,45,195,69,69,10,80,147,148,31,178,179,129,183,18,163,162,165,116,19,56,30,75,148,56,144,23,43,168,65,61,121,119,209,159,206,92,198,199,167,27,75,156,154,216,177,238,232,120,29,223,67,129,253,130,158,198,142,53,171,177,180,113,202,24,95,9,50,125,201,238,19,216,238,60,104,215,141,180,31,64,251,123,193,95,55,252,166,253,205,232,75,163,230,202,145,24,71,246,148,24,69,104,41,28,40,254,144,247,168,162,240,91,152,153,106,218,40,236,112,40,86,196,152,83,98,147,16,209,42,220,95,255,187,104,116,185,142,148,210,37,69,202,183,68,163,43,112,133,16,158,240,3,58,205,172,100,76,17,214,14,100,215,48,178,43,91,200,174,110,33,27,85,144,93,30,46,22,192,12,225,91,177,232,106,87,98,181,197,247,22,96,181,101,139,174,22,97,181,165,139,174,86,199,106,75,22,93,45,198,106,201,162,171,213,176,90,55,14,100,111,14,50,233,3,231,74,217,59,140,146,49,62,253,104,230,154,230,115,122,34,243,76,243,32,93,60,122,166,121,72,143,240,37,106,191,234,67,142,106,250,242,228,166,84,99,231,174,105,30,124,106,250,110,115,254,67,135,167,199,99,89,186,15,254,131,229,139,88,54,195,245,248,83,224,108,16,125,177,143,63,87,177,18,57,200,44,108,52,103,93,152,175,152,166,24,176,129,249,174,24,141,61,42,65,0,83,137,43,229,213,8,230,96,195,156,63,175,39,16,236,177,56,64,120,143,138,156,178,16,186,227,246,217,212,167,38,51,109,154,77,7,79,50,205,131,250,110,50,41,108,152,230,238,195,211,91,176,100,243,136,24,157,64,105,199,116,51,158,62,33,217,133,72,8,204,113,77,147,180,252,174,105,38,91,248,254,211,188,110,194,52,229,228,38,113,53,165,162,109,230,52,166,250,40,229,109,43,95,95,101,52,211,171,90,231,170,162,212,44,213,49,120,228,236,166,34,152,146,182,111,178,70,138,34,30,103,62,83,141,35,154,200,149,106,29,92,201,42,201,123,85,80,62,33,191,55,18,167,23,85,172,113,197,58,123,45,97,153,26,179,61,91,221,208,148,194,147,220,233,179,86,228,246,192,231,196,109,52,158,151,118,76,130,96,190,76,159,0,191,54,213,184,169,207,157,56,46,98,233,149,132,184,134,180,245,21,114,149,212,108,39,213,210,109,198,159,48,231,152,90,14,183,131,160,54,255,190,2,42,37,110,19,252,230,92,21,137,115,5,18,132,187,99,20,138,5,138,167,168,75,27,80,242,110,192,45,14,15,115,184,126,168,121,218,165,232,1,249,170,99,130,156,173,128,125,240,59,216,95,196,155,76,208,218,100,100,107,147,113,230,217,100,66,210,98,153,193,198,58,129,91,48,246,97,142,159,101,49,244,147,145,12,75,173,144,200,248,46,41,211,147,180,80,53,75,56,138,207,248,164,72,98,177,69,166,14,9,244,78,170,73,68,206,124,186,68,197,147,137,82,211,160,175,192,147,185,17,111,162,117,125,94,78,164,30,241,7,210,153,111,16,210,188,110,34,197,21,180,118,34,197,241,185,137,164,65,227,77,65,48,73,37,85,81,82,153,215,77,64,96,188,169,73,42,127,23,107,49,28,19,77,113,65,77,5,29,179,116,202,52,155,231,196,4,214,209,101,157,73,92,182,205,35,252,133,108,227,228,97,70,122,253,6,74,92,252,102,212,234,44,8,114,193,112,59,70,188,9,28,115,243,216,36,56,230,174,177,73,54,236,64,177,118,78,47,22,66,132,220,162,133,144,77,78,218,94,249,99,171,224,82,124,78,192,35,61,89,175,43,112,71,168,95,74,161,204,109,69,70,250,106,170,166,15,105,130,238,73,21,110,99,248,32,67,8,135,217,9,223,97,175,74,80,38,225,155,47,201,190,168,153,135,231,46,167,145,213,241,104,30,24,81,72,75,184,228,72,4,198,124,50,63,49,211,119,231,70,111,33,96,124,18,166,80,122,207,28,123,66,194,243,136,204,43,9,85,77,232,50,65,35,239,228,153,207,211,118,152,109,3,168,61,167,82,6,27,75,113,81,201,70,230,98,81,53,8,193,48,25,21,212,205,246,137,86,191,105,141,29,233,5,212,176,1,201,13,96,166,42,51,149,205,68,185,85,109,67,129,25,106,57,158,45,129,190,239,52,28,107,51,43,41,60,233,172,220,210,147,121,136,51,158,121,212,20,29,12,61,243,188,156,200,234,214,228,0,103,142,143,13,77,229,228,153,233,128,207,223,63,197,245,228,128,230,155,195,233,187,141,191,13,39,231,182,73,115,239,251,119,6,19,57,77,165,11,188,12,46,244,50,90,240,101,234,144,107,102,166,249,171,175,33,4,224,225,153,192,135,40,79,241,124,25,108,51,231,239,125,222,159,192,201,136,191,185,185,183,233,220,97,146,109,40,27,187,80,27,70,41,215,103,228,40,106,151,69,46,115,248,246,158,187,212,173,46,83,13,53,14,8,161,145,159,56,243,149,201,169,144,42,11,5,11,20,34,253,49,247,237,242,247,196,245,68,234,208,68,37,13,17,158,5,165,45,102,182,79,144,138,147,114,52,105,42,203,25,166,139,145,199,39,85,62,105,30,120,151,104,79,39,36,167,145,121,133,249,134,108,111,36,117,139,131,148,131,179,206,177,62,187,154,41,184,102,2,244,124,4,196,101,23,142,217,37,26,130,219,200,156,212,45,12,218,54,8,48,178,209,165,132,44,206,181,140,139,99,228,54,59,201,241,201,13,91,159,199,165,3,85,234,20,214,38,169,79,54,40,169,224,3,12,125,147,23,39,154,15,130,78,12,75,132,24,38,101,115,119,200,49,188,45,15,81,40,140,0,49,252,104,137,20,113,161,68,213,224,142,32,176,221,101,151,29,45,81,31,224,142,117,147,223,183,232,85,203,169,29,11,24,183,134,204,70,119,47,244,54,252,76,40,93,60,171,37,141,76,243,89,109,206,105,65,118,245,202,192,254,167,156,32,208,193,60,255,249,248,199,35,131,198,83,98,36,118,112,219,22,166,233,92,47,235,228,52,42,177,227,83,167,197,245,82,204,255,234,140,196,87,222,124,175,158,161,87,238,124,175,78,209,43,103,190,87,135,232,21,202,173,166,169,38,56,96,66,103,153,63,33,120,104,46,211,55,207,41,88,96,103,161,35,84,168,242,85,109,101,228,4,71,113,8,167,104,150,43,147,166,142,73,113,46,177,166,197,76,211,180,1,149,103,142,81,83,230,153,99,179,100,216,100,194,169,204,7,111,148,36,167,158,204,231,24,214,78,234,18,163,162,13,232,188,28,69,222,100,191,21,237,130,106,164,14,110,39,99,118,27,179,111,202,143,239,42,3,155,233,67,207,100,133,87,118,180,98,91,234,226,187,209,88,154,111,184,169,99,214,226,102,148,154,212,28,57,86,168,173,204,153,74,105,7,40,34,156,50,178,17,182,129,124,254,252,121,49,17,73,114,156,85,138,69,213,233,187,115,43,54,52,82,223,124,195,5,23,92,243,13,119,115,15,113,49,217,72,29,164,138,46,181,246,10,92,115,230,143,249,24,159,103,10,197,70,73,13,201,60,115,233,3,216,14,173,78,75,88,100,176,252,169,100,109,196,245,18,165,128,23,196,38,209,141,251,152,233,158,48,231,254,136,155,218,36,186,40,203,217,214,158,27,83,110,208,145,27,81,110,212,145,27,82,110,210,145,91,167,220,229,29,185,53,186,202,123,155,81,219,140,106,100,210,132,91,98,60,20,121,57,200,60,83,230,241,175,151,33,102,148,81,185,249,210,215,203,79,146,10,208,235,165,199,177,52,2,220,36,186,242,43,165,224,143,35,212,55,145,28,41,55,137,58,206,100,105,96,44,86,116,177,112,94,140,209,52,107,54,89,1,101,154,205,128,31,206,221,183,177,97,118,63,31,142,129,52,7,255,48,106,152,227,191,125,249,216,36,72,243,245,47,68,13,227,98,246,103,158,13,27,230,191,135,99,147,152,253,205,111,132,13,243,217,149,152,255,249,79,135,13,211,69,133,119,76,152,207,156,171,143,128,52,55,79,152,211,127,92,31,153,156,156,36,103,141,223,254,86,189,97,188,177,216,101,187,228,255,117,100,86,152,43,204,215,126,127,86,152,35,210,60,240,135,179,194,124,77,39,87,178,54,76,154,99,79,205,10,211,107,246,205,206,10,243,89,101,126,231,107,179,194,124,89,37,87,14,199,116,237,37,249,202,179,41,241,184,168,67,240,204,55,92,115,162,152,134,210,212,205,190,175,115,140,237,127,59,35,63,70,234,146,31,226,200,203,57,148,72,242,117,34,252,98,93,202,105,190,234,85,235,230,185,76,152,223,56,123,131,16,184,151,45,169,124,134,58,162,239,80,179,109,239,6,33,55,137,0,148,89,217,143,155,130,221,199,80,128,85,100,199,149,224,177,100,57,187,170,174,67,140,250,213,26,80,230,200,55,56,152,131,34,179,177,126,5,192,190,197,201,203,72,229,0,98,189,14,6,52,182,187,106,81,237,30,88,184,221,164,189,221,213,63,172,118,201,236,95,92,174,131,87,83,187,61,139,106,119,215,194,237,118,133,108,196,71,193,48,148,89,179,168,118,207,254,249,130,237,198,76,7,229,48,29,46,123,113,237,74,110,247,228,194,237,70,97,165,25,91,89,112,229,253,123,158,22,28,176,195,54,115,212,54,83,86,14,23,81,249,201,206,202,245,69,84,222,223,89,185,182,136,202,187,58,43,7,139,168,252,236,159,117,84,246,23,81,249,153,206,202,222,34,42,159,236,172,236,46,162,242,177,206,202,206,34,42,31,234,172,172,23,51,84,157,149,213,34,42,207,116,86,70,166,136,85,200,24,83,240,177,171,104,206,10,176,160,232,230,33,252,68,32,253,105,222,53,201,220,65,26,119,91,75,184,239,85,251,101,230,208,41,95,54,72,154,87,83,32,114,227,52,82,69,86,187,173,52,74,48,189,227,116,204,117,98,54,13,204,124,211,139,91,189,103,181,96,130,14,39,169,71,87,216,100,224,141,162,190,153,230,67,29,109,224,14,148,118,176,179,98,11,111,148,190,233,53,167,191,110,183,61,122,237,24,73,162,147,220,220,147,41,60,130,217,88,63,184,198,117,153,138,176,159,50,149,128,50,110,153,90,14,202,120,101,106,37,40,227,151,41,36,105,80,166,144,206,181,50,133,244,175,151,169,94,80,38,44,83,87,128,50,81,153,234,3,101,226,50,117,45,40,211,85,166,54,130,50,221,101,234,53,200,95,202,20,202,164,75,202,212,235,65,153,165,101,234,6,80,102,89,153,122,35,40,179,188,76,221,8,202,172,40,83,63,9,202,92,82,166,222,2,202,92,90,166,126,14,167,73,153,186,25,247,157,50,117,59,238,22,101,234,237,200,227,203,212,29,200,153,203,212,93,200,79,203,212,20,40,243,178,50,117,15,40,179,182,76,109,71,129,186,76,81,180,133,180,76,238,196,100,86,38,103,48,249,242,50,185,11,147,235,202,36,5,111,120,69,153,220,131,201,31,41,147,123,49,249,202,50,185,15,147,189,35,177,50,189,213,9,164,43,9,243,240,177,89,97,46,227,244,118,254,124,205,126,137,103,94,5,210,172,157,200,252,97,190,27,237,199,108,209,29,242,41,6,39,237,43,233,244,144,178,117,154,154,98,155,100,186,74,206,228,54,62,191,42,46,68,178,205,148,181,147,85,164,243,225,163,211,2,64,209,53,61,137,248,193,56,45,200,181,19,169,164,54,112,165,5,13,54,20,50,170,193,139,11,143,253,120,46,154,98,181,140,7,114,219,36,91,228,58,100,155,194,0,171,49,235,86,226,146,222,67,90,5,234,20,171,68,157,2,63,51,93,1,228,55,106,82,161,12,117,78,144,16,197,151,156,136,2,175,180,33,57,160,49,213,155,155,131,255,56,203,65,58,140,222,36,112,226,3,175,27,187,40,236,10,227,69,136,196,92,183,88,191,185,150,136,70,122,214,70,215,74,49,71,70,91,186,108,249,138,75,46,93,25,86,197,57,114,200,215,82,105,235,156,21,240,85,238,181,149,56,133,124,75,182,134,4,71,243,141,71,158,46,98,11,146,72,253,95,30,121,186,8,31,168,205,31,182,18,106,104,79,179,217,156,85,3,184,120,113,100,113,69,159,16,185,177,193,118,82,90,157,160,204,181,57,173,76,138,252,66,235,119,72,13,208,34,211,188,14,31,155,121,154,215,39,10,10,34,231,229,136,228,228,176,41,201,203,144,117,190,6,167,90,175,218,152,172,10,227,203,162,30,100,130,228,207,156,106,228,105,253,12,3,30,100,181,57,245,8,187,2,113,255,218,52,119,23,233,27,90,125,108,100,81,231,118,222,65,16,140,35,247,182,192,216,56,15,20,241,154,104,117,72,98,80,65,68,27,63,181,87,57,201,210,184,39,90,21,182,191,160,162,248,150,181,46,241,234,104,37,214,63,249,28,57,15,31,144,241,170,232,82,204,248,93,204,232,193,140,149,209,37,152,241,75,152,177,26,51,46,165,203,70,243,240,115,228,35,124,64,198,151,208,53,162,249,254,63,83,212,131,3,50,94,65,23,132,230,239,254,153,124,176,15,200,120,57,93,253,153,147,101,198,50,146,176,205,31,253,51,185,30,31,144,241,82,18,141,205,225,50,99,9,201,180,230,96,217,104,66,194,168,249,124,89,162,155,164,72,179,167,204,232,162,171,32,115,111,217,75,28,81,196,145,255,241,79,5,232,17,138,105,202,252,50,102,188,22,51,66,20,189,148,249,216,63,145,115,243,1,25,215,81,156,82,230,155,223,157,21,230,90,204,168,161,136,164,204,111,98,198,21,152,17,176,191,209,135,49,99,29,102,248,40,202,40,115,223,119,11,56,200,214,77,153,115,207,22,112,184,172,182,57,241,44,121,151,31,144,177,101,52,135,159,181,84,31,142,37,21,105,19,12,176,32,21,59,46,114,18,136,237,94,173,204,89,97,227,222,41,243,76,249,8,138,98,138,225,86,148,209,228,1,65,210,241,219,233,41,162,201,211,46,98,211,156,123,75,33,196,232,1,218,96,29,222,131,247,252,203,108,193,22,112,166,21,82,76,98,103,254,27,121,230,223,144,172,34,76,69,206,215,52,69,56,58,170,99,154,223,174,132,163,59,225,169,152,173,124,161,145,185,235,132,145,105,87,169,127,202,112,74,38,89,55,206,72,114,157,98,181,172,140,172,141,104,154,128,72,61,251,85,46,47,11,175,16,34,139,138,187,26,153,167,30,68,116,101,195,209,33,237,109,13,102,174,157,72,3,136,248,182,38,48,222,20,120,147,105,29,66,163,108,40,196,208,222,215,120,116,95,83,131,208,104,110,141,174,109,106,16,208,181,77,157,205,4,203,187,20,15,207,163,175,155,128,26,223,216,212,75,189,103,104,156,60,245,66,112,161,110,238,109,58,201,50,190,76,193,226,77,186,39,112,55,136,16,255,212,217,232,72,178,165,143,63,30,147,165,158,53,206,217,220,50,206,169,145,205,114,113,217,18,224,30,228,115,41,159,75,249,163,28,102,82,84,172,156,2,123,223,66,85,193,7,167,129,228,37,85,172,160,0,10,100,183,89,206,39,23,220,245,90,100,75,6,116,2,75,190,72,112,53,229,136,51,104,154,100,233,76,38,147,77,242,10,114,55,136,213,89,140,63,61,91,98,23,92,136,141,204,55,137,213,16,147,233,25,71,75,136,137,3,146,11,155,72,3,168,177,216,72,177,19,28,112,135,196,128,166,67,176,3,221,86,235,139,37,235,220,182,3,142,169,111,238,73,185,143,172,6,14,56,80,27,235,73,35,148,94,129,132,56,151,84,134,89,13,251,117,32,30,137,29,238,215,201,177,55,82,46,6,27,132,40,155,15,35,47,84,211,70,66,221,52,37,121,107,43,168,155,243,221,155,241,81,27,7,243,155,206,88,79,8,126,158,162,84,11,97,3,188,60,245,193,131,164,184,108,139,77,221,28,44,132,2,167,114,27,211,26,174,209,88,227,79,3,100,234,20,51,215,105,197,27,165,119,169,12,139,97,145,149,49,193,5,128,224,166,20,194,7,242,117,2,186,186,105,230,131,3,210,156,254,74,203,232,15,115,124,115,188,200,249,138,167,220,105,181,163,93,191,109,252,137,76,57,213,147,130,54,235,73,193,83,220,180,16,59,82,83,102,255,151,103,69,126,157,18,108,199,213,48,231,207,159,63,175,39,50,250,214,156,107,244,4,29,9,52,86,21,108,156,229,154,231,207,159,63,239,79,164,46,176,66,84,129,186,78,9,8,118,128,191,61,243,95,75,60,201,201,113,32,139,236,33,152,41,223,4,11,190,137,22,120,131,143,169,79,156,39,69,233,203,225,43,57,190,28,177,34,209,109,34,4,143,124,215,231,135,38,85,69,51,30,138,92,124,7,227,127,145,63,66,168,205,43,199,237,151,109,80,24,228,111,11,210,237,132,189,12,223,79,154,172,96,98,152,227,101,51,53,183,196,178,69,77,39,188,8,245,134,232,42,37,85,108,199,93,80,176,200,45,225,30,106,126,237,27,87,206,75,200,226,205,188,180,156,239,101,180,240,203,133,40,170,194,5,228,241,78,242,206,3,230,15,131,194,201,4,127,68,105,255,172,48,42,233,161,115,39,103,61,134,89,14,103,205,10,206,123,18,243,124,206,107,178,155,187,57,190,159,118,96,206,99,55,54,51,243,57,146,99,122,194,238,118,244,62,235,75,119,26,119,218,70,38,65,24,167,193,23,142,247,76,100,34,183,142,39,116,229,53,65,8,104,186,111,33,179,62,13,130,204,184,201,77,166,244,146,228,237,208,49,122,194,232,209,88,178,143,139,176,251,114,203,39,84,86,220,114,36,251,243,209,101,216,188,158,148,78,233,73,73,33,5,40,150,64,196,145,5,230,243,164,212,165,39,165,98,96,50,109,136,8,40,110,46,216,125,121,15,84,250,127,170,81,186,126,177,152,33,50,39,11,135,157,118,39,69,235,204,61,63,82,236,167,36,231,184,91,206,173,84,113,53,149,236,244,114,207,68,230,16,149,201,122,221,250,203,50,109,84,73,27,43,16,101,12,110,65,27,117,49,218,204,7,109,11,132,209,88,181,134,174,112,134,103,63,191,210,131,27,5,234,51,133,127,249,230,88,86,93,214,37,10,45,106,176,116,172,114,204,250,177,88,180,252,216,173,67,180,203,14,32,228,16,13,106,220,126,19,148,189,217,67,114,64,38,151,38,90,115,236,119,83,125,111,189,43,41,6,241,249,181,155,123,216,120,208,217,18,75,118,241,154,230,89,37,74,199,126,145,92,143,112,113,197,115,150,40,210,122,138,137,88,188,148,30,187,195,238,54,223,229,206,248,19,21,223,101,213,238,187,204,94,247,42,36,33,84,178,161,149,44,221,237,173,243,125,16,126,203,149,94,229,118,0,20,127,154,69,129,78,46,207,20,82,186,59,180,209,8,142,157,127,239,120,172,76,2,218,198,76,209,38,28,163,120,37,196,220,88,3,112,15,221,237,219,198,60,254,28,48,46,255,52,160,61,156,238,239,130,60,243,139,225,164,107,236,170,23,180,79,193,7,140,154,136,61,192,230,80,58,65,46,43,183,196,14,107,66,155,106,140,246,107,103,114,108,146,156,10,204,189,205,96,139,245,188,39,39,3,10,203,224,147,249,149,156,0,57,105,200,177,182,112,38,198,245,193,77,110,142,117,103,33,144,8,158,226,118,172,7,30,123,236,149,206,122,196,90,177,177,227,109,141,241,237,27,213,211,20,141,160,104,218,41,154,38,204,171,241,7,104,91,147,225,66,48,20,110,198,20,20,65,178,2,165,234,251,110,189,253,84,233,237,71,223,232,117,153,8,116,233,90,179,203,218,231,101,237,219,101,173,193,111,119,30,183,129,93,22,112,30,247,90,203,218,26,23,185,40,104,138,54,226,82,220,162,34,119,97,148,217,224,141,24,59,254,27,235,161,239,42,139,100,21,137,26,229,135,14,64,152,237,134,66,115,137,76,26,61,209,67,225,88,136,10,101,53,172,197,222,144,76,48,138,65,81,134,221,200,52,157,191,91,129,56,146,44,4,17,126,206,85,209,180,194,243,209,126,73,182,11,160,13,62,39,95,145,105,173,136,165,176,95,90,47,43,150,231,92,163,166,210,128,13,242,105,253,176,97,144,198,147,139,71,207,14,217,25,41,50,122,147,44,44,147,57,138,195,10,47,143,246,180,212,103,19,246,48,149,116,186,8,193,127,34,77,134,68,218,13,1,74,10,184,146,120,241,16,119,120,229,56,89,214,116,131,190,78,137,237,44,180,37,59,182,103,221,40,13,116,163,24,208,93,216,188,88,86,226,112,151,62,46,71,31,219,119,83,13,221,95,204,28,210,198,209,36,98,149,92,13,36,201,8,100,17,24,177,73,144,172,10,37,109,137,122,49,1,37,212,199,122,240,92,151,74,118,116,113,171,178,139,37,150,34,147,42,198,59,46,20,110,105,23,162,70,4,243,41,237,233,65,240,211,16,188,84,131,3,93,133,25,94,234,21,222,15,78,47,137,203,136,82,230,166,14,25,134,133,16,20,4,139,210,0,194,212,1,89,56,170,128,211,73,48,239,2,4,179,166,103,30,119,25,32,193,232,67,207,170,66,48,13,97,94,40,58,107,86,168,34,130,197,76,176,170,206,18,156,118,130,113,93,208,150,96,110,234,204,67,48,1,53,156,120,135,36,212,73,255,136,169,124,157,8,223,239,202,192,218,214,120,235,132,154,102,41,195,113,6,141,180,6,181,184,192,237,169,70,174,14,141,40,247,107,61,28,139,213,108,142,237,130,166,184,177,1,125,99,38,173,85,124,121,220,43,37,41,17,149,146,236,15,202,129,39,158,22,108,36,192,94,193,90,83,127,230,217,223,154,21,102,86,128,198,222,252,213,160,204,96,158,41,51,43,138,15,30,168,225,88,179,98,248,117,108,81,130,53,202,3,25,125,206,11,115,200,32,145,154,94,34,197,112,172,141,140,220,176,104,157,80,120,178,114,254,114,41,140,70,121,115,211,170,39,13,169,112,220,43,165,74,21,158,122,55,9,242,195,228,13,206,51,65,94,94,118,79,119,162,43,5,29,173,130,156,142,88,87,74,149,105,115,198,167,143,6,26,36,215,238,63,17,99,61,169,131,2,137,36,155,187,250,88,172,141,50,56,55,159,225,87,212,128,147,135,44,117,120,56,225,29,220,36,35,138,77,227,154,103,126,171,180,82,38,153,214,35,7,233,156,150,55,155,133,129,151,27,63,207,240,100,80,191,51,211,230,159,228,29,160,114,211,55,185,73,136,208,144,9,207,8,14,162,111,84,195,30,90,52,153,143,103,62,86,168,155,250,93,92,152,150,24,212,169,1,109,27,0,223,60,35,238,36,67,82,236,121,132,244,228,169,162,181,227,132,109,132,20,70,50,54,81,158,185,16,140,146,243,79,8,30,219,15,220,231,74,127,90,77,131,116,6,205,229,164,119,65,190,184,38,195,125,42,147,61,105,141,140,83,35,14,48,179,38,245,204,6,138,94,44,243,144,156,171,60,227,76,240,177,77,241,215,53,240,16,199,135,73,61,145,213,201,234,53,149,122,16,2,144,165,109,94,225,176,13,117,148,154,234,124,184,129,32,79,253,176,212,125,179,219,176,44,76,231,232,227,50,43,57,70,24,212,72,106,105,74,146,111,203,201,238,115,56,163,96,140,148,88,193,68,236,64,0,126,35,243,83,143,140,247,112,147,39,29,185,164,97,191,72,211,78,68,238,81,30,248,172,123,240,141,220,134,236,220,90,249,145,124,194,98,157,85,1,250,165,149,95,80,181,242,99,247,84,100,51,56,109,253,57,86,126,178,180,242,147,228,234,210,194,13,2,60,155,96,21,94,255,36,10,79,83,112,104,178,231,149,171,11,16,58,90,166,62,67,240,198,172,214,132,92,238,65,152,190,126,149,16,37,232,75,8,146,63,133,10,243,144,161,222,130,66,16,13,169,155,14,116,60,211,71,222,252,157,232,120,4,117,189,212,197,8,136,168,23,8,251,85,66,182,138,178,59,180,165,138,59,218,251,92,118,8,235,43,54,106,224,112,118,56,139,54,137,94,204,232,87,43,217,149,108,29,59,150,173,225,84,194,63,129,141,106,160,122,85,66,198,189,37,163,20,180,37,246,170,128,16,214,83,228,214,106,117,11,114,130,183,32,69,42,92,114,187,181,86,189,206,32,202,20,107,128,165,62,124,6,139,144,19,242,141,146,38,227,124,46,191,68,8,114,209,14,120,62,4,236,38,26,180,52,43,202,146,88,176,1,161,59,69,227,193,80,188,110,33,32,100,27,16,178,10,132,38,31,54,168,227,62,159,176,218,113,37,153,37,173,97,107,164,94,74,88,119,190,117,37,167,247,152,16,133,101,184,83,234,183,130,220,222,54,41,161,232,203,54,122,10,229,172,8,197,42,111,52,150,228,169,64,45,16,195,196,222,189,86,132,192,130,12,173,6,219,90,115,108,107,94,217,154,103,91,163,143,139,212,66,110,102,57,104,168,225,128,6,69,40,57,163,167,40,112,81,65,236,94,229,32,165,85,65,98,214,237,177,125,32,185,172,56,224,143,23,68,163,221,211,167,38,248,156,140,175,43,36,148,161,161,239,120,17,171,34,3,129,191,115,100,205,238,198,214,43,145,236,39,5,7,14,37,187,123,31,28,19,229,165,66,193,237,47,118,232,32,35,151,71,135,67,59,105,14,10,69,234,13,154,198,180,232,106,188,18,235,152,90,131,252,73,66,157,52,172,30,216,15,44,19,214,197,42,4,153,172,97,13,151,181,204,213,237,150,185,184,65,34,103,163,69,108,250,200,221,151,86,56,121,16,57,224,88,243,9,129,82,63,158,84,240,80,235,111,238,73,125,67,177,10,93,146,119,163,59,112,255,47,119,80,85,21,24,72,19,213,171,172,253,43,205,17,158,204,42,191,82,138,204,173,108,169,46,111,169,68,80,112,113,59,21,171,105,63,117,105,63,13,201,214,52,162,219,102,138,128,134,34,75,35,211,228,11,64,70,25,224,143,209,249,4,185,75,170,203,83,229,121,73,234,63,250,56,150,40,156,37,104,171,65,78,180,141,110,175,153,33,147,6,150,188,209,11,134,92,50,120,142,204,64,151,195,195,100,164,17,224,208,20,140,139,99,0,180,147,222,73,214,240,119,157,36,62,18,235,85,122,208,80,140,59,98,188,182,171,142,166,168,19,208,99,28,0,175,198,108,175,206,145,80,140,76,85,72,78,163,235,240,176,254,133,21,42,153,118,119,240,116,75,120,186,153,153,143,63,93,108,125,123,62,254,180,24,18,3,74,152,221,31,127,90,152,147,207,207,114,84,29,204,150,152,189,239,227,86,125,130,109,239,226,138,177,125,36,141,5,85,100,237,65,212,72,61,106,145,53,61,98,2,225,123,34,91,62,180,106,102,232,222,247,239,156,217,189,127,182,41,119,164,43,172,128,141,135,128,245,66,100,203,96,197,253,217,210,161,233,251,97,105,171,216,251,238,27,106,22,137,233,251,210,165,122,16,150,222,232,12,194,50,88,54,36,31,104,123,121,227,176,181,236,13,242,204,205,193,153,96,149,247,210,247,164,151,192,210,33,249,62,88,122,95,186,148,66,107,92,242,69,163,183,129,194,50,141,140,190,130,144,249,52,30,163,49,237,108,14,72,94,228,218,126,35,1,37,44,179,183,69,46,81,204,25,53,72,148,65,68,57,56,198,112,44,212,96,137,124,8,33,221,117,24,189,205,248,119,64,104,130,177,158,108,9,89,98,143,145,203,187,130,37,228,113,139,68,24,239,201,148,33,123,90,101,154,205,102,83,109,137,29,142,127,56,149,41,211,53,22,203,213,102,26,148,241,239,52,178,241,182,109,236,219,100,28,19,144,195,67,79,152,169,39,134,162,29,217,210,33,152,249,98,172,96,233,23,51,141,2,161,3,122,140,124,124,41,100,165,67,97,210,52,56,99,160,205,191,156,63,127,222,223,50,25,43,131,231,68,237,12,182,124,190,240,196,236,15,199,138,67,2,152,243,146,150,36,30,102,61,158,219,20,240,148,176,114,17,43,232,106,164,245,98,14,164,62,212,98,77,4,195,249,40,136,30,28,84,8,75,32,51,71,193,182,44,238,241,132,167,64,22,218,144,54,88,33,232,26,212,24,142,1,130,72,253,19,63,128,218,152,61,121,146,60,234,228,33,185,45,121,116,48,90,175,5,205,161,33,191,50,215,238,131,165,67,231,191,255,194,247,254,249,31,254,219,83,231,197,206,237,3,90,24,246,12,97,1,176,198,100,247,160,150,131,87,126,115,177,100,201,53,10,255,66,250,122,47,83,141,113,82,99,185,116,152,196,31,228,58,221,100,64,206,114,47,169,104,28,190,165,225,56,180,40,155,250,40,135,250,252,6,84,225,181,100,141,114,237,177,145,253,199,237,183,218,128,60,176,27,153,107,182,79,100,245,156,28,171,20,160,132,143,205,57,244,113,59,241,198,24,101,196,237,19,89,68,90,124,67,78,87,83,89,220,48,43,39,240,52,75,219,30,137,195,14,196,219,104,151,202,28,232,158,98,29,30,107,254,3,60,10,7,20,118,53,228,24,74,226,141,184,14,232,144,16,148,38,102,243,148,70,108,201,197,203,135,122,206,171,77,155,237,19,169,99,132,21,200,27,105,4,117,75,47,138,55,80,58,162,208,37,31,226,94,196,33,0,103,156,157,107,80,210,104,100,117,196,138,2,27,10,112,27,20,26,200,135,200,98,79,206,162,70,188,169,130,125,131,176,15,230,96,31,208,17,222,105,100,40,158,119,79,49,9,2,136,183,21,36,32,131,57,14,82,64,42,51,108,22,57,111,157,173,241,90,213,43,132,168,212,65,122,233,9,102,245,46,248,56,43,52,168,70,72,250,18,201,13,88,140,85,241,57,31,202,47,48,166,78,217,149,209,205,237,188,168,148,204,217,158,143,215,44,245,87,163,240,23,30,178,217,24,188,194,181,1,247,47,80,153,155,103,1,95,87,35,47,139,65,153,169,59,50,149,167,117,60,185,229,88,39,34,166,91,39,37,29,74,174,117,146,52,232,222,116,34,171,165,154,150,193,122,33,170,172,53,67,158,107,130,226,216,152,147,129,76,192,91,146,198,122,122,158,26,4,172,7,75,223,67,220,86,231,88,142,29,251,248,226,127,189,110,171,65,197,40,48,208,19,233,82,92,229,13,112,161,214,184,27,194,9,19,140,145,162,9,151,248,6,129,148,90,58,180,106,230,139,153,102,26,5,13,8,39,16,187,32,7,155,53,117,7,120,121,170,205,121,57,234,12,154,41,11,184,147,103,181,13,130,216,19,171,158,106,150,206,53,240,11,114,83,4,160,136,227,18,157,151,152,235,86,59,176,121,36,79,32,9,32,66,73,133,45,155,20,197,74,97,230,1,129,133,81,205,105,2,48,43,100,173,31,114,229,168,145,226,156,15,105,203,97,166,185,4,186,26,204,35,69,200,22,23,130,226,170,45,207,105,147,230,47,96,71,32,204,169,63,157,101,13,133,149,190,18,18,86,205,161,19,179,34,185,159,99,126,68,141,180,75,15,210,129,183,164,125,23,4,102,234,142,60,99,126,48,108,111,191,80,210,166,131,210,252,227,121,129,25,176,64,141,57,51,192,125,113,51,0,71,26,28,179,106,91,101,132,221,249,70,184,28,5,68,7,247,41,148,242,170,3,98,63,249,138,195,17,142,32,171,201,83,82,248,93,120,111,2,142,48,19,210,238,111,124,10,62,170,114,14,16,227,131,106,36,171,200,228,79,38,110,234,150,114,143,83,238,250,30,8,44,191,0,5,117,65,65,69,231,12,210,83,42,240,230,175,97,57,162,165,160,202,177,28,249,195,102,138,105,232,128,51,31,21,51,77,86,28,20,124,196,201,97,57,77,197,26,207,220,160,1,222,4,144,32,128,66,163,32,90,20,210,13,57,147,81,148,85,146,248,172,112,67,14,244,116,50,165,105,195,179,159,3,137,42,118,167,161,136,181,116,235,76,87,177,73,157,37,195,93,109,245,19,18,71,187,67,115,248,123,179,194,36,144,208,39,211,241,249,200,243,108,101,244,199,142,210,108,101,52,152,91,7,192,233,185,150,138,65,198,151,111,99,78,161,190,1,178,219,203,28,243,55,130,29,187,179,145,216,5,199,108,24,137,61,112,204,95,10,60,7,106,83,223,36,250,232,252,69,122,251,45,81,29,119,232,239,216,42,127,43,70,226,0,28,243,45,42,204,145,151,120,109,253,210,11,179,194,232,228,199,51,39,70,12,253,249,90,121,214,214,254,158,24,137,105,227,111,197,37,162,51,95,189,95,245,209,29,122,95,158,252,92,228,243,49,16,23,114,242,114,148,90,250,134,244,155,73,87,189,50,7,109,63,240,167,145,211,225,187,1,157,144,25,37,245,247,182,200,195,202,97,7,16,46,31,43,138,208,212,5,240,154,3,11,9,19,229,201,18,58,144,26,186,113,213,235,213,58,114,103,119,169,29,240,6,212,181,29,205,233,94,181,46,45,226,242,150,205,17,208,162,2,180,61,46,207,3,52,197,68,33,136,53,181,182,145,84,160,109,148,221,247,2,153,6,32,101,21,187,88,181,33,37,219,75,239,111,141,131,164,91,247,246,226,33,136,100,27,169,11,40,238,0,56,225,35,174,116,166,217,2,77,181,166,143,147,117,24,6,240,185,5,88,191,70,49,220,46,108,24,32,231,24,6,136,50,168,38,173,135,170,85,128,224,43,50,81,222,124,139,151,102,21,176,128,77,128,168,132,243,148,172,198,34,45,229,197,236,1,196,28,123,0,142,52,36,230,107,177,176,7,16,115,236,1,230,169,84,237,106,158,251,247,238,210,68,128,181,124,63,124,19,129,121,16,152,11,21,71,48,237,230,123,95,14,8,39,147,235,41,189,224,165,120,229,163,12,106,190,143,50,168,48,149,54,118,119,17,131,222,198,245,230,248,244,225,63,185,202,47,67,165,58,235,132,189,190,107,233,177,138,112,84,212,35,71,95,90,153,3,138,148,238,156,128,68,138,3,18,233,106,68,14,205,17,57,220,50,34,71,0,98,72,227,82,228,192,28,228,59,195,70,240,30,197,98,34,153,21,89,103,96,250,70,56,202,233,56,29,133,230,6,87,163,203,85,53,36,146,225,200,65,233,232,42,126,87,99,48,19,6,211,91,40,58,85,9,166,106,129,25,47,8,38,117,208,215,120,98,232,188,188,47,173,99,187,155,99,165,171,112,101,46,105,107,2,83,223,18,107,8,140,59,14,245,161,79,252,198,223,30,195,127,171,126,98,178,154,250,25,250,230,138,141,110,133,120,67,125,168,190,3,92,106,126,59,183,63,74,62,49,33,133,187,226,91,21,35,74,166,65,106,54,207,14,208,230,216,70,229,11,192,195,163,9,95,194,82,180,48,218,218,57,78,152,219,10,234,71,135,149,87,141,196,120,80,252,125,49,10,174,249,27,49,58,97,221,236,53,212,65,37,175,36,143,40,80,16,16,171,243,172,40,58,202,81,196,40,176,66,81,244,85,28,68,162,72,254,72,8,66,237,160,64,92,236,83,225,92,174,123,95,173,131,33,97,77,24,123,213,186,126,21,12,233,112,64,11,62,146,6,60,84,8,142,226,235,87,61,222,179,80,192,151,114,220,196,139,25,55,21,90,43,71,5,245,100,152,99,36,173,19,225,103,29,25,78,179,78,179,206,238,14,246,3,2,124,24,209,177,180,22,175,120,196,161,111,20,56,57,29,249,20,56,141,204,163,227,121,113,233,102,131,143,8,112,71,72,221,239,82,84,3,97,172,54,155,37,1,83,199,253,95,115,8,82,65,100,212,120,134,111,100,193,102,54,83,242,200,118,196,136,84,135,28,218,128,21,183,89,205,76,223,13,53,243,240,158,3,199,197,221,20,107,162,49,81,124,148,93,150,202,114,65,65,86,23,42,165,89,199,18,108,182,74,36,111,132,125,90,34,167,232,139,65,196,245,198,97,84,61,123,198,27,229,203,98,135,173,201,157,162,158,14,231,162,39,193,171,162,167,248,18,145,63,109,65,234,4,10,126,73,31,80,65,54,72,181,70,137,78,26,156,52,0,135,123,86,224,108,161,131,135,76,53,248,20,252,67,101,98,36,198,61,4,34,254,106,123,104,102,159,164,175,151,214,75,109,54,5,112,161,47,195,248,28,60,184,6,200,229,252,81,103,154,130,248,27,217,96,56,93,168,133,116,204,79,125,32,131,148,162,145,97,27,211,54,14,33,14,31,118,217,37,198,186,21,207,239,62,220,242,55,33,135,214,136,44,223,205,185,7,159,22,70,181,123,225,177,55,205,38,177,2,11,111,18,203,121,87,78,200,104,210,124,27,43,56,180,207,152,231,30,124,90,36,27,64,153,222,77,98,173,249,189,226,205,218,220,28,161,55,237,254,44,246,3,49,237,254,44,162,195,159,69,204,239,207,178,142,55,6,48,39,176,19,31,148,129,220,204,204,96,39,201,207,167,116,103,180,110,56,118,241,23,146,85,228,146,96,29,163,19,132,30,49,61,203,224,181,97,186,73,244,50,114,235,24,227,245,236,15,4,212,62,227,251,138,100,0,212,6,209,155,242,62,70,92,194,136,209,148,238,201,233,98,46,38,229,198,58,250,66,143,28,141,73,255,176,158,112,221,32,214,24,103,2,159,16,128,19,56,11,100,251,189,192,48,127,90,140,214,54,59,84,154,175,34,156,110,199,136,104,134,239,21,40,186,108,18,235,24,104,6,179,160,59,81,210,210,221,82,73,152,83,15,22,36,106,121,88,100,132,161,52,143,62,252,180,48,222,156,234,230,211,15,63,45,184,229,199,30,126,90,36,227,169,180,140,9,161,219,181,231,233,57,72,144,93,55,71,140,148,225,183,29,25,219,139,153,96,157,40,226,185,81,72,103,159,118,118,226,95,229,45,112,177,93,187,91,232,116,24,230,105,4,62,238,11,49,212,192,165,187,204,46,35,211,58,31,100,104,15,139,104,135,232,198,217,158,208,46,182,132,119,9,111,152,190,249,227,53,50,7,186,13,76,226,62,17,59,171,45,67,213,224,36,175,196,147,195,18,220,236,116,219,102,167,231,217,236,160,150,35,127,175,147,220,142,251,93,98,247,59,186,203,27,79,235,208,101,119,196,28,7,81,210,73,211,107,148,78,170,132,182,189,98,242,232,59,76,36,172,144,37,63,203,12,181,150,124,192,54,244,216,154,195,55,83,94,97,122,95,99,68,70,98,25,150,136,184,188,139,181,146,175,164,112,202,8,114,42,161,206,223,138,149,121,234,227,152,7,184,97,145,17,24,200,98,195,114,219,55,172,128,55,172,0,183,20,167,216,176,200,156,191,115,195,114,88,119,82,21,52,92,240,71,200,124,48,206,67,242,59,44,136,253,42,100,168,129,237,218,47,130,183,207,237,218,225,174,69,171,107,209,234,218,93,176,107,137,83,50,96,179,136,19,174,244,237,156,243,201,183,166,94,204,59,26,33,183,144,213,138,201,22,108,137,69,121,247,105,247,132,203,137,67,242,181,85,189,45,228,38,223,33,167,181,150,161,14,71,98,247,73,5,0,65,187,112,233,51,49,253,54,98,202,23,131,145,211,38,92,130,11,213,232,198,153,203,147,220,167,30,189,142,30,29,238,81,204,219,227,5,135,207,131,96,139,149,13,219,186,11,89,50,172,74,125,174,193,37,34,70,33,52,254,248,100,145,124,19,138,98,174,169,223,129,107,23,55,40,178,89,33,142,81,94,207,218,128,177,122,72,64,189,231,70,167,37,171,219,197,193,198,229,164,108,118,33,232,136,233,172,10,170,216,176,170,222,168,85,251,182,34,238,217,113,165,102,47,18,122,143,86,218,255,195,221,187,192,71,81,221,139,227,231,156,153,217,157,221,217,77,38,16,32,36,60,206,12,1,18,30,121,144,144,132,135,152,19,121,69,158,45,248,166,197,64,22,204,38,36,176,217,128,212,64,130,32,165,87,91,209,114,213,250,168,104,173,216,42,138,22,43,215,82,13,173,85,219,90,181,183,182,218,214,86,106,233,173,183,245,86,110,107,91,91,145,252,63,231,251,61,179,59,187,9,248,184,237,239,254,126,255,180,178,115,102,206,156,199,247,156,249,158,239,251,171,34,239,229,12,140,188,231,161,186,185,68,253,121,23,189,156,21,205,208,76,65,84,104,62,185,239,124,31,33,235,193,239,78,151,4,21,17,99,187,64,7,117,101,39,36,247,210,23,114,67,144,243,59,139,208,210,72,210,74,25,53,12,65,22,66,181,206,34,203,46,179,120,16,119,245,171,26,13,164,237,44,50,157,92,192,52,108,158,135,85,80,169,164,172,36,60,15,140,224,38,39,200,64,227,5,54,54,160,34,21,179,209,235,225,29,240,213,128,56,108,12,197,86,102,171,242,143,84,191,5,234,151,171,223,18,245,91,161,126,235,90,209,196,86,253,129,73,101,125,43,52,174,76,41,56,19,179,91,45,185,49,129,131,214,227,40,253,196,215,28,221,19,128,98,48,66,229,106,31,81,137,63,117,65,22,162,233,129,62,79,2,187,113,19,70,81,74,58,186,197,245,40,42,104,61,39,36,172,236,91,117,59,23,20,10,150,178,54,65,139,5,29,3,206,130,124,5,227,206,66,198,93,59,94,202,80,236,34,89,69,42,204,84,153,83,184,178,33,6,156,56,114,91,31,1,41,146,61,102,94,148,137,91,110,239,35,162,138,107,162,36,46,158,147,215,111,223,142,34,56,123,23,197,96,227,160,76,67,105,179,153,10,50,135,86,50,64,212,127,93,99,12,45,94,143,147,20,217,166,44,18,208,36,230,246,222,62,229,169,204,208,167,223,142,131,95,179,45,56,43,213,108,87,151,231,81,131,254,177,168,50,14,130,173,86,203,116,76,139,164,9,218,138,27,155,42,6,60,142,114,23,13,98,5,207,36,185,232,228,145,195,24,129,243,27,130,190,86,2,173,35,187,47,101,83,32,22,154,191,97,80,190,235,113,89,103,50,220,22,44,206,89,57,41,197,80,57,163,209,216,247,24,137,123,244,155,40,0,53,164,152,237,65,21,157,143,75,25,113,117,9,90,232,197,224,68,20,198,57,77,81,128,195,226,8,60,40,68,227,92,199,43,35,206,13,188,234,101,169,64,95,213,113,208,176,35,144,36,172,246,238,236,83,33,16,32,185,137,23,37,165,2,174,114,227,72,199,190,72,112,168,37,113,87,179,75,184,38,242,57,181,55,164,103,203,74,181,146,90,72,68,39,137,189,89,104,94,113,156,200,117,123,157,81,61,91,168,26,228,230,133,128,155,205,109,220,188,56,26,148,140,54,15,108,91,41,255,109,160,187,183,113,179,129,238,190,116,19,48,29,170,102,128,155,219,220,192,54,30,184,56,170,89,145,32,166,241,227,90,35,198,150,192,43,149,41,84,82,75,24,66,123,62,228,159,128,4,30,150,252,108,44,174,197,221,176,68,151,51,32,206,127,152,67,129,198,65,84,205,67,146,124,130,60,134,16,35,90,84,200,151,91,237,199,104,97,68,179,88,143,168,228,104,152,74,69,229,76,137,114,229,158,153,143,55,160,182,166,106,139,10,12,84,118,204,213,185,113,12,60,184,151,36,162,12,229,225,52,174,236,110,57,19,111,60,228,37,115,224,76,188,227,21,152,28,2,129,123,123,14,165,140,108,245,89,212,84,241,86,17,7,163,215,6,200,193,127,203,168,209,195,234,197,15,250,175,18,54,200,95,237,37,69,46,105,229,116,9,152,100,217,156,42,95,7,10,249,97,245,184,136,196,241,171,71,92,6,146,49,162,244,134,72,209,57,202,28,198,239,19,1,154,4,204,88,41,177,22,68,104,144,164,117,171,236,47,238,66,216,4,214,10,209,11,209,99,66,37,61,220,196,53,180,164,87,233,75,51,108,218,211,230,246,44,237,56,48,168,225,187,10,136,66,80,110,170,0,193,89,92,121,49,1,173,78,65,200,74,64,174,230,50,56,120,150,68,149,192,48,101,208,175,114,50,82,100,248,117,127,158,87,37,103,245,122,213,193,220,30,20,39,22,215,172,235,52,74,83,214,68,18,74,112,244,46,129,236,45,242,27,147,8,226,152,27,16,228,124,16,182,82,12,17,15,102,175,154,100,142,85,189,2,252,241,50,161,97,54,115,6,9,32,193,251,85,140,2,143,207,56,22,242,149,207,182,33,217,171,171,31,70,91,25,13,100,127,250,178,168,193,117,136,146,7,180,165,215,56,129,198,5,166,81,21,189,240,142,174,186,73,247,144,106,148,72,38,64,203,104,86,135,102,93,185,117,163,160,49,138,163,152,192,107,91,165,104,133,248,0,156,181,194,33,63,79,175,23,204,161,25,35,225,169,193,143,74,13,30,146,210,61,216,71,132,35,142,30,194,144,29,226,185,67,80,62,169,202,216,79,49,100,152,199,252,85,186,202,0,164,210,219,201,53,255,180,198,140,148,250,6,157,196,131,42,96,68,20,204,210,12,52,75,35,110,160,132,141,114,77,180,230,149,167,100,190,248,174,100,46,191,127,184,143,240,80,17,216,114,133,138,120,32,211,2,13,42,2,185,18,40,97,5,25,119,197,62,249,122,214,3,141,7,48,136,37,33,14,36,115,8,165,122,123,74,86,215,6,235,96,148,99,130,114,118,38,25,1,25,250,197,125,135,251,148,159,117,160,148,229,215,106,38,132,200,25,1,136,24,238,153,181,26,151,191,196,9,75,234,175,134,85,203,251,37,204,150,88,220,224,129,169,132,207,36,117,146,233,170,213,10,224,101,51,238,154,18,217,67,238,94,187,56,74,184,169,38,0,5,13,211,228,171,161,71,193,106,125,138,120,6,103,104,148,176,10,197,181,66,224,74,58,147,128,24,102,38,145,251,9,20,31,196,250,29,99,172,155,165,57,10,174,61,46,79,169,180,50,141,235,92,23,99,187,92,179,147,155,173,174,41,30,101,203,192,121,204,72,209,141,77,160,64,35,75,37,113,60,119,255,179,191,191,230,79,207,253,170,231,75,142,188,121,152,129,123,170,255,253,195,12,173,55,76,161,37,197,241,151,251,72,124,178,70,32,118,17,89,136,30,75,95,114,12,149,131,252,110,215,235,229,100,207,154,84,143,39,251,215,108,138,162,3,209,217,105,226,193,249,19,140,62,251,126,47,14,100,51,8,242,97,41,94,99,80,146,26,245,80,220,184,53,131,134,86,84,238,15,24,13,244,128,247,14,77,98,212,234,222,211,218,38,97,110,118,194,156,64,88,131,8,194,28,236,153,89,220,129,129,78,37,212,101,113,199,228,97,192,89,46,166,237,228,225,69,81,13,101,101,46,229,161,5,24,87,34,200,77,76,94,98,54,70,37,107,26,244,204,163,83,33,50,29,6,173,120,22,218,17,180,186,135,12,156,217,173,65,115,226,129,39,85,244,112,147,235,88,128,67,13,48,163,3,30,110,113,72,63,134,150,37,134,202,69,3,3,237,131,112,213,122,15,135,125,167,201,35,221,152,74,36,117,219,79,54,9,51,153,112,0,169,198,45,48,12,146,180,177,36,111,37,241,66,59,193,236,197,80,162,1,47,162,254,209,39,21,138,97,130,110,178,126,199,208,56,59,109,23,155,214,136,40,182,75,232,113,204,200,102,180,186,12,205,36,151,20,97,100,115,95,222,14,166,172,11,131,152,74,131,73,182,37,236,101,12,80,188,226,161,183,84,242,43,75,244,67,204,4,234,168,64,232,146,232,150,181,7,112,99,90,86,32,116,35,205,142,69,50,246,142,230,49,168,66,79,74,214,210,19,234,11,29,4,182,132,7,102,81,38,148,99,62,131,140,159,98,239,127,121,142,82,120,14,233,202,250,123,64,242,13,29,185,66,50,168,250,103,144,128,236,96,14,74,184,60,18,21,239,151,107,17,235,143,140,233,61,154,196,215,47,170,88,68,76,76,143,187,122,131,34,126,43,226,46,68,124,32,16,36,77,43,241,51,111,154,224,152,133,70,19,60,147,78,231,120,76,114,77,12,5,58,90,67,203,129,130,20,81,205,181,82,98,213,106,37,146,146,15,59,84,22,153,19,224,90,57,33,94,188,102,100,29,22,35,17,188,16,88,51,140,120,98,11,240,133,5,129,98,169,86,239,6,145,135,248,120,20,94,139,198,65,111,56,61,77,191,155,152,155,189,194,83,78,67,156,149,18,55,136,215,224,145,192,120,64,34,102,86,74,70,130,89,243,200,56,215,83,164,124,126,28,194,107,96,33,18,231,65,188,210,227,220,196,43,45,206,3,179,49,176,230,44,34,25,25,200,55,66,173,52,45,30,172,101,186,138,3,83,76,172,93,186,63,194,49,79,167,155,22,253,96,136,0,246,13,40,231,156,175,215,163,245,143,247,33,48,207,198,84,152,41,85,68,64,208,164,156,34,4,229,45,114,193,80,114,73,145,107,136,158,78,49,118,51,120,107,6,0,121,4,106,88,129,164,130,37,83,129,153,22,85,210,68,176,224,206,199,20,85,6,236,14,123,185,127,143,165,98,117,169,137,27,53,158,145,246,142,222,222,222,43,229,231,37,199,164,88,71,208,160,225,196,76,181,233,60,5,62,48,222,113,78,21,128,128,185,141,176,30,78,85,214,137,84,100,89,141,211,84,126,4,140,181,234,203,160,144,227,69,79,245,110,96,144,85,95,6,133,136,208,145,160,167,3,95,130,36,22,145,236,54,163,2,246,157,255,141,168,87,167,15,155,4,229,46,85,17,126,96,141,192,18,20,118,145,189,36,61,93,53,73,13,44,247,209,9,85,209,196,166,23,69,85,16,235,24,99,12,41,165,94,154,185,17,148,209,41,149,4,18,19,246,38,100,165,57,104,159,74,53,34,40,167,118,53,168,122,74,53,2,214,127,168,24,210,226,162,159,196,69,133,120,153,112,253,128,200,221,228,50,17,110,44,226,44,142,140,46,109,117,8,215,27,114,47,228,122,131,190,199,209,1,7,137,94,192,72,59,40,72,169,4,21,189,143,2,145,1,205,245,82,100,45,236,209,176,157,207,208,93,237,63,188,55,176,157,160,128,162,56,19,189,84,156,60,172,130,208,102,148,250,152,71,108,86,96,68,162,137,96,35,75,26,246,62,79,86,66,200,19,51,2,41,251,13,17,138,67,246,117,161,183,226,227,94,215,108,56,249,176,182,157,147,238,3,110,0,147,168,156,32,237,110,80,208,164,184,250,209,62,18,87,209,115,117,193,90,121,80,220,222,3,214,102,80,47,171,134,10,7,71,26,250,143,189,92,126,33,55,29,204,240,111,30,112,117,241,107,2,254,33,130,73,46,78,142,34,46,239,251,250,211,207,210,178,5,166,17,32,50,205,104,65,207,170,135,95,18,245,87,168,136,131,133,161,132,241,254,125,144,202,95,129,64,76,228,90,171,61,26,232,218,98,98,125,155,81,173,71,109,65,61,45,160,27,124,239,85,18,181,247,28,12,112,14,246,101,169,237,160,251,118,31,147,219,65,131,237,160,249,183,3,115,53,161,111,6,187,183,220,69,217,27,130,102,110,8,221,191,33,80,83,121,166,30,107,255,41,29,178,179,238,61,174,227,14,229,196,122,232,195,0,241,160,15,132,130,164,204,82,211,176,35,217,83,81,212,29,17,185,139,36,246,221,12,251,11,6,19,119,201,192,137,176,244,68,152,7,185,129,29,213,254,19,250,97,8,222,52,136,200,25,0,246,162,36,58,124,54,126,146,45,145,139,107,226,225,71,28,67,120,142,132,4,68,107,202,73,14,221,68,209,255,19,146,113,41,158,241,71,146,103,52,36,207,72,185,81,4,22,51,62,150,174,16,66,46,177,60,252,80,12,16,113,203,87,127,136,220,84,70,109,76,26,129,254,171,96,98,3,150,118,192,9,106,126,78,80,227,186,226,4,53,174,41,78,16,238,1,39,168,151,130,7,4,248,172,85,99,10,11,224,4,193,220,31,56,65,141,7,37,193,161,129,80,181,134,77,17,64,187,73,150,143,1,191,87,200,53,31,195,167,165,24,62,107,38,49,83,6,113,196,51,115,35,214,191,49,8,134,3,214,64,168,49,7,87,71,23,162,249,19,145,47,108,32,100,192,185,205,213,139,208,168,10,61,60,35,94,236,18,230,11,226,97,98,100,44,2,97,185,138,48,244,172,99,112,230,82,217,10,3,161,51,26,210,179,34,71,231,20,122,96,94,187,40,43,80,34,32,13,28,98,112,64,163,4,75,138,67,55,29,35,104,120,12,102,136,194,22,249,16,60,142,147,249,69,74,2,66,231,69,25,122,122,96,49,74,196,115,95,56,134,255,160,177,151,108,12,140,189,114,21,165,92,0,206,110,46,72,128,128,224,197,151,11,82,190,86,232,11,41,199,207,73,138,58,46,176,172,199,88,74,241,198,60,121,5,126,188,249,174,46,38,166,149,216,182,107,32,47,142,49,96,196,14,102,15,149,20,153,138,13,7,223,184,25,119,2,162,23,50,140,64,244,33,140,186,198,166,146,176,75,228,143,181,12,36,55,40,223,148,204,97,120,25,164,83,101,96,172,75,49,228,154,134,94,231,4,77,178,41,82,222,42,171,167,225,57,145,49,75,132,177,97,249,85,134,151,20,57,216,129,100,145,48,142,5,38,140,6,199,93,76,249,29,119,53,232,148,83,72,240,203,129,249,212,28,136,155,2,185,86,211,225,220,184,156,185,1,82,19,12,78,89,76,120,16,132,155,233,40,106,251,25,101,105,192,157,129,140,213,20,25,219,35,143,120,251,42,184,105,112,244,49,36,72,8,226,214,48,145,68,68,218,223,51,156,19,145,184,75,6,35,15,89,6,121,200,178,201,67,150,77,30,178,65,201,67,150,65,30,178,12,242,144,13,74,30,178,12,242,144,101,145,135,156,196,237,173,30,188,4,177,14,49,170,247,136,177,18,169,54,144,90,102,75,208,244,247,99,220,63,17,128,180,0,235,93,173,117,51,72,99,5,77,182,138,57,113,69,48,99,172,100,239,107,73,7,190,241,62,1,215,16,148,179,164,11,50,93,93,5,7,213,65,156,12,134,206,192,83,66,101,201,36,171,128,41,36,21,147,182,0,67,104,143,148,72,127,115,171,24,187,9,194,36,140,93,80,148,244,252,146,196,232,205,66,223,20,23,118,28,101,205,224,222,130,234,43,116,187,74,119,167,156,97,77,87,89,60,42,251,71,21,255,57,195,254,49,215,226,134,55,12,13,191,78,207,74,18,98,6,221,156,177,167,206,180,153,234,125,155,73,197,32,243,51,24,90,154,193,248,255,205,86,250,23,6,102,241,144,238,8,57,76,79,99,150,107,249,149,170,25,102,0,114,117,231,43,76,170,188,81,169,18,16,89,190,144,76,40,70,98,74,114,222,234,234,34,180,40,170,115,237,96,67,120,187,27,0,103,66,13,156,178,116,160,22,148,132,73,145,11,242,88,8,28,112,117,112,79,90,38,177,7,152,184,101,180,149,14,35,195,53,17,110,67,215,17,234,165,218,246,244,6,192,54,231,90,41,198,57,61,65,78,4,75,151,173,31,43,122,235,131,33,158,180,6,31,164,58,176,87,236,243,81,2,138,169,165,128,135,133,179,104,94,20,217,87,165,25,71,110,246,67,163,172,255,119,118,153,189,205,183,197,142,101,126,123,74,80,44,208,56,30,243,73,186,146,96,209,150,21,97,204,19,8,198,38,41,169,23,191,216,71,68,78,166,185,23,14,87,146,110,232,176,127,143,172,99,139,195,242,39,196,137,232,147,23,159,253,98,31,74,104,196,190,47,246,17,123,17,142,24,95,210,177,237,83,119,244,17,145,55,184,113,95,20,141,251,34,94,24,50,104,73,182,41,12,208,214,99,171,83,229,185,24,145,172,187,32,11,228,117,116,94,148,20,74,138,43,74,10,129,48,64,27,183,121,184,117,242,197,11,72,117,101,216,135,41,114,52,95,60,63,136,5,156,7,68,235,115,12,115,163,100,238,204,30,37,148,46,97,102,2,168,4,162,232,44,220,43,68,101,222,36,106,207,144,244,158,33,25,123,134,200,29,113,210,91,109,146,189,131,72,198,14,18,202,130,148,12,172,115,124,208,38,228,134,97,153,111,68,189,58,222,134,81,235,35,175,169,101,15,73,103,67,240,81,73,121,36,13,143,199,228,151,154,21,51,135,162,155,14,186,216,51,29,195,154,128,190,95,158,40,232,225,171,46,45,137,68,198,123,118,99,165,140,212,162,247,185,39,6,101,245,162,80,169,76,211,162,81,38,10,226,226,149,59,124,233,111,236,184,120,241,142,62,226,19,8,138,103,253,229,190,84,65,68,48,102,57,225,90,195,173,189,189,189,251,181,218,148,209,69,218,16,52,146,86,211,230,99,214,154,125,119,160,54,143,97,36,53,56,242,36,70,211,208,208,70,91,128,230,65,58,26,24,163,8,9,40,224,60,29,169,60,136,29,57,210,194,184,99,196,178,126,67,7,108,36,111,223,164,49,12,85,24,230,31,142,105,180,15,141,105,216,251,96,26,133,138,212,198,41,246,246,71,63,77,197,163,210,149,192,80,34,110,207,158,82,146,46,139,138,48,137,29,193,112,92,74,233,145,142,130,171,241,224,124,20,110,114,99,64,210,210,148,140,156,122,209,232,229,9,228,73,47,145,108,112,77,68,29,202,35,55,16,119,66,168,73,49,211,225,207,66,83,9,1,235,4,56,66,100,79,217,210,248,148,141,86,170,39,198,53,17,66,143,56,100,172,96,27,217,169,144,12,144,152,252,245,204,117,30,228,24,249,127,127,145,255,68,61,43,33,59,67,62,194,50,108,232,26,117,191,41,163,11,238,18,12,220,37,230,131,187,196,252,68,148,90,13,16,124,0,140,230,131,17,221,106,32,78,160,129,112,109,155,27,108,32,43,244,250,6,230,64,228,118,237,241,111,54,244,122,127,61,215,160,17,169,142,86,110,130,216,19,81,166,13,46,126,186,202,140,132,78,12,153,245,38,168,122,100,96,61,102,113,189,84,51,65,255,42,89,121,136,16,134,76,26,78,250,143,212,19,113,160,65,59,104,176,28,180,165,157,167,166,10,100,80,73,220,53,20,183,215,64,107,53,14,54,62,60,142,134,64,83,226,226,129,29,146,132,183,199,32,98,195,176,133,90,42,92,60,119,3,181,154,141,219,18,145,13,15,212,98,52,69,12,242,144,182,217,162,34,162,124,3,65,60,17,224,180,129,214,50,221,135,56,97,6,128,221,232,60,189,30,84,80,76,25,128,81,232,64,181,68,196,225,207,28,35,105,163,23,47,225,205,207,41,26,251,249,151,25,191,85,29,99,181,51,241,213,31,127,245,199,100,17,168,44,35,109,174,134,38,114,154,222,147,17,118,66,30,222,247,203,138,141,130,37,45,23,108,162,101,125,116,202,1,3,75,101,175,171,148,189,24,108,63,1,58,75,23,140,133,125,243,54,193,63,182,22,236,29,34,113,199,0,64,56,84,73,76,21,5,202,84,74,105,156,84,32,109,31,153,235,89,195,253,76,126,169,74,127,142,161,159,168,238,143,109,10,190,184,146,7,155,23,213,210,249,88,229,200,163,20,243,75,74,136,69,204,244,233,197,169,8,53,70,33,79,179,166,34,239,113,102,23,130,225,255,188,168,150,81,111,25,228,17,176,115,209,124,13,97,15,142,228,24,229,22,222,156,12,39,167,229,106,200,31,101,212,17,10,225,209,140,187,150,160,150,252,121,85,97,33,174,176,144,199,198,157,209,150,127,38,41,64,154,43,31,9,177,145,169,28,36,104,224,23,137,139,113,118,173,100,18,166,146,2,160,128,136,164,189,48,62,145,162,190,136,138,39,152,175,104,119,8,87,192,166,146,145,243,208,80,4,220,14,8,146,159,131,59,30,68,105,225,89,44,250,45,248,142,138,137,245,138,162,107,61,45,26,58,254,107,156,53,130,22,13,237,80,81,133,6,46,81,141,69,64,230,154,75,138,48,237,236,216,205,232,136,4,167,12,203,80,161,209,65,84,104,24,149,91,103,61,106,155,24,152,212,26,55,136,60,235,209,60,14,131,38,249,34,29,185,6,236,115,64,129,130,114,205,46,84,225,67,48,182,146,250,192,45,144,77,102,124,46,150,155,26,154,175,34,4,155,194,145,250,239,82,180,253,149,71,163,1,232,13,44,85,77,140,203,136,66,63,13,85,185,224,16,15,172,145,99,164,153,52,142,33,168,16,178,223,78,159,94,97,60,190,7,75,247,74,121,24,137,245,48,156,13,60,140,226,129,48,140,9,248,202,128,61,149,7,133,193,77,30,178,167,58,140,135,129,94,135,243,143,44,144,37,63,197,142,98,199,127,0,205,30,70,76,221,71,255,143,110,15,73,59,160,134,117,225,63,106,25,158,76,207,64,243,236,37,208,94,143,46,202,80,20,195,52,64,77,207,245,198,34,16,28,202,105,232,106,26,84,77,67,195,105,104,56,13,205,175,40,214,212,52,192,179,2,109,137,151,3,214,115,32,92,156,82,20,211,148,162,88,87,164,22,77,43,138,169,79,81,172,225,4,190,17,64,134,94,229,21,121,224,166,99,248,143,82,110,199,107,24,81,225,185,200,194,40,17,239,224,230,7,15,110,40,128,88,64,188,45,175,222,254,130,63,220,0,152,196,229,115,67,156,130,3,43,194,13,21,37,195,228,6,215,37,22,3,107,63,91,236,87,189,49,236,65,22,149,210,26,11,226,62,172,0,190,109,4,67,112,165,18,111,128,65,24,196,226,83,102,20,24,170,3,165,95,242,80,183,81,36,47,236,184,203,196,190,71,188,124,56,4,41,160,72,26,99,143,226,68,4,107,88,49,216,139,142,194,196,136,242,148,158,203,137,96,53,108,54,39,226,158,71,250,32,205,153,172,33,201,4,121,246,28,151,108,52,17,117,96,216,77,21,47,69,92,134,124,20,6,230,12,145,134,99,127,253,219,27,207,125,254,145,31,138,143,71,137,39,99,36,194,252,176,253,129,251,155,175,203,40,50,108,24,239,176,90,217,22,18,73,187,164,252,194,35,113,140,125,64,65,219,81,194,137,164,193,139,113,167,112,160,169,160,75,13,187,60,245,176,191,75,151,14,236,212,101,246,24,176,162,45,137,167,163,72,98,103,164,84,179,37,25,69,197,158,59,251,136,184,241,206,62,98,111,133,35,207,14,184,154,29,68,161,161,225,41,72,130,208,56,15,66,207,242,171,170,227,204,78,162,150,191,206,53,48,100,100,189,27,140,219,91,57,133,214,196,62,175,201,250,86,23,67,11,166,122,230,181,26,190,47,223,134,69,176,49,228,147,33,153,59,77,236,2,106,94,179,67,242,20,7,99,16,240,32,199,148,59,114,98,226,157,47,250,50,238,120,219,82,208,86,131,51,137,185,113,187,99,196,168,40,181,36,97,242,24,77,229,99,133,80,150,120,14,0,207,161,212,106,68,0,139,164,137,124,101,104,174,97,240,24,77,244,254,29,131,199,104,98,12,198,185,68,211,29,27,29,12,56,208,49,182,250,240,167,196,101,37,130,205,48,108,134,97,51,47,254,205,107,102,108,42,92,38,207,110,173,68,181,150,10,127,120,8,108,115,37,21,213,147,73,65,249,29,33,36,205,195,82,212,147,102,165,72,43,72,48,148,81,141,42,58,138,10,160,163,44,112,148,201,38,121,120,42,4,1,17,3,158,248,45,184,253,100,146,122,36,233,36,15,209,18,63,31,227,33,43,240,94,9,110,210,235,237,199,233,188,40,77,175,223,126,47,70,94,84,207,170,27,165,128,90,4,245,120,210,129,17,126,78,238,57,54,88,132,159,125,159,57,134,17,126,236,199,125,109,64,183,153,93,204,139,18,251,113,26,37,226,158,155,20,170,196,129,169,64,33,128,130,37,47,250,16,69,44,92,31,79,243,162,153,201,232,118,237,248,144,201,232,56,69,123,21,72,59,85,237,69,25,194,19,28,84,8,166,109,56,16,251,20,132,31,232,227,162,6,198,64,183,153,235,203,72,85,23,23,183,239,240,125,30,119,81,191,203,112,42,137,94,3,1,91,46,244,219,144,55,237,8,134,234,24,229,170,161,41,242,150,149,176,2,228,253,139,49,141,69,118,246,90,50,120,86,220,189,176,12,5,56,71,14,186,8,72,169,21,81,81,33,48,165,22,236,241,111,48,200,129,192,85,50,6,204,52,164,194,73,114,221,101,173,46,6,17,230,96,74,148,34,193,61,251,92,30,140,187,154,58,195,37,29,98,200,3,60,0,116,72,192,71,135,4,212,1,174,33,185,201,33,48,79,1,230,160,203,87,234,74,117,128,51,117,128,131,168,3,215,101,33,234,25,97,61,212,1,30,80,110,1,106,83,106,233,211,91,243,157,222,44,203,204,11,101,54,12,3,213,5,5,67,195,21,130,238,81,212,126,140,22,114,3,233,18,22,247,168,28,125,62,6,199,241,5,59,243,248,49,235,78,234,151,243,167,5,6,90,202,28,20,101,33,41,123,97,61,83,44,195,208,88,147,157,201,141,81,31,96,172,41,168,210,135,43,163,75,12,110,75,85,34,51,47,53,54,241,36,27,59,105,218,240,67,43,38,42,172,83,166,133,5,234,76,244,15,102,97,129,210,95,159,205,68,134,189,133,230,183,183,240,44,164,172,93,103,27,132,103,79,242,79,31,197,13,105,86,32,80,172,240,58,132,51,69,10,159,73,130,41,64,192,27,206,213,228,143,233,210,69,104,138,15,118,186,144,48,142,51,123,164,208,29,3,5,73,154,96,73,112,118,103,73,187,80,114,71,16,37,1,188,12,212,107,105,223,3,134,41,112,21,199,254,117,224,216,111,240,203,157,152,231,193,153,54,94,53,61,227,85,211,111,188,74,189,47,191,84,229,64,75,153,162,70,16,3,152,10,61,160,11,27,113,13,159,249,41,225,122,173,102,10,229,85,105,212,50,93,49,92,106,195,220,68,189,224,86,220,39,21,210,50,165,66,20,113,151,238,147,10,217,41,31,48,137,127,70,41,169,16,69,169,144,25,71,5,112,58,137,160,237,26,232,14,104,122,81,173,229,88,224,28,75,75,110,84,210,84,32,192,247,82,207,22,209,246,133,95,80,128,82,80,162,153,80,66,2,155,122,102,11,103,134,146,128,25,73,72,233,126,72,9,29,245,104,116,38,241,82,173,41,193,21,64,106,79,198,183,143,179,196,176,202,41,75,112,205,211,193,185,160,77,206,116,202,30,248,237,19,148,105,17,252,250,83,250,4,132,4,158,169,158,40,41,189,98,156,88,219,113,99,163,59,11,58,16,69,80,137,109,34,247,144,143,108,134,205,13,81,172,40,35,67,204,142,35,122,49,240,208,48,196,45,135,49,147,180,33,73,223,106,240,1,169,0,130,219,0,143,29,73,120,162,95,136,164,148,209,249,3,78,247,237,20,137,56,221,129,104,16,6,218,146,145,5,42,248,57,83,28,48,113,169,143,35,70,201,141,226,137,51,36,55,46,153,73,116,14,86,51,62,206,152,102,135,66,128,117,209,57,181,182,158,125,25,96,9,254,57,112,111,161,72,23,114,136,130,164,97,120,126,176,106,160,42,54,178,46,104,28,21,205,225,249,174,129,118,72,168,154,198,60,195,41,9,31,26,246,50,209,247,102,218,117,47,141,55,172,13,89,4,180,178,240,82,158,98,105,106,215,227,104,82,116,239,61,71,60,186,151,14,32,159,65,135,89,226,39,164,57,131,5,205,238,13,187,81,157,158,173,183,119,30,57,115,111,170,43,232,244,172,189,125,224,185,61,245,143,152,219,7,238,237,157,143,210,219,166,148,212,0,244,213,74,83,205,169,93,131,14,160,72,206,1,118,205,119,116,204,242,158,159,202,242,110,35,125,36,241,213,9,96,56,77,1,50,13,68,91,99,100,19,64,153,81,187,38,37,74,236,72,29,114,58,164,79,209,166,18,47,26,180,216,65,69,47,133,237,88,148,242,236,215,4,141,219,91,84,24,37,80,19,89,14,166,29,228,76,92,251,249,62,34,108,155,115,106,235,150,135,144,213,137,166,180,8,221,26,237,161,219,105,119,202,89,128,101,103,107,70,45,60,153,172,73,158,22,146,23,0,182,159,161,153,202,64,220,196,168,194,120,95,158,78,202,146,27,239,179,244,125,75,197,234,91,166,76,212,173,79,100,8,133,83,41,170,11,50,92,206,65,224,235,115,57,103,202,229,220,68,50,91,71,61,60,120,158,35,92,61,80,254,3,91,127,238,235,255,204,214,159,250,253,63,179,117,56,200,255,105,173,191,249,249,1,173,203,79,212,175,64,79,107,188,57,83,152,25,63,177,20,74,30,76,241,45,143,7,201,56,157,60,117,102,197,183,228,41,47,28,168,88,208,63,204,92,206,176,188,255,136,102,7,89,215,13,105,107,5,117,168,202,127,114,24,161,90,42,9,247,188,40,122,230,168,84,39,83,137,82,239,123,49,29,125,146,55,200,215,157,167,19,165,22,34,146,188,181,82,122,254,127,200,36,6,89,224,139,125,238,208,120,104,42,135,170,204,8,19,76,105,169,189,207,254,8,196,129,202,82,132,161,64,68,105,192,22,2,89,223,34,232,2,12,251,193,105,43,39,141,137,40,225,196,39,138,1,169,125,8,73,107,130,58,41,98,231,90,192,122,65,38,22,98,125,28,192,172,226,112,42,219,227,69,158,233,55,85,227,150,112,2,118,140,170,72,16,156,217,133,16,61,208,202,28,159,37,155,92,12,147,30,220,226,30,214,241,96,3,225,228,129,109,156,8,178,212,37,69,16,235,177,58,215,242,78,140,139,210,151,23,90,75,252,58,121,28,104,4,188,73,20,161,107,198,211,249,238,97,225,212,218,200,33,174,118,32,121,92,202,104,150,90,141,84,235,177,137,163,217,20,205,168,229,18,162,189,239,17,155,217,154,231,18,200,49,68,157,56,121,99,31,17,134,205,185,110,235,62,211,56,57,209,198,148,125,22,80,162,64,248,219,91,184,33,73,46,93,254,152,110,0,35,63,49,174,97,11,150,167,205,84,20,143,129,168,125,27,133,204,3,224,50,146,229,206,52,192,92,78,182,181,56,109,46,199,210,230,114,236,140,230,114,126,55,40,202,53,229,3,197,192,125,222,180,22,80,218,227,37,210,76,247,174,41,103,42,141,51,207,153,74,217,220,129,65,39,108,81,95,43,130,88,245,89,182,19,48,92,42,168,28,46,26,164,146,244,96,9,14,150,249,181,186,11,83,95,32,38,1,138,40,209,155,38,20,197,226,41,11,128,132,25,133,4,13,90,237,23,160,253,189,162,68,174,68,120,102,77,102,160,229,33,103,31,218,242,240,172,64,176,4,40,165,241,136,24,176,249,129,21,152,206,148,211,142,111,135,251,246,189,117,174,250,114,60,250,26,18,157,144,165,126,225,42,149,104,95,142,79,141,202,207,116,91,51,32,66,51,36,172,120,138,44,240,50,201,121,73,74,64,69,171,69,169,128,64,171,64,106,120,249,229,172,121,148,249,244,254,20,173,117,208,46,66,152,25,70,8,41,1,141,228,59,158,202,176,61,176,190,191,81,115,122,138,182,211,110,152,191,160,144,216,122,178,70,156,57,41,129,17,228,217,160,96,205,131,105,137,242,198,17,113,60,7,36,21,124,206,55,157,9,172,158,207,225,115,214,64,168,4,96,249,39,52,244,227,95,112,167,59,209,51,37,49,119,241,9,13,116,119,195,105,124,148,187,147,79,104,168,222,115,64,244,231,110,114,105,145,91,210,64,119,10,205,209,211,134,147,130,9,157,79,240,94,127,167,159,236,116,199,45,151,200,103,156,239,222,199,138,32,133,57,41,226,19,151,23,9,230,89,197,9,29,99,59,80,241,53,179,53,66,45,239,13,206,75,26,232,110,94,146,26,212,199,92,82,228,148,136,239,111,17,207,109,145,173,208,184,229,132,150,59,186,149,105,118,55,240,127,66,3,223,54,136,148,5,94,172,203,138,92,137,200,119,62,220,71,196,46,249,143,220,253,220,40,226,19,26,200,138,34,103,184,160,142,46,40,159,208,112,238,158,3,220,40,114,70,121,7,165,28,53,100,192,19,73,97,240,208,49,55,34,200,194,34,30,105,115,137,120,242,61,178,40,26,224,37,203,33,110,162,190,217,181,197,176,184,147,43,122,123,183,11,194,243,90,121,158,232,237,101,203,138,142,57,81,177,191,135,135,4,111,229,33,53,61,123,165,132,171,252,136,56,225,37,13,124,55,47,225,180,200,245,160,215,71,212,115,83,62,31,215,96,239,230,227,252,207,123,123,169,170,160,99,5,115,64,5,175,7,134,21,244,1,21,100,31,176,96,76,62,34,69,110,113,3,185,196,165,173,46,105,61,38,94,36,109,226,208,1,35,46,158,183,219,133,158,116,13,241,226,151,250,72,188,84,35,238,184,6,220,34,110,41,47,230,244,224,110,119,66,3,223,227,22,111,119,39,54,240,61,188,152,143,147,197,113,219,187,249,56,181,215,114,119,202,167,242,118,55,159,168,238,240,98,94,186,29,238,120,205,117,195,192,204,110,200,5,62,174,129,10,136,7,42,94,145,221,150,83,18,111,117,195,226,220,77,7,221,73,178,67,186,205,157,184,211,45,93,14,217,233,72,13,219,99,70,194,22,55,196,207,84,109,199,80,242,176,113,124,210,158,3,46,21,123,159,87,105,26,251,118,157,3,161,123,68,239,183,94,46,111,140,50,97,138,144,44,237,251,253,171,90,163,220,111,65,120,130,55,56,41,194,141,122,66,190,13,113,59,168,120,35,168,234,157,32,226,141,32,86,17,97,144,52,132,22,185,193,34,201,198,235,96,85,178,255,179,1,85,117,239,243,68,150,56,240,79,34,32,130,178,203,131,175,235,234,113,223,174,115,160,200,73,17,164,214,192,200,138,199,220,161,60,186,56,26,228,97,240,160,228,67,121,180,213,37,199,120,46,39,60,183,177,200,29,34,40,196,51,212,234,49,97,34,28,72,122,187,75,208,69,146,131,13,88,91,43,10,13,230,71,3,94,180,0,230,229,102,8,55,202,127,218,29,29,146,6,28,122,176,143,136,145,226,217,135,210,241,10,226,142,46,218,184,221,234,80,65,91,37,244,157,226,6,234,140,215,234,249,120,94,188,103,249,60,31,248,45,144,120,199,5,157,15,25,136,205,184,75,184,30,231,165,13,225,237,46,44,130,26,212,248,134,240,118,103,60,31,199,39,238,116,74,249,16,21,85,17,67,1,139,61,112,148,228,242,33,114,174,188,148,79,224,227,237,73,17,211,146,184,139,7,4,155,69,143,68,121,30,244,250,108,52,206,243,80,50,74,102,209,167,162,242,113,13,235,147,191,24,127,230,168,188,60,18,141,71,114,49,47,101,64,30,124,240,252,154,204,231,57,144,163,77,61,219,157,126,134,189,97,157,168,191,206,103,178,234,0,242,144,8,197,25,174,170,71,44,241,165,187,251,136,24,37,246,122,208,196,201,193,58,121,243,163,7,249,164,221,188,180,155,235,112,49,193,158,132,54,122,185,226,149,135,208,13,73,92,39,113,213,120,113,248,225,65,90,17,4,90,25,215,16,238,77,183,0,226,227,61,166,171,67,22,21,94,50,135,221,98,202,169,11,150,70,60,164,168,134,29,9,65,174,168,146,6,190,231,0,151,55,110,151,213,246,155,113,65,196,45,168,207,8,136,190,80,92,232,9,65,196,237,222,29,9,194,16,254,30,15,243,208,193,111,75,148,189,109,235,182,134,111,221,122,236,13,125,123,67,239,93,63,216,127,152,201,111,248,128,75,142,57,38,171,231,17,149,14,67,220,98,198,121,8,118,178,61,172,16,195,221,201,14,8,15,181,30,179,135,21,90,172,158,155,24,79,5,234,10,194,205,214,99,118,65,170,166,138,223,97,23,200,137,5,74,216,241,176,107,212,176,87,114,16,230,170,53,200,12,91,168,98,41,151,72,170,203,192,99,47,32,14,69,227,78,144,231,58,33,121,11,124,216,128,113,209,5,75,58,97,214,35,119,34,198,232,211,54,129,96,175,129,56,227,85,219,225,184,242,220,128,232,195,155,56,17,167,65,253,232,48,76,14,164,203,186,152,75,7,36,182,211,153,220,232,124,247,46,183,184,1,16,73,175,59,110,14,40,113,32,31,241,184,134,222,55,247,125,169,123,59,47,238,30,164,146,239,169,51,94,146,87,173,16,141,143,161,79,201,60,136,180,103,198,45,161,183,102,116,165,218,152,195,136,197,67,34,212,234,134,68,104,73,20,98,6,189,146,163,114,189,91,190,148,187,107,137,229,25,252,241,144,96,73,241,246,157,125,36,174,18,173,171,183,168,40,93,22,181,5,56,45,234,133,160,174,112,130,156,28,116,38,66,238,202,20,180,162,180,129,56,37,10,88,193,184,196,128,7,158,235,35,162,8,187,234,38,103,0,94,128,7,227,176,46,18,128,37,89,0,44,65,216,240,137,153,192,43,150,184,99,251,182,172,135,234,174,83,242,129,0,6,77,243,137,8,44,152,170,133,230,14,71,66,32,112,167,141,69,46,21,37,139,162,150,71,62,166,28,24,67,42,102,11,70,180,129,92,222,98,251,38,72,189,118,11,102,140,145,64,80,236,16,232,46,34,160,124,140,187,5,60,36,232,166,184,107,163,121,147,30,119,131,16,173,199,13,123,185,1,227,110,136,219,188,160,145,71,120,193,162,4,4,228,37,60,200,67,141,60,196,195,141,9,39,4,19,73,199,102,28,194,115,4,139,187,57,11,112,154,150,44,38,221,48,14,33,213,188,174,190,189,48,118,17,230,161,84,203,242,0,224,225,69,9,52,172,193,212,75,144,66,219,84,107,9,9,175,85,76,82,244,173,226,1,73,155,190,146,195,41,40,60,141,69,69,184,75,44,220,29,58,102,149,214,235,69,143,151,89,10,62,76,76,155,206,117,53,54,144,38,44,128,76,133,69,224,186,5,17,115,122,4,225,122,145,131,206,93,75,244,122,149,210,6,28,242,101,31,17,174,36,146,232,49,239,219,129,24,191,86,104,240,69,10,173,209,67,34,248,101,162,149,214,41,220,117,212,255,4,87,105,58,35,13,225,237,124,124,183,218,104,106,109,212,237,113,72,145,224,19,243,140,79,34,103,120,34,47,225,59,182,193,70,90,194,132,42,185,125,160,156,238,53,29,83,110,188,235,76,39,4,102,235,224,178,54,248,152,28,221,107,204,231,97,54,254,0,134,228,37,114,217,12,181,212,4,210,110,43,99,37,26,119,228,46,151,252,221,145,144,220,194,232,4,28,229,230,49,151,46,150,80,230,209,86,73,85,80,30,109,5,194,34,20,197,173,142,105,27,141,26,182,39,194,3,226,141,176,252,52,97,53,93,170,16,45,164,120,25,230,140,246,48,114,13,59,36,143,197,189,17,136,206,151,174,196,236,97,206,152,116,37,15,105,251,43,5,196,209,80,220,25,203,3,226,68,56,238,72,132,125,93,36,238,112,30,16,135,163,113,199,145,84,188,61,204,113,241,43,117,8,54,229,64,40,178,61,17,103,132,252,61,20,117,70,226,231,236,20,9,226,132,49,23,152,99,251,163,173,99,186,245,176,132,74,24,224,228,4,33,123,107,79,202,3,67,71,42,9,33,169,199,21,232,209,90,94,242,121,69,242,63,111,219,231,15,178,237,185,19,199,239,62,245,1,220,98,170,15,96,1,15,242,200,160,91,30,156,84,217,178,168,86,8,30,226,130,58,57,2,56,223,108,76,83,160,48,12,243,246,113,26,211,12,5,76,35,122,58,227,238,48,158,3,200,102,72,54,178,137,120,200,6,170,229,240,33,124,88,35,31,202,135,249,240,77,142,68,64,57,139,18,78,78,22,190,41,128,136,162,24,146,31,133,85,18,223,120,19,116,81,160,11,95,185,155,234,65,231,57,113,23,77,243,121,176,81,82,164,141,137,40,139,228,89,60,196,237,198,168,206,67,60,87,110,220,16,183,23,232,138,144,181,33,22,38,183,33,186,37,36,51,136,59,122,36,98,241,156,121,209,92,133,129,142,132,56,117,136,48,45,39,159,19,62,82,254,183,168,200,13,202,53,209,32,91,126,214,154,240,51,173,9,160,161,193,215,4,99,18,129,232,6,34,236,177,122,30,132,20,224,184,54,96,9,2,171,19,148,171,19,244,86,103,111,228,195,175,142,210,61,159,109,117,84,100,232,15,184,58,244,12,171,67,185,206,199,12,178,58,114,97,36,5,15,135,129,157,6,117,16,64,157,47,244,132,147,111,241,32,31,33,255,243,118,191,61,216,238,183,206,4,105,178,128,147,247,133,52,102,8,135,99,55,3,210,131,126,7,111,132,255,47,248,14,206,4,105,249,29,140,62,251,119,144,1,105,170,32,205,226,18,210,233,227,21,142,190,60,196,85,153,144,30,251,17,240,76,26,210,24,114,149,129,248,208,131,180,138,203,10,66,69,164,213,20,164,251,66,255,75,144,198,160,248,41,72,211,12,72,171,175,38,168,24,4,61,19,218,52,5,109,58,16,218,68,65,155,2,180,115,51,176,15,207,87,204,106,138,220,8,126,40,114,35,240,127,33,185,97,200,73,230,138,189,95,66,206,82,130,194,230,33,209,251,37,21,41,49,196,115,177,176,22,242,42,166,153,132,255,33,73,194,222,151,36,145,196,45,68,116,164,128,100,35,40,222,227,6,158,212,6,46,129,129,193,96,211,75,160,251,150,64,247,150,64,238,210,193,41,190,212,147,244,84,140,172,37,8,243,176,186,157,189,4,103,120,18,57,195,147,179,80,124,198,25,1,107,124,8,192,26,18,176,138,176,230,70,26,176,16,200,210,80,52,219,241,176,71,242,128,89,191,194,36,141,240,101,191,31,161,78,249,0,188,77,207,128,77,0,159,244,211,77,57,140,80,195,146,231,163,14,97,172,93,194,115,151,193,234,203,197,143,163,79,195,188,168,110,225,129,143,15,92,198,67,113,76,158,15,144,128,8,218,42,93,48,206,91,50,43,36,29,65,155,168,116,57,113,204,107,170,67,4,237,208,178,40,68,66,151,84,131,238,69,208,214,49,130,118,8,34,104,7,68,229,76,98,98,128,237,249,120,35,228,143,183,45,42,44,224,53,142,185,38,143,46,150,35,92,150,136,130,189,1,134,243,142,104,86,4,124,233,114,197,126,245,1,193,7,115,200,251,96,124,115,114,116,11,104,107,16,100,200,57,113,147,231,33,205,102,79,1,35,65,71,7,27,63,201,79,254,79,228,90,244,236,114,45,75,210,200,226,246,8,58,170,224,199,118,75,132,7,248,168,26,182,79,254,14,175,97,123,35,144,56,106,111,36,110,75,194,251,120,78,188,24,88,43,57,183,62,53,55,81,226,237,217,53,196,18,39,191,223,71,68,97,138,173,207,181,64,253,160,203,163,99,28,17,199,195,168,175,202,86,60,140,200,86,60,20,127,16,197,67,176,200,157,220,64,119,58,19,133,230,140,248,136,138,135,226,180,226,65,179,132,238,140,128,72,186,226,107,102,171,67,249,196,229,206,136,6,234,76,207,208,65,76,110,160,187,249,228,76,29,196,228,6,214,64,57,41,114,166,167,149,17,193,184,106,193,202,208,61,244,12,208,68,140,248,48,154,136,81,130,58,166,95,19,145,147,210,66,104,132,89,124,50,8,93,153,28,229,54,183,180,86,219,11,57,74,103,209,91,76,78,57,21,188,149,83,62,153,79,239,118,107,61,105,159,145,82,51,212,54,240,221,188,150,27,153,106,6,35,91,205,96,100,169,25,140,108,53,131,145,165,102,48,178,213,12,198,89,213,12,147,26,200,37,174,209,234,6,91,143,185,42,87,46,107,232,225,228,160,59,110,143,91,204,75,119,214,106,111,4,120,49,47,189,20,157,193,97,114,140,79,86,147,45,230,147,189,26,147,47,213,235,197,254,30,30,28,68,97,65,210,10,139,98,79,11,81,193,39,243,113,13,231,238,116,39,236,6,117,132,59,3,149,22,238,84,94,44,127,166,241,25,219,187,249,180,148,74,194,83,91,184,85,25,138,139,138,51,42,46,156,153,13,84,72,130,134,248,244,22,160,181,152,178,219,45,111,160,219,156,74,94,193,75,185,215,255,196,237,169,193,241,138,116,183,227,84,7,124,218,118,119,176,94,198,243,137,124,218,118,167,4,143,136,82,24,188,51,129,147,180,250,35,168,212,31,211,248,36,110,28,84,189,205,218,238,78,226,21,124,150,154,244,236,65,167,122,206,7,156,170,91,209,221,64,187,221,26,62,101,207,1,215,240,244,43,134,167,95,49,50,244,43,134,79,191,98,13,212,175,24,62,253,138,225,233,87,172,1,250,21,67,132,22,185,86,74,191,98,164,244,43,214,32,250,21,35,173,95,177,50,245,43,26,159,217,237,212,241,74,94,179,211,41,230,22,15,66,22,171,145,188,134,79,224,37,221,188,180,91,30,196,37,219,228,236,202,120,229,78,167,84,96,234,27,38,114,227,28,8,50,131,107,168,101,113,163,242,140,40,131,3,86,107,107,117,141,131,124,202,110,183,154,23,119,187,227,46,140,154,144,151,217,19,99,145,6,234,140,131,115,110,156,51,129,151,58,19,57,17,121,168,142,201,149,39,36,47,110,8,111,119,139,37,60,101,203,154,138,244,24,119,228,103,21,222,238,140,227,19,101,133,82,94,204,43,119,186,197,23,203,227,176,148,23,111,115,75,120,249,165,142,201,199,241,26,94,183,77,46,241,184,110,167,138,151,240,242,149,81,139,79,226,227,182,185,101,188,248,226,40,152,150,196,69,78,220,49,160,37,94,204,203,187,183,57,227,121,57,47,219,230,148,240,50,94,188,205,153,212,64,156,169,90,61,60,115,199,241,178,149,124,18,159,218,205,139,121,73,247,165,9,84,163,155,145,168,5,225,143,105,43,14,114,60,159,218,237,78,244,6,81,118,105,52,202,167,242,242,109,206,84,62,206,41,230,242,129,36,126,34,150,200,19,121,226,213,7,213,241,137,162,61,174,137,112,163,252,167,221,209,252,74,168,253,15,226,249,18,137,200,131,23,220,210,196,104,241,210,157,42,122,191,167,92,121,48,165,170,210,64,49,193,60,221,140,188,148,167,106,8,208,41,232,102,70,113,38,142,132,226,145,160,191,250,238,172,234,170,78,192,66,3,74,168,115,205,224,117,12,53,7,2,122,139,60,73,88,149,73,96,79,224,26,236,130,41,151,58,26,44,137,59,177,129,118,59,149,124,2,159,178,146,79,148,120,123,60,31,119,113,34,74,121,49,159,34,161,60,181,155,87,117,243,153,242,115,156,193,103,109,219,222,205,103,111,227,231,108,227,21,18,134,179,249,57,221,188,162,155,79,234,118,74,27,8,175,227,197,188,186,187,91,174,20,227,37,124,28,22,38,200,93,197,171,229,50,140,95,201,75,249,164,110,62,149,87,227,146,193,11,206,56,176,149,130,104,235,81,185,114,176,113,101,255,78,49,159,192,75,187,157,18,62,158,79,188,80,151,237,76,233,118,198,241,41,124,106,183,51,149,151,242,41,219,156,82,94,194,167,92,26,165,150,5,23,142,166,218,68,165,72,158,120,238,65,47,175,200,60,62,142,87,98,183,178,29,183,152,87,174,228,149,124,220,54,185,107,183,93,154,136,106,150,60,9,86,202,141,210,160,111,187,48,17,101,114,80,197,206,56,139,155,242,229,42,239,229,114,249,114,213,74,94,133,47,87,201,151,129,136,200,223,206,199,93,24,37,160,93,190,120,59,47,237,190,24,130,99,243,201,115,192,95,139,10,166,78,111,165,233,234,147,95,24,225,147,83,154,174,98,116,248,74,233,185,96,165,159,165,248,251,6,227,76,60,75,227,110,48,67,243,5,207,246,234,156,241,233,115,216,73,89,231,36,139,187,70,86,157,91,244,248,192,183,110,209,241,247,136,193,233,193,111,243,218,179,233,203,70,178,122,78,143,169,51,17,19,32,1,179,67,237,97,133,60,200,225,199,128,31,180,214,146,29,18,78,83,250,179,145,168,63,131,228,128,132,143,148,7,172,93,128,19,226,120,117,146,193,85,234,117,159,82,13,156,198,250,168,100,155,95,9,227,38,199,150,210,58,53,229,127,205,74,216,94,221,29,202,41,31,186,168,200,53,68,201,18,136,3,144,98,213,64,122,28,21,42,143,160,100,75,32,25,180,160,155,184,33,182,111,114,114,113,32,142,137,189,64,220,11,72,191,66,92,27,114,205,197,221,33,220,130,228,126,16,130,216,39,82,49,61,77,73,132,135,249,144,70,110,243,33,139,18,41,17,86,164,145,7,121,100,81,194,177,188,236,243,166,252,49,121,46,143,10,22,119,163,41,57,66,84,176,36,164,62,58,18,242,75,108,16,64,26,118,161,201,49,120,1,253,26,185,198,131,141,74,83,130,109,0,27,166,208,1,178,97,34,131,13,3,87,53,9,202,18,118,196,128,99,195,0,125,135,38,74,151,69,67,224,3,228,104,152,59,8,216,48,77,178,97,222,152,188,32,65,176,74,105,54,204,104,44,114,77,63,27,166,21,57,166,197,77,62,98,41,72,199,80,19,227,105,172,48,2,85,138,103,54,80,7,167,109,114,76,110,32,207,44,23,216,209,26,136,83,140,42,21,197,50,27,190,7,184,56,138,249,47,86,60,170,150,86,212,101,9,32,52,212,253,15,250,36,114,134,39,64,199,20,131,113,182,35,73,0,29,83,148,73,80,143,132,195,89,50,96,97,139,155,122,253,25,71,227,104,94,51,166,68,112,38,112,204,197,7,188,208,168,19,23,69,3,222,55,37,25,102,226,215,105,65,188,143,62,216,216,111,48,20,109,6,51,53,127,103,130,35,230,236,69,72,62,75,61,80,210,44,80,166,158,252,239,193,242,31,1,60,137,70,206,4,189,55,24,171,231,67,81,192,48,116,158,23,10,110,47,24,122,13,245,193,142,250,246,32,245,32,39,145,1,66,142,101,65,46,245,228,127,113,23,82,57,3,159,220,230,67,3,146,1,40,245,30,62,20,37,98,136,101,134,166,33,57,84,208,184,193,135,90,18,96,178,122,176,134,29,151,0,239,51,228,80,1,5,100,171,220,56,226,235,35,70,13,219,35,241,232,27,129,65,84,110,78,186,210,33,137,168,246,154,89,149,64,165,134,22,165,18,243,203,223,67,33,119,24,167,124,88,10,179,115,38,142,26,113,71,30,103,39,2,113,71,158,34,215,153,113,103,40,182,236,20,201,223,227,1,103,180,252,221,99,58,99,84,12,115,99,0,122,227,67,227,168,238,78,33,58,238,19,87,135,7,197,108,130,56,121,18,148,222,9,3,146,106,56,94,206,116,176,236,53,241,96,225,222,185,98,249,79,22,144,14,15,241,31,45,41,25,178,233,147,82,103,158,46,74,243,242,17,78,23,238,23,82,107,62,181,24,156,45,170,93,223,217,146,3,103,75,84,157,29,125,84,152,78,30,55,192,107,205,75,164,239,59,135,199,200,255,96,157,80,84,58,16,226,5,103,128,56,156,37,131,67,28,200,89,165,32,48,80,65,240,65,192,254,70,224,195,129,61,165,142,58,51,216,211,135,58,253,8,96,79,117,160,161,62,54,13,246,244,145,78,185,6,250,174,225,0,246,97,41,176,243,60,161,39,156,60,201,231,140,150,255,121,90,152,225,40,59,205,132,113,225,25,96,12,138,197,247,131,177,145,165,132,241,96,60,64,9,147,139,232,224,163,108,109,227,3,109,109,227,163,111,109,73,167,240,65,182,182,198,13,128,113,99,22,140,137,130,49,139,75,24,103,105,212,243,80,167,56,40,97,228,145,66,97,238,131,179,177,128,27,239,11,103,146,165,86,244,224,60,64,173,152,139,221,124,148,189,124,54,56,167,247,242,71,129,115,170,3,164,217,181,51,237,103,9,240,44,88,83,5,107,10,176,14,250,68,14,193,56,207,75,89,138,34,229,147,207,41,207,95,164,40,84,27,178,66,67,218,244,51,173,199,179,244,108,235,97,100,173,135,161,198,51,24,119,145,226,42,134,115,202,135,47,42,114,243,68,201,162,168,206,234,121,30,18,97,121,217,92,69,30,174,92,158,92,185,60,185,114,145,65,185,10,181,116,33,197,87,140,141,187,185,169,117,11,243,176,90,86,143,171,176,120,46,31,219,200,67,124,172,92,52,88,97,139,219,141,60,204,173,198,129,139,22,25,116,209,108,143,171,72,117,30,86,39,190,141,157,216,113,140,114,168,97,203,246,162,12,174,34,79,210,8,170,13,249,141,120,92,133,183,132,140,231,1,8,139,120,30,207,227,69,141,169,213,122,127,126,194,206,224,39,194,11,100,231,131,243,19,6,31,177,80,50,21,11,19,243,60,182,98,72,154,28,14,101,146,195,65,76,104,12,36,93,112,0,91,1,249,6,63,20,91,49,168,94,83,59,163,46,84,59,187,46,116,16,130,46,136,12,83,212,128,121,122,12,51,112,215,72,8,25,138,103,131,140,232,30,132,243,20,132,33,74,1,224,137,125,122,220,177,61,128,115,141,231,198,29,249,37,216,24,130,81,111,117,52,209,227,97,200,112,234,72,56,19,11,39,216,178,104,0,62,209,101,81,150,146,10,6,101,35,146,207,144,189,136,30,249,245,42,209,25,212,208,192,17,183,213,209,210,58,50,117,31,185,20,244,218,245,82,206,10,22,231,65,73,203,27,130,197,69,5,55,65,85,6,210,174,202,153,36,87,165,130,6,243,155,32,72,48,130,34,119,81,84,183,68,133,124,29,89,49,30,148,120,155,68,34,86,36,15,101,122,125,119,43,153,30,17,121,226,197,187,83,217,246,242,196,113,239,73,158,159,126,14,138,188,198,104,0,42,156,188,251,163,210,212,197,7,36,126,33,158,185,162,143,179,51,6,225,236,0,99,228,35,153,148,143,219,56,95,114,38,249,239,183,141,211,60,29,203,218,199,31,128,167,251,167,111,100,42,103,240,63,225,76,60,40,230,123,80,148,44,94,126,26,140,158,125,4,227,249,200,226,177,122,62,28,193,56,28,193,56,92,130,113,248,251,129,49,131,193,51,62,36,131,247,127,2,140,195,255,33,96,28,46,193,168,41,108,63,60,13,198,225,18,140,195,37,24,135,131,24,145,114,63,139,37,155,136,152,86,68,183,48,112,49,126,250,124,36,152,4,30,9,197,237,41,24,197,200,4,99,27,11,60,166,111,55,227,220,84,46,154,53,12,20,100,57,53,108,159,252,29,85,195,246,154,92,71,86,200,30,203,153,56,30,142,23,19,252,204,193,226,2,253,2,105,49,28,252,178,150,74,165,40,137,120,252,120,10,226,216,181,75,210,238,186,144,23,135,164,221,117,169,114,14,53,199,17,113,146,120,142,155,123,190,134,145,82,12,12,91,239,221,200,151,55,32,218,129,237,139,27,2,143,10,128,12,147,156,169,138,209,100,136,231,72,42,196,200,83,233,203,19,36,222,160,97,8,18,189,134,173,226,134,120,27,26,184,24,3,143,204,134,32,35,117,241,26,118,57,154,90,84,196,185,111,248,144,218,215,55,124,67,13,159,171,150,117,108,249,37,18,135,208,214,103,28,133,234,250,165,51,116,13,87,60,94,195,150,91,169,240,39,11,83,225,79,234,225,170,0,67,162,136,87,72,92,156,184,179,15,67,157,101,232,217,185,230,223,143,212,95,240,155,144,12,84,199,103,214,37,190,66,29,245,34,230,105,243,117,229,161,252,1,66,182,91,158,43,42,247,98,63,14,8,226,214,123,123,223,96,65,220,246,220,174,102,118,119,58,72,109,202,27,60,159,51,113,248,17,47,168,142,231,139,202,4,77,133,223,181,209,197,148,40,247,87,23,162,73,130,215,183,74,172,122,207,103,142,41,215,2,240,132,68,231,110,159,251,38,190,79,85,156,1,151,41,7,73,45,21,228,88,206,84,57,192,107,81,200,85,10,3,129,136,42,81,170,34,185,161,235,166,6,31,158,150,229,176,73,197,27,159,57,70,84,34,240,18,9,139,18,102,202,3,215,182,151,194,178,145,84,142,82,89,249,165,179,84,158,66,56,5,172,163,130,207,40,151,113,88,4,17,137,163,33,48,218,17,89,86,133,178,76,163,185,192,57,102,185,180,18,8,76,19,165,60,237,222,62,21,50,133,251,220,219,181,86,78,27,19,42,158,14,248,238,22,186,36,138,97,192,172,42,21,27,14,54,11,75,186,68,60,123,227,49,130,33,113,196,61,55,168,203,140,184,58,214,24,114,54,103,116,107,28,122,226,122,1,142,148,121,152,10,58,64,96,179,89,99,41,219,14,121,24,93,198,89,195,185,159,118,181,107,184,182,141,179,6,114,9,180,161,186,80,112,195,196,87,222,40,236,17,150,139,182,65,72,175,62,251,24,120,154,15,129,15,226,41,89,208,237,33,208,194,60,189,30,98,104,161,163,49,4,240,2,127,94,147,248,59,208,7,233,96,212,96,111,195,187,6,57,203,67,235,108,15,71,156,237,225,200,179,61,44,34,214,72,121,34,245,211,77,71,108,230,104,152,135,211,230,92,179,117,171,112,224,107,240,146,134,45,122,209,31,32,11,154,238,173,34,33,240,158,252,184,117,121,31,77,245,148,223,184,124,15,162,42,189,249,240,192,124,40,169,135,131,197,211,182,10,178,7,163,252,167,173,225,224,51,109,27,89,131,247,26,123,233,229,62,8,82,60,104,79,199,79,247,17,17,206,122,152,79,6,126,62,178,23,216,205,170,42,222,31,3,117,1,14,42,112,41,177,67,80,215,67,38,186,10,148,87,195,136,53,140,112,234,131,154,220,31,246,16,107,104,118,195,246,24,107,136,218,66,24,163,216,222,42,136,149,135,47,248,70,148,11,189,164,107,228,167,94,146,21,213,82,252,107,8,19,233,166,78,86,76,127,140,137,240,149,15,210,14,182,76,175,23,189,204,9,200,111,107,10,233,101,226,201,158,243,163,68,244,83,39,32,111,244,83,117,227,180,186,113,218,187,241,158,186,241,158,188,177,56,202,32,117,57,30,211,18,131,11,195,9,136,119,142,246,17,39,8,20,27,198,67,87,207,64,157,30,196,192,102,84,200,182,184,110,127,85,174,46,180,49,138,27,60,8,199,122,90,97,216,232,6,80,16,52,79,79,97,95,174,45,209,189,88,30,81,216,0,75,48,192,195,252,168,10,84,200,226,83,8,17,245,11,33,140,162,3,227,128,168,148,84,114,181,139,116,149,49,56,192,153,208,90,93,13,83,101,47,43,114,181,198,168,4,136,198,3,243,33,24,112,0,226,19,196,93,179,213,193,124,116,110,72,182,251,100,207,249,96,113,71,91,113,50,140,107,178,62,24,47,50,127,5,150,170,96,206,143,18,101,152,232,175,160,189,95,5,61,179,66,64,24,173,78,208,194,92,231,242,244,209,49,142,166,134,0,208,36,0,194,16,82,32,142,173,44,142,134,32,82,72,171,193,169,53,15,102,7,51,162,83,136,220,193,160,244,165,83,9,21,231,110,114,130,156,136,177,155,32,8,226,106,204,70,16,72,242,96,2,243,154,26,152,179,189,134,21,11,212,14,78,37,76,156,187,137,7,69,32,153,128,87,55,46,139,82,30,228,76,68,146,9,204,123,9,228,17,36,22,225,134,120,53,125,41,41,37,165,239,156,157,34,159,116,8,0,39,94,253,166,60,218,43,184,33,107,44,6,162,231,89,146,10,4,87,144,34,148,36,117,116,49,92,69,36,201,148,162,147,22,162,153,198,144,164,232,237,61,73,54,201,113,106,169,113,38,92,76,217,52,63,170,171,148,107,197,16,1,189,151,54,70,73,33,68,74,239,207,93,34,47,193,8,80,244,246,234,141,69,146,108,54,48,152,24,88,235,64,22,10,24,185,129,35,127,51,61,179,172,249,134,211,243,181,240,18,195,220,137,67,79,188,223,44,175,72,205,18,231,91,146,154,111,113,106,190,28,230,11,83,129,200,165,69,48,70,57,50,69,236,102,193,92,93,106,56,134,253,239,11,233,139,83,99,88,158,26,195,66,76,47,19,16,111,63,129,246,223,138,168,226,186,71,81,97,24,116,245,89,75,82,26,67,246,217,30,42,196,232,120,67,50,111,40,180,56,32,144,133,5,212,13,79,97,63,196,118,204,222,38,50,159,201,207,53,149,137,23,74,169,16,31,86,14,190,87,168,213,71,36,73,19,245,53,83,12,165,84,250,104,43,66,196,179,47,245,17,49,205,142,170,208,191,156,98,32,123,145,187,36,29,237,134,64,62,92,161,109,114,181,184,163,131,12,135,56,20,18,75,26,32,21,69,1,138,174,28,103,229,234,180,186,76,116,67,125,202,53,65,206,7,110,165,159,110,18,59,174,222,101,182,129,200,81,87,201,74,36,231,170,115,138,47,51,48,84,7,147,111,76,78,201,6,116,195,176,38,177,190,198,104,16,162,3,186,186,55,92,54,96,184,134,26,46,227,20,114,97,50,30,128,120,174,18,185,208,116,54,126,110,96,171,134,28,86,171,107,202,193,7,227,24,148,20,82,1,200,230,116,240,96,34,139,163,114,78,221,155,220,128,100,115,41,4,33,212,146,110,168,85,20,108,82,38,203,208,149,193,3,60,180,25,229,90,1,174,39,19,72,221,202,119,36,2,128,140,244,141,138,173,134,102,9,215,0,172,134,119,160,14,86,219,226,166,132,145,142,72,145,90,92,215,49,169,47,0,21,19,248,121,208,194,12,125,114,122,154,7,180,144,23,253,218,178,82,129,242,231,89,81,210,176,251,208,87,31,121,226,151,175,60,112,127,143,44,61,114,245,173,127,248,194,79,142,61,248,32,148,190,248,202,206,239,62,241,141,63,253,245,218,30,43,226,11,33,111,49,34,255,111,61,255,121,26,145,216,163,143,88,143,240,117,77,45,109,177,102,158,236,224,235,90,218,218,248,150,43,58,218,98,124,77,215,186,117,177,4,33,196,38,69,132,144,241,132,144,242,68,87,103,114,109,121,108,205,180,154,105,51,106,214,76,159,94,179,54,182,174,178,98,221,154,218,202,170,166,170,186,117,85,205,149,53,107,102,212,213,213,84,212,85,172,155,86,83,222,214,178,38,209,148,216,90,222,153,108,46,239,76,172,45,111,233,40,111,217,176,177,173,179,44,209,73,74,136,77,22,17,66,254,68,8,137,18,66,38,16,66,34,132,16,157,16,50,145,16,82,66,8,41,37,132,76,34,248,71,9,33,147,9,33,77,157,157,177,68,178,165,163,93,141,122,38,223,208,210,204,103,159,195,59,99,109,235,202,218,98,237,37,165,100,10,33,196,84,109,77,149,227,190,160,51,150,232,44,111,110,109,238,88,219,89,94,182,182,41,177,190,163,60,17,91,223,210,153,148,163,147,35,107,111,142,93,89,182,54,209,148,140,117,150,181,116,76,173,89,87,89,219,60,109,218,154,53,77,149,211,43,42,42,215,149,175,233,72,116,94,49,181,162,172,178,162,172,10,222,104,142,149,111,232,104,150,51,33,228,56,177,201,39,8,33,119,17,66,138,9,33,141,237,155,155,218,90,154,249,178,141,48,208,68,108,99,34,214,25,107,79,54,201,226,76,94,198,87,94,17,227,235,90,18,157,73,190,102,107,50,198,55,116,201,171,24,175,224,29,9,94,73,200,114,106,147,177,132,144,14,245,139,35,236,76,38,186,214,202,22,160,211,253,212,38,67,8,33,181,20,225,210,216,158,140,37,98,157,201,134,88,83,162,165,125,253,146,150,246,228,188,43,147,177,246,206,150,142,246,198,246,150,100,75,83,91,203,167,98,75,59,218,87,38,154,218,59,215,197,18,77,107,218,98,178,22,73,183,213,203,8,153,65,8,57,47,17,107,74,198,150,54,37,91,54,67,21,239,249,86,70,200,92,95,253,79,169,250,94,249,42,70,200,18,66,200,146,216,134,14,175,155,212,32,62,30,107,106,107,235,88,219,148,140,165,234,183,50,66,102,251,222,111,99,240,29,164,202,27,24,33,203,125,229,118,245,124,110,108,93,83,87,91,82,172,93,219,209,213,158,92,145,108,74,198,82,221,156,215,209,190,174,165,57,214,46,39,60,96,12,222,141,249,177,216,32,192,145,83,61,175,173,163,51,38,186,146,87,116,36,90,146,91,125,125,95,154,53,215,79,48,66,86,18,66,46,104,17,27,228,40,86,118,224,175,247,124,69,86,253,11,24,33,151,17,66,188,218,222,123,222,243,197,89,245,151,170,250,233,225,53,110,216,208,149,148,171,182,108,75,123,44,225,213,155,171,96,184,32,230,193,99,110,83,178,105,69,203,167,98,233,182,170,179,218,158,161,198,238,149,231,48,66,150,102,244,37,65,49,45,245,124,138,122,223,247,188,171,45,217,210,217,178,62,93,199,201,90,203,137,140,192,247,157,126,71,13,175,42,93,167,32,235,157,145,89,227,28,197,8,89,44,97,185,181,125,45,238,198,244,179,136,122,119,64,251,211,210,117,88,86,251,90,86,251,58,35,164,222,87,14,50,66,206,39,132,52,116,37,218,207,187,34,182,182,53,214,156,122,246,23,154,217,214,95,105,102,91,239,208,204,189,251,30,37,228,99,242,91,104,145,171,237,181,150,126,254,187,172,247,127,159,213,254,155,148,144,57,190,242,127,83,66,46,144,251,103,227,198,68,199,230,88,170,65,239,249,47,40,164,77,76,149,127,153,213,254,107,148,144,115,124,229,227,89,227,253,13,37,228,34,66,136,247,137,100,207,255,197,172,246,127,152,213,254,191,211,76,88,254,40,171,253,87,40,33,151,200,246,175,104,218,162,86,42,245,236,233,172,185,63,147,213,246,179,170,173,249,137,88,44,181,206,190,231,71,179,222,255,102,214,251,79,168,247,241,227,198,215,189,103,143,100,189,251,181,172,121,28,206,154,199,151,179,234,223,155,213,215,129,172,250,7,85,125,220,7,233,251,251,178,222,251,215,172,118,111,202,90,255,59,212,126,242,202,119,82,252,190,86,196,146,41,116,229,61,219,147,213,214,103,84,91,31,143,109,238,104,245,125,67,61,89,107,218,171,198,174,246,88,26,239,102,213,235,200,218,75,27,179,230,188,133,18,178,194,87,222,74,241,92,72,225,206,172,246,62,153,5,243,213,89,237,173,83,123,223,43,95,65,9,89,54,40,62,74,215,249,88,22,12,62,158,213,199,197,20,191,245,1,248,195,87,103,65,86,27,11,179,214,172,81,141,51,19,111,250,240,106,86,253,115,213,24,54,55,181,117,197,154,99,107,91,54,52,181,117,110,104,105,79,174,110,242,150,112,29,108,241,116,185,51,217,148,236,234,108,130,163,226,130,246,216,149,27,99,107,147,177,102,190,185,41,209,210,212,158,228,64,183,204,228,114,223,133,108,82,232,163,3,62,222,148,140,193,126,151,67,186,168,37,121,197,21,177,182,102,249,219,156,104,218,226,59,7,225,188,92,175,230,14,39,11,238,212,214,88,123,103,106,20,171,147,91,55,198,218,99,91,210,227,90,221,1,180,77,198,189,14,249,118,204,59,87,225,157,174,150,213,56,118,57,203,68,172,61,185,186,115,107,231,230,166,68,19,246,215,217,178,190,61,150,88,237,149,58,59,186,18,107,99,205,177,206,100,75,59,208,74,205,177,182,216,250,166,100,44,213,197,198,166,173,177,196,186,174,246,230,213,137,24,16,19,178,163,206,173,157,171,55,38,58,214,39,154,54,200,71,45,237,235,189,22,1,182,222,61,95,181,120,71,75,251,162,216,214,246,166,13,49,31,93,149,26,71,75,198,122,138,196,122,223,29,5,169,204,155,222,246,147,119,147,10,182,242,186,9,63,36,121,153,128,111,79,94,117,250,190,88,89,222,0,240,150,87,107,186,18,237,242,119,173,15,79,201,242,58,63,222,131,62,210,72,212,223,165,194,217,190,158,125,119,54,248,15,34,175,55,95,113,192,20,167,193,96,83,71,239,160,117,170,6,135,195,180,172,219,45,170,181,245,3,136,148,204,138,153,36,14,204,35,139,92,146,247,186,178,72,174,129,157,101,82,113,126,16,249,41,63,0,245,217,200,69,89,161,249,44,180,38,174,171,71,214,2,144,7,163,124,161,159,44,146,58,115,204,131,144,229,88,225,204,52,189,124,94,166,120,28,249,95,57,33,164,130,16,82,41,233,104,197,119,193,200,128,91,73,52,109,89,189,57,182,182,44,209,185,182,105,99,211,218,150,228,86,222,177,57,150,88,215,214,177,69,210,26,81,155,228,201,51,62,106,147,81,138,182,50,36,175,197,215,117,36,54,52,37,147,45,237,235,121,50,209,212,146,228,146,127,139,109,240,120,25,158,136,37,187,18,237,177,102,222,212,206,99,137,68,71,130,76,203,226,215,6,142,101,221,134,100,89,162,115,85,142,77,10,8,33,107,24,33,60,139,255,171,202,42,87,171,123,187,114,108,50,157,16,82,67,32,235,51,92,215,73,218,58,141,24,219,98,237,235,147,87,240,142,117,188,165,125,99,87,146,144,248,185,54,208,209,242,140,146,248,209,43,239,162,56,199,165,29,237,162,115,109,75,203,121,87,72,172,148,140,37,0,165,34,222,246,96,59,51,205,211,165,170,173,245,46,72,102,93,11,232,71,201,58,175,236,232,88,177,161,169,173,109,112,222,118,214,32,188,109,56,188,34,217,180,182,117,102,56,28,14,15,228,115,99,205,177,182,100,19,159,115,14,175,240,128,186,182,35,17,3,152,182,119,109,40,111,110,217,186,122,93,91,71,83,18,248,195,135,115,109,226,16,164,159,67,36,93,94,170,202,140,16,146,47,105,43,185,238,65,66,248,82,66,234,163,26,233,221,53,134,144,169,149,148,124,235,247,22,217,55,125,11,33,199,58,254,184,123,28,140,115,199,91,15,92,115,153,216,48,245,15,58,17,71,247,247,17,107,40,29,27,127,178,249,191,234,218,255,235,230,3,63,123,251,111,231,254,167,182,172,128,136,227,242,209,4,58,231,95,203,66,95,120,77,123,175,110,88,110,249,137,228,184,55,255,252,194,143,204,87,245,167,126,118,232,7,71,71,246,84,221,171,77,24,251,159,75,25,17,247,221,213,71,172,125,65,218,93,118,203,101,159,254,209,19,137,59,127,250,202,167,203,135,13,121,122,249,47,91,55,182,159,255,66,238,43,255,250,227,246,77,143,76,56,180,238,233,131,197,53,195,70,95,250,163,134,217,57,43,251,215,246,117,94,240,220,136,183,254,22,251,99,201,209,11,254,250,204,171,189,175,254,87,251,219,207,191,245,234,234,191,174,48,200,160,224,89,215,150,156,214,28,91,91,46,81,65,50,182,126,107,121,115,162,105,61,48,211,3,65,221,92,182,65,158,174,115,120,5,121,219,182,225,219,58,166,224,230,149,255,70,144,135,242,202,127,87,114,12,175,76,41,238,89,175,188,136,18,224,229,189,114,140,102,214,223,68,81,118,224,149,55,211,204,246,119,170,246,94,155,87,120,142,246,66,225,127,28,123,247,185,211,114,77,190,247,244,173,207,140,56,189,241,254,87,223,125,9,202,203,94,61,250,196,169,135,183,244,255,229,221,87,161,28,249,73,171,120,235,134,11,159,200,59,117,2,202,179,79,245,236,61,56,246,197,207,78,57,245,38,148,119,222,122,65,101,201,170,143,253,104,254,169,183,161,252,232,119,239,61,120,253,3,155,238,104,58,117,10,202,223,191,246,15,227,182,184,183,255,238,170,83,122,191,44,111,88,113,101,253,13,141,207,61,120,211,169,8,148,47,122,254,235,159,216,58,100,246,213,15,159,202,135,114,237,133,239,46,169,217,103,127,235,251,167,70,65,121,217,45,11,235,58,126,119,211,222,255,56,85,12,229,103,102,94,61,254,251,215,36,95,38,239,77,129,242,219,55,63,121,243,15,94,216,189,191,232,189,106,40,255,230,129,73,35,110,9,87,191,53,253,189,217,80,254,220,35,211,39,189,187,190,238,145,229,239,205,133,242,172,115,159,254,247,215,94,122,118,87,235,123,139,161,252,248,15,126,84,56,113,238,47,190,115,205,123,43,161,124,211,119,199,127,227,249,59,91,63,191,255,189,85,80,222,245,229,53,219,138,219,30,248,249,227,239,53,67,249,47,63,91,29,189,120,221,253,95,250,241,123,109,80,158,240,223,223,254,229,231,223,121,253,79,111,189,151,132,242,145,222,254,175,222,119,240,209,71,195,167,187,161,124,237,249,221,109,198,234,53,159,30,127,122,23,148,87,84,28,171,190,188,255,232,119,207,61,125,29,148,47,152,240,248,13,215,93,179,244,166,75,79,239,131,242,55,183,151,110,44,222,242,183,215,146,167,111,135,242,245,71,126,115,228,206,111,190,118,239,245,167,239,129,242,190,109,201,61,47,172,254,202,59,95,57,253,0,148,95,184,237,190,235,63,191,113,238,191,61,117,250,48,148,91,135,229,62,249,206,73,243,95,94,59,125,20,202,95,175,172,140,93,48,254,208,15,254,118,250,41,40,63,208,115,213,139,79,191,126,238,23,242,251,159,131,114,96,214,228,73,79,217,171,78,148,245,191,4,229,31,221,216,217,242,133,226,226,175,54,246,191,10,229,156,239,145,157,127,124,244,211,239,173,237,63,1,229,223,23,230,221,216,108,254,230,232,246,254,55,161,252,220,158,229,29,161,231,142,94,247,133,254,183,161,60,37,54,242,245,139,71,60,246,195,175,245,159,234,39,226,233,251,250,136,101,212,223,254,124,191,78,196,75,178,112,56,207,254,242,75,111,188,209,31,81,184,107,205,3,223,249,253,149,7,53,192,37,132,236,10,237,123,231,202,25,231,238,24,3,231,8,33,95,27,22,252,238,85,207,223,220,87,7,123,155,144,141,171,126,119,213,243,211,182,95,191,2,100,116,132,92,209,251,159,247,223,83,247,239,63,222,0,56,158,144,121,238,173,35,38,76,92,118,231,30,160,187,9,153,248,238,83,47,85,222,189,246,191,238,6,185,19,33,247,29,124,246,186,186,216,47,15,125,19,240,26,33,63,143,221,95,248,57,243,153,157,175,192,183,66,200,173,163,55,53,252,109,244,39,158,250,35,89,5,229,139,127,91,116,239,148,150,37,55,70,105,51,148,127,247,217,141,133,205,127,160,63,155,72,219,160,124,254,150,183,110,253,194,151,54,220,221,64,147,80,190,166,117,219,225,171,174,12,253,113,21,237,134,242,150,130,95,108,189,235,196,202,195,91,232,46,40,127,235,59,183,93,118,227,238,203,118,223,72,175,131,242,57,159,184,233,217,239,172,152,254,236,3,116,31,206,119,255,205,127,95,117,120,210,191,62,67,111,135,242,175,87,239,255,194,55,239,156,255,203,95,209,123,160,60,254,186,25,63,175,254,214,109,95,62,69,31,128,242,170,59,111,249,82,226,214,167,255,50,156,29,134,242,243,79,252,231,202,21,79,190,250,88,37,59,10,229,215,133,251,199,17,127,58,181,103,49,123,10,202,95,190,114,213,143,110,123,158,63,183,142,61,7,229,215,86,56,87,253,233,210,225,183,236,96,47,65,121,102,197,216,155,95,125,116,255,235,183,177,87,161,124,211,215,126,189,106,197,15,127,122,223,215,217,9,40,207,158,123,224,158,159,118,223,246,238,139,236,77,40,219,115,239,57,176,120,241,230,111,252,158,189,13,229,194,219,235,191,254,214,231,238,191,54,160,157,130,242,148,93,23,221,107,191,53,246,69,174,233,242,144,34,165,149,55,252,231,111,238,177,111,155,165,69,160,124,71,228,246,187,222,189,205,254,237,5,90,62,62,127,123,214,154,159,242,146,7,54,106,163,160,124,205,11,7,62,245,201,69,115,123,175,213,138,161,60,245,23,15,104,245,39,156,39,191,172,77,129,242,245,253,115,63,89,126,251,250,207,245,105,213,80,22,71,174,187,253,142,17,85,47,253,76,155,13,229,175,20,253,250,240,141,63,31,249,197,63,107,115,161,252,211,45,175,61,222,254,228,77,191,207,213,23,67,249,131,97,250,245,137,150,206,46,56,21,143,15,183,137,164,154,190,66,240,244,247,202,97,74,128,2,106,74,38,99,27,54,38,121,178,131,55,183,108,110,105,142,241,53,91,249,167,98,137,14,95,221,225,148,144,6,95,185,158,226,201,48,240,24,113,214,116,173,43,107,233,92,45,155,220,90,82,234,123,231,85,69,125,200,73,132,9,33,114,119,190,161,17,98,79,36,100,255,110,74,234,27,114,73,239,77,183,16,242,171,63,27,228,123,183,206,242,222,171,98,56,78,175,220,198,176,111,175,252,28,35,100,129,175,252,107,37,133,243,202,111,169,231,103,133,155,146,107,23,20,216,68,158,251,71,21,172,6,206,111,77,215,186,203,42,62,193,231,240,53,171,38,86,172,146,148,141,247,206,55,213,59,21,101,101,83,39,87,180,180,175,91,218,180,116,208,247,81,98,47,137,154,13,77,87,182,197,218,125,109,244,48,60,33,7,140,117,221,134,164,26,99,153,156,211,107,5,54,80,51,13,29,137,68,199,150,37,93,201,121,146,16,157,73,248,249,54,236,225,191,23,216,0,103,239,119,99,83,123,139,100,122,120,83,146,79,156,56,133,243,145,120,223,25,105,19,141,144,12,10,86,98,33,32,8,121,71,87,82,82,149,107,58,186,218,155,59,103,242,228,21,49,73,107,242,150,78,206,215,116,37,161,140,21,91,58,57,33,115,71,218,64,213,54,143,68,206,223,79,169,159,35,255,59,103,32,52,46,47,105,139,173,75,114,158,104,89,127,69,178,244,242,48,231,178,60,147,95,126,249,148,48,222,148,215,51,249,173,35,109,50,82,226,26,213,246,119,70,218,64,93,254,80,141,255,76,207,91,39,227,60,103,114,146,130,77,126,33,194,174,204,71,161,206,33,132,156,75,80,82,193,229,223,85,225,41,225,41,156,95,197,183,241,109,37,225,146,41,131,46,72,123,215,134,178,68,231,5,133,168,45,106,81,212,101,197,149,21,21,21,149,21,211,42,170,42,170,43,166,87,212,84,212,86,212,85,204,168,172,168,172,172,156,86,89,85,89,93,57,189,178,166,178,182,178,174,114,198,180,138,105,149,211,166,77,171,154,86,61,109,250,180,154,105,181,211,234,166,205,168,170,168,170,172,154,86,85,85,85,93,53,189,170,166,170,182,170,174,106,70,117,69,117,101,245,180,234,170,234,234,234,233,213,53,213,181,213,117,213,51,166,87,76,175,156,62,109,122,213,244,234,233,211,167,215,76,175,157,94,55,125,70,77,69,77,101,205,180,154,170,154,234,154,233,53,53,53,181,53,117,53,51,106,43,106,43,107,167,213,86,213,86,215,78,175,173,169,173,173,173,171,157,81,87,81,87,89,55,173,174,170,174,186,110,122,93,77,93,109,93,93,221,140,25,21,51,42,103,76,155,81,53,163,122,198,244,25,53,51,106,103,212,205,152,145,185,134,130,32,14,56,143,16,242,84,1,206,249,21,131,144,49,114,206,255,195,63,175,189,127,55,80,123,149,76,116,197,214,53,181,117,198,124,125,229,135,176,47,175,92,20,34,100,56,33,36,209,212,190,62,198,59,147,77,9,37,27,226,222,198,197,39,235,58,18,188,179,173,101,109,76,222,82,188,210,201,34,37,45,31,101,19,55,213,70,172,189,89,181,80,61,202,38,182,239,57,190,143,207,160,167,78,249,37,193,87,16,107,111,134,2,89,57,202,134,241,196,71,217,240,13,211,255,229,63,34,190,247,120,31,177,170,216,89,255,180,172,63,93,254,17,177,231,27,125,196,122,105,84,75,251,218,14,201,253,38,99,188,43,185,110,106,29,234,238,58,99,155,186,98,237,107,99,124,93,162,99,131,130,10,33,123,70,219,192,221,181,40,77,32,190,144,170,219,177,142,195,219,157,254,183,142,142,70,9,222,79,70,43,109,88,246,103,214,153,76,148,111,148,39,84,2,84,128,239,140,70,237,96,131,129,223,174,191,236,250,202,23,26,40,25,240,202,211,3,132,12,243,149,215,102,149,155,85,249,178,178,178,178,79,192,28,213,78,106,233,204,196,130,242,234,114,66,182,141,177,129,235,221,51,6,215,220,195,51,107,98,235,91,218,249,236,115,96,43,149,200,139,82,190,229,138,88,59,108,192,150,246,245,242,221,35,99,108,146,67,8,121,122,140,13,223,213,247,198,224,94,243,218,144,125,182,119,36,121,19,151,252,54,246,219,148,216,58,139,183,36,229,163,150,246,78,121,70,243,18,4,102,41,140,200,27,207,169,49,54,112,222,238,88,27,180,193,147,198,218,36,224,107,123,80,248,170,179,239,226,177,248,93,5,41,33,163,7,171,219,213,222,178,182,163,57,86,190,49,209,210,14,18,43,212,4,239,26,107,131,166,92,158,233,163,124,229,66,37,181,32,84,51,140,64,128,5,3,102,48,148,23,30,101,141,140,20,70,237,156,72,174,110,107,67,134,12,13,13,167,35,244,2,58,82,43,12,22,209,81,108,236,112,174,77,214,166,90,101,180,66,171,100,211,232,1,246,21,246,85,253,126,243,239,236,93,227,61,118,90,235,15,29,188,114,235,181,159,189,187,226,162,139,175,189,110,239,168,95,228,228,46,90,252,238,169,178,242,115,87,125,98,245,235,187,62,251,185,27,110,252,202,195,143,127,227,59,79,127,247,123,191,60,241,155,126,162,231,13,41,173,172,174,157,57,235,156,198,243,63,177,235,115,55,126,229,225,195,143,127,227,233,239,61,255,194,137,223,16,61,154,3,79,103,206,154,55,191,241,252,79,54,199,118,221,112,219,29,223,125,254,133,104,94,233,204,89,243,26,47,186,108,213,39,87,55,199,62,123,195,87,14,63,254,141,239,124,247,181,19,191,57,25,205,155,215,216,28,235,221,245,200,209,39,158,252,241,203,39,255,123,231,53,215,222,115,239,19,79,126,231,153,23,126,246,243,133,183,124,243,7,79,63,255,66,227,210,101,23,93,242,201,213,159,249,220,245,15,127,253,177,39,143,61,253,204,203,121,195,71,92,182,234,47,127,61,221,223,187,97,211,47,95,203,25,219,222,49,106,244,234,109,219,31,124,168,231,27,71,135,143,24,51,118,254,130,165,203,46,190,116,213,39,183,247,60,250,157,151,126,252,234,201,255,254,115,162,243,250,100,215,77,19,202,202,15,60,244,216,147,207,188,240,242,107,183,214,223,124,75,197,245,99,255,253,165,231,251,151,46,187,244,178,160,153,107,79,44,255,195,91,237,29,181,231,156,219,48,111,239,13,43,214,119,61,251,221,23,127,248,202,79,127,123,186,159,240,213,238,213,175,233,87,207,53,139,244,64,222,142,7,114,122,239,55,198,134,118,20,105,35,77,170,151,235,213,122,80,163,193,64,48,47,188,60,119,72,240,130,160,166,143,10,135,52,83,11,106,18,21,68,116,67,179,2,52,103,152,177,52,88,20,188,40,200,2,35,34,203,245,243,180,169,26,213,243,2,185,145,153,250,232,241,171,249,6,61,62,190,247,89,227,234,67,90,97,224,234,247,180,75,130,195,67,5,161,252,72,126,36,30,8,7,10,3,151,4,39,27,243,195,83,244,136,78,181,74,107,138,94,24,176,180,222,7,2,225,64,121,229,18,173,247,30,115,182,150,171,205,14,214,153,147,141,171,251,243,10,204,242,188,169,154,147,235,228,246,94,167,95,125,243,72,107,216,158,125,70,185,49,43,200,114,10,66,189,79,184,201,72,239,79,10,35,70,111,191,209,251,90,228,143,119,104,181,161,29,171,242,123,143,152,189,223,55,194,5,179,180,112,160,206,156,111,70,2,73,107,140,118,169,126,73,168,119,103,193,168,240,240,208,98,189,247,95,2,247,223,19,25,161,87,222,165,239,248,217,132,96,196,48,122,239,181,119,252,57,72,249,164,192,98,189,247,179,122,239,19,90,145,150,27,37,1,74,53,170,51,35,24,100,166,25,98,97,195,98,57,186,77,243,216,16,99,104,94,62,29,198,70,176,145,209,81,198,104,115,44,45,166,113,189,149,61,164,61,204,142,178,23,216,15,217,75,145,31,135,126,194,94,102,63,163,199,141,95,177,223,234,111,176,63,240,147,250,59,236,239,218,187,52,50,113,214,156,165,203,174,255,226,23,239,188,234,218,207,223,116,247,35,143,239,126,56,16,12,213,156,51,231,194,63,189,248,67,61,191,160,166,246,194,139,122,190,250,224,67,223,156,126,124,200,167,63,243,185,47,166,54,163,220,139,75,151,53,199,86,125,253,177,162,81,65,51,108,229,143,168,153,49,243,190,175,188,242,211,80,237,222,27,238,11,134,103,205,89,215,114,253,141,121,29,171,159,252,195,91,151,174,121,251,84,255,138,149,183,222,86,86,62,177,228,130,59,246,223,245,165,123,14,220,119,240,241,163,79,5,172,200,176,209,51,207,157,247,177,123,15,60,247,131,253,193,145,133,238,248,57,231,254,246,205,183,250,191,243,180,206,199,141,159,80,82,85,55,115,225,249,139,151,175,184,224,66,185,247,46,95,27,91,215,218,121,229,182,158,127,185,231,171,15,29,234,123,241,193,135,218,59,158,248,252,39,221,171,12,77,159,170,173,211,104,121,89,239,213,163,181,202,220,81,122,113,104,140,49,217,152,171,231,76,234,253,106,160,88,47,214,75,204,106,107,233,121,59,106,67,195,195,102,193,172,121,51,180,181,102,168,98,184,225,104,69,6,173,175,211,23,25,229,122,56,24,10,214,243,137,122,36,84,163,205,52,10,131,122,36,184,188,177,182,42,90,21,44,51,195,59,38,124,124,209,100,115,210,240,194,9,163,242,71,132,150,234,197,161,185,209,145,193,112,96,161,57,49,212,101,53,204,153,20,152,101,132,3,31,11,80,195,214,140,222,107,215,140,89,104,134,123,239,253,164,59,207,10,7,162,67,103,6,194,53,83,244,17,189,255,54,187,121,69,100,97,40,60,127,94,209,66,115,69,180,49,24,238,253,203,252,240,104,109,65,99,173,150,99,134,3,51,130,225,29,53,35,131,179,180,81,23,210,220,105,209,157,183,173,235,178,122,159,250,151,197,107,163,187,42,236,225,215,127,245,234,5,119,253,219,213,51,130,147,244,85,129,9,225,249,225,18,99,232,213,135,46,139,45,210,103,4,243,234,229,150,184,249,29,115,215,79,38,133,238,254,237,142,170,92,58,58,144,163,155,59,174,251,140,222,106,68,181,80,208,190,241,242,5,161,228,236,222,191,132,59,205,141,195,230,127,74,126,10,23,133,70,246,126,122,199,2,237,154,134,220,97,187,150,143,13,4,122,127,60,217,152,227,208,141,83,181,66,157,237,168,31,155,55,211,160,59,94,156,116,245,127,244,254,181,116,177,30,214,217,206,188,185,139,207,233,253,214,236,0,213,47,48,138,170,217,142,156,41,122,115,228,194,112,239,131,117,163,163,83,244,80,144,229,4,122,111,221,249,138,158,167,69,181,45,250,234,64,68,167,185,17,189,206,12,7,74,76,119,233,142,149,145,209,90,40,88,99,230,232,161,96,40,216,251,253,241,225,93,129,51,226,112,245,187,186,185,41,217,84,150,232,172,168,156,86,85,61,189,166,182,110,70,211,154,181,205,177,117,3,222,139,117,174,109,218,136,8,191,119,60,158,217,213,138,223,89,213,117,85,234,222,26,66,128,143,25,148,215,90,211,178,30,41,102,66,250,198,219,64,203,61,64,145,231,24,200,25,180,119,172,1,222,102,16,65,101,203,250,150,100,39,159,205,171,43,6,62,236,72,94,17,75,128,16,147,44,28,111,131,212,121,185,146,62,123,229,85,4,233,70,201,56,236,212,57,185,193,184,156,124,98,232,126,50,100,4,31,27,225,151,143,125,107,202,254,201,147,42,248,148,142,123,143,79,97,247,93,62,117,204,187,151,151,145,211,188,230,139,253,151,215,188,71,127,85,67,195,78,109,113,244,87,181,247,231,52,205,40,47,184,107,70,197,168,166,133,127,26,115,215,226,250,234,166,229,39,227,119,125,108,89,135,243,241,59,142,222,245,113,242,66,211,138,216,15,239,90,65,126,230,172,36,199,127,117,193,131,175,55,93,244,230,9,231,146,23,223,184,235,18,78,254,112,201,73,218,115,41,217,72,130,100,42,165,148,81,70,233,66,171,98,152,77,99,65,22,96,140,234,227,232,152,162,203,172,153,161,16,45,208,105,136,106,212,152,172,205,54,39,21,80,94,75,41,213,77,157,106,193,48,27,77,103,202,215,117,147,134,104,152,21,82,198,102,80,157,233,146,176,163,99,152,70,45,89,54,40,211,105,62,27,30,160,178,54,163,186,73,131,90,152,141,161,179,40,165,17,26,162,37,84,163,181,148,106,134,70,245,32,179,160,85,57,36,141,26,76,150,71,177,25,44,221,203,104,186,144,234,148,105,148,154,244,99,148,5,35,230,26,202,66,86,176,145,21,1,229,89,155,67,13,202,12,139,22,135,232,58,157,6,40,99,108,36,211,53,91,143,82,198,2,52,151,18,141,104,163,217,24,54,134,213,51,26,52,41,179,66,116,170,70,105,23,115,233,102,77,103,33,26,208,126,206,152,28,109,80,182,200,204,64,152,209,138,177,149,122,69,144,82,131,150,132,34,140,235,140,81,173,142,194,64,180,153,38,99,183,104,52,74,131,178,67,141,61,93,79,232,183,29,162,125,150,94,206,73,160,133,17,157,134,57,91,206,136,196,246,116,36,51,232,205,172,112,72,148,78,48,71,90,101,90,5,149,32,155,72,207,11,72,154,56,66,77,90,78,171,40,213,24,51,24,165,147,152,73,255,32,193,70,9,37,182,45,217,71,250,58,253,87,131,104,148,25,122,137,166,211,47,51,162,19,182,92,155,111,85,234,87,209,154,220,82,202,88,88,171,212,25,11,210,115,180,98,131,154,115,104,132,85,135,194,58,163,171,53,9,202,0,101,244,14,170,153,195,0,178,148,14,167,57,65,205,248,182,41,39,51,66,66,53,32,23,74,46,194,239,41,211,3,140,178,34,118,129,41,239,196,41,188,78,99,26,211,169,65,66,148,253,153,134,25,165,58,221,171,51,166,83,30,46,9,192,74,5,152,86,22,165,140,4,105,128,210,143,15,103,65,217,218,167,2,154,108,53,72,233,66,217,21,37,204,98,213,134,33,175,104,32,151,24,179,130,132,158,171,127,140,18,70,202,216,8,66,169,166,27,166,201,130,99,244,125,26,169,213,167,153,52,135,14,55,104,46,9,210,60,104,209,104,166,251,131,132,158,163,19,157,4,55,4,201,229,189,39,201,194,166,206,43,56,144,136,124,160,238,237,201,82,212,184,149,127,20,155,196,43,154,58,175,88,147,232,216,210,62,181,162,172,178,170,172,210,211,244,41,34,246,68,169,13,82,209,75,213,55,191,182,173,163,179,43,33,169,249,205,29,173,177,102,158,136,173,237,74,116,182,108,142,181,109,229,29,9,222,180,46,25,75,240,53,49,73,153,55,39,58,54,110,140,53,163,102,220,51,54,248,212,36,164,213,147,93,27,219,98,222,77,66,200,222,73,200,227,181,199,182,36,183,110,76,63,185,111,146,77,114,9,33,93,237,45,169,54,250,38,161,44,34,214,222,181,225,165,73,72,243,111,104,218,72,142,79,66,217,133,199,33,189,57,9,105,118,175,77,28,9,33,167,212,24,148,101,37,24,82,228,79,198,54,85,63,109,93,49,66,74,38,219,64,131,3,251,210,148,72,52,109,37,100,182,186,215,153,76,200,57,146,229,147,109,18,148,112,241,52,121,252,242,203,47,159,140,188,131,199,35,128,62,77,214,222,216,209,210,158,228,151,119,79,206,228,79,90,218,147,177,245,242,77,66,200,237,147,109,144,197,165,248,159,142,142,182,88,83,59,60,59,146,245,172,137,227,40,136,248,143,151,251,136,245,139,97,39,207,69,161,83,113,61,254,94,130,191,245,215,227,239,158,111,227,111,252,29,248,237,221,85,38,228,239,139,67,214,194,239,174,151,111,134,223,216,15,126,32,127,249,234,253,172,129,16,242,198,230,133,181,242,247,238,125,133,27,26,8,169,255,205,237,21,119,55,16,178,119,204,83,71,127,210,64,72,245,132,63,183,70,206,35,189,199,107,183,126,91,156,71,246,191,114,205,69,213,155,207,35,207,46,93,191,225,216,253,231,145,115,110,184,252,196,197,191,58,175,254,186,71,175,28,253,208,176,185,203,223,122,253,39,39,10,23,205,189,241,199,75,2,47,156,236,157,251,151,243,127,245,12,155,250,232,220,195,119,252,116,235,121,87,254,110,238,13,172,100,202,164,107,249,188,233,218,180,199,222,62,184,114,30,219,117,250,196,166,159,126,102,222,142,33,99,203,127,59,177,111,158,243,242,127,252,253,120,229,219,243,126,119,221,254,25,151,204,41,157,95,124,200,220,243,214,103,87,207,31,209,110,60,250,232,145,207,207,191,253,187,243,221,95,223,251,236,124,173,251,149,223,221,246,226,233,249,87,47,121,38,209,212,80,181,224,215,124,235,11,127,27,114,197,130,162,150,139,206,251,255,136,185,22,176,168,170,237,191,81,36,20,212,173,136,138,164,29,124,5,202,192,128,144,136,98,206,12,51,60,132,1,121,191,225,204,204,158,225,48,103,206,25,206,3,24,228,81,166,169,105,105,101,62,138,20,245,218,195,103,134,149,105,94,243,113,149,148,212,212,180,123,211,48,148,52,181,140,235,251,253,255,206,99,96,52,251,250,223,251,245,255,254,124,223,129,179,246,123,237,179,215,111,237,189,215,90,108,29,180,60,110,243,202,129,99,142,29,58,26,55,52,177,225,218,236,25,79,197,175,41,216,211,17,100,140,137,63,239,55,100,252,157,66,38,30,111,60,179,183,234,250,123,241,142,230,193,55,78,124,124,42,62,169,246,112,238,190,43,253,18,150,23,104,126,251,204,170,75,216,55,46,227,242,26,143,154,132,130,198,45,77,207,206,220,156,192,54,175,108,12,107,111,79,88,16,125,192,179,174,200,63,241,109,83,221,63,250,248,79,75,252,242,254,233,138,163,248,172,68,101,237,91,3,226,182,109,75,156,76,157,38,201,45,191,37,30,250,106,192,156,217,63,142,156,170,186,231,87,246,179,95,222,212,15,99,82,219,194,82,23,78,245,73,62,151,55,217,180,119,106,118,201,187,29,201,181,183,167,218,182,186,83,43,79,133,38,197,94,221,125,238,220,207,198,36,223,143,174,14,45,58,183,52,201,191,193,190,134,31,122,56,233,117,220,60,155,96,186,39,95,23,205,166,81,201,204,173,5,103,247,26,168,228,184,187,19,250,108,191,191,42,217,175,186,249,155,160,29,39,147,87,44,141,214,113,235,123,235,77,43,206,173,107,158,167,214,199,236,63,125,98,91,72,165,222,123,194,91,243,137,59,235,245,239,107,78,223,124,241,233,54,253,235,139,142,243,171,86,15,76,249,228,243,4,159,121,73,73,41,253,6,244,185,124,98,211,139,41,3,151,245,123,191,197,255,211,148,252,135,223,30,217,185,234,82,202,178,157,179,218,62,211,6,164,214,135,62,251,253,168,37,153,169,197,119,127,155,118,229,222,43,169,254,239,62,247,166,239,15,95,166,26,98,221,111,189,237,123,61,117,122,102,143,79,221,242,199,76,179,101,238,233,247,99,85,201,180,230,49,17,89,126,75,22,77,171,142,220,181,174,245,139,175,166,145,187,114,14,122,13,4,105,251,59,66,254,254,154,127,68,218,132,141,219,108,204,112,34,109,127,110,80,207,190,214,21,105,67,191,251,28,253,188,234,88,218,72,125,224,206,213,243,60,211,55,224,255,222,56,127,227,228,116,239,218,236,95,6,41,216,244,148,130,13,23,10,111,189,159,110,108,250,206,192,223,56,157,62,204,190,191,176,231,182,254,25,163,146,38,124,50,175,52,46,35,100,197,236,85,27,213,181,25,181,123,22,141,218,144,240,113,70,193,181,219,212,224,83,63,101,176,229,91,95,25,246,230,211,153,23,116,77,3,175,126,63,45,115,213,224,146,83,87,210,94,206,60,48,172,234,216,186,243,219,51,159,247,25,107,58,104,239,200,236,243,93,100,204,131,150,81,89,253,245,47,181,196,76,201,207,58,8,143,174,24,237,249,122,214,131,69,251,226,148,137,255,200,138,137,222,154,251,69,195,157,44,243,72,159,173,215,87,42,179,95,248,101,208,104,246,128,41,251,204,133,119,175,244,189,191,44,123,254,230,221,215,131,38,31,201,190,82,56,142,221,146,236,158,99,141,4,11,3,240,9,57,255,80,131,107,196,231,116,206,246,160,23,162,218,142,173,206,25,19,209,184,239,95,205,223,229,68,170,226,171,250,221,237,147,187,43,80,113,233,98,129,38,183,131,185,181,102,84,68,85,238,134,5,21,125,67,85,27,115,91,252,214,18,59,46,180,229,62,223,56,96,239,229,85,131,242,82,154,253,174,191,63,47,57,47,124,168,242,118,124,229,140,188,186,145,53,227,253,125,63,203,91,174,200,239,97,248,215,229,188,25,247,114,52,181,158,195,243,87,79,12,93,212,240,74,86,254,252,94,19,63,215,40,230,231,47,249,105,111,122,98,195,174,252,24,236,211,11,5,221,111,228,39,127,112,118,120,196,204,177,5,202,132,67,111,53,134,227,5,53,223,171,182,199,215,191,85,144,159,214,255,226,144,214,3,5,14,118,234,81,251,65,80,152,157,250,131,71,242,131,136,66,219,185,183,226,207,196,148,21,238,221,88,168,88,111,110,44,228,135,124,18,149,253,194,241,194,254,120,155,135,173,177,103,209,186,154,228,145,177,238,83,138,78,124,95,162,200,236,193,21,181,244,255,188,106,173,199,135,69,245,217,231,7,102,198,183,22,109,90,156,26,18,249,170,79,113,254,23,231,28,51,236,241,197,204,165,194,193,171,231,215,21,63,219,20,125,165,125,80,83,113,71,113,79,107,235,233,243,197,191,124,118,80,155,253,237,208,146,107,105,43,230,101,173,73,43,217,252,236,236,144,245,250,217,37,239,118,4,70,103,15,223,81,210,109,73,238,204,138,200,127,151,236,185,71,143,58,190,123,52,126,237,238,193,144,185,108,1,94,85,251,252,142,200,230,215,241,19,5,11,130,53,209,251,112,239,136,166,155,199,154,239,226,179,193,145,234,153,133,97,134,15,193,204,101,237,91,144,225,56,104,127,56,108,248,59,134,153,216,149,226,244,235,71,12,107,46,92,28,255,65,120,15,227,225,85,237,218,180,250,104,227,174,89,155,172,111,46,176,27,195,45,239,232,170,154,254,102,124,48,69,157,147,117,230,159,198,21,165,65,55,35,131,161,105,223,238,171,156,102,124,172,169,170,73,153,54,64,235,48,101,157,249,194,156,187,120,147,233,57,239,231,206,220,220,113,214,164,89,160,249,142,223,48,24,13,96,51,244,199,190,211,163,203,251,175,193,153,113,47,161,11,183,195,124,145,223,86,132,87,213,229,253,253,153,95,81,140,215,130,91,39,142,13,55,123,31,250,248,211,150,57,217,230,5,47,22,159,123,88,246,170,249,246,71,219,127,109,53,236,54,71,189,91,118,113,201,221,27,230,151,99,123,180,215,110,11,182,28,79,28,177,233,181,107,184,101,238,208,203,121,31,151,47,182,92,26,249,126,199,176,62,45,22,159,74,207,236,99,115,220,74,79,46,58,16,236,121,41,178,180,119,244,253,241,7,144,181,52,62,246,129,97,249,51,43,75,243,190,221,113,119,150,229,219,210,205,137,27,170,45,187,122,17,155,244,235,215,159,217,58,133,200,51,156,60,57,248,60,71,116,68,127,221,187,21,91,75,156,136,109,44,157,151,113,134,240,206,106,86,111,36,6,148,45,176,86,31,243,155,153,80,198,122,228,198,99,237,245,101,158,127,27,175,136,184,210,84,214,235,213,89,81,110,151,46,148,37,253,246,222,203,187,70,61,99,85,102,5,94,91,90,153,110,221,110,13,15,171,207,156,99,93,235,81,127,255,135,178,191,91,199,152,232,162,131,221,174,90,35,99,188,158,171,219,243,44,57,195,251,181,61,133,91,10,201,111,246,71,189,189,109,225,27,228,190,219,251,166,252,28,177,159,28,191,245,214,194,17,221,238,147,35,216,119,162,179,2,194,109,151,82,212,95,173,251,208,108,251,233,236,27,219,7,102,52,216,236,135,38,70,190,182,229,27,155,247,238,87,118,111,14,240,160,22,48,138,113,195,214,78,164,150,89,238,181,166,37,150,83,245,47,222,93,114,190,97,13,213,138,223,169,13,112,255,158,10,174,253,226,215,69,109,144,174,104,176,142,137,246,215,210,139,94,242,248,196,211,80,77,199,244,31,89,174,173,253,136,110,25,104,251,122,113,195,57,186,190,160,249,133,47,246,248,217,15,79,168,61,146,57,36,213,174,153,211,16,123,9,155,105,207,88,187,199,119,116,208,231,246,159,23,69,188,67,179,87,236,253,78,131,93,163,62,24,81,158,53,64,21,22,250,70,78,185,53,247,245,251,219,62,125,173,252,236,201,234,31,34,194,247,148,159,122,213,111,224,238,7,55,203,211,59,86,188,195,60,80,48,199,111,104,86,62,181,211,192,204,189,182,104,238,87,212,18,102,93,216,157,75,211,19,191,102,188,138,107,216,87,245,221,216,175,43,242,143,40,219,158,99,95,204,96,220,119,188,77,178,71,184,253,195,63,61,179,146,117,79,115,172,59,155,115,130,125,249,189,236,197,79,95,241,226,6,52,223,56,93,206,171,184,193,213,92,230,161,163,60,183,124,233,55,23,95,140,91,199,25,31,238,14,223,236,253,35,55,105,39,91,127,58,197,151,247,218,148,218,122,124,117,34,111,177,189,225,133,222,123,129,255,210,179,82,255,224,240,22,190,227,192,128,182,251,221,47,242,39,30,36,109,168,83,99,21,243,39,55,230,12,75,207,168,8,213,55,255,218,110,153,91,177,29,175,46,107,221,181,179,194,183,118,254,170,177,255,188,90,145,215,16,58,175,226,112,96,165,253,165,187,138,140,238,197,149,163,195,119,52,12,48,188,89,249,81,221,229,61,203,162,155,43,11,150,159,143,152,146,240,160,242,246,110,24,208,252,75,120,213,214,171,25,65,209,31,90,170,214,40,215,54,205,121,243,221,42,75,81,162,61,178,230,104,149,219,141,130,22,181,255,83,142,25,227,184,122,159,182,73,142,176,198,15,66,147,122,51,142,152,230,55,38,174,88,248,158,35,185,186,178,215,254,136,83,14,251,250,87,204,247,26,251,85,207,207,86,188,48,177,167,174,154,222,16,85,242,202,188,233,213,136,28,81,243,220,248,205,213,245,113,193,254,238,179,218,171,139,114,111,6,104,127,26,50,253,251,37,209,145,151,14,167,78,63,26,51,183,219,79,221,103,77,215,189,58,246,165,214,216,109,211,147,162,238,110,246,178,254,54,189,216,163,122,249,161,89,35,107,110,204,30,172,83,191,159,91,115,39,227,176,117,174,231,194,154,168,49,123,246,173,235,181,183,102,255,53,118,107,86,239,219,53,183,58,22,154,215,167,134,214,78,92,50,228,75,235,27,198,218,94,49,1,31,121,84,46,173,77,154,31,84,208,188,232,80,237,71,55,151,77,184,255,116,247,186,6,30,204,153,116,110,124,93,247,55,193,218,169,167,109,117,109,249,83,18,83,214,174,170,251,23,115,228,233,179,25,39,235,22,46,112,63,231,63,166,119,253,182,127,206,160,166,69,171,235,131,22,142,56,208,222,92,81,63,142,91,63,233,153,233,235,235,27,155,47,205,186,218,242,99,253,255,198,65,109,78,228,147,29,212,92,29,196,98,1,0,90,0,128,238,175,9,76,98,17,99,66,197,101,44,77,41,194,66,148,33,97,202,40,233,24,128,112,57,56,233,84,36,4,56,0,96,165,155,100,146,115,210,251,220,0,240,113,161,191,117,147,204,4,78,250,160,155,20,128,229,164,15,187,73,124,58,233,201,221,164,160,176,63,53,189,0,55,160,186,247,203,151,192,203,205,13,168,26,175,124,9,188,190,26,237,108,228,189,238,146,231,226,195,255,240,7,184,117,235,238,222,195,227,41,207,158,114,66,47,47,239,222,125,250,254,113,133,63,203,255,127,254,249,35,15,65,28,139,37,88,59,137,59,254,212,241,18,227,59,157,32,73,199,239,60,11,255,219,200,189,46,175,77,233,188,34,44,41,56,65,138,220,59,213,19,136,103,177,255,182,237,63,178,107,145,19,160,232,221,255,160,135,180,96,93,233,0,23,186,151,199,163,249,2,29,240,196,251,51,49,52,144,96,139,133,147,94,177,211,134,20,72,161,202,98,18,81,65,78,126,30,186,75,254,6,242,185,152,166,48,146,176,17,28,134,170,140,8,153,144,169,107,130,69,139,22,109,198,74,81,21,38,93,6,114,12,78,144,194,57,177,243,48,201,118,37,209,54,27,78,210,20,194,72,132,155,132,20,150,103,24,218,130,139,150,53,151,70,196,195,38,102,69,142,206,128,64,51,65,17,28,194,2,45,52,135,233,113,189,112,76,31,27,170,32,40,115,144,211,176,40,158,119,163,177,206,145,9,181,57,90,168,139,99,20,111,51,32,70,232,163,156,167,57,196,186,182,236,60,128,26,105,138,99,104,178,107,220,88,96,1,175,84,42,149,10,225,79,152,46,8,51,11,243,133,85,150,18,36,194,236,56,195,10,12,56,107,119,154,55,165,27,84,76,252,37,30,149,229,190,93,141,207,206,194,82,150,147,146,88,239,28,127,201,240,18,151,32,7,146,239,202,17,189,180,187,202,5,151,8,179,81,82,91,242,187,164,66,151,164,232,18,109,138,238,119,131,23,27,126,82,134,196,213,19,114,40,140,54,148,33,35,247,164,74,36,193,114,24,206,97,36,65,33,76,244,61,9,12,22,137,104,44,24,51,210,36,111,163,196,8,13,199,36,201,254,88,63,73,186,219,152,61,73,186,143,240,78,116,222,37,72,51,194,57,236,98,213,78,46,0,0,91,38,73,247,30,187,39,73,247,19,143,150,165,120,146,124,180,252,153,73,80,180,91,254,223,41,24,17,116,68,13,227,25,3,197,187,238,31,220,36,159,4,39,221,38,251,69,57,233,159,31,203,255,183,155,132,117,78,250,134,172,112,112,82,80,94,14,76,186,243,70,38,87,44,139,251,11,121,82,84,226,172,77,97,32,40,147,5,81,10,101,72,100,136,82,172,77,18,6,145,175,83,49,16,152,101,37,222,71,30,195,147,240,250,143,54,3,37,147,159,188,25,192,73,22,49,60,226,73,242,81,15,240,248,199,60,194,19,0,0,70,156,36,133,117,156,134,88,158,228,162,163,121,170,146,193,237,129,65,37,24,77,9,171,178,68,203,48,37,242,165,87,162,203,38,99,170,236,249,237,164,147,229,77,136,51,42,90,47,71,21,59,121,29,249,188,180,22,135,202,222,238,78,122,152,188,81,113,210,1,114,84,54,222,233,203,240,87,196,86,179,145,81,46,243,111,66,2,140,132,48,236,127,172,69,59,119,5,50,221,83,210,250,240,97,191,254,62,3,124,31,14,28,52,216,111,136,255,211,67,135,61,131,73,249,1,195,71,140,28,53,250,217,192,160,49,99,31,6,43,66,66,187,44,63,98,118,39,165,82,107,98,181,186,184,248,196,169,73,201,250,212,105,105,233,25,153,89,217,57,185,121,146,125,200,82,74,148,89,109,20,109,47,103,88,142,175,168,172,114,84,59,63,155,116,77,249,248,103,195,74,244,52,133,156,159,13,60,30,197,145,34,219,105,156,62,90,60,101,196,57,100,161,25,162,90,80,61,130,220,73,150,29,233,85,66,88,27,178,209,140,227,247,42,202,76,144,136,167,88,222,110,167,25,14,153,104,59,98,164,13,132,24,91,194,240,118,14,153,112,198,194,11,59,11,9,201,56,154,198,72,186,11,219,133,22,40,220,134,132,116,27,78,57,4,104,179,178,70,134,102,89,133,9,85,16,70,36,166,8,208,203,136,5,77,8,55,145,180,209,138,170,144,81,138,230,17,219,192,12,60,235,96,144,20,227,37,18,98,170,216,29,206,88,144,64,177,14,150,67,54,81,93,225,157,122,151,69,200,42,204,27,79,9,111,157,237,81,52,198,114,52,131,91,16,198,218,113,35,170,100,4,85,89,141,24,154,35,108,200,36,168,30,39,11,38,156,195,157,239,98,88,136,128,222,2,75,130,154,198,73,132,81,136,171,164,25,171,52,206,82,156,50,145,174,195,33,105,218,46,176,71,80,38,130,65,98,168,152,188,53,8,68,33,150,16,140,117,216,196,25,16,202,5,9,216,165,160,41,210,129,185,180,64,51,157,99,181,33,19,193,219,164,134,104,198,33,122,183,136,254,161,4,139,225,88,103,186,228,244,210,73,118,125,183,74,154,39,77,152,65,156,96,138,35,56,7,230,196,75,84,69,176,28,107,96,104,43,162,48,59,97,71,78,174,76,116,37,133,155,76,12,98,101,103,154,10,156,32,133,121,116,38,18,20,198,179,72,200,50,210,20,37,174,31,249,69,232,17,55,136,75,199,217,26,79,49,8,55,150,10,245,75,105,150,115,165,93,42,49,136,69,220,35,180,153,103,145,201,142,24,27,193,138,155,43,19,162,8,100,146,121,16,250,22,55,26,162,254,180,18,148,73,138,118,117,147,31,225,160,97,67,44,139,91,144,40,47,78,28,75,19,176,142,160,76,41,172,128,25,143,202,82,186,28,161,225,196,229,76,65,166,2,105,86,222,47,119,202,215,224,88,73,167,58,245,176,17,167,132,225,216,104,19,97,118,136,142,157,162,199,40,86,74,211,86,201,95,11,151,82,172,98,88,84,169,48,251,147,98,161,136,251,143,255,199,139,206,114,33,12,91,21,43,217,122,102,203,145,36,78,58,181,155,132,179,174,99,205,146,125,50,157,124,102,3,0,114,196,255,197,33,209,185,178,93,199,181,76,190,108,207,125,220,127,53,179,75,252,53,60,203,209,54,41,80,235,145,185,42,20,203,185,224,76,138,128,48,41,60,151,98,78,22,145,165,43,196,74,75,155,19,186,176,67,37,99,71,18,193,114,25,52,157,68,83,22,57,82,74,39,227,70,6,77,39,227,148,35,73,64,13,141,128,26,136,141,21,97,131,141,149,129,66,219,9,20,66,29,53,207,58,210,100,152,16,222,133,52,161,101,1,35,116,157,34,53,77,128,8,173,140,16,122,154,75,151,161,33,93,18,51,29,79,146,217,2,32,228,33,134,206,16,240,32,133,231,228,129,197,226,28,46,191,38,8,96,144,46,64,128,94,90,221,66,7,241,162,252,119,117,149,68,211,246,52,132,155,82,40,210,209,149,26,235,20,77,61,205,105,5,249,77,96,85,174,105,93,68,182,32,177,106,129,81,149,36,169,90,81,80,213,162,160,166,18,118,103,223,177,116,37,165,50,153,24,161,178,83,66,5,58,129,202,100,145,158,230,52,78,217,212,116,138,149,74,18,77,185,129,204,46,73,140,167,89,206,133,236,170,145,38,200,165,43,41,138,101,106,167,88,198,138,82,169,167,57,157,32,141,93,176,195,242,70,35,98,89,51,79,138,107,176,31,0,162,143,34,148,31,31,153,238,45,239,149,124,229,181,236,37,191,11,79,95,57,207,71,222,47,9,123,33,63,0,192,32,185,108,79,217,111,14,202,105,126,114,249,222,178,47,177,176,206,253,229,52,40,251,45,248,202,125,12,148,203,121,201,237,127,168,129,96,169,6,130,151,53,16,84,104,32,48,107,32,72,215,64,160,210,64,16,161,129,96,180,6,130,126,26,8,122,104,32,184,163,134,160,93,13,193,17,53,4,187,212,16,52,169,33,104,84,67,80,173,134,64,173,134,32,72,13,65,127,53,4,30,106,8,238,171,32,184,170,130,224,172,10,130,22,21,4,77,42,8,214,168,32,88,170,130,96,166,10,130,26,21,4,184,10,130,116,21,4,26,21,4,10,21,4,131,85,16,244,86,65,112,115,10,4,23,167,64,208,58,5,130,150,41,210,25,192,57,151,125,229,167,191,76,59,231,3,202,60,245,146,249,115,254,245,118,249,6,125,100,254,157,243,237,41,215,245,146,31,231,252,122,203,229,61,229,58,222,114,159,62,46,101,157,115,216,67,126,127,62,14,130,208,56,8,134,197,65,208,55,14,2,16,7,193,175,58,8,78,235,32,248,70,7,65,179,14,130,173,58,8,54,232,32,88,173,131,96,177,14,130,249,58,8,234,117,16,176,58,8,12,58,8,82,117,16,168,117,16,4,235,32,192,116,16,248,234,32,232,173,131,192,93,7,193,109,45,4,191,106,33,56,169,133,224,160,22,130,157,90,8,54,104,33,88,163,133,96,137,22,130,121,90,8,106,180,16,16,90,8,138,180,16,120,107,33,152,166,133,64,167,133,64,165,133,32,66,11,31,185,92,43,2,0,20,11,123,111,0,64,34,155,37,108,176,196,184,11,247,68,105,190,157,24,159,132,87,59,48,130,98,57,156,50,10,26,159,197,236,12,170,32,104,158,37,29,152,1,9,10,148,38,88,154,66,38,105,31,54,230,175,57,119,208,148,17,21,27,17,73,42,194,66,194,162,30,59,111,100,36,66,113,252,189,186,75,107,159,65,136,226,24,41,202,159,224,0,216,155,40,157,1,157,229,106,196,248,8,213,204,197,187,128,151,27,14,106,122,218,25,218,196,27,17,195,118,243,36,113,202,194,227,22,228,230,158,198,179,28,240,182,51,180,32,190,200,164,48,56,186,247,16,47,108,134,134,133,140,15,11,9,195,2,59,47,110,176,112,101,248,56,133,50,74,161,28,23,228,81,137,147,12,207,122,40,67,194,199,133,140,243,118,61,42,249,40,67,194,67,194,148,74,44,48,60,66,25,137,140,225,134,136,32,16,220,151,19,0,154,43,54,35,156,227,25,196,118,27,219,87,142,229,86,88,72,218,128,147,236,88,79,150,176,80,10,84,197,253,79,0,0,0,255,255,240,215,179,221]);