From 846ec645f03bd6f2acd778064af20a9383d9cdd9 Mon Sep 17 00:00:00 2001 From: Leonardo Comandini Date: Wed, 21 Jan 2026 08:57:13 +0100 Subject: [PATCH] transaction: tests: deserialize ELIP203 test vectors --- src/transaction.rs | 12 ++++++++++++ tests/data/elip203_3.hex | 1 + tests/data/elip203_4.hex | 1 + 3 files changed, 14 insertions(+) create mode 100644 tests/data/elip203_3.hex create mode 100644 tests/data/elip203_4.hex diff --git a/src/transaction.rs b/src/transaction.rs index 5af11ae6..de76410b 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -2519,4 +2519,16 @@ mod tests { assert_eq!(tx.discount_weight(), 2034); assert_eq!(tx.discount_vsize(), 509); } + + #[test] + fn elip203() { + // Check that rust-elements can deserialize tests vector from ELIP203 + // from + // https://github.com/ElementsProject/ELIPs/blob/main/elip-0203.mediawiki + let tx3: Transaction = hex_deserialize!(include_str!("../tests/data/elip203_3.hex")); + let tx4: Transaction = hex_deserialize!(include_str!("../tests/data/elip203_4.hex")); + let max_money = 2_100_000_000_000_000; + assert!(tx3.input[0].asset_issuance.amount.explicit().unwrap() > max_money); + assert!(tx4.input[0].asset_issuance.inflation_keys.explicit().unwrap() > max_money); + } } diff --git a/tests/data/elip203_3.hex b/tests/data/elip203_3.hex new file mode 100644 index 00000000..04b347d5 --- /dev/null +++ b/tests/data/elip203_3.hex @@ -0,0 +1 @@ +020000000101a15a3845d2b7f5cc7715239b35adb511b1bd5412d6a0c1185326e35bfcbfe316000000806a4730440220686c95a14d1306c1dbae1616032eddce8b5e10a7ff76437a1d3266be75b0d61e022076853a2b4afb9cc9ebba3a3f6d5c0ee221d066161c7343c0c7a6e6ba43debc4e012103ba4a2b1f401eb59e1e6b104f8043ce41b38b65bd24c10edb3df8863b0241e5affeffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001006a94d74f4300000100071afd498d0000040a192eae73893749bde9f98f0c46e1e407edb73c7d9a2b00d9376ff7dbea85b6f808e1d10e8a6c8ffe5557ef1a07268a501f5e14337805dc3bce54f9da284af1bb8003e7d8a19c677c5db5c69368ac7d674f26e2afcfd677fc93075072b46b2b1ab31616001430ee4234ad6478821f7531c94d0959eb20d6411c0b23830044da70f3fc67e8cc7661466831dff6e4319d7635937ff7398de37f7201099eda5bec7e3ccb3c680bdacd611cd3fc3d522356921672a430f6af057b1424fb03a25193a6fc69ceb070d5232de9ac792126f52b923dc696c1e9e60a5b2d819680160014c83ff0a0dee34090dee1d99cc1d8739cf318a4a70b4406b63d27333561c44782437f54bd03bf6cb7a024652eadbb901f485be934ac082393fb75f9a591a50baaa7a02568a4884a159b652d3876b0593f94f7a40ba4800323fa85330af8b6899b93f27e3b866a50db5204e35202aa257dc2d121d2f93f9d1600149991aa2937db31a730284c83fc576b27c666735801230f4f5d4b7c6fa845806ee4f67713459e1b69e8e60fcee2e4940c7a0d5de1b201000000000001347000003d00000000000000830300072a9453a5663d96327f78a2aab8bb84e99ce9c0a57b4a29e0b78a662d90c237172439b383d14b24038cc1e0f93354366db3bd3bf8eac6d1f882c45ce47deef98eb9b5550f822fe6444ffedaec17ff2ed450f4d018f9c0cb096b1757da2585f3d7772cc65bb333e1532b3f5d7f23239763f5f6ef1f3c338f12d372d18fa1cc8796fd4e11603600000000000000010db38207989ee397ad37927dd34b06d0967f99da72923dcea100db5ad2edb81fddbd30189eeabfc0309f0e667816f96768654d771b0d534802652ea86bb943f0cd6a13332c566c31f76cc129eb3247bab46a695314bb3b1e12388fc6c849a5f2181f640728a28018308caa6dc3d638acfa7e807ce79a4815e86c367b88834052300ffd46d5b92606fbcaee359da9f0b2f3b48405ae9d1826e2a3a243fc8fb2f509099968728efa7402d9693e63e831f3f44265234f8318f963f17d79a1ea757ce11216cf2807def9316f7d9c8d016d9a30efbfad4ed2439dcfb4ba3315d17a05b87d11aed9b06bc56eeeebf69b9d5b99d88d29b23636967d9ea47d2b558df24496793847a0f3e1ec94bda977657eb841f27c9f2ad0992e17de967dbdddc5d0ea54f9099023372af3bf78bce3724c8f1c118139ce15e96312032b80eae3c54acdbea67eb28185f501e14f9647fe9eea3c398ce8aee9c74ba17c194d0ed28afbf99aa55f51b60c84a4486c3af0f6a5627104674455b1c301d157991b3a4edfcd9fbb0cb78a4e34354ac7b093d66ffca94b577e7fd17afe8d9626c3281a701a7414f22614992d5330fb4359924354a529b73b19da4ea98fc184a96f4915417be68d2b435c1e87a50e219fc6263c13f2da7c73b73613458706806a4b9480cf23cd77352d61e2813f7c03930e0ca2ba7ddb0070ce1819a9064a2c85b70f626e68c970ec9c896df77705a3b58fa3db33ca5213869253fbdcfbfc32835a61eb6c538348a2a4de2d2220e673d0543ac7ae8c16538f3a9ffbe9bdfde7d423a46775290c096ae03640d3e4af149ca2be71ace39dd8a604340b10787a9e6742134405557aa8770462832a244d8842ff00465f91a9401544e04a2e30993a1e8fda639825d125260bd74d6cd366dd2df6a459d1c8840afc0d1cc362f04c32d921511b272ea69eb84739dd5fa886ae7675c1001caf20ccc0a663260018ee5664f3fa05736332736f609374a13d99bce1ef73cd86b1cbe35f4e5f04bbef330643d9cb48b6ddddb4598723f6100a199554d522092af9975bf0425616d7db7e1780fd89c2a59fa8e2b84c60670f7192554a1bf03b2c30d0c29f06ecd14c34bdde89fd9a7f3d570824c70599d276514a24a2fc25d434f743e29e6f7ae672f4c72cea0391d5f5fb21c49e746f1f9811d1d8ee271ab65f4bcde35a783deb47c5b9de1240f819494e421ce9884fbdb05c3f0e67979814b31341201a3f3a8d4f9bd545638f0c2513dddb64048429f0a9480c38ef629970e465476c4abd8e53227c2f0cfcbf40e1e9d701c7bcf49dc359ff19e9a2cb0ad92276f0091faf9ee39435f41a51f39eeafbed6faa3a1112f0914ff4eab591a1bf3593549395f4c607ff27dc88cb787e7b6c63ad59217a3667577a2ddd002df6840726e0190f676b0bb7834abe28bd55afc36c0e345cc85534c654100739204952e5ad184d34abfe6e5938b84a313e75b05bff2a8494a0068a932392227a84602cc08957294f2d055fdcd42108df3e5cce4055e021012eaa8e9efcd1b61c4f15ab9e41840606f0f45b4dc78834f3391c4585275d43aba8d4403e655bed53a5f6fab6bab6c375cec1ecad12f3e1d28ab632d944f377fb0fdd40a4402240cd7fb8f2526ae95047eafcb5529e727320f694ae2aecb4e8633b338fbe7a8f48a5bfd2b3953aee823bdc75b6af87df10c5508a74442ccc0172233f35e0a273c6ff825aeb2b17cb3fd141b460c855b1418c9beb473be95e22b5d74bc005a30b1adf50fdcc8c4c0c323b4d415be489b43ba7abb08db00184ba0ecc7468b376a89c2d79c616248939cfc0617af1cf4ea6643be8a377622f8891887a85f94b8ab5b48c8d6e6b022eb61e6d6b16bc06da13cfeb0ef1e3bbae23c0c72b541ea3f44e21ebef870803708a992d7e2ef7e2d1f0e45a1a94f08f25cc226a1b45ffda7008d34d8466c2889651db1686feee4fc449b8186dd20698ce7b4e2654198c48bd159069932424ef70d141d9e4e16b34af76f4ddf9f737494d53655d4da2e470ed4c53dc19fa6c22acc34ebc9453c05fce0c7ce3abf606db3f78b5925983d8d6d334815592adcacee242572d6c2ce2478fc87fde1923e3b49116f9601a6d64f9f812706b6c8d1fbc66e928f4390f3564cb89dbec7ad719087e65a72e4c2c77009eb92256e93fa0c98b1a9f01ccd33e868dfd69768c78283625abce503776aeb1ce3674b90eb9fef9dea39bd25676bc3101269fddd78c02fef1a1e1294e79afb0c6130427304d99b5e1936562886e2c572d0111b7e20aa287259a252e2a746a5a38111fe1863a5de499ba336026949fa28d5b9fbdc1b4e1255c4ab9527142e3721ee77236223ee92dc662698a770ca81ff5975c76830f70ef94a5eeee116e5c1653f46839011463f20dd958360064539cabfc91dbcfc9c5196e9e5cb610c672b41870e595f8076d5dd2d9ae8f7b5c008b12fc6e2962a74033589e3f9a534e0ff9a6a1edb58e795e817d5ff5295d6f2ac6f07fd90c8c40fce703135a2097fbf4ef89a14211f33206796a02e05c57d0e4d1b2330e35ad8f1045dae6a6e1a57d917e8ad149c3d3821a4b9fb8d7b55a7fbba19bc89ece081d03cf920f19f17b04f021e9a0731616ab02da17beff323c6334715b3462ee0d8320bcc27cc0fdf8ac9f840d0f5162198d344d69b95da92b69e6972c08cf6c1fc6694ebb2e8619194bcfb86708ed54d6d1845563473199a0092887db5c3a125153b4f7161e3259cd2e420d690bd17af00f0f3861c2d1d156a7086642a351f3929949afa219a1a15e9d3788e41f55bccf3d0dd65163bd510f196ec39bc8712ac5b44e39d079ce7d55ba53006ae1b6306b3c5dfa5684a16e1b170d0e863f0e82995ef213fcd8c359d0089ba018c108e48834cf55ce422af7aabb2ea110cde46cff16fc6ff8ad12cb6ce232ef52c292277f6c24f47d09a203f330f20b46e7c2f62a61d23b63915b5c809b6f767362e58816dc180c78a963b7cff151339ae9c203c6eca8a655083d458bf462450754d5af5af8302232f9991d2b8eb2aa2ceb20fc24afc4c9b49a8e0666e01b51a72afe3f5439c73ecbf79fb9a086eb7b79287707a22218cdcfa7ec14658018ee585e52086334fdf978a2ada760157fe105a6d1788ea8c93d44a02da76a1b699130225e22d14ed55d610e12a11cd9453c545aa412629c3615ee1a06884f77a4f151dc95f4f63eed980b1e294631fca23683c531df53b92e5a3df90faf9f219cf1226d84e25cbf66a57b792a12904cfa4488c42901dd2073ae56a6d80cff56bef1b78c1747206e6b789f08b2730ef0c38538b5c375e7c6b85178a0adc5eef2646f76bc8c34af41e7aac2ff18358fcc18ff67866a8ceb5d0d471f9c27d403f035c0304f88895a70322be23fa5b8a5124d07fd61876b0ae2ad790af1684a894040cf008e7c6cbae45660cedd7c6edfe5ec3c7e3c3bd4a0d3d284de775a2de1f8cb4f009fcb5dc55a5ec0bd6b1bd0dd72bcf0d96682d0b697bf7b2f36f07869a5cc71d1ec724cd210713071c49f16a2a44743f7baf73a7f527bd934cdd2edbbc968e45dbba8150922ea0c43c45007903cc2cbb5577f2269bdd968e4ee34f7814496852d81149639cf635baa2f6e021bf266a0dfdbe8b82aaef4e833371eb66609c571352d7617f6a696416e4a3ff452859637c65cad4f6ede62a2d833ddf6502514a34d32651048e730b0929e52166926f1608ce25aaf688477c60c90f88de6fb3b089c60c106ba62f47bcf6b35b800fdb4a8cbdc9d04e122128ce6e8fe19f46045e0c24a77e881af4886b1c1c7d48864eed0cbcc5e3fd7c111aa5b8d6cf3352d026fe3d9a51eaab92fcc5f718ce4cd6783208ed5318ff1905b0f07c418a248478843032c3c8dafba78ce25fdac59aa7c3f04a6cac38cbb16f7c82b8599913f59fbc461fb4be3a29fc2cbefc33de54cde492e35b36557bfb4e879b71140c68d9ed8eb63a1da93e8b71c176f814e17968b55bc5ebc2682e9f41c177f22cfc585ce5de97bcc851380b2d6a5888fbd372939066dc71f0f474d6994407ee0897a03dd5efe033870895963c1525b5ee66f7fbf7598aef832bd6b10174f643507e1acd73853e4932e9df94148dd983554f88f684b2ef8210e2d98c4a70714542d0a3dd0efb2d553beee6192fa7cf882b588ec90ed80298d76f5ea74385c163b1e97386014d40ac6023f06f6328dfef7648cb3f87dd27ff7e83b14c4ef4167548764a7921fb882969b3560006ee6b52f01b95bcf4086226913904b52c3785082446e951cf25ce1da033bc0466f712868f888a7c435a1c8cdcd98ed16c2ad7be0eac833842536cd49df93b0968c18a39f98553b079f27e4963fb5e23ad2303cd58bff6cebbe553c18168a2c50ced9515b022315bb1401865c31397ba7afea2b5e7d128974f995a71d35f17551e6f621cf9d189f07fb2acb658b278fbefcc4769472ef60db4117006b93084296e65b564db12226eb4831cbee70cbc3d030ab81fa7efa81965f58b5511a377014cbe4d2e157bd2c6ce56821b10e184b1358b118c085f4547397c2b70694c0eed3022f51e772c4fc3470ee84bc62f61c3ab0b17612bb9456dd8bfc4c0b348360a9a43c74c018356c2ff6934439d4a6da8b7b77a691676b9114649254d079708ca6c6959fe6f687cbf3baf5fa3a3752c02b07939db58c00fe3b00077e7735bc96e9e44079787298fde6a93907c0ea474f421cb23a52b8f2178fde3aca3fe527ec919b23bb1e2adf7a0b8e19a33f0e7ebf26a90d9d0a1408f56f343a5dc8beaa1d169038d8042b4f465eee909b3f773cf5a9b022241dd662c9a1ecfe5d8b1baf2ec8a797013413baa2c433e0755868ac695a2b88882befe2ec40db9b726c1a6d53b9ccd88bd5dc6bffb5b2d20788a57aff268a7430e1fb4691c36b191d15f880fa9b4a63dd52d5e96258f0cc32bb5b9d8529ad744e69e5fdeaae758c87af2bb3660f2f5c4a0f117a8983a5d564e6305f39b37a3a128f6fc767cc63f5922c3698968d3a43e4dd2426bf996db1d30dab0fb72d7fd58bf523d78500533670a088471aa94fdf427a5d46e951884c0ac4a25c7b923a333bb6d06f645d4203d498b0e158eb06c8f83f6a9566712792cbc0e55f9ec76559f22a4acedade04f9bbb67ba7597bd04303576be67d6494987f12a9db6059e237d37355c04a0c7fc328045a032f248ba25c03501df4277e7c5c5b9389fd965e7c2be53b1876bffcf20d8d14bf22ab73a8fed26fdfa6cdce449f8d4bac0992616e27e3ab20d68704643478eb9e5a2940bd38437c18248735491ff3ca0a28011b0d503cace292524d5970bda9dc6b00b728040c23da332b2f2e872ceb34b61d313ab58064b3c3d86cfae7d1a0afed7fb79a0ca87e7ddbffd31646f0f419cb32905c8035b96900fc7a2a04bc5538afb70ebb97a119a2afb2563f246724167620c3c8849710fc7317d9f942d22c83c5d992ee13e2a382d0d44b4102e7fb8ce8f4894731d0bfc9bdc604e64a543200e67ff4a0f675ee6ad0838ae8f2b82b3279ff13cfef68824b256980cdeedd9af77a516962d288515e9b5bd7087f8b4ee1d4572d32b69e0314e9aaffa692b1a1a3862747a2f30382f0dd030d2464d830fbbd9d81bd9388daf02a5af33fde9bca24da7be45c5c64ede10980c21afc82beec53526523fefc32319e38333b87ed8b21f434a590e7987ab65063ef7970f0677bfce43aaacee42a2a9135ce334ae277e11119d9dff974fa1361ade10177cca97dcd488c897e55b5f5cf157cde62faf17bd2f9aeef9a4ac663e386bfec8ab2d2425745a153a08a27202cbd02f44595160c45f03bb1193f15d3e748a768c1fb0170014fc697b0ab0a33e99eb5c985ac8e55d4656aea50e99029930d583cbe5aba66f37397081e804919ac34b5c70ebeeab2b2c6de88d7cf046b12a53d0bc8f5585bba68f5b1924a9b44d112f65a7500bfa96e008cfd2865e5c7630bd02c352158f11176f33c78c69dc395ce4fc9f0c47fa014e1bb34c9cb7fb35c0c3348cf443fe276dde65724bcec2a9d38bb769439eb8df303f826d83834cc5ed01ab71fff8538be2756b4149316da3f6a75ec69912cd79a661a0cf5cc1d11e87c37d0625cdc840d0a62191568ff31f1a818d5b5e06e373f977780ae978e1ad0bc6c9b8d5e3ba96763fbaa1b6050d7f5f0e91d8a6dde1275e9d1a4c195475e8e9e26d68ee457ee21c9c652f34029660c59cb83030007d05b08930e79ba7b05ed1319fba72b5dbe1ff5b7d5c55b48b66db883c56ebe9bc6cfe5fb4362214fc6b2edfe2a5203653ed3a51485f83c687488a565c993895f172f239e10868b2a4f0cf10a4c60741b649012cbf055e9510463349775b5ae48396af60100559721a0021d81cafe9032951b0b308faaf7630572056b1b10dc09fd4e10603300000000000000015df7ae018a3d4b70f67ea043a03b10881d5d4e27638443a605a1278bf024391dc4a0e917930ada85ceebb277e2dac175bfe065927036a802320ced94763ce47685102e65e5d6afe5b32cff1a86c2a4a6f967959da5c5c8274c7091cf58770e60a19765dab2fd2daf6975f8d0150d459cda988f65cbc736cc0dad6aed81c6477d3ee000ff623147a762b4e82a8b9018645512c108cba65693fe5271134a4ff9d81dc511ee85dd31016d6628000ed5529083849785d05ba5d9a206ea818c2c28b01aef1c528218560ce8a9d777f27004a67a54c2c4393a67c26ba012e1df87e9499ecba202a012bee4663410c06c6a441a1b4c1ee31421583924d25bf66d0ca7cff1da709eadc511467ae0112c2fa7d55df6b64732095901dbdbb230af26aeefe143898075f4f53fd85156d9a892d5dcb0a6f17f08096a3214dcaee7745dea000d6cced0cb673044d10c05d7e62e211cd2f6b5aac4e1f01ebb9763ab57516459e3c762fef3f2630976921091f60ebed456f3e43578a874232a840dd9e237ae793673adbffed09a32f1308de2d539916718e8ae2beb0da4c76951c4b991f6d646301988c6ab601809055b8cf6efb75036d38cb7c08a9a9367b5849292a0df83eca86b7788e955782b207bc5329e991ead6d9e8e961c1f2b1b2fc2c2a86e52587f2ca64016cc3eeb534fca12c76cbcd222ed433e78e8feadb28dd0635d9ec74b3cc31fd0864fd51f3a342d16421b5c706b7522cc0fde5e7bc9e3f8d6f07db852fdcee68756f9e8009b3e5b762ee7c49212fd2021d63a1f7787a0f8287aa66c45e4c7b9d8d0100832ba545a957bf5d9e8374000c00693b52e1668e4111a169e5b3fadcde9028ca14da102905b1364a00d7ca2a596caaeacc2b36c2920390a34f619df831c8ea8c7f32d897f6757ef2ab85da88c2c8999e7dd8826f5eabf3615d9d7e3931a2b13e61ea1504dd29f6e7f6f3035e8a2231c7d5f0e8daba77d82105b965d7692e3518387d9e13c1aa2b3ae9efe11f6fca8c5e102e15887f027a1745d3acca3b56a40a74f75a38eb504eec5d98d6519102aa21f6c040a8a28af1d8f88ff7c85cfecc9c4985bc12c77b2d7095c6b12f5e4c48ef3907d74ff1847e481e762b635eab59b853aab239389e1903ccc40a3bcfee6adbfc66df34c17dfb86aa23a244aff5786031f83553e07097dcddbdd75486abb9135f827cba62f7d8424bda1faa534db520df53f150e8d67528b1b012c8ee4789e7137efc04b6bb3c764177fd723afbcbba3c7d48473473bc540b348f6947461de216cff8c29d843c45c3c3a771befc0ca729b30154b467c2693962e9de3b93000dccd0a30a03ad45ab6b64dbc5b2e6982f0da081d2291c49dfe6a36cd733eb300618bace1812c3f734245bb67a75a7b695c30f68b684aaa2a97e0eed1329897eddcf0c097724c5c2c645a0be0e3461e407b18131a72e8f486678b663724f5fc80e7152afccfc6050c4e29479096d0595eceeeddd62e832f219bf4a3e17403d5d51d0fe34ee78e8e8a74479d3ea314263710e8ee31e4b3d8090e0cd3c661a4c64258b343ff65cf91ed274b641bfb279b0e3173c504abd433fae728471cbc2b5bc0802c2af450db906f33eb61edb7dacfd34baae99003e52c8b86da75ba7a5f157e6e2c14c0dd55aa4e0186247d26efe41cd2fe8ae653de5747f2bcc53bbdef3f506f11564ad1222638124473ef9d90cda35a377e096764bb22386fefaa3dd00cf83f656f2a4c6de69223deac1912a981c2ce2dde4e0438916b56a4593aad026d7d1ebb2838f78db709591ba6648b21b05df9a31d7e7eee00763ae2cf3e230bd695b8d2221c46d10c24013b43cd01fa06939126d07c57ee5229710dc63f0a5771861231f7a27022c1d5c4bf9b112d9fb63e9ed23b13baec5d69c8e454fbb63370e219a7db3ec3d674a4da14e0009a0b9aa7fb9334a1b16eba3ab2d43decc24f5c4958c3750891bbfe47f0973531d0b7279dce4353efefe7f96bb3821975efe2f97909a65adfbe894409cdfdc92706242002831ce1942a8228e751bcac7c2ae1ace49ba6aadc7a62356011a5fedd878c5686d801b35a9ab4c2a67adca0a8f21184961786dc51e27256768eabcd7762977fe949034d2cbedfd3358f8244517d35f1fb9994220a77f41ca1c2b6e805af12c6f381581a0ce3f049eff12a312fae049f35e154c5706bca4a3c944e32ddfc7b5735f2a70df6c4cdaf2a07c96da02805df389c4b88f40efb1134975a6b9d85ab8c660ea45ff08077f883ad75919bcf67c9c853e7e1ddc50e7c4143d3284b468a8a76d24130483536e4b27f6af8f33967866494dc35dd9096a7d9f737b33b4878a45408e0c97d2a97dd5d3d4b7643d3b4f04e1e92956684efb7962de7bb3beac91faa4ffd5466a8122bc666a1a7170dc688209ec443b830f3d0edf446d2f7bcef395618ba00bf836669ed5468db1fa41de7c86aedaeb541892e30ab881c434caffa6179aa58036d0ae6c37b4a15ccb53cab49af5ee3f1e2bc2b4b35a05d24cf4209fbe69f878e6661c8131bf7d36e69989a97971b43456878f93fad7eb59128a5451e2bd55b529501549049dd0cb14f9203ce0ef5f89cc394b46c5b94b724fca2bf7cc987f67c94ee5e41aa1672cbab13fd1ac47f575e5dc9daf35ec6369d24245a29a4f94a7d2e2532680b208a161aecd483eae353630d275b7d5365ed89ed9c56f3d7e62a800c8b6606a7f19492b9290355662f7f920ded0585fa0f52f93ad7bb0b0e5b94c1551eb7de43105c52de3f2daa7464a7a951fcfb0bc797fa8012af0c8d7c37a3d6315ca57091f862da8e42e5b152e14f6556f5dd737efa0990e238b1a61b1c786b18532d248030c5431dd3ca558e067ebc2cf41e3c29dc46db16b7d5240952d3cf778f0eb8820695f0bb76883f8c6c26c77333fbcabc83f8fddaecb79dd0c887ce1e0c0c71d564e8786a1589caeefa68e3663ced4c86514d63439ee5da6bee624e099ee4b28d51d310d67ff96a9091d464a3b0e75acb23ba6d2d686c1f170c857dd5950e0006ff1b204ea6b4f8a5ede60c932a8ee32e8e175dd30b5dff1158f96dc192997663927f1307479deab7e9428513f765b08e5a6c985c0d886f31db3dcb8872969eb4d93e0d9cb730cbc4729128b0208f8941186cb158d17eacc3e736b4f3eb6d5158af66cb6acf2ef6799c3985f21bfc52f0f623efe3b22879bcfec685b561bde1558d2743a152d7743e32c12fbcd18c4368e824780944bbb7aaf5fbb735a10c5f1d9b74fe1c591c51208e3a82d206f54358ebb6e9c1b4c55934603a35a85b0384ff2adb1284ad3c0a2651d5521a04485c3437a0c50159bb0536a59ebe6d6e7e487c3bc7236590a0cc6b2fce9a0ceced8913c8928737797a8ac8aa636b714a4b2b44fab88aa067cfef57249d06a96315aececf5edb4ebd6643ff6d3d201512cb1c2cb6d1f57b2f802ed139dddfa826924701e980abea5b87e3f7720552d5c1d4c7a9f57a4e5280fe94a4914aacbba8cd8f80dce100b690659665e85f8fe373107f36e48a6e4dceb1003cb9bff577ea80f48b8ce9fa2e99e540c688bcc3b1e4acdbdfdf4861b22c438f6924af92ee4e7b8eb2cd4d177de4b89e0011f1b27b48aa53290f1536742482dd16e8db111bc1830f7410a63806b6fd70ab00579d85b6ed0bf6aaa1e9afb86b97732b6523894ded629a63e66bc122e1b5751b347a04ba7e5e8f7f114ebb6c3ae949368b1ace39c0183c3cd10c8af3d819845bba9dcc72ec03c1ecf67ef99171c7152112ce94ed8689a05ed25108a0e35c902d3de7bd56b1a40178370e52a80ee70e0ff771d4beff9c7d2136bcfa50ab5b0587f6b2912fc4809cb29682c8526ed3e9209df173452784380420778b25e815144c8d6506b7a8775f34d2f91dc6fa60605677c1aecc99e2a62875d7fee5cfb8a01ed4b83a0d1a6a2b71f29e84a628eae5f7dc1555b5d200992328fb7df9f624a00017f4db35685d442552ddbc5a7c8306425e82cb9ec162888885903b508a83b317c0623dc24fd94b8a5177a0a4b3aeaa681db585bbf39e00c9653c1f7ea3d897004622580c5724777055e1249f24c67d836d4287bf1187b53a5ebddf11c24d8d729f851a3b5fd934b0f312e343eeb441e90adcd52c2ce1ac18f8a3edca63ce2394ac97f971795dc466572ac86a177ac609d5a3c061406e5729905e3b2593ebb5967370bddeb72d9df5e6f17c62929565a12c84a1fecd229ea246c4db287e6ec00dce27495f6f532e61f9f816f02662dc38447edcef62b7ed3c1f5998c69a2f8a53eea15e6df9c90b33c1e75270fbfcfd4555bc0bc0979e09452ca43f5ca034b83a10fb07bf1cd34c5bbdbc28dbf84868ebacbe76ac2b220d9f3ebb240b18257f3add2e1572cfb4e89f8bb1dcc73678bc096cbf605f365e6a4c08e3e977956886aa0889bea0b7870ac0edf2e5aa119e14b8b6c9b218a2c3dd924d5ee9d8644c33ee12ca37a339e72acf3d36686bcb4ba863aef05b016253e7f4c22b3b59efd2ac71447e0d5e9bcde27ea618405c55aea3e27e4f89ab386a709d9bae2bda74d7ed7bc70336a38e98a4f1001b6ad87548c78475f0636c395428df74a7b50e9a8b97321b3626c3ed48463514f2aa83599ccc6ea6d0666a10705451bb6f0722e3aa9748235ea47a07f128cf407606f5cb27ddcd2412efcf976490610efde9ff47015472c84484fb574d1463f0af3749f8b807c1882807294fab2dc80a7ad1d09e7c8f6cdd4f720d239589d9194b266242b3871ea46986c7f02ed1a887897bf79ae99c25d4f392a6feb66c9545df15aa02794af176786132d050ac760065b452259eef105ad7821f8be1f66d3ac7e621920c299b77c6170cbc6539b5386ac2f2b9be6ddcdde1f79b60530a8fde14c97f96844419d56f018813b3b8bdb8cdbff41f77a33350cef4008b177fd38404d0ee073feeb6f884ba87554b8586017ac74eb248e82c0b30ce8e6a4a8810f617baf4e3d59503d63b1d4ce0d3606909c13cef854980c7e2bd4ca3b1cb1356cc1c7add1afa4d0375b413b31a31fa9fde107a011d322fae0b0ddde97f9de9382830ec4fb823b5f3e765fcbbfd4dd37d37ebda36c7f48d25ccaa0ade052d5f196c3e07ebc84a2e88d254951505f4271824e3a387ead80b6e34cbd1a16a80af447aa1834bc34efdb830d6cb39831afee1e04741a766a3767c8f22a9324c5092472cf26ab82e95cec74957ca2c6a891ddded9817e33bcbd295ccfa752fe9b18ff95991297c375fe65e623c52274a604d1b253e68c44d5a9bc9a4cd87f30c4cac9ae37980391d5844e50eaaa3cc2acfe3797d69a44556c99997f6ffe476b2204f085f16b79a3214432a1cc5d1f04cc4ecb859f2356c368033f8fbc699a61517e2a7fcf69570c5a9132f1fb9c2d25122814e65aeefc31ca88013a1ee7b3a78e047831a499922aa57c708c9a305d44137bdaa5b50715627224c6eec167d218dfe11a0f9be410c22df5c9a6558a5d4f92c66602d4a486fe126e9958286182a235b606e2799a93f55d4567aac6e1bd28cca81cd22e49f42024a6fbc9f68f98a11441525c6c61de55d3ab88f4767f8de3a3bc523a796e6f79c8d72ea2042576691f639beea20f163ba24d6f7b93cd4a226aaf2400ed6d1d36d4bd105f149e4d3d5fc9bbd8af67ee3fcd749f749ea6de7a5496948c291f260949db29762f0a9b13157fefd6f91ba3a64a37753ae94af7942dab99f1e663a7437843c1db3234a18d7eed863bbc5b111205f39427d92d9f175e989adea34f530d0ad077623125dc423c8fd6a799441e96e9231ffd87265d18498d62fd5914cfd4caac00c34ef1fbd41dd3bfdb577996c92a7a92590753a5ceb0a8eac0b380673e049830300079df7c87f6d6b5495eaa251e559d5273c0e23a69cda78a09b1c47313fdd1e5b1a95da4bda0a7460eed97c7c9d3feaad0261dce835a7f2b0355d99953090c608a1d91d20401e1abf310dab0a2307de2aa394201f59908b1675658b5723ca0c473c772f9a1430f2940f29824dc9f3dc374ef2a6c74632f6624435d2945ed2b379bbfd4e10603300000000000000016fdc7800e83e7cffa4a347b9293db0f868be849cd8ee1e683e3d3ba12959f8982403b3c2bc7c2d4775fbf401b429025ec80e65a0d31cd36a9103c7d02be5bb9a5047bd7253c075e7ad4787e1f3b22bacefc6a92b0b21ec6454f65469e38bb5879c4bad948bd767cb70ad6e52b48a4093c418c61af14bf5f56733eeb6a1c5fb8c8438fd09a4b7fb9b8b3e2b235d268c0844252bd290dd8a31c67501be332713261a40ecb9737ed339c91374cdc178e96c40596e5e2bf4451e18e165ecb188f9df41fc0585921b0120f464e3cf3b6909fbed6781b67e9ed170e20666f0be42a6f9f93b391d913131c799d82935e291800c3d13dac4680de77b12329b9b45b2264adf30d985eedfcca7065c0dc8ed1cabbe23580fa00bba28088ae0be269102c31c2958e0a60667016f30c0c8334a42af77e046757bac29322ed9e1d7869849d05da65d4070b6ef611e6839c6b17af2c95c8d4a5403193c3b2d1b1461b2c37ba3445dba2f00002425c37376159cfe9476fab4cef746c9c8282722bc5e79e46704cea3279be11d437650962700d9bdc21477fd553a59c8eb7bd88cd5a6f4b9afbc3d18244c07109615bb043e0d238b6013e2d7cee1e7df2176315ef60e3ad562730e73de0c33312c046d6ebeae6cc77acf163923042722298457b3abf77ca5f4ef0b027273fa8718fe45f0d944d47ab8c3ce0d8e36f9da4a10b13772b9e70bd0f36441210f9e0132820afae291d1be1e6f43d127f57101dbca5669e9ff3af67e58b4ae8e9f32466090073f64fb46362e90a5d5cd257e91dabd4e04b28b81f2ac7ceaa5f6793803d7c70fffd8cab06aebe1055f4aff452747db67b9f98b6f0e650dab60dd5b8cdc81f8648a984aad9df21b64c0a5fd5d9ae8f67e3b3505cbb51dc4cbc194c404da60c4827c9444a51dec2312882ecb83ff6db54b96343c93937fe5230e7b21b25e85500e77a746eb833c1eb7442e817528f5f3f6654927d0f2067a4b3e18ca8eafa8a9a641f66e8f7864db967211d4d578df37b23d31ec0c95876ffd2902d835b9e4abd40e81213af8c360cd2c50c62a0f3f52690817d74d56944c2b6be2841ebc6542c5b0ffdb1cb4ddf4aa8cb73a6c70cfe4d300c4d4550d157078ab4cb95cf686cbcaf3f4e07a9ba75473a24dc567178c7bc5ab3029834a299feb7f18a7269a3c0ab2f07182024bd0f1c5057c2b52acc53450c85b19f7a83057ab59d693ce27f652f43ed4d1013a1f30bf69b36ac271abed2148be3cdfb084157bf1b3fe9f4e81236990f10e15e6333985db42718737990bf4a6494fd8b7632630bc6bdd80e855fc8d6026e0e2f6f684c76284a79466d42a732b3296599894a1ceb73b91da021b7d4d6104a0bb47c9c8c2ee4bb5d5b22db329f5c1100f82c4df0de9aa3a58ddc000400273aa99145841c904108b647f2622a5e51cad17f763e078fee894691d3ce64247037f0ed4bde23d6d6a9c1d1ef07f4baa61011dda149a7774b063db5cad13f5788dc045ed6efa48d83be5da03f7f13a09fb8bb3a67c5c75530286903bc148747dcc4af7918aebf97f4637a1335cca6b2f8be11070aa8352ceaaad8090620b40b943eb48be90d853c2d404d9dd68c90e0e5117bdb45040fee3068343f449268d143a45a3943c7c9e1248c8243c722505f51a25b708063fff7a8de3d28385479f7739dad38185e2adc4fb5499b3f00492693972d2c80b048e62942c6e49614f4cb532ac55dc346cf316c96de99cb60b455a14916ab55e6dfc659541438094f48d61d72a716f5f3bb89ff48a0567168fa1f72461216a14662ead499831ece9c77ed64a0deb646c4d3e9b6426048b6ce1708a2ab5ec8facfd235d28f111f3d3b76fa1f63a483a331c0ab99611e52118e55d88154a7b9494179942c4736589d38a4e9781049df97607a2361039134f4734ea2697f84ad3501f6eafad69c88508827c77af89ec245f38f62989ec6ec4188c996757cc38bbdb768dfcb2796a11c5d28bd071e16d97a679d08936cc415156e33b0e68ea0aa4cad553b0018067df826b89cb1f24bb9c075967d4385b466d2b262b924791c997f43d32c5727bb76b9e0471abe7b26ba78ae67c51ccc10074519c36908b7f73cc9ec3ea9d9ec2c18766190c656e5261dff894b18dbecad5c14b6678ce69429f3e95647ba9f17684f62379cf861e00b0cbe84c4a8eda771daa3c78d9f6444962518ccfb8bec1a5ef4cce437f1798940e001c7c89da7e6b869c83040df3dc044b4bcc57247bca0db1089b9879bbe82e2a5f328957f2f799a754fa7d43f550ac7dfb9fe0acaad61064fd2c6f60300b104eec6380a037f19159c298ce33b3912dd1573f10cd86dbd01c9f0a060049712c7669cff7bbf78cf1c5012a53b2e430ef4925470ffcf30ba9dc3e088963b9e374c54d87d78ffa8cef29efd6a4fb9a902be0370d7d0f4f2f798415483cc43cbbd460dd52357f978194bce25c1bc43df4842ee7374526b9282f37fc818921431b82ce8cf92d52cc815499eb1147905811f968f6d6b4f2f6163460a8919c605ba0d13ec74aa015bca802d3fc1a2aa51b5df6153e5d30328a03f5062cb5ce221a1ae3d50518844f0a1d48487ebd8e2211fcbe09bdc8e5ab79d0b3e7f5a4deaa0048cae4537097a169a172c2d3ff0de58ef20dcf3163da8b48709967fd74117ed5a9c1dcb3bff44df95105f134c36e17998a2da2e4424b3a6f05d034cbc7fe9dd31240c88b23e4b22f0144140608f3672d3cc4dda907a31666ce575feda1942539252260ccf55dee628e153d4bdd2c1d30284dce13710c233b1a7cb1b7df0b72e1a199079fa3a02506c80c06e89d5bb3f898e3fda93798bd33e51e606e4dbfbe478d59920c283fae6f572691758dbecea7099db871e1f4a36af95ba004b8e10bdcdda4bd22fc0ae672a5bfe5154ea716e1261ced8abcfe828614c434ef37b576a3831458957c87bb9ed15ea21533769ea99ab5fbb346736f1357df438c73a962a57fb6eb1ffad6502ff9fe238fe35736509b60efce46e0ba3ed8ccb74d7290900a3a16c1260beb483f9781849a5d36a6e8c27d4dc7a722d321b20caaf7cba196d6c17c2cf603586300506f0391881ebebb32abe250d8920c4373f1998f04d576fbc225f3f37a6429c79c03b8e935dc1b17746f82aca1b1cf74698419133a5b68195315e6abe972b9ebf991af4416091cd96860470761b92b4d482ce1f7146f60f53af5fd6ad64514790b9481c1b8682a5a638fdffc60468f5f363078eb078a30d03e4b71c954fce53dfcd2a37a652dcb4f84d6985e6c2157af788ed664075c3ee16dd9a389663be96309bc15940a9ecf4b14bad02847f5cfe39a55bb6e64910c85549618b4373c5c17a59bdabb72931466951d2835bc100ea087914149d58e788805ebe399dae3c69e916a3b1bc04287c073fba030723ccf37fdb341bfae30c889db098b9d1f23eac18dc14a58e2d215e03167c89702be4f8b55d4f4d8db5c1bd44ff2b587c84c91a92d4fee194389743cc2cbb234dd41b49d10cd14a0e2a0fceea4a800b58ce4542458cd6bf0acde2f184bc59be3c7c6992cfcceade2e37087eb995fedea1ab30186b9b122a3a76096d7849fb386765b27e66ca4f71520f7dcd60da4225165c7a9a6a6f57d88b2915a6871710046e143d0fc8c70e3819fc83cea11dc326f143be0a3e681829bbb1bc238faf4ef48d6205066c06c85225fe590c6e7f22a1e601e7c219439412300b8f747b58bc90a74dc57a06a68dec1514d2eb91bcbcc43f7aa7804a438e614d3b942dffcf51b373dd2287853916da6bfb0c51e9d7c271b53fb2f1b40109207dda965e630ab8b6831116cb4d9f9781f53b08907718975ddcb9eae1ec3a6485e55a2355004adc7125e09e435d9c5272ce9e0995af7c2000e3708f4573e51d431f9dba694eace7ee7cf41cf39745c19e56492f54029c1974e72bdb83b294ba98b6be1bee7394f603184f50d1dfa7234349e45be5136919070714d062fff59925ef43c35584f31c45c94de27cff9c40984ce74c41f7a31ee56094e2151edf9caaaf5d2e0e7e800258c2e4d8d16c48a1971c9ecd57334a82c720dd31ec064ba38ca3767a9e7fb67f14027afbdf9720331a82be63f5e68c33016f73de0b64fc1a05bca61d7b37fd7333a328a128c74e23b39229924de852009945f52db846e5a76265e774b411cb070c9e452c1c285ecec15a2dd80a930e73ac4cdf026e39e26a2b65c29a1b093500fd1e196a7a2303aa24810cc62c25da977396dd7c3e63d0505fac1c0c17236697871c522d25abb787f0b6d603482d4bb56f97b356bf5a68d2af97e3517d77dcc1beeddf52f384a978149edb365bfb9ea2adcc13fb73667002654db91072f243d3ca4b01ba8fc39f056683477e505b208e6161a9cda0f068bb072461c81a5d8a2d3235d3b6b0279e520724001615cf50779396be4906e6be6ea99d330e581e6597a79077ecf7230ee41a657f1e756618d06b56770afc3a640605d9de1cf60a87d0c35799165324fe24f7ccab85cdc244bb3935e1bc9573e40681cdc8d905f47d7273e944beaedb62003fcd509ef7b054867c7b93f43bedcd6e9e6df6d32263fc5bd7d5edb048d01377fda567fbce21624b211c93c488b3bcb11a727afd5f93e11f11f339888fc92671af1a0a00d286f9c5e57c1b0bbad3d3747d4bdc1230a853aa6f4a26c039ba673ee8a4d7e75277abf9eee44ed13f856ed8c4688d6cc055e13dfe81c265760754da93d94eb71cdcdeb9f82dd79f23807588267476ce1e762eaf07802bbb26560bae1b04b0f3cc7d6deac1f4d95609f09429c11cc854136052cafed89c4822d068ae7239082c9ffec8eb287c885ca7e9bffe0eb761ea5023c860021a9f84d19b659ca67aa358a625ca2fceec73f5c310a7715daad4c9d231f9c37a5b0d027ec89d8abdd1dd1a75e77403b20a8ba351e0097774fc3e664b00d48d28693f92734341e25b98d92b948bf43f4decd0caf1f37dfc8ae8db681305ef8b6a588c229d41d03c8770229f16fb14fbd9a9fb7552670dc9776ad571f833b637b16cf31459c43542752f84019811d558e9d0aeb8cba40a5add18f69abfb07107668dfc6254a5ab85bf6efbdbd8a449782967c8fb936b9e47f7a7882f77d53dd57df730b65434d3ac8e38b0f129c6c132899b1f6222732ec1092fdf8214e88a366d33fef3fbe03454ad3c0fb5d0a23b38facf28eb0b26bc6aee9dc9a91f53377fa509f40798614330db0b635dece2d201e69a31f341f735bd8f9b62dfbbf0b275e9b667935ece7e1ef86b07699e91083812ecbed1f193e8d0a279712df0a20ae79f0b3039f0ee0b79f3feaf5185243fed02f8350b2881c113d9b66def62182a793453142aaf7811e937506593f3786491f4a76eb384f7882d2047e3c8a561c10a044e4bb2d7373d7587de11d2995295c9912e7e14c541556548155d71599e359c95bed8564d24b3b963034e1ee2b710a4d2c2f26c09389caf80f25f4f761109e73623403d8c8299cf619bd196041ae72ac5a4f3d994e55997a6abece1f82a40246e992873f8d9d191a081ed259f2f780fff945da7c833727a6bebbb44e1ff53ca68e9d48babca10b89d2761382574dc8c16f8f70d979582ac72f2e14fab3da1d97ceb597061886aa6949e48c4b32fa7944e685321cd77562c3beab06098f5256df7d53ba90a1ed746858f61e0c14ef2c042f5203bc6c7d9bd315fbaaf4344d44a6b00a10c5b521188fa7fb7f06b4151ddbe88e8a62ede8ec363a8ba3338dc3dfdcfb63758af1ce5ce815bed838a9768e465195a2986ff7fe4a603e878427f9f2ce957e85e9421af4ee411377767df55a50bb3973e208548b74d2899ad061a9138a635d895213e439820000 \ No newline at end of file diff --git a/tests/data/elip203_4.hex b/tests/data/elip203_4.hex new file mode 100644 index 00000000..062c2818 --- /dev/null +++ b/tests/data/elip203_4.hex @@ -0,0 +1 @@ +020000000101a15a3845d2b7f5cc7715239b35adb511b1bd5412d6a0c1185326e35bfcbfe316000000806a47304402201649087ae04170961daf8aae0f7ab2adf4d3f578e41581fe943d4600b8bbe46902202d2580ab91104ff1fe88a72ca42d6ebb91beba202f1ade3d715c8645fb57a3b3012103ba4a2b1f401eb59e1e6b104f8043ce41b38b65bd24c10edb3df8863b0241e5affeffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100071afd498d00000100470de4df820000040abbb0905824a8a6032875eb45b6f93718194ae9324ee4443161c99cc19988771e0885508be46d51b85fb741451ef0d97cd507524c930d9a133d0581355c0132d4370342991ac8febff708cdd43825bed39a1f685867f2e1224e059f04498d6d3cc34d160014cb8ec9e2a5a2e761c84ccff6816309c4256758c90bfaabe3920b6358c2a349ab994a292ffdc85522c2ba5951044b1a6dad16cc250008732bca1b9de73191156c6e34080a2270ef61e4a345ecf19b3134800db3f59bd60256df1fa401e143d5138dd629beb3e6d9698f8d772d2b973b2de307b589aeafb0160014860424b14630f2e0875fde84cc9ae9479425aa5d0bef42f7a1673358ab1b8fa47877d1bb44e03e8ecee5efbb8aedd401106ef7914508a8f9256c792eff7a891beb6ccc93330bd5ed419c7dcebd99cdafd4dfe8261cdd0245a9f0789dd133520c6dca92f10996b87b02b953e4b89c3e0682eed50a86c90c160014b43891f140c3c5c6235714b82ae063f6849912da01230f4f5d4b7c6fa845806ee4f67713459e1b69e8e60fcee2e4940c7a0d5de1b201000000000001347000006500000000000000830300070db7cdfa91ff1b3afa8e7d56a28cf2cc3b5e7cdfee0961380c87ded9b0d42d09dce302b133e3356b2d88bbc7c05c90b63991b7afed761958dd91aaff909a12200fefcf37ed93af21b5e9c8e9f9c91516d4560ac5033602c8c957f94d701d8c0eca3fa6b6af6ecea65ba5a464650bb73f94282bd2afb37ca52ddd9d9aa0d531effd4e106033000000000000000195791100f4f784e68efb0fea4efbaef6377ccd570ce953564b0b4b0614b3556edc8fb1138856b26de61b2ab9b2d2d6891f6ea4a5bc1ac9804002468ea0f0614d1f4655f6d262eefa4e087476596fa93540af12b2867a52d098747b83bc12ac44fcc4a3dff12b5dbd39f26cc9165d03d1d241d35b439534b038b6611ec0d18344ca4417a14fceaa45546e585bf2828e120ef66f08e28c586b4501c32af223470a1db90ebfc0d6bbb1526065dc180be938f0b13ea15eb5130e7ad0c157daee10e5255bfebd97e95288379ad22953d0e9676460898a2bf0788e1a6e417c5ebdfbfde6f2bdb96c66d5ba225040be0baa2cfcc0bfb4cafc1c169e3580b870e322b1f7bc8c5959c5e7f992ad3d5f53b6e75de8ba9ce39d1967902a43f4c5ad537e7823d8d1cf12fad34add57a8f1cab01d79cfea0fddabf74d180c2bd1afc391d0d7542ae7eb1759feebb6f9fa0c723053ed158d5615073bff103b9d66b36cbcf43e19d6a47e48e29d734f35097418ba17b64a68f9495aed27ccb1a26250a3d75299b10f432111bfd8d6c4e2bb5cfe2677942b52ac8d19307912d215c4376c464a3c23d2079637292b3d42beb95f9af065f00b57e4530ca122752c859949008f5de29acd4837d138601305742cd4a2e6cd82e5e1b4e7b5317112a5c800598dcefcf2eed0aebd97d2c819831a0af2fbdc8d87a1dc72da9567221de28ccfac76be7171b2b2d0b568bb7e5c2fb3abbab9e7227a7775500195fa76c32639d5497f5ef64d0aecae0e0125ee034fbfb7b3c41ecb9c37a0c283aa0ac1a08aaae71de1d11470b1c62bdca0a53a9277236574094fd08ddbf5b4dfd6946d8de392fc95b1a0d04b7d1dde6f92191c6c95ded4874b310166c5eb991ffda65e59d16ef68f3d4efa25b956393cfb3cc385de3fc7fb3472b0609c5c45212edfe0e1dc5e52c6150708473c7107dfb517e155bf9b77b86b4848650c74e42294e461d2427698e248863a1c0f0ebaea59335c5fd7afd80c9220c31e3ebc5ae30b92c1a1dde7da71d21a8201ee7069a0eceadd5389acf33a4ef1e023264f1dee76682107d51e5346bc5c0a8416ce85226b2258e70f0ea1f68b05b02d502ccb0f46fd3a4b0fd10155ddd4f1d7dc78c0e8ad4f51ace4af99983a83e92e61401b2657f5d4776cca9459537845495e5b2e93ee9b1af134d308a50a1255efdd5c797682b9cc2751d3275d6e52715f42cb0e62d07fac0d6b71e015ff35e0c61b3cb2af1fe6bd3cf59fbd6f348010616b26d65a262ac5109d9f9497174b841c1a7147752a2c4a6aea8da7563d0af69b0b7ad7170bfdae61e302f9923eebc4fbf0033cb1ca2ef0f3970ab85866738d228b2ba737fa8c3c53176ce4c775001fd109a811e4dda0053fae2db902f7e1001ff254f9daf3b020cbcefaa7f5fd001bdb938e2d0ade60108fcd9b6b463901ccca09218501b474cd9f5b70b24f9b858e449346e2fe706423537ac55eb6550e160edb807df06a71c0439937cb8041bbfa697c038b107ec8911ee65d34233c2f096112b68bb5cf81beb47292de8294a0af5eaa025354ef882fb4c808e240815e8eb69f2cfc9c8023f5f6eedd6f2aede1a6e6e1c8e4621918af0b732e07ab29e997f855196c4e3e4f6e57692f5eee6b19841f2cbd74b9ee8c913b154a3152030a3beff7bba623a43fcbe766c446eed1fd407788554deb38cc96bd17fef6055b280dea76847268401cf1007b8a5dc59cc0028f01328456f45a4276c85d69f8cc03e3b5dc88d76fefa7db9badc273b52cf28467243c471d237887a2566199b09be31583b79516e655b86b0e870e53cbe4161ed72ab76a0017b8c1e764fdd5b841a13023fa95ce9a9f059a504af7216e7eb801f8a00845f7fa69be0abb273bfa7fc3e207e6c09b75c0338778e44ab20563c123c2c35fc8b4cef06245175c6a45f7aa334ff745d9532a28ef1e108303caee8b6f38de613058763610b69b99cdb893416a322de2b377f82b81e911ece4b7b57e0ffc4e8ce5a0d5d34b4816d4b1d10c15ac5776da6c6b96a57431fd516411451c6c0fda0ccec08c40d33b058f507192b295248a7585baebc9d653a71b81a82624ba77c372aaeace938f3ab82d26545deb3e5f926f3baf38861e81ade9c0983e43fc0c8726ddf4b6db4dc735bf501dca8fa49ba1ca6b8a6de742c2eec71ba55bb1e29dc079aa59b56ebb9cefc36587981fc3211ac52abf14fa71a2a89ba91bf95cc8f8749b44edf082890a423899b54c8327f9975a11e4f5f60853e805e0531bec31768175d68c6c4e32d67d866188a4316b70a009836ec197525152db151720c30fb26dae51c463e47ed2dafd7eebabe885a26081ea6496cccbe96087809ceb459a864c39fade1e4aecad685299701c62d90171debc32dc3eec23374ef151b4936e4e6db0d66252d5fffb135f8f1ef04292585cf78991bcd150454aee300526a6f58caa4785c1779582fd7f2a2f76aaf083373d02bd122c85f28261a704cfc96441576087217af75faebc542fcf1ddb1c7211eb611ed9d559c95b73b4fac892f3774597c6cf7886d6d8ca78bb53c5d9d0c769d4d2148ab9583ee1fc54f6abe997831d5d55bad2e26035871eeb5736ca0ca9e2da2b32c3ddc02e302a3a99dc20caa7b79d5a160b9f5945157f5ba628eb35a0d34d7203ec2a53b842e844988a0afa199f29a5bf36ab9f2397a09f6ce4236c20aa00f9b57314b5645ae54802b0e989c294d46cf3b800449268fad11a0f715edbabd242980fe8305bf5a17e9f336a24a2312ecc6cd56ed873ad8079026a5fb943fd29df9d33fe5683ea733910bebb2c72f3ce6583d0aa33a2a432fd80f9a62a674b09d0be8c375fb3b3b562e8ce35919c0442d1c18418de007f0f1df07eb879cb62840ba9576d4e2e2afaa226022121a93cec10c4319c9c3353072397e5618c8009de7ec6883c8fcfac6dfceb80e9a27b6f7d90bd6b51e69ff4b7a7fea6bb5b0f97fc46ffe7fd0b55ecf06fd7f4893df3e68759e05c249fc717fa9460aca7ee5004df3ea65926874295e95ed60fa98e5a2fa1f5ff247c07ca185c47972103755417cda28a2c58a0143b34c507fca6bd7b5af8e84546245fe9a8a619c48c61391f20347e618b54fb0fddb4f5c58cebe05f07075e7a73a8eda7d9bd93c89cb8e0011af08002f3be2e8f7f53785b9f8984da398699b75f9b971cd4f5cbe7a25b9b2549e7aa376777b59df9abf85faa855ebe2e6a0ebbf7242eeadee2c6ad225b1e5d98e34cacebfe55ed63fea62bfa361b9c9843ef60f5821d26fd82702414d3d3bb76d5c11126226d762f8e04c3e0e7325c32b87652ac11e50ae51d5f37d5b5e61a10dd0e13974204c91dca08baaa0a7ca3072c047250cdf04cec22327946aff8fceb6d542daa7b7a03ce6aa25760e9c9e6986e5f1306a75bc5cc17e21b4995084464c8489f012e8916a9a28d220384cb7e448270225ca15a9cfdfda863e0a5a3057d2467cea4437c8906526f1021a9b643fb8da89a02d13c7f13bd500eedcf619a297a845ceda399c53efe173239deba31ec79861016efbc8723d98822ae1248de30f2f5397a9d68d9761a3cb1b8ea3301411593ff229314de8de6502c62fca3086ce6e98314943edd6940ccf0f1f419b830046523b5c0154b9e259f51ed0480b33a76157d82c86383e20afe99de6636b6aed42547a1bcf113a64e763bef54481eb886a0cdc417684c329febf9510b238ab9328ff5258016485e2b9c9bd9952be7075973a1190d352fada74b4e2534f7b9196fb014095b0872393c0e5ad525c1ca7a4fbeb927ab08c61831e1f8850d2538851a78f456eb079efb6e28d11e3c54e724a6238d3dfa8155f825077d8cae68af50f4baae09e6780da87d101f92bf10a08aaa0fd81221046880a1a71a3e7a8d3b6d1c1e9b2b0f14c2e9bfeb60fbde95ad6e5d643d6c9f4411fb3100bb2da6d71ba45d85263091fb9577c1a35caeb7de12784718d8b58f44f205f36b8db6d4d6ec130d9d17ba8f3f11d701a61c85a65c74cfff7d7938bf4e0368faf4f5fb9516d5d11882bd1a4e535c51ef7b06681e3488a50d16b4595c83c43efa84d9817cde4a51a68e8e33f5b68d58aff7b1b103e439b17f5db65c853ee2f89b80c9936a56d25b470307b65865c41425771963af3b343d42619dc264e80d281f730680a21ed568073650e4b506e6949cb138e69dd490135df10ee5a2c5149598c57181c9fa7db23a4a69ac93c009bc27792bdd81cd693de9b0be970160c9bda2523eb1582e3e260d09d416c67f0134d2756b4f29cab24426d6e1f3e3aa522f7315327f79778dcfa62b88bc2777520de53af391e6b8585ab58fc3a38de8a02ca6c9c1e25785e566adaf7a4b217f594f4f5090d53969aa26c8c1e025fc283f84a16538d4a52e5d2c47da0e4ef1c39c8e48779d12b8757d10cc8867cd3f9c14dfa1d39c71f7520c4e68e2cc7635ec2b3ed29d9a3e3b3b3dc993c53d494b2866c3424429ccf7dc63f16d769d840f47b2f392f65bbb6dc16f7e81d30f31c8be1656dcba62a318fbabf8760e13123c2efb9d88320d8588faa27637325000b7a8d7f40e64fc9dff8fb9f6ca42ee5afaa8b7d52e827ca6a950f60c4d727e2bfeaf289134de91878c16d90b879199f74c207ff49164c123c5a6a28f5016f96c08356d728e165ac6c2c3cf1899b7046d5e0123c72652aad3af53e9099a85a2fd8bd64891dc5f5c7e88fdbdc1c72a9a0f5f3bcc9f291c888cec0819ad9ca9ea37dd2b7b9bc5be3a5ed123dbb3412701270f8635a4623234cd10e58bc7f3a151fe2dfaf5e25b05e93029c787b81f4dfe7fb30ae5d6524b619a317d59a281fdebb1f2762871f485e071b4f25d0c696fa48af41ef050d431e11013f5ce1fcce3aacbd39a251f478b47753d6dae8bb07952a47ed4d8545eb4ca9308ecb749f0820f165d6e5129eec32691a899ed462df0ff192b7d6026faeaf37256aa61ea0e3e2612e5ee34442ccdb59fe03f5bebfcdac68dd2fbf3f15aacf142ac0f98da61b55d50977695be39ee2b693fbaff3a1892c5e05dfe25a4b4c5ba02ece3d5caaa04db1661eb453e5e9f1dc43e7cc8d39dcb52a2360924aca0b99b3f91f751c9fcfae8b4d465276fedfad967872fffdba08cf64f2ebbfb2b229a5e22a1ac9e1e58d46adb8b9d536f3daa2f5a97c14d8adb61df3b5cf458d44beb63812db8b3ddc5993d4a80405c2a9ac064ee1e7ccb11cf1973c3c2f3e1484392a23d7baa7624fb982da7d81d542fed6cca8571f6c58c7be4553bb615fc670a1357dc4df2c817cdd7f6421113d959b26063321b7f9f26268774d64c95e8693a7149d37cb4420f7b206a0cb4fc3d1e754c852e96e7c7c6402961d95f1be15cddb92bf0e436f77a3bc0cd43a8ead8d473ffa7273999cb37a1b4da5b5ab0792f5738e1537bffc025e3fb455eb37496e370a8790887d83dc3b71dd0b3914d51cfff1e7efc173b6fd6d6f28b2e25f54041ee80b532bbf372308d383ae71ee2ceef3a66af77856ebdd70722b927effff6b6f597c845b5313c6befb2060c2a7358d14f5db1fc506ec22ea907899a6005f5a25dbacff032920cbc9fbe682f53289c1064d97f83ad3014be10de51f45bfdc31524131479e537ee6fb0d001de3220fc88b5a9f78f2764ab44d40a5546b7f541b4f90f5808d146679db89d4184530a2f48ae77596d1131a06a48a8097bb6722368e851a55ce5338ec42af3f4095c506640cd7dbe8914189b5c07881d49490f669e1e1638eb77fcf0cb528fc9478934d1799a4fd21fbb369337f75d75771925598b7aefa19060178c8e464705f3d075f6c35c94b703eea75484f0d0017be3e9db314a603efb0a1f2bd7d3550d3202e7c8946ce130d0e427f736d543d386048303000731a7c739304f740722f6faf15ad99c67c4e7f6f8bb19d806fd9ffdfbaa0054b247eae4d5614fa6da12035da80bbc347a9b3482bcd890d8175da816048d24c498c34afdfbb22d3bf56ace18f0dbe21b9f225b26d75598a0a24a3e9af8b2447356b1d9eb4b9907b0d634f6034181d66dd5e9e99313bb37be243883893c43bdf000fd4e1060330000000000000001543bc600fddabf0d4043edc6b144a1418f85b5b8dc9c705fe8861f71ce274a26b8abeaea8eacc588606cb6fde33a6aea3915bb9575e75bf876b6efd14a179ebb4d231ebb0017af85aad1bf91d44efee0550e498ac7192ff87a80067d5cf90eec1156364f117f4c549550421cd7ea54e34c9fbf37394b97ef7c6e1887061a7752fbdcaf415249800f1e419f6b836973b8fc23bd95ea2532e7864cdc66482f73c50556febb3992646c8f512b68833c74e275aa1167a1c8c39c3e63fd72cccd3faa685a9c62de34b1fd4abea3b60c43f1892fdfb34845f83b94609c725a91594766d26403aaa30d0c076c4ae17b20429ea3f2fe3ca9391fccedbb62986514687d3ea4b5a9ba5d5d14e77ce5194825802a8a6e44c61a3d342068dd6a03b5fffa99d8e380c2ef7d76b5b65f7f34bf45ef01bf86d4f21f3a16348476bf5c374082b53d8fc69b4310b450674ce03de5ef80ae4375f91e8c894972c9f1b0cd7d40a74aeaf741b84a68ff8b107e673f1098543eb4043474dabf4f48b30f86b4fc4486198eadebcdf09c597a1fcae840ce9f6c87000916aa3c56929dec434015a591b246e445cc85e5a13d398f181cd72414260fb92d7263de6e5b3b84df2ac0d320cdd7dd21af4d86a905f320392b21ea141bab1ddd5d8171fe2b06274f776c32b41eaea4d44d234a8ebee84504abc9f4915a2855e764593123a67372bdcc1f13f5c7210537ecb01e2d0576d5e296545a75bc977c91257d325e05cb064a8fad2bad4d6bc51b2086d43194061c308aa7cc0db7b6c3b373a2c3b7a443bb9907ccd4c095bf7c64f0feab6d8036be7fde9f76227bb734995f1318190b33f55432d60e1a2469eb079493a8de155e6aac3541a4833830b562473f22841ce4d63e7cd2a90bb94f61168d9acbaaed117170f6a050f27310afa7e7bc0ad7f5b3e726aefc4e72d07233a96ade29a0016f6a16d21c6e37c17f92eb55cec06ecd077ba9f8ec774f81d6a187151159aba77492525ecee2a62a5303374299907665bf2c8a417771fb77f55c7084786f29582d14becf1431a9e214f235e169b4ac571a2e2f7895624e6527b489311d82cca1f87e854cf5754d039f2fd71b33a93be07688deaba853803225556abeed9aac36f805be9cb4141ef21b60b7c5906fc7eac64912dd3c8f465eb85ec4d2916d1ec60af169eb4c3deb5773c4373570f8f2b4b0ba5fbe7b5803ed0b0f5ad4e251e8b29899116fd76e7179fa492cbb90bd745e3d71b93111d86e69b0e5a4db7dad4e1eafaa1b48e85d651c6d432bda37ddb30d4386068d8748bec7f73ccd45cd53c02e9654626a1fb9e449503115b231ba4383088e5d512d38ad2bccf99846624f84243b35c897cd2d1af07d9cf514ae17625014390dee5a66166756cc071bd2d48f52d7b934bf8b2441e838e99b80a3fda699cdce6b8ebc9b8250ef2074570512e6f4d1baaaec19419e33824aa685be310a2d055460b261cfdf5d6d59eaee31e69ae61ace05cd92fc7b55468012be1a94d14bf1e1227bea10bc756e7bc166162ef1d92948c433584ef14e6ccfbd7a604266dd6a014e0849aaaa6cc9feecb76d21021130ac80abf0a253992543faaa0da086173130ec4bba159435a4208b2669fd6d308dc06baa119dfca148b81fb16add9da2fb4cd4d69a3a5e93d54608acc5c01d8958f82fb1982c82689b534a96f68bf94d4cd737dba45d62361b85f6dd746bcd676f3a3f0a356d4bed04a2f8ac630a8c7740bb978c135d86d262fea407b1d1a0b6c1e265d43d1877507178b22d344124aa85d4443b5c0dc538d71f3e351953dd5e3bc58fa86f7a91a60fcc36c57140f4b2ad3ea59c0f2a648fac954338614c89c2b2b8d9700f53087a74cba685f2452f5c60d119ab2a9c43604fe9e8ffbb9a7d42c7f4dc0d1f460ac2e87cec9317645eea4ff2d2b47a8a046044fd5ae78d472e283da02268733cdbc0d8ec4711ad7e4a01afb6f6c2cd4639c6b422b71d6f338163430f70cf88a880b2d2ca68b91327659eb9ef3f412d4304e9f516ff4a09cfdabbaf3b65a795187ff661fab315c67ab35381476231c090a65df7b84ab4f84959a0fc08848b51d08ded8db135fed0d02a8aa6be715f82903d09a2d23bf9fdcaa9d643856c7bc37c3a5172371c3a02aa4551e23f9971961dd8d994b18327f898d7524eb8d503c7c67ff8cce41760515151df58aeab0d75b00ba6f4573b85748bac1e12097bb8f81da9c92a3e062daa2cde4f1ca1614e16223696e3af5d21decbb2472c8ce0c0ff5fbd56842d153c8b2c0b3c8dd3696bd97904a5b7ab8af9ead903fd2abca11cd91c094e7fc6e73e34ceed345fa92d278a20cb7f5173cf11e9d28fcd6ea38f1c93087224fbf61e09e6f1c25c34ce2260737d72886d8ffdb8e3f784bc19f4601c77b59f4cb52c2ee33f6d60267b9817e626b43a7bb556200943dfddf4d6107edf4bab2b7a03b8c73bab2a6e90cd0126cdb01f2a5ef3d097d122252988843fa30665e44895ea5804d8a412c51ce24c62d76013eb0678ff2fcb6cff2b4463c3668d9b16ce212ebcce4cbc4186f61239337dfb11293cc2037134a77a6cb356d18ab00f227c4d8ce8aacfe3113ac810213027a841c27ffe79f1642c41f4a40cfaa963478768de3970735c1b3377cb2d0b2f485487118a42d28d003084a9b9b5055bf4ca113df13a2f62836a082a02478edc5f1ca8294df1e6432fdbcbf3f5145cf63166aeca5962ce2d60e0495bfbf2234f1aab5806d8c076c1ad3bc280d2da21c8737f3fab52b11b6aca3b48b89c8e6c625782026f1b4f9b82c1645f6293d8d8ac0ec4bf2617f43d5717fff386563a547bf4d600caa3943529d36eda3bded2923130f0d78a70b2510220174473be6dfa570650af0bc83c33e35eaec74f9fdb313620c7d962860ba4d5892e5b2ad7031ef0ed3103dbe6819902043e68f9abd514ffea0a766edbf3ae317baf712cae8910845d61b0032253d5ee98612a8d8ac68e140d44cb8206ed8d0bc84cbaef79dc704026187ae58a2bd3b800f07534d27318c37554f5b364a1f6a48c34f2ede0bc85819025f6d98d05609781ab945ab22482e0e4b95354f1604a4ea8d68650e0b7f1ed9ba2dd9dda14e0ca85418c07f05d43a596109bb058eda0e1d722a2339d939bbc55f74f94187a92b3106a236c9c9ff85f05234a259a742a32a3857c0a5111666c3d906a687131b7f2e8caa25ddfe66de56736dfeeb87e93ba476664e1ee9007b58ee6ff09f57b79060efef7e297a5cc5794f73a77a5c9660717a402acf3c25a6084c7dde4d2a22c5b8cf84fd701591d96c082263050efa6281514f89bbec2b69c2ac5e3d0b436bbdf9e8e31215ca1247f00f3774e77db7d1c4a08c0178c68c5fe998e962e742e88f855008784d1345a26983e5672b4af5d57fe0df8c034e239403e93e21b1add5d0206138c3ee1431a765d78d3cea78de9e1f8ecdf4c4e5fd9cb17d7477d0c691f668dbf44923eb71c8b291604fb89009aaf4a1514d900ee2640e13b9ed5cf7364e04082a7b03508bfca5fa96b0416dc73daccdd8e1b3dcbbf97d49d0342e2fe86ac71a37041695976b470a824b6d57a710964fe79550284dab0f253a574dc7c5bb08220906a50e3f8548b9a0499a3ddae201f95aabfa311a312b492ff9a2be7419dc3e82d9b08aed3e1c93369d98952a1f3d63ee99441bf26762275a019a713c63e634ae30bb433c47b4973cded72079b2bc1f270e6560f3ad3d2748bfc6b958dd2446d02094e7c4a2bc483a6a19db91bbb63c92f42deeff592ef1bd460ffc31c3c8f32cde8a353317be52a2d4d9eeaded910e518cda739985430e9386a8d4b211536bcc34ad43a188c04695ce043640e5c7f98437a7bd310045b600a26ca8ab65974e814d6a3ee0d9ba9bbd4202345ae1caf08300f747f02561355f40b9ac7b74d5a4e4d1feab42d5b32b45f3b8698dcf7f061db284ae6a040b2700919264b3b27290e9d0adb664a86ba8954d823e4150c23e8c3aa8f458320cac0a661e0efd09e23fc718f029966e282822c97aa01d72da58b673afdfe2c979038820a9a39c6eaaa4fff2be56aa5eb32c52e5ca012d5805e63bcac5db4c69831916b27ab14b7823ac117a9a695960d151a1fc7e95f6c8e226cf687bcf331c834f8435e4ce2dbff0ea6046b74c9aa8f535229a9ca89e9b26d60425ef7d519e24e30862d05eaa790852a2dae101034c5ba894847f0b9986e5e0669930862f931ac7f2c61390e272cea42d4e9d3a0faed83a6a46664a2418ddf3e0abfb5fde46f5691e281dc481240b5a0c67a1f4ddad3ed3b8d69b424ab5189385cbb5c6e2d641efa2296a5c8d85a944aff440b21a4f95d9ba0a568e8e41cd4c7e874328844f107d4ed4bb4b19a191bdb33f90e39962274305ec477dc1ed12d0680af3f4525f6b73f7fa20678d1b5779e0990c14b8903c8bd5f89980cb9e64f697e889d58b263851bfb58cc6cc8e7ac806c799352631ed44d6185f6ec81679de2e7a11874b6c160ed54c8e25bf26679de1b1916ec7133ffb0da5aefdfaf125eda582ac364713b620a2d6f26be4d81d3137b274101b0d82136ddedf1d28d2540b7ff871c133836f4c46be96b6e8af50b06e82aac74cfc6b1c377e8da00f4212e7abc80ace5dd6d25768b18a8a286044863ab3fcc6be3e5c9714e751d3cf8d26a936a123f6a8f430897948a7ea534b9db296ae94a26dfb2a1e886c5b859a6ac9e9f60300ca191d7abbab3ed8b97a010359205b81e98df51995b18abcc9232be0d517b607f274a6f6c6b6274edf799059c15fde23f8b3f6d5afda98b042fceddfa16378da633ad987656c2968554d33adf5385f46faed2a1e970eb60eccb605608cded78994b83145d353aecba0e4ba93fc594a86dc3bc46c169cd224a0fcfc2d86111a78a640066c074b026bae285a0c9e5d322835f810b19a9d12e27841e871aadfcecda2e3c261b6b05fd49c0124560548f1f93b4fe212a75b5e34ce3dff1add98b489f91bf7745cc11010c7e5d94a2f7ca3f50f86183f3ff381d07acbfedef43469350bf12eaa9f7058c0d7d9f1880b4cb9ffa40103e1d4d65ff4a087f440f17f0ea39bdadd424149c9dab52cfde28ea51fd8d8a7483e712d1b6ca424429dfb3aaff90718d303f55abfbe0510a86588e534e2d99bf002c1939ac26ceba51b8186c7fbd4e986f6d8c53915b59f43df9b8fe7e2bf8e209781dbdd00e6a050ae76d52fdf3fb42115199423b515a8d59f1978cf925104857c4e8ce9c945c64d44722ee874f3268ab160604d46d9df3f4f02a2d06699cb8aeb0b1b03bcb0c80f3357b2cebfac72fbdcec810c6bd54b2b08fb874840c12b7a6a0656086c49a5465c1ee5ed246ebee93d042c9fbf4cf45d9a27b3e9a2da3eba4891ca3e96553ca11072ab81aaff7faa2f449ddb4ed21b0b6a726a9ad46f640ff776a57e0c32830bc656e5fe1cd9f3c25c1cf10c34d90cecb97b549cdbd8a15480e2bac6b6dbd3ca3a627011f30adc1de6b9bdaa3a58e0394b4f4ce438b040b1eccdd79fb03c50624a03b26774bb4e47cb699422b27ed878979308cacc617e8c2821a0bb6c1b878f2fdb156a3310e1558935c9da64c17f1ec264f42b4d804ecb512ff2dcc47190deba0859ffa8f8a2640c2415a1c8907675c4064d3bf8c90cadff6345432e6b18322168c7552e63fdb0f13d7f05e78a8661efe7208b550371d2c50d2ca834b1e288ffc5795d89a51249959f47b49134b6508aa8084fb1aea88f5406e8c1fcf69307c05b04f7ced3ac87216ba8da599e1d3d46a68746e98d123920a0a8b2b68d65f91263d8c629294f081ebec6e8af3c55ac70286eea269b4980b0433833affd3c8870a369fa51210bcadde2569b2c02f5d192937b683030007d88a4d3269110798392189b45c2f902308fc3623b6c1712b160ab941ac1b37ba4805d4d8e2def621d8562307d5dff568bab471d93a8ecb7159ff240c9a7b9d11b12767338675f33d1a4eafe85a91d4498dbcbebdc82cc5ace073e0c53f6b41ca5713a66c71066d69ac1c7e25e0a2bb549c527aa882af62c46da49caa121e60d7fd4e116036000000000000000177c308060e19afe0e654b42a0506f6ff309688ca60c060af091519af81bc456e8e5c9991c631de2ff0ec1c1bfa830cebfa1797f291bd34bb1e2b638596e5b2add09094c9436509f5e553da6c5eb5ab0ba87518fe100cfb2eeb3feb5f70697c57d79faf1d62aa9b34cdee510ce0ffea7abc0c5f7da95a7005668d02dc6ad019cf0df6881edf77ba46826ea834030e8fc6130b0356dab5b3b8bce403214bd179262bb3172bfe96fc2d529d6a24ca85ecc66d431236ea99bf29bfb48fb5809d9763e502d342ea0d9bbaabd446f16e420c855f62b9d22d7cacf1048895e6df085b8d243a8e52ef47ca292fa56a45507e0420bcd2ee81928c4739960e440f7683fc65d41fc45b524eb8dd67650aee2d931ba5d47c451d2e7b26397d03615524d9ce6c359d9985c95f064681a15d569d59b1f49d59955db01a5b7fa38819f2ffa3f978afc88e606e6806e99efc6814b1eb225e0a5f8cbaa85db417a57cc529fe48ac0c72389e5892b18862515801289b3e5cb34bb15206c6322553b9223be05b1dd001b07d770c161f64b42887689b22026dd480d1503be80b17fa9b666c55dbb0ec4f79c0fa83c11ec6f8e360556db9d93f308bfa8282adcbcb5e84837eaddac9aae8639e2e9b46b4f6bb49042e0b2d9f8917eafa8047ddb34ce8a8e28a5b2ba95cf247585ae4784b990af7786de44ec72579a39e329e535af6f1dfa30179f28c981cf45da6d9e4e52f8e2dc5d92e109ae1de7955447763bb1ad09fa58c18b30ed09ca33c6724c6c05d09cafa24359ceab70ffa4ccd3742e34f01fdc24e29cd3a4c32d39729a99044a2d14ff7452b89c43dd197efeee00fa56063e38a12b76ff748c5ecc13c42356cfba59d184cd022ad76d54118ded60a962a1f18123f636ab68badd9813c1904e95f36a2c0084350a0ef823eda80caedad9440726b1f8bf9a8364540420a84e4198ef5913877cfc5120ea32bb3c36d94771328348554a53a69b4a509dfccb0246f0d1c713febc5f1c7b91ff1bce4cd42a1d0a0245933a180e27012353c8fe121ef9cab4ca0161a46fb893e9f8406db46756a6a4627a1b8092fdf90344a1af35400350cee3a70db066d99d77c4ef3c8dedc73cad09e9d976e8dba1013b673922d9088e1404c9de6b319550b8f17abcd3ac5bfe70e7b3a8d7fe6bd28e454697631975497e8e8469a3601f9b265ea85585d8ce9dd0932eb8daae4d5f9b3277e2d3e95b4965d168241289bed9fa5edd51f60c764e3b5f13358a99a8a51e1539e2159facaeb4eb8e8e22bd25c86a3dbeb36a0f0d7e5d678b3e95d8b1a0988f824cfc72f1a292f7dc4e8aa55a7d56e9a06bb8e03dec199c65f1d6acd4524554881ea512900e53355cf6e558ea864e3cc39358c3f735d06c87538d655ff2b660694e41d3263abea2752b3251bd6d5bbb3083fc87c9b21757fd59339a5160a7ea1d701d5ab108da640a4007ecaf4223217978fd48d172c776b593a5a54fe359e2a341e5b4cbf8e4a9238dd99651281e0ffe8299c28a1fc0717968a7d2c4f3f580228750fc555216553b6858cf65ebc4b5593ee841d88bcea36bf4b231c9f808c91bd05ceb99be9fe749a6309b7b7eec63e2c15371887733943690ae988a09f3d697baf5d72d8c1d03eb6d7930bbc1ea5be2f70fcc25b87fa108bffe007ddba06a8d5684fe6abf80371e34c97129faf11bd254814a9f6357378ceabd2767a71ee8dcd3c10f069935656ea0dd1af4b092ae6e94ad0dd4605849ad245459739a00f6ca6f51ef2581f498627dc83ee91c060120dc19026d383ecd18885131fe4c74a91635a5a84b768cdd633b3f14c6071454f284a8aecc8bfb9a987c59ab927f24f2aac41a2803231ec5b0e4d9ab8ac4ab7d55d3d09dffa5b13e9abbb69bebe565606497f76b09a6f3b94b005d2c15312677a852c1a7092b3cb4220188a2e94195cad346965c89ca84ba29737e50d36070c7bf17045292c05502122ac0e361c8d06b6c20e12481183c39ae26b4cb01dfef8ab016790067b08c9ce692d909358f31780ad64a6dc2cdec408f81328d9a3342beeda4d8ddf1fb6d7ae2c3e62998477961f26b5e717d1c861abbcbeb41eeb17c425d5464f6ab0aeeaab67bd54fd6a5401c66a5eee838577aa6103f960137ecb8e7b7dbd38839e18d656e71d0a5b33d39214cbf058996d22de3df7ae45a892283af9feefe43ea959fd132590b32d037d166fcb9791b5e2c32e2c6dbc287b810f07dc9f529d6617e907cc8290ff12272f133bacda6f0fc09f6b4e48ec00689eabb9ef6429b3deda26c90050f4861ebcc6476ed80efea4dfdffb49e4cd3efb3889f1d7e55ed62e74abe5e5f3aaee49a598da9629cd9f3b57434bbc5a9a30ff38ed64f4909b2d8097e2a66b57c6fb957c7e449e6f4301c59ff12ef8a4f32b48c6fdd24e2dc82214c5c03e4c1b02f17c953c51e6c1ee03c013f3bf0c6abc4285cd9a7f8e2af8f72c3e9e8c4830db6b44a8d9460a60e83fc219f615fcf90daf8f8c08ec4df9fb2326d2151b639468f2ce5c1f9868150f398923a585dc5167123e6100be1ab7b294b5b5169c9e626a03f023cb36e0fa1115b331b7d1ce77389173252d62fec9e20172c8eee53799278640ee9757e388d09f702d3cb99c17c69641399a4616a67db82685fbbb54596a9cc288edca8945435472c47bda1f23403ba7b5370b4d59f973adcc1fdb86f70ef5e6b1a5095bfeb9ed56ba40d529f29767e6c1ee1d8b1c4ea1494a957c7b4b093750e74c561dd095316cd416edb1f37deb170ed097f80b7dbb55c8b529a738506812c917a5d8a2ef03ce7d6e0c31f631b95579dec622576a1dccad2d7ef397f5ab01949e7e26673f7064422a70fad665e69cc0d8523309b34c62a49971fce6898dcab31b3ddc8d44d5623b073fb8753b2f2238779c449b3aa653dbfa361b36a27a3815d2bc41174a8fd08c5dc539a7b3af32f869db8977820c80f727bdd2f8f65fa7a09e1132c392b00bc5f6fadd31584c26cf198015f17a1f1565814fe8455de08f009c1e2b2277f24dc3ec2182547d3a28b9f6262eeaaf4719a8af4a121ce0c7ff4af23a48cb65cf819f33ae6d6736e2e3bd00549bb923c0a6f5dfc6f07a6fb0a041ecfa74f97e8e36dd84737dada8acbc41520bfbbcd69c1a2523ab123eff6a61b00d5a67291868b80404883d1719f9c95896a46a65e60ee6c785f4d545251d23303246f9fe3f4468ccf6abd624f05e190107ca53d409ef67e8aa477b84fa197cc0a1d7585a7cd7240a161c6e810136b37e533d10870ee18cffe3cf52f99cbe7077322a3483c81f9c8551bdf3d876eb1815f903681a49cbbd63f7f912826ee2fa78c9d74ead5855c5b3759535615fef9b67f1d2ebc7db2718a83013e15b8f82aa063bf9b5437524010c24964912fbc8e980eb6a8a738fa98440411d0633ebc5228e0878bae7accd3cea2d4174258927791d8099fc060a3214e27f126ea4abbe7b746f8e6f91bd2ef96b1820a94119833a39a5273f1df9971cba50f5784024d10bcce2489b6f8044918f49460042254623c3904a45725e586377674fcf8eef46d4fa4e862c3d0f32f3647de348c10f61ba5efb467434b5f8239d2786d287850473bad99d2fcc729181fb4818bb82838dd60da50a610655ef76d2b4a65dfc099fa3c08f83bc1bbe5ae8b6f4b50018a980b3d7fa2d1070a30124477bdb5bba138685ef361946f2777a57acb390ac8b8d42330ab5b0ff1ef5da3fedfaf72cd58e481e04670fd12b8999eb5aa2ede51cef036f1c04ccd00ae80de1bfcc33b56c30784c65605c01405b5ad9ba8e09eed8359b2938dda9d1163b4aea74da721c0e9309b031698ee12070e276f7707a6eed81e287396fc8c8ccf86b71e04b0a67b78608d0df746f7ed6dab975fb1cbfa20a77ed5fbf6afe5b033bd3738514a0c87f6b52ff942ea5487eadbda0171257cfe7359e4ed0b223264e016c8188a699f446c73d9708afdabaf612faa3e6e570ab0539f15d6e34baf09f3f21969a1411c211de515e54ff30eade7c8fb3504df8df96e739677185801e7599573b4728f36b274916a18d8aa9d46f09f65bc0bfdee0cde8adbf623665c9b9f340b6e475d401d0699d4d63802bda215e42a8d3a3bbe2d8142af9ca53f55be6318268ea3d4c5a192c6b40fe94163462906daea27c5cd9c14da3fcb78c7a045bf9ad7ac1f91763e63df8e0726bf9dbde18c5b99ad573ec8fbb148a1b82fe1b6a1fbde53ea53d764a3562385efd4be64aa6522fb951e197c598944b73e8beab5d2c895bbb66dc98030311e445d62ac5ab1ecb58697835ea2f39fe8cebf2ec2128146a2070570e2c9fd299b621ed677a1e7cbcf0dc922fe162dc43d728ea2f827bd9d2f9e585a78d300694c7bfdc784aaddcf195e0c436a70f9183ed480fe80d33fd1e807915ca06071e60725c75ffd94a618c5ab3a3a8295b35988b262a968d99f19583d57a11e65319aed8b6384034a8a60d181d618696380fb95fcf5d21ff2187bca84df4cf08775566f3112b13e58b178d1a069f3a54ee128a39b7b6977a70e2c83c091afb6294b1ee5e0758002db194376cd5beb21f9b0581ecc9e00ac4f34ea0a006bff953de475d51560dc6aa6d452cacbc31d56e9b328dc99f43b897e54d71b8f5b95a461a788c8596b9b43c26afa35ea53bb1c5e3c9bc4d49ebd7673187098f671352028fd8544c94af1eeb27e11ee00decb586c1a6c8e6519523a5652fb804588325010124bfc0b367fc5fa0c08aa447e51a35e851cc3ec3337de29893bfa74768c23ee371eb6831de4ac3b2eda8dd8f997d8286f00361cb608ca0ea27c6f5b1da0a895e1d30dbd508f543ddbdc9b43d6e3ea7fe1793e3d9e0a3cb813f2266ecc2d590d6ed5a5e9535cdf1d24627a99fe25aa54aef039f8af5e7b563e547dd314c7d0f6df06ec21901d010ef60bc0506485321e73b80894c56b5794ceeadfd5d1a2d26244e12e666b5eeb504900f55d63f84d7e4c84c6cf10526ba9223e47bcb706fbafffd462310c9698c172507abfc4339f9500802327556fdc9894c7be536be4b7e7a346610aa394bb20a5075c1ac0568f252d1ee70c236cc17f0527b240de0b8cd5cfb1f89c05f24758f1fa03aeda26c40fc2be29afe91705670b0727d357e6c09a0ba137a4fe607d833e0a738c70abf05c0258eb4dfe5b48bdb07aeceb6aa13479063c15e7f1be6949952f1e1efb1d65d20b676922c4863b7f6e3048e4232d11557c23f26ddd47be8bbeca5b7272ced9a045aff70c1100b25a062fbd994c9f1c8d44315f0706943c86adadd470a9d0145758a61fccfb9cdc697ecf268be24915c88cfb8091b0a2fe0c97b8e1997d349dd2bf3a46ca9def8b7e59c9caefdb1ec60e1c2884a0ea89176ecc001aba6bf03c3f975200b4b2293377936acbc025463a3fc997f3d6b239717f73de153999e3b790f2f3d9ddde2d2fbd397a63b6ea5159b71de8b25f4e4fdf9ed22963c77c3f1ae7b1ac06396728783a09c63d3fad6d83e8468ccc9f5de2ea619cedc9bf9b865a7fdf84e010dc437c461566a6df1b0321bc5f4e8238ae63a7a48aed24383f7fc81cbffc70cdb87b194f387c0aed7ea070d348326969596dbd5e53c2d85858245eb5d8a53e4c0cbacc31e51723eec63d8bd4124a7a9c81c9cde834ddb919d991c62d84e51a272796a6f34a8e2f9844d61562c205522c35a78119bace230d9dd6a1fdcfd28ed9a1d7f107622b3b958730038d24d55bfff691ca9c91d9930590abc32bf027f0cf799e7de5eb97ac7a5bbc07ff95b54d19f2503577f8684c56743497483f740aa3ff90fe1e5e083a9441861b8a188dcd5030bae59b435601afbe7721421891008c4d27811f58e4722f125ea0a71826cac6bd63d59f1affd7259225bc1f1a9f0c8b8807d22a5499579d558210800af7e9300693cd88e0ef59ef2768848c2fefe9a73fa75d5712d4f66f3d061a515ad29255263e60b279e28c50d641791d26acc334ae4ad92af595556b394cec4a1e1ebc3f0efdfc7cff456ef24523a1ee2348987b74addee37f9487c10d1a5b79f4384f04bc2a5a06ba20449e3c0f9f2e88bddef62c00f724f3c03df41d6d6006ad611fef399c183c3c6617eb2de3ce0f4cbc0dbc8318a27c212fb4eb9301364e611a7892c1d85bf8d40632d9bdc7d419efb87d8a7ce0301e8539affd2c85f0637b7d8f2be9fda2ad650a90c0ef530ddc5fe0c1d2dc995e390a1f50e4a88de639f61e06d2b85b21b77920000 \ No newline at end of file