On this page

latest contributor to this doc

Last Edit:

@gcharang

Dilithium

The Dilithium Antara Module facilitates quantum-resistant transactions on a Komodo Smart Chain. The module also allows users to create unique, human-readable handles. These handles can be thought of as an address.

For example, a normal blockchain address may appear as follows.

RD6GgnrMpPaTSMn8vai6yiGA7mN4QGPVMY

A Dilithium-based address, however, may appear much simpler, as follows.

KomodoHaxor

The handle acts much like an address, allowing only the owner of the associated private key to release funds.

Users who are familiar with a Smart Chain's method of facilitating privacy transactions can associate the same underlying concepts with Dilithium. A Komodo Smart Chain's privacy transactions are facilitated by the pre-installed Zcash parameters.

These parameters allow for more than one protocol to influence the outcome of a transaction. In the case of a Zcash-related privacy transaction, the transaction has both the underlying Bitcoin-based utxo protocol influencing the transaction, and the Zcash parameters. The latter is what grants the transaction privacy.

Similarly, a Dilithium-related transaction on a Smart Chain is influenced by both the Bitcoin-based utxo protocol, and the Dilithium protocol. Dilithium's added functionality is quantum resistance, whereas Zcash's added functionality is privacy.

Dilithium has "q addresses" (handles) and "q transactions."

Once again, this can be compared to the familiar "z addresses" and "z transactions" of a Zcash-related transaction on a Komodo Smart Chain.

  • Register a handle using the keypair and register methods
  • To transfer funds from a t address into a q address, use the send method
  • To transfer funds from a q address to another q address, use the qsend method

The Dilithium Antara Module has an associated tutorial. This tutorial provides instructions on installation and usage.

Link to Dilithium Module Tutorial

cclib handleinfo 19 '["handle"]'

The handleinfo method displays information associated with the supplied handle.

Use this method to determine if any given handle is available for the user to claim.

NameTypeDescription
handle(string)the handle the user desires to inspect

NameTypeDescription
result(string)whether the call executed successfully
handle(string)the handle the user desires to inspect
status(string)whether the handle is available
NameTypeDescription
result(string)whether the call executed successfully
handle(string)the handle
destpubtxid(string)the transaction id generated when the handle was registered
pkaddr(string)the hashed representation of the Dilithium pubkey
pubkey(string)the pubkey of the node that registered the handle

./komodo-cli -ac_name=MUSIG cclib handleinfo 19 '["KomodoHaxor"]'

./komodo-cli -ac_name=MUSIG cclib handleinfo 19 '["AtomicWarrior"]'

cclib keypair 19 '["hexseed"]'

The keypair method generates a Dilithium pubkey and privkey. This method requires a 256 bit seed in hex format (64 characters).

If no hexseed is provided, the module uses the user's pubkey seed for entropy and generates a new seed. From this new seed the module produces a Dilithium pubkey and privkey.

NameTypeDescription
hexseed(string)a random hex to provide entropy for calculating the key pair

NameTypeDescription
status(string)the quality of the seed used
seed(string)either the seed provided by the user or (if no seed was provided of the provided seed does not satisfy the requirements) this value is a randomly generated seed
pubkey(string)the Dilithium pubkey generated
privkey(string)the Dilithium private key generated
pkaddr(string)the hashed representation of the Dilithium pubkey
skaddr(string)the hashed representation of the Dilithium privkey
result(string)whether the call executed successfully

./komodo-cli -ac_name=MUSIG cclib keypair 19 '["rand"]'

cclib Qsend 19 '["mypubtxid", "hexseed/'mypriv'", "destpubtxid1", amount1, "destpubtxid2", amount2, ... ]

The Qsend method sends coins from the handle on the node to any number of other handles, as refered by their pubtxids. This transaction uses Dilithium signing and is quantum resistant. Multiple pairs of "destpubtxid",amount can be appended to the array to specify multiple recipients.

NameTypeDescription
mypubtxid(string)the id of the handle-registration transaction of the sender
hexseed/'mypriv'(string)the seed used to register the handle
destpubtxid(string)the the id of the handle-registration transaction of the recepient
amount(number)the amount of coins to send to the referred handle

NameTypeDescription
hex(string)the hex to broadcast; use the sendrawtransaction method
txid(string)the transaction id generated when the hex is broadcast
result(string)whether the call executed successfully

./komodo-cli -ac_name=MUSIG cclib Qsend 19 "[%22d60d224d7855a40507064c5ca72ed7d84a54340174eb16e31d079e4b4f230940%22,%22e580f34e9bdfd23108409e76475c7df3f924d149d494d5cdbc24aeb280237d4a%22,%22af710c0fd6aeb54556ee401803bc4cc39ea9002ad5228f308b27eb3af0e4c4b6%22,1,%22b625e38064cb0c940a55f0dca7e6b60270aac090d0dd90d4e43e924d696564a2%22,1.1,%2276a914b738b1730cfb58960b1dd1765c6d3276993959e188ac%22,1.2,%22a9144d5e24fcd799f3a3fa15f98a6c69a5829596f56087%22,1.3]"
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f89016c21f44da4afe05aad8b271659c6cf8cfccb6b6e33fdb9f5f0935a0d6e8ef616010000007b4c79a276a072a26ba067a56580210377ffe2b64443ac5e746f29b021e22411c7731d675f169d32423f8f3d6fc9ea3b8140ccb5db05dc45a4ec747705d76f2e71f3ab43830693f093536d23e6ab31c18b0c04c2906a8e600629b9264043d4534da3c22c1fe1dbe2192ebce23b8a99cf35eaa100af03800113a10001ffffffff0600e1f50500000000302ea22c802008b4a3a211fa1ecb9d245b3267827a56924653fe9bb4697510cf5d65e4bbfea98103120c008203000401cc80778e0600000000302ea22c802008b4a3a211fa1ecb9d245b3267827a56924653fe9bb4697510cf5d65e4bbfea98103120c008203000401cc000e2707000000001976a914b738b1730cfb58960b1dd1765c6d3276993959e188ac80a4bf070000000017a9144d5e24fcd799f3a3fa15f98a6c69a5829596f56087a0244c1200000000302ea22c80200c0396b7e2db09ab239f0b337fbc7df888273e60323a63d0caa862116bcf51a48103120c008203000401cc0000000000000000fd100e6a4d0c0e13514009234f4b9e071de316eb740134544ad8d72ea75c4c060705a455784d220dd6fd460de9fbac397128243cdfe192f73c9eb327fcc75338e694a94f4df8bcf7d668868731be4f2b886f5d1292e3542f31f01a390fcd7491d730b57ce1fcd6abd792efbeb4047f2cc24b98d07577f3121a74a141d1a7ce94b1e03fa69031e91baa38ef209866fb9db448445fc4794331f5efaaadd1ee58c58deac4b26012ed65f876fb056711d3902500d2d45c0e4e082d8a058a7a671a2fd2a855bd882ee5a06962ab72d93783c7f1fcfead9f712dd3af0424572ce58a36b4e558bc9c95650351794134f1d74f8f275500f19bc967a64ee0baef222bf34c50f0bb771759afee0b202a542d4a349e2224820a2fc29259192e1dc1c2648b161a31454d9a6489fb26b280ad6dd3f1916cae118150d49c52401665c8b299608760c83659f88783120974f85f22d9af9b5ea1dd4a145b29aca2929ffa0449dc821cbe0dd8f86017a37573ad8ca33901e10664822a0ff0825f957bda6148a41d8bd48ae42a7fd10e73e4f28198e767abd1b2c1297055729ddbb613d3d4476b8cf228be84248bef116546ec8d773d271b2a850711f2a8cafd3502575c94a5c258c322f1a0123f439d796239dc7a40e996ff282eb605b7bea9336fa2d6443924a3487f3275095a8fbe136918cb6a69afa2881d793d0d70433c0e16ac5218da88ce76194d86ae8c283184249cd4fc3824614f95af655556e3c3c90765358a63c411cf5df4075546c9555feb2fa1057f540a79a30ddf997248e47076418b31514607236ee23f56b8bd7ee03e09dd063199c45b0b120af1e44920b535aae890d51d0134ee24872a995b991efa31bd4bf9e551727a877d29ef269b83efc0368d042086535b6bd956c2f7bbc3b686dbd765d092a98e825911a13ea92ad2cd7604288c0e7595ee3763849a4d61c90ed7686a3902417eb90d59e40350b12353fd5fcffc53c52759ee393e68227018c924ac9c0390d3029fd26dcd93609d57f19868abfce563dbb93921837f85b092b8539447e2696a9d60345fe390200ce741eae671561b54ee0f58c32e944a954143dd274e41179907a99394c9c1c978a964555d91d0acdda655064a824c7673dc84d1d5a94f06ca6b19078dcd657acb9d84518b94c2f56e4aed02c50a1861d536fe19c29cfede262d8cdf1fba7848f017ce53bb99eb9b40d0b2e5951b47099d8d975bf3054baa8019a9299794e9c4e1f7117974d15dcd4bf1f75b732ac65cbbcd9d2c232e8445d93f422a9315d7c7627d5e4d424094d04c6e419e9805b7bb7849214d35e02139463e73989d019cd1ea3a9084f353f3145df38f88ad0baafee1f0e95477cacc7b0246db8b4ed485db10c999c508506d0bbff6185c53903f8565edd90fc16e3f6be972463e3246a73cb1e2cb294209c71838ae86732cab6f648d10459123d30a59c1bf63a2232d32c8cfe0d06c4797c883d0ad452643496dbec37f87a1a90b525a938cf3367c9917e57c506d0fa422e530753589bd9317a775af64de696857705c5efed3037ad7ad7e1a4789ef238c6473cb433eda187484592e48e5d237d73f558cfe24f68bad4ee85b77c01b9924e262534c9a2486432a5be199aea85a935f6b2424a4fbf3a5dc7afc1866692404de45f41393aecc7ca5761c25fa5922ccebeb8b0580633c75a944d473d18318fe0fb999dd61259813bd0f5c62ff50df1148c6d12757b2de3be3098e7c283eaa3acea5049f4a7e1393235dfeda7b0fdcca6cdeee5410f023bc4c1a157cda0044edacb30b4f00d3c647e83aec5b966ed4e1829eb1f9ab7da7715f34e07e17ed59e45922500f493d74ab8f8f645f3e9002d202f9c2ed14ec698548b7d0ea182c8ea9de1b9146b3a77df43e80a2d085636eb5a80f9d643682d211ae13bb6569ce3411aaca39727850155274aa842baef36ade2173aec3d6c3f4039038d55ff69a7a35ef2d08b5478106b9f0364a8c0e95cd4751bd905c4c38dca63bbcdce24538bd08fb0cc7d9cd1f5dfc1853d502e1f38adaad6c468d9e50ff81d2a6b8dd3db7602bc272675d2efb70382dc19b9039a0b32d876787f2d0e0671b11adde48aafef6d684c517e77217be631366bf99f1109e55a389436e915d847f212b07a5c6fb94db999662ba20e92e642e88bce288cdce3dbffc0d52607af784f802eb18e810d49766ca752a6534d7459a97a2bf07787c63cd836862eb05347cebd3882df760b37b873b79d935cc4fa6f444a6f4d2bae51dab832432a258c1d741d7c133e55302920527e02f1ec8b0ab2703df6fb4c3d357efa75a53c91666b59ed6135907edee5b7ce73c3730c90e235cde4e384dd51f7d7e1b82e3c7cedff649fd6a5f247e829ea9e00d58c37ffd545cd311ad369928ac396cb5dbdfad2c6de10d0a0b1047df15f26c51b225ee148d95dd9c5aea4a4da592cd59b3fcdd8478ee264ed68e61aee55585c32b6dee251f593e8a9f492b9003208af4e04d0e5ee00afee4d0d074ae9aeaa8fda26e89fdf4825da2f0211b5c9a8eae9f1070f401cd6583d0296057c9707a481983aa45b76b290aa249cc5a545fe8956000fc2d48c4803dbc642e1ef9ac3904652ddfa3b6a29e405984a2188b31eb358ea04462ac751937ef5a153d865e6b5951392dd6b4c6ee16224705486de08d380827554419ab24b37b58bd351d157194640d9eba45c13dee0bb73429b497e3885568161f286a6b6f67d8054674a717c6d26defc68c734622dacb8a2fef4dfbd425ea78575402d15eeb9d8cc6f99b0ebf33738b34e14f34b4b990deba45abe2d3c81038d4fa3352a4e904d9d6b244585ba1b0f450c9da0fe84e711255846bf56fc483755dc006f74f816bd27c408c1d4102e2882702b7afb187096a1046cd47f1be2a10400040d310b862232ec7b8419764d05ffe3833bc8462c90ea3f4b65af3fb07b885c9403434b6e0326b05188f8c05d157e0e721a9514fc189dd7c6455d261482fc46c4c206d94ba737a1e456cd22a11e3daf0f2c5716af6ba28419cc17ffa7303ee25d52675a1612ec1cc3bb708c1f0a720d9f4e4c5b47d4bca46f393eced4e6de925262ef229adb4405c44c7ba73646ded1bad4879f8024e84eec05c8bd635bcc6372e1f420be1b7e7f764d966b8715b21b73efb19c4c2d612210cd13fe06bf45d79b0886bb67c9d8f7308cdabde24127d7d3181b3283582b27ad46e0076e03c3269c11b613a6e0375992cac30acbdfb42eb99d6b3cdd845a978845dc7acf67882eaa532641b56ab5626581fca7481e4d1f54f1fb6e1accaff130a66cbb61fde59bc2052c48325a45219818648791ac33046832b02cc9e6aa587aaedb6e7f5d2e18f9b2e6727763f9511b715a43d7a4f608cb3cd037f4e26a455f8b4f9706ec408d4d435be1e6482c2db2aa2f08f23a31900128d57f210e34cb61f73dea2614cb51c220789a40cbfa35c9d565e1f9b809c81f9e3bcdfd5fd814b619b9c7a579daac86c60abcb7293de50b0a3702e3b877f828777235a49920c9dbf5ed9ce3a3f885c2bf985c620b7d0dafd7366a22554b6601af7866b5ccef7e8d67a29345598d98f946a204c128487fb672acbc68097d722d9e12f625b62e8b9affbf05539e44b62e72f6e2d917f1660033dd2a171d37387002cc04cf857d6100409a47d2ce9926c781758d0b7405d9d40086f5835685cde5648495864ac138bf81dac0f6d972096e993b49973c7dfa9a942edc9fe8fffccceb312a0e25b3a335e3b4f06c34cfbe4828597aeccf738a8164fefd1e88b62b12d76d13a5cef333bf8f16135dcbb84fa257b24eaa1e2b7d9c9e9fef6bf5d908e57a05c75d950dbd9ed6ab6f72a45f29e8fa80987406cad82c8d57c744928e3c5b5dbb054df82952b6d995d8b981b532170b311d701b1c0613787b3dbba56c254ffd8ff11270888029d9b342f08c891d185f2ec769afbc8d2b5e232c2ff3365c038102e09094d7dba19552a773f5d2fd153b24ebf7950f7d8c9b857413461cd68c464eaacdfa050b05e4b67a842727ae83a560e692fd7c473552e0b4d6c33544bb3498e4f77061bd8b06a279e68e813ba1571744328f27ad2f9d92cd0e33897c649c6cf33f235604e092d002c1f7e5fbe5cbff16b92540e33e4b3afd99e7df80bc23eca979125c0f271eb1f3e309c9a4dc48e82873b918c1b75ef029f3fa80a65d0ba9a3d7739a0763bbeee1920cc953d46921dcecb65a57f608b9092221209f5dcdddd66998f295f043114fb4c263634381cd381fd75e6c9d21620d13a4544a1ff4a9b789ca115d8108f8ee063c4ee9fd4e21886d74c3a54fefae364fc924d9a7d0994796f6753f92b7fb77be7ceae095e8de8b064aa3ac04138fc9c92a5b63714644ca35c9a12559a0b406df0dade4bc2018c029e0f5e87326ba85360788188cfb03873255c2adaa347fe8265f1fc32d0a8b90ea49dfb8aacf01c69744cf0096298559670d515540cc929480b7fe97608111f17b6a39e3e4b9c127e027d4ce00a761c3e3336b91e4bedacaf3a84b44e3f69180d8da4c7ddaed25841351096d7e822ed97c87250f901365c656671b5b80b0c182126333945516f8f9294bdc6c7cef8fd1a1e5c686e8081949a9da4aab4bde0eb0a28292f373e4c51545cf9ff11425c6b6f7a7e7f848ca1a8c2cbdcedf0fbff03192527353e3f55878fb2ccd7fc0000000000000000000000000000000000000000000000000000000000000000081b2b374a588124700005070e14a0805080a84a430004891a4412051202000440190140c06261da92a73502f904c0eab1b16b2d2b60ec32c1863d95069848bfe717ae65f8d8b718f7dc2f5b9c0605b6c4e4f03aeb278b308f22d52a00a99ec34cbc031840ee5645b5aed60f0c71afa26465694d923ee4d490ddd090c0aa7002b6e6a7dcf0550a940ccb6480e325b6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004009234f4b9e071de316eb740134544ad8d72ea75c4c060705a455784d220dd600000000fa6c00000000000000000000000000

cclib register 19 '["handle", "hexseed"]'

The register method allows a user to register an arbitrary handle (such as an online anonymous username) to the pubkey the user used to launch the Smart Chain.

This method requires a valid seed, as provided from the keypair method.

NameTypeDescription
handle(string)the desired handle
hexseed(string)the seed used to create the Dilithium keypair

NameTypeDescription
handle(string)the handle registered
pkaddr(string)the hashed representation of the Dilithium pubkey
skaddr(string)the hashed representation of the Dilithium privkey
hex(string)the hex that should be broadcast to register the handle
txid(string)the transaction id generated when the hex is broadcasted
result(string)whether the call executed successfully

./komodo-cli -ac_name=MUSIG cclib register 19 '["AtomicWarrior","a70a8e7d2281beaf0762a11590fb566d7af32325ae4252609149de37658e2eb5"]'
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f890c3ac9dfb08a10d3e47274ad9c1f3de2e59b4dc34b433ec7a171cc15880b67fed5000000007b4c79a276a072a26ba067a565802102f1c7993a9bf3863c77853315af7e37c12008ea1c5c3d8722c91bc3b5a019652681408acebab227b096d42a78dddf98b4e834a164e5627e63d1223cceac25e6f8e41617c30ee7463ab48b1229b9ead2aed29b2472f265d5d347f4ab17b3c93f47d5c1a100af03800113a10001ffffffff05ddc1a108a5313bb185ded05ace4d8e29a2f4608f0c7ff7251d11595f3a445f000000004847304402200b10d4b69c39a3fbb15060908c82703e2bf5e573eb01c852fbc2ef531ebafd81022036e4faa9a8ed04ca8502da4c0c20ce6d3b25f82716d1c694557b56e98a26b95e01ffffffff07cd294b67f76a3745a00fb2ab20f6c329eb9f69bd5ef924773bec9caf95821a000000004847304402204a18f2084fd6ce364267bdc708d610028ba41c3155dc895db578c7739abb33950220656b8184a333f806923a29a24f9aca24a122e482d1c66cbab5d811790edb69e201ffffffff076950481295bc4ed92a1967107684288f9702951c302cbd1dcd769e51b42114000000004847304402206c294c39d279f44f7d36d72706a25b296d9fe4a5f8f675dd607cbdc5ba9b93b402201660a9d6d935355fe979b33c50b25b267125a9fc463abc5346355cb953e6e7c801ffffffff07386ff4ac0a46d343afc36786709ca93f08bcf1feb3562ea7baf3bd58cd7a2f000000004847304402207e66ea8cf31bcbbc156cc2d8b020a95440183ea3034dea20607b6a7ef28b9efc02206577bf339d49ecbf698cf434e6ad63f3ca41f83be446a3998d397f097b9d0e3f01ffffffff071395c451379d66ee21321e376721d67fe510287393499ebcf1a67683f3d611000000004847304402203ed2d7ebbe1165bfc02efec4f95905473d2fe4f0fafbe7d0fccac39d379958eb022008c385d3fe93f3a6e10ec4ce78b67f5a93f3df43c08be7534ca55036aef291d701ffffffff0682a878de10392b1807abf35589c9a3aea4137b12d61716be974934a9b116cd0000000049483045022100f6dd23ae75da9f0ba01927f32bbe03e90e16f0f216227400c58f331b3526619002202c522e7b622409ee1974f03022940daf7b0046523b1c69c03fc16b3a55c21f1d01ffffffff066f21010b80faee30bca88603439389aa2274e52ca8f4d288d6881997a1f06f000000004847304402201d98276f505fc969ecc1f5f4df2d71e371b9537f94e466ab6b35594b13afbf1d02202dca6c57312019400809d9bcc7fedccda65d02ca0fb492a72f98128ca4b95d1001ffffffff066e38c8bf4aa889d9dcc53aeec1a95d548400211280fe24d4c0e73de69309bb0000000049483045022100e8255e4b42d3084a66afd9984c7345cec47a15b509f49c4b04d4fafce5bfb77c02206152baa639a6393a4f86db5fd6739cfd096701a1617210aa7138dd8c752bd46701ffffffff06507713eb6ba1246886e7c8364b5c7aeece7251f85d0ba50190365651e161c7000000004847304402203a19e60986b7f45ba8dedaaefae62ab3d9052787c650d6bb5b1168a5afdeafb002201e9691b6093383af569463158d6dcfb6dd6649054c6a3aeaafa435d36b74dc0201ffffffff06195fcbe6c657da6cbfc69892ffb67470fbae568fa826169201aabdc2f2ad82000000004948304502210080952f9f65195b4f2122bba7e14c049a4253b5c356d548c550bb38f1317a31f002205b7c3743bfbab00ff100174edf1367aee599c6df02afde5c62680b68d1ecd64901ffffffff0612f70038d70cfff5a1bf02d39357d567aa0b02e98c97fd877399fbd0763dff0000000048473044022056104b269b860662025808532cc594a11de207be0b0121a247aa1c3abfa834cc02204486e95cb0d1b27a41e4b3af458c6181c0e6d2a97eb8fb32df313ce423e8f81601ffffffff06204e000000000000302ea22c8020979f9b424db4e028cdba433622c6cd17b9193763e68b4572cd7f3727dcd335978103120c008203000401cc1027000000000000302ea22c8020749dd6534e79a31aeba03df3b0ea58632a0beffc3411b54b7cc0e714ae2dd61f8103120c008203000401cc00e1f50500000000302ea22c8020e029c511da55523565835887e412e5a0c9b920801b007000df45e545f25028248103120c008203000401cc1027000000000000302ea22c8020979f9b424db4e028cdba433622c6cd17b9193763e68b4572cd7f3727dcd335978103120c008203000401cc502198000000000023210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270aac0000000000000000fd19076a4d150713520d41746f6d696357617272696f72210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270afde006e4f25d02a6aebaa196ef1ba40f9c8156ff691b5505c72c304f9bcb4c0506167447056dc7341b1431132d0099e8e0a7c134fdad28e6ef8a290c24652260502f43876c043b5bc48f8624c2c396ce1a10e2da59fb73d5523bbe830eabfa6271f33981c54b519c25cd6a76f8298d4f380c96c8dda1a95b45c672bce7c67afa1620cafb5650c1b48758256548b6513f4b8862aa2ca959d244a3955fe095cbf07458e6dec3f73d1afa9f4cf40213d3e7355499cc23f9cec63437a352751d2b95a0353e5ccf70eb2ec5b6d00bba3f12d8e5af3ee752612361e0eb474a3f7221175462e9c171bc6cf709aa5ab53a7683c24decd759f97503a2118f798da1eac081ab7c9e61fe8697746dbe1e798690c9ee600ee53eb336b714130404ed9c5f0d1407a007641b723e59c9bd5178cd42953d10b97d367fd75fa0cccdbe7daaee7b11698e667f1fec2a78d5b94a013efc2d9fce26ef7bcb44371e04854a0f039256fbbe0d472f89b572f5a252528d426a6642fb92d243092b35976b54ece95e0ac246491f6dd024a7ba6cc164fd5172e50c893ef974abe1929f286036cdaf7a5c0395bee9d8feab5b80c07cf4d0b88e4df10a08bd4187bcf82e34a5631a32fae96ec25f992e20b7987df6d0d70535dc247640c00a3b4baeca3a579fa91dad116f3fac11223be5848bd9f34edd0fa3528adde06896f1e363ded56ad6feee9b9bda41f32d4d1279d005e6eb7997bb73dd085154738d11ab800a3d0964c441cb2117d6859ce6908b0525161bec38ccfa3ad71f6005b5891facfc54a2a25b758f8067f754abe41fc769ecea5b83c0a91f4edf549760954276d4f3703c7c563c5a9003501ceed81f382903d581fcb1fd823a0a9caea81250005cee48e98676df2f0cea71fc2ef0decf3d3bdd7b0d5c8ef7f64a8b6fe160290b57c2724bbbb264ed2b6f48a585174c30afd51cd5bb43138d7f88853cb9919a697816c9d0ccdee186858eb48d76853abfdf1629a3a3d781786b55ca1d19413304341b3db4e2a390b410d8da35597d53be07149a1da27c1e0c439565f404259cfbf9a90511bca1f3bc2c7d9592c95eb83da99f848f551a402004e7a7af1896d05899da19e2a133ee50dce1eba96ffb626340cdf713cedf8579fd76d65f144f47065b4517b6be66cdf112029300ccdfda9158be86845195f5e7a50c90a7360e4470ec7b28700393d0d8685cc32c5f352de03f38efc2b6a379def182aae527ee18dd69c0e4cf1398b220e26dd052371a83db082f55318c0e0fc27568f5a6122484f889cb73d29c8da6f91a65035543088a87e68c2b8ce2f7c87a0613f89a04d372e19a1aaaa5309a032d01c20b8d56c819a85fa19f2ae1dbdf36c83b65fbdf76026cc91925ca06254759c0b6613e11a9cda6413e52695fb20cd61145d477d779a389e63eaeeefe6bcd1588e7b149cdb234616764f13b8e61e045d2ce9e53668aab202d7d941fb5d314fbb2c12d9baf71ccd2a43ae8745973626ac4d3c15b4d4df8a756bafaa6c56f3cddf78e3cc008c909ab31bf9716283d1c91688efba7ecc048218a5becee52cbb22fdd57f6907563106aae0ba8daded1050a3617d5962d108aece6b25309fbb63f739beba4dd5117c7d36ce5ea324c2fe98b27e9094acd8e9038e41ae5e7f5e7db705f1b297a341f3ba10f3a86942581d97825e97e0e43b0308cb3b283d303b5115c539cf4b51e0e963aff3270b696159fce3e3e7e5887a15e2c40c0fc308d037adcbde18e765915bd990039df9e78c5af9e5a7ab96bfc79680e2c6e937599893a737a8fb0910309cd75dac3b699a048274a987fa1b3d70d80a21eb23ba8191b508440ba5264998d46ba951df5a022226efcf8526e765cb88048675ab5bf3158bde9776f670b3e914c44c1ce5dfbb806a27b7155e8b3a12e728899b61781ddd1e7000ae120afd025675d50c491ffd7e97698feddfb1cff0b0d1cc428d2f0be466e58a081985d444777c4add2475fc80dfb4bba5e191b4bc6b631fad2d96a910254366b94fe45c116d08c8c01c0158073f9f5af721f08d772f95ac5a6d55b69c9adc3abc4e9d816cf4bdb86fec744fcf0817142079fb97c74335eda37b2bb4124c6ed91ef1b1c7285195a197d82dd755697c9136e49b652bfdbf7682558d8f70fa9adb9c4c5c0b32545fdf7313f6d68fe0a77c38c49b18ae79dc57aaba711e8ae3f8be3a007f84bf26b3f8967b95f4696d3a37598f69deab9e3d1e251d6a095280e1e3d1f873aa53942182dac1bf768a4c3bd8df15fa58589ca7e979dc5f6707729f064d1cc24bedbe3ad9404a1767918278677362a253a723223da676331c4cabe11afc441a365abdeb119fa5f6b66107efdd2546ada80014b382a62e90f360127279ffb54835b34ce886d2918160b05d9b4e91996467aacc6dcfffd56c13138c04e50b63693a3a6e3843b649ed2e18986aea35d35634343a7c50de1aeb8730f6276080549bf43a1ba00000000f55700000000000000000000000000

cclib send 19 '["handle", "pubtxid", amount]'

The send method sends the specified amount of coins to a handle associated with the pubtxid

NameTypeDescription
handle(string)the recipient's handle
pubtxid(string)the id of the handle-registration transaction
amount(number)the amount of coins to send

NameTypeDescription
handle(string)the recipient's handle
hex(string)the transaction hex; broadcast this using the sendrawtransaction method
txid(string)the transaction id generated when the hex is broadcast
result(string)whether the call executed successfully

./komodo-cli -ac_name=MUSIG cclib send 19 '["AtomicWarrior","ea448ff66aa925239cff7ca748d3aea62474187fefbd1c15fcaaa14c4529b82a",1]'
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f890b07d7463ac5b5ff1212587b75c8415a92a628e4dc211561b90ea5ac7b37af2935000000004847304402205055d1e1babbd1216613d6e57e23b7de86ebc6a4df935db181a10ad9b1e6d23302202d69603b098a0565df5ddf1cafe96cd0fd591fe47c4fa2701e77135ed3c797af01ffffffff0ac7f5fbcfa6fe533bb619d98cca38406b6b97e69d91090c2a1b9fc210163890000000004847304402201b4cf6a262534b5e1ddeca3e1289cb0d32e4a9f1349b557a998ea455c02a890d022008eed182ee47bff2d14af9d130704c4a38bc7bd683c38c9cee81142c208e112e01ffffffff0a43b879094d181d1d3746320f50edd11b931a32fb666ffac69b3fabf52e78e40000000048473044022067c0ca1d5166566b82c73217369ab19acbb53a01a8d7ff1636c5f77d735e5f7202201d542b4dbe7ea47a102f460f7930c183d9022fcfe35437b5f7898c154267e56a01ffffffff0a33490539d3829b5a7c2f6de716003a50ecd5228c79104517c718aa8de2ce8c0000000049483045022100c683d67b101ecc094c84607a3e10d9387aa47520a48e3f60d446fc9e8d85624b02203d520bb85d860858c947d7e138b7228ad810da47a6ce37cbb530f8811d24c0d301ffffffff0a3292a70b1a9fe7a3617abc9ba62da3d01bd0388b18dce657b795ee83a0b1390000000049483045022100f2cb8a23e21256dccfc778be883bd0a2961c5df5295cf66ec0ba6bfb8b4bc046022035c25c9b477946fe89c3ca5e26a045c441d13ec17e34864e16155ff9146be98e01ffffffff09be749efbfc980b15412a17871be7dbf521e13670bf1c8361c5a25e63daf69a000000004847304402200c5aa79cf8cb57c2907996b12671137ae8703e95b446ff16bcc719f64405a6ec02201e01bf4cf19899de0de7f171511e726618d9ea85534537d15b2ebfd74e2876c501ffffffff09970f055331edf5f93031a82fb909bb1aa6002eb557b4a6edbd858eb966febf0000000049483045022100a2fb27660fbdb3d5781e57a81cc3984cdf180855c6ef7335dd01d2ec35c709b5022069059395a6fa1bbb43ab2235f7f80c73bd3c8d29bc7fd50892c70cf15508a17001ffffffff093930519de533d4330040a695cc8646f61fa748542101b8d3d8345d4d35af700000000047463043021f3046d7bc0279e1c8fe114ccbdee8f15056371c66f0cef0beab44f6f522732f0220686b590b057847912c3e80eae4de68dc6a28c331917fd3671d1ee4aad31c785601ffffffff087d867b365921b9f063a2e58575b86fb52a6ad8d119edcc8714eba24e770a0100000000484730440220020d29a6f465428fd481b1ed11b4b9e2f086e2b6a19aa67c1002f5db65a92fa502205befab5889abb22d4e774633d6073f46827424325317d2813f3b64058fb544b001ffffffff08172d2236ac25430e3bdb64593fd2a440ceb32b007779f6f792f319d187a6570000000048473044022056060b04e790137ae7891d050063c2dda3be5ffbc7f1be30be8d9312949d47a702205634bca2147819b6b9a498762075d78636cd73d1fd263b380317ae1015c9b63601ffffffff0807d4a2de4712a21cf48b89f8667765506bd8a525265c836adbcc43c3fdb3b70000000049483045022100e45854defca9139c4f12ed2d4a8123758978ec9e8c685e580484dbfa72179858022019a354068e28c4807cecb95d85dc6a6b67b83657d8636108f28ba1eddf30037b01ffffffff0300e1f50500000000302ea22c8020749dd6534e79a31aeba03df3b0ea58632a0beffc3411b54b7cc0e714ae2dd61f8103120c008203000401cc706f98000000000023210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270aac0000000000000000246a2213782ab829454ca1aafc151cbdef7f187424a6aed348a77cff9c2325a96af68f44ea00000000f55700000000000000000000000000

cclib sign 19 '["msg", "hexseed"]'

The sign method signs a given 32 byte msg (message) in hex format using the supplied Dilithium hexseed.

NameTypeDescription
msg(string)the 32 byte hexmessage to sign
hexseed(string)the seed to sign the message

NameTypeDescription
msg32(string)the signed message
pkaddr(string)the hashed representation of the Dilithium pubkey
skaddr(string)the hashed representation of the Dilithium privkey
signature(string)the signature generated
sighash(string)the hash of the signature

./komodo-cli -ac_name=MUSIG cclib sign 19 '["5175616e74756d20526573697374616e636520697320617765736f6d65212121","a70a8e7d2281beaf0762a11590fb566
d7af32325ae4252609149de37658e2eb5"]'

cclib spend 19 '["sendtxid", "scriptPubKey", "hexseed"]'

The spend method spends the coins recieved in the transaction of id sendtxid to a scriptPubkey using the supplied seed.

NameTypeDescription
sendtxid(string)the id of the transaction that sent coins to the handle associated with the seed supplied
scriptPubKey(string)the scriptPubkey to which the coins are to be spent
hexseed(string)the seed used to register the handle which holds the funds

NameTypeDescription
hex(string)the hex to broadcast; use the sendrawtransaction method
txid(string)the transaction id generated when the hex is broadcast
result(string)whether the call executed successfully

./komodo-cli -ac_name=MUSIG cclib spend 19 '["18e3a7c746e8eb7a7e1835e54e46ef6f227fb41c7142bf0304b453c0034b31fb","21029b086d4e3e0358f668ccc3da07df6343fb29970b742f0bc128f180994c5222c1ac","a70a8e7d2281beaf0762a11590fb566d7af32325ae4252609149de37658e2eb5"]'
./komodo-cli -ac_name=MUSIG sendrawtransaction 0400008085202f8901fb314b03c053b40403bf42711cb47f226fef464ee535187e7aebe846c7a7e318000000007b4c79a276a072a26ba067a56580210225f1cbbda1a0c406bb8f6dc7a589d88b2f9e28cd4fdb3f59139f8aff1f5d270a81409082aa1e061a82c0fd261b98af3a394cea7d269ac4656882335356cd315e426a128eccbbea03b6cfafe2349a193ccc587c08f6e2cdec8d71ce5ad8dbdd60f0bba100af03800113a10001ffffffff02f0b9f505000000002321029b086d4e3e0358f668ccc3da07df6343fb29970b742f0bc128f180994c5222c1ac0000000000000000fd6f0d6a4d6b0d13792ab829454ca1aafc151cbdef7f187424a6aed348a77cff9c2325a96af68f44eafd460d7e7405e78304eb2eb0e65a6e5cea9c82009db2977b7796f053d1ae5751ce9a12df055271025697ab447b5aacec5cd324f1b603407f71e711d7f88bc96915b91b5a8177d683f9b035c6a44aa2ae0a1b4be468c7875b4953139c8480ec5e6e5681e86edb715fd351cc2e4074f1d2905bb181d0072bf3effe370e891303485eb998c642e2b4182d527a06e18e1dc3d695f3278b571964ec59371fb17e6cbdf51c73983d8ea17c567c000b9229416a15dd4a812498840c77df30a0b68560afe1d97ba9b11610f0653f367c62245221d038d68eba0b4d9ed76f05b54e5a628c1ed79b29efe42e19f1956d1d660f45d53a3a9fe2a28692a212298a474ed94429c4760a2cc7db794632cb088de11082c1b6dc3db667329dc6988f1a74104bdf8db9805c98fbac074c187e62903305a4be8aa56ee5642123938493e0592ef288088e3124d0c6f621fa2bbc75812bd462fb5ba083d7e945cbf873c00e2b27b97493af56b83430dbaa5ca91be559ab062b7eccca238dbd756a5b8d4782800cd8ae6d511d2cf83234fa47af57fcd198a95c0ab120cbf448ba80ff2b517d28813e97019a055f62bea952c28d6f0f4f413af1bc34bdb07b01c4ed56447f45a89ef6d8c241926f9a35458ada85037455bced29d22e5e4ca0794155f291fcf96462ff3511df5887c2930134698d3bf8eba86640a07515078c543ae0e2c27e4c39d51da85c3d0bf27989100e112b36ab27c92a0c747c72a5ecad465c2084bc0f84d9782a6bbc07c28e0758d343e5f9f58bf21fc7b9c0c4e4eedeca95418a3d08df03b45505e6926df5742051f5aed11dce0932971e61e219e099438ae07cbb74b9d4372430473661eb2740d6198e7c1dcdc2adcbffb10e7a0320a5c41914201a350bdc69faf68f3ccc81904313672497c2d73aa80d2b0cece6d7687f482aee558d4e1b8f10875c419ad9b43711163c5de99598b9f214f29b0e413dd7dad0082aeae8526339b76bc051bc487c6872bc48f92108a053aad48101352439845c0207914ce503ad8f3bb34ee741ce89283f87e3b63fe1bfccd3ed0fde43224169b852877d6600cbb8d5abbc0c97bb0661439f42f2b35aaa88490aeabff7f783412f192fdb7d8857e20ec773a852dbeca61b9a94af50499e2159ca57caf68d87abd2519a8271187e8ed4cb47dc836a96fc230e99238e4839516f19e132356b31c35a14be7e4a05e3c4965bbe06dc0478768370b755816f727fc567141c53a704377f8f819574c114394665e7864a2fe2287f06bac869548a8a074435df870d9b5b903184efa7b27d57cbaa173efdd687317d0efbc9d33807f2f30ad0169b23a6e7624785ffd036db3abebff5fb9e83c6bcb126f59e8afcc3ece4f394051317e5886209270a591a49ce5a9eee6d57fd71e8ddacb3217cd8e9516c5087a58a2aac9b3244ccede7f8de1ed036d54721e0ed1d4c64173856bb7b9cb29885d94b251e0b81b9c7402dabebd18aac425df134dde8caa698267b293deff4df5d57081ef4a05985af681a0b92e3711157e4e9b39657c76098d6ff7723c7798dfb3ab717e301305aa224beac01a4108848d930f7d745cf985598832141b23ed65c27944e6b1a0a6af68696d31df5e14be28c0da6eef05170fc57c8ca54ac3bf6d0485ed8c56c3d50bfde244ab41bf6567a0da6375d3ccb2e9084e73be94f38afda17e843d8c23e703a7f8b14b52b7e7ff7c793b9ac6ee263265025813b1d0a69b762bddce2fbae197c3e2888abe307418b57b5ac0f2f62b1ae9dca2ff58e11440abf3bb952d1c40556dea5e4cae13982a8f79fe0664aff78328141f1e5ae3eb38b76c8906c540cf02d78ff411df6d433689f7ab3f76cddf0479c201dddb80681d9d0df66a33f9f110d71d93198b9e344a4661d48ae106e7372c578d408559f088a921956be384ce6aaa7e83ca90d6343b099fbc19fa8a7219018bca05cebb38c774cc24e0ac37f736ba1ccdf7b4f6d789cd2a945270bffdce7ddbb0e55512cb08853bd91244569662919d4973601fb21f37c3fc097e14679bb6cdeab7e81745993e630d9bbf75a871e45fb122543991447cd460b95c04fdf8aadf88bd4a1de392391a80fc8984090ba64e9f567fe471099fa887d5ec72f2fd192d88e2c12f3ee51b5e7ad7c06cfbd1becc5c94513a37c863e0c8678073777bd88bba225f4aed3b63cceab77e137c947b87573c29f925f1cb29ddb8bb478111d01b245c950a67637920187c1e2fff3b3ecec1444d9c8311d45e481e0093d54518285f9245c9f55a268e0249181a7986c4c48920a805cffe53ae9df7b894c9fc354c18f5e5cc2630129fd2a761cc93318cea211e934b3e5e74517210569a99578720b35746f25e7a7b8577afc93b5090624d8c337b9013a5050c15fb797a160ed00afc7367999170f6d81ffff30bb7487089a0323dc6702d94c023f2c0154b9308edfa61aca8df3df665f1f39e17c4ec109a68113487e70fac8701207656709bb154cb50301690d9521d06a49f5bff9e8f6e3789640bfd40bbbbec24d4d6842b31a5af7622e827b40e541959f034d491065b2c918d0852c5bd147cce268fb6368a2a08b993344a9bc6d9b74241a3d0cd49a350b6ab7b11d8bb81cfd8a2b51dd3847328b07086f4acb28fc8c04dce254882bb3aa538defd288510d4ae5bdc21f24a6e5efc34da8306bc2c44249930433fc80b0087c23d1f0d0978d2af4a53210ef652588b8400c79098b9eb0d72a0a0e48691037fa84cc2d168a4f964041cf5c41500a0841c988bf5448025c5603ae71fa0e6ce30015c7cc6b5a2d68a38b5e6b94d2b51c2c59c3f4a5718419a0964b42f50ef7e87646a4277bf7d74722a46baa01e24fa2d5fef6cf88df6754615cddb7c360f3adaa1f0652d0164e71c2579ba98e41c99e09d752c086db28b35bb5a5969863cce2011b66cf2f9dd90767d4fb75b9a41e8a71f00b296e99e70f77b718e18b16f2abf9f80da69f6e8bf976c8dc853ce71b38794f5aea7177fcd92dec08613070c29bc25bfb2e7b0759627b57df705e19e1d9c913ce29283078e50beea2f13b4647890e1e9efb2b4464fec741ee582c1f3ddaac2a80cea1bd1445505da5e47ca3791cd28221cf95fe0157d8639a35fdf6bde533220c86087d4a3d2ae07565901cc3334cb553ce1c46cb265ba8d96a43ac0899d73caa1ac336179ee4a4de37e098d5172bcddea4711549817ea9a03fcc59072692493ca9e8bff63be80bcb7866fe0e30716e2993b556850e5584fc2a31ae6df849f287015804c4d77411f26d6027f6217f490690d42c63fe593320fb1bf42d9a6fc5c43b686241f321b14eb7712f67be9adb0fcb494c0a595886c6a5bd53cdc40dd2fe457b7f2b2d08e24a610bd77912a90eaf3556728c88c6fc5096d6f990ee76ecf25d7c2057233256aca0a87558e6c8c9177cd3c72cb79f00c9114dddd8387509a3d42c2d9432b36a4f194ec6de793e0ff0d298a819a9c49c2f2dd18ad6bc2ebd307da5c8accc1fadc7fb5af63ddaa9ddd87141b2dc48999adc9dd2de3f3fc03b64c5e411716d6d7777405e844897f5e004602521824e01f20b55cd22a0efea4e6527a4a83e3bfe51d2f9f9955856d1dc1f9ba908d395cdfa09c913d6af648e7b003c2ae7fdd8ca071bd3178d4125b127e30c397916ddc26253cf99b1f92d416df36eef8a6a3390ef1dfae0094472eebe902e83548b3632688f069bf9df56a3487aa8f40c0fd977d1d5f9a8e5b7c5d9d622a511b1729648921a940f47ba5624018f0c2d2ffd432be4a35fda337ff1c07988585b00bb2d0c4777e8592ee4cb13824e0df605b3a133e3f2b3aa7cfb80caff54abfd960d75815d7b168ab546135041f6216790536cd3622877c7145f71a37e3b4f545c8e2b7a7511c926f922d277b1d79b964d9ded9251f2d4ed331b553a775e03986b7913693d226e4d3103132ff373459703f579def3fabb5ba75db75a46e6daecd1929448aa8c8754146f917ceabf1544edb8e6591d52deb5a76fe70a97fcdaa40f6cb1f5b3909b7722d6c5c80be5246398a7b7fea634676cd566b7902cc41ff420972db2e5b3ec32fdb7c5e3bbed55528dcd8dd95b5776fef3cdb0f47f891f7b845b39fb17d5a36ab486e76a15546869ffb91e7fa8b1524597751ef6dcd1a10d2be2c46a7116d5c77dd7a70116299aa0814a7094f9f998f47ac913ea33c3b0b8cb4daf28a056ee46ec2d5c70ee2ae28f0435d929dcd8351b06e0a977eca513d36de77428cff3ac5caeb2a8a1d839821fb15f8b5ecc3d8264030a3f1d83abd82eaa4d1166c6f898b756e5219e49f45ef1a6568357cac25d01cbddeb7d7657ec026d7de1c2110533f8a71d188e2f69b7845edc83b5c06532514c15dad6d93f682420ab48307413f3d620a97812a79b6cfdf570062c4707c9c5ccdaf38d638ffcbbdae3beb134fa621db08a58e90835496015f3fb0cf703987926a6e11a720d6d8e007942db9832053c6c99277ef30b5ed2e5283dae6856585cae24f4f9d7dd5d12161c38565d63898ccacde4044352577b828797a3a4a5b3b8d3d4dcdfeef0ff083544838babb6ced70d10151d2451616785a0b9dbe6eefc13204c4f7a848e9ca5cfd0d7dbe736393f619cc0cacde400000000000000000000000000000000000000000000000000000000000000000000000000000000000c202938464f24a12050276312810a8b40180800084828a083a202408000121311408308420055225fa43850a109000000000000000000000000000000000000000000000000000000000000000000000000f55700000000000000000000000000

cclib verify 19 '["pubtxid", "msg", "sig"]'

The verify method verifies whether the supplied signature was generated for the msg (message) by the seed corresponding to the pubtxid.

The returned handle is directly associated with the same pubtxid.

NameTypeDescription
pubtxid(string)the id of the handle-registration transaction
msg(string)the signed message
sig(string)the signature generated

NameTypeDescription
sighash(string)the hash of the signature
msg32(string)the signed message
handle(string)the handle that was registered with the seed used to sign the message
pkaddr(string)the hashed representation of the Dilithium pubkey corresponding to the seed
result(string)whether the call executed successfully

./komodo-cli -ac_name=MUSIG cclib verify 19 '["ea448ff66aa925239cff7ca748d3aea62474187fefbd1c15fcaaa14c4529b82a","5175616e74756d20526573697374616e636520697320617765736f6d65212121","d89f666a168c6c704a80c63165a93edb1c8c4a23f1e47feb160122669fc081735a66f5c95d1ac524e6bc2e719114e13be356e8e890ba16358464c5498181e2cc6d9f49066588c11f89f89c5f09a3ca122990cbe576c85c81a283a1ef9d69e162dfb6547f5fc09265cac4cca94a30850ee5f6fd638e4d3a9f59576fa1ef6bf621a04f506aa7cbe76bfad672f107131948de8fdc2925e90268bf240de4aa1859a20b529432dedb5253490f0b45295e81e1541e9ffb2c8774b6822c45a038dee590fc9f2ab1826015d37c678d2b9a91349b7f2c78c43379af0ec5dc85206d192142ed14be09acb304d1b8531a3885a2bf48022600b911420ff99340899fe4f7e4c921f10a65948c145ac5f7c685e72bbb23a1ac4557b1a91b3191a5ec7f229254c740a03a4c296fc1249cf953bb9a17f0a1fe6a63b351b3ff8a2bfb0bb0c047564e01dcfa87c5616e1cf09578672c64269b5277cb82b8f054a058b8fed76159bfa82fdcd9b65662f63a1cad4ce74941ebf342760ce1511b435b9d4b77a3aa9c48964543e711a32a8d76de338647ba6f9d0c7582a517fe4f6bc2a25b976ba7214cf88b09857e365780d2c8d5fe158b53c02ffc5083eb83effbf41cc33051214d8b97d510ae4cf76cbc8c2e03c3f17ffed1cc2143d6f6154b9ed8bc7db97a06843ca1de096e4050a81e4bec673bd333380bc824bc80e9a1e6a4dae1846cd5738bca677365e6166ee87ba34b86ac74bcd322be3434fda5ef802a7714248f4854ce39f9c6f9a1249353dbef610b2616f6a083c3699bc7c8e5ca6865cc15fde196b2faa88e3e1126c818185bca2275762d9ec8ec440d0489c0725908c8fd104f99c8bf730bda01e31c202e43f186d09f11c0de4825c49f88ece9ffa23d462c502332210afa9af5110134c35b68718b0f117df6b45b9aa0466c95e95f81ed19794a2dc33cfd58ee4fcb4f824ffdc8e238a32317f2584db98e7bda9b2f661842b3924edaa441dea32b4e5357c3f8d424d48acf3d3f0964e69e64130b2d3c5ebc806135cc53fa8f1e1a04444ac5116177dd08e17c2c29cfa49971ec083cf8ebe424f3e84c4e5630c7b5053f9607a9b4df56195d8a07c3eee4bb265cd6fea253fb7af45855c712b83a0f5c01732fbf73ac8931edaccae71367956c5374f4d7c96c1ffcde9fc2d0d8fbc5eb4fc8d3829be53f1b2e537ac1ee659111438c2a6d11acb4f502594ae617685b1176aba19a79dc9d754b48db84cb6a83c9dbcc4ce0ed6b640d31bfed99df78f8a34521e0fde9bd14e168eeaf6cb4da6a29b48df655fba872312f9f876fcc8125b7b3768046e8f9d28f0c5526b9dc2b26887fe79e0b1e0b065055698ff27c68bb0dbdda057d0b5616cdcc89a8538ee1d030ca6ca6f6db71d0b1cd0f03cdc96c9cb3bb45689e923820d17f36d675a764402bf6b08fe7b3356f75fe51644ee577dc209760c6195afe71c7d8e32fdedd2a035ddf29561252ea92e4f7e674eb0c6a679f1fe4d1a63e3423f3e36e60ce93ec12a4e88bd2546b25d8c702990a55fdc37d1d5bfc1fdb029851464ebecadef443f03eb126bf48a06f43afac89278e9e8b100295137139b7d37706c36d0a3687181cf10ede3a4e2cbcc478831dbbd99eee03f9bcff02a2f1887a9ee85f932d3e22eb43d4541ef48528a921814e1d203086507df78f84bc119afc2febf445660c73e88739d53be3762ae3c6800413cb2d963239b4ce1b0a2634e938df33d20f8e056d56047adca62876c5db389a71a9f11376c39295c69ebf09dd0a30d4d5d91971b6ff60e5a0d755863ba813a0fd8f8a7baab677a455f930308499bbc86c36ceadf1b9c37e6118fae9ce015d5851db272799bf75da81545d57b6a2d36358e1f4f5fdc00e9121a9d531ce52c89a64b24705daa0a8dad8707dc5e11ac6565fd763758b530f7a890cfb1dd7561d94c6df9681bf528252f4c99beb5fdcb2cca134b50ffe69d2160df4bd3c7ec51da9c189c8743f19624c9ec69dfd52bce1a8da90fef8d5294c2f477489bbfc23be3a65d0a797485d0235c40b56fc2aab90fcff1da0a3b065a439cde62d895b1111f33c7ecbb96991908757ff47b053bdb8afca97e5f2acabbc8c37f35185b25ac2c43b8c30aafca78c371ee0c1e0dd7132e603309b702b8de2f185f527fd6b74855599f70353cc3befc3654b557761027cc867dfa1632bb3ad94a5458296588333991d2e16a296450de5e4a0599af4f79a011b02c657ff045a8a95572ce069f3362f82fe7558ad76e1272f45badb32900c1cc47643f5476f9dafbf0f6d5a50da8d2405cea4777e1e1b293a766f448ef6ef94fd185ceeb341e369ff2ec9dfe37a18978557ea22336eee6e57a21614e457a46ef2711f112f925ad111d08c88bb05b0bd9d9f8fe9a53250c562b5f18a2534118a2221b91b1420b801d48115c99f91285483cf5d7a7bd23af0bea1dfc034b6941b9b2dc6181614cfb7328c3f4894485c1dd59b11e646498e3957911d87e3a0e1d602046527b7de329acf1ea0f5a8e9b5112d174004454a11b1e594c1f7f14bc1bb51047042b5d99b8b4e9bd0aa47502dd00557585dd36d19a93c48a935434f59b8aacdef2fadbddd5bba5c55f864e01c7648a16f6c7f35b9d1c08aaaa53e42c2200be756dbeb2ebfb8222f0dffad6683f640c7dab52d1c3d501b7c72628aba1bfd4ee089325e4972e62f8313487864737ad29714417af7357c8ac967a4dc0e8fb3ed55d94dd9094529f6f71a4f6afbc65556e556251b988e751deb1a4a898fa4af1ce50db0173709bf8265259862676ae3ba2a399994b36474ef3b44b18321bdadbbede76bf7e5313e0e197587f7e674edf402a01136fb0d366d5c9e9d6ab804fa73b630585346e6d271cf012b2891ebd85f308c5f97b179c18ee6f4ad6b10e33e9a7e2142b21a06afd5b65b773b1d0a5dc9f879d40ab264069689db4644c3d631bd8efab0c9721525e31d25dcd1af9c71dfa9a5da7cbc84811ec97e63f1f3b3c3f443bb6e59f6c1a115bd336cf2d485b53fafc84f8018c4a2ee1b9319a9b2d7a1e06b8862bc4ba82313d74a9fceabe2eab540fdb1434edb0339df7217b2125ab2bb9079fd1859877ef11e16fdcf7bbb9654be4f829760f51f439e05baa0c283b7576adfd43329cc044416b45cb3078646bcbc69bcb5dd23f3e0ae5a695fe3ac96b0a934696445bc395fb12c5b8d1e4d256c1a61aa79397a6453dc4adf11d79320f0294ad2e95e3ace72f616be3b02b40953b24e3d724baca91d2dc435c22e527df93cd48d65fa3e63f4cf355d97a4ddf2ee87ce09f919846df7a16c13584ad0dd10002e6f166121392eb7c8f081edefa703b73882f61b0f77946e16b4625b6f814df9e7392274387406a05d8fe7c58e664745813a65ce16133e55d49ebfdac252da5682f1a41d51ac38ae579e643098a4ae5172be6fbf9f6c51c124eabb90a28978825f3ed67f53bcdd4f81247121369c5974343ac939c4384088a35ba2473d8e81ad6834f7bdb949b92a21ba258f7b246966d4343e7ea44e4b6f9909cf112a1f25362fe8c684b010f875e994fb87b65aef8ff59b2df4703261a57cbaba9962915d50ae7405c89163a093a21c782a62fa524d4921078f896d61aecca2128a9ce0c3f481cc0cdb16b3666239383e7e180890819297c60a93b2f5841cf665eb5266394a10e6d0afc4f600938826fd13858e88e19b319876168de379162c578b25c4c87f46b47c005ebc79073e4770a46e9ccc5009b19d4a84d68bd68a7bac9fe0bd6a51ebae9ee6e6a7cd082802f0a53c7cdb4a4f3b2d7b15a9fc23bfdc10c88c185938916c0f70ba40dc26e80d86602051de0faa3503841b3ff12ec2cd0ac1bd9d86e2f098ad1246a93d63619d482634bea69a1c883a7b9e35b91fe67b35a02837750f363616a4ed572e8d6dd8595abe0bf1571ad6ebd5b16df8bad53b1d6bdb1e391702c91abf0e8feb3499fddd040e06c46647cecfbef85505b0670f1184878e3ee15bd3d93546a028917ef445a8fc1c26319b00c0b0e41e74e00447a6c5cfd63bfa09d3d68c3ecae03d2335662ee2e79dc907a4f5f91b5650d29020c99b3be715d225a9d8a21cf5394235bf035209052b76f815cebc0afa5993f8eb6ff944a3ce56ec14bd3e3ad84f1bfe05073c3d970082a852efd037537ba299fea304cc6e6c61cfa08e013df36501937f6cbd84cc7057ec8a471ea2e4931287db6c62d923f4c902382cc7ee4f9d49ae9857f59d67bfc58c277e44b1ea3f9582864733d1b898ba98108478dc003012b4010bca9e8ece18e3180b11cb8a31e293951e07ebfba7e770faea8b2f674eb535375f2254a3e20f1e2da32631a4752295ece3b072d21c1fba4d33a3415c9578c1c2052e34d5fabbf957ef2352e0c4e8885461841a3d47436738cc5c53e2c043a424f30458d1ed9d6b6b30cf6a7eda861b540ac25164e00f220496c46f93b3fa7fb7ea8a843ef3b3cde50882422bd9414f858f603c108f2c3c157c0c9eb41c185a27fcdb149e210a1e252a4647496e7477acb5b6c0dbe4fafbff1a26576162a0cef1f502071b1d333650666a91939aa8b0d9eef2fb08101319246d7e9ca8b4b9bac5d0d7f1fa0f25283540516169876285abbfd4e2ff0d141a566a7f8688969ed5d8ef00000000000000000000000000000000000000000000000000000000131c2e3f4f5c0526a000cc00420628b002b0002ced051021a0029004103b8840111402048000ae8f26f33c9de7075175616e74756d20526573697374616e636520697320617765736f6d65212121"]'