Someone is going to ask why (joshnet )? might as well be me
Asking why only delays things.
@mods – anyway to force @Cantankerous to change his username to @SpeaksOnlyInEmojis ?
we can wait until 19:35
and not a second later…
I predict a fierce tussle for podium places tonight.
The agogometer is doing its dinger, had to put it on the floor in case it vibrated off the shelf.
Nothing sinister, I’m on posting duty this week and I had to go out until now
Today is the day again. I’m not expecting anything huge, such as testnet, just a very good update about how things are progressing.
But I have a question in my mind, that I’d like to have some kind of explanation. Not necessarily in todays update, but at some point of time, maybe from @dirvine. I’m not in a hurry with this, it’s just something I have been thinking:
What happens in this new setup when a node, or a number of nodes, goes offline in the middle of executing something of the highest importance? How does this differ from the previous setup?
Just the same as previously, except faster. Previously we would have to elect a new elder and that meant DKG. Here it’s a straight replacement.
The vital thing to realise is the network has no authority. It gives what you ask for, it cannot create data. So think of this network as it is right now as a massive disk. You store on it and get from it. It does no more than that really.
How it achieves such features as DBC’s data/chunks and registers etc. is all actually client side. The network knows how to store these things and append to registered or see a doublespend attempt etc. but it does not create, it just gives.
This is the key to this much reduced simplicity and very soon you will see some pretty amazing add-on features that recognise this but give us much more stability, reliability and security. It’s very exciting.
I think the network is also doing validity checking before storing some data, so it’s a bit more than a disk.
At a basic level it checks if you have authority to say write to a register.
For a DBC, can you say what checking it does? I think it is still writing to record a DBC as spent, and before that, checking all the inputs are not yet spent.
So there’s a layer of checking for certain operations before data is stored.
Yes, there are rules for sure. We should really document this better. It’s actually simple, but interesting how it works and the security simplicity is really nice too. .
For updating a register → Key is signature of owner
For storing the register shell (or chunk) → Key is link to DBC that paid for it
For storing a DBC →
- Check the DBC is signed by owner
- Check the bulletproofs to confirm total outputs == total inputs and no output is negative
- Check the parent exists and is unique (this requires a cross network call from all close nodes which in actual fact is brilliant as it forces routing table refreshes and updates, i.e. keeps the network stable)
OK, now I get it, I think.
Because there is no authority, there is no inner hierarchy either. Network only checks if some facts are true or not, not if some agent has a right to do something. There are no “rights”, there is only validity.
And how do you protect against bad nodes taking over? If a node tries to do something wrong, what consequences does it suffer?
Huge topic, but all they can do is not give data. For DBC checks they could give the wrong parent, but they have a few things to get over. More on this later.
This is where our fault detection kicks in. We are looking at formalising that part more with robust eignentrust
So, as I see it, the Network is now something like the board here:
It doesn’t do anything. All the doing is done by the players. They are free to try with whatever shapes they can, in any place on the board. But only the right shape fits in the right place.
For others interested:
Looks like I have something to work with… unfortunately a rare visit to the pub is in the way for now.
the PR queue is just as juicy.
This sounds like a big deal.
Watching github magic
Getting real
willie@gagarin:~/projects/maidsafe/safe_network$ cargo run --bin faucet --release -- claim-genesis
Finished release [optimized] target(s) in 0.21s
Running `target/release/faucet claim-genesis`
Loading genesis...
Genesis wallet balance: 1288490188.500000000
Loading faucet...
Sending 1288490188.499500000 from genesis to faucet wallet..
Getting the closest peers to Spend(DbcAddress(8b0e05(10001011)..)).
Sending Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })) to the closest peers.
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(c494ea(11000100)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(63c657(01100011)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(c298b4(11000010)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(f4d216(11110100)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(2331a0(00100011)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(4684b5(01000110)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(8ac223(10001010)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(1613..427f)), priority: Normal })), res: GetFees(Ok(NodeId(45079f(01000101)..)))
Getting the closest peers to DbcId(PublicKey(1613..427f)).
Sending SpendDbc to the closest peers.
Spend Ok response got.
Spend Ok response got.
Spend Ok response got.
Spend Ok response got.
Spend Ok response got.
Verifying the transfer from genesis...
Getting the closest peers to DbcId(PublicKey(1613..427f)).
Sending Spend(GetDbcSpend(DbcAddress(8b0e05(10001011)..))) to the closest peers.
Signed spend got from network.
Signed spend got from network.
Signed spend got from network.
Signed spend got from network.
Signed spend got from network.
Faucet wallet balance: 1288490188.499500000
willie@gagarin:~/projects/maidsafe/safe_network$ cargo run --bin safe --release -- wallet address
Finished release [optimized] target(s) in 0.22s
Running `target/release/safe wallet address`
b9d903363dd703463e289a5714c8136e98b89a1e1ebd2d4beae31cc42473e24184bb0cc4b464dd301d2b231c632596d7
willie@gagarin:~/projects/maidsafe/safe_network$ cargo run --bin faucet --release -- send 5 b9d903363dd703463e289a5714c8136e98b89a1e1ebd2d4beae31cc42473e24184bb0cc4b464dd301d2b231c632596d7
Finished release [optimized] target(s) in 0.21s
Running `target/release/faucet send 5 b9d903363dd703463e289a5714c8136e98b89a1e1ebd2d4beae31cc42473e24184bb0cc4b464dd301d2b231c632596d7`
Loading genesis...
Genesis wallet balance: 0.000462664
Loading faucet...
Faucet wallet balance: 1288490188.499500000
Getting the closest peers to Spend(DbcAddress(61177d(01100001)..)).
Sending Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })) to the closest peers.
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(ce8497(11001110)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(41ff6d(01000001)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(2095d7(00100000)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(ed589a(11101101)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(be3682(10111110)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(b0ad34(10110000)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(9265e2(10010010)..)))
Got response for the req: Query(Spend(GetFees { dbc_id: DbcId(PublicKey(0fe8..146f)), priority: Normal })), res: GetFees(Ok(NodeId(71b79a(01110001)..)))
Getting the closest peers to DbcId(PublicKey(0fe8..146f)).
Sending SpendDbc to the closest peers.
Spend Ok response got.
Spend Ok response got.
Spend Ok response got.
Spend Ok response got.
Spend Ok response got.
fd42c7b6ac0e5ebe8b211b77e0f92a6343b9883ba0e0412bbb6cccd030be0a517abb2205efdfbbb798bdb74c31d42510fbf104d01bf8ff2ee00eef3b4d790cb72bdf0ad3a9b83aa3008fd62936a478733b622088a9bf145cecd7ae8990f511b048f5b9091b25f262df2a54a30f683240e80d41593ddcea705d72fe6c0feb94c013908b3c8ed1de9794e41e310d93a143da891ab6e56c1652fe82c5d840200f9c00000000000000000000000000000000000000000000000000000000000000006fcc7c4d75afb7cf3144a33ac960d8795a3c590bfed7c68de0268d2e6b72c8980cde5f40ad215525e9e4be8d441b767d35d6d725bcfa9a43a8919415938a409a02b8222b442398de3e858d466d25f8b2d11489337fd940c8ab08a46dce7537e47e2c5776e348f27240be6dcd928787ac836ac2bff065bdecf77b56fd511093e474d1e6fd539ba7f9f002a414c8e6ddd17ab86c1650d5888947c757342d2e417a5f40b3080f72026ca84df83979abc9a35bfe4fed0a7931ca0b31943408a7cda22fe71440ce738f20fe9eb1dcee67d0651e901ba2427c07c73eb9aadd6d393e9a6173d2340f24cc03fb01f3af01dc383e6868a36b4b9009efed1401f228f62d34020c538ebe4709a09b4663508bec548c0c33456d64641b9f488f2c662b0fc28a63c49a65ccb35d37d303aaf5e535b37943ede20d6f148630237c4c4ec5bbda50281995394522b784f03b639257d322f2b12e822dfad280b45bfd590045f3766e6221d5c29a322fc098a90d707fc5541cea9a3422161b696cb6f94e8e0594ac3a12aed6827fb65e2939f67292ef37a449d3617ee75ae80eecfca8cbaef2b0d8c044ee2c1bce56bb471f55dd26b2db25905372a13fe2522455a790a392142218de378ae226edc0effd85fcd42bebd021d12a2205fb2a620d325ed9c99a92b69070013526b00dd331776337c7e60af25c356bbcdf5ebfb70619744b3e414fbb07e809a6dc3ef4501e2e9da2a17f22c0a65bf01c24979a0757f0c53b097126eb52210fa7538565a2b24994097b2a1102a8f6590bb6ddb4c57a34b4a14807d27f17d466dcfc685a9250fce6beb5bfb81ba1f54a8e827320b4082826f6bf3d618a3b86309598ebc5954f0a83f3c00165d81653564a5b30560a40accc128f0dc7b7fa7423ef5729b516abcdf532a8d8b90c083e66a337b3d2d6154c73a896b3c6c596c83cca74b7511d2b4afa61ffcb6eb1960fee71abeb7396b9584849f664f3e0875800000000000002a01b78848d527461430ffd0c0abbfe2b43cacf227a779b33608c9da2130872b0462aac0b451cb6b33d96f53f77d97388a55d2a6047c505aeb6ded440124f95df38d86a623afa7b1f545554f4f578f6d3ae0f73add6a0d31da359ef7f4e3df6768a093c51e9d77f70c9d3945a88de03c39400a0651ebcdd2a7c9c74207a95af35331d129f9530bba846738722774043f5b676e3a6c94ec2781f846ee46e889170a33f95f73f60a9b9d8b85804336e188a785e8cc849aa5923fa417705b85b7abf2d24171e495d051ae996f2d49f39228e2a09f4249d20e77a2f274c6527973325db91ced02beb5c242bcdfffcb806c1ceea3739358c6d2c70bdb82960bc1054c331aeb7459dbd4cb43ae2e6cad587bade4621a59d192e4a4ed44d341d507b4fd1ae325ffa828ad4aa88f7e43ed85c1ac3b611bc5f03b8a87d106f978a5db764a164e434ff7bc75b236a75857b698b117fa061a3922f0609286b53d2d6bcc26a5bbce48ecb4d63ee1857f3264c9551537a2c1c0081a6ace041dee301263bbf656a073a4e89a2d54413d0b42e710a5c6b35346ac8f11aaedf8fb3619f95c2e79257446ec031beff545b732866e0e55e905e9223b3f06eeffdb99d66d8b4ed466b9f563d9da59a3944a6308ec743cf12e5452a45b13a394ea71b362b8539fa0bce0a74289bca26e8b2ccdac8638cc4a356fbca61f137dbe3dc047b7a86af0be57abdaa79d713210ff569fa4477126c77558f040971c79dcc70423e0f000c1d1df618df28896984a708f1f94906273de74712cd0651324402135e3c2e453f819717a4afed1f06f13619aeedae487d4315e9fe5901ae5735ade055e43869d65bc6e51fd6d6f87e396abbf1fe9681ee8d4f6750911a8fda5437450d14bed13c4cac25d4c594a7e32dd6a3826b15bda9383652ce000b45dc1d1b4c13143203082bc03894fcaec44c785ab965e7f3090490336604143b9d0462bce1bae5379f68d1e898e6807c679adde4edd37e63e671d041eb57fa44bf6a5945797c7e5c26ee2ac566e63bf8a77dd94133983f0dcb774191f297bc00000000000002a00ce9943e6733ec701cc4cae35efd3810c272737434fa8ab79970c9adf04f14d67ab3c03301ce93ce2f738e2b83705aa67073b7186d25440227ab834700b3edf0f0fbf129b6a963d5c8869927ce2e8efc08cf0966d6ca2c7660438762da129f700ccd697e31773a1f1c995d0d9a57682d077b1ed705b7e0f7fc677f85110fc72b7b7f496288df7147aa4b434f104a63c174cdf4b0dd5448bce4243863d916f14d82b54512fd4c1f348e93beade78e035e2061ed819ba4a2cdfba7fcaa916301ea3754a11b850eada8c35378b86289e19e480d31534804a6cd7bd24eb41673420ded750fe16dd85f474e867e396fdc3e961cdcfdb7a16c158e3d06de5415f99d88c4e7f7b40c4e962a2f4912dad0bd36166169dbaaa783c146e1191f5d28802f6b2f81d93b64a8d9731560d87652e6eb2235abcb7fca8e91200531ceae4275dc7cc42ab7e7d077aacf863f8aad114716242688f059f3582d2ef2b8a09a15f8e861bc1092b828bbcdef4d8eb62fbd03e1c07763f9febcb161434884419743f82f244ea204c0ca7c1522b0d4e140fa3c1fd82cc5a35699acf2f9d6b6057983a98fefa57d2c7cf18850bdf0083362109462d40c09784c2771b6f0436d80c449428ddfab31a88afb44ba415c82b948284fba9841786f26348b4f8d6a142e7d2da2a84332ea47e47af79fdcf6105d30cb30f97819bb1b72eebff5a625a616c384d62821945c04e5deaac968d6a4f866a85653d60317b492c275e3a78d9129df519f273bad51779f83194ec59a4c464018da2b9600ffe83b0155272193e3b26a4b1c43f80c9138e73106cfd098a773f4d47994070e793c34e1341aa66892f532bff995ead1ac4c483dd69b7572d9df783abd997758b05b4920a8a196b3c53814c19524ee73852c55cc8a4d4810faacbf00e234b8756acebcdcaaf34ae1dd32ebd4572214976ca3e6fc088dcfec2c156f2634ca0634f5fda04d4980139b75c1d2076bca2171ce2ae184c39bfe7f9ff30d8be1acfe35617f39db050a236ea460affdcf48f2ee78d71e478d03838b1fb6f40165457c00000000000002a0ccd4dad8efc86fe0f392430f422527024581a78d230cf849f9de1af2dbd50c1352ca2107830bd05896c95fc346d2ba80308f4a8bf05211de73fb7a7922e626380649b8b78a9346fa09e9627ae77ae5da041435ffe2eb4c4d38b6d2a600675a56048ce6010de6bb84961626095208d0dc06c5e2b3d5bcaa49b122aec1cd331ed5ffdf4dff38526bf6264d397e9f5552e14e63f2a608d0ba9b3825d0152fa82aef40b5e6076bba8b9be3e9784a5e9c911274455ee807660c51f5c8d8f4e17a9d50405223d439c5977a43a8df459e175ce0364955ebadb423b11af690f047783bec40fa4483c6480f81aed3e07af7bf7f560416869b0591e2d8a9fee259b186a4dde02e50ae2999b3294a2a470b36aaeae015ebbd1d321c71450d68a4665dda9df6590e63f997f767ce24ef739285e4a36408d8918a02bcd0ee3588e61d91fe78a7df3c92cc9797277effa22f2380a1b3f41fddbe1899c4f1cdf583512fb989268bd5b12127335916089d7b81a91b4d469e64f14ff4010f669288aca4e7f0d9bd2ce7925c1a68e0bc9cb7b1828771eb86fc2873d65513ed14f06ce02b025817662ed9dc4aeba78a497f30a4ede8c12ff2de23df2a22e149cfea14e3f6adc419392576aa1801883a08737fbd28ddc039804e561e0a021c5496d8eefae2093e79c5825de34651256f14a10a4a530a49610bec50b62b5812595a74181adc9e2382995d8244ab5983c5d9d445632a6f6038b61a0b87a669cc34f1e5f50fdd35bfc7f28c6e9c5e67c46e947fe0ad19885a3c75fb0e5d3c4f56984a3e5ed88c470c6f57d00b6797511f963bbb31d34aae389527ea0a033a9c565cb710d2119fc31dd7d9b08ba441f370e995d049cb6ce5480989b7495a3d1ab212e8e131218a591a2143c4e1d28f920734abc56a9464269486c4a45d0b85ffec0c7e5a60ba7105aae9be918b99ef3eddfde31029fc1c4cad4790566e50af18ff3bfde4e905a9d1a5f8e411bb921e7bade9eb9a726b5f6121e482ee1e6215ca249c03eb183ec87de3adccf7ebf34b9f62d8c066c79e0e428544408600000000000002a0fe39304a6886ce667418c28aaf08b6ee439333be04d92b4a5bca3516310756bd18247af6d4c35c5cef042e1db72ddaae0fa0f300d534b3a1fa457344114a0c9d0acaf4bae363eec185fb7106c9931e500031c7cd041051cb66b0c99408c0f66970150745ae5f1877bddef1acd05d39880d6315bbcf59e17dbe776df3e7adb7408c1159eb9b61d5041018f1dac6dd8aab7d49102234715e45c54faeffa6570dcb828415fcc72f6a85840ca74380cd627a254a5c1f9ca4ff87be44340c766ad94cdadbf8ffc7d148ef0f3bf54034ad115e4c1441b4276797845bf2a418a4d78a70c75a7ced405d6861830301ecb610a9e815e2745a7e0cbe7ba59c16d1eb74384225bf34415137ab2670e5536928c8a9960cb196013d0e4db3f2470c96fe1fef7673cd9ab94f7304938d2c7194581f8d7e24f531436e097150a991ffb8807c81aec5ef4883d26047e93ef6d5603ccf56941219c7e621b9ca2501dd448d5ea059ca6bdfed93dfdcbec3c96de38952c8582c4144804a02c50a608a0ddbaec6ce3a66ebe5a01a46a54cf879f2453f73ccaed21a72f257d026f5f8884e1e2693aeab5fe7b262084e4455aa1d54247324f0ae260aa625e0e52869192dc0e677c16200d3b94843352a4159b7c35fe00d883793ca4ca558a236bc57d4c20d24cbb55a824e7130037bc3ddeca881228889918f756e3da6aae9916cccd3248fafaa88abd9cb520f20548e5e710a13d90eedccac7fc002a43bb0233e619e8faa508f4b991465265f5dca221c4183cfd94d70b392b5d80fcddae71295e200803c5b5b1912e6eae771836dee29429d37105f8e4f518d64002d175017fdbd879b7cb8a9342e34586c235f1c704103ed612d6a5231f874405769f80496f450f3b9e538b60795b30a97b2f801be64e6adda357c4e283e06c84b21d2e4399c3c0a71201ac11444795294df2084f6166c3be1785a35410b8efa1a03aa57a1dafa855fc170e850f7907561453d301215123e62576904f082ebf425a2a0fc9fda2aebc1dc91aa94b57d44b938f7f5bf71108f919da54284ca87da00000000000002a0a84d2981d0aaf871639200394303c5d16dd7b5295d901e9c88d80df1030911abca64c2063dfb216a3d49bc338b6eaba531dcd9e6810f748d7cb3325a49ed4371ab0b4ba4dd9124ec6e72c0cbfacd14840d5e2d54b28db97267b2b7b33ebce17c3438cb7a9e42c3c823017fbe30312590043cbd524c0d2d0ed71faeb1a3f5ea4b538347065b27a365d770eeb9aa010337039caccdbea7bda7aa1b05184e4b70b6be30d5e6c52d1b3fbff67aaab651bb664e8db59e02fbcb452ff5f403e402677a3a98566a7f0e1c62f6ab132cb69437f4030aedec9bae00287c7e2c2307e3d9f4fed4e02e0e2f65c695190cbde2e68c8e5b5de9b01324b760f1a089099bd403c2301c271e7e86ed0dae922d07b35d6254419590ac5874f32dc73eff7a20fd76e4aefa752fbdf8cf01d6bfee74a9c8899604bed304c5fee6732169cec0c95096715ab8de3e6211e7b2a8957ab8520fb2aa0282c0b6d7a0e58eb2cab7596000c4c9eeb889e6b88a892f7e35aef96ac1891255f4141f32e696add273ad4447794afe35ba84483e77c651a598fd2ad3a6c68e420355573e9e6ebeb1a2f1a57beb840c80b9bb8f28e6fcfa6709a4b4e9644c983df2dea7b74584bc505a010ae0c758c70fb3660d9c0b69eee3903e2b1bc9cfaa51c66d30542479de96f9134161b2660aedd53a6298bdada20296f3b2a93d289c4bcb1cde151f902bbfa36cf34f2018a2b989de9c63c892b118661e9c3750209e08597efff33e520888b40a7d4fc11e448bfad9fb659a8aec8458d2c8070ae4d803ffdadfc2109a11d4d171afa9ac56979b0044935c51f3ca84ace19f0e7110560ff6ede59aafd292ad7b181794db25e86a8f3fd27f9517b65a1b4b2dd0b970ad242675eea20f04f1ccc294f3573302f24153535ca99da874f6a34941dc6cf0b05fee27ab8c2dba41caff887c95ceaeb57e62d4d158678b7dd48c3e40fe9d75c4299a1c05cd620e605a23850a2c4777d6949ffb89e20b47226a096ada5bd626543de325897d619907f6c9e25de588932bcbff096d03a04c99120357ec7432d46400000000000002a06e47e25cbb69bcc2be30e91b77bac33bf6c41407455f1bd452ba0b75f265037a151109d91d97601381d5c61248c955a773b44edfe735aeeee6f7acfbe35ff89840a2f8432babe171ef53c42f832a5bee08fc86b3ccd6b028f3e2488f3bff894a6cbb892ef8fc00271bdba50a79de379a0d230e21af59fc93c1d4fc9fd540b4b9ac962448e468f0150f42ce43c59962af5feef3dcd15d75b35c41e3e0c7a102506c8142d29313088938b4275a177f080804b81421c7a7eee8fcc558cca8a1f91a2b88f95742c6dd3805f6be50d55c9e603c2d8716982477ff02b47d8d364293666db8c63aef6d2b14e80db481726536ee0d5eb94be25225bc1a92db569557252a45687a7e0a1737735eb404c35365ab705f7aa79b1c35faec4007ccb8249c7729c77284fb96b73667e82a6eab3855c4d00928672682244be9f6133864d015dd77d58eeb065993c3d5a471b7e3dbcb65e21e0247efd7dc89e1e52ec8c4a8fd3c8a02fd9d21c266acd612c1f4940f5a5540738ec2ccdae7efd633bfe6c9211469d25370d7702da4b35b02f8fcaa5561212c5dacc585713a31c468dfe50ffdf0da1b3846d1c3ddfd5f645db7992e829fe1384dbb17048f0334adea4ee7bfc7f918b225322db2caba05da7a0911ff6f5b128a04c4d14e22149981ee391d49e17e28fda892492e9bfba4c68a49105cc37f78f22f7cf2bb4ef3f40d0ac79a193ae633ba1800fcd444993f882b6adf785a64ff2c04d533aea3c29c22c99aeb78ad438ee538d4b581adfae0c2ecc8115eb849771f025046b1d9a7522c9d26e747407c4783ba6a2bfebd2ebf6345334ee79b32cf940787c38daef3eba3828f2e87b3e930dd462f0e2273c6c91689ef159e38172e7b6de1f0905a8d809701c061d841de26c6082880e2e19e756272290a58ded88640501f693398c9a30ce17264ec14a6f36103a24bf7647432f9e5b232441b7a9f0a47e99b084cbefcd65b50a70b68d144dbf705b54aecaa5de19865fea7ac153ac60baccf3de6ce8df38af3a7f62843c0fcff301d45702348b86d1855d509e3381a00000000000002a0c0d266f695134f644cad85625c05e0a703c66bb2501887c9c29a4236c0115c677e37644b46824893e9b1d83ba48831b476960dbc47ac8d30ba151219e2f2ed8ba19638305f02e19b4a767213f1a195800cd6c5eaac02ae2122766d9f824eb16820b140dd088260914fddf8966f7bdf7d0eb2627fd84e40d9b48b13c0431f8205632d86a73a12d2dfa81ca08e9cc0fdb512c38b37d1433ab5432cf7049584446ff0f4e3c9126214828095904a3266779e7a0b90c2c4158a0ea52f9f94afc4267fdecfa1c825df87dff4f1d7fa9e717bae734f288b2f8eea0a4e8385a12dcfb6b5bd3aa2ab449be39ebe521057c8ce6bee4daf0f1464972b58379e327173fd9779b87ce3372a49da68e5bd488b4af3888258619522d13f2e1fc0b4f0e1742527a683f4ffa53c5e55c397de706a7dcad05e2a5b4d07b7b42f58202ebb6460c748e7d8fd8f5842bd44567bb7c0dae3207aac75e27dc7f62575c6d774b45372765f0f9b38fd182f7039e5742473d5de1f9b683350a0fa2c3f17f1e5a3c5520e0d82c35b8d67f2ea4ae346afefd3f70b50dbee40ee7d27124f2b7a46ba7a339d5413ccddd855d1cd93b9d5865d3e1d53d90e5035b980608a20c505d04353d3b9b9ea80cef882f98b7b2a1652f901c086c1a79638c211767e24cb083b64d2c98e650af7ebec47fb88ffac221505c5ed29cdd7e831b255d9a8d2852481b943232978e9c729af09c2ed817a9526a2fbdd38ff97ba05bf50b31b59faa28f978bf761e7c30f417f0dd1bbf1287ef041d4270e1a08120e4d89260cfa8234fc9a389a7aa1db1f65288df7877152209b66653bca1f24790041bc5eff2928e212e3708fe1ce904e8adc145fc4ba19632264ee843321b2e845ec7dbc138fbff03f36be443f6c7f6bfbbaeefbdb8ce91ccb1c24666fb069740b9e00eac19121d424a6b7ad867003058181e5e57cf24e1d44932eb9bb153e4a306847a191864cdfd0edd82b3dc8f96d1858888c19eb4051ea4028f8e35c023055e8c4619f058970b2533018252fb8ae48694e2de9d5afdad86add3bc3a6fc8e00000000000002a0535f7f68a5ae975a53371e36cbd7b75b391f9897b35cddce264a639a0ce6686ab767399cb8b0096b0530aa13ccac468b01e3a09385f1963c37fa74dc0eb1f6a2df1d12c35583b83a2d2e039dfd21352a042898c5c2cae2868aab94f847bb5624ca482c4fd35e46380a97a8819f3c67630026fe60138781c271af4095c8277663e95f6072ec2f193d214d722391a7c57f0d42aac41b3c6cd5a0e3fb9c81df20517ee6c32b0536c1067d84625b9f6cf24c39991bcf7fc1dababa1b135a3d42a3f34d5805f9cb9cba2957889a3917548c5e721c2524b77b5ad71042e228425505200b8d6c15eb3a9d54d5634f1462379acc78545599235c5aca06acdf9b55b1cf96c23595bc76f4442cff635c72026b90de688d1b7ed83b07817eeef307083d7f0149f95d5a60cf408b6eaa2a205de7290068714325ad9d0913053ec61e2b2ae3fd2ad6209b1bb23f2ddfc1e66dec2b9de079720016f15316a1ec795aeece3971502273a63bdb25d9bc9207746b9b050a744dbd564fee5a70ef85fa69fc94620f52c222091db39364420ae4cb611c48e22a33ddc5b21fa8621352d08b7fc036083097daba5eab9a6b2a628f2d0529e04fbc6259cb0cba5e5741b58ee1237693edce88cd3f2a81cc2cb88176a9df0f1df5ca1b489c2a8c0d7091e272ecc9aa3d3ff7296d8ee0a09b4702a8e702c629c4a9843f5a1c6f5bc292fce4f99f5793b4855925a747ce8e48dbaffd42a40cb6f10e7c0db25ae88793d73eb9cabfbe2e0ba2e98fadef060f70a352bd9b7742701e3c6b070f74538142fab240a05ac3eece5277439eb5ee5a5de84a768ee0a2f5e537510f1d0e6597f8d768a477f1267a41b15f5aa28b668258fb46200a615fdb50c2b922d8b95ca24e4dd9e5ad05acb13a8eab1a32f902833388d7f9b129af24dc67f03e5c8de39960af1dd24b3d9ac521b74d6fb9779ee160bc8bc76eb763dba93e0219846780d4c0fbaa2c1333dfe063611118ede07a6cb811b35ab98eeafa77b9960390247b60f9945036aad476d637644232890ddded288c0faec4f3266307dc4e00000000000002a00ccb4c7fdce979a453af6c1779433203f5eeab57130ee2bb9d3b3090694dbf36df9d90186dcaba7ce19f544e0228409907efa543520dc07118a070aafc4dc2532247e28ba9ec7f60f2398b0ecfca290c0595e22eefb27f0657c4af4a2600a2ef50ec25ceedc1fb4b0babfd4c6fa05d5f00851b35b8623a7f57b87dd101b8ad77964e545b464bbccbef3d50138fe0a65c3af11b7d60dc145140a215f76e7df218dcf9b54c991d968ee8b961049bee089816901ba889a47a7c3178590c4427d8c24427b038a81d07f14496502febe636f2623b1df0db939c0039a933cbb20cea4f161eda600080c427c544b6d37a0a90b625487675cf3ecc17a53c7f7918656debc303b69b66674c98f260f74394e17472324040ffdfcc547e91baae965f4d61c5da769ac82d36b75e3e010186a97086481b4e5d9ad2f90720ae990107f9c7783f4b28561dfc4b8c27f15571e45bfce7e010dba4aeb3bf83cb45b93fe1383e62ca18e4ce593775f93d68a02ecce56d9d0a53015df3ee8fc6b876606ceb6b35efd064cac6edbc19a5debba633be4e97d5022bcdbee504ac15c43ae54bb3a82044b188f9806bcbab95a737008a9ad89dea7e18da572ae91f6d1f8dd09fd08a2283515b7359f4f067acf3cac7fa69988a427a29b3abb6aa4142148f10d70a15e7603f3d8f6ee038d514f8383bba1e01268e4024439ea7e659a9c4a6f665b2078958aaf854d0e5efe3e5157536bf153c0c3bde0290e08b2f5dfa99793f5ef7e577608cc7602ccbeffdefdfc41b6707c898f153069fe7e9cc85022da39c27ec12073a01093a916e4585fdf4273c444ab609c2b90305b372935baa4fb9acb2d48e5b021bf84840c720f6b5d5a8fe04090fbb74ce03649512da4cfa0813e9fc2e784eea9c55f8b4385fe9902b35e6e8ca948daf8270ed662d4f1fa9406e6eb1726ad391801c78ae24096390bdb7e5031f5a402d8e198b25da6d6225bd1a502f9861f0ef42e6f8b7d1eb8487de15d8927805f15a24049e28a6f24faacacaa23b4e1f5320adec8b0f5c11342783b14370c42f97837400000000000002a0edd6abce29e466ce94b2f6bc4e44602e0d3049c8abb15eb656dd508ad5dc07ffc0aaa21bb70db473875d5e6bc62031b2000000000000000a4af7897fe61757b7b93225fa413194ebd19e4f7108762c2a7f6dc7afc72a166ce52012bf74273636bfd01ae7fd1f1e087bcba0e7bab5e39d0334ffad4ff87d56a80ad58fa22ceb449073b2a8daab060018d0d9534b32e8583e13ff7a707b9e9713908b3c8ed1de9794e41e310d93a143da891ab6e56c1652fe82c5d840200f9c328f87facd33af4f2cea92cab215ee9b45aab94a16be395c8a4a9c9cf903a8519734119042901886732da8ae2c8ae8af0000000000000001328f87facd33af4f2cea92cab215ee9b45aab94a16be395c8a4a9c9cf903a8519734119042901886732da8ae2c8ae8af0000000000000001411206693fffaf5283f34d3287ebb01cd27301910213fdb3cd395a0f5313ad75e73e1906a24005f829eefa09407f981076e07f7292e93748d053e9dc54e651c58b738eb959dd8a08426cad479fb99b46eacc080493bd9e8589d732e9914462927c2a6a017ff1f419e9fb36ebf43103619312eec42fcea7d4ebfced0f05953ed5192c5c6cc211e7f3000000000000002822176c6eca343b74a2c2982bc9fd3c5ec52821596c7030f310627d8739aefa0432d64fa3ddf3258d3f96870d915b88b2405283c352e15c492223512a58684d156b23200c16a3315d6e6b549623595b4cf6f8bd188b77b5848b5dfe854e02bf0a6ef860ed8860e1a8821b9dc814f893d0725d6a97dd3eaf20281f9b163b9d67fd53f923a4f77a376bea0d3155ac6669b7e73bec78c26cca75cdfa6ce8fb38809056ac328ccd8b3fd174b74f30d83ddeee0000000000000020ba770d2da0a0543b3f1746261bfbcd93b45df8c2d44b213ae3a31a5de86b89efb902481aa10d41a0a195a07abee3d9a6d79625631c232b1d30dd64b4c40cbb8441e27324c41ce3ea4b2dbd1e1e9ab8986e13c814579a283e4603d73d3603d9b96fcc7c4d75afb7cf3144a33ac960d8795a3c590bfed7c68de0268d2e6b72c8980cde5f40ad215525e9e4be8d441b767d35d6d725bcfa9a43a8919415938a409a02b8222b442398de3e858d466d25f8b2d11489337fd940c8ab08a46dce7537e47e2c5776e348f27240be6dcd928787ac836ac2bff065bdecf77b56fd511093e474d1e6fd539ba7f9f002a414c8e6ddd17ab86c1650d5888947c757342d2e417a5f40b3080f72026ca84df83979abc9a35bfe4fed0a7931ca0b31943408a7cda22fe71440ce738f20fe9eb1dcee67d0651e901ba2427c07c73eb9aadd6d393e9a6173d2340f24cc03fb01f3af01dc383e6868a36b4b9009efed1401f228f62d34020c538ebe4709a09b4663508bec548c0c33456d64641b9f488f2c662b0fc28a63c49a65ccb35d37d303aaf5e535b37943ede20d6f148630237c4c4ec5bbda50281995394522b784f03b639257d322f2b12e822dfad280b45bfd590045f3766e6221d5c29a322fc098a90d707fc5541cea9a3422161b696cb6f94e8e0594ac3a12aed6827fb65e2939f67292ef37a449d3617ee75ae80eecfca8cbaef2b0d8c044ee2c1bce56bb471f55dd26b2db25905372a13fe2522455a790a392142218de378ae226edc0effd85fcd42bebd021d12a2205fb2a620d325ed9c99a92b69070013526b00dd331776337c7e60af25c356bbcdf5ebfb70619744b3e414fbb07e809a6dc3ef4501e2e9da2a17f22c0a65bf01c24979a0757f0c53b097126eb52210fa7538565a2b24994097b2a1102a8f6590bb6ddb4c57a34b4a14807d27f17d466dcfc685a9250fce6beb5bfb81ba1f54a8e827320b4082826f6bf3d618a3b86309598ebc5954f0a83f3c00165d81653564a5b30560a40accc128f0dc7b7fa7423ef5729b516abcdf532a8d8b90c083e66a337b3d2d6154c73a896b3c6c596c83cca74b7511d2b4afa61ffcb6eb1960fee71abeb7396b9584849f664f3e0875800000000000002a01b78848d527461430ffd0c0abbfe2b43cacf227a779b33608c9da2130872b0462aac0b451cb6b33d96f53f77d97388a55d2a6047c505aeb6ded440124f95df38d86a623afa7b1f545554f4f578f6d3ae0f73add6a0d31da359ef7f4e3df6768a093c51e9d77f70c9d3945a88de03c39400a0651ebcdd2a7c9c74207a95af35331d129f9530bba846738722774043f5b676e3a6c94ec2781f846ee46e889170a33f95f73f60a9b9d8b85804336e188a785e8cc849aa5923fa417705b85b7abf2d24171e495d051ae996f2d49f39228e2a09f4249d20e77a2f274c6527973325db91ced02beb5c242bcdfffcb806c1ceea3739358c6d2c70bdb82960bc1054c331aeb7459dbd4cb43ae2e6cad587bade4621a59d192e4a4ed44d341d507b4fd1ae325ffa828ad4aa88f7e43ed85c1ac3b611bc5f03b8a87d106f978a5db764a164e434ff7bc75b236a75857b698b117fa061a3922f0609286b53d2d6bcc26a5bbce48ecb4d63ee1857f3264c9551537a2c1c0081a6ace041dee301263bbf656a073a4e89a2d54413d0b42e710a5c6b35346ac8f11aaedf8fb3619f95c2e79257446ec031beff545b732866e0e55e905e9223b3f06eeffdb99d66d8b4ed466b9f563d9da59a3944a6308ec743cf12e5452a45b13a394ea71b362b8539fa0bce0a74289bca26e8b2ccdac8638cc4a356fbca61f137dbe3dc047b7a86af0be57abdaa79d713210ff569fa4477126c77558f040971c79dcc70423e0f000c1d1df618df28896984a708f1f94906273de74712cd0651324402135e3c2e453f819717a4afed1f06f13619aeedae487d4315e9fe5901ae5735ade055e43869d65bc6e51fd6d6f87e396abbf1fe9681ee8d4f6750911a8fda5437450d14bed13c4cac25d4c594a7e32dd6a3826b15bda9383652ce000b45dc1d1b4c13143203082bc03894fcaec44c785ab965e7f3090490336604143b9d0462bce1bae5379f68d1e898e6807c679adde4edd37e63e671d041eb57fa44bf6a5945797c7e5c26ee2ac566e63bf8a77dd94133983f0dcb774191f297bc00000000000002a00ce9943e6733ec701cc4cae35efd3810c272737434fa8ab79970c9adf04f14d67ab3c03301ce93ce2f738e2b83705aa67073b7186d25440227ab834700b3edf0f0fbf129b6a963d5c8869927ce2e8efc08cf0966d6ca2c7660438762da129f700ccd697e31773a1f1c995d0d9a57682d077b1ed705b7e0f7fc677f85110fc72b7b7f496288df7147aa4b434f104a63c174cdf4b0dd5448bce4243863d916f14d82b54512fd4c1f348e93beade78e035e2061ed819ba4a2cdfba7fcaa916301ea3754a11b850eada8c35378b86289e19e480d31534804a6cd7bd24eb41673420ded750fe16dd85f474e867e396fdc3e961cdcfdb7a16c158e3d06de5415f99d88c4e7f7b40c4e962a2f4912dad0bd36166169dbaaa783c146e1191f5d28802f6b2f81d93b64a8d9731560d87652e6eb2235abcb7fca8e91200531ceae4275dc7cc42ab7e7d077aacf863f8aad114716242688f059f3582d2ef2b8a09a15f8e861bc1092b828bbcdef4d8eb62fbd03e1c07763f9febcb161434884419743f82f244ea204c0ca7c1522b0d4e140fa3c1fd82cc5a35699acf2f9d6b6057983a98fefa57d2c7cf18850bdf0083362109462d40c09784c2771b6f0436d80c449428ddfab31a88afb44ba415c82b948284fba9841786f26348b4f8d6a142e7d2da2a84332ea47e47af79fdcf6105d30cb30f97819bb1b72eebff5a625a616c384d62821945c04e5deaac968d6a4f866a85653d60317b492c275e3a78d9129df519f273bad51779f83194ec59a4c464018da2b9600ffe83b0155272193e3b26a4b1c43f80c9138e73106cfd098a773f4d47994070e793c34e1341aa66892f532bff995ead1ac4c483dd69b7572d9df783abd997758b05b4920a8a196b3c53814c19524ee73852c55cc8a4d4810faacbf00e234b8756acebcdcaaf34ae1dd32ebd4572214976ca3e6fc088dcfec2c156f2634ca0634f5fda04d4980139b75c1d2076bca2171ce2ae184c39bfe7f9ff30d8be1acfe35617f39db050a236ea460affdcf48f2ee78d71e478d03838b1fb6f40165457c00000000000002a0ccd4dad8efc86fe0f392430f422527024581a78d230cf849f9de1af2dbd50c1352ca2107830bd05896c95fc346d2ba80308f4a8bf05211de73fb7a7922e626380649b8b78a9346fa09e9627ae77ae5da041435ffe2eb4c4d38b6d2a600675a56048ce6010de6bb84961626095208d0dc06c5e2b3d5bcaa49b122aec1cd331ed5ffdf4dff38526bf6264d397e9f5552e14e63f2a608d0ba9b3825d0152fa82aef40b5e6076bba8b9be3e9784a5e9c911274455ee807660c51f5c8d8f4e17a9d50405223d439c5977a43a8df459e175ce0364955ebadb423b11af690f047783bec40fa4483c6480f81aed3e07af7bf7f560416869b0591e2d8a9fee259b186a4dde02e50ae2999b3294a2a470b36aaeae015ebbd1d321c71450d68a4665dda9df6590e63f997f767ce24ef739285e4a36408d8918a02bcd0ee3588e61d91fe78a7df3c92cc9797277effa22f2380a1b3f41fddbe1899c4f1cdf583512fb989268bd5b12127335916089d7b81a91b4d469e64f14ff4010f669288aca4e7f0d9bd2ce7925c1a68e0bc9cb7b1828771eb86fc2873d65513ed14f06ce02b025817662ed9dc4aeba78a497f30a4ede8c12ff2de23df2a22e149cfea14e3f6adc419392576aa1801883a08737fbd28ddc039804e561e0a021c5496d8eefae2093e79c5825de34651256f14a10a4a530a49610bec50b62b5812595a74181adc9e2382995d8244ab5983c5d9d445632a6f6038b61a0b87a669cc34f1e5f50fdd35bfc7f28c6e9c5e67c46e947fe0ad19885a3c75fb0e5d3c4f56984a3e5ed88c470c6f57d00b6797511f963bbb31d34aae389527ea0a033a9c565cb710d2119fc31dd7d9b08ba441f370e995d049cb6ce5480989b7495a3d1ab212e8e131218a591a2143c4e1d28f920734abc56a9464269486c4a45d0b85ffec0c7e5a60ba7105aae9be918b99ef3eddfde31029fc1c4cad4790566e50af18ff3bfde4e905a9d1a5f8e411bb921e7bade9eb9a726b5f6121e482ee1e6215ca249c03eb183ec87de3adccf7ebf34b9f62d8c066c79e0e428544408600000000000002a0fe39304a6886ce667418c28aaf08b6ee439333be04d92b4a5bca3516310756bd18247af6d4c35c5cef042e1db72ddaae0fa0f300d534b3a1fa457344114a0c9d0acaf4bae363eec185fb7106c9931e500031c7cd041051cb66b0c99408c0f66970150745ae5f1877bddef1acd05d39880d6315bbcf59e17dbe776df3e7adb7408c1159eb9b61d5041018f1dac6dd8aab7d49102234715e45c54faeffa6570dcb828415fcc72f6a85840ca74380cd627a254a5c1f9ca4ff87be44340c766ad94cdadbf8ffc7d148ef0f3bf54034ad115e4c1441b4276797845bf2a418a4d78a70c75a7ced405d6861830301ecb610a9e815e2745a7e0cbe7ba59c16d1eb74384225bf34415137ab2670e5536928c8a9960cb196013d0e4db3f2470c96fe1fef7673cd9ab94f7304938d2c7194581f8d7e24f531436e097150a991ffb8807c81aec5ef4883d26047e93ef6d5603ccf56941219c7e621b9ca2501dd448d5ea059ca6bdfed93dfdcbec3c96de38952c8582c4144804a02c50a608a0ddbaec6ce3a66ebe5a01a46a54cf879f2453f73ccaed21a72f257d026f5f8884e1e2693aeab5fe7b262084e4455aa1d54247324f0ae260aa625e0e52869192dc0e677c16200d3b94843352a4159b7c35fe00d883793ca4ca558a236bc57d4c20d24cbb55a824e7130037bc3ddeca881228889918f756e3da6aae9916cccd3248fafaa88abd9cb520f20548e5e710a13d90eedccac7fc002a43bb0233e619e8faa508f4b991465265f5dca221c4183cfd94d70b392b5d80fcddae71295e200803c5b5b1912e6eae771836dee29429d37105f8e4f518d64002d175017fdbd879b7cb8a9342e34586c235f1c704103ed612d6a5231f874405769f80496f450f3b9e538b60795b30a97b2f801be64e6adda357c4e283e06c84b21d2e4399c3c0a71201ac11444795294df2084f6166c3be1785a35410b8efa1a03aa57a1dafa855fc170e850f7907561453d301215123e62576904f082ebf425a2a0fc9fda2aebc1dc91aa94b57d44b938f7f5bf71108f919da54284ca87da00000000000002a0a84d2981d0aaf871639200394303c5d16dd7b5295d901e9c88d80df1030911abca64c2063dfb216a3d49bc338b6eaba531dcd9e6810f748d7cb3325a49ed4371ab0b4ba4dd9124ec6e72c0cbfacd14840d5e2d54b28db97267b2b7b33ebce17c3438cb7a9e42c3c823017fbe30312590043cbd524c0d2d0ed71faeb1a3f5ea4b538347065b27a365d770eeb9aa010337039caccdbea7bda7aa1b05184e4b70b6be30d5e6c52d1b3fbff67aaab651bb664e8db59e02fbcb452ff5f403e402677a3a98566a7f0e1c62f6ab132cb69437f4030aedec9bae00287c7e2c2307e3d9f4fed4e02e0e2f65c695190cbde2e68c8e5b5de9b01324b760f1a089099bd403c2301c271e7e86ed0dae922d07b35d6254419590ac5874f32dc73eff7a20fd76e4aefa752fbdf8cf01d6bfee74a9c8899604bed304c5fee6732169cec0c95096715ab8de3e6211e7b2a8957ab8520fb2aa0282c0b6d7a0e58eb2cab7596000c4c9eeb889e6b88a892f7e35aef96ac1891255f4141f32e696add273ad4447794afe35ba84483e77c651a598fd2ad3a6c68e420355573e9e6ebeb1a2f1a57beb840c80b9bb8f28e6fcfa6709a4b4e9644c983df2dea7b74584bc505a010ae0c758c70fb3660d9c0b69eee3903e2b1bc9cfaa51c66d30542479de96f9134161b2660aedd53a6298bdada20296f3b2a93d289c4bcb1cde151f902bbfa36cf34f2018a2b989de9c63c892b118661e9c3750209e08597efff33e520888b40a7d4fc11e448bfad9fb659a8aec8458d2c8070ae4d803ffdadfc2109a11d4d171afa9ac56979b0044935c51f3ca84ace19f0e7110560ff6ede59aafd292ad7b181794db25e86a8f3fd27f9517b65a1b4b2dd0b970ad242675eea20f04f1ccc294f3573302f24153535ca99da874f6a34941dc6cf0b05fee27ab8c2dba41caff887c95ceaeb57e62d4d158678b7dd48c3e40fe9d75c4299a1c05cd620e605a23850a2c4777d6949ffb89e20b47226a096ada5bd626543de325897d619907f6c9e25de588932bcbff096d03a04c99120357ec7432d46400000000000002a06e47e25cbb69bcc2be30e91b77bac33bf6c41407455f1bd452ba0b75f265037a151109d91d97601381d5c61248c955a773b44edfe735aeeee6f7acfbe35ff89840a2f8432babe171ef53c42f832a5bee08fc86b3ccd6b028f3e2488f3bff894a6cbb892ef8fc00271bdba50a79de379a0d230e21af59fc93c1d4fc9fd540b4b9ac962448e468f0150f42ce43c59962af5feef3dcd15d75b35c41e3e0c7a102506c8142d29313088938b4275a177f080804b81421c7a7eee8fcc558cca8a1f91a2b88f95742c6dd3805f6be50d55c9e603c2d8716982477ff02b47d8d364293666db8c63aef6d2b14e80db481726536ee0d5eb94be25225bc1a92db569557252a45687a7e0a1737735eb404c35365ab705f7aa79b1c35faec4007ccb8249c7729c77284fb96b73667e82a6eab3855c4d00928672682244be9f6133864d015dd77d58eeb065993c3d5a471b7e3dbcb65e21e0247efd7dc89e1e52ec8c4a8fd3c8a02fd9d21c266acd612c1f4940f5a5540738ec2ccdae7efd633bfe6c9211469d25370d7702da4b35b02f8fcaa5561212c5dacc585713a31c468dfe50ffdf0da1b3846d1c3ddfd5f645db7992e829fe1384dbb17048f0334adea4ee7bfc7f918b225322db2caba05da7a0911ff6f5b128a04c4d14e22149981ee391d49e17e28fda892492e9bfba4c68a49105cc37f78f22f7cf2bb4ef3f40d0ac79a193ae633ba1800fcd444993f882b6adf785a64ff2c04d533aea3c29c22c99aeb78ad438ee538d4b581adfae0c2ecc8115eb849771f025046b1d9a7522c9d26e747407c4783ba6a2bfebd2ebf6345334ee79b32cf940787c38daef3eba3828f2e87b3e930dd462f0e2273c6c91689ef159e38172e7b6de1f0905a8d809701c061d841de26c6082880e2e19e756272290a58ded88640501f693398c9a30ce17264ec14a6f36103a24bf7647432f9e5b232441b7a9f0a47e99b084cbefcd65b50a70b68d144dbf705b54aecaa5de19865fea7ac153ac60baccf3de6ce8df38af3a7f62843c0fcff301d45702348b86d1855d509e3381a00000000000002a0c0d266f695134f644cad85625c05e0a703c66bb2501887c9c29a4236c0115c677e37644b46824893e9b1d83ba48831b476960dbc47ac8d30ba151219e2f2ed8ba19638305f02e19b4a767213f1a195800cd6c5eaac02ae2122766d9f824eb16820b140dd088260914fddf8966f7bdf7d0eb2627fd84e40d9b48b13c0431f8205632d86a73a12d2dfa81ca08e9cc0fdb512c38b37d1433ab5432cf7049584446ff0f4e3c9126214828095904a3266779e7a0b90c2c4158a0ea52f9f94afc4267fdecfa1c825df87dff4f1d7fa9e717bae734f288b2f8eea0a4e8385a12dcfb6b5bd3aa2ab449be39ebe521057c8ce6bee4daf0f1464972b58379e327173fd9779b87ce3372a49da68e5bd488b4af3888258619522d13f2e1fc0b4f0e1742527a683f4ffa53c5e55c397de706a7dcad05e2a5b4d07b7b42f58202ebb6460c748e7d8fd8f5842bd44567bb7c0dae3207aac75e27dc7f62575c6d774b45372765f0f9b38fd182f7039e5742473d5de1f9b683350a0fa2c3f17f1e5a3c5520e0d82c35b8d67f2ea4ae346afefd3f70b50dbee40ee7d27124f2b7a46ba7a339d5413ccddd855d1cd93b9d5865d3e1d53d90e5d8927805f15a24049e28a6f24faacacaa23b4e1f5320adec8b0f5c11342783b14370c42f97837400000000000002a0edd6abce29e466ce94b2f6bc4e44602e0d3049c8abb15eb656dd508ad5dc07ffc0aaa21bb70db473875d5e6bc62031b2000000000000000a4af7897fe61757b7b93225fa413194ebd19e4f7108762c2a7f6dc7afc72a166ce52012bf74273636bfd01ae7fd1f1e087bcba0e7bab5e39d0334ffad4ff87d56a80ad58fa22ceb449073b2a8daab060018d0d9534b32e8583e13ff7a707b9e9713908b3c8ed1de9794e41e310d93a143da891ab6e56c1652fe82c5d840200f9c328f87facd33af4f2cea92cab215ee9b45aab94a16be395c8a4a9c9cf903a8519734119042901886732da8ae2c8ae8af0000000000000001edd6abce29e466ce94b2f6bc4e44602e0d3049c8abb15eb656dd508ad5dc07ffc0aaa21bb70db473875d5e6bc62031b2
I think that last line is a DBC representing 5 Joshtoshi…
but checking a specific wallet balance is still WIP
willie@gagarin:~/projects/maidsafe/safe_network$ safe wallet balance b9d903363dd703463e289a5714c8136e98b89a1e1ebd2d4beae31cc42473e24184bb0cc4b464dd301d2b231c632596d7
error: unexpected argument 'b9d903363dd703463e289a5714c8136e98b89a1e1ebd2d4beae31cc42473e24184bb0cc4b464dd301d2b231c632596d7' found
Usage: safe wallet balance
For more information, try '--help'.
Your wallet address can be found here
which is handy if the long string you are looking for has scrolled way off the top of the terminal.
Love joshtoshi but still think the name for subunits should dirvine’s
" Buddy , can you spare a dirvine?"