From aef4329efa9a860b7b46b690876ded088189684e Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Wed, 6 Mar 2024 15:53:29 -0500 Subject: [PATCH 01/22] use 127.0.0.1 for gelf_test's logging.json endpoint --- tests/gelf_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/gelf_test.py b/tests/gelf_test.py index ebad30fd39..d0ed7f1888 100755 --- a/tests/gelf_test.py +++ b/tests/gelf_test.py @@ -40,8 +40,8 @@ "name": "net", "type": "gelf", "args": { - "endpoint": "localhost:GELF_PORT", - "host": "localhost", + "endpoint": "127.0.0.1:GELF_PORT", + "host": "127.0.0.1", "_network": "testnet" }, "enabled": true From 5d270fd649762a6661d1fa115e6ff1579e732160 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Fri, 8 Mar 2024 07:40:30 -0600 Subject: [PATCH 02/22] GH-2293 Use FC_LOG_AND_RETHROW to provide better error reporting. --- libraries/chain/snapshot.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libraries/chain/snapshot.cpp b/libraries/chain/snapshot.cpp index 79e96e716f..32478bf936 100644 --- a/libraries/chain/snapshot.cpp +++ b/libraries/chain/snapshot.cpp @@ -257,10 +257,7 @@ void istream_snapshot_reader::validate() const { ("expected", expected_version)("actual", actual_version)); while (validate_section()) {} - } catch( const std::exception& e ) { \ - snapshot_exception fce(FC_LOG_MESSAGE( warn, "Binary snapshot validation threw IO exception (${what})",("what",e.what()))); - throw fce; - } + } FC_LOG_AND_RETHROW() } bool istream_snapshot_reader::validate_section() const { From c241ae5257833f09bbc572720f57aaa1cf19c9d7 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:33:08 -0500 Subject: [PATCH 03/22] guard against calling memcpy() with NULL src --- .../webassembly/runtimes/eos-vm-oc/compile_trampoline.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/chain/webassembly/runtimes/eos-vm-oc/compile_trampoline.cpp b/libraries/chain/webassembly/runtimes/eos-vm-oc/compile_trampoline.cpp index 11467afd27..0bd7f2cc9a 100644 --- a/libraries/chain/webassembly/runtimes/eos-vm-oc/compile_trampoline.cpp +++ b/libraries/chain/webassembly/runtimes/eos-vm-oc/compile_trampoline.cpp @@ -122,7 +122,8 @@ void run_compile(wrapped_fd&& response_sock, wrapped_fd&& wasm_code, uint64_t st if(base_offset + data_segment.data.size() > initial_mem.size()) initial_mem.resize(base_offset + data_segment.data.size(), 0x00); - memcpy(initial_mem.data() + base_offset, data_segment.data.data(), data_segment.data.size()); + if(data_segment.data.size()) + memcpy(initial_mem.data() + base_offset, data_segment.data.data(), data_segment.data.size()); } result_message.initdata_prologue_size = prologue.end() - prologue_it; From f2111dbef37b4b52536bb67100f72840057ac634 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:33:38 -0500 Subject: [PATCH 04/22] avoid pointer arithmetic overflow --- libraries/chain/webassembly/runtimes/eos-vm-oc/memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/chain/webassembly/runtimes/eos-vm-oc/memory.cpp b/libraries/chain/webassembly/runtimes/eos-vm-oc/memory.cpp index f7516f4a50..38c0f3e1e7 100644 --- a/libraries/chain/webassembly/runtimes/eos-vm-oc/memory.cpp +++ b/libraries/chain/webassembly/runtimes/eos-vm-oc/memory.cpp @@ -40,7 +40,7 @@ memory::memory(uint64_t sliced_pages) { uintptr_t* const intrinsic_jump_table = reinterpret_cast(zeropage_base - first_intrinsic_offset); const intrinsic_map_t& intrinsics = get_intrinsic_map(); for(const auto& intrinsic : intrinsics) - intrinsic_jump_table[-intrinsic.second.ordinal] = (uintptr_t)intrinsic.second.function_ptr; + intrinsic_jump_table[-(int)intrinsic.second.ordinal] = (uintptr_t)intrinsic.second.function_ptr; } memory::~memory() { From a0b41fca2424e4a4fead0bcaf01f72009197cc81 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:49:40 -0400 Subject: [PATCH 05/22] don't enable EOS VM OC's vm_limit when ASAN or UBSAN is enabled --- .../eosio/chain/webassembly/eos-vm-oc/config.hpp | 8 ++++++++ unittests/eosvmoc_limits_tests.cpp | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/libraries/chain/include/eosio/chain/webassembly/eos-vm-oc/config.hpp b/libraries/chain/include/eosio/chain/webassembly/eos-vm-oc/config.hpp index c7278931e4..558d2b7305 100644 --- a/libraries/chain/include/eosio/chain/webassembly/eos-vm-oc/config.hpp +++ b/libraries/chain/include/eosio/chain/webassembly/eos-vm-oc/config.hpp @@ -9,6 +9,10 @@ #include +#ifndef __has_feature +#define __has_feature(x) 0 +#endif + namespace eosio { namespace chain { namespace eosvmoc { struct config { @@ -20,7 +24,11 @@ struct config { // libtester disables the limits in all tests, except enforces the limits // in the tests in unittests/eosvmoc_limits_tests.cpp. std::optional cpu_limit {20u}; +#if __has_feature(undefined_behavior_sanitizer) || __has_feature(address_sanitizer) + std::optional vm_limit; // UBSAN & ASAN can add massive virtual memory usage; don't enforce vm limits when either of them are enabled +#else std::optional vm_limit {512u*1024u*1024u}; +#endif std::optional stack_size_limit {16u*1024u}; std::optional generated_code_size_limit {16u*1024u*1024u}; }; diff --git a/unittests/eosvmoc_limits_tests.cpp b/unittests/eosvmoc_limits_tests.cpp index 72ec3c0700..1614ecd974 100644 --- a/unittests/eosvmoc_limits_tests.cpp +++ b/unittests/eosvmoc_limits_tests.cpp @@ -98,6 +98,8 @@ BOOST_AUTO_TEST_CASE( limits_not_enforced ) { try { limit_not_violated_test(eosvmoc_config); } FC_LOG_AND_RETHROW() } +// UBSAN & ASAN can add massive virtual memory usage; skip this test when either are enabled +#if !__has_feature(undefined_behavior_sanitizer) && !__has_feature(address_sanitizer) // test VM limit are checked BOOST_AUTO_TEST_CASE( vm_limit ) { try { eosvmoc::config eosvmoc_config = make_eosvmoc_config_without_limits(); @@ -111,6 +113,14 @@ BOOST_AUTO_TEST_CASE( vm_limit ) { try { limit_not_violated_test(eosvmoc_config); } FC_LOG_AND_RETHROW() } +//make sure vm_limit is populated for a default constructed config (what nodeos will use) +BOOST_AUTO_TEST_CASE( check_config_default_vm_limit ) { try { + eosvmoc::config eosvmoc_config; + + BOOST_REQUIRE(eosvmoc_config.vm_limit); +} FC_LOG_AND_RETHROW() } +#endif + // test stack size limit is checked BOOST_AUTO_TEST_CASE( stack_limit ) { try { eosvmoc::config eosvmoc_config = make_eosvmoc_config_without_limits(); From 62e95b342d73f4dfd71befaa9dc2ffd7d1e153c4 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:52:03 -0400 Subject: [PATCH 06/22] bump abieos, appbase, bn256 & eos-vm to their main HEAD w/ UB fixes --- libraries/appbase | 2 +- libraries/eos-vm | 2 +- libraries/libfc/libraries/bn256 | 2 +- tests/abieos | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/appbase b/libraries/appbase index b75b31e14f..d7a7580dd7 160000 --- a/libraries/appbase +++ b/libraries/appbase @@ -1 +1 @@ -Subproject commit b75b31e14f966fa3de6246e120dcba36c6ce5264 +Subproject commit d7a7580dd7ff1d8e7979157abc869865a3a43220 diff --git a/libraries/eos-vm b/libraries/eos-vm index 33e91ebf90..ee0b142058 160000 --- a/libraries/eos-vm +++ b/libraries/eos-vm @@ -1 +1 @@ -Subproject commit 33e91ebf90088152477b7e7795cf5c871e70cb5c +Subproject commit ee0b142058212073a78f71872dd54160ca69eb14 diff --git a/libraries/libfc/libraries/bn256 b/libraries/libfc/libraries/bn256 index eae77bf03d..b5adbb76d4 160000 --- a/libraries/libfc/libraries/bn256 +++ b/libraries/libfc/libraries/bn256 @@ -1 +1 @@ -Subproject commit eae77bf03dcf02579e967b0749ed5c175bd06c5a +Subproject commit b5adbb76d456e85385296a1388ba18f6f07d9d9e diff --git a/tests/abieos b/tests/abieos index 815fca5fb3..ae6854ea7b 160000 --- a/tests/abieos +++ b/tests/abieos @@ -1 +1 @@ -Subproject commit 815fca5fb3cd632eaffff098b14809a99229bebc +Subproject commit ae6854ea7bad22f3dc4554a60124319af7e6cd30 From b47a64c742bcad7140e7a95b55e095badfb25369 Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:49:46 -0400 Subject: [PATCH 07/22] fix net_plugin_impl dtor order --- plugins/net_plugin/net_plugin.cpp | 105 ++++++++++++------------------ 1 file changed, 41 insertions(+), 64 deletions(-) diff --git a/plugins/net_plugin/net_plugin.cpp b/plugins/net_plugin/net_plugin.cpp index d26ad5b3e4..63d5e3532b 100644 --- a/plugins/net_plugin/net_plugin.cpp +++ b/plugins/net_plugin/net_plugin.cpp @@ -444,10 +444,13 @@ namespace eosio { class net_plugin_impl : public std::enable_shared_from_this, public auto_bp_peering::bp_connection_manager { public: + uint16_t thread_pool_size = 4; + eosio::chain::named_thread_pool thread_pool; + std::atomic current_connection_id{0}; unique_ptr< sync_manager > sync_master; - unique_ptr< dispatch_manager > dispatcher; + dispatch_manager dispatcher {thread_pool.get_executor()}; connections_manager connections; /** @@ -488,11 +491,11 @@ namespace eosio { alignas(hardware_destructive_interference_size) fc::mutex expire_timer_mtx; - unique_ptr expire_timer GUARDED_BY(expire_timer_mtx); + boost::asio::steady_timer expire_timer GUARDED_BY(expire_timer_mtx) {thread_pool.get_executor()}; alignas(hardware_destructive_interference_size) fc::mutex keepalive_timer_mtx; - unique_ptr keepalive_timer GUARDED_BY(keepalive_timer_mtx); + boost::asio::steady_timer keepalive_timer GUARDED_BY(keepalive_timer_mtx) {thread_pool.get_executor()}; alignas(hardware_destructive_interference_size) std::atomic in_shutdown{false}; @@ -500,9 +503,6 @@ namespace eosio { alignas(hardware_destructive_interference_size) compat::channels::transaction_ack::channel_type::handle incoming_transaction_ack_subscription; - uint16_t thread_pool_size = 4; - eosio::chain::named_thread_pool thread_pool; - boost::asio::deadline_timer accept_error_timer{thread_pool.get_executor()}; @@ -1452,7 +1452,7 @@ namespace eosio { conn_node_id = fc::sha256(); } if( has_last_req && !shutdown ) { - my_impl->dispatcher->retry_fetch( shared_from_this() ); + my_impl->dispatcher.retry_fetch( shared_from_this() ); } peer_lib_num = 0; peer_requested.reset(); @@ -1966,7 +1966,7 @@ namespace eosio { // called from connection strand void connection::fetch_timeout( boost::system::error_code ec ) { if( !ec ) { - my_impl->dispatcher->retry_fetch( shared_from_this() ); + my_impl->dispatcher.retry_fetch( shared_from_this() ); } else if( ec != boost::asio::error::operation_aborted ) { // don't log on operation_aborted, called on destroy peer_elog( this, "setting timer for fetch request got error ${ec}", ("ec", ec.message() ) ); } @@ -2405,7 +2405,7 @@ namespace eosio { const block_id_type& id = msg.known_blocks.ids.back(); peer_ilog( c, "notice_message, pending ${p}, blk_num ${n}, id ${id}...", ("p", msg.known_blocks.pending)("n", block_header::num_from_id(id))("id",id.str().substr(8,16)) ); - if( !my_impl->dispatcher->have_block( id ) ) { + if( !my_impl->dispatcher.have_block( id ) ) { verify_catchup( c, msg.known_blocks.pending, id ); } else { // we already have the block, so update peer with our view of the world @@ -3062,7 +3062,7 @@ namespace eosio { const block_id_type blk_id = bh.calculate_id(); const uint32_t blk_num = last_received_block_num = block_header::num_from_id(blk_id); // don't add_peer_block because we have not validated this block header yet - if( my_impl->dispatcher->have_block( blk_id ) ) { + if( my_impl->dispatcher.have_block( blk_id ) ) { peer_dlog( this, "canceling wait, already received block ${num}, id ${id}...", ("num", blk_num)("id", blk_id.str().substr(8,16)) ); my_impl->sync_master->sync_recv_block( shared_from_this(), blk_id, blk_num, false ); @@ -3163,8 +3163,8 @@ namespace eosio { } return true; } - bool have_trx = my_impl->dispatcher->have_txn( ptr->id() ); - my_impl->dispatcher->add_peer_txn( ptr->id(), ptr->expiration(), connection_id ); + bool have_trx = my_impl->dispatcher.have_txn( ptr->id() ); + my_impl->dispatcher.add_peer_txn( ptr->id(), ptr->expiration(), connection_id ); if( have_trx ) { peer_dlog( this, "got a duplicate transaction - dropping" ); @@ -3178,18 +3178,6 @@ namespace eosio { void net_plugin_impl::plugin_shutdown() { in_shutdown = true; - connections.stop_conn_timers(); - { - fc::lock_guard g( expire_timer_mtx ); - if( expire_timer ) - expire_timer->cancel(); - } - { - fc::lock_guard g( keepalive_timer_mtx ); - if( keepalive_timer ) - keepalive_timer->cancel(); - } - connections.close_all(); thread_pool.stop(); } @@ -3569,7 +3557,7 @@ namespace eosio { case catch_up: break; case normal: { - my_impl->dispatcher->recv_notice( shared_from_this(), msg, false ); + my_impl->dispatcher.recv_notice( shared_from_this(), msg, false ); } } @@ -3593,7 +3581,7 @@ namespace eosio { break; } case normal : { - my_impl->dispatcher->recv_notice( shared_from_this(), msg, false ); + my_impl->dispatcher.recv_notice( shared_from_this(), msg, false ); break; } default: { @@ -3699,12 +3687,12 @@ namespace eosio { // called from connection strand void connection::handle_message( const block_id_type& id, signed_block_ptr ptr ) { // post to dispatcher strand so that we don't have multiple threads validating the block header - my_impl->dispatcher->strand.post([id, c{shared_from_this()}, ptr{std::move(ptr)}, cid=connection_id]() mutable { + my_impl->dispatcher.strand.post([id, c{shared_from_this()}, ptr{std::move(ptr)}, cid=connection_id]() mutable { controller& cc = my_impl->chain_plug->chain(); // may have come in on a different connection and posted into dispatcher strand before this one - if( my_impl->dispatcher->have_block( id ) || cc.fetch_block_state_by_id( id ) ) { // thread-safe - my_impl->dispatcher->add_peer_block( id, c->connection_id ); + if( my_impl->dispatcher.have_block( id ) || cc.fetch_block_state_by_id( id ) ) { // thread-safe + my_impl->dispatcher.add_peer_block( id, c->connection_id ); c->strand.post( [c, id]() { my_impl->sync_master->sync_recv_block( c, id, block_header::num_from_id(id), false ); }); @@ -3728,7 +3716,7 @@ namespace eosio { if( exception ) { c->strand.post( [c, id, blk_num=ptr->block_num()]() { my_impl->sync_master->rejected_block( c, blk_num ); - my_impl->dispatcher->rejected_block( id ); + my_impl->dispatcher.rejected_block( id ); }); return; } @@ -3739,8 +3727,8 @@ namespace eosio { if( block_num != 0 ) { fc_dlog( logger, "validated block header, broadcasting immediately, connection ${cid}, blk num = ${num}, id = ${id}", ("cid", cid)("num", block_num)("id", bsp->id) ); - my_impl->dispatcher->add_peer_block( bsp->id, cid ); // no need to send back to sender - my_impl->dispatcher->bcast_block( bsp->block, bsp->id ); + my_impl->dispatcher.add_peer_block( bsp->id, cid ); // no need to send back to sender + my_impl->dispatcher.bcast_block( bsp->block, bsp->id ); } app().executor().post(priority::medium, exec_queue::read_write, [ptr{std::move(ptr)}, bsp{std::move(bsp)}, id, c{std::move(c)}]() mutable { @@ -3765,8 +3753,8 @@ namespace eosio { try { if( blk_num <= lib || cc.fetch_block_by_id(blk_id) ) { c->strand.post( [sync_master = my_impl->sync_master.get(), - dispatcher = my_impl->dispatcher.get(), c, blk_id, blk_num]() { - dispatcher->add_peer_block( blk_id, c->connection_id ); + &dispatcher = my_impl->dispatcher, c, blk_id, blk_num]() { + dispatcher.add_peer_block( blk_id, c->connection_id ); sync_master->sync_recv_block( c, blk_id, blk_num, true ); }); return; @@ -3811,12 +3799,12 @@ namespace eosio { if( accepted ) { ++unique_blocks_rcvd_count; - boost::asio::post( my_impl->thread_pool.get_executor(), [dispatcher = my_impl->dispatcher.get(), c, blk_id, blk_num]() { + boost::asio::post( my_impl->thread_pool.get_executor(), [&dispatcher = my_impl->dispatcher, c, blk_id, blk_num]() { fc_dlog( logger, "accepted signed_block : #${n} ${id}...", ("n", blk_num)("id", blk_id.str().substr(8,16)) ); - dispatcher->add_peer_block( blk_id, c->connection_id ); + dispatcher.add_peer_block( blk_id, c->connection_id ); while (true) { // attempt previously unlinkable blocks where prev_unlinkable->block->previous == blk_id - unlinkable_block_state prev_unlinkable = dispatcher->pop_possible_linkable_block(blk_id); + unlinkable_block_state prev_unlinkable = dispatcher.pop_possible_linkable_block(blk_id); if (!prev_unlinkable.block) break; fc_dlog( logger, "retrying previous unlinkable block #${n} ${id}...", @@ -3827,21 +3815,21 @@ namespace eosio { }); } }); - c->strand.post( [sync_master = my_impl->sync_master.get(), dispatcher = my_impl->dispatcher.get(), c, blk_id, blk_num]() { - dispatcher->recv_block( c, blk_id, blk_num ); + c->strand.post( [sync_master = my_impl->sync_master.get(), &dispatcher = my_impl->dispatcher, c, blk_id, blk_num]() { + dispatcher.recv_block( c, blk_id, blk_num ); sync_master->sync_recv_block( c, blk_id, blk_num, true ); }); } else { - c->strand.post( [sync_master = my_impl->sync_master.get(), dispatcher = my_impl->dispatcher.get(), c, + c->strand.post( [sync_master = my_impl->sync_master.get(), &dispatcher = my_impl->dispatcher, c, block{std::move(block)}, blk_id, blk_num, reason]() mutable { if( reason == unlinkable || reason == no_reason ) { - dispatcher->add_unlinkable_block( std::move(block), blk_id ); + dispatcher.add_unlinkable_block( std::move(block), blk_id ); } // reason==no_reason means accept_block() return false because we are producing, don't call rejected_block which sends handshake if( reason != no_reason ) { sync_master->rejected_block( c, blk_num ); } - dispatcher->rejected_block( blk_id ); + dispatcher.rejected_block( blk_id ); }); } } @@ -3850,8 +3838,8 @@ namespace eosio { void net_plugin_impl::start_expire_timer() { if( in_shutdown ) return; fc::lock_guard g( expire_timer_mtx ); - expire_timer->expires_from_now( txn_exp_period); - expire_timer->async_wait( [my = shared_from_this()]( boost::system::error_code ec ) { + expire_timer.expires_from_now( txn_exp_period); + expire_timer.async_wait( [my = shared_from_this()]( boost::system::error_code ec ) { if( !ec ) { my->expire(); } else { @@ -3866,8 +3854,8 @@ namespace eosio { void net_plugin_impl::ticker() { if( in_shutdown ) return; fc::lock_guard g( keepalive_timer_mtx ); - keepalive_timer->expires_from_now(keepalive_interval); - keepalive_timer->async_wait( [my = shared_from_this()]( boost::system::error_code ec ) { + keepalive_timer.expires_from_now(keepalive_interval); + keepalive_timer.async_wait( [my = shared_from_this()]( boost::system::error_code ec ) { my->ticker(); if( ec ) { if( my->in_shutdown ) return; @@ -3886,10 +3874,6 @@ namespace eosio { } void net_plugin_impl::start_monitors() { - { - fc::lock_guard g( expire_timer_mtx ); - expire_timer = std::make_unique( my_impl->thread_pool.get_executor() ); - } connections.start_conn_timers(); start_expire_timer(); } @@ -3897,8 +3881,8 @@ namespace eosio { void net_plugin_impl::expire() { auto now = time_point::now(); uint32_t lib_num = get_chain_lib_num(); - dispatcher->expire_blocks( lib_num ); - dispatcher->expire_txns(); + dispatcher.expire_blocks( lib_num ); + dispatcher.expire_txns(); fc_dlog( logger, "expire_txns ${n}us", ("n", time_point::now() - now) ); start_expire_timer(); @@ -3908,9 +3892,9 @@ namespace eosio { void net_plugin_impl::on_accepted_block_header(const signed_block_ptr& block, const block_id_type& id) { update_chain_info(); - dispatcher->strand.post([block, id]() { + dispatcher.strand.post([block, id]() { fc_dlog(logger, "signaled accepted_block_header, blk num = ${num}, id = ${id}", ("num", block->block_num())("id", id)); - my_impl->dispatcher->bcast_block(block, id); + my_impl->dispatcher.bcast_block(block, id); }); } @@ -3927,14 +3911,14 @@ namespace eosio { // called from application thread void net_plugin_impl::transaction_ack(const std::pair& results) { - boost::asio::post( my_impl->thread_pool.get_executor(), [dispatcher = my_impl->dispatcher.get(), results]() { + boost::asio::post( my_impl->thread_pool.get_executor(), [&dispatcher = my_impl->dispatcher, results]() { const auto& id = results.second->id(); if (results.first) { fc_dlog( logger, "signaled NACK, trx-id = ${id} : ${why}", ("id", id)( "why", results.first->to_detail_string() ) ); - dispatcher->rejected_transaction(results.second); + dispatcher.rejected_transaction(results.second); } else { fc_dlog( logger, "signaled ACK, trx-id = ${id}", ("id", id) ); - dispatcher->bcast_transaction(results.second); + dispatcher.bcast_transaction(results.second); } }); } @@ -4272,8 +4256,6 @@ namespace eosio { app().quit(); } ); - dispatcher = std::make_unique( my_impl->thread_pool.get_executor() ); - if( !p2p_accept_transactions && p2p_addresses.size() ) { fc_ilog( logger, "\n" "***********************************\n" @@ -4321,11 +4303,6 @@ namespace eosio { } ); } - { - fc::lock_guard g( keepalive_timer_mtx ); - keepalive_timer = std::make_unique( thread_pool.get_executor() ); - } - incoming_transaction_ack_subscription = app().get_channel().subscribe( [this](auto&& t) { transaction_ack(std::forward(t)); }); From 4074b15a7672c71df2f40932d7e8f37573e25afd Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Mon, 11 Mar 2024 21:23:03 -0400 Subject: [PATCH 08/22] specialized to_variant() for chainbase::environment's packedness --- .../eosio/chain/chainbase_environment.hpp | 25 +++++++++++++++++++ plugins/chain_plugin/chain_plugin.cpp | 10 +------- programs/leap-util/actions/chain.cpp | 11 +------- 3 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 libraries/chain/include/eosio/chain/chainbase_environment.hpp diff --git a/libraries/chain/include/eosio/chain/chainbase_environment.hpp b/libraries/chain/include/eosio/chain/chainbase_environment.hpp new file mode 100644 index 0000000000..9f858655fb --- /dev/null +++ b/libraries/chain/include/eosio/chain/chainbase_environment.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include + +// reflect chainbase::environment for --print-build-info option +FC_REFLECT_ENUM(chainbase::environment::os_t, + (OS_LINUX) (OS_MACOS) (OS_WINDOWS) (OS_OTHER)) +FC_REFLECT_ENUM(chainbase::environment::arch_t, + (ARCH_X86_64) (ARCH_ARM) (ARCH_RISCV) (ARCH_OTHER)) + +namespace fc { + +void to_variant(const chainbase::environment& bi, variant& v) { + // the variant conversion ultimately binds a reference to each member, but chainbase::environment is packed making + // a reference to an unaligned variable UB. The boost_version is the only offender + unsigned aligned_boost_version = bi.boost_version; + v = fc::mutable_variant_object()("debug", bi.debug) + ("os", bi.os) + ("arch", bi.arch) + ("boost_version", aligned_boost_version) + ("compiler", bi.compiler); + +} + +} \ No newline at end of file diff --git a/plugins/chain_plugin/chain_plugin.cpp b/plugins/chain_plugin/chain_plugin.cpp index c3362c411d..f353b66803 100644 --- a/plugins/chain_plugin/chain_plugin.cpp +++ b/plugins/chain_plugin/chain_plugin.cpp @@ -16,11 +16,10 @@ #include #include #include +#include #include -#include - #include #include #include @@ -29,13 +28,6 @@ #include #include -// reflect chainbase::environment for --print-build-info option -FC_REFLECT_ENUM( chainbase::environment::os_t, - (OS_LINUX)(OS_MACOS)(OS_WINDOWS)(OS_OTHER) ) -FC_REFLECT_ENUM( chainbase::environment::arch_t, - (ARCH_X86_64)(ARCH_ARM)(ARCH_RISCV)(ARCH_OTHER) ) -FC_REFLECT(chainbase::environment, (debug)(os)(arch)(boost_version)(compiler) ) - const std::string deep_mind_logger_name("deep-mind"); eosio::chain::deep_mind_handler _deep_mind_log; diff --git a/programs/leap-util/actions/chain.cpp b/programs/leap-util/actions/chain.cpp index 9a12a3b21c..25e71e38ec 100644 --- a/programs/leap-util/actions/chain.cpp +++ b/programs/leap-util/actions/chain.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include @@ -19,15 +19,6 @@ using namespace eosio; using namespace eosio::chain; - -// reflect chainbase::environment for --print-build-info option -FC_REFLECT_ENUM(chainbase::environment::os_t, - (OS_LINUX) (OS_MACOS) (OS_WINDOWS) (OS_OTHER)) -FC_REFLECT_ENUM(chainbase::environment::arch_t, - (ARCH_X86_64) (ARCH_ARM) (ARCH_RISCV) (ARCH_OTHER)) -FC_REFLECT(chainbase::environment, (debug) (os) (arch) (boost_version) (compiler)) - - void chain_actions::setup(CLI::App& app) { auto* sub = app.add_subcommand("chain-state", "chain utility"); sub->add_option("--state-dir", opt->sstate_state_dir, "The location of the state directory (absolute path or relative to the current directory)")->capture_default_str(); From 3bbc61d40434aa7bf415d2f54ef3240d9da480ff Mon Sep 17 00:00:00 2001 From: Matt Witherspoon <32485495+spoonincode@users.noreply.github.com> Date: Mon, 11 Mar 2024 21:23:57 -0400 Subject: [PATCH 09/22] ubsan platform for CI --- .cicd/platforms/ubsan.Dockerfile | 42 ++++++++++++++++++++++++++++++++ .github/workflows/build.yaml | 3 +++ 2 files changed, 45 insertions(+) create mode 100644 .cicd/platforms/ubsan.Dockerfile diff --git a/.cicd/platforms/ubsan.Dockerfile b/.cicd/platforms/ubsan.Dockerfile new file mode 100644 index 0000000000..bf7720b5e6 --- /dev/null +++ b/.cicd/platforms/ubsan.Dockerfile @@ -0,0 +1,42 @@ +# syntax=docker/dockerfile:1 +FROM ubuntu:jammy +ENV TZ="America/New_York" +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y build-essential \ + cmake \ + git \ + jq \ + libcurl4-openssl-dev \ + libgmp-dev \ + llvm-11-dev \ + lsb-release \ + ninja-build \ + python3-numpy \ + software-properties-common \ + file \ + wget \ + zlib1g-dev \ + zstd + +RUN yes | bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" llvm.sh 18 + +#make sure no confusion on what llvm library leap's cmake should pick up on +RUN rm -rf /usr/lib/llvm-18/lib/cmake + +COPY <<-EOF /ubsan.supp + vptr:wasm_eosio_validation.hpp + vptr:wasm_eosio_injection.hpp +EOF + +ENV LEAP_PLATFORM_HAS_EXTRAS_CMAKE=1 +COPY <<-EOF /extras.cmake + set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "" FORCE) + + set(CMAKE_C_COMPILER "clang-18" CACHE STRING "") + set(CMAKE_CXX_COMPILER "clang++-18" CACHE STRING "") + set(CMAKE_C_FLAGS "-fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer" CACHE STRING "") + set(CMAKE_CXX_FLAGS "-fsanitize=undefined -fno-sanitize-recover=all -fno-omit-frame-pointer" CACHE STRING "") +EOF + +ENV UBSAN_OPTIONS=print_stacktrace=1,suppressions=/ubsan.supp diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4467920c40..81036c04d2 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -136,6 +136,7 @@ jobs: - cfg: {name: 'ubuntu20', base: 'ubuntu20', builddir: 'ubuntu20'} - cfg: {name: 'ubuntu22', base: 'ubuntu22', builddir: 'ubuntu22'} - cfg: {name: 'asserton', base: 'asserton', builddir: 'asserton'} + - cfg: {name: 'ubsan', base: 'ubsan', builddir: 'ubsan'} - cfg: {name: 'ubuntu20repro', base: 'ubuntu20', builddir: 'reproducible'} - cfg: {name: 'ubuntu22repro', base: 'ubuntu22', builddir: 'reproducible'} runs-on: ["self-hosted", "enf-x86-hightier"] @@ -176,6 +177,7 @@ jobs: - cfg: {name: 'ubuntu20', base: 'ubuntu20', builddir: 'ubuntu20'} - cfg: {name: 'ubuntu22', base: 'ubuntu22', builddir: 'ubuntu22'} - cfg: {name: 'asserton', base: 'asserton', builddir: 'asserton'} + - cfg: {name: 'ubsan', base: 'ubsan', builddir: 'ubsan'} - cfg: {name: 'ubuntu20repro', base: 'ubuntu20', builddir: 'reproducible'} - cfg: {name: 'ubuntu22repro', base: 'ubuntu22', builddir: 'reproducible'} runs-on: ["self-hosted", "enf-x86-midtier"] @@ -216,6 +218,7 @@ jobs: - cfg: {name: 'ubuntu20', base: 'ubuntu20', builddir: 'ubuntu20'} - cfg: {name: 'ubuntu22', base: 'ubuntu22', builddir: 'ubuntu22'} - cfg: {name: 'asserton', base: 'asserton', builddir: 'asserton'} + - cfg: {name: 'ubsan', base: 'ubsan', builddir: 'ubsan'} - cfg: {name: 'ubuntu20repro', base: 'ubuntu20', builddir: 'reproducible'} - cfg: {name: 'ubuntu22repro', base: 'ubuntu22', builddir: 'reproducible'} runs-on: ["self-hosted", "enf-x86-lowtier"] From c3aa9a523142f39f2e3e64938c87cb42f232bebf Mon Sep 17 00:00:00 2001 From: Guillaume Babin-Tremblay Date: Thu, 14 Mar 2024 16:54:16 +0000 Subject: [PATCH 10/22] added IF ibc contract + test --- unittests/if_ibc_tests.cpp | 212 ++++++++ unittests/test-contracts/CMakeLists.txt | 1 + .../test-contracts/if_ibc/CMakeLists.txt | 8 + unittests/test-contracts/if_ibc/bitset.hpp | 46 ++ unittests/test-contracts/if_ibc/if_ibc.abi | 366 +++++++++++++ unittests/test-contracts/if_ibc/if_ibc.cpp | 252 +++++++++ unittests/test-contracts/if_ibc/if_ibc.hpp | 489 ++++++++++++++++++ unittests/test-contracts/if_ibc/if_ibc.wasm | Bin 0 -> 45894 bytes unittests/test_contracts.hpp.in | 1 + 9 files changed, 1375 insertions(+) create mode 100644 unittests/if_ibc_tests.cpp create mode 100644 unittests/test-contracts/if_ibc/CMakeLists.txt create mode 100644 unittests/test-contracts/if_ibc/bitset.hpp create mode 100644 unittests/test-contracts/if_ibc/if_ibc.abi create mode 100644 unittests/test-contracts/if_ibc/if_ibc.cpp create mode 100644 unittests/test-contracts/if_ibc/if_ibc.hpp create mode 100755 unittests/test-contracts/if_ibc/if_ibc.wasm diff --git a/unittests/if_ibc_tests.cpp b/unittests/if_ibc_tests.cpp new file mode 100644 index 0000000000..f43450f23a --- /dev/null +++ b/unittests/if_ibc_tests.cpp @@ -0,0 +1,212 @@ +// From fork tests +#include +#include +#include + +#include + +#include + +#include + +#include +#include + +#include "fork_test_utilities.hpp" + +using namespace eosio::chain; +using namespace eosio::testing; + +// From params_test +#include +using mvo = mutable_variant_object; + + +BOOST_AUTO_TEST_SUITE(if_ibc) + +// These are the producers and finalizers to use across all chains +const std::vector test_nodes = +{ + "a"_n, "b"_n, "c"_n, "d"_n, "e"_n, + "f"_n, "g"_n, "h"_n, "i"_n, "j"_n, + "k"_n, "l"_n, "m"_n, "n"_n, "o"_n, + "p"_n, "q"_n, "r"_n, "s"_n, "t"_n, + "u"_n +}; + +// Extending the default chain tester +// ( libraries/testing/include/eosio/testing/tester.hpp ) +class ibc_tester : public tester { +public: + const account_name _bridge = "bridge"_n; + + // This is mostly for creating accounts and loading contracts. + void setup(){ + + // load bridge contract + create_account( _bridge ); + set_code( _bridge, eosio::testing::test_contracts::if_ibc_wasm()); + set_abi( _bridge, eosio::testing::test_contracts::if_ibc_abi()); + + } + + void set_policy(){ + auto cr = push_action( _bridge, "setfpolicy"_n, _bridge, mutable_variant_object() + ("from_block_num", 1) + ("policy", mutable_variant_object() + ("generation", 1) + ("fthreshold", 3) + ("last_block_num", 0) + ("finalizers", fc::variants({ + mutable_variant_object() + ("description","finalizer1") + ("fweight", 1) + ("public_key", "b12eba13063c6cdc7bbe40e7de62a1c0f861a9ad55e924cdd5049be9b58e205053968179cede5be79afdcbbb90322406aefb7a5ce64edc2a4482d8656daed1eeacfb4286f661c0f9117dcd83fad451d301b2310946e5cd58808f7b441b280a02") + , + mutable_variant_object() + ("description","finalizer2") + ("fweight", 1) + ("public_key", "0728121cffe7b8ddac41817c3a6faca76ae9de762d9c26602f936ac3e283da756002d3671a2858f54c355f67b31b430b23b957dba426d757eb422db617be4cc13daf41691aa059b0f198fa290014d3c3e4fa1def2abc6a3328adfa7705c75508") + , + mutable_variant_object() + ("description","finalizer3") + ("fweight", 1) + ("public_key", "e06c31c83f70b4fe9507877563bfff49235774d94c98dbf9673d61d082ef589f7dd4865281f37d60d1bb433514d4ef0b787424fb5e53472b1d45d28d90614fad29a4e5e0fe70ea387f7845e22c843f6061f9be20a7af21d8b72d02f4ca494a0a") + , + mutable_variant_object() + ("description","finalizer4") + ("fweight", 1) + ("public_key", "08c9bd408bac02747e493d918e4b3e6bd1a2ffaf9bfca4f2e79dd22e12556bf46e911f25613c24d9f6403996c5246c19ef94aff48094868425eda1e46bcd059c59f3b060521be797f5cc2e6debe2180efa12c0814618a38836a64c3d7440740f") + })) + ) + + ); + } + +/* void check_proof(){ + + auto cr = push_action( _bridge, "checkproof"_n, _bridge, mutable_variant_object() + ("proof", mutable_variant_object() + ("finality_proof", mutable_variant_object() + ("qc_block", mutable_variant_object() + ("light_header_protocol_version_major", 1) + ("light_header_protocol_version_minor", 0) + ("finalizer_policy_generation", 1) + ("active_finalizer_policy", fc::variants()) + ("witness_hash", "888ceeb757ea240d1c1ae2f4f717e67b73dcd592b2ba097f63b4c3e3ca4350e1") + ("finality_mroot", "1d2ab7379301370d3fa1b27a9f4ac077f6ea445a1aa3dbf7e18e9cc2c25b140c") + ) + ("qc", mutable_variant_object() + ("signature", "") + ("finalizers", fc::variants()) + ) + ) + ("target_block_proof_of_inclusion", mutable_variant_object() + ("target_node_index", 7) + ("last_node_index", 7) + ("target", mutable_variant_object() + ("finality_data", mutable_variant_object() + ("major_version", 1) + ("minor_version", 0) + ("finalizer_policy_generation", 1) + ("active_finalizer_policy", fc::variants()) + ("witness_hash", "dff620c1c4d31cade95ed609269a86d4ecb2357f9302d17675c0665c75786508") + ("finality_mroot", "1397eb7c86719f160188fa740fc3610ccb5a6681ad56807dc99a17fe73a7b7fd") + ) + ("dynamic_data", mutable_variant_object() + ("block_num", 28) + ("action_proofs", fc::variants()) + ("action_mroot", "4e890ef0e014f93bd1b31fabf1041ecc9fb1c44e957c2f7b1682333ee426677a") + ) + ) + ("merkle_branches", fc::variants({ + mutable_variant_object() + ("direction", 1) + ("hash", "4e17da018040c80339f2714828d1927d5b616f9af7aa4768c1876df6f05e5602") + , + mutable_variant_object() + ("direction", 1) + ("hash", "7ee0e16f1941fb5a98d80d20ca92e0c689e9284285d5f90ecd4f8f1ea2ffb53c") + , + mutable_variant_object() + ("direction", 1) + ("hash", "401526ba03ec4a955c83cda131dacd3e89becaad2cf04107170e436dd90a553f") + })) + + ) + ) + + ); + + } + */ + void check_proof(){ + + auto cr = push_action( _bridge, "checkproof"_n, _bridge, mutable_variant_object() + ("proof", mutable_variant_object() + ("finality_proof", mutable_variant_object() + ("qc_block", mutable_variant_object() + ("major_version", 1) + ("minor_version", 0) + ("finalizer_policy_generation", 1) + ("witness_hash", "888ceeb757ea240d1c1ae2f4f717e67b73dcd592b2ba097f63b4c3e3ca4350e1") + ("finality_mroot", "1d2ab7379301370d3fa1b27a9f4ac077f6ea445a1aa3dbf7e18e9cc2c25b140c") + ) + ("qc", mutable_variant_object() + ("signature", "") + ("finalizers", fc::variants({})) + ) + ) + ("target_block_proof_of_inclusion", mutable_variant_object() + ("target_node_index", 7) + ("last_node_index", 7) + ("target", fc::variants({"block_data", mutable_variant_object() + ("finality_data", mutable_variant_object() + ("major_version", 1) + ("minor_version", 0) + ("finalizer_policy_generation", 1) + ("witness_hash", "dff620c1c4d31cade95ed609269a86d4ecb2357f9302d17675c0665c75786508") + ("finality_mroot", "1397eb7c86719f160188fa740fc3610ccb5a6681ad56807dc99a17fe73a7b7fd") + ) + ("dynamic_data", mutable_variant_object() + ("block_num", 28) + ("action_proofs", fc::variants()) + ("action_mroot", "4e890ef0e014f93bd1b31fabf1041ecc9fb1c44e957c2f7b1682333ee426677a") + ) + })) + ("merkle_branches", fc::variants({ + mutable_variant_object() + ("direction", 1) + ("hash", "4e17da018040c80339f2714828d1927d5b616f9af7aa4768c1876df6f05e5602") + , + mutable_variant_object() + ("direction", 1) + ("hash", "7ee0e16f1941fb5a98d80d20ca92e0c689e9284285d5f90ecd4f8f1ea2ffb53c") + , + mutable_variant_object() + ("direction", 1) + ("hash", "401526ba03ec4a955c83cda131dacd3e89becaad2cf04107170e436dd90a553f") + })) + + ) + ) + + ); + + } + +}; + +BOOST_AUTO_TEST_CASE( first_test ) try { + + ibc_tester chain_a; + + chain_a.setup(); + + chain_a.set_policy(); + + chain_a.check_proof(); + +} FC_LOG_AND_RETHROW() + +BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file diff --git a/unittests/test-contracts/CMakeLists.txt b/unittests/test-contracts/CMakeLists.txt index a62d82809c..1296344f30 100644 --- a/unittests/test-contracts/CMakeLists.txt +++ b/unittests/test-contracts/CMakeLists.txt @@ -45,3 +45,4 @@ add_subdirectory( crypto_primitives_test ) add_subdirectory( bls_primitives_test ) add_subdirectory( get_block_num_test ) add_subdirectory( nested_container_multi_index ) +add_subdirectory( if_ibc ) diff --git a/unittests/test-contracts/if_ibc/CMakeLists.txt b/unittests/test-contracts/if_ibc/CMakeLists.txt new file mode 100644 index 0000000000..427c77aa9f --- /dev/null +++ b/unittests/test-contracts/if_ibc/CMakeLists.txt @@ -0,0 +1,8 @@ +set( IBC_CONTRACT "if_ibc" ) + +if( EOSIO_COMPILE_TEST_CONTRACTS ) + add_contract( ${IBC_CONTRACT} ${IBC_CONTRACT} ${IBC_CONTRACT}.cpp ) +else() + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/${IBC_CONTRACT}.wasm ${CMAKE_CURRENT_BINARY_DIR}/${IBC_CONTRACT}.wasm COPYONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/${IBC_CONTRACT}.abi ${CMAKE_CURRENT_BINARY_DIR}/${IBC_CONTRACT}.abi COPYONLY ) +endif() diff --git a/unittests/test-contracts/if_ibc/bitset.hpp b/unittests/test-contracts/if_ibc/bitset.hpp new file mode 100644 index 0000000000..e91cf55a50 --- /dev/null +++ b/unittests/test-contracts/if_ibc/bitset.hpp @@ -0,0 +1,46 @@ +using namespace eosio; + +class bitset { +public: + bitset(size_t size) + : num_bits(size), data(new uint64_t[(size + 63) / 64]()) {} + + bitset(size_t size, uint64_t* _data) + : num_bits(size), data(_data) {} + + ~bitset() { + delete[] data; + } + + // Set a bit to 1 + void set(size_t index) { + check_bounds(index); + data[index / 64] |= (1ULL << (index % 64)); + } + + // Clear a bit (set to 0) + void clear(size_t index) { + check_bounds(index); + data[index / 64] &= ~(1ULL << (index % 64)); + } + + // Check if a bit is set + bool test(size_t index) const { + check_bounds(index); + return (data[index / 64] & (1ULL << (index % 64))) != 0; + } + + // Size of the bitset + size_t size() const { + return num_bits; + } + +private: + size_t num_bits; + uint64_t* data; + + // Check if the index is within bounds + void check_bounds(size_t index) const { + check(index < num_bits, "bitset index out of bounds"); + } +}; diff --git a/unittests/test-contracts/if_ibc/if_ibc.abi b/unittests/test-contracts/if_ibc/if_ibc.abi new file mode 100644 index 0000000000..a6737df603 --- /dev/null +++ b/unittests/test-contracts/if_ibc/if_ibc.abi @@ -0,0 +1,366 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.2", + "types": [ + { + "new_type_name": "bls_public_key", + "type": "bytes" + }, + { + "new_type_name": "bls_signature", + "type": "bytes" + }, + { + "new_type_name": "target_data", + "type": "variant_block_data_action_data" + } + ], + "structs": [ + { + "name": "action_data", + "base": "", + "fields": [ + { + "name": "action", + "type": "r_action" + }, + { + "name": "action_receipt_digest", + "type": "checksum256" + }, + { + "name": "return_value", + "type": "bytes" + } + ] + }, + { + "name": "block_data", + "base": "", + "fields": [ + { + "name": "finality_data", + "type": "block_finality_data" + }, + { + "name": "dynamic_data", + "type": "dynamic_data_v0" + } + ] + }, + { + "name": "block_finality_data", + "base": "", + "fields": [ + { + "name": "major_version", + "type": "uint32" + }, + { + "name": "minor_version", + "type": "uint32" + }, + { + "name": "finalizer_policy_generation", + "type": "uint32" + }, + { + "name": "active_finalizer_policy", + "type": "fpolicy?" + }, + { + "name": "witness_hash", + "type": "checksum256" + }, + { + "name": "finality_mroot", + "type": "checksum256" + } + ] + }, + { + "name": "checkproof", + "base": "", + "fields": [ + { + "name": "proof", + "type": "proof" + } + ] + }, + { + "name": "clear", + "base": "", + "fields": [] + }, + { + "name": "dynamic_data_v0", + "base": "", + "fields": [ + { + "name": "block_num", + "type": "uint32" + }, + { + "name": "action_proofs", + "type": "proof_of_inclusion[]" + }, + { + "name": "action_mroot", + "type": "checksum256?" + } + ] + }, + { + "name": "finality_proof", + "base": "", + "fields": [ + { + "name": "qc_block", + "type": "block_finality_data" + }, + { + "name": "qc", + "type": "quorum_certificate" + } + ] + }, + { + "name": "finalizer_authority", + "base": "", + "fields": [ + { + "name": "description", + "type": "string" + }, + { + "name": "fweight", + "type": "uint64" + }, + { + "name": "public_key", + "type": "bls_public_key" + } + ] + }, + { + "name": "fpolicy", + "base": "", + "fields": [ + { + "name": "generation", + "type": "uint32" + }, + { + "name": "fthreshold", + "type": "uint64" + }, + { + "name": "finalizers", + "type": "finalizer_authority[]" + } + ] + }, + { + "name": "lastproof", + "base": "", + "fields": [ + { + "name": "id", + "type": "uint64" + }, + { + "name": "block_num", + "type": "uint32" + }, + { + "name": "finality_mroot", + "type": "checksum256" + }, + { + "name": "cache_expiry", + "type": "time_point" + } + ] + }, + { + "name": "merkle_branch", + "base": "", + "fields": [ + { + "name": "direction", + "type": "uint8" + }, + { + "name": "hash", + "type": "checksum256" + } + ] + }, + { + "name": "permission_level", + "base": "", + "fields": [ + { + "name": "actor", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "proof", + "base": "", + "fields": [ + { + "name": "finality_proof", + "type": "finality_proof?" + }, + { + "name": "target_block_proof_of_inclusion", + "type": "proof_of_inclusion" + } + ] + }, + { + "name": "proof_of_inclusion", + "base": "", + "fields": [ + { + "name": "target_node_index", + "type": "uint64" + }, + { + "name": "last_node_index", + "type": "uint64" + }, + { + "name": "target", + "type": "target_data" + }, + { + "name": "merkle_branches", + "type": "merkle_branch[]" + } + ] + }, + { + "name": "quorum_certificate", + "base": "", + "fields": [ + { + "name": "finalizers", + "type": "uint64[]" + }, + { + "name": "signature", + "type": "bls_signature" + } + ] + }, + { + "name": "r_action", + "base": "r_action_base", + "fields": [ + { + "name": "data", + "type": "bytes" + }, + { + "name": "returnvalue", + "type": "bytes" + } + ] + }, + { + "name": "r_action_base", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "name", + "type": "name" + }, + { + "name": "authorization", + "type": "permission_level[]" + } + ] + }, + { + "name": "setfpolicy", + "base": "", + "fields": [ + { + "name": "policy", + "type": "fpolicy" + }, + { + "name": "from_block_num", + "type": "uint32" + } + ] + }, + { + "name": "storedpolicy", + "base": "fpolicy", + "fields": [ + { + "name": "last_block_num", + "type": "uint32" + }, + { + "name": "cache_expiry", + "type": "time_point" + } + ] + } + ], + "actions": [ + { + "name": "checkproof", + "type": "checkproof", + "ricardian_contract": "" + }, + { + "name": "clear", + "type": "clear", + "ricardian_contract": "" + }, + { + "name": "setfpolicy", + "type": "setfpolicy", + "ricardian_contract": "" + } + ], + "tables": [ + { + "name": "lastproofs", + "type": "lastproof", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "policies", + "type": "storedpolicy", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [ + { + "name": "variant_block_data_action_data", + "types": ["block_data","action_data"] + } + ], + "action_results": [] +} \ No newline at end of file diff --git a/unittests/test-contracts/if_ibc/if_ibc.cpp b/unittests/test-contracts/if_ibc/if_ibc.cpp new file mode 100644 index 0000000000..ae54aaee71 --- /dev/null +++ b/unittests/test-contracts/if_ibc/if_ibc.cpp @@ -0,0 +1,252 @@ +#include "if_ibc.hpp" + + +//add two numbers from the g1 group (aggregation) +std::vector if_ibc::_g1add(const std::vector& op1, const std::vector& op2) { + check(op1.size() == std::tuple_size::value, "wrong op1 size passed"); + check(op2.size() == std::tuple_size::value, "wrong op2 size passed"); + bls_g1 r; + bls_g1_add(*reinterpret_cast(op1.data()), *reinterpret_cast(op2.data()), r); + std::vector v(r.begin(), r.end()); + return v; +} + +void if_ibc::_maybe_set_finalizer_policy(const fpolicy& policy, const uint32_t from_block_num){ + + policies_table _policies_table(get_self(), get_self().value); + + auto itr = _policies_table.rbegin(); + + //if the new policy is more recent than the most recent we are aware of, we record the new one + if (itr==_policies_table.rend() || itr->generation < policy.generation){ + + //if a previous policy was in force, it is now superseded by the newer one for any future proof verification + if (itr!=_policies_table.rend()){ + auto fwd_itr = itr.base(); + fwd_itr--; + _policies_table.modify( fwd_itr, same_payer, [&]( auto& sfp ) { + sfp.last_block_num = from_block_num; + }); + } + + if_ibc::storedpolicy spolicy; + + spolicy.generation = policy.generation; + spolicy.fthreshold = policy.fthreshold; + spolicy.finalizers = policy.finalizers; + + //policy is in force until a newer policy is proven + spolicy.last_block_num = std::numeric_limits::max(); + + //set cache expiry + spolicy.cache_expiry = add_time(current_time_point(), POLICY_CACHE_EXPIRY); + + _policies_table.emplace( get_self(), [&]( auto& p ) { + p = spolicy; + }); + + + } + +} + +//adds the newly proven root if necessary +void if_ibc::_maybe_add_proven_root(const uint32_t block_num, const checksum256& finality_mroot){ + + proofs_table _proofs_table(get_self(), get_self().value); + + auto block_num_index = _proofs_table.get_index<"blocknum"_n>(); + auto merkle_index = _proofs_table.get_index<"merkleroot"_n>(); + + auto last_itr = block_num_index.rbegin(); + + //if first proven root or newer than the last proven root, we store it + if (last_itr == block_num_index.rend() || last_itr->block_num& pk, const std::vector& sig, std::vector& msg){ + check(pk.size() == std::tuple_size::value, "wrong pk size passed"); + check(sig.size() == std::tuple_size::value, "wrong sig size passed"); + bls_g1 g1_points[2]; + bls_g2 g2_points[2]; + + memcpy(g1_points[0].data(), eosio::detail::G1_ONE_NEG.data(), sizeof(bls_g1)); + memcpy(g2_points[0].data(), sig.data(), sizeof(bls_g2)); + + bls_g2 p_msg; + eosio::detail::g2_fromMessage(msg, eosio::detail::CIPHERSUITE_ID, p_msg); + memcpy(g1_points[1].data(), pk.data(), sizeof(bls_g1)); + memcpy(g2_points[1].data(), p_msg.data(), sizeof(bls_g2)); + + bls_gt r; + bls_pairing(g1_points, g2_points, 2, r); + check(0 == memcmp(r.data(), eosio::detail::GT_ONE.data(), sizeof(bls_gt)), "bls signature verify failed"); +} + +void if_ibc::_check_qc(const quorum_certificate& qc, const checksum256& finality_digest, const uint64_t finalizer_policy_generation){ + + policies_table _policies_table(get_self(), get_self().value); + check(_policies_table.begin() != _policies_table.end(), "must set a finalizer policy before checking proofs"); + + //fetch the finalizer policy where generation num is equal prepare.input.finalizer_policy_generation, and that it is still in force + auto itr = _policies_table.find(finalizer_policy_generation); + check(itr!=_policies_table.end(), "finalizer policy not found"); + storedpolicy target_policy = *itr; + auto fa_itr = target_policy.finalizers.begin(); + auto fa_end_itr = target_policy.finalizers.end(); + size_t finalizer_count = std::distance(fa_itr, fa_end_itr); + std::vector bitset_data(qc.finalizers); + bitset b(finalizer_count, bitset_data.data()); + + bool first = true; + + size_t index = 0; + uint64_t weight = 0; + + bls_public_key agg_pub_key; + + while (fa_itr != fa_end_itr){ + if (b.test(index)){ + if (first){ + first=false; + agg_pub_key = fa_itr->public_key; + } + else agg_pub_key = _g1add(agg_pub_key, fa_itr->public_key); + weight+=fa_itr->fweight; + + } + index++; + fa_itr++; + } + + //verify that we have enough vote weight to meet the quorum threshold of the target policy + check(weight>=target_policy.fthreshold, "insufficient signatures to reach quorum"); + + std::array data = finality_digest.extract_as_byte_array(); + std::vector v_data(data.begin(), data.end()); + + //verify signature validity + _verify(agg_pub_key, qc.signature, v_data); + + +} + +void if_ibc::_check_target_block_proof_of_inclusion(const proof_of_inclusion& proof, const std::optional reference_root){ + + //verify that the proof of inclusion is over a target block + check(std::holds_alternative(proof.target), "must supply proof of inclusion over block data"); + + //resolve the proof to its merkle root + checksum256 finality_mroot = proof.root(); + + if (reference_root.has_value()){ + check(reference_root.value() == finality_mroot, "cannot link proof to proven merkle root"); + } + else { + + proofs_table _proofs_table(get_self(), get_self().value); + + auto merkle_index = _proofs_table.get_index<"merkleroot"_n>(); + + auto itr = merkle_index.find(finality_mroot); + check(itr!= merkle_index.end(), "cannot link proof to proven merkle root"); + + } + + block_data target_block = std::get(proof.target); + + if (target_block.finality_data.active_finalizer_policy.has_value()){ + _maybe_set_finalizer_policy(target_block.finality_data.active_finalizer_policy.value(), target_block.dynamic_data.block_num); + } + +} + +void if_ibc::_check_finality_proof(const finality_proof& finality_proof, const proof_of_inclusion& target_block_proof_of_inclusion){ + + //temporarilly disabled : skip qc verification + //if QC is valid, it means that we have reaced finality on the block referenced by the finality_mroot + //_check_qc(finality_proof.qc, finality_proof.qc_block.finality_digest(), finality_proof.qc_block.finalizer_policy_generation); + + //check if the target proof of inclusion correctly resolves to the root of the finality proof + _check_target_block_proof_of_inclusion(target_block_proof_of_inclusion, finality_proof.qc_block.finality_mroot); + + //if proof of inclusion was successful, the target block and its dynamic data have been validated as final and correct + block_data target_block = std::get(target_block_proof_of_inclusion.target); + + //if the finality_mroot we just proven is more recent than the last root we have stored, store it + _maybe_add_proven_root(target_block.dynamic_data.block_num, finality_proof.qc_block.finality_mroot); + +} + +ACTION if_ibc::setfpolicy(const fpolicy& policy, const uint32_t from_block_num){ + + //can only be called with account authority + require_auth(get_self()); + + policies_table _policies_table(get_self(), get_self().value); + + //can only be used once for the initilization of the contract + check(_policies_table.begin() == _policies_table.end(), "can only set finalizer policy manually for initialization"); + + _maybe_set_finalizer_policy(policy, from_block_num); + +} + +ACTION if_ibc::checkproof(const proof& proof){ + + //if we have a finality proof, we execute the "heavy" code path + if (proof.finality_proof.has_value()){ + _check_finality_proof(proof.finality_proof.value(), proof.target_block_proof_of_inclusion); + } + else { + //if we only have a proof of inclusion of the target block, we execute the "light" code path + _check_target_block_proof_of_inclusion(proof.target_block_proof_of_inclusion, std::nullopt); + } + +} + +//temporary : reset the state +ACTION if_ibc::clear(){ + + require_auth(get_self()); + + proofs_table _proofs_table(get_self(), get_self().value); + policies_table _policies_table(get_self(), get_self().value); + + auto fp_itr = _proofs_table.begin(); + + while (fp_itr!= _proofs_table.end()){ + fp_itr = _proofs_table.erase(fp_itr); + } + + auto p_itr = _policies_table.begin(); + + while (p_itr!= _policies_table.end()){ + p_itr = _policies_table.erase(p_itr); + } + + +} \ No newline at end of file diff --git a/unittests/test-contracts/if_ibc/if_ibc.hpp b/unittests/test-contracts/if_ibc/if_ibc.hpp new file mode 100644 index 0000000000..2c70cf5c15 --- /dev/null +++ b/unittests/test-contracts/if_ibc/if_ibc.hpp @@ -0,0 +1,489 @@ +#include +#include +#include +#include +#include + +#include "bitset.hpp" + +#include +#include + +using namespace eosio; + +CONTRACT if_ibc : public contract { + public: + using contract::contract; + + using bls_public_key = std::vector; + using bls_signature = std::vector; + + const uint32_t POLICY_CACHE_EXPIRY = 600; //10 minutes for testing + const uint32_t PROOF_CACHE_EXPIRY = 600; //10 minutes for testing + + //Compute the next power of 2 for a given number + static uint64_t next_power_of_2(uint64_t value) { + value -= 1; + value |= value >> 1; + value |= value >> 2; + value |= value >> 4; + value |= value >> 8; + value |= value >> 16; + value |= value >> 32; + value += 1; return value; + } + + static uint64_t clz_power_of_2(uint64_t v) { + return 64 - (__builtin_clzll(v)+1); + } + + //Compute the maximum number of layers of a merkle tree for a given number of leaves + static uint64_t calculate_max_depth(uint64_t node_count) { + if (node_count == 0) return 0; + auto implied_count = next_power_of_2(node_count); + return clz_power_of_2(implied_count) + 1; + } + + static uint32_t reverse_bytes(const uint32_t input){ + uint32_t output = (input>>24 & 0xff)|(input>>8 & 0xff00)|(input<<8 & 0xff0000)|(input<<24 & 0xff000000); + return output; + } + + static checksum256 hash_pair(const std::pair p){ + std::array arr1 = p.first.extract_as_byte_array(); + std::array arr2 = p.second.extract_as_byte_array(); + std::array result; + std::copy (arr1.cbegin(), arr1.cend(), result.begin()); + std::copy (arr2.cbegin(), arr2.cend(), result.begin() + 32); + checksum256 hash = sha256(reinterpret_cast(result.data()), 64); + return hash; + } + + static time_point add_time(const time_point& time, const uint32_t seconds ){ + int64_t total_seconds = (static_cast(time.sec_since_epoch()) + static_cast(seconds)); + microseconds ms = microseconds(total_seconds * 1000000); + time_point tp = time_point(ms); + return tp; + } + + /* + + //discuss : compute merkle branch direction vs providing them as part of the proof + + static std::vector _get_directions(const uint64_t index, const uint64_t last_node_index){ + + std::vector proof; + + uint64_t c_index = index; + uint64_t layers_depth = calculate_max_depth(last_node_index) -1; + uint64_t c_last_node_index = last_node_index; + + for (uint64_t i = 0; i < layers_depth; i++) { + if (c_last_node_index % 2) c_last_node_index+=1; + + bool isLeft = c_index % 2 == 0 ? 0 : 1; + uint64_t pairIndex = isLeft ? c_index - 1 : + c_index == last_node_index - 1 && i < layers_depth - 1 ? c_index : + c_index + 1; + + c_last_node_index/=2; + if (pairIndex < last_node_index) proof.push_back(isLeft); + + c_index = c_index / 2; + + } + + return proof; + + } + + */ + + struct merkle_branch { + + uint8_t direction; + checksum256 hash; + + }; + + + //compute the merkle root of target node and vector of merkle branches + static checksum256 _compute_root(const std::vector proof_nodes, const checksum256& target){ + + checksum256 hash = target; + + for (int i = 0 ; i < proof_nodes.size() ; i++){ + const checksum256 node = proof_nodes[i].hash; + std::array arr = node.extract_as_byte_array(); + + if (proof_nodes[i].direction == 0){ + hash = hash_pair(std::make_pair(hash, node)); + } + else { + hash = hash_pair(std::make_pair(node, hash)); + } + + } + + return hash; + + } + + struct quorum_certificate { + std::vector finalizers; + bls_signature signature; + }; + + struct finalizer_authority { + std::string description; + uint64_t fweight = 0; + bls_public_key public_key; + }; + + struct fpolicy { + + uint32_t generation = 0; ///< sequentially incrementing version number + uint64_t fthreshold = 0; ///< vote fweight threshold to finalize blocks + std::vector finalizers; ///< Instant Finality voter set + + checksum256 digest() const { + std::vector serialized = pack(*this); + return sha256(serialized.data(), serialized.size()); + } + + }; + + //finalizer policy augmented with contextually-relevant data + TABLE storedpolicy : fpolicy { + + uint32_t last_block_num = 0; //last block number where this policy is in force + + time_point cache_expiry; //cache expiry + + uint64_t primary_key() const {return generation;} + uint64_t by_cache_expiry()const { return cache_expiry.sec_since_epoch(); } + + EOSLIB_SERIALIZE( storedpolicy, (generation)(fthreshold)(finalizers)(last_block_num)(cache_expiry)) + + }; + + TABLE lastproof { + + uint64_t id; + + uint32_t block_num; + + checksum256 finality_mroot; + + time_point cache_expiry; + + uint64_t primary_key()const { return id; } + uint64_t by_block_num()const { return block_num; } + uint64_t by_cache_expiry()const { return cache_expiry.sec_since_epoch(); } + checksum256 by_merkle_root()const { return finality_mroot; } + + }; + + struct authseq { + name account; + uint64_t sequence; + + EOSLIB_SERIALIZE( authseq, (account)(sequence) ) + + }; + + struct r_action_base { + name account; + name name; + std::vector authorization; + + }; + + struct r_action : r_action_base { + std::vector data; + std::vector returnvalue; + + checksum256 digest() const { + + checksum256 hashes[2]; + + const r_action_base* base = this; + + const auto action_input_size = pack_size(data); + const auto return_value_size = pack_size(returnvalue); + + const auto rhs_size = action_input_size + return_value_size; + + const auto serialized_base = pack(*base); + const auto serialized_data = pack(data); + const auto serialized_output = pack(returnvalue); + + hashes[0] = sha256(serialized_base.data(), serialized_base.size()); + + std::vector data_digest(action_input_size); + std::vector output_digest(return_value_size); + + std::vector h1_result(rhs_size); + std::copy (serialized_data.cbegin(), serialized_data.cend(), h1_result.begin()); + std::copy (serialized_output.cbegin(), serialized_output.cend(), h1_result.begin() + action_input_size); + + hashes[1] = sha256(reinterpret_cast(h1_result.data()), rhs_size); + + std::array arr1 = hashes[0].extract_as_byte_array(); + std::array arr2 = hashes[1].extract_as_byte_array(); + + std::array result; + std::copy (arr1.cbegin(), arr1.cend(), result.begin()); + std::copy (arr2.cbegin(), arr2.cend(), result.begin() + 32); + + checksum256 final_hash = sha256(reinterpret_cast(result.data()), 64); + + return final_hash; + + } + + EOSLIB_SERIALIZE( r_action, (account)(name)(authorization)(data)(returnvalue)) + + }; + + struct action_receipt { + + name receiver; + + //act_digest is provided instead by obtaining the action digest. Implementation depends on the activation of action_return_value feature + //checksum256 act_digest; + + uint64_t global_sequence = 0; + uint64_t recv_sequence = 0; + + std::vector auth_sequence; + unsigned_int code_sequence = 0; + unsigned_int abi_sequence = 0; + + EOSLIB_SERIALIZE( action_receipt, (receiver)(global_sequence)(recv_sequence)(auth_sequence)(code_sequence)(abi_sequence) ) + + }; + + struct proof_of_inclusion; + + struct dynamic_data_v0 { + + //block_num is always present + uint32_t block_num; + + //can include any number of action_proofs and / or state_proofs pertaining to a given block + //all action_proofs must resolve to the same action_mroot + std::vector action_proofs; + + //can be used instead of providing action_proofs. Useful for proving finalizer policy changes + std::optional action_mroot; + + checksum256 get_action_mroot() const { + + if (action_mroot.has_value()) return action_mroot.value(); + else { + + check(action_proofs.size()>0, "must have at least one action proof"); + + checksum256 root = checksum256(); + + for (auto ap : action_proofs){ + if (root == checksum256()) root = ap.root(); + else check(ap.root() == root, "all action proofs must resolve to the same merkle root"); + } + + return root; + + } + + }; + + }; + + struct block_finality_data { + + //major_version for this block + uint32_t major_version; + + //minor_version for this block + uint32_t minor_version; + + //finalizer_policy_generation for this block + uint32_t finalizer_policy_generation; + + //if the block to prove contains a finalizer policy change, it can be provided + std::optional active_finalizer_policy; + + //if a finalizer policy is present, witness_hash should be the base_digest. Otherwise, witness_hash should be the static_data_digest + checksum256 witness_hash; + + //final_on_qc for this block + checksum256 finality_mroot; + + //returns hash of digest of active_finalizer_policy + witness_hash if active_finalizer_policy is present, otherwise returns witness_hash + checksum256 resolve_witness() const { + if (active_finalizer_policy.has_value()){ + std::vector serialized_policy = pack(active_finalizer_policy.value()); + checksum256 policy_digest = sha256(serialized_policy.data(), serialized_policy.size()); + checksum256 base_fpolicy_digest = hash_pair( std::make_pair( policy_digest, witness_hash) ); + + return base_fpolicy_digest; + } + else { + return witness_hash; + } + }; + + //returns hash of major_version + minor_version + finalizer_policy_generation + resolve_witness() + finality_mroot + checksum256 finality_digest() const { + + std::array result; + + memcpy(&result[0], (uint8_t *)&major_version, 4); + memcpy(&result[4], (uint8_t *)&minor_version, 4); + memcpy(&result[8], (uint8_t *)&finalizer_policy_generation, 4); + + std::array arr1 = finality_mroot.extract_as_byte_array(); + std::array arr2 = resolve_witness().extract_as_byte_array(); + + std::copy (arr1.cbegin(), arr1.cend(), result.begin() + 12); + std::copy (arr2.cbegin(), arr2.cend(), result.begin() + 44); + + checksum256 hash = sha256(reinterpret_cast(result.data()), 76); + + return hash; + + }; + + }; + + struct block_data { + + //finality data + block_finality_data finality_data; + + //dynamic_data to be verified + dynamic_data_v0 dynamic_data; + + //returns hash of finality_digest() and dynamic_data_digest() + checksum256 digest() const { + + checksum256 finality_digest = finality_data.finality_digest(); + + checksum256 action_mroot = dynamic_data.get_action_mroot(); + + std::array result; + + memcpy(&result[0], (uint8_t *)&finality_data.major_version, 4); + memcpy(&result[4], (uint8_t *)&finality_data.minor_version, 4); + memcpy(&result[8], (uint8_t *)&dynamic_data.block_num, 4); + + std::array arr1 = finality_digest.extract_as_byte_array(); + std::array arr2 = action_mroot.extract_as_byte_array(); + + std::copy (arr1.cbegin(), arr1.cend(), result.begin() + 12); + std::copy (arr2.cbegin(), arr2.cend(), result.begin() + 44); + + auto hash = sha256(reinterpret_cast(result.data()), 76); + + return hash; + + }; + + }; + + struct action_data { + + r_action action; //antelope action + checksum256 action_receipt_digest; //required witness hash, actual action_receipt is irrelevant to IBC + + std::vector return_value; //empty if no return value + + //returns the action digest + checksum256 action_digest() const { + return action.digest(); + }; + + //returns the receipt digest, composed of the action_digest() and action_receipt_digest witness hash + checksum256 digest() const { + checksum256 action_receipt_digest = hash_pair( std::make_pair( action_digest(), action_receipt_digest) ); + return action_receipt_digest; + }; + + }; + + using target_data = std::variant; + + + struct proof_of_inclusion { + + uint64_t target_node_index; + uint64_t last_node_index; + + target_data target; + + std::vector merkle_branches; + + //returns the merkle root obtained by hashing target.digest() with merkle_branches + checksum256 root() const { + + auto call_digest = [](const auto& var) -> checksum256 { return var.digest(); }; + + checksum256 digest = std::visit(call_digest, target); + + checksum256 root = _compute_root(merkle_branches, digest); + + return root; + + }; + + }; + + struct finality_proof { + + //block finality data over which we validate a QC + block_finality_data qc_block; + + //signature over finality_digest() of qc_block. + quorum_certificate qc; + + }; + + struct proof { + + //valid configurations : + //1) finality_proof for a QC block, and proof_of_inclusion of a target block within the final_on_strong_qc block represented by the finality_mroot present in header + //2) only a proof_of_inclusion of a target block, which must be included in a merkle tree represented by a root stored in the contract's RAM + std::optional finality_proof; + proof_of_inclusion target_block_proof_of_inclusion; + + }; + + typedef eosio::multi_index< "policies"_n, storedpolicy, + indexed_by<"expiry"_n, const_mem_fun>> policies_table; + + typedef eosio::multi_index< "lastproofs"_n, lastproof, + indexed_by<"blocknum"_n, const_mem_fun>, + indexed_by<"merkleroot"_n, const_mem_fun>, + indexed_by<"expiry"_n, const_mem_fun>> proofs_table; + + std::vector _g1add(const std::vector& op1, const std::vector& op2); + + void _maybe_set_finalizer_policy(const fpolicy& policy, const uint32_t from_block_num); + void _maybe_add_proven_root(const uint32_t block_num, const checksum256& finality_mroot); + + void _garbage_collection(); + + void _verify(const std::vector& pk, const std::vector& sig, std::vector& msg); + void _check_qc(const quorum_certificate& qc, const checksum256& finality_mroot, const uint64_t finalizer_policy_generation); + + void _check_finality_proof(const finality_proof& finality_proof, const proof_of_inclusion& target_block_proof_of_inclusion); + void _check_target_block_proof_of_inclusion(const proof_of_inclusion& proof, const std::optional reference_root); + + ACTION setfpolicy(const fpolicy& policy, const uint32_t from_block_num); //set finality policy + ACTION checkproof(const proof& proof); + + //clearing function, to be removed for production version + ACTION clear(); + +}; \ No newline at end of file diff --git a/unittests/test-contracts/if_ibc/if_ibc.wasm b/unittests/test-contracts/if_ibc/if_ibc.wasm new file mode 100755 index 0000000000000000000000000000000000000000..8f5d1276fd27313442cbb613d217fcf0ab2a9181 GIT binary patch literal 45894 zcmeI5dz4*Qec#XHzGm)7ItBx>CE(l}HH=a_l?|2@$EoMYHps+a^Dww6t!6BZt(lQD zRY>USte~V$a1yNqQzxNa$_k4*DP5>pU0EiO zxS#Lux6irv&PaX*h5Qje=Ipc2e*X6Fy?=Y(Xk!1~IEte9FXDVWipJAJhYm&KiT)@V z9~!Um(6gbZrJA0yk9Y77AE^-j-Z37Rput9Xy@jr(W`UOj;hExyKdaE zXZG!r^Eb{O*tcuP)aF-3O%==;;f@>k%fmHw zX=^GgOV3a4oaFm_sKGp@cHMgMC7b)E6SdV?n@=}Q^-peOe)5(BQ}dHMCJrp@jz-Et z`zCK)FbH@@>VJ0Mj$IQA6Fc@#y<;+3rGnY~2vzmdB@J#U6avj6(6Sa z$@BPQz)GC2Dp~JiRp<7fj@GST-#RZ^e;)s&>3OZzOV1k_j-&H>|HiHL zah$v?j@R?IMY6R%(ra>FlDs^5d5iyA3I8Qz#fkoD`I~ar+e?cNRx`E~B~_wUkLThw zYwBqn#f=xIhvH&!DQX{ziof~&>d_pE>l1Txdv1#^8CoAlMciKfldrq>4R5-BF@9J4 z!T8SjXXBrXKN~*~4}b3ulAq3^?9%MD*)`egv+J@qW^Zmk6i0cKy(W8A9_8^HYGd0L z7eDpa_x$PS{$yL8@T%NwzE183KlAMm-1ESfqh9ucviaxK#~(P}m;Ls79{Go*-?;m+ z=#90p!ruSnkAMCDyzARhwzkbbp{kWA`(0f8+~5AszqE-v=hDWdH1_UGd` zJ(NeCI2qHwc~qpgT(v4v>cS{m6*1muW=)&?c)Am(V|i=^;ymVaC*d`o?xvkMPp(>( zj704=Ik%T3Yt!9$G>N)NacF;@6i@x#ci%pJOR@OQcOAY}owVtN-1ru{iLD#8e_<34 zw7V)ANoY1L4o!Dbo)m1)GiVKQRa8W4+68|{lRJ4YvV&d5lWgYAa}SSosWDxwnJ(sT z=|-EA!qCAN+;H!;<2bW^csCFjxI%6Ot0+^2vGW#M|-;QvW{bQ zoB)V{j-xy-JFbO}Q*~VPj?=PZji8elG?sVVnNC4X}= z!be~*09fwc>|5b(Wb?)N*R671}SN9Eg64W;MrCWBOhvvu2PxH3l-&iev$} z7l-5NT!W)_ZCaC#+BT?vo!8q}YlMsjU@|v4PR9(pyEVh&Zv8b(Scu#KE_w(l4uM7i z^=f&2#!#AFCGEQXD)UJMIc9B2&{X#z(f zTvXg~iwKiG>p4re&Y_&gptwz_EZFMAHeMU0p}Jb|ai;y_4BgO)brGg64%C~fU`V;L z?OLa%wi(#LPE7@wbRN$DEy&8{L>GZzIH`}8dV%+`q5T-ljc!ojLxw%WyPXNZ2{ z;+s!B^;A<-+wKerQx>|z>Vk#mF?{tp*0O)yIz#Pzh^0%YT+=j?yp`9q9%M8;11xRk zjgXguVeqNii~}~w`P!IPrRls*!B8wNhP7s`>@oufIKX66N_OEdLXe?=AZox?-PhdF zb{Hzkqb=!^+u9e#@f|>dxi4P9aEfSSdgKbqt`QR`;!DZ)vPZ4}aDN-8@u39k0*14R zac*!3!^@_#4cj2uBI}5OB&6#pRLKX>uG268$Aw^>*SEFa%W5<(ilW2a+P1An4tMH+ zQn-`X_-1Pecz`Z*WE7uu&P&ZLspc8#Zb{*K)Zs6Ls@~OWTgV|g6lXCCD>9m~_N;q= z3x*=R7K&S^vzIf**7U}dnt7^+p-qjp=}7%a-fWuQ5Ve2Zk;Z}bi7UVq4Njzg6cCB* z@4ljVjG=DsMxy6fbEaERMYGl@C3s?CgFw1Dxr=(5C6uftgy45y0sfMVjF!p$@Ruc9 zBctU+&BK93&E)yI7QkD&OEz}C7Ho6!i7VO&!lPe~vTafOJSMKir6nUHG1R-S0BZ)P z^I-pUjxiQZ=l&~-hiT6E!Kb4pG@bhgrbF(h2c|>wE2aZ%2B!0%P3PF)bZDuX z&iyN=^GN@6zQkBGo#R&&k3N^_ENKot9W|lp93Pktx&LKgIyApxI_a|MJYv)N(%^Jx zshZC5mD4$VWgoIV$yhX<#Vd;=$DhOMd{1-m>8J@!XYtB@WFz-G1Jj}T71M!{4y?}M zD}`)N4o-)bs_86VDP;SQXa}BgGD1t)5O8wIrvMO+jGL$A!#wg8pV`F@hq+hra zEr{_RL^*Q8dHAXT`(g=W4eNi_ffI z_HV?L^Jz^-^W`z>kF~U*f!SzLyVBN{G}8zfxobITv6j?ml7TkoN)^j~N{t=boNPcl z*uHJ)@J}4thKzq|&AapHl4Sku%DF=w2%OSMtuX_%pn7XEmYrh|c!Lf1>tFHVQtC-f zWOoI>T}m;tVk>wQYtVVFN3zx*j7XU+24?GsMr3ejYML}C@NYG{&B>e|mtaiM{kYPj z$ps>ix7o@9$!oemWi+`?I;D|J#)HCIL7JZ9jbjw2^gOzrsbvj5*KphAccs(y)&advz-RA+Lhc2Pl#^|tDDQ@&tGb<{0pE;2;V;}uX~Z@Ep+yYyLQ z3Odr_)tEI1Jrq&44rB4qYmLT!^}j)5!r5B!&f3+oa%$NY%)z+RP%bL3TfQ^h`Ua|Y z8Zv$`O0sn@8YRGas4A};(d&^LQ8H+KK#de_>H%%qBlAqOaHmaiAKJV1d@^7io0tz2 zbpdUnev1j!M4wHV4{5%Pl#p4Eoe)u(Ns2lVUYlV>Nlwu~ooh9IH|-Lm&h?s;2o(af zKd97cF(S$Y+Ga!4G0Kew#6mSf8gZmbM57`+8$c3h6gQI45-g-`qtSYxQHerU0U9+9 zAz{cXG#U$0N%Uy6-lNeNbY@|VM%ANf;R5ElPM(R;DBKKtq1OI|80iY$;IW8%ID-{z zTm|%rx(U2C=TECoqGacFvBl{FbolMxF)l0Fk4QRSA6_fZg?}(4fGG}qRkiPWHD)eE zM99fj!egUxMeT=cX$|A1UK%%I_8OlUEbQNHk?)!~GNvzq;7tFs&h%+(W19DikS!_9 zJqIM}aB~8ys8&ESsN0w+M)y9{X&OK8vcqBpu7(=Za@b3-nJ zp@+7?S6GeiFbYbyy^cnbVraTE!lOlX3XXJFsU_vCXfPkjsdzANuftk)N*%${6zvYp zf*iJtnYK=~J8Iu;>Xq8?@rn@6Xl2JYaMJ8H^G#@Fc5e@;VN?{rC2lNEC zk3fzPn2G4@Bk}nF=>ic56Xav|BdkE#Y67D33golA^%kLU-r5%54xOptmCzrha7|QG zW3)vpE1W7~P>~KCZ9rU;?fTP?Z`6UvTiMGbTQ|X07>}CC{-qd?nS`IL#dUd5z(Xx$ z7lDf7K+I3A*Oh195B0#JVcM${klTZb1!NjO30E_{1R!IRW>=mMkwM?WNw5p`hSvGu zyiuA9lc8;%wr1Hbk>}_%^cQPAV63(t@Qd1Xr%7cxd7a=S=nB})3?DA}5<(Og*G$Mixj&ZS? z*bagQyjHI@v7H8WmFTgZT955CpwPNWSQsSpaoe5F(QdQLVEmFokR3h)@pAJ9q{aVw z^cPl`0T|`x)e@1l1|kv^k(kV9x+}OcJp!MDBI5j|zMQ{EdI9u`zaZ_!Z&(~z zEj$pZtfKQ5Hvyc#@P!Qxdd;_UXRTX0dh;E-BnzNF;P6 zaK}&x(&9_EE~bKJOCAP_WU|{RPN+4OY3&}!lv-=?lNx5TYKGKFQ1qrz>dZJc?N`Pl z+G0?oXxs4>yl=t`x=qJ?NBAa~R$;Un$!ijG&S<<#qoEqoN?qE{fzw`|IOW1m7**bK zf|XJOn37VICQ?Ero~6Iqy!o2CkYLi8IbjX5X=UCt#lxB_&70@XIh$cZ>e1EhW@X-_ zVug&?SSy1QM>VCY{in4=-T*jD&lkY_miYo$t?k&xXLJdGaWd{lK~_)YZb=I%Pnr=p zDs>Yr>)$&ZMw49{LMmvvb6}MEDo&XlunwUhGr2*|0dh@cMUW=hxU$z%x3Z*Z;#@jL zzDiFHroT5DJPyyp#AY0_vQNluB)*TTV2@33=h10pFapS|Osy?b3_!i&F0q+M*#v`P zh_bge-(=J=+i5WiHxPTA8KgA^I!660??xeA40ONkEKXCx9_b1OiOFf(i)&R z^sfP^(aIaPc*{my&t3>D3>_M9gq_{8df$QsW(^ZzI?N?lXCF=tC2OU1R-)u6NDGgV ztxS*R5R|Tz@TYv|C1_MMTH>$4!4R!- zWh8QeO9ia}8KahQ__}prOROhB0gRbHe_1#ERy%@7p`~brf@?U2);baZMiRPbK&YLE zFl)DgD6H}62-aNELk4*aVR3Ol2L26YJA-E$e{GJO%=vr=Bg&_n6w_>j(YYp zZ&}xs1Gr84jyId*;6sl>3hFRpQ#X%uK10&dthH2aHXitL|G8Ep(YO zC~q|G?ko6JZu934YUEupqgl==SP0i|4La&u`t4=F-qh9%;Nao9!&F)aoPiCFAyQUr zonbMJR@Y>=v}}}KfS1$Ra6eB1*1j01vrw-$V3mfw9q9zQNj_9Zp_r2_Sx{}W2Vxet zgsO0h zAbP32JX)@})?IPMtty4o-ZnwDrT$ungj|0Wlk!x$l6BN8)*;>%oZiM*#5`Gve#UVJ z?c>YdPH%^{uqL1oEW*plr7aF8mo|0u1?7)I;MKEpX-hKY2pfhAgOlOj@6v|5GW_Z6 zM(IE9460n(=+;663}?wSQ(;~H5YKggQjsMU<%a8`tBX$s3a!s9bHH_pqmk>ahU*Qh zHH6tPS3F~iJ~GEyOk)(0<1EP=3apE_uVU7qKGw7XFgzWxcO?X8Ge;@Y-poM5L=%3q zH)YZotT8i`g~AKPd=6c+if~7T5_J;#suh1vIz5f|Nz{X)w9@gE07f|~fR2Xa!`9Ss zS~C{OHu{X%opZ zAb@r{PsBZag4f66Qk$Rv@@!*z(h9g9VU0PXf6w9TRwV?t6n~+9gaRfBG)%WHz%m)C zl8L3gC4~)3iULvx9}zArF*r6W?Jon(#Zg_&WX!U;N5*TxyMo4X0bhQCZm%90tk98DJE z>@BGK*={Kt0X)$Ok4$C34K*}{SWyKd1le!ce9x=>~ z=@+ivk}m4YQ9zIwI0A28Oaz%^K`VMrtU&)HQittHiA{SL&=HXc&3uDa)mS%WGpC4O&!B70`@lnR z2-Kvl(S+LQG5b`x3+q>70*;9U7!uxAkmv4LE6un!rbj&q;^0lPsX7i>0hdHfpM5=fxAoYsHTr7bTiAio!Zo$Mh2sLYX69(?x2zbD} z=94ou*EKH{ZlUus3oEJaPq2#8k2Dw7?1ZhE=P(oLexXr{FiENAy$ohZQM$9`=;bp} z&)-@qhu-3*GJjK*FHkHAEm;>>1C!s#yMkXV`3TAFB?vUm9vH+`%i*AVEW@pU1R4__ zex@A;F0q5AM0BZkz8tF!jk~y9H|-_LuPymynn_7BwtVXGKz{gJmrt4o3Q^jlmKgGJ6Dnq>|RNg;6(Z0?M8CYV3`M564=TQ3`d9HATgp?7O5u16cx4_fQvseFPY2bk-VMboM5X9!DJ_ zv42Ly-)brkTMmD#ock?@zg5mL%i(X8bGPO2x5|Nk(lUR`98`r=Xo=dw-zNrLfU!gr z<8jz@D-UE8z=qxxypSp4RdVW)*LG^Da5W8^e5M(t+T>%dfK8t5v^aVPn@Lt`9I68D z-KGmatXPYNqRg>7G*s}qSxPslQ4Oi9v?JfWJIDpj!?6PN4LMmIxzBCfedJ>J-V4+b zQK(x8TOPMYM-zA!17~;A$KAg>nf7)kHLkEfu5sl)EQBArx27)UizgroM+yFGqZe8& zhdw$1(+Y&#O)rbyZm-6SpyB+;WzkM@YTHIh-Ds&zq$Vu2mDD(?)XH(vay&0EXgPQCoyhxM^_M5Ui3u#SRCf3InkMoIsDs$4?B4qxEttnSTaS@!09>K4+Zu}K6$;gY{}a%Kv)kD} z`Ou)TKLv>@rlKnsB`I_u@uFZJ!jZ1Q{=@r#PRv#!jo@=?!tryZWEWUHV_%%#Xv$v1 zj}4pGfep&wWLa+&*2|L6$Pk-Subs$ATlAF7HEAPaz@JNc7F*bZVPb(wZa_R?Z<}R6(1iaz850nN)HUEy z5*aB=TQXDyg8iU65**^5fQ#sF*QWl`;bqa$;cSYO?Tj5pVC};;`%=yfebIiNY)un0 zDRV@Q2w7G{Mwc5{1|%Y*F=0PgMv^hE>@8GdN%Nje;cY_*UO=FPeYu`*>)8f>f*cY_ zNoav?I9X!C%6uWwV4Pl5#_1`6<>Ep3RHlwRGk}57xNUF1I@rBVb8zJb2<%I5EYJP$_W3X)Su2lcJ zoU~CRuKFpQU}HLN5pC$fl(WwufZGw?1S;k!aR{k@kj1IQvnhi@>OB~{wrmAho}hHz z*pfc3C-1o9^}02ORS3JLvq^@qm_nBT^9w;6FtjcXb<&}>q@GR)GK z@Bt1nTbPl&39u|wHN$T(UwoVn9r#f_0%QUv{Q;Mc6UT!Aa@y!qqAo(!v41HKPy(F7$|7zG-IP1l?j8} ztSB&m%@~XtDGmMS6smq;SyA@Z!G09;xvU?G)hK5DkWRB(2Ky1=R-PhQ%?50{;3*1( z+t6;Pcsm%`Fjz7v9XZrPQ6jSVk}2ChEvIP&^jB4jJ+WTtaiREQq?vRupEl(6pdut*oqQln_0c( zY-Ib<^wgbHrt`~ODen1w^L@s}Wg`C!-e3a3AB0ouEd%WliK9Faf)_Z6j=G-(CMB7i z{X%@c=D;j)6wB=>xenH_Sz_l&8BIDSb-*^(oG@*eEUTigno=hsRTrX!KuES>8WKKo zOi)Z(gMzwD1rT4*gypp{{7`Gm-8yfG6JdOs!?TCR1cH^zTWzDDt;qh7(dimZ0wJ@a zpGx9ph}N!F6XX9Mx|-kw5wf;Ir1;M<@mZ}Vp^IMU)z7e++F}3{A)YwfWa}bsqt5*} zfnlNkD6*pDGq#i#3`q2^F)TQJExSmYn}TBYF`|^k`GL>hq=`aA;Jrs>wZXvvlf1Ry z_=|gtrCuy@R6$lR`$Hx;(6{U=f|)LRLkiodXD?v`0)2#|JpQ;r58EUf2gSEa`Z>m! zwz3`N8LWiADswAkLj=`s5^$G2mV+TzIyf~wjV5oC zM@#z=P{wa5WW_S&t+lc&o6a!vB8Do4OTu6()HMC}ZEWY*Jm|oXFnrmV-q1zpsuU8? zR591W$jq70ub^*UK*KgR9DG8_-bki zOD}-V${CR0t5i8dD|XhrZxO0iTDAb*idGd%fU&5lR(9L@?awtzv^>UH^6wK`ev73Q zdOl%KL(EgcB@~vE+M3}x#$yS5KxYDXmbj*ZNMo{+Y2hl%UOZf0LjWXu$wztxP#Mdz zkN1*zP|MsWddXA0*T&;GPALhZiwZatm`-O0c?z{hlT)bz3Dw6Y z;BY?2(dPG9A(OMm)WO2zUjBk&Q7 zK#ht4VFTFc>;?^5I45jUvhO6VB)yQ;H4TSikD6~Z^daL?_z?AXgSXQLP#o|7NL4(& zSS9`qZ9zk=+=yxM4bM5t7XMOqVhV4=s~0<1z`z%H)&1 zBn+s`#b+IodeEbKK~K@!xIY$SaxvjP&r^EK!+M%^vN?Iw)1Z$ota-%W*iK+gkNZoD z%L$e|StI!+OL9<}r}?H68GhN_aUPL@BPRPrM5EI9y0hC&7t&QIZVpljEzC3)Nsa`_ z3VCcBs+N5`CdD)XX0`WY1|k{NrjOZ(WK`yoX`W={r61c205U4m3lE7kTG?kF^&{a` zjz+uI20uoqAQ{X+7M1Y{c=9P{zobm&q*vVh{5=|HyCleY$v#mAZr&N&xosefqIi@# zPJY%>--09hP$qg*sM@Z*hw^1g7)nG9&3Wy14~raW+^Vyof5dBG2w~@GO_dcvol%uV zCsyk)5Ue_UuNIPo0Hlr$4otI-a;BR7G`!kCV!+bj#g%Jrm+PRpu#>c6*##~f*SE_s z!ktaq-fz_YOg$b39Ygbc5ugbeVZS+#p;g3I3gUN7XbJCIJ(bOco0xf-%0enBZD%uw z1K!Xv+z{C7(k|k2@C`6q>l-CXj0d}h(|&LenbZSE0pXhrk#Spzq&g3%W#K%av^*W3 zN{zOKM}EAOCDV;QB4VTxXQ7%}Vp~Wq^U~bPk>}MMR?bF~F3XKVKGh5`#|5n+AHAKO zk2#my8Foa*AQjER?(td?(!#8j=3JoZuI4pRoHA1vCrNNTbsKbKY1|69K9t{}KMNbu ziyU(DI8=3Z%Tc?#6qX6+_<6sTZbJ#l7jH*_ifXRx!5SYn3=Q51jn};sIy0&z0gj4t zvz_NyfQ%H@4a1O!4BM!5h{U$5lWLLv;WCiLa`ZIH5_7;34DAvtU`SOfhOwoETXwCJ8jI)c@I5)$$6O250EwVg ziDKEG#F*IqZlDsdP`DaA1imDTC7iZQ;ZDYdKy?HTjKnld>ky4AvU_U)RrKSrypSS! z0-@9Zc}65&NcxAqW%AK#!AvYjA7UkKFG*ALrKX+lOZ(~vzl@=Y*pWff>~))Pd2Ik( zLAnULJc%x|dMY+Yw_;|*J%MvabXZHBaLF7H{a%Q=1N#f&!RDTrdCi$QJAyOW&-ielA&trlI&;7qsTfi)SClFKtI2AdM3ss)vvH;)oTYtl zBj&aW)*o+BC0NbSh7#I$_rhJRl^!qcF;ZLMzz$1Ir=J}%ce)WHEV&?in{fz6?eRc( zN)?m(3>>gxe~LF}{Xj=&e2#4aPs=gL)1`U(C}eHTc!-T}`@y?eY)xIP0knmi3~&Q8 zH_fP$!U}2_=lJty^2Q7ZGqlgA@uS!(K)71ZWt!@8msr(`yTg|GbmV!AGsD&q(}=7= znh)Agd^#D+l*Rp52-x;_lX`-qQCmHB|K16Zk6n&kDPsxSGj`?HUW(eh-lzMs%!_I$WV?P}z=d*I^a^On ztZTPqyYQouylQVKrlSW2N2IjOppd!_R3Ln%;D$q(~_N>1uuSW3Ys z8&tF`u(>L5Nmbxgq_El_W=v-_=tsLM^s{uf``JoAb&LAB$Wnsg#g-D}v?t6c?$#(2 zVufK6f_%s)B{;LHq*NM|Fz8+yN$GPSiv>E6CC-T?0mzc*w0iVx&#mSC96Q_npcXl* z2h=>fn1MU1coZs1U{`Q2iv{|Yzw3oXFpo2PhzbTW|3&+*gv0R-?aCZO#K0z@Yf)m7 zy<2?lBpzyW$C6jhK}^BF7#GkNV*?(WAl@PV(lExMRFjkyK%GsCeA@TZEhyaFyT*i! zgW4fO_po{=Y-zv?)!isJp7c5%e1rFfni_6ZN9>Gy#uO%pO|mf^)1jPk(%z&Zw-=eC z+BGHGW^>H;EdIv}>^5-t2mmuIam3cVvb;kZK2Lt(fbqrp482arHopsE})@ zj)umiLNlFnk}>_8kK}DcP!Z*;XF97S4meN$ydus$b&CvYr?sFHF_Xw>{nwN z<9QJ2nEfF5-m}HU`%8tqbS6VWg=jMdVS?Ez8{G4TQ0 z?gZ>|`)a}QAu|AiEm*9X?z0*|+#7(zWdPUb;|@)ZCJ%=J0DzSPX!rmetliamewABP zW{loXve5)7hjYu0#>xZjWwHf1Zu}Q&62^)Z2c#7$-5=(3EKY3USr6Y7SJ0n|>)s#6 zbxdiV_u3P5QB}~R1`>c+BxPIC`Y1)D!+2RO3)r~&TJWOH`m6!#Z7~=gz2iAIh#sYP z;js2+hV6V9O%2mCOQPl1(r~nwCt-x3snsL~ai$Z~ISp2w-({V9aZ9er<7*+wH9#8Y zg|Jc`9|;{Vs$&pe9iQWIj!AwF9fJgm>X4^2n|!r8=JcHUrgAIKW;!kUUftLCVe8Oq zvsnAOhKSoDcYw2~rKV4kOL3Rg*4eGDuDDWTc?)Yza|!57M{1`fZE#s_R1&NG zd9O`fR8@>Y42-goz;RC7h)wAn!y&j@7le07;3x#o6Q=cHPyt8m0ti9{tVlqkMOIwN zCt_)6H}irz)iQnSCSF>mZ%tZCs(`qFt7bbbCH3P*OG&kuu#{AbaZJ8f`W%?Yt1f=Uc*;kx>s9Ds`6Eq($X2rCUP%1%Y)xekE_o9LOwg688=8_UY^KV=F%fau)y@zWA!*wWlhY5bqxEJOZ{Jt_kTIj{{<m%rbu8&Y6m=>nto0jNWiN3gL zVJdrhQVrF(JlJL$G`rTUIFd6#nHD=6>xLtz=r&d}k$=Xek@^h%U@4?7#IPsIcxy&A z_|~hb5m$92bnZ?RrY#j)Z%30Z&7o)mFBg1_;*?%3aNcMcyQ%~St~q@}`2i-l=z`Aa z23I*hA0Dc$0Al;|%+wp#JpBk~2^UUrLT(xg0j!rrA0vtVEx!Kqo)lyMh$qF_KkP}d z_M?_8-5bB4H@D3{>PfNnyOeZ}WFZ40x%-so$9I0&l4TRWqBn2iGoDlv_bSQw#?CT% z+#UM4?kx9nzxr|F__QYl;(I(PxE>?v(GX@z2c!H!_?%IOvwE?1v9@5C69R@K?OlzQ zu8nptrf$}<(8*woCJ@~q*+s(p;JgFFWi19wF=w63%}t zN!dH712*ENRs*!FVJ~WFq~FuC4(W7P@tq_??5-xMbNZas;efkes4)^w>d4c@Z~6 z06gr0_wrL^J;~e84WX>b7)GbRC)59Xaro>ylZ(m87^ob4GXs?gke*>ox~K-ZXtT%c*IlFaoNw})coDhfo8`_K zo-}Yuu6v-WsAPnxF2u2i#2@|=Zr&gvw}_mNWI#9)GPxd>zk%iJyR=B7p8lJ7$R<36fd+mB2M`U7sRTJsuhUv5G)Gl zu+ap_)B9|XIMsTkEIAI|9HHu}jpukWZp?s`j2<%EN-_eyM2-E)~-`YMs z8vNtp07DiE_0Uj$i5)-na$)0yTntdy!1~22u$1 zEE+?;;K8qUeUAa%DBPT+&XZ}>e}jZ3&h4wE4Lf*1cJuk|KaZ0dcxA62GDjv6xX1_y z3!U7Pq6{K%m5b=vn2woCno*Ygn2)}z=)t6>RfjNAsjabeZ%qR(K5jCP1F{y-EO|2C ze~dV$a5zRhPSTGN?^eoO#9XgyRk*Xeo0P|h(K4z{TRy`CcWLL_&mtmF9!?Xn5Xem8 z)dmDh)NB$Y%ei3|w*6_RBu(068mEml$QiAW4jK#4DNb`XVdYYaxyYB6bsZ42fe|`P}BZMNKwrc17a*-9c2*1x#loE*Yzy8c~orha2Z?u{>_5Wzpls%-LmCR z1<);}&kah6@6)IKS+71}4mxqIcsIWfOI#wi3P>CitE2R(C~UCD`m_xPwSot`*C*W8 zrb-u72z_qyKF#0lPH%<%K>Xe(lDe8FpBdx@^r_GU$lF{5I?5IjTq(+mJ)>A^_Vd?% zv9wa47>_x9yux#61wg=uq5bT`h^70URxD{lnK zMG{;)5_b(O>XX2lVnDg+4Fu}$Yf1rx-q`YB+tUvOb*rzo4Hbz$s*ycP`>4)J=z83gB~*6b>M1yA z1^hAcw0*q-{_Q_fsB`#X&N6@zKvfQnmjpE#nSiSF>>?Z7|M5a0jkpuCj>(|3xFrUF$c9EDBV&Nd?&|zw~@VvlM z@{b@}oj(~NvXn1B{Zb})N=gY?L$|SgSDvO4e<(?Ud&F1NWwo#b{KD1bmm?cflpo)& z*JTr^q$~}F?Byp|^;^WYEpng2?ieRqAF(dgwT8V-S;+1Jk%AghdH`I1>vh<75pPoX z3TGE1k2&QJwx-!D-3MUGQePLn2Kw&a4b@-PSDiDr011E;Y5NaSjv{N!q89mSP!PoE z6v~@(m!KR0JW#|?x=fQZY44}4Iqe~^ zdampyY#yx$)AbtwY|;>2IM4B92&Btt@T&-Xl z7x=3Qt&C_U1oQh5)XdGa9@iQuJGwB+L3PY-g@ERmgbb%LY|My}1^{c5p~Dw>mE0Q) zc>!H>nq@y_KXWC666yr*MCw~wZ-LYirRpJF`CBf*4jnjeV~6WZ%^o22zQc7%M{!qn z-o|?L@MSlUw2g?ea%q&yE~usxW+JZ!gEGgn)NtnKJ2zC3%{6GDCHRF*Ww2qEzi1_E zNjC+f%gIQCS?Cao{AIk@O(F0QEhWtf4eQlSjk$$UOMk>N`AT1mIjbPk3LG)73s>T6 zUi@qXn&kmPjFYh((8GdtNiye%A#r-8c%9pon^sxe5IjN;15@cfRS2;RR}NfxTsyaMQ?JgzET%nT z9)dAqc~w>v0$S+p&7{$`&R%hmm($6^r3F0}km&ChAtFI1pf zC8EPufD)iCNK>j1m=b>1g>w98_bbkDvYWb`DtU#FTaww;3{#D8UI#@fWXgGc0h9q9 z%VjNvN|$xGH(MSR3$WI2f7xy>v~5>$(1SRjdWdaHqx9;SQs+LWa8%j1Ug;RB&VI_2 zpk56IWBj8Wq!>=sgledoyguS7D1?3wbS)f>!?R)D5QYiY2)-V898O$kEmFg*1?%1T zl-LTC4W~nO6W>)do#|}qu6veGG}{koLDS}y^4N_f-ArWu7_*V#asPajBH`R6>-d8> zO7YLY{{aGj$)&q-zRG-(G|$VExNhI+JSr|e9qZ9KTB$7X07SA8vibgSB&Z@f0UMo- zQglXkl8ifeo#NR@z>VD}c;PS-vO$>bTK|tfuB$^e|GR;^W)P%<4>w9hI9jHx*;%mF&1;Q zD~i{CRlZy!He1Rh`zd9zy6(hoh$(Xke=Cy@6GLJl!FKf$evk0NZ5%FR(}G*6OWiqD zwJ|!T6!#tuuM1F) zThi`Cp&D8T*I%J^5XQ}VF6#p!WHoU+cr~dhE2`cbC!m@ILr2T*=UGy#G@t9K&Z7Px z1BlZa<6|&}VxP3jcyt>nuF@n8V)ViZV!Lj{#PcRTF;f)V(v*^FpcCWaJ;m=Lhom2R z0dQ)J9d^@)Q}%E8F(^JZdr=Gg2yGLxFejw~z5QbKpo}m{yWJ&Oe!GkGo@xSM1MH!S z^6}eU61uHQXe%y+aJWvS+g+qqRVCQpBcqy!UFe?UGds+HGzTut5y+0j9&2%wSGl9S zwY&A!U-_72^fk{#>*kiJs(_$m^bPR~mQhUtT(rC4g^Y@7Wtkic!X2WF3D)o#xyux$ zLzL8e>NVNKij?B0j!t@7kcjD}+c@zoqbD8HiW(ReP$!Ou2avLV>BMpW`@$3~|8#Zr;=nK2vxm`y5lzki1m5 z-!M=8$g?aY{n`hfE<5$iMkjGIHfV#!CQA}Xu%rWT?F{^bq3XG9S7Q?A20D0t+2L$XRE8KS{q*7D0>^^sp zwSbT^JIF#YtIO%Z7F&hNu)RLxjQJ+ui_T7%H01+j|*F2^jsEb&WFP<2N=>fp4OC9`gt0T-)D-?o#} zxE&0q8sX$LZhSd-8^WoE;}o+Rz$pR-gi{0=cwNUS5R8d*xJ02t_?J#jM}k09oty^U z9j8L~x>bNI$0)6`JktmgS`|ANX_3ottlX4`U^~K%#0$TZ5~xQyLI?#QemzG05tIkGkzr4zN=Svcl^Jn$9!K+j#Y8hJoj6e}#jL>K zEqfH!-FJZ1sw@-YJ>e}8l?6k)`dxRo)-B-CB3#mq$+<4J5Vlm<;In5;K3;S?az`N~ z4V!2Qd#ndnMo}MJ{t;e78GZm#!Vuoa%ciQC3m7Hkq#ZnWNo$y7kuYj>oM0H5QLqnh zyQ~Xt@+2q)1;kYs-8^csK43l+chYa+MQOIB|9D#0-Kqmu9)!p+Ho@{J`&A1}qj6SA zoMJicD$~5M()OS-!m>n^ATHAmq|8cE3jBd}h?Zaz;zE#?;ub|-tyC1P8VDF8X!I}< zbW1{ldw2Q>8o?%lMyu*0Xb5wFpxF-+K@+^`b)BGL5Z0>(p_+UapcLM3fgoJ)W&}Q5d5)xOQRS5~aK7P9s`W9sQpWSV5 zzsDPPoW-m=;M+f*euDQEsX?q1(YCtPsb4|iJjVU8zUz)?_%}L^-?PO{5fn!?;W7$a zmcHMrX@vXrEg+~dcujZ1eyc{pufg`7{Zd3X{8kO(+OCHdR2%klH9{cPGqGEh>_ScZ zbw$V$kp#B7sErl%#c@TLud@%KbqKs90@Z_Hp+;?Lo53ct5f#znVNn`L*-kVa%dE3r zr7PGSqo<_!^&(cnw(=jgQm*6bkF*p@)4c?)s0xV5vBS|*|RGFe?}Su2i}wqLEd%L>4=Y9ivYw@;Kt zV6FG#6p*p~UWLWeJAbE6*^+A>%m*KWfM5DJbXOQ!7t?2d+z|@&LV*oG`xF-+=I5Wn zra5|z7fFlvefXZ5b`*qG+!H1>yU9Iaeg~j5b^V?Yg9hdBWmw#)z35=ObZ$e%Av^BQ z4NlJl=f0_*C6GVSgXqZ~$WQcgD@YD3Pv1iHtrSq!{$c4xD)Fq=9dUqKs$aV3j1SNFZ^Z|FXgY&g&zs-tOCLiCG;pU!^kKTPA1zW zX!@-^k(dhUX0z^^GLD}gkrR2X=9_+JDiIB@DG4{$x`vz3w1{)m7Ivu%Za`ys)g5@E zFU@f4nsADbVomyrVyK6H#hQnVJWas2@-;n-7UP_bd(y*@EOr{euk4F-JAej{me}K0 zt5VTyc|oALs_d?7w{hk9HmG%CE5)pla#5+9aFoMmZGiGQN9COD07Lji8EK}u|1?eC zjr3wO_Tww&75ii@bqSrvCU{H{1d8<6kqdECAXeZYmyCNSd`6P0*s11cqfNL^DWHOd zPyewz4LXqn@JxXW!M8cZ9kP<=c3rB#OcO98f zJct*rL?iqS=8<1Q%k3C_Ii|OS-z(9COGgDPuc`$nq#gcNIWSCe_*>;XVmbV+a^QYl zQ`*$1IktSHni$^#Qfbcms8#h@+2yo4l+~NN_FsY*2G(NGaX8w~wa~)D)vv$B#r-%f z68)`4a?Eo0Tjj_(!jYH0oTHY*->Qt9A9gpe=d?c%f|Cc4gO7$BYNd+oIQR-`qFYB!di!H92SZ|_JP!J}fLko4PmJ)rS zngdI?(;FQoasZ+R#+ODQcULE?HcFllAl-*o&kr9^pL>H~R^v7+k1nsKHSVf*g_X;h zk4m^4Zw%V*g30akt6KAaHnZ68QF8FNVBE&`&8x40bTh&(xBv>yU)EWbvz+V!C! z+x4mS?fL*=IdSAiI^C|%8OCk0G$?c5-~FGD=$cT?GAvZzF50F_VHW=uIQ76TXUWQO z_M8)Wl^6U|dC*K@H0G`?wI)+cO)s}CH$1Tc_WoPVaq$?x+1v+t`D&BmvyVOSBB`Z< z`_o-tyQ%N`TKu&E*7Dr0*kLQ@P`c0hT`enTBj?NjE-hb^;<~-^5L?s%WAw8W@E!B7 ziQG_|8NX{n1`)I_<9N&W<=TJBk7yQ0m!kIdH%(0KncS5x%;pn&_RQ{_SeVS`CT^bG zA05~?dF$Nd&ILYB&d<-z=TrOgo2G7^+_mGz+ZHDG=R0Tj?O&KbuybK{KDzGuZ9BGI z^QIk9`A_ljFGuZ9$K~tb^G#R3X0UYMXSEW(Uv%*+w_fy`i+9}cx+^bz)Ar)Ri!a%{ z<4tdR>-9U{cHgX9sY}26 z?epL9oy(uNe$NdLu6xPlm%jef^)D`b?Akkbe|gP=pS||Zoge+-yZ-yfF1qiJ|L;qF z@3(&Ji(mWtn;%+t;47Y1cg|1lo!qyOPwv~5Pc2N&Pq5JW z+jrB^!tTj@Vd6&mn%bXF?wwn>ZDp;h#>7H?{*!F;Z>ds>3|1K{uc(GY4&fQr^~_V8`|uiI5-KM@;#G+%>4LyTpZ|J(dO!v6v31c5 Date: Thu, 14 Mar 2024 18:05:05 +0000 Subject: [PATCH 11/22] Cleaned up if_ibc_tests.cpp --- unittests/if_ibc_tests.cpp | 67 -------------------------------------- 1 file changed, 67 deletions(-) diff --git a/unittests/if_ibc_tests.cpp b/unittests/if_ibc_tests.cpp index f43450f23a..e795941909 100644 --- a/unittests/if_ibc_tests.cpp +++ b/unittests/if_ibc_tests.cpp @@ -24,16 +24,6 @@ using mvo = mutable_variant_object; BOOST_AUTO_TEST_SUITE(if_ibc) -// These are the producers and finalizers to use across all chains -const std::vector test_nodes = -{ - "a"_n, "b"_n, "c"_n, "d"_n, "e"_n, - "f"_n, "g"_n, "h"_n, "i"_n, "j"_n, - "k"_n, "l"_n, "m"_n, "n"_n, "o"_n, - "p"_n, "q"_n, "r"_n, "s"_n, "t"_n, - "u"_n -}; - // Extending the default chain tester // ( libraries/testing/include/eosio/testing/tester.hpp ) class ibc_tester : public tester { @@ -83,63 +73,6 @@ class ibc_tester : public tester { ); } -/* void check_proof(){ - - auto cr = push_action( _bridge, "checkproof"_n, _bridge, mutable_variant_object() - ("proof", mutable_variant_object() - ("finality_proof", mutable_variant_object() - ("qc_block", mutable_variant_object() - ("light_header_protocol_version_major", 1) - ("light_header_protocol_version_minor", 0) - ("finalizer_policy_generation", 1) - ("active_finalizer_policy", fc::variants()) - ("witness_hash", "888ceeb757ea240d1c1ae2f4f717e67b73dcd592b2ba097f63b4c3e3ca4350e1") - ("finality_mroot", "1d2ab7379301370d3fa1b27a9f4ac077f6ea445a1aa3dbf7e18e9cc2c25b140c") - ) - ("qc", mutable_variant_object() - ("signature", "") - ("finalizers", fc::variants()) - ) - ) - ("target_block_proof_of_inclusion", mutable_variant_object() - ("target_node_index", 7) - ("last_node_index", 7) - ("target", mutable_variant_object() - ("finality_data", mutable_variant_object() - ("major_version", 1) - ("minor_version", 0) - ("finalizer_policy_generation", 1) - ("active_finalizer_policy", fc::variants()) - ("witness_hash", "dff620c1c4d31cade95ed609269a86d4ecb2357f9302d17675c0665c75786508") - ("finality_mroot", "1397eb7c86719f160188fa740fc3610ccb5a6681ad56807dc99a17fe73a7b7fd") - ) - ("dynamic_data", mutable_variant_object() - ("block_num", 28) - ("action_proofs", fc::variants()) - ("action_mroot", "4e890ef0e014f93bd1b31fabf1041ecc9fb1c44e957c2f7b1682333ee426677a") - ) - ) - ("merkle_branches", fc::variants({ - mutable_variant_object() - ("direction", 1) - ("hash", "4e17da018040c80339f2714828d1927d5b616f9af7aa4768c1876df6f05e5602") - , - mutable_variant_object() - ("direction", 1) - ("hash", "7ee0e16f1941fb5a98d80d20ca92e0c689e9284285d5f90ecd4f8f1ea2ffb53c") - , - mutable_variant_object() - ("direction", 1) - ("hash", "401526ba03ec4a955c83cda131dacd3e89becaad2cf04107170e436dd90a553f") - })) - - ) - ) - - ); - - } - */ void check_proof(){ auto cr = push_action( _bridge, "checkproof"_n, _bridge, mutable_variant_object() From 16b7eeb9b1f3161a66c5366525df89e669d9cba3 Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Fri, 15 Mar 2024 18:24:25 -0400 Subject: [PATCH 12/22] Change error log to `warning` as it occurs in normal testing. --- libraries/chain/fork_database.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/chain/fork_database.cpp b/libraries/chain/fork_database.cpp index 5bd662c6b3..62fa6d61db 100644 --- a/libraries/chain/fork_database.cpp +++ b/libraries/chain/fork_database.cpp @@ -686,7 +686,7 @@ namespace eosio::chain { // check that fork_dbs are in a consistent state if (!legacy_valid && !savanna_valid) { - elog( "fork_database is in a bad state when closing; not writing out '${filename}', legacy_valid=${l}, savanna_valid=${s}", + wlog( "fork_database is in a bad state when closing; not writing out '${filename}', legacy_valid=${l}, savanna_valid=${s}", ("filename", fork_db_file)("l", legacy_valid)("s", savanna_valid) ); return; } From b7ff49a94e599bfa27bdf85199350f4d4d7c4984 Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Fri, 15 Mar 2024 18:26:51 -0400 Subject: [PATCH 13/22] Add dependencies to `INSTANT_FINALITY` protocol feature. and update tests. --- .../eosio/chain/protocol_feature_manager.hpp | 4 +-- libraries/chain/protocol_feature_manager.cpp | 32 +++++++++++++------ .../testing/include/eosio/testing/tester.hpp | 5 +-- libraries/testing/tester.cpp | 17 ++++++++-- unittests/protocol_feature_tests.cpp | 17 +++------- 5 files changed, 47 insertions(+), 28 deletions(-) diff --git a/libraries/chain/include/eosio/chain/protocol_feature_manager.hpp b/libraries/chain/include/eosio/chain/protocol_feature_manager.hpp index 15d3746366..0c42da5b9e 100644 --- a/libraries/chain/include/eosio/chain/protocol_feature_manager.hpp +++ b/libraries/chain/include/eosio/chain/protocol_feature_manager.hpp @@ -3,7 +3,7 @@ #include #include -namespace eosio { namespace chain { +namespace eosio::chain { class deep_mind_handler; @@ -403,7 +403,7 @@ class protocol_feature_manager { std::optional read_builtin_protocol_feature( const std::filesystem::path& p ); protocol_feature_set initialize_protocol_features( const std::filesystem::path& p, bool populate_missing_builtins = true ); -} } // namespace eosio::chain +} // namespace eosio::chain FC_REFLECT(eosio::chain::protocol_feature_subjective_restrictions, (earliest_allowed_activation_time)(preactivation_required)(enabled)) diff --git a/libraries/chain/protocol_feature_manager.cpp b/libraries/chain/protocol_feature_manager.cpp index 19eb7ad8ca..94339b7e00 100644 --- a/libraries/chain/protocol_feature_manager.cpp +++ b/libraries/chain/protocol_feature_manager.cpp @@ -310,12 +310,23 @@ retires a deferred transaction is invalid. } ) ( builtin_protocol_feature_t::instant_finality, builtin_protocol_feature_spec{ "INSTANT_FINALITY", - fc::variant("bc726a24928ea2d71ba294b70c5c9efc515c1542139bcf9e42f8bc174f2e72ff").as(), + fc::variant("bd496b9e85ce61dcddeee4576ea185add87844238da992a9ee6df2a2bdb357c2").as(), // SHA256 hash of the raw message below within the comment delimiters (do not modify message below). /* Builtin protocol feature: INSTANT_FINALITY +Depends on: DISALLOW_EMPTY_PRODUCER_SCHEDULE + WTMSIG_BLOCK_SIGNATURES + ACTION_RETURN_VALUE + BLS_PRIMITIVES2 + +Once this protocol feature is activated, the first subsequent block including a `set_finalizers` +host function call will trigger a switch to the Savanna consensus algorithm. */ - {} + { builtin_protocol_feature_t::disallow_empty_producer_schedule, + builtin_protocol_feature_t::wtmsig_block_signatures, + builtin_protocol_feature_t::action_return_value, + builtin_protocol_feature_t::bls_primitives + } } ) ; @@ -592,8 +603,8 @@ Builtin protocol feature: INSTANT_FINALITY } EOS_THROW( protocol_feature_validation_exception, - "Not all the builtin dependencies of the builtin protocol feature with codename '${codename}' and digest of ${digest} were satisfied.", - ("missing_dependencies", missing_builtins_with_names) + "Not all the builtin dependencies of the builtin protocol feature with codename '${codename}' and digest of ${digest} were satisfied. Missing dependencies: ${missing_dependencies}", + ("codename", f.builtin_feature_codename)("digest",feature_digest)("missing_dependencies", missing_builtins_with_names) ); } @@ -973,22 +984,23 @@ Builtin protocol feature: INSTANT_FINALITY auto file_path = p / filename; EOS_ASSERT( !std::filesystem::exists( file_path ), plugin_exception, - "Could not save builtin protocol feature with codename '${codename}' because a file at the following path already exists: ${path}", + "Could not save builtin protocol feature with codename '${codename}' because a file at " + "the following path already exists: ${path}", ("codename", builtin_protocol_feature_codename( f.get_codename() )) - ("path", file_path) + ("path", file_path) ); if( fc::json::save_to_file( f, file_path ) ) { ilog( "Saved default specification for builtin protocol feature '${codename}' (with digest of '${digest}') to: ${path}", ("codename", builtin_protocol_feature_codename(f.get_codename())) - ("digest", feature_digest) - ("path", file_path) + ("digest", feature_digest) + ("path", file_path) ); } else { elog( "Error occurred while writing default specification for builtin protocol feature '${codename}' (with digest of '${digest}') to: ${path}", ("codename", builtin_protocol_feature_codename(f.get_codename())) - ("digest", feature_digest) - ("path", file_path) + ("digest", feature_digest) + ("path", file_path) ); } }; diff --git a/libraries/testing/include/eosio/testing/tester.hpp b/libraries/testing/include/eosio/testing/tester.hpp index c5bf8b7923..22bf1666ce 100644 --- a/libraries/testing/include/eosio/testing/tester.hpp +++ b/libraries/testing/include/eosio/testing/tester.hpp @@ -401,11 +401,12 @@ namespace eosio { namespace testing { return cfg; } - void schedule_protocol_features_wo_preactivation(const vector feature_digests); - void preactivate_protocol_features(const vector feature_digests); + void schedule_protocol_features_wo_preactivation(const vector& feature_digests); + void preactivate_protocol_features(const vector& feature_digests); void preactivate_builtin_protocol_features(const std::vector& features); void preactivate_all_builtin_protocol_features(); void preactivate_all_but_disable_deferred_trx(); + void preactivate_savanna_protocol_features(); static genesis_state default_genesis() { genesis_state genesis; diff --git a/libraries/testing/tester.cpp b/libraries/testing/tester.cpp index d2c943912c..dc11e80887 100644 --- a/libraries/testing/tester.cpp +++ b/libraries/testing/tester.cpp @@ -1229,7 +1229,7 @@ namespace eosio { namespace testing { return tid; } - void base_tester::schedule_protocol_features_wo_preactivation(const vector feature_digests) { + void base_tester::schedule_protocol_features_wo_preactivation(const vector& feature_digests) { protocol_features_to_be_activated_wo_preactivation.insert( protocol_features_to_be_activated_wo_preactivation.end(), feature_digests.begin(), @@ -1237,13 +1237,26 @@ namespace eosio { namespace testing { ); } - void base_tester::preactivate_protocol_features(const vector feature_digests) { + void base_tester::preactivate_protocol_features(const vector& feature_digests) { for( const auto& feature_digest: feature_digests ) { push_action( config::system_account_name, "activate"_n, config::system_account_name, fc::mutable_variant_object()("feature_digest", feature_digest) ); } } + void base_tester::preactivate_savanna_protocol_features() { + const auto& pfm = control->get_protocol_feature_manager(); + const auto& d = pfm.get_builtin_digest(builtin_protocol_feature_t::instant_finality); + + // dependencies of builtin_protocol_feature_t::instant_finality + const auto& deps = pfm.get_builtin_digest(builtin_protocol_feature_t::disallow_empty_producer_schedule); + const auto& wtm = pfm.get_builtin_digest(builtin_protocol_feature_t::wtmsig_block_signatures); + const auto& arv = pfm.get_builtin_digest(builtin_protocol_feature_t::action_return_value); + const auto& bls = pfm.get_builtin_digest(builtin_protocol_feature_t::bls_primitives); + + preactivate_protocol_features( {*deps, *wtm, *arv, *bls, *d} ); + } + void base_tester::preactivate_builtin_protocol_features(const std::vector& builtins) { const auto& pfm = control->get_protocol_feature_manager(); const auto& pfs = pfm.get_protocol_feature_set(); diff --git a/unittests/protocol_feature_tests.cpp b/unittests/protocol_feature_tests.cpp index 9a082c57ea..2ac5a37a48 100644 --- a/unittests/protocol_feature_tests.cpp +++ b/unittests/protocol_feature_tests.cpp @@ -1074,13 +1074,9 @@ BOOST_AUTO_TEST_CASE( get_sender_test ) { try { BOOST_AUTO_TEST_CASE( protocol_activatation_works_after_transition_to_savanna ) { try { validating_tester c({}, {}, setup_policy::preactivate_feature_and_new_bios ); - const auto& pfm = c.control->get_protocol_feature_manager(); - const auto& d = pfm.get_builtin_digest(builtin_protocol_feature_t::instant_finality); - // needed for bios contract - const auto& dp = pfm.get_builtin_digest(builtin_protocol_feature_t::bls_primitives); - const auto& dw = pfm.get_builtin_digest(builtin_protocol_feature_t::wtmsig_block_signatures); - const auto& dwk = pfm.get_builtin_digest(builtin_protocol_feature_t::webauthn_key); - c.preactivate_protocol_features( {*d, *dp, *dw, *dwk} ); + // needed for bios contract + // const auto& dwk = pfm.get_builtin_digest(builtin_protocol_feature_t::webauthn_key); + c.preactivate_savanna_protocol_features(); c.produce_block(); c.set_bios_contract(); @@ -1143,6 +1139,7 @@ BOOST_AUTO_TEST_CASE( protocol_activatation_works_after_transition_to_savanna ) wasm_exception, fc_exception_message_is( "env.get_sender unresolveable" ) ); + const auto& pfm = c.control->get_protocol_feature_manager(); const auto& d2 = pfm.get_builtin_digest( builtin_protocol_feature_t::get_sender ); BOOST_REQUIRE( d2 ); @@ -2385,15 +2382,11 @@ BOOST_AUTO_TEST_CASE( set_finalizers_test ) { try { c.create_accounts( {alice_account} ); c.produce_block(); - const auto& pfm = c.control->get_protocol_feature_manager(); - const auto& d = pfm.get_builtin_digest(builtin_protocol_feature_t::instant_finality); - BOOST_REQUIRE(d); - BOOST_CHECK_EXCEPTION( c.set_code( config::system_account_name, import_set_finalizers_wast ), wasm_exception, fc_exception_message_is( "env.set_finalizers unresolveable" ) ); - c.preactivate_protocol_features( {*d} ); + c.preactivate_savanna_protocol_features(); c.produce_block(); // ensure it now resolves From 77ffcd1bcbf13abfae2eecf7f3543b5597cde21c Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Sat, 16 Mar 2024 09:36:05 -0400 Subject: [PATCH 14/22] Update deep_mind test log (as protocol features activation order changed) --- unittests/deep-mind/deep-mind.log | 76 +++++++++++++++---------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/unittests/deep-mind/deep-mind.log b/unittests/deep-mind/deep-mind.log index 9534635261..0e1ad5665f 100644 --- a/unittests/deep-mind/deep-mind.log +++ b/unittests/deep-mind/deep-mind.log @@ -34,11 +34,11 @@ DMLOG START_BLOCK 3 DMLOG CREATION_OP ROOT 0 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":1262304002,"value_ex":1157,"consumed":101},"ram_usage":2724} DMLOG TRX_OP CREATE onblock da9fbe9042e1bc9bd64d7a4506534d492107a29f79ad671c1fea19ae3fb70eb4 01e10b5e02005132b41600000000010000000000ea305500000000221acfa4010000000000ea305500000000a8ed32329801013b3d4b0000000000ea30550000000000015ab65a885a31e441ac485ebd2aeba87bf7ee6e7bcc40bf3a24506ba1000000000000000000000000000000000000000000000000000000000000000062267e8b11d7d8f28e1f991a4de2b08cf92500861af2795765bdc9263cd6f4cd000000000001000021010ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd000000 -DMLOG APPLIED_TRANSACTION 3 da9fbe9042e1bc9bd64d7a4506534d492107a29f79ad671c1fea19ae3fb70eb403000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb01006400000000000000000000000000000000000000000001010000010000000000ea3055ccfe3b56076237b0b6da2f580652ee1420231b96d3d96b28183769ac932c9e5902000000000000000200000000000000010000000000ea3055020000000000000000000000000000ea30550000000000ea305500000000221acfa4010000000000ea305500000000a8ed32329801013b3d4b0000000000ea30550000000000015ab65a885a31e441ac485ebd2aeba87bf7ee6e7bcc40bf3a24506ba1000000000000000000000000000000000000000000000000000000000000000062267e8b11d7d8f28e1f991a4de2b08cf92500861af2795765bdc9263cd6f4cd000000000001000021010ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd00000000000000000000da9fbe9042e1bc9bd64d7a4506534d492107a29f79ad671c1fea19ae3fb70eb403000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 da9fbe9042e1bc9bd64d7a4506534d492107a29f79ad671c1fea19ae3fb70eb403000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c01006400000000000000000000000000000000000000000001010000010000000000ea3055ccfe3b56076237b0b6da2f580652ee1420231b96d3d96b28183769ac932c9e5902000000000000000200000000000000010000000000ea3055020000000000000000000000000000ea30550000000000ea305500000000221acfa4010000000000ea305500000000a8ed32329801013b3d4b0000000000ea30550000000000015ab65a885a31e441ac485ebd2aeba87bf7ee6e7bcc40bf3a24506ba1000000000000000000000000000000000000000000000000000000000000000062267e8b11d7d8f28e1f991a4de2b08cf92500861af2795765bdc9263cd6f4cd000000000001000021010ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd00000000000000000000da9fbe9042e1bc9bd64d7a4506534d492107a29f79ad671c1fea19ae3fb70eb403000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG RAM_OP 0 eosio code add setcode eosio 180494 177770 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":35325,"consumed":6104},"cpu_usage":{"last_ordinal":1262304002,"value_ex":12732,"consumed":2101},"ram_usage":180494} -DMLOG APPLIED_TRANSACTION 3 03917c562680b415b93db73416ff29230dfbe7ab1ba4d208b46029d01333cd3a03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d0070000fb050000000000000000d8170000000000000001010000010000000000ea30559a90c525172f87bbac0a6378610727f0fe1d7ebe908df973923d29a1606f9a5703000000000000000300000000000000010000000000ea3055030000000000000001000000000000ea30550000000000ea305500000040258ab2c2010000000000ea305500000000a8ed3232fe8a010000000000ea30550000f18a010061736d01000000019d011a60000060037f7e7f0060027f7e0060027f7f0060057f7e7e7e7e0060047f7e7e7e0060017f017f60017f0060037f7f7f017f6000017f60027f7f017f60017e0060027e7f0060047e7e7e7e0060027f7f017e6000017e60047e7e7e7e017f60047f7e7e7f0060037f7f7f0060067e7e7e7e7f7f017f60047f7e7f7f0060037e7e7e0060037e7e7f017f60047f7f7e7f0060027e7e0060047f7f7f7f00028e041803656e761469735f666561747572655f616374697661746564000603656e761370726561637469766174655f66656174757265000703656e760c656f73696f5f617373657274000303656e76066d656d736574000803656e7610616374696f6e5f646174615f73697a65000903656e7610726561645f616374696f6e5f64617461000a03656e76066d656d637079000803656e760c726571756972655f61757468000b03656e760e7365745f70726976696c65676564000c03656e76137365745f7265736f757263655f6c696d697473000d03656e760561626f7274000003656e76167365745f70726f706f7365645f70726f647563657273000e03656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000303656e76206765745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000a03656e760c63757272656e745f74696d65000f03656e76146765745f6163746976655f70726f647563657273000a03656e760b64625f66696e645f693634001003656e76095f5f6173686c746933001103656e7611656f73696f5f6173736572745f636f6465000203656e761063757272656e745f7265636569766572000f03656e760a64625f6765745f693634000803656e7606736861323536001203656e760c64625f73746f72655f693634001303656e760d64625f7570646174655f69363400140347460006070007090a08060607070a0a030307070a060715011602160316041603160316030516011603030a0a0a030a17170318181818181818180318181818031818181818081904050170010a0a05030100010616037f014180c0000b7f0041abc3000b7f0041abc3000b070901056170706c79002d090f010041010b092e30323436383a3b3d0ac98001460400101b0b800101037f02400240024002402000450d004100410028028c40200041107622016a220236028c404100410028028440220320006a41076a417871220036028440200241107420004d0d0120014000417f460d020c030b41000f0b4100200241016a36028c40200141016a4000417f470d010b4100419cc000100220030f0b20030b02000b3601017f230041106b2200410036020c4100200028020c28020041076a417871220036028440410020003602804041003f0036028c400b02000b06004190c0000bf50101067f4100210202400240410020006b22032000712000470d00200041104b0d01200110190f0b101d411636020041000f0b0240024002402000417f6a220420016a10192200450d002000200420006a2003712202460d012000417c6a220328020022044107712201450d02200020044178716a220441786a2205280200210620032001200220006b2207723602002002417c6a200420026b2203200172360200200241786a20064107712201200772360200200520012003723602002000101a0b20020f0b20000f0b200241786a200041786a280200200220006b22006a3602002002417c6a200328020020006b36020020020b3301017f411621030240024020014104490d0020012002101e2201450d0120002001360200410021030b20030f0b101d2802000b3801027f02402000410120001b2201101922000d000340410021004100280298402202450d012002110000200110192200450d000b0b20000b0600200010200b0e0002402000450d002000101a0b0b0600200010220b6b01027f230041106b2202240002402002410c6a20014104200141044b1b22012000410120001b2203101f450d00024003404100280298402200450d0120001100002002410c6a20012003101f0d000c020b0b2002410036020c0b200228020c2100200241106a240020000b08002000200110240b0e0002402000450d002000101a0b0b08002000200110260b0500100a000b4e01017f230041e0006b220124002001200141d8006a3602082001200141106a3602042001200141106a36020020012000102a1a200141106a200128020420012802006b100c200141e0006a24000b920901047f02402000280208200028020422026b41074a0d00410041e8c0001002200041046a28020021020b20022001410810061a200041046a2202200228020041086a2203360200200141086a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001410c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141106a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a2203360200200141146a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141186a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001411c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141206a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a2203360200200141246a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141286a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001412c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141306a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a2203360200200141346a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141386a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001413c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141c0006a21040240200041086a220528020020036b41014a0d00410041e8c0001002200228020021030b20032004410210061a2002200228020041026a2203360200200141c2006a21010240200528020020036b41014a0d00410041e8c0001002200041046a28020021030b20032001410210061a200041046a2201200128020041026a36020020000bfa0203017f027e017f230041206b220124002001200029030022024220883c000b200120024228883c000a200120024230883c0009200120024238883c00082001200041086a29030022034220883c0003200120034228883c0002200120034230883c0001200120034238883c000020012002a722043a000f200120044108763a000e200120044110763a000d200120044118763a000c20012003a722043a0007200120044108763a0006200120044110763a0005200120044118763a00042001200041186a29030022023c00172001200029031022034220883c001b200120034228883c001a200120034230883c0019200120034238883c0018200120024220883c0013200120024228883c0012200120024230883c0011200120024238883c001020012002a722004108763a0016200120004110763a0015200120004118763a001420012003a722003a001f200120004108763a001e200120004110763a001d200120004118763a001c200110002100200141206a240020000bf60203017f027e017f230041206b220124002001200029030022024220883c000b200120024228883c000a200120024230883c0009200120024238883c00082001200041086a29030022034220883c0003200120034228883c0002200120034230883c0001200120034238883c000020012002a722043a000f200120044108763a000e200120044110763a000d200120044118763a000c20012003a722043a0007200120044108763a0006200120044110763a0005200120044118763a00042001200041186a29030022023c00172001200029031022034220883c001b200120034228883c001a200120034230883c0019200120034238883c0018200120024220883c0013200120024228883c0012200120024230883c0011200120024238883c001020012002a722004108763a0016200120004110763a0015200120004118763a001420012003a722003a001f200120004108763a001e200120004110763a001d200120004118763a001c20011001200141206a24000bcc0401017f23004190016b220324001018024020012000520d0002400240024002400240024002400240200242ffffb7f6a497b2d942570d00200242ffffffffb5f7d6d942570d01200242808080d0b2b3bb9932510d03200242808080c093fad6d942510d0420024280808080b6f7d6d942520d082003410036028c0120034101360288012003200329038801370300200120012003102f1a0c080b200242fffffffffff698d942550d0120024290a9d9d9dd8c99d6ba7f510d0420024280808080daac9bd6ba7f520d0720034100360264200341023602602003200329036037032820012001200341286a10311a0c070b2002428080b8f6a497b2d942510d0420024280808096cdebd4d942520d062003410036026c200341033602682003200329036837032020012001200341206a10331a0c060b2002428080808080f798d942510d042002428080b8f6a4979ad942520d0520034100360284012003410436028001200320032903800137030820012001200341086a10351a0c050b20034100360254200341053602502003200329035037033820012001200341386a10371a0c040b20034100360274200341063602702003200329037037031820012001200341186a10391a0c030b2003410036024c200341073602482003200329034837034020012001200341c0006a10371a0c020b2003410036027c200341083602782003200329037837031020012001200341106a103c1a0c010b2003410036025c200341093602582003200329035837033020012001200341306a103e1a0b4100101c20034190016a24000b1200200029030010072001200241004710080bd30201077f230041306b2203210420032400200228020421052002280200210641002102024010042207450d00024002402007418104490d002007101921020c010b20032007410f6a4170716b220224000b2002200710051a0b200441003a002820044200370320200220076a2103200441206a41086a210802400240200741074b0d0041004185c1001002200441206a2002410810061a200241086a21090c010b200441206a2002410810061a200241086a210920074108470d0041004185c10010020b20082009410110061a200441186a200336020020042002360210200441146a200241096a3602002004200137030820042000370300200420054101756a2103200441286a2d000021082004290320210002402005410171450d00200328020020066a28020021060b20032000200841ff0171200611010002402007418104490d002002101a0b200441306a240041010b0600200110070b830201057f230041306b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b20044200370328200220076a21030240200741074b0d0041004185c10010020b200441286a2002410810061a2004411c6a200241086a360200200441206a2003360200200420013703102004200037030820042002360218200441086a20054101756a21032004290328210002402005410171450d00200328020020066a28020021060b20032000200611020002402007418104490d002002101a0b200441306a240041010b0d0020002903001007200110290bf70201067f230041a0026b2203210420032400200228020421052002280200210641002102024010042207450d00024002402007418104490d002007101921020c010b20032007410f6a4170716b220224000b2002200710051a0b200441c8006a410041c80010031a2004200236023c200420023602382004200220076a360240200441386a200441c8006a10421a200441086a41086a220320042802403602002004200429033837030820044190016a41086a220820032802003602002004200429030837039001200441d8016a41086a20082802002203360200200441306a2003360200200420003703182004200137032020042004290390012200370328200420003703d80120044190016a200441c8006a41c80010061a200441d8016a20044190016a41c80010061a200441186a20054101756a210302402005410171450d00200328020020066a28020021060b2003200441d8016a200611030002402007418104490d002002101a0b200441a0026a240041010b130020002903001007200120022003200410090b940302067f027e23004180016b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b2004420037034820044200370340200442003703502004420037035820042002360234200420023602302004200220076a3602382004200441306a3602702004200441c0006a360210200441106a200441f0006a103f200441086a2203200428023836020020042004290330370300200441e0006a41086a2208200328020036020020042004290300370360200441f0006a41086a20082802002203360200200441286a2003360200200420003703102004200137031820042004290360220037032020042000370370200441106a20054101756a21032004290358210020042903502101200429034821092004290340210a02402005410171450d00200328020020066a28020021060b2003200a200920012000200611040002402007418104490d002002101a0b20044180016a240041010b0d00200029030010072001102c0bfe0301087f230041a0016b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b200441c0006a41186a22034200370300200441c0006a41106a22084200370300200442003703482004420037034020042002360234200420023602302004200220076a3602382004200441306a3602602004200441c0006a3602800120044180016a200441e0006a1048200441086a2209200428023836020020042004290330370300200441e0006a41086a220a20092802003602002004200429030037036020044180016a41086a200a2802002209360200200441106a41186a200936020020042000370310200420013703182004200429036022003703202004200037038001200441e0006a41186a22092003290300370300200441e0006a41106a22032008290300370300200420042903483703682004200429034037036020044180016a41186a200929030037030020044180016a41106a200329030037030020042004290368370388012004200429036037038001200441106a20054101756a210302402005410171450d00200328020020066a28020021060b200320044180016a200611030002402007418104490d002002101a0b200441a0016a240041010b5601027f23002202210320002903001007024010042200418104490d00200010192202200010051a20022000100b1a200324000f0b20022000410f6a4170716b220224002002200010051a20022000100b1a200324000bb80501077f230041f0006b220321042003240020022802042105200228020021064100210741002102024010042208450d00024002402008418104490d002008101921020c010b20032008410f6a4170716b220224000b2002200810051a0b200441003602482004420037034020042002360234200420023602302004200220086a360238200441306a200441c0006a10411a200441086a2203200428023836020020042004290330370300200441d0006a41086a2209200328020036020020042004290300370350200441e0006a41086a20092802002203360200200441286a20033602002004200037031020042001370318200420042903502200370320200420003703602004410036025820044200370350200428024420042802406b220341306d21090240024002402003450d00200941d6aad52a4f0d01200441d8006a200310202207200941306c6a36020020042007360250200420073602542004280244200428024022096b22034101480d0020072009200310061a20042004280254200341306e41306c6a22073602540b200441106a20054101756a210302402005410171450d00200328020020066a28020021060b2004410036026820044200370360200720042802506b220741306d210502402007450d00200541d6aad52a4f0d02200441e8006a200710202207200541306c6a36020020042007360260200420073602642004280254200428025022096b22054101480d0020072009200510061a20042007200541306e41306c6a3602640b2003200441e0006a2006110300024020042802602207450d0020042007360264200710220b024020042802502207450d0020042007360254200710220b02402008418104490d002002101a0b024020042802402202450d0020042002360244200210220b200441f0006a240041010f0b200441d0006a1028000b200441e0006a1028000b130002402001102b0d00410041d9c20010020b0b0900200029030010070b870302067f017e23004180016b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b2004420037035020044200370348200442003703582004200236023c200420023602382004200220076a3602402004200441386a3602702004200441c8006a360218200441186a200441f0006a1040200441086a41086a2203200428024036020020042004290338370308200441e0006a41086a2208200328020036020020042004290308370360200441f0006a41086a20082802002203360200200441306a2003360200200420003703182004200137032020042004290360220037032820042000370370200441186a20054101756a210320042903582100200429035021012004290348210902402005410171450d00200328020020066a28020021060b2003200920012000200611050002402007418104490d002002101a0b20044180016a240041010bc00203017f017e027f230041c0006b2203240020032001370338200341306a41003602002003427f37032020034200370328200320002903002204370310200320043703180240024002402004200442808080809aecb4ee312001101022004100480d000240200341106a200010452200280230200341106a460d00410041b5c00010020b20032002360208200341106a20004200200341086a1046200328022822050d010c020b2003200236020c2003200341386a3602082003200341106a2001200341086a104720032802282205450d010b024002402003412c6a220628020022002005460d000340200041686a220028020021022000410036020002402002450d00200210220b20052000470d000b200341286a28020021000c010b200521000b2006200536020020001022200341c0006a24000f0b200341c0006a24000b9e0301057f23004180016b2203240020032204200229020037035841002102024010042205450d00024002402005418104490d002005101921020c010b20032005410f6a4170716b220224000b2002200510051a0b200441d0006a4100360200200442003703402004420037034820042002360234200420023602302004200220056a360238200221030240200541074b0d0041004185c1001002200428023421030b200441c0006a2003410810061a2004200341086a360234200441306a200441c0006a41086a220310431a200441086a2206200441306a41086a28020036020020042004290330370300200441e0006a41086a2207200628020036020020042004290300370360200441f0006a41086a20072802002206360200200441286a20063602002004200037031020042001370318200420042903602200370320200420003703702004200441d8006a3602742004200441106a360270200441f0006a200441c0006a104402402005418104490d002002101a0b024020032802002202450d00200441cc006a2002360200200210220b20044180016a240041010bc10201037f20002802002102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a3602002000280200220041086a2102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a360200200041106a2102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a360200200041186a2100024020012802002201280208200128020422036b41074b0d0041004185c1001002200141046a28020021030b20002003410810061a200141046a2201200128020041086a3602000bf30101037f20002802002102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a3602002000280200220441086a2102024020012802002203280208200328020422006b41074b0d0041004185c1001002200341046a28020021000b20022000410810061a200341046a2203200328020041086a360200200441106a2100024020012802002201280208200128020422036b41074b0d0041004185c1001002200141046a28020021030b20002003410810061a200141046a2201200128020041086a3602000be80303017f017e067f2000280204210242002103200041086a2104200041046a2105410021060340024020022004280200490d00410041fbc2001002200528020021020b20022d000021072005200241016a22023602002003200741ff0071200641ff0171220674ad842103200641076a2106200221022007418001710d000b02400240024020012802042208200128020022096b41306d22072003a722024f0d002001200220076b105620012802002209200141046a2802002208470d010c020b0240200720024d0d00200141046a2009200241306c6a22083602000b20092008460d010b200041046a22042802002102200041086a210103400240200128020020026b41074b0d0041004185c1001002200428020021020b20092002410810061a2004200428020041086a220236020041002105420021030340024020022001280200490d00410041fbc2001002200428020021020b20022d000021072004200241016a22063602002003200741ff0071200541ff0171220274ad842103200241076a2105200621022007418001710d000b200920033e02082009410c6a21020240200128020020066b41204b0d0041004185c1001002200428020021060b20022006412110061a2004200428020041216a2202360200200941306a22092008470d000b0b20000b920901047f02402000280208200028020422026b41074b0d0041004185c1001002200041046a28020021020b20012002410810061a200041046a2202200228020041086a2203360200200141086a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001410c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141106a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a2203360200200141146a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141186a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001411c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141206a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a2203360200200141246a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141286a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001412c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141306a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a2203360200200141346a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141386a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001413c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141c0006a21040240200041086a220528020020036b41014b0d0041004185c1001002200228020021030b20042003410210061a2002200228020041026a2203360200200141c2006a21010240200528020020036b41014b0d0041004185c1001002200041046a28020021030b20012003410210061a200041046a2201200128020041026a36020020000ba10203017f017e057f2000280204210242002103200041086a2104200041046a2105410021060340024020022004280200490d00410041fbc2001002200528020021020b20022d000021072005200241016a22083602002003200741ff0071200641ff0171220274ad842103200241076a2106200821022007418001710d000b0240024020012802042207200128020022026b22052003a722064f0d002001200620056b1051200041046a2802002108200141046a2802002107200128020021020c010b200520064d0d00200141046a200220066a22073602000b0240200041086a28020020086b200720026b22074f0d0041004185c1001002200041046a28020021080b20022008200710061a200041046a2202200228020020076a36020020000bf80103017f017e027f230041106b22022400200242003703002002410036020820012903002103024002402001410c6a28020020012802086b2204450d002004417f4c0d01200241086a20041020220520046a36020020022005360200200220053602042001410c6a280200200141086a28020022046b22014101480d0020052004200110061a2002200520016a3602040b20002802002000280204220128020422044101756a21002001280200210102402004410171450d00200028020020016a28020021010b2000200320022001110100024020022802002201450d0020022001360204200110220b200241106a24000f0b20021028000bbf0302077f017e230041206b22022103200224000240200028021822042000411c6a2802002205460d0002400340200541786a2802002001460d012004200541686a2205470d000c020b0b20042005460d00200541686a2802002105200341206a240020050f0b02400240024020014100410010142204417f4c0d0020044181044f0d0120022004410f6a4170716b22022400410021060c020b410041eec00010020b200410192102410121060b20012002200410141a41c000102022052000360230200542003703000240200441074b0d0041004185c10010020b20052002410810061a200541106a2107200241086a21080240200441786a411f4b0d0041004185c10010020b20072008412010061a20052001360234200320053602182003200529030022093703102003200136020c0240024002402000411c6a22072802002204200041206a2802004f0d00200420093703082004200136021020034100360218200420053602002007200441186a36020020060d010c020b200041186a200341186a200341106a2003410c6a105d2006450d010b2002101a0b200328021821012003410036021802402001450d00200110220b200341206a240020050bc40103027f017e017f230022042105024020012802302000460d00410041bdc10010020b024020002903001013510d00410041ebc10010020b20012903002106200328020022032802002207200328020420076b200141106a22071015024020062001290300510d004100419ec20010020b2004220441506a2203240020032001410810061a200441586a2007412010061a20012802342002200341281017024020062000290310540d00200041106a427e200642017c2006427d561b3703000b200524000bfb0101047f230041306b2204240020042002370328024020012903001013510d004100418ac10010020b20042003360214200420013602102004200441286a36021841c000102022032001200441106a105c1a2004200336022020042003290300220237031020042003280234220536020c024002402001411c6a22062802002207200141206a2802004f0d00200720023703082007200536021020044100360220200720033602002006200741186a3602000c010b200141186a200441206a200441106a2004410c6a105d0b2000200336020420002001360200200428022021012004410036022002402001450d00200110220b200441306a24000b960305027f017e017f017e017f230041d0006b2202240020002802002103024020012802002201280208200128020422006b411f4b0d0041004185c1001002200141046a28020021000b200241306a2000412010061a200141046a2201200128020041206a3602004200210441102101200241106a2105410021004200210602400340200241306a20006a2107024020014102490d002006420886200420073100008422044238888421062001417f6a210120044208862104200041016a22004120470d010c020b024020014101460d00410041ffc20010020b200520063703082005200420073100008437030041102101200541106a21054200210442002106200041016a22004120470d000b0b024020014110460d00024020014102490d00200220042006200141037441786a1011200241086a2903002106200229030021040b20052004370300200520063703080b20032002290310370300200341086a2002290318370300200341186a200241106a41186a290300370300200341106a200241106a41106a290300370300200241d0006a24000bba0101047f230041106b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037030841002102200341086a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370308200341086a2105200441074b0d010b41004185c10010020b20052002410810061a20034200370300200241086a2102024020044178714108470d0041004185c10010020b20032002410810061a200341106a24000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000bd30201047f230041306b2202210320022400024002400240024010042204450d002004418004490d012004101921020c020b410021020c020b20022004410f6a4170716b220224000b2002200410051a0b20032002360224200320023602202003200220046a2205360228200342003703180240200441074b0d0041004185c1001002200341286a2802002105200328022421020b200341186a2002410810061a2003200241086a2202360224024020052002470d0041004185c1001002200341206a41086a2802002105200328022421020b200341176a2002410110061a2003200241016a2202360224024020052002470d0041004185c1001002200328022421020b200341166a2002410110061a2003200241016a3602242003410036021020034200370308200341206a200341086a10431a024020032802082202450d002003200236020c200210220b200341306a24000bbe0201067f0240024002400240024020002802082202200028020422036b20014f0d002003200028020022046b220520016a2206417f4c0d0241ffffffff0721070240200220046b220241feffffff034b0d0020062002410174220220022006491b2207450d020b2007102021020c030b200041046a21000340200341003a00002000200028020041016a22033602002001417f6a22010d000c040b0b41002107410021020c010b20001028000b200220076a2107200320016a20046b2104200220056a220521030340200341003a0000200341016a21032001417f6a22010d000b200220046a21042005200041046a2206280200200028020022016b22036b2102024020034101480d0020022001200310061a200028020021010b2000200236020020062004360200200041086a20073602002001450d00200110220f0b0bd00102047f017e230041106b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037030841002102200341086a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370308200341086a2105200441074b0d010b41004185c10010020b20052002410810061a200241086a2102024020044108470d0041004185c10010020b200341076a2002410110061a2003290308210620032d0007210420001007200620044100471008200341106a24000bab0202047f047e230041206b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037031841002102200341186a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370318200341186a2105200441074b0d010b41004185c10010020b20052002410810061a200241086a21050240200441787122044108470d0041004185c10010020b200341106a2005410810061a200241106a2105024020044110470d0041004185c10010020b200341086a2005410810061a200241186a2102024020044118470d0041004185c10010020b20032002410810061a200329030021062003290308210720032903102108200329031821092000100720092008200720061009200341206a24000bd30101047f230041206b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b41002102200341186a21050c020b20022004410f6a4170716b220224000b2002200410051a200341186a2105200441074b0d010b41004185c10010020b20052002410810061a200241086a21050240200441787122044108470d0041004185c10010020b200341106a2005410810061a200241106a2102024020044110470d0041004185c10010020b200341086a2002410810061a20001007200341206a24000bc60301047f23004180016b220221032002240041002104024010042205450d00024002402005418004490d002005101921040c010b20022005410f6a4170716b220424000b2004200510051a0b20032004360254200320043602502003200420056a3602582003410036024820034200370340200341d0006a200341c0006a10411a200341106a41086a2204200328025836020020032003290350370310200341e0006a41086a2205200428020036020020032003290310370360200341f0006a41086a20052802002204360200200341386a20043602002003200037032020032001370328200320032903602200370330200320003703702003410036020820034200370300200328024420032802406b220441306d2105024002402004450d00200541d6aad52a4f0d01200341086a200410202204200541306c6a36020020032004360200200320043602042003280244200328024022026b22054101480d0020042002200510061a20032003280204200541306e41306c6a3602040b200341206a20031038024020032802002204450d0020032004360204200410220b024020032802402204450d0020032004360244200410220b20034180016a24000f0b20031028000bc60301067f0240024002400240024020002802082202200028020422036b41306d20014f0d002003200028020022046b41306d220520016a220641d6aad52a4f0d0241d5aad52a21030240200220046b41306d220241a9d5aa154b0d0020062002410174220320032006491b2203450d020b200341306c102021040c030b200041046a21020340200341086a2200420037030020034200370300200341286a4200370300200341206a4200370300200341186a4200370300200341106a4200370300200041003602002002200228020041306a22033602002001417f6a22010d000c040b0b41002103410021040c010b20001028000b2004200341306c6a21072004200541306c6a220521030340200341086a2202420037030020034200370300200341286a4200370300200341206a4200370300200341186a4200370300200341106a420037030020024100360200200341306a21032001417f6a22010d000b2004200641306c6a21042005200041046a2206280200200028020022036b220141506d41306c6a2102024020014101480d0020022003200110061a200028020021030b2000200236020020062004360200200041086a20073602002003450d00200310220f0b0b8a0101037f230041e0006b2202210320022400024002400240024010042204450d002004418004490d012004101921020c020b410021020c020b20022004410f6a4170716b220224000b2002200410051a0b20032002360254200320023602502003200220046a360258200341d0006a200341086a10421a20001007200341086a1029200341e0006a24000b950101047f230041106b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037030841002102200341086a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370308200341086a2105200441074b0d010b41004185c10010020b20052002410810061a20032903081007200341106a24000bd70303047f027e017f230041f0006b2202210320022400024002400240024010042204450d002004418004490d012004101921050c020b410021050c020b20022004410f6a4170716b220524000b2005200410051a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004185c10010020b200341d0006a2005412010061a200341306a2105410021044200210702400340200341d0006a20046a2108024020024102490d002007420886200620083100008422064238888421072002417f6a210220064208862106200441016a22044120470d010c020b024020024101460d00410041ffc20010020b200520073703082005200620083100008437030041102102200541106a21054200210642002107200441016a22044120470d000b0b024020024110460d00024020024102490d00200320062007200241037441786a1011200341086a2903002107200329030021060b20052006370300200520073703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a290300370300200320032903383703182003200329033037031020001007200341106a102c200341f0006a24000be00303047f027e017f230041f0006b2202210320022400024002400240024010042204450d002004418004490d012004101921050c020b410021050c020b20022004410f6a4170716b220524000b2005200410051a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004185c10010020b200341d0006a2005412010061a200341306a2105410021044200210702400340200341d0006a20046a2108024020024102490d002007420886200620083100008422064238888421072002417f6a210220064208862106200441016a22044120470d010c020b024020024101460d00410041ffc20010020b200520073703082005200620083100008437030041102102200541106a21054200210642002107200441016a22044120470d000b0b024020024110460d00024020024102490d00200320062007200241037441786a1011200341086a2903002107200329030021060b20052006370300200520073703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a29030037030020032003290338370318200320032903303703100240200341106a102b0d00410041d9c20010020b200341f0006a24000beb0201037f23004180016b2202210320022400024002400240024010042204450d002004418004490d012004101921020c020b410021020c020b20022004410f6a4170716b220224000b2002200410051a0b20032002360254200320023602502003200220046a360258200342003703480240200441074b0d0041004185c1001002200328025421020b200341c8006a2002410810061a2003200241086a3602542003410036024020034200370338200341d0006a200341386a10431a200341086a41086a2202200341d0006a41086a28020036020020032003290350370308200341e0006a41086a2204200228020036020020032003290308370360200341f0006a41086a20042802002202360200200341306a2002360200200320003703182003200137032020032003290360220037032820032000370370200341186a2003290348200341386a103d024020032802382202450d002003200236023c200210220b20034180016a24000bbc0102037f017e230041306b22032400200020013602302000420037030020002002280204220428020029030037030020022802002101200428020422042802002205200428020420056b200041106a2204101520032000410810061a20034108722004412010061a2000200129030842808080809aecb4ee31200228020829030020002903002206200341281016360234024020062001290310540d00200141106a427e200642017c2006427d561b3703000b200341306a240020000baa0301057f024002402000280204200028020022046b41186d220541016a220641abd5aad5004f0d0041aad5aad500210702400240200028020820046b41186d220441d4aad52a4b0d0020062004410174220720072006491b2207450d010b200741186c102021040c020b41002107410021040c010b20001028000b20012802002106200141003602002004200541186c22086a2201200636020020012002290300370308200120032802003602102004200741186c6a2105200141186a210602400240200041046a280200220220002802002207460d00200420086a41686a21010340200241686a220428020021032004410036020020012003360200200141106a200241786a280200360200200141086a200241706a290300370300200141686a21012004210220072004470d000b200141186a2101200041046a2802002107200028020021020c010b200721020b20002001360200200041046a2006360200200041086a2005360200024020072002460d000340200741686a220728020021012007410036020002402001450d00200110220b20022007470d000b0b02402002450d00200210220b0b0bdf030b00419cc0000b4c6661696c656420746f20616c6c6f63617465207061676573006f626a6563742070617373656420746f206974657261746f725f746f206973206e6f7420696e206d756c74695f696e646578000041e8c0000b1d7772697465006572726f722072656164696e67206974657261746f7200004185c1000b05726561640000418ac1000b3363616e6e6f7420637265617465206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e7472616374000041bdc1000b2e6f626a6563742070617373656420746f206d6f64696679206973206e6f7420696e206d756c74695f696e646578000041ebc1000b3363616e6e6f74206d6f64696679206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e74726163740000419ec2000b3b757064617465722063616e6e6f74206368616e6765207072696d617279206b6579207768656e206d6f64696679696e6720616e206f626a656374000041d9c2000b2270726f746f636f6c2066656174757265206973206e6f7420616374697661746564000041fbc2000b04676574000041ffc2000b2c756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04b02100000000000000000000000003917c562680b415b93db73416ff29230dfbe7ab1ba4d208b46029d01333cd3a03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb010000000000ea30556ab602000000000000000000000000 +DMLOG APPLIED_TRANSACTION 3 03917c562680b415b93db73416ff29230dfbe7ab1ba4d208b46029d01333cd3a03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d0070000fb050000000000000000d8170000000000000001010000010000000000ea30559a90c525172f87bbac0a6378610727f0fe1d7ebe908df973923d29a1606f9a5703000000000000000300000000000000010000000000ea3055030000000000000001000000000000ea30550000000000ea305500000040258ab2c2010000000000ea305500000000a8ed3232fe8a010000000000ea30550000f18a010061736d01000000019d011a60000060037f7e7f0060027f7e0060027f7f0060057f7e7e7e7e0060047f7e7e7e0060017f017f60017f0060037f7f7f017f6000017f60027f7f017f60017e0060027e7f0060047e7e7e7e0060027f7f017e6000017e60047e7e7e7e017f60047f7e7e7f0060037f7f7f0060067e7e7e7e7f7f017f60047f7e7f7f0060037e7e7e0060037e7e7f017f60047f7f7e7f0060027e7e0060047f7f7f7f00028e041803656e761469735f666561747572655f616374697661746564000603656e761370726561637469766174655f66656174757265000703656e760c656f73696f5f617373657274000303656e76066d656d736574000803656e7610616374696f6e5f646174615f73697a65000903656e7610726561645f616374696f6e5f64617461000a03656e76066d656d637079000803656e760c726571756972655f61757468000b03656e760e7365745f70726976696c65676564000c03656e76137365745f7265736f757263655f6c696d697473000d03656e760561626f7274000003656e76167365745f70726f706f7365645f70726f647563657273000e03656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000303656e76206765745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000a03656e760c63757272656e745f74696d65000f03656e76146765745f6163746976655f70726f647563657273000a03656e760b64625f66696e645f693634001003656e76095f5f6173686c746933001103656e7611656f73696f5f6173736572745f636f6465000203656e761063757272656e745f7265636569766572000f03656e760a64625f6765745f693634000803656e7606736861323536001203656e760c64625f73746f72655f693634001303656e760d64625f7570646174655f69363400140347460006070007090a08060607070a0a030307070a060715011602160316041603160316030516011603030a0a0a030a17170318181818181818180318181818031818181818081904050170010a0a05030100010616037f014180c0000b7f0041abc3000b7f0041abc3000b070901056170706c79002d090f010041010b092e30323436383a3b3d0ac98001460400101b0b800101037f02400240024002402000450d004100410028028c40200041107622016a220236028c404100410028028440220320006a41076a417871220036028440200241107420004d0d0120014000417f460d020c030b41000f0b4100200241016a36028c40200141016a4000417f470d010b4100419cc000100220030f0b20030b02000b3601017f230041106b2200410036020c4100200028020c28020041076a417871220036028440410020003602804041003f0036028c400b02000b06004190c0000bf50101067f4100210202400240410020006b22032000712000470d00200041104b0d01200110190f0b101d411636020041000f0b0240024002402000417f6a220420016a10192200450d002000200420006a2003712202460d012000417c6a220328020022044107712201450d02200020044178716a220441786a2205280200210620032001200220006b2207723602002002417c6a200420026b2203200172360200200241786a20064107712201200772360200200520012003723602002000101a0b20020f0b20000f0b200241786a200041786a280200200220006b22006a3602002002417c6a200328020020006b36020020020b3301017f411621030240024020014104490d0020012002101e2201450d0120002001360200410021030b20030f0b101d2802000b3801027f02402000410120001b2201101922000d000340410021004100280298402202450d012002110000200110192200450d000b0b20000b0600200010200b0e0002402000450d002000101a0b0b0600200010220b6b01027f230041106b2202240002402002410c6a20014104200141044b1b22012000410120001b2203101f450d00024003404100280298402200450d0120001100002002410c6a20012003101f0d000c020b0b2002410036020c0b200228020c2100200241106a240020000b08002000200110240b0e0002402000450d002000101a0b0b08002000200110260b0500100a000b4e01017f230041e0006b220124002001200141d8006a3602082001200141106a3602042001200141106a36020020012000102a1a200141106a200128020420012802006b100c200141e0006a24000b920901047f02402000280208200028020422026b41074a0d00410041e8c0001002200041046a28020021020b20022001410810061a200041046a2202200228020041086a2203360200200141086a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001410c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141106a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a2203360200200141146a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141186a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001411c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141206a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a2203360200200141246a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141286a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001412c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141306a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a2203360200200141346a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141386a21040240200041086a220528020020036b41034a0d00410041e8c0001002200228020021030b20032004410410061a2002200228020041046a22033602002001413c6a21020240200528020020036b41034a0d00410041e8c0001002200041046a28020021030b20032002410410061a200041046a2202200228020041046a2203360200200141c0006a21040240200041086a220528020020036b41014a0d00410041e8c0001002200228020021030b20032004410210061a2002200228020041026a2203360200200141c2006a21010240200528020020036b41014a0d00410041e8c0001002200041046a28020021030b20032001410210061a200041046a2201200128020041026a36020020000bfa0203017f027e017f230041206b220124002001200029030022024220883c000b200120024228883c000a200120024230883c0009200120024238883c00082001200041086a29030022034220883c0003200120034228883c0002200120034230883c0001200120034238883c000020012002a722043a000f200120044108763a000e200120044110763a000d200120044118763a000c20012003a722043a0007200120044108763a0006200120044110763a0005200120044118763a00042001200041186a29030022023c00172001200029031022034220883c001b200120034228883c001a200120034230883c0019200120034238883c0018200120024220883c0013200120024228883c0012200120024230883c0011200120024238883c001020012002a722004108763a0016200120004110763a0015200120004118763a001420012003a722003a001f200120004108763a001e200120004110763a001d200120004118763a001c200110002100200141206a240020000bf60203017f027e017f230041206b220124002001200029030022024220883c000b200120024228883c000a200120024230883c0009200120024238883c00082001200041086a29030022034220883c0003200120034228883c0002200120034230883c0001200120034238883c000020012002a722043a000f200120044108763a000e200120044110763a000d200120044118763a000c20012003a722043a0007200120044108763a0006200120044110763a0005200120044118763a00042001200041186a29030022023c00172001200029031022034220883c001b200120034228883c001a200120034230883c0019200120034238883c0018200120024220883c0013200120024228883c0012200120024230883c0011200120024238883c001020012002a722004108763a0016200120004110763a0015200120004118763a001420012003a722003a001f200120004108763a001e200120004110763a001d200120004118763a001c20011001200141206a24000bcc0401017f23004190016b220324001018024020012000520d0002400240024002400240024002400240200242ffffb7f6a497b2d942570d00200242ffffffffb5f7d6d942570d01200242808080d0b2b3bb9932510d03200242808080c093fad6d942510d0420024280808080b6f7d6d942520d082003410036028c0120034101360288012003200329038801370300200120012003102f1a0c080b200242fffffffffff698d942550d0120024290a9d9d9dd8c99d6ba7f510d0420024280808080daac9bd6ba7f520d0720034100360264200341023602602003200329036037032820012001200341286a10311a0c070b2002428080b8f6a497b2d942510d0420024280808096cdebd4d942520d062003410036026c200341033602682003200329036837032020012001200341206a10331a0c060b2002428080808080f798d942510d042002428080b8f6a4979ad942520d0520034100360284012003410436028001200320032903800137030820012001200341086a10351a0c050b20034100360254200341053602502003200329035037033820012001200341386a10371a0c040b20034100360274200341063602702003200329037037031820012001200341186a10391a0c030b2003410036024c200341073602482003200329034837034020012001200341c0006a10371a0c020b2003410036027c200341083602782003200329037837031020012001200341106a103c1a0c010b2003410036025c200341093602582003200329035837033020012001200341306a103e1a0b4100101c20034190016a24000b1200200029030010072001200241004710080bd30201077f230041306b2203210420032400200228020421052002280200210641002102024010042207450d00024002402007418104490d002007101921020c010b20032007410f6a4170716b220224000b2002200710051a0b200441003a002820044200370320200220076a2103200441206a41086a210802400240200741074b0d0041004185c1001002200441206a2002410810061a200241086a21090c010b200441206a2002410810061a200241086a210920074108470d0041004185c10010020b20082009410110061a200441186a200336020020042002360210200441146a200241096a3602002004200137030820042000370300200420054101756a2103200441286a2d000021082004290320210002402005410171450d00200328020020066a28020021060b20032000200841ff0171200611010002402007418104490d002002101a0b200441306a240041010b0600200110070b830201057f230041306b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b20044200370328200220076a21030240200741074b0d0041004185c10010020b200441286a2002410810061a2004411c6a200241086a360200200441206a2003360200200420013703102004200037030820042002360218200441086a20054101756a21032004290328210002402005410171450d00200328020020066a28020021060b20032000200611020002402007418104490d002002101a0b200441306a240041010b0d0020002903001007200110290bf70201067f230041a0026b2203210420032400200228020421052002280200210641002102024010042207450d00024002402007418104490d002007101921020c010b20032007410f6a4170716b220224000b2002200710051a0b200441c8006a410041c80010031a2004200236023c200420023602382004200220076a360240200441386a200441c8006a10421a200441086a41086a220320042802403602002004200429033837030820044190016a41086a220820032802003602002004200429030837039001200441d8016a41086a20082802002203360200200441306a2003360200200420003703182004200137032020042004290390012200370328200420003703d80120044190016a200441c8006a41c80010061a200441d8016a20044190016a41c80010061a200441186a20054101756a210302402005410171450d00200328020020066a28020021060b2003200441d8016a200611030002402007418104490d002002101a0b200441a0026a240041010b130020002903001007200120022003200410090b940302067f027e23004180016b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b2004420037034820044200370340200442003703502004420037035820042002360234200420023602302004200220076a3602382004200441306a3602702004200441c0006a360210200441106a200441f0006a103f200441086a2203200428023836020020042004290330370300200441e0006a41086a2208200328020036020020042004290300370360200441f0006a41086a20082802002203360200200441286a2003360200200420003703102004200137031820042004290360220037032020042000370370200441106a20054101756a21032004290358210020042903502101200429034821092004290340210a02402005410171450d00200328020020066a28020021060b2003200a200920012000200611040002402007418104490d002002101a0b20044180016a240041010b0d00200029030010072001102c0bfe0301087f230041a0016b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b200441c0006a41186a22034200370300200441c0006a41106a22084200370300200442003703482004420037034020042002360234200420023602302004200220076a3602382004200441306a3602602004200441c0006a3602800120044180016a200441e0006a1048200441086a2209200428023836020020042004290330370300200441e0006a41086a220a20092802003602002004200429030037036020044180016a41086a200a2802002209360200200441106a41186a200936020020042000370310200420013703182004200429036022003703202004200037038001200441e0006a41186a22092003290300370300200441e0006a41106a22032008290300370300200420042903483703682004200429034037036020044180016a41186a200929030037030020044180016a41106a200329030037030020042004290368370388012004200429036037038001200441106a20054101756a210302402005410171450d00200328020020066a28020021060b200320044180016a200611030002402007418104490d002002101a0b200441a0016a240041010b5601027f23002202210320002903001007024010042200418104490d00200010192202200010051a20022000100b1a200324000f0b20022000410f6a4170716b220224002002200010051a20022000100b1a200324000bb80501077f230041f0006b220321042003240020022802042105200228020021064100210741002102024010042208450d00024002402008418104490d002008101921020c010b20032008410f6a4170716b220224000b2002200810051a0b200441003602482004420037034020042002360234200420023602302004200220086a360238200441306a200441c0006a10411a200441086a2203200428023836020020042004290330370300200441d0006a41086a2209200328020036020020042004290300370350200441e0006a41086a20092802002203360200200441286a20033602002004200037031020042001370318200420042903502200370320200420003703602004410036025820044200370350200428024420042802406b220341306d21090240024002402003450d00200941d6aad52a4f0d01200441d8006a200310202207200941306c6a36020020042007360250200420073602542004280244200428024022096b22034101480d0020072009200310061a20042004280254200341306e41306c6a22073602540b200441106a20054101756a210302402005410171450d00200328020020066a28020021060b2004410036026820044200370360200720042802506b220741306d210502402007450d00200541d6aad52a4f0d02200441e8006a200710202207200541306c6a36020020042007360260200420073602642004280254200428025022096b22054101480d0020072009200510061a20042007200541306e41306c6a3602640b2003200441e0006a2006110300024020042802602207450d0020042007360264200710220b024020042802502207450d0020042007360254200710220b02402008418104490d002002101a0b024020042802402202450d0020042002360244200210220b200441f0006a240041010f0b200441d0006a1028000b200441e0006a1028000b130002402001102b0d00410041d9c20010020b0b0900200029030010070b870302067f017e23004180016b22032104200324002002280204210520022802002106024002400240024010042207450d002007418104490d012007101921020c020b410021020c020b20032007410f6a4170716b220224000b2002200710051a0b2004420037035020044200370348200442003703582004200236023c200420023602382004200220076a3602402004200441386a3602702004200441c8006a360218200441186a200441f0006a1040200441086a41086a2203200428024036020020042004290338370308200441e0006a41086a2208200328020036020020042004290308370360200441f0006a41086a20082802002203360200200441306a2003360200200420003703182004200137032020042004290360220037032820042000370370200441186a20054101756a210320042903582100200429035021012004290348210902402005410171450d00200328020020066a28020021060b2003200920012000200611050002402007418104490d002002101a0b20044180016a240041010bc00203017f017e027f230041c0006b2203240020032001370338200341306a41003602002003427f37032020034200370328200320002903002204370310200320043703180240024002402004200442808080809aecb4ee312001101022004100480d000240200341106a200010452200280230200341106a460d00410041b5c00010020b20032002360208200341106a20004200200341086a1046200328022822050d010c020b2003200236020c2003200341386a3602082003200341106a2001200341086a104720032802282205450d010b024002402003412c6a220628020022002005460d000340200041686a220028020021022000410036020002402002450d00200210220b20052000470d000b200341286a28020021000c010b200521000b2006200536020020001022200341c0006a24000f0b200341c0006a24000b9e0301057f23004180016b2203240020032204200229020037035841002102024010042205450d00024002402005418104490d002005101921020c010b20032005410f6a4170716b220224000b2002200510051a0b200441d0006a4100360200200442003703402004420037034820042002360234200420023602302004200220056a360238200221030240200541074b0d0041004185c1001002200428023421030b200441c0006a2003410810061a2004200341086a360234200441306a200441c0006a41086a220310431a200441086a2206200441306a41086a28020036020020042004290330370300200441e0006a41086a2207200628020036020020042004290300370360200441f0006a41086a20072802002206360200200441286a20063602002004200037031020042001370318200420042903602200370320200420003703702004200441d8006a3602742004200441106a360270200441f0006a200441c0006a104402402005418104490d002002101a0b024020032802002202450d00200441cc006a2002360200200210220b20044180016a240041010bc10201037f20002802002102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a3602002000280200220041086a2102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a360200200041106a2102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a360200200041186a2100024020012802002201280208200128020422036b41074b0d0041004185c1001002200141046a28020021030b20002003410810061a200141046a2201200128020041086a3602000bf30101037f20002802002102024020012802002203280208200328020422046b41074b0d0041004185c1001002200341046a28020021040b20022004410810061a200341046a2203200328020041086a3602002000280200220441086a2102024020012802002203280208200328020422006b41074b0d0041004185c1001002200341046a28020021000b20022000410810061a200341046a2203200328020041086a360200200441106a2100024020012802002201280208200128020422036b41074b0d0041004185c1001002200141046a28020021030b20002003410810061a200141046a2201200128020041086a3602000be80303017f017e067f2000280204210242002103200041086a2104200041046a2105410021060340024020022004280200490d00410041fbc2001002200528020021020b20022d000021072005200241016a22023602002003200741ff0071200641ff0171220674ad842103200641076a2106200221022007418001710d000b02400240024020012802042208200128020022096b41306d22072003a722024f0d002001200220076b105620012802002209200141046a2802002208470d010c020b0240200720024d0d00200141046a2009200241306c6a22083602000b20092008460d010b200041046a22042802002102200041086a210103400240200128020020026b41074b0d0041004185c1001002200428020021020b20092002410810061a2004200428020041086a220236020041002105420021030340024020022001280200490d00410041fbc2001002200428020021020b20022d000021072004200241016a22063602002003200741ff0071200541ff0171220274ad842103200241076a2105200621022007418001710d000b200920033e02082009410c6a21020240200128020020066b41204b0d0041004185c1001002200428020021060b20022006412110061a2004200428020041216a2202360200200941306a22092008470d000b0b20000b920901047f02402000280208200028020422026b41074b0d0041004185c1001002200041046a28020021020b20012002410810061a200041046a2202200228020041086a2203360200200141086a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001410c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141106a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a2203360200200141146a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141186a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001411c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141206a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a2203360200200141246a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141286a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001412c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141306a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a2203360200200141346a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141386a21040240200041086a220528020020036b41034b0d0041004185c1001002200228020021030b20042003410410061a2002200228020041046a22033602002001413c6a21020240200528020020036b41034b0d0041004185c1001002200041046a28020021030b20022003410410061a200041046a2202200228020041046a2203360200200141c0006a21040240200041086a220528020020036b41014b0d0041004185c1001002200228020021030b20042003410210061a2002200228020041026a2203360200200141c2006a21010240200528020020036b41014b0d0041004185c1001002200041046a28020021030b20012003410210061a200041046a2201200128020041026a36020020000ba10203017f017e057f2000280204210242002103200041086a2104200041046a2105410021060340024020022004280200490d00410041fbc2001002200528020021020b20022d000021072005200241016a22083602002003200741ff0071200641ff0171220274ad842103200241076a2106200821022007418001710d000b0240024020012802042207200128020022026b22052003a722064f0d002001200620056b1051200041046a2802002108200141046a2802002107200128020021020c010b200520064d0d00200141046a200220066a22073602000b0240200041086a28020020086b200720026b22074f0d0041004185c1001002200041046a28020021080b20022008200710061a200041046a2202200228020020076a36020020000bf80103017f017e027f230041106b22022400200242003703002002410036020820012903002103024002402001410c6a28020020012802086b2204450d002004417f4c0d01200241086a20041020220520046a36020020022005360200200220053602042001410c6a280200200141086a28020022046b22014101480d0020052004200110061a2002200520016a3602040b20002802002000280204220128020422044101756a21002001280200210102402004410171450d00200028020020016a28020021010b2000200320022001110100024020022802002201450d0020022001360204200110220b200241106a24000f0b20021028000bbf0302077f017e230041206b22022103200224000240200028021822042000411c6a2802002205460d0002400340200541786a2802002001460d012004200541686a2205470d000c020b0b20042005460d00200541686a2802002105200341206a240020050f0b02400240024020014100410010142204417f4c0d0020044181044f0d0120022004410f6a4170716b22022400410021060c020b410041eec00010020b200410192102410121060b20012002200410141a41c000102022052000360230200542003703000240200441074b0d0041004185c10010020b20052002410810061a200541106a2107200241086a21080240200441786a411f4b0d0041004185c10010020b20072008412010061a20052001360234200320053602182003200529030022093703102003200136020c0240024002402000411c6a22072802002204200041206a2802004f0d00200420093703082004200136021020034100360218200420053602002007200441186a36020020060d010c020b200041186a200341186a200341106a2003410c6a105d2006450d010b2002101a0b200328021821012003410036021802402001450d00200110220b200341206a240020050bc40103027f017e017f230022042105024020012802302000460d00410041bdc10010020b024020002903001013510d00410041ebc10010020b20012903002106200328020022032802002207200328020420076b200141106a22071015024020062001290300510d004100419ec20010020b2004220441506a2203240020032001410810061a200441586a2007412010061a20012802342002200341281017024020062000290310540d00200041106a427e200642017c2006427d561b3703000b200524000bfb0101047f230041306b2204240020042002370328024020012903001013510d004100418ac10010020b20042003360214200420013602102004200441286a36021841c000102022032001200441106a105c1a2004200336022020042003290300220237031020042003280234220536020c024002402001411c6a22062802002207200141206a2802004f0d00200720023703082007200536021020044100360220200720033602002006200741186a3602000c010b200141186a200441206a200441106a2004410c6a105d0b2000200336020420002001360200200428022021012004410036022002402001450d00200110220b200441306a24000b960305027f017e017f017e017f230041d0006b2202240020002802002103024020012802002201280208200128020422006b411f4b0d0041004185c1001002200141046a28020021000b200241306a2000412010061a200141046a2201200128020041206a3602004200210441102101200241106a2105410021004200210602400340200241306a20006a2107024020014102490d002006420886200420073100008422044238888421062001417f6a210120044208862104200041016a22004120470d010c020b024020014101460d00410041ffc20010020b200520063703082005200420073100008437030041102101200541106a21054200210442002106200041016a22004120470d000b0b024020014110460d00024020014102490d00200220042006200141037441786a1011200241086a2903002106200229030021040b20052004370300200520063703080b20032002290310370300200341086a2002290318370300200341186a200241106a41186a290300370300200341106a200241106a41106a290300370300200241d0006a24000bba0101047f230041106b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037030841002102200341086a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370308200341086a2105200441074b0d010b41004185c10010020b20052002410810061a20034200370300200241086a2102024020044178714108470d0041004185c10010020b20032002410810061a200341106a24000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000b4401037f230022022103024010042204450d00024002402004418004490d002004101921020c010b20022004410f6a4170716b220224000b2002200410051a0b200324000bd30201047f230041306b2202210320022400024002400240024010042204450d002004418004490d012004101921020c020b410021020c020b20022004410f6a4170716b220224000b2002200410051a0b20032002360224200320023602202003200220046a2205360228200342003703180240200441074b0d0041004185c1001002200341286a2802002105200328022421020b200341186a2002410810061a2003200241086a2202360224024020052002470d0041004185c1001002200341206a41086a2802002105200328022421020b200341176a2002410110061a2003200241016a2202360224024020052002470d0041004185c1001002200328022421020b200341166a2002410110061a2003200241016a3602242003410036021020034200370308200341206a200341086a10431a024020032802082202450d002003200236020c200210220b200341306a24000bbe0201067f0240024002400240024020002802082202200028020422036b20014f0d002003200028020022046b220520016a2206417f4c0d0241ffffffff0721070240200220046b220241feffffff034b0d0020062002410174220220022006491b2207450d020b2007102021020c030b200041046a21000340200341003a00002000200028020041016a22033602002001417f6a22010d000c040b0b41002107410021020c010b20001028000b200220076a2107200320016a20046b2104200220056a220521030340200341003a0000200341016a21032001417f6a22010d000b200220046a21042005200041046a2206280200200028020022016b22036b2102024020034101480d0020022001200310061a200028020021010b2000200236020020062004360200200041086a20073602002001450d00200110220f0b0bd00102047f017e230041106b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037030841002102200341086a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370308200341086a2105200441074b0d010b41004185c10010020b20052002410810061a200241086a2102024020044108470d0041004185c10010020b200341076a2002410110061a2003290308210620032d0007210420001007200620044100471008200341106a24000bab0202047f047e230041206b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037031841002102200341186a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370318200341186a2105200441074b0d010b41004185c10010020b20052002410810061a200241086a21050240200441787122044108470d0041004185c10010020b200341106a2005410810061a200241106a2105024020044110470d0041004185c10010020b200341086a2005410810061a200241186a2102024020044118470d0041004185c10010020b20032002410810061a200329030021062003290308210720032903102108200329031821092000100720092008200720061009200341206a24000bd30101047f230041206b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b41002102200341186a21050c020b20022004410f6a4170716b220224000b2002200410051a200341186a2105200441074b0d010b41004185c10010020b20052002410810061a200241086a21050240200441787122044108470d0041004185c10010020b200341106a2005410810061a200241106a2102024020044110470d0041004185c10010020b200341086a2002410810061a20001007200341206a24000bc60301047f23004180016b220221032002240041002104024010042205450d00024002402005418004490d002005101921040c010b20022005410f6a4170716b220424000b2004200510051a0b20032004360254200320043602502003200420056a3602582003410036024820034200370340200341d0006a200341c0006a10411a200341106a41086a2204200328025836020020032003290350370310200341e0006a41086a2205200428020036020020032003290310370360200341f0006a41086a20052802002204360200200341386a20043602002003200037032020032001370328200320032903602200370330200320003703702003410036020820034200370300200328024420032802406b220441306d2105024002402004450d00200541d6aad52a4f0d01200341086a200410202204200541306c6a36020020032004360200200320043602042003280244200328024022026b22054101480d0020042002200510061a20032003280204200541306e41306c6a3602040b200341206a20031038024020032802002204450d0020032004360204200410220b024020032802402204450d0020032004360244200410220b20034180016a24000f0b20031028000bc60301067f0240024002400240024020002802082202200028020422036b41306d20014f0d002003200028020022046b41306d220520016a220641d6aad52a4f0d0241d5aad52a21030240200220046b41306d220241a9d5aa154b0d0020062002410174220320032006491b2203450d020b200341306c102021040c030b200041046a21020340200341086a2200420037030020034200370300200341286a4200370300200341206a4200370300200341186a4200370300200341106a4200370300200041003602002002200228020041306a22033602002001417f6a22010d000c040b0b41002103410021040c010b20001028000b2004200341306c6a21072004200541306c6a220521030340200341086a2202420037030020034200370300200341286a4200370300200341206a4200370300200341186a4200370300200341106a420037030020024100360200200341306a21032001417f6a22010d000b2004200641306c6a21042005200041046a2206280200200028020022036b220141506d41306c6a2102024020014101480d0020022003200110061a200028020021030b2000200236020020062004360200200041086a20073602002003450d00200310220f0b0b8a0101037f230041e0006b2202210320022400024002400240024010042204450d002004418004490d012004101921020c020b410021020c020b20022004410f6a4170716b220224000b2002200410051a0b20032002360254200320023602502003200220046a360258200341d0006a200341086a10421a20001007200341086a1029200341e0006a24000b950101047f230041106b22022103200224000240024002400240024010042204450d002004418004490d012004101921020c020b2003420037030841002102200341086a21050c020b20022004410f6a4170716b220224000b2002200410051a20034200370308200341086a2105200441074b0d010b41004185c10010020b20052002410810061a20032903081007200341106a24000bd70303047f027e017f230041f0006b2202210320022400024002400240024010042204450d002004418004490d012004101921050c020b410021050c020b20022004410f6a4170716b220524000b2005200410051a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004185c10010020b200341d0006a2005412010061a200341306a2105410021044200210702400340200341d0006a20046a2108024020024102490d002007420886200620083100008422064238888421072002417f6a210220064208862106200441016a22044120470d010c020b024020024101460d00410041ffc20010020b200520073703082005200620083100008437030041102102200541106a21054200210642002107200441016a22044120470d000b0b024020024110460d00024020024102490d00200320062007200241037441786a1011200341086a2903002107200329030021060b20052006370300200520073703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a290300370300200320032903383703182003200329033037031020001007200341106a102c200341f0006a24000be00303047f027e017f230041f0006b2202210320022400024002400240024010042204450d002004418004490d012004101921050c020b410021050c020b20022004410f6a4170716b220524000b2005200410051a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004185c10010020b200341d0006a2005412010061a200341306a2105410021044200210702400340200341d0006a20046a2108024020024102490d002007420886200620083100008422064238888421072002417f6a210220064208862106200441016a22044120470d010c020b024020024101460d00410041ffc20010020b200520073703082005200620083100008437030041102102200541106a21054200210642002107200441016a22044120470d000b0b024020024110460d00024020024102490d00200320062007200241037441786a1011200341086a2903002107200329030021060b20052006370300200520073703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a29030037030020032003290338370318200320032903303703100240200341106a102b0d00410041d9c20010020b200341f0006a24000beb0201037f23004180016b2202210320022400024002400240024010042204450d002004418004490d012004101921020c020b410021020c020b20022004410f6a4170716b220224000b2002200410051a0b20032002360254200320023602502003200220046a360258200342003703480240200441074b0d0041004185c1001002200328025421020b200341c8006a2002410810061a2003200241086a3602542003410036024020034200370338200341d0006a200341386a10431a200341086a41086a2202200341d0006a41086a28020036020020032003290350370308200341e0006a41086a2204200228020036020020032003290308370360200341f0006a41086a20042802002202360200200341306a2002360200200320003703182003200137032020032003290360220037032820032000370370200341186a2003290348200341386a103d024020032802382202450d002003200236023c200210220b20034180016a24000bbc0102037f017e230041306b22032400200020013602302000420037030020002002280204220428020029030037030020022802002101200428020422042802002205200428020420056b200041106a2204101520032000410810061a20034108722004412010061a2000200129030842808080809aecb4ee31200228020829030020002903002206200341281016360234024020062001290310540d00200141106a427e200642017c2006427d561b3703000b200341306a240020000baa0301057f024002402000280204200028020022046b41186d220541016a220641abd5aad5004f0d0041aad5aad500210702400240200028020820046b41186d220441d4aad52a4b0d0020062004410174220720072006491b2207450d010b200741186c102021040c020b41002107410021040c010b20001028000b20012802002106200141003602002004200541186c22086a2201200636020020012002290300370308200120032802003602102004200741186c6a2105200141186a210602400240200041046a280200220220002802002207460d00200420086a41686a21010340200241686a220428020021032004410036020020012003360200200141106a200241786a280200360200200141086a200241706a290300370300200141686a21012004210220072004470d000b200141186a2101200041046a2802002107200028020021020c010b200721020b20002001360200200041046a2006360200200041086a2005360200024020072002460d000340200741686a220728020021012007410036020002402001450d00200110220b20022007470d000b0b02402002450d00200210220b0b0bdf030b00419cc0000b4c6661696c656420746f20616c6c6f63617465207061676573006f626a6563742070617373656420746f206974657261746f725f746f206973206e6f7420696e206d756c74695f696e646578000041e8c0000b1d7772697465006572726f722072656164696e67206974657261746f7200004185c1000b05726561640000418ac1000b3363616e6e6f7420637265617465206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e7472616374000041bdc1000b2e6f626a6563742070617373656420746f206d6f64696679206973206e6f7420696e206d756c74695f696e646578000041ebc1000b3363616e6e6f74206d6f64696679206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e74726163740000419ec2000b3b757064617465722063616e6e6f74206368616e6765207072696d617279206b6579207768656e206d6f64696679696e6720616e206f626a656374000041d9c2000b2270726f746f636f6c2066656174757265206973206e6f7420616374697661746564000041fbc2000b04676574000041ffc2000b2c756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04b02100000000000000000000000003917c562680b415b93db73416ff29230dfbe7ab1ba4d208b46029d01333cd3a03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c010000000000ea30556ab602000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG RAM_OP 0 eosio abi update setabi eosio 180538 44 DMLOG RAM_OP 0 eosio:eosio:abihash table add create_table eosio 180650 112 @@ -46,98 +46,98 @@ DMLOG TBL_OP INS 0 eosio eosio abihash eosio DMLOG RAM_OP 0 eosio:eosio:abihash:eosio table_row add primary_index_add eosio 180802 152 DMLOG DB_OP INS 0 eosio eosio eosio abihash eosio 0000000000ea3055d7abd75d188060de8a01ab2672d1cc2cd768fddc56203181b43685cc11f5ce46 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":41298,"consumed":7136},"cpu_usage":{"last_ordinal":1262304002,"value_ex":24307,"consumed":4101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 78216184577675cf681592f18c754116fdf63576c1fa05b7566dd6ae6fe2ed8003000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d00700008101000000000000000008040000000000000001010000010000000000ea3055e7de58a9939c6e694d3235202685f51b7fab8e82b1f9f96a637dafd9be0998a204000000000000000400000000000000010000000000ea3055040000000000000001010000000000ea30550000000000ea305500000000b863b2c2010000000000ea305500000000a8ed32328a110000000000ea305580110e656f73696f3a3a6162692f312e310019086162695f686173680002056f776e6572046e616d6504686173680b636865636b73756d32353608616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431360b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f69640b636865636b73756d3235360a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d650a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f747278056279746573107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431360c70726f64756365725f6b657900020d70726f64756365725f6e616d65046e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730a736574676c696d69747300030372616d0675696e743634036e65740675696e743634036370750675696e74363409736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380873657470726f64730001087363686564756c650e70726f64756365725f6b65795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f726974790b776169745f776569676874000208776169745f7365630675696e743332067765696768740675696e743136110000002a9bed32320861637469766174650000bc892a4585a6410b63616e63656c64656c6179000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400000000e0d27bd5a4076f6e6572726f7200905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f6465000000ce4ebac8b2c20a736574676c696d697473000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a757064617465617574680001000000a061d3dc31036936340000086162695f6861736800000000000000000000000000000078216184577675cf681592f18c754116fdf63576c1fa05b7566dd6ae6fe2ed8003000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb010000000000ea3055340100000000000000000000000000 +DMLOG APPLIED_TRANSACTION 3 78216184577675cf681592f18c754116fdf63576c1fa05b7566dd6ae6fe2ed8003000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d00700008101000000000000000008040000000000000001010000010000000000ea3055e7de58a9939c6e694d3235202685f51b7fab8e82b1f9f96a637dafd9be0998a204000000000000000400000000000000010000000000ea3055040000000000000001010000000000ea30550000000000ea305500000000b863b2c2010000000000ea305500000000a8ed32328a110000000000ea305580110e656f73696f3a3a6162692f312e310019086162695f686173680002056f776e6572046e616d6504686173680b636865636b73756d32353608616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431360b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f69640b636865636b73756d3235360a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d650a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f747278056279746573107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431360c70726f64756365725f6b657900020d70726f64756365725f6e616d65046e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730a736574676c696d69747300030372616d0675696e743634036e65740675696e743634036370750675696e74363409736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380873657470726f64730001087363686564756c650e70726f64756365725f6b65795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f726974790b776169745f776569676874000208776169745f7365630675696e743332067765696768740675696e743136110000002a9bed32320861637469766174650000bc892a4585a6410b63616e63656c64656c6179000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400000000e0d27bd5a4076f6e6572726f7200905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f6465000000ce4ebac8b2c20a736574676c696d697473000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a757064617465617574680001000000a061d3dc31036936340000086162695f6861736800000000000000000000000000000078216184577675cf681592f18c754116fdf63576c1fa05b7566dd6ae6fe2ed8003000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c010000000000ea3055340100000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241 {"feature_digest":"1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"f3c3d91c4603cde2397268bfed4e662465293aab10cd9416db0d442b8cec2949","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"ONLY_LINK_TO_EXISTING_PERMISSION"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":42039,"consumed":7264},"cpu_usage":{"last_ordinal":1262304002,"value_ex":35882,"consumed":6101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 aa30bc93a59737ce708fd4d691b61d7858bfb309c4cf883e77a6a161b5a4abe503000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055218268a92acd1b24eeaeff3b51b569de14ee151eea2132d748be984aa9535d1405000000000000000500000000000000010000000000ea3055050000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232201a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b724100000000000000000000aa30bc93a59737ce708fd4d691b61d7858bfb309c4cf883e77a6a161b5a4abe503000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 aa30bc93a59737ce708fd4d691b61d7858bfb309c4cf883e77a6a161b5a4abe503000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055218268a92acd1b24eeaeff3b51b569de14ee151eea2132d748be984aa9535d1405000000000000000500000000000000010000000000ea3055050000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232201a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b724100000000000000000000aa30bc93a59737ce708fd4d691b61d7858bfb309c4cf883e77a6a161b5a4abe503000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99 {"feature_digest":"ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"9908b3f8413c8474ab2a6be149d3f4f6d0421d37886033f27d4759c47a26d944","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"REPLACE_DEFERRED"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":42780,"consumed":7392},"cpu_usage":{"last_ordinal":1262304002,"value_ex":47457,"consumed":8101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 3f12eecaafb41ec5142c6c6d69df767fb8f5183e1e5468aa418bef38a2bdf2bb03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea305513ab6d113ba5b180d6f68e1b67bdea99847550d673a1785e40dfe4faee8ec7c706000000000000000600000000000000010000000000ea3055060000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99000000000000000000003f12eecaafb41ec5142c6c6d69df767fb8f5183e1e5468aa418bef38a2bdf2bb03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 3f12eecaafb41ec5142c6c6d69df767fb8f5183e1e5468aa418bef38a2bdf2bb03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea305513ab6d113ba5b180d6f68e1b67bdea99847550d673a1785e40dfe4faee8ec7c706000000000000000600000000000000010000000000ea3055060000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99000000000000000000003f12eecaafb41ec5142c6c6d69df767fb8f5183e1e5468aa418bef38a2bdf2bb03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f {"feature_digest":"4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"45967387ee92da70171efd9fefd1ca8061b5efe6f124d269cd2468b47f1575a0","dependencies":["ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99"],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"NO_DUPLICATE_DEFERRED_ID"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":43521,"consumed":7520},"cpu_usage":{"last_ordinal":1262304002,"value_ex":59032,"consumed":10101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 39ec55367e4e4d0d6063a5e5aa2aa15d4a1aa1fbe0abe42c9081713ee04e55b103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea30552267bc3ee69f217c4f0bdbff84c23074f1780839b8adfb17537db55da4a0dc7607000000000000000700000000000000010000000000ea3055070000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f0000000000000000000039ec55367e4e4d0d6063a5e5aa2aa15d4a1aa1fbe0abe42c9081713ee04e55b103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 39ec55367e4e4d0d6063a5e5aa2aa15d4a1aa1fbe0abe42c9081713ee04e55b103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea30552267bc3ee69f217c4f0bdbff84c23074f1780839b8adfb17537db55da4a0dc7607000000000000000700000000000000010000000000ea3055070000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f0000000000000000000039ec55367e4e4d0d6063a5e5aa2aa15d4a1aa1fbe0abe42c9081713ee04e55b103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526 {"feature_digest":"e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"a98241c83511dc86c857221b9372b4aa7cea3aaebc567a48604e1d3db3557050","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"FIX_LINKAUTH_RESTRICTION"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":44262,"consumed":7648},"cpu_usage":{"last_ordinal":1262304002,"value_ex":70607,"consumed":12101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 72c5e78f690d5d20ec8c8e12ace2a3b34929099b93f621a8671ae43df821bc5b03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea30550f86c0418ffb919c58d37997594e446d2d98fd38b1ff3849da2c5da410aa331a08000000000000000800000000000000010000000000ea3055080000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff5260000000000000000000072c5e78f690d5d20ec8c8e12ace2a3b34929099b93f621a8671ae43df821bc5b03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 72c5e78f690d5d20ec8c8e12ace2a3b34929099b93f621a8671ae43df821bc5b03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea30550f86c0418ffb919c58d37997594e446d2d98fd38b1ff3849da2c5da410aa331a08000000000000000800000000000000010000000000ea3055080000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff5260000000000000000000072c5e78f690d5d20ec8c8e12ace2a3b34929099b93f621a8671ae43df821bc5b03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428 {"feature_digest":"68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"2853617cec3eabd41881eb48882e6fc5e81a0db917d375057864b3befbe29acd","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"DISALLOW_EMPTY_PRODUCER_SCHEDULE"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":45003,"consumed":7776},"cpu_usage":{"last_ordinal":1262304002,"value_ex":82182,"consumed":14101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 e358ede0d30a5ac5fa03a484a5142b0a38f658e0fb57644adb5b60c94206f9e003000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055659dd999c0cb81c2eea85d3eda39898997e4a9bd57bcebcac06cc25db35e000b09000000000000000900000000000000010000000000ea3055090000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322068dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a29742800000000000000000000e358ede0d30a5ac5fa03a484a5142b0a38f658e0fb57644adb5b60c94206f9e003000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 e358ede0d30a5ac5fa03a484a5142b0a38f658e0fb57644adb5b60c94206f9e003000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055659dd999c0cb81c2eea85d3eda39898997e4a9bd57bcebcac06cc25db35e000b09000000000000000900000000000000010000000000ea3055090000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322068dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a29742800000000000000000000e358ede0d30a5ac5fa03a484a5142b0a38f658e0fb57644adb5b60c94206f9e003000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43 {"feature_digest":"ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"e71b6712188391994c78d8c722c1d42c477cf091e5601b5cf1befd05721a57f3","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"RESTRICT_ACTION_TO_SELF"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":45744,"consumed":7904},"cpu_usage":{"last_ordinal":1262304002,"value_ex":93757,"consumed":16101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 60b8a605178774eed85eb65b3ae743e5f3dc9b11d4672e1d00be33a0d21c8dae03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055d209fd21b66b7e1f62b25302fd208120700fb20e0a9a0151d3909e1ca7a98f460a000000000000000a00000000000000010000000000ea30550a0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c430000000000000000000060b8a605178774eed85eb65b3ae743e5f3dc9b11d4672e1d00be33a0d21c8dae03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 60b8a605178774eed85eb65b3ae743e5f3dc9b11d4672e1d00be33a0d21c8dae03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055d209fd21b66b7e1f62b25302fd208120700fb20e0a9a0151d3909e1ca7a98f460a000000000000000a00000000000000010000000000ea30550a0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c430000000000000000000060b8a605178774eed85eb65b3ae743e5f3dc9b11d4672e1d00be33a0d21c8dae03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405 {"feature_digest":"8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"2f1f13e291c79da5a2bbad259ed7c1f2d34f697ea460b14b565ac33b063b73e2","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"ONLY_BILL_FIRST_AUTHORIZER"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":46485,"consumed":8032},"cpu_usage":{"last_ordinal":1262304002,"value_ex":105332,"consumed":18101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 689db7ff0751fd6025dbc997d9a7ca1fe4e525ee48e55e5fb2aee8403077dd3e03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055fd71f42952743b790fcaa82dabd6a843676b9bd5b91c891fc050f9c41374a35e0b000000000000000b00000000000000010000000000ea30550b0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232208ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a40500000000000000000000689db7ff0751fd6025dbc997d9a7ca1fe4e525ee48e55e5fb2aee8403077dd3e03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 689db7ff0751fd6025dbc997d9a7ca1fe4e525ee48e55e5fb2aee8403077dd3e03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055fd71f42952743b790fcaa82dabd6a843676b9bd5b91c891fc050f9c41374a35e0b000000000000000b00000000000000010000000000ea30550b0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232208ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a40500000000000000000000689db7ff0751fd6025dbc997d9a7ca1fe4e525ee48e55e5fb2aee8403077dd3e03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 2652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25 {"feature_digest":"2652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"898082c59f921d0042e581f00a59d5ceb8be6f1d9c7a45b6f07c0e26eaee0222","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"FORWARD_SETCODE"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":47226,"consumed":8160},"cpu_usage":{"last_ordinal":1262304002,"value_ex":116907,"consumed":20101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 48ed94d5a6fa7dd478278b29bbff0a72bd9d9a5431423ed3f0b1ce393643108303000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea305512250767854476ab3904c7f604b0322bfa91821d01ddb20ecfaaff1beef8e04b0c000000000000000c00000000000000010000000000ea30550c0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232202652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed250000000000000000000048ed94d5a6fa7dd478278b29bbff0a72bd9d9a5431423ed3f0b1ce393643108303000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 48ed94d5a6fa7dd478278b29bbff0a72bd9d9a5431423ed3f0b1ce393643108303000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea305512250767854476ab3904c7f604b0322bfa91821d01ddb20ecfaaff1beef8e04b0c000000000000000c00000000000000010000000000ea30550c0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232202652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed250000000000000000000048ed94d5a6fa7dd478278b29bbff0a72bd9d9a5431423ed3f0b1ce393643108303000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d {"feature_digest":"f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"1eab748b95a2e6f4d7cb42065bdee5566af8efddf01a55a0a8d831b823f8828a","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"GET_SENDER"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":47967,"consumed":8288},"cpu_usage":{"last_ordinal":1262304002,"value_ex":128482,"consumed":22101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 aa192243a78a9d8954a3af3f044207536068d3ad3f7ffb3b7de53b959de190b003000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055063f8bf038af0888c33fcfdd66c2f91fd6b060df73aaa32a1e905b143ceb9ac00d000000000000000d00000000000000010000000000ea30550d0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d00000000000000000000aa192243a78a9d8954a3af3f044207536068d3ad3f7ffb3b7de53b959de190b003000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 aa192243a78a9d8954a3af3f044207536068d3ad3f7ffb3b7de53b959de190b003000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055063f8bf038af0888c33fcfdd66c2f91fd6b060df73aaa32a1e905b143ceb9ac00d000000000000000d00000000000000010000000000ea30550d0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d00000000000000000000aa192243a78a9d8954a3af3f044207536068d3ad3f7ffb3b7de53b959de190b003000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d67 {"feature_digest":"4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d67","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"1812fdb5096fd854a4958eb9d53b43219d114de0e858ce00255bd46569ad2c68","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"RAM_RESTRICTIONS"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":48708,"consumed":8416},"cpu_usage":{"last_ordinal":1262304002,"value_ex":140057,"consumed":24101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 a9e581a81302c707c14f5985458d2ef53faf24afacb03115f5cbc17271d7504803000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055f279231a0740adb280f58749e984c932e17897073e9aedc1c33a102df52498430e000000000000000e00000000000000010000000000ea30550e0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d6700000000000000000000a9e581a81302c707c14f5985458d2ef53faf24afacb03115f5cbc17271d7504803000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 a9e581a81302c707c14f5985458d2ef53faf24afacb03115f5cbc17271d7504803000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055f279231a0740adb280f58749e984c932e17897073e9aedc1c33a102df52498430e000000000000000e00000000000000010000000000ea30550e0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d6700000000000000000000a9e581a81302c707c14f5985458d2ef53faf24afacb03115f5cbc17271d7504803000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 4fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2 {"feature_digest":"4fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"927fdf78c51e77a899f2db938249fb1f8bb38f4e43d9c1f75b190492080cbc34","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"WEBAUTHN_KEY"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":49449,"consumed":8544},"cpu_usage":{"last_ordinal":1262304002,"value_ex":151632,"consumed":26101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 4185b6265a360d2bf774af7d82bd837333cfb6b976390dac78c284207b6bbce103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea305578e423734b3bacaadd9c1864e7a7c612255a9c0d9fcdeba49708ee6b147e13170f000000000000000f00000000000000010000000000ea30550f0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2000000000000000000004185b6265a360d2bf774af7d82bd837333cfb6b976390dac78c284207b6bbce103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 4185b6265a360d2bf774af7d82bd837333cfb6b976390dac78c284207b6bbce103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea305578e423734b3bacaadd9c1864e7a7c612255a9c0d9fcdeba49708ee6b147e13170f000000000000000f00000000000000010000000000ea30550f0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2000000000000000000004185b6265a360d2bf774af7d82bd837333cfb6b976390dac78c284207b6bbce103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707 {"feature_digest":"299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"ab76031cad7a457f4fd5f5fca97a3f03b8a635278e0416f77dcc91eb99a48e10","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"WTMSIG_BLOCK_SIGNATURES"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":50190,"consumed":8672},"cpu_usage":{"last_ordinal":1262304002,"value_ex":163207,"consumed":28101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 f6025d888ddcfb8fdfeee18204122f8b7a71908a96ac4e52bf9542ff398b0d4403000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055368a5df8e81472fb54f3424401fba4956a6e0737806b4f642b2d7014cf66fc2c10000000000000001000000000000000010000000000ea3055100000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b447670700000000000000000000f6025d888ddcfb8fdfeee18204122f8b7a71908a96ac4e52bf9542ff398b0d4403000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 f6025d888ddcfb8fdfeee18204122f8b7a71908a96ac4e52bf9542ff398b0d4403000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055368a5df8e81472fb54f3424401fba4956a6e0737806b4f642b2d7014cf66fc2c10000000000000001000000000000000010000000000ea3055100000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b447670700000000000000000000f6025d888ddcfb8fdfeee18204122f8b7a71908a96ac4e52bf9542ff398b0d4403000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071 {"feature_digest":"c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"69b064c5178e2738e144ed6caa9349a3995370d78db29e494b3126ebd9111966","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"ACTION_RETURN_VALUE"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":50931,"consumed":8800},"cpu_usage":{"last_ordinal":1262304002,"value_ex":174782,"consumed":30101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 116b232e8995b25d7bab8c5134bc993bcd84e72bc35d0b27fe723d7d25e98ac703000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea30552acd5ab1218225e0cc0a013d8e86b58cfc4d998058708fb1eb0116c1124f7c7f11000000000000001100000000000000010000000000ea3055110000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead4507100000000000000000000116b232e8995b25d7bab8c5134bc993bcd84e72bc35d0b27fe723d7d25e98ac703000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 116b232e8995b25d7bab8c5134bc993bcd84e72bc35d0b27fe723d7d25e98ac703000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea30552acd5ab1218225e0cc0a013d8e86b58cfc4d998058708fb1eb0116c1124f7c7f11000000000000001100000000000000010000000000ea3055110000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead4507100000000000000000000116b232e8995b25d7bab8c5134bc993bcd84e72bc35d0b27fe723d7d25e98ac703000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 5443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4 {"feature_digest":"5443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"70787548dcea1a2c52c913a37f74ce99e6caae79110d7ca7b859936a0075b314","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"BLOCKCHAIN_PARAMETERS"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":51672,"consumed":8928},"cpu_usage":{"last_ordinal":1262304002,"value_ex":186357,"consumed":32101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 11a09bc0cc023daf656af6dadf37577a9d4c0cea8020c1d007a2c3d6dc1e52c103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055db17f5e8a451e3814885ec6d61c420ac422f1e0de77043c9024e592b64f8bd1412000000000000001200000000000000010000000000ea3055120000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232205443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b40000000000000000000011a09bc0cc023daf656af6dadf37577a9d4c0cea8020c1d007a2c3d6dc1e52c103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 11a09bc0cc023daf656af6dadf37577a9d4c0cea8020c1d007a2c3d6dc1e52c103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055db17f5e8a451e3814885ec6d61c420ac422f1e0de77043c9024e592b64f8bd1412000000000000001200000000000000010000000000ea3055120000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232205443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b40000000000000000000011a09bc0cc023daf656af6dadf37577a9d4c0cea8020c1d007a2c3d6dc1e52c103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99 {"feature_digest":"bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"d2596697fed14a0840013647b99045022ae6a885089f35a7e78da7a43ad76ed4","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"GET_CODE_HASH"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":52413,"consumed":9056},"cpu_usage":{"last_ordinal":1262304002,"value_ex":197932,"consumed":34101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 76bcbbd871a26403befd2ebf5491d6b84ded9f29cb95bfd54ca6ec46b1dfad5903000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055693240e7063adb7478594592f8a6e6cb76e33cabc605272575b687e3a0fa5f5e13000000000000001300000000000000010000000000ea3055130000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e990000000000000000000076bcbbd871a26403befd2ebf5491d6b84ded9f29cb95bfd54ca6ec46b1dfad5903000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 76bcbbd871a26403befd2ebf5491d6b84ded9f29cb95bfd54ca6ec46b1dfad5903000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055693240e7063adb7478594592f8a6e6cb76e33cabc605272575b687e3a0fa5f5e13000000000000001300000000000000010000000000ea3055130000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e990000000000000000000076bcbbd871a26403befd2ebf5491d6b84ded9f29cb95bfd54ca6ec46b1dfad5903000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40 {"feature_digest":"d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"8139e99247b87f18ef7eae99f07f00ea3adf39ed53f4d2da3f44e6aa0bfd7c62","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"CONFIGURABLE_WASM_LIMITS2"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":53154,"consumed":9184},"cpu_usage":{"last_ordinal":1262304002,"value_ex":209507,"consumed":36101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 1948411767455fe23b05b44fe5fb737422ce3831a41f2c68064990fd6f52fdaf03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055a40aa97866a6e0814065142f7d1038aaccb2e8a73661f6554c415c331ab8ec8b14000000000000001400000000000000010000000000ea3055140000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40000000000000000000001948411767455fe23b05b44fe5fb737422ce3831a41f2c68064990fd6f52fdaf03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 1948411767455fe23b05b44fe5fb737422ce3831a41f2c68064990fd6f52fdaf03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055a40aa97866a6e0814065142f7d1038aaccb2e8a73661f6554c415c331ab8ec8b14000000000000001400000000000000010000000000ea3055140000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40000000000000000000001948411767455fe23b05b44fe5fb737422ce3831a41f2c68064990fd6f52fdaf03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 6bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc {"feature_digest":"6bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"68d6405cb8df3de95bd834ebb408196578500a9f818ff62ccc68f60b932f7d82","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"CRYPTO_PRIMITIVES"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":53895,"consumed":9312},"cpu_usage":{"last_ordinal":1262304002,"value_ex":221082,"consumed":38101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 3cea935e0deaa090b14d4ee01f3fee31a1c426779f1c32840aefaa99cb83ec5f03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea30555705a61c2ae1877963ee8e857abb78d2975071d25ce32f1235b4d4803967a9fa15000000000000001500000000000000010000000000ea3055150000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232206bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc000000000000000000003cea935e0deaa090b14d4ee01f3fee31a1c426779f1c32840aefaa99cb83ec5f03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 3cea935e0deaa090b14d4ee01f3fee31a1c426779f1c32840aefaa99cb83ec5f03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea30555705a61c2ae1877963ee8e857abb78d2975071d25ce32f1235b4d4803967a9fa15000000000000001500000000000000010000000000ea3055150000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232206bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc000000000000000000003cea935e0deaa090b14d4ee01f3fee31a1c426779f1c32840aefaa99cb83ec5f03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b {"feature_digest":"35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"e5d7992006e628a38c5e6c28dd55ff5e57ea682079bf41fef9b3cced0f46b491","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"GET_BLOCK_NUM"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":54636,"consumed":9440},"cpu_usage":{"last_ordinal":1262304002,"value_ex":232657,"consumed":40101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 04ba316cf9ddd86690833edc0f4548f8c07f0d66c09dca029b0a1fb96f16c62803000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055302a2f1713925c939a997367c967b457bfc2c580304f9686b1de22fc5946e40616000000000000001600000000000000010000000000ea3055160000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322035c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b0000000000000000000004ba316cf9ddd86690833edc0f4548f8c07f0d66c09dca029b0a1fb96f16c62803000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 04ba316cf9ddd86690833edc0f4548f8c07f0d66c09dca029b0a1fb96f16c62803000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055302a2f1713925c939a997367c967b457bfc2c580304f9686b1de22fc5946e40616000000000000001600000000000000010000000000ea3055160000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322035c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b0000000000000000000004ba316cf9ddd86690833edc0f4548f8c07f0d66c09dca029b0a1fb96f16c62803000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a {"feature_digest":"63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"c0cce5bcd8ea19a28d9e12eafda65ebe6d0e0177e280d4f20c7ad66dcd9e011b","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"BLS_PRIMITIVES2"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":55377,"consumed":9568},"cpu_usage":{"last_ordinal":1262304002,"value_ex":244232,"consumed":42101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 450cd1132e85279e093be4ae967a313b793f7fe0bf579e0f0852e003a04ad39d03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055ddd516213adb142966c5365d88fe333b8e244cb90fe77627ff51a2901becc46d17000000000000001700000000000000010000000000ea3055170000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322063320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a00000000000000000000450cd1132e85279e093be4ae967a313b793f7fe0bf579e0f0852e003a04ad39d03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 450cd1132e85279e093be4ae967a313b793f7fe0bf579e0f0852e003a04ad39d03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055ddd516213adb142966c5365d88fe333b8e244cb90fe77627ff51a2901becc46d17000000000000001700000000000000010000000000ea3055170000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322063320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a00000000000000000000450cd1132e85279e093be4ae967a313b793f7fe0bf579e0f0852e003a04ad39d03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb4 {"feature_digest":"fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb4","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"440c3efaaab212c387ce967c574dc813851cf8332d041beb418dfaf55facd5a9","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"DISABLE_DEFERRED_TRXS_STAGE_1"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":56118,"consumed":9696},"cpu_usage":{"last_ordinal":1262304002,"value_ex":255807,"consumed":44101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 163cea51d12265063bf77437db57c2e9c1ef93dcb7205808665ab4cfc9bc7be103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea30559ce3cf675d2f9ecbf427930685680d9117ba72ed64d5d7474fb50c8768a921d218000000000000001800000000000000010000000000ea3055180000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb400000000000000000000163cea51d12265063bf77437db57c2e9c1ef93dcb7205808665ab4cfc9bc7be103000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 163cea51d12265063bf77437db57c2e9c1ef93dcb7205808665ab4cfc9bc7be103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea30559ce3cf675d2f9ecbf427930685680d9117ba72ed64d5d7474fb50c8768a921d218000000000000001800000000000000010000000000ea3055180000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb400000000000000000000163cea51d12265063bf77437db57c2e9c1ef93dcb7205808665ab4cfc9bc7be103000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG FEATURE_OP PRE_ACTIVATE 0 09e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc16 {"feature_digest":"09e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc16","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"a857eeb932774c511a40efb30346ec01bfb7796916b54c3c69fe7e5fb70d5cba","dependencies":["fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb4"],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"DISABLE_DEFERRED_TRXS_STAGE_2"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":56859,"consumed":9824},"cpu_usage":{"last_ordinal":1262304002,"value_ex":267382,"consumed":46101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 0ba60f7118b04f4981554d97fcd15865c4ad6633f4e78f216d034a9ef6394e7f03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea3055b76acc0a0bc58aae737e94451f7f38e72ff2e66e45b1838f558f7266783bf69719000000000000001900000000000000010000000000ea3055190000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322009e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc16000000000000000000000ba60f7118b04f4981554d97fcd15865c4ad6633f4e78f216d034a9ef6394e7f03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 0ba60f7118b04f4981554d97fcd15865c4ad6633f4e78f216d034a9ef6394e7f03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea3055b76acc0a0bc58aae737e94451f7f38e72ff2e66e45b1838f558f7266783bf69719000000000000001900000000000000010000000000ea3055190000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322009e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc16000000000000000000000ba60f7118b04f4981554d97fcd15865c4ad6633f4e78f216d034a9ef6394e7f03000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG CREATION_OP ROOT 0 -DMLOG FEATURE_OP PRE_ACTIVATE 0 8cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7 {"feature_digest":"8cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"bc726a24928ea2d71ba294b70c5c9efc515c1542139bcf9e42f8bc174f2e72ff","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"INSTANT_FINALITY"}]} +DMLOG FEATURE_OP PRE_ACTIVATE 0 18b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d6390 {"feature_digest":"18b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d6390","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"bd496b9e85ce61dcddeee4576ea185add87844238da992a9ee6df2a2bdb357c2","dependencies":["299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707","63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a","68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428","c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071"],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"INSTANT_FINALITY"}]} DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304002,"value_ex":57600,"consumed":9952},"cpu_usage":{"last_ordinal":1262304002,"value_ex":278957,"consumed":48101},"ram_usage":180802} -DMLOG APPLIED_TRANSACTION 3 4b44a1f39c39048a1fa53c7070cea6a57f0afbb982370bcaa03d4d735797778c03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0100d007000010000000000000000080000000000000000001010000010000000000ea30551b7179e66f67158e50d547f27fb19f7660419a39880b1e596665bf44d4ce7fe21a000000000000001a00000000000000010000000000ea30551a0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232208cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7000000000000000000004b44a1f39c39048a1fa53c7070cea6a57f0afbb982370bcaa03d4d735797778c03000000023b3d4b010000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb0000000000000000 +DMLOG APPLIED_TRANSACTION 3 280cc3aadfeaefd2d0684756bc38781ef59daf38a1d6243f34ac6c615b3dc05403000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0100d007000010000000000000000080000000000000000001010000010000000000ea305515e0016f47aca153485160c1ed66d8e7e0cc611789e3b37c81ac9c9679aca0ee1a000000000000001a00000000000000010000000000ea30551a0000000000000001010000000000ea30550000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322018b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d639000000000000000000000280cc3aadfeaefd2d0684756bc38781ef59daf38a1d6243f34ac6c615b3dc05403000000023b3d4b0100000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c0000000000000000 DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":2,"value_ex":0,"consumed":0},"average_block_cpu_usage":{"last_ordinal":2,"value_ex":833334,"consumed":100},"pending_net_usage":9952,"pending_cpu_usage":48100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1049625,"virtual_cpu_limit":200200} DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":3,"value_ex":82933334,"consumed":9952},"average_block_cpu_usage":{"last_ordinal":3,"value_ex":401659723,"consumed":48101},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1050675,"virtual_cpu_limit":200400} -DMLOG ACCEPTED_BLOCK 3 03000000030000000200000000000000010000000000ea3055000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add80100012d5b1b639d6ae94fcdd0536b224644931573d1ccb2a0c548613cd1feea18888b0200000000000000010000000000ea305503000000010000000000ea305502000000000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add80100000000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e82d8cdf5a48c796389dd8078c999af1b8542b7e1d56784775146ab9963566974d9426f419e11a481547c9e05fe24a17d138a7fcdcf5ff599a09e03630dec0c79900000000000000207b3e5f9a58ec8f603285898120bc8c58e80f603b37dddf6f00bf79d75d62f5024d1665fa7e7af18a5f639ba3d3bc6d6858c31658a0473ed2ce4c879daa5efe560000000029807708239aa7de914d3ed61e9009ab2280bfbc50f1d9769f27f8341ef26198000000000001010ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd0001023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e82d8cdf5a48c796389dd8078c999af1b8542b7e1d56784775146ab9963566974d9426f419e11a481547c9e05fe24a17d138a7fcdcf5ff599a09e03630dec0c79900000000000000207b3e5f9a58ec8f603285898120bc8c58e80f603b37dddf6f00bf79d75d62f5024d1665fa7e7af18a5f639ba3d3bc6d6858c31658a0473ed2ce4c879daa5efe561800d0070000fb05010100203b7de491b51d3d74624078bc2c5dc4420985f0350afb6923a5585b5621750c9f126d7cff0efeade2068c7b618fc754b2abb5bff8cdb9bd0ecb4432b72ae1ed380100a82f78daed5c7b8c5ce755ff1ef7357b67e3ebc6d94c3609f9e662d0b8a4659bb8eb2575dbbddbc476694b9cca2dfea3b0bbd99d647776bdbb9e1da70e0adead081045158a7894b6405524a4d21424545aa8cacb0d0815a94891fa20414284ff2a025511a245ad54737ee77cf7ceeccb71f09a87545b9e7be77b9cef7ce79cef3cbf71f44fe94f1bf5d03d9f1951f447e343fdf3d87be873f2879efef473830dea77fff59e7bbef7f440d3bfd197d9f57368d1bfa54767949ab11b9736d48cd9b8840f7a0b372ed11f35136cf0436fe80dfac0b80dbc2afa67f84d6306e6063201ad97a8ff9234d00880f033d54c84469e48cd68b03c8b3ea54dd0909531c1fc52d0b0ed95c70e2dae4f3fd29eed5de8b6a767e77a8b8fcdf6daf32a42d7cd6bdd76d9548e51317aeaedd5f5c5d5e9d9f5f576b7a72c9aa273ed73ebed9e4af025c3b4d595e9f9d9deecf4fae2cfb4558d9b09defcf4409f1a2aa7cead3d2e53ebddf6f90b8b40e6426f41a568ba89e04eaf75171f5b5c6e3f4ac8d519393476dbebab17ba73ede9e5c5738bbd75358c9e70f6e155c24ae17d44a6aeaeadaeb7e7f1327f61aedd5d5737a1d3a1f3e1e5d5b9a5b985d9c595e9b5d9eeecb9768ffae9756e8956e29db9475f6918efa23e77a1db6daff4a67b8be7daea00d316339982ed81b579743afff0f4238b2bf3d38be347558696da34d17361b9b778af3a88ef0707693c3db73adf56868958aed36dcfb5097257d61a2280580ef09890d1fac2ec3d6f1c57af61e4a877bdb74a6445ffcd681aa6a60b6bf3e02dda0ed993275414abb8369444511c0f0d594b9f517c8b1e31237624a07ff4371cd123d60e51efd0adb7da86ff63ab8f46725b10ea353d34145aad7434623774b17959a51baaf8d45f568fb8a6c3d9b5b5e5c7d5eb6a07b42a745a7bfdd83d47c727ee7bd39b87fe66539f0854767bbaa9b5dd3093f2d7a9078655417f5be683f4a5c81ecb752737e3f44d5a9f9cccad539d22ee1417cfe76a9c1a9c29b29e53ef1ad64e4faa62e3c4b0a9dbb45007e81ff5e90e663b4d2fe83d39aca9bdf8cdcb2a33ce1e489d4d8d4ac7b5def8415a6e29a755c64d9d66d262f59651832ba175dc6cd2f3ad0a40313352c533b4f3ffd03ada2854d3601718b7043ccf3b757258611fef0076d96d07d2ecce62649cc0127ae5968b8d4e1e38ddc96ecbb17da75c405b74f67c6e4ed034553cd1c92da19207457c3ed70f0c1b0c21ac685a71b19387d4d78c9c75da192c1c776901daf9131d02648088f62d173b2e62184ec68434c5f29bca465367881c84970c54f4d1c22c80549d0a2430a126fe9ede4b742b469a9637a28be0ed843e6191fd00d024d49de6bd366d0a5a6777d2dc74429b0dde36f5df9e6bec7a5859225a9339fce1c9dc60ae39a894d39e26292146a426345d7a93f272c2484b6b9e2e1154e1a0398c01a6a8778011febd839629d7b3d95d34d54c62415e4c31a2584ca6381a31acea26051d200bf4245168a23feb1ca6d5d2043cd2d9e1eda8f8f61f4e43950da9f42744a85e22fae9c3a08b2e5e0021137ecde82da8ded0adb2d78ef257a75be822622d65756a7949d1bae92fd774c0846b1104fa0872b354c43fcee7e5eb2cceaa08c0b2a62194695a9245a3dc961b6c411509c9112f456fcd80799088f838bb54d8415018cf5c23410b00c783082a10f50e84dded3abb44840118013088481f4a76fd881cda17441ad78fc81dfb8288bb7e440eef0b22adeb47e4ee7d4164ecfa1139ba2f884c5c3f22c7f70591cb6a174cf45e9898014c4c05e33982a10750d17ba2a2050223a0592d1118361ae9778cd51be612eb3957aa3975c4aadc4cb9a78eab14d660aa456f43fc36466f357e9ba03728426c01e32d8f870db33cdef01bc66b7ec378b62d9fc883fbd4017a0b8ae4b1fbd44dfc96d1db30bf35e8ad8e193c2eaec645d5b8b01a17f0fa0d5edf1c57b70aee99c7e5f60a97d10a97db2a5c1abc0b8cbbb9dae36baa3d1eacf69809ce8a9118e10581c42db234bd1d1264d57dea2e2107b5fd4035eece6adc1d6459c844b286602bf4adefd3fe7f92f6da533efd522076fd194daed5619535e0fa38f56e78155bff121a57aefcf1b77ee7d73ffde2d44f929380af57ae7cf6db5fc35720b9b9b9f9fca7fff04f3e72cf43c356be5efe95ef50ef43c3817cddfc230c7ef770e22c7c910f12ba05b9544fd1d3d923f6297dccb263414ecb8f8ed693d42f71e55b1f7e71ea3dbcc4339f7cf1c57ff8e047bef6f98d3ed0bfffbddfa0efef1e8e05ea3c3dc8c59e119833c76c4b409205c8de305a8f539ef639d94705e5437ffbf257805a244096e9419a6541802c1cb3ce03719decded17a94fab537bffde13e10c0fc28808402e4494c08c8c5f6fbdba4fd251e4ed2c9de385a0f531979861ee1b8392de34e1fb3137ed844273b365a0ffcb01e3da271b326c3d68ed9861fd6e8643f365ab77ed83be9118f9b5332ecd4313be98791a20538e3c73d013cc6cd451977f198cdfcb8ac931d1fad6b3fec7df4a88d9bb332ecec313be6878d75b2b78c52f891dd415f9ed190a6d7283eb3194e0bf99b27b324fdb2d131046c8ce4ab19389231e8eea0198a568f24ccc8823c7e4064cec5c507d8f58eb3db9a86d1a0a6039d62ed3cbbc37007e32c240f3f2848d65b2e98526010b5769ab010ae038f30f1b0e277b025f8f92fc012a09310635fd260540df077b6d2bce4647f5eea12572b34fae9bc53d4007b414c1f3719351cc2e45a47da98c714f14094031716fa8220d5eabc4ea926751db1ae09479bbacec3d7e6082462fb1461abca25c5157dde4507b51a2086c978c36344650a3d2378e671fa73468757a36d79743d753d30ed296b52d09ec5612f0283b22d4fd91dd44c795b25e102f218997a4c0750d45614c9842289d0ac0145dae9d3e6886dbd0245a283666f5a0cf7652e3b927edb50e84a24f9b8b911f2f6450ad6157d667654f6725c1e13781095c6095c40a756866653a3bc550e555cd032934211daf1045303a7069d09efb9ea4c8ed96760595ee05e97205a1662d29e4bb22a1c7fa6ae9359cfe89cb9c55d2f6881ee71268c99452f700b562d5b1a1523aec20199181db4bb70e1e346d870f3e0d1c79cac96feaa3511197562c7a6be91227a4a1e93f2382d8fb3c29aa3f218ab38045e819050a478bb8c2816e738036dbe496c7b2b734d58365171658c8f34c2d75d5846ebcdc8eced1c6b0d722c138e3564d24cae847bf4581304060ec559728fe871baa9f138454a891e93cda1abf069c8c125c2790976e1d4a6de7960ee4ebf6775c207e6867108142639236748b4227fcf8884fefb560ebe02cf66fa3cdbd4b229614a764ab856bb1ad78840bb706d53ced910b85613ae65c0d8d5ae81718cc54bb2c31a2ca4eaaf98418892b289d978cc2ec8db647f6dac54cd430309821d9c450e083949b2b45f31bbb673bbb9f7b9f5d2f05e4e35e586844ea48239adfc6095dd46019b2246227596a5a3900f24d5c897ec33dbed18927e2e14b3ff4db5b71e8e2b5d9c94ba38f1eb267d5d9c6c93aaa4b4fd7071f6949a44a4060a93c5252b46af76aa9f17f9a8ed38d5a72be161d1b986537d7a40386604cfb395626a99fbd91010518ab173cd9a77ad2db8572bbef6ec575ffbe030ab7ea44c3397c7d43ab6ec7d8b182e223fcef421e535c0d2a77032e9f85b56ebe8815339b682d93966a4d726348cef82e03b431009d0e9a53c06b221840833428f28fca9af13a231231a6e4174461ef38209a000d1b08f682888f2bc15993a2f324be42e6596e6cd88d6f1d0e22c4fa5fdf440fb99b23d19907119c6f957efacdd4fed792a6a1ab27f2015ce672d957a25426f3763619dfd083b3a2f3e074727ad952a33fd4598347de34ddae92d7af1ecdede06fb1ba52dfb22f46243ccbad8b2c957f040763767c99ee6ec2a0ec8cc80ffb1b6c5b5d8d59c5d456f95562cbc8a15bb8c8481bec479f2cb8a83576477103b2134297833766a03e859f16345c3e5014e2ce144f8fbe347e87338f7d17ff9cc37de40bccf5038390595c4d11069b50772d522cd826f2758303e7b993d600b7e247ed49492c8ee0436d4cac3615d2f87d4113d31a3127ecb3a651878d20f7e6058a7a20b8abb3b790492d3493b816202e9da850e1020c1715cd2e19ac0034c1412e8900b3329c7b818a4a038c326b5442e947a482ee11feb6eff967ecc4af4b0a93df57212ab2306e25629e6b054cca1e742d857cce136e90dbd62862e15511a70ca4eeda2a343d6d1c66ba3ad815acb1c45be8e75370825dac2727c717440afb364676ff3ca3de21e7a1b14e6ad2e40eca2bd1db718648f2a151f5d9be326fa1af179c04a964f23407ad373ff00fdbc66e20a9868a6e24b34d070054ab45329e15f30da6e38613b54129f42944b2cca25c1d2568a599fe40cc08a40086639cbca8bf9c04cb15c21c6dd3f90287bec23b44687a34186a6010df5a3dc6e83a6fb395d55ca871ec8e932b4f4dff50d2261b00709d51e2095b84c7b8084d0ecdfa6bf6e593346bcf1a069a6147c3bae9271dabb19d2f18e2ca7f470d0d4db7989efc2d471029d4b6e48579071e69a73cee2097b75459d7711f21379d4fbfd27096e54c49d664487980c1249ee79d2435ea9f20e12d9526d891c083a7af613b97950aaaa2e5ecadeeb7bcb8de5c949d699d0facebc0b03a983cc81613726c1eee85b728274a564f0835229d2eeb4f5cbd2495adaa14e7857b52a5bc14dd007466aba21a8e469a2b7d124d84a934068120dd224649a18a189014d42170dd0049ed95b0cb248f5bedcb868a9703bd0447291c8da1c40b3e93940be207c54a4a6b886bc7b117510e2401155977b7f1545d441506511065af8da8aa8bb2162b13bfbaa8ba8af0e9143fb8248e3fa11b9635f1071d78fc8e17d41a475fd88dcbd2f888c5d3f2247f7059189eb47e4f8be20b27b11752f4caeb188ba072aba84b05b11f5b7c52f0ff7d1fa243badcfa0a68d5cb2cdfa88ed89c5ba180a3b617822313ce4122f650f55db492aa32ac3c5b925e55d591f52c61c4103346f04d4499660a128307e701712259ca6a0686e2bb738620389fe53f74397cc27502417c677740825f24bab6b48755e104ec1521e88c7b8f1ce61d6e6e46052e81dba402e3489b3cf8fa03f5130266727d7127d87f065450042870b65e4efa896783641cea40b386e534211cd496d89d4789ce65d6a7642602ea55261d877e1a00417a5b0469efa6b46c81821b6fe0b6b62899edd12a79ce47a13416de4108f3b1855443db8d34456556e6d69dc1c433585c2a0f0a4bfcf147074c48d4027e4ea1c9132aceea269dcb2cb0ee54c30d0ed0301b22bf0edfa910ba49183f2e21b12d20588700a0d3bcc63b343a374ba98ce0a914bc8ac629a6cad8684a5810d61c3622925253cf062a7b86bcbd8d82585e3b1a0d551445308dce98108b526112af5d4ab6b75779010321fe9dd61c70f725aa32665158d143697eb10a2b01cc41c82e32d92405471e94a3e90612401c97eca45083c25b8268fb4d1d41e0ce8076632174bd2a67fa5ad2106a2649c079c11d2888b9504c57fc69b03ba4896dcfc1037be2c3b66998e24f0e18f983d667203d9e6e771760b4d8c789c4cfcd873c20fe2dfe94e19df97c5a6b314ac09050981a3ac1d5bd9ad0c0195f7337251b13375c94553fa09faf8d9f7de4e6c232e51b0fa5d4d7e93d4cd82c39c1c3a46b84cf2da25da4ffb1217d21d874a0a071c1712754422ac5c05e864ef1b958188092d5f02909091a01ecd43cf46f60724b28fd9aa7b26c6583e41264cea100a706249b344b44b6622b49296b48eeb94c50a30904f218e9b5c4f844a75c8b130982d4c948a59fa211b0a0b858d14ae8b0ae228c9ee0c4228a4b96bb72004210dc270e5d930600b1c3026c54f683635ab00d6fa688af860cb443a244c1583c0389a4a7e01d9bc3728f5641e4c4d3cf524498b2e363ad80cf5b1f9206340d0ab2081149a08de95e7fc098c40c9b084430c670cf840c2c30f80c1001c72a3194cc61aa744850e3d04b1b03d3ab8d9413ec822bd068f000b0550d7b21ea77848e6d0820405be34e44ba3c3bb979b21d294f9a6ac6c324898105f3eef85321bd08c03a944affa37399518f854a264b612a46b78e9665837e93605c7df919d97b17e9c682fbe3dbc5d7dd9d216f910179773b795c36d3596d57b7a3f85d95244a87095c41ae3ab3cbe7a2fd4522e197c1fc80d02f26553a9bb6d92b5975c9529ea3da1226175581e8e9d003afca4be5a223c8d1dd6b1ca4d86d089879b7c07a5515d1e6079e220f730fc4f674e6e99ea7c4a6fcbec5b315b97b3f59eb3ab0923db26f00ea026b3fed1701dc9cabe6d5492748924e97c0ed7882d6435fae7b86830703b4af160f1a12cd9b407799af2ae171cad3c821f620a5c698a59f511d988b0c5f7a8016e3f291dc2ab0777d1456fbf1dd503b80a996be23700e23d231d6c71ef05b7b3011d3bf7fefb062960728e82342d8b6b900cc5e50dbec311c38292e1586a4afa350f91f328e15902d5b4151ce636bcf6509cd8a85526bf902f5e62d5e00b4f7cc58ebdddca313462bd02c9e921b5ca387a6374204d9fd7261057f07f5de10d68ba6d6a8ec28b4a668ed804fecbeb540c5394c5d81d5f712a95e0a70ced28d8eedc5edb8e1a7e478d6bd851c38f7ba51d855e77e73bb7c585403f322b4766db062503831a25811a7bd801efdd8148311e194556f468346b4cab1ae221176535ef4aa65ff6d6eed590ea1a69b4cfc4317b11a74ca76571b9a9bfb6b2295454fcae08e7607b2565b3aaa404a2baab4a4a807d04be9262717acec8035703032e989c159d754a640147f079ae90f81a37d0872a65dff3ac04ce72a710f181af81841c78579d196a20b6ac8184acb2b8936f32c9302e78707dade56f56a20632263d6b825352ba0e16c569cb65eec0578e41c4c1dab154bf387e0dfaa5635b2e17c0a3adc0700c2faa861597e8700e1ffad5e320f5fa3b9b280b2c81e86e0616488598c1f5dbefe7769ac8451714c7a02d898f57d1edb4a36dea1dc96dafe17d65bcf82a3dd99b868e47bf293ef9d5676f19d0f2b401d6f296b53c59956552f441a5e80df39698a53c4dfd83ec68f9e6aab746f596f937291396399eb1dd6d848574f66d44c0587438c5cd2ca9ec036cf37f0b0de3ebb0c8d80d9a1672b079a95dac8b45a2e2f439ee36e2e48b8db192b550550564771bc377292cdb98a735bb4ffca3a5fdf47ccec8e3b4f77ce450ca314cf8d69fe8047a3f22878e20fcdaff19f79e7434a3c746ebefac0dca7bf7dfbc36328542a6edb820b046600432719855c908c5604614532916a51dc32363fdba353d22d40c25b264e141fc88e82de6f851fa0349af1889da620490914b38808c3880440e860248c3c16513f65ae35786fd00d2ec08206309203d9c12f92a808ca6b80254c19100d29401a447c5226ea72f6500697d00197b3be92355e5d713a3238999b16dc1a2646ac606e245d6be134c3ebc8d41b32bcfd0ec6ed1e3c48a97becfd8ffff8cf51750b65c46aa38fcb211ed36e06ddc30edc657387689ea5ae68c04575f54db8239f95583c21d259e3d51a9c80984574c3ab62bd2debfb351fa2b49df5f09d88a559dc9167f25e0247f69659ca9fc9586f82b6ec05f69f5fd9506dfb13c25f8bc593c83898168ef7819edb16790fea93656c29531b92dc3e9b631e7adb35c01e3727499d6e15008d849b3385d64ef9638319907d92dcef6af04245d64f6d8be210d990cdc472248b8432a9797f8f46523e3e668992de55ca7de35d729a1aa53e9b3b8ea53ba3241e5b634cec1ad82dbf229f257908c2c9ec50b0e635956966141f1157268c47b09e0bdc470e7254625ff212e1ae2bd9832f41c702bb4fca25bfb4b4174e61acb79826461243f15364c32fc34462ea121730a88b0635c868d7c0e5c2e0918c13f3ec1ee2049d102d7fe49ea16fc85002be94fc0ae8acafc3b702f455adcf7b5f2e46906e10294915cc077a9785d5d9574627f8904bb8a21f13edb8a7ed9063b20a15ccd22152117b762a0148b24c4e5c5ad7e469696ab344d799b2b4dffd1a6fc93fef49d8fcc2e2eb7e75d6fd5cd2e2fafcecdf6da6e6df6d1f6ba5a7db8d39eebd197f575e95fecb5bbb3bdd5ee34ded7ddca6acf2daeb87317967b8bd38b2bf3ed8b8a7f0c99def9fe2e0d55ed6e77b5ebf07f5b2cae3c5a4d567cacd310ed8a33e0e9bd73b32b0036476db4baacbb0ed8bdd98797a9e111374bfd0bedae9b5b5de97567e77a8aeb00e9eb77e0786e757ef191c7f744efe581e5fcd06b5cee63cfa9f44df21f4350bb47786176e551225777f1dc6cf771b7d47edcbd7fa1bde22163d7b32b1ebe62cd9ae66bddd5deeadceab2f3ff71488969ffff18e132651a3cdac61cb22ce9dd1756da17d70806ed50684aa83eb278b13d3ffdf0e3bdf63ab05cef752fcc097569ee1f349552ff05ee7357f400d00700008101010100204b21f3cba072cc493e70861540df4677b498b0505a8b8e2a346b85a0c2dd2fc4263c4a7d8629026c4eb594ad96fac2bfe5f8ffebb9c841c353920b7b8ec11abc0100d90778da8d563b8f1c4510eedbf7e37cf209d9e60808402496c0dcdaac4e8ece01090112afe83043ef74ed4e6b677a86ee9edd5b3b2121b049888d842c84c0c1456702eb20b036424242c2e00408800c24fe03d53db3f33a58e860b6bbeaebeaeaaaafaab7f55bff9d1a796df0e5798263c37cc89f2fbe657e1eb8c7cb92e0de5f83c1eded95e4fded2d08150faf5ea5237e69f7855db2d3c199e351e5915a339c0b900d4103681849dff5c09daa3818bc34ec5057f319d54036b6c640752cc1617c024a17515d1a6b2f945c2f48a3ab3d09ca0b7dd68ab9d097078d292cd4267e9c39f089a70faea351378c85563b11c8802bf44c383eccc0cf20cd39e55a9d31df4c766ee487eed4f528174e4425baab412ab2fd44400f1dab73046827567402f6ece195a73495139455b44ee4ead4bb1db3594b2a94b929fa51367179f0f4882adc00722dea6c6edb0798d3452a7fd60d858643ed8c2598c8297bf18227220efe2f948148a1851bbb515c72a47ce34cbbeec655133b0106781de0c9aa059f8f41f3200b19833148090c41870e1c465c528b9b73c1c2798a3a57b5c2c0cfe276de28b9f0b90027552b7e6375c085d35a0691f6ac7a7768c39351b2a4eabb54b8e0dba3486d2b597131b1f0b3553ab68cff9c15a9dec3adc83b0327b5764a645b3bbd7c77b2ce294f6a755cf4a278e473d7c1692b91a74e75d083a9b5d828596cb8218364a6175132eb4b782fe61202581d2b906ec926dcee4a2cd2302de6ec9354785ea52d5bd5900bda21ea652849adab4030243b676debdc60af83126d32d91c2d34a85341c20682e6d233ab41b8f02f154e6a05e4e9b897c2b319c990c52e3a859123b533d932bbdf76c276c527c2e4b21ceb4d8cd8aa8bb1b56dac6d90260d1b8db10c036bbaa54063abace4ba8ea2241c3da3f77980ddaa92bd2e7628c7629ab617f54c2527174b05a6ae8a8236da3229af186acd0293fea689c65e7716ccb0eb61a892b5e548eeca2475a55ec7d3d32658c78357533c329d62a2b5eda28a6cb492c93f3758e35524f9ac128236578e11276e742c286468aca330a42cf661ab98b783ebbd58643cafff27cf7b71c4685a678db575669c5f1543c3e0735af70bef07a975ec4a819b769132cbcc6379f1637c36f3278f7c7debe2cb1f7c7eadd434c8feb73fdd3bfaf4956223c0f1fcb4fec587792193fd4fee3cc31edc2956278e5f1fdd7cfc59566c1fbd39fc19d8d14999a138ee42707492b171f5c0afa848c877af9e78c7cb22f570ec3f77fb789951c882be4940930cf4f0d1db6fdc5f16528fe3ddaf0eee2fb324e3d8fb1e057942cd851ffef1fb8fc5fcd920f8af3f2e66c9fcffb84b7ff865b7ce875708c9ff60d8f137aa5a1fa900d00700001001010020742877c36a520b152b1337ea1ecd37b0c98ad07289c32fec392e7eebab9f0ac71f7bc8c718cfa75317b2e15702372a9222c4616783ee7b3f0ec6358f8c328eea00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232201a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b72410000d00700001001010020058e23368b919493d6ac61d27f66b829a53893e88ddde857d3b82d913960960d22fa36f397752b98c295e3b31927f740127c0a99e76f8bfeea88f44466b8fbfd00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea990000d0070000100101001f43fe868e263d8134cf705aa85e26ce78ebb058edd558865fa3d240f5cb9e50c2389e9c8276eac800b7233a552045b2e79124c97e5156a0649849cc7f5d09eee600005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f0000d0070000100101001f29e82b08ccf15e2187f29fea11ee3f4974f41b51e45b19f353348d8848b86fb71cadd88630456b7a1c60803c7b402487d41fbf18f0b0a13b4cca1f740447938300005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff5260000d0070000100101002047a8b784c3765b5c63ac52e3d8461b80bc2d3e3f62434f8accb277d9f2487cfd3c0728fcd26b5119a11288e5db46bc5b547877e220971609d1cef8cba443340800005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322068dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a2974280000d007000010010100203e701fbafd4149bc95b55a6bfc3b78246f5c2668ccc05ed4059a36ceb38f140b31e3b69e15f2579571e5bde39e034947271599c200e540b3949112bef163074c00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c430000d0070000100101001f0cc7352e60f4f8476783d6d1b48766a111c56fee2c1a552e76a75c92bc17de172f994ffc854c09717c904054819ca7a17379ddecaf531c439b35337ba099b81300005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232208ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4050000d0070000100101002040965063a83be2d53b36c8d7e0775f503c2caa1407e586314562aace52c272fe60659e196413a6c9db4168470bcabb9a5851121c10c7b665f363f6cd4d1e4bda00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232202652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed250000d0070000100101002074ea7468b2a031c4cd53bf10ec3ac66b0c4b5c8779e045f1ef8d9c7b116be649217ff340107d0163397b99918ee2ce822b66cd6fce7b385af97a04671136e2ee00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d0000d007000010010100204dfb21ca5140582379bc026792c16b4cf97827143a4a9cd99ae70b3e6016cd6316bcbb9f1cb1233f12a0bbcd9debafa64724d0459b5c8d3cb67ceddfb2e3962500005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d670000d0070000100101002033446a3a94ade71dff3edb786259679487ab701bbc147490b1d4159fecf545fa22fee0698db16bf616465e5cebb985bfc4d9ed1ec4a55e38997dd4b4bbc427eb00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c20000d0070000100101001f3f67edd35bf731a07f40c638e8812112cd7d1baa39ec7dac4a1b2f0c83ac8bd53689b56dba69a7386e3860a6f8976695ac0bc2b5dacae91080f1d54df2dac0c000005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b44767070000d0070000100101001f1e030564013603d54f9e983b63cd940f8ff09ae038b14813f4021bb0c09ebb640d90cb4f8d57be2809f492a51737b671a5f549d4efa8e7efdaeaa9663c09d1ad00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450710000d007000010010100205cea642eecf05568ce8c5564e63349eea3b816108914ba2ab5efffbb8ea467265f0b6d474f03ed02a3bf529fd6e55a595cbf8dd1adf4311cb9c51e862f8a535400005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232205443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b40000d0070000100101001f4556076cc86e0840bf69664f1ef8fcd4d91abda313d08e7840d24ba45cb429cf12b7d3a1f64250c19d1b975e7b107853beff70ebfc4c27c44f825dc05cdc9cd600005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e990000d0070000100101001f354d903ad0f2c6cc9d9a377d681ffaa00475d1e559e48074b4c8cce3111d5c172903b2f179ad4d736dda4e7d1b6a859baeab9dde5e5e495ce09733ec4650634400005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb400000d0070000100101001f1766fa716a828da244c9ce52919b7a19acb38dbd110d1bb0039bb2477c17e4465dceecb8330ed5ee9de1330930dfcfa1a5e8149ce8536a82c0093642adf7328200005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232206bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc0000d00700001001010020488923db1c78fa430a3a9eab75f4ee467c7b9a3d3b4eb3bd08e183c82ef79b9102a4d2a7d1ec79c96b404911ae1b10f579bd82a660011c1ca2b872b30ef7dcac00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322035c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b0000d0070000100101001f61ee60b366c2f3623012648000835e6089f9e9594a113acad200ae8a87bd05274acede23160e2e187d9921ea2ff6f37e3bd10ffd624ffceb511455c42f1c9ee200005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322063320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a0000d0070000100101001f184aad2b65730f7485957642fa1688c66e8ece7827ee2e8e01f8bc904cedd8ec5462c12a1e3c6cd41f4a15a350ec8575bb05e9597f4316ff73a4e1066aeab3d500005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb40000d0070000100101002041c996b52c4bdbbc4fbdaf707dd01e74c46c51ce2c8e10e174e12502cb6be3f23e2d44e8e8802e970bc5ccfc4d056e400c92a56667183c37e0f79fbe77540a0000005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322009e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc160000d0070000100101002064bee652fda3828128a5e42da08c65127b9e247662507ed6b46d8d18ecf73afd3313c096184a70a88fad68232faa6438a23eb399cfeeb9b18e044f94ffa6049f00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232208cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7000001 +DMLOG ACCEPTED_BLOCK 3 03000000030000000200000000000000010000000000ea3055000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add80100012d5b1b639d6ae94fcdd0536b224644931573d1ccb2a0c548613cd1feea18888b0200000000000000010000000000ea305503000000010000000000ea305502000000000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add801000000000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e80f70f21e77b7c902392950756201912a2d1f719663cae19edcb4cc1b12fe7bdd82aeb196b752844f91a8052ae8f5e5ff87c0af0c6f0b7b2ebf387fc81062e95f00000000000000204cb0fb597bad84486310c5cd290d8c20b23b1b8c968404eabcc6c8b381cc6ed47da83963564b00fb712ee06740861ba3d4615809027275066cf05bbff785fa150000000029807708239aa7de914d3ed61e9009ab2280bfbc50f1d9769f27f8341ef26198000000000001010ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd0001023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e80f70f21e77b7c902392950756201912a2d1f719663cae19edcb4cc1b12fe7bdd82aeb196b752844f91a8052ae8f5e5ff87c0af0c6f0b7b2ebf387fc81062e95f00000000000000204cb0fb597bad84486310c5cd290d8c20b23b1b8c968404eabcc6c8b381cc6ed47da83963564b00fb712ee06740861ba3d4615809027275066cf05bbff785fa151800d0070000fb05010100203b7de491b51d3d74624078bc2c5dc4420985f0350afb6923a5585b5621750c9f126d7cff0efeade2068c7b618fc754b2abb5bff8cdb9bd0ecb4432b72ae1ed380100a82f78daed5c7b8c5ce755ff1ef7357b67e3ebc6d94c3609f9e662d0b8a4659bb8eb2575dbbddbc476694b9cca2dfea3b0bbd99d647776bdbb9e1da70e0adead081045158a7894b6405524a4d21424545aa8cacb0d0815a94891fa20414284ff2a025511a245ad54737ee77cf7ceeccb71f09a87545b9e7be77b9cef7ce79cef3cbf71f44fe94f1bf5d03d9f1951f447e343fdf3d87be873f2879efef473830dea77fff59e7bbef7f440d3bfd197d9f57368d1bfa54767949ab11b9736d48cd9b8840f7a0b372ed11f35136cf0436fe80dfac0b80dbc2afa67f84d6306e6063201ad97a8ff9234d00880f033d54c84469e48cd68b03c8b3ea54dd0909531c1fc52d0b0ed95c70e2dae4f3fd29eed5de8b6a767e77a8b8fcdf6daf32a42d7cd6bdd76d9548e51317aeaedd5f5c5d5e9d9f5f576b7a72c9aa273ed73ebed9e4af025c3b4d595e9f9d9deecf4fae2cfb4558d9b09defcf4409f1a2aa7cead3d2e53ebddf6f90b8b40e6426f41a568ba89e04eaf75171f5b5c6e3f4ac8d519393476dbebab17ba73ede9e5c5738bbd75358c9e70f6e155c24ae17d44a6aeaeadaeb7e7f1327f61aedd5d5737a1d3a1f3e1e5d5b9a5b985d9c595e9b5d9eeecb9768ffae9756e8956e29db9475f6918efa23e77a1db6daff4a67b8be7daea00d316339982ed81b579743afff0f4238b2bf3d38be347558696da34d17361b9b778af3a88ef0707693c3db73adf56868958aed36dcfb5097257d61a2280580ef09890d1fac2ec3d6f1c57af61e4a877bdb74a6445ffcd681aa6a60b6bf3e02dda0ed993275414abb8369444511c0f0d594b9f517c8b1e31237624a07ff4371cd123d60e51efd0adb7da86ff63ab8f46725b10ea353d34145aad7434623774b17959a51baaf8d45f568fb8a6c3d9b5b5e5c7d5eb6a07b42a745a7bfdd83d47c727ee7bd39b87fe66539f0854767bbaa9b5dd3093f2d7a9078655417f5be683f4a5c81ecb752737e3f44d5a9f9cccad539d22ee1417cfe76a9c1a9c29b29e53ef1ad64e4faa62e3c4b0a9dbb45007e81ff5e90e663b4d2fe83d39aca9bdf8cdcb2a33ce1e489d4d8d4ac7b5def8415a6e29a755c64d9d66d262f59651832ba175dc6cd2f3ad0a40313352c533b4f3ffd03ada2854d3601718b7043ccf3b757258611fef0076d96d07d2ecce62649cc0127ae5968b8d4e1e38ddc96ecbb17da75c405b74f67c6e4ed034553cd1c92da19207457c3ed70f0c1b0c21ac685a71b19387d4d78c9c75da192c1c776901daf9131d02648088f62d173b2e62184ec68434c5f29bca465367881c84970c54f4d1c22c80549d0a2430a126fe9ede4b742b469a9637a28be0ed843e6191fd00d024d49de6bd366d0a5a6777d2dc74429b0dde36f5df9e6bec7a5859225a9339fce1c9dc60ae39a894d39e26292146a426345d7a93f272c2484b6b9e2e1154e1a0398c01a6a8778011febd839629d7b3d95d34d54c62415e4c31a2584ca6381a31acea26051d200bf4245168a23feb1ca6d5d2043cd2d9e1eda8f8f61f4e43950da9f42744a85e22fae9c3a08b2e5e0021137ecde82da8ded0adb2d78ef257a75be822622d65756a7949d1bae92fd774c0846b1104fa0872b354c43fcee7e5eb2cceaa08c0b2a62194695a9245a3dc961b6c411509c9112f456fcd80799088f838bb54d8415018cf5c23410b00c783082a10f50e84dded3abb44840118013088481f4a76fd881cda17441ad78fc81dfb8288bb7e440eef0b22adeb47e4ee7d4164ecfa1139ba2f884c5c3f22c7f70591cb6a174cf45e9898014c4c05e33982a10750d17ba2a2050223a0592d1118361ae9778cd51be612eb3957aa3975c4aadc4cb9a78eab14d660aa456f43fc36466f357e9ba03728426c01e32d8f870db33cdef01bc66b7ec378b62d9fc883fbd4017a0b8ae4b1fbd44dfc96d1db30bf35e8ad8e193c2eaec645d5b8b01a17f0fa0d5edf1c57b70aee99c7e5f60a97d10a97db2a5c1abc0b8cbbb9dae36baa3d1eacf69809ce8a9118e10581c42db234bd1d1264d57dea2e2107b5fd4035eece6adc1d6459c844b286602bf4adefd3fe7f92f6da533efd522076fd194daed5619535e0fa38f56e78155bff121a57aefcf1b77ee7d73ffde2d44f929380af57ae7cf6db5fc35720b9b9b9f9fca7fff04f3e72cf43c356be5efe95ef50ef43c3817cddfc230c7ef770e22c7c910f12ba05b9544fd1d3d923f6297dccb263414ecb8f8ed693d42f71e55b1f7e71ea3dbcc4339f7cf1c57ff8e047bef6f98d3ed0bfffbddfa0efef1e8e05ea3c3dc8c59e119833c76c4b409205c8de305a8f539ef639d94705e5437ffbf257805a244096e9419a6541802c1cb3ce03719decded17a94fab537bffde13e10c0fc28808402e4494c08c8c5f6fbdba4fd251e4ed2c9de385a0f531979861ee1b8392de34e1fb3137ed844273b365a0ffcb01e3da271b326c3d68ed9861fd6e8643f365ab77ed83be9118f9b5332ecd4313be98791a20538e3c73d013cc6cd451977f198cdfcb8ac931d1fad6b3fec7df4a88d9bb332ecec313be6878d75b2b78c52f891dd415f9ed190a6d7283eb3194e0bf99b27b324fdb2d131046c8ce4ab19389231e8eea0198a568f24ccc8823c7e4064cec5c507d8f58eb3db9a86d1a0a6039d62ed3cbbc37007e32c240f3f2848d65b2e98526010b5769ab010ae038f30f1b0e277b025f8f92fc012a09310635fd260540df077b6d2bce4647f5eea12572b34fae9bc53d4007b414c1f3719351cc2e45a47da98c714f14094031716fa8220d5eabc4ea926751db1ae09479bbacec3d7e6082462fb1461abca25c5157dde4507b51a2086c978c36344650a3d2378e671fa73468757a36d79743d753d30ed296b52d09ec5612f0283b22d4fd91dd44c795b25e102f218997a4c0750d45614c9842289d0ac0145dae9d3e6886dbd0245a283666f5a0cf7652e3b927edb50e84a24f9b8b911f2f6450ad6157d667654f6725c1e13781095c6095c40a756866653a3bc550e555cd032934211daf1045303a7069d09efb9ea4c8ed96760595ee05e97205a1662d29e4bb22a1c7fa6ae9359cfe89cb9c55d2f6881ee71268c99452f700b562d5b1a1523aec20199181db4bb70e1e346d870f3e0d1c79cac96feaa3511197562c7a6be91227a4a1e93f2382d8fb3c29aa3f218ab38045e819050a478bb8c2816e738036dbe496c7b2b734d58365171658c8f34c2d75d5846ebcdc8eced1c6b0d722c138e3564d24cae847bf4581304060ec559728fe871baa9f138454a891e93cda1abf069c8c125c2790976e1d4a6de7960ee4ebf6775c207e6867108142639236748b4227fcf8884fefb560ebe02cf66fa3cdbd4b229614a764ab856bb1ad78840bb706d53ced910b85613ae65c0d8d5ae81718cc54bb2c31a2ca4eaaf98418892b289d978cc2ec8db647f6dac54cd430309821d9c450e083949b2b45f31bbb673bbb9f7b9f5d2f05e4e35e586844ea48239adfc6095dd46019b2246227596a5a3900f24d5c897ec33dbed18927e2e14b3ff4db5b71e8e2b5d9c94ba38f1eb267d5d9c6c93aaa4b4fd7071f6949a44a4060a93c5252b46af76aa9f17f9a8ed38d5a72be161d1b986537d7a40386604cfb395626a99fbd91010518ab173cd9a77ad2db8572bbef6ec575ffbe030ab7ea44c3397c7d43ab6ec7d8b182e223fcef421e535c0d2a77032e9f85b56ebe8815339b682d93966a4d726348cef82e03b431009d0e9a53c06b221840833428f28fca9af13a231231a6e4174461ef38209a000d1b08f682888f2bc15993a2f324be42e6596e6cd88d6f1d0e22c4fa5fdf440fb99b23d19907119c6f957efacdd4fed792a6a1ab27f2015ce672d957a25426f3763619dfd083b3a2f3e074727ad952a33fd4598347de34ddae92d7af1ecdede06fb1ba52dfb22f46243ccbad8b2c957f040763767c99ee6ec2a0ec8cc80ffb1b6c5b5d8d59c5d456f95562cbc8a15bb8c8481bec479f2cb8a83576477103b2134297833766a03e859f16345c3e5014e2ce144f8fbe347e87338f7d17ff9cc37de40bccf5038390595c4d11069b50772d522cd826f2758303e7b993d600b7e247ed49492c8ee0436d4cac3615d2f87d4113d31a3127ecb3a651878d20f7e6058a7a20b8abb3b790492d3493b816202e9da850e1020c1715cd2e19ac0034c1412e8900b3329c7b818a4a038c326b5442e947a482ee11feb6eff967ecc4af4b0a93df57212ab2306e25629e6b054cca1e742d857cce136e90dbd62862e15511a70ca4eeda2a343d6d1c66ba3ad815acb1c45be8e75370825dac2727c717440afb364676ff3ca3de21e7a1b14e6ad2e40eca2bd1db718648f2a151f5d9be326fa1af179c04a964f23407ad373ff00fdbc66e20a9868a6e24b34d070054ab45329e15f30da6e38613b54129f42944b2cca25c1d2568a599fe40cc08a40086639cbca8bf9c04cb15c21c6dd3f90287bec23b44687a34186a6010df5a3dc6e83a6fb395d55ca871ec8e932b4f4dff50d2261b00709d51e2095b84c7b8084d0ecdfa6bf6e593346bcf1a069a6147c3bae9271dabb19d2f18e2ca7f470d0d4db7989efc2d471029d4b6e48579071e69a73cee2097b75459d7711f21379d4fbfd27096e54c49d664487980c1249ee79d2435ea9f20e12d9526d891c083a7af613b97950aaaa2e5ecadeeb7bcb8de5c949d699d0facebc0b03a983cc81613726c1eee85b728274a564f0835229d2eeb4f5cbd2495adaa14e7857b52a5bc14dd007466aba21a8e469a2b7d124d84a934068120dd224649a18a189014d42170dd0049ed95b0cb248f5bedcb868a9703bd0447291c8da1c40b3e93940be207c54a4a6b886bc7b117510e2401155977b7f1545d441506511065af8da8aa8bb2162b13bfbaa8ba8af0e9143fb8248e3fa11b9635f1071d78fc8e17d41a475fd88dcbd2f888c5d3f2247f7059189eb47e4f8be20b27b11752f4caeb188ba072aba84b05b11f5b7c52f0ff7d1fa243badcfa0a68d5cb2cdfa88ed89c5ba180a3b617822313ce4122f650f55db492aa32ac3c5b925e55d591f52c61c4103346f04d4499660a128307e701712259ca6a0686e2bb738620389fe53f74397cc27502417c677740825f24bab6b48755e104ec1521e88c7b8f1ce61d6e6e46052e81dba402e3489b3cf8fa03f5130266727d7127d87f065450042870b65e4efa896783641cea40b386e534211cd496d89d4789ce65d6a7642602ea55261d877e1a00417a5b0469efa6b46c81821b6fe0b6b62899edd12a79ce47a13416de4108f3b1855443db8d34456556e6d69dc1c433585c2a0f0a4bfcf147074c48d4027e4ea1c9132aceea269dcb2cb0ee54c30d0ed0301b22bf0edfa910ba49183f2e21b12d20588700a0d3bcc63b343a374ba98ce0a914bc8ac629a6cad8684a5810d61c3622925253cf062a7b86bcbd8d82585e3b1a0d551445308dce98108b526112af5d4ab6b75779010321fe9dd61c70f725aa32665158d143697eb10a2b01cc41c82e32d92405471e94a3e90612401c97eca45083c25b8268fb4d1d41e0ce8076632174bd2a67fa5ad2106a2649c079c11d2888b9504c57fc69b03ba4896dcfc1037be2c3b66998e24f0e18f983d667203d9e6e771760b4d8c789c4cfcd873c20fe2dfe94e19df97c5a6b314ac09050981a3ac1d5bd9ad0c0195f7337251b13375c94553fa09faf8d9f7de4e6c232e51b0fa5d4d7e93d4cd82c39c1c3a46b84cf2da25da4ffb1217d21d874a0a071c1712754422ac5c05e864ef1b958188092d5f02909091a01ecd43cf46f60724b28fd9aa7b26c6583e41264cea100a706249b344b44b6622b49296b48eeb94c50a30904f218e9b5c4f844a75c8b130982d4c948a59fa211b0a0b858d14ae8b0ae228c9ee0c4228a4b96bb72004210dc270e5d930600b1c3026c54f683635ab00d6fa688af860cb443a244c1583c0389a4a7e01d9bc3728f5641e4c4d3cf524498b2e363ad80cf5b1f9206340d0ab2081149a08de95e7fc098c40c9b084430c670cf840c2c30f80c1001c72a3194cc61aa744850e3d04b1b03d3ab8d9413ec822bd068f000b0550d7b21ea77848e6d0820405be34e44ba3c3bb979b21d294f9a6ac6c324898105f3eef85321bd08c03a944affa37399518f854a264b612a46b78e9665837e93605c7df919d97b17e9c682fbe3dbc5d7dd9d216f910179773b795c36d3596d57b7a3f85d95244a87095c41ae3ab3cbe7a2fd4522e197c1fc80d02f26553a9bb6d92b5975c9529ea3da1226175581e8e9d003afca4be5a223c8d1dd6b1ca4d86d089879b7c07a5515d1e6079e220f730fc4f674e6e99ea7c4a6fcbec5b315b97b3f59eb3ab0923db26f00ea026b3fed1701dc9cabe6d5492748924e97c0ed7882d6435fae7b86830703b4af160f1a12cd9b407799af2ae171cad3c821f620a5c698a59f511d988b0c5f7a8016e3f291dc2ab0777d1456fbf1dd503b80a996be23700e23d231d6c71ef05b7b3011d3bf7fefb062960728e82342d8b6b900cc5e50dbec311c38292e1586a4afa350f91f328e15902d5b4151ce636bcf6509cd8a85526bf902f5e62d5e00b4f7cc58ebdddca313462bd02c9e921b5ca387a6374204d9fd7261057f07f5de10d68ba6d6a8ec28b4a668ed804fecbeb540c5394c5d81d5f712a95e0a70ced28d8eedc5edb8e1a7e478d6bd851c38f7ba51d855e77e73bb7c585403f322b4766db062503831a25811a7bd801efdd8148311e194556f468346b4cab1ae221176535ef4aa65ff6d6eed590ea1a69b4cfc4317b11a74ca76571b9a9bfb6b2295454fcae08e7607b2565b3aaa404a2baab4a4a807d04be9262717acec8035703032e989c159d754a640147f079ae90f81a37d0872a65dff3ac04ce72a710f181af81841c78579d196a20b6ac8184acb2b8936f32c9302e78707dade56f56a20632263d6b825352ba0e16c569cb65eec0578e41c4c1dab154bf387e0dfaa5635b2e17c0a3adc0700c2faa861597e8700e1ffad5e320f5fa3b9b280b2c81e86e0616488598c1f5dbefe7769ac8451714c7a02d898f57d1edb4a36dea1dc96dafe17d65bcf82a3dd99b868e47bf293ef9d5676f19d0f2b401d6f296b53c59956552f441a5e80df39698a53c4dfd83ec68f9e6aab746f596f937291396399eb1dd6d848574f66d44c0587438c5cd2ca9ec036cf37f0b0de3ebb0c8d80d9a1672b079a95dac8b45a2e2f439ee36e2e48b8db192b550550564771bc377292cdb98a735bb4ffca3a5fdf47ccec8e3b4f77ce450ca314cf8d69fe8047a3f22878e20fcdaff19f79e7434a3c746ebefac0dca7bf7dfbc36328542a6edb820b046600432719855c908c5604614532916a51dc32363fdba353d22d40c25b264e141fc88e82de6f851fa0349af1889da620490914b38808c3880440e860248c3c16513f65ae35786fd00d2ec08206309203d9c12f92a808ca6b80254c19100d29401a447c5226ea72f6500697d00197b3be92355e5d713a3238999b16dc1a2646ac606e245d6be134c3ebc8d41b32bcfd0ec6ed1e3c48a97becfd8ffff8cf51750b65c46aa38fcb211ed36e06ddc30edc657387689ea5ae68c04575f54db8239f95583c21d259e3d51a9c80984574c3ab62bd2debfb351fa2b49df5f09d88a559dc9167f25e0247f69659ca9fc9586f82b6ec05f69f5fd9506dfb13c25f8bc593c83898168ef7819edb16790fea93656c29531b92dc3e9b631e7adb35c01e3727499d6e15008d849b3385d64ef9638319907d92dcef6af04245d64f6d8be210d990cdc472248b8432a9797f8f46523e3e668992de55ca7de35d729a1aa53e9b3b8ea53ba3241e5b634cec1ad82dbf229f257908c2c9ec50b0e635956966141f1157268c47b09e0bdc470e7254625ff212e1ae2bd9832f41c702bb4fca25bfb4b4174e61acb79826461243f15364c32fc34462ea121730a88b0635c868d7c0e5c2e0918c13f3ec1ee2049d102d7fe49ea16fc85002be94fc0ae8acafc3b702f455adcf7b5f2e46906e10294915cc077a9785d5d9574627f8904bb8a21f13edb8a7ed9063b20a15ccd22152117b762a0148b24c4e5c5ad7e469696ab344d799b2b4dffd1a6fc93fef49d8fcc2e2eb7e75d6fd5cd2e2fafcecdf6da6e6df6d1f6ba5a7db8d39eebd197f575e95fecb5bbb3bdd5ee34ded7ddca6acf2daeb87317967b8bd38b2bf3ed8b8a7f0c99def9fe2e0d55ed6e77b5ebf07f5b2cae3c5a4d567cacd310ed8a33e0e9bd73b32b0036476db4baacbb0ed8bdd98797a9e111374bfd0bedae9b5b5de97567e77a8aeb00e9eb77e0786e757ef191c7f744efe581e5fcd06b5cee63cfa9f44df21f4350bb47786176e551225777f1dc6cf771b7d47edcbd7fa1bde22163d7b32b1ebe62cd9ae66bddd5deeadceab2f3ff71488969ffff18e132651a3cdac61cb22ce9dd1756da17d70806ed50684aa83eb278b13d3ffdf0e3bdf63ab05cef752fcc097569ee1f349552ff05ee7357f400d00700008101010100204b21f3cba072cc493e70861540df4677b498b0505a8b8e2a346b85a0c2dd2fc4263c4a7d8629026c4eb594ad96fac2bfe5f8ffebb9c841c353920b7b8ec11abc0100d90778da8d563b8f1c4510eedbf7e37cf209d9e60808402496c0dcdaac4e8ece01090112afe83043ef74ed4e6b677a86ee9edd5b3b2121b049888d842c84c0c1456702eb20b036424242c2e00408800c24fe03d53db3f33a58e860b6bbeaebeaeaaaafaab7f55bff9d1a796df0e5798263c37cc89f2fbe657e1eb8c7cb92e0de5f83c1eded95e4fded2d08150faf5ea5237e69f7855db2d3c199e351e5915a339c0b900d4103681849dff5c09daa3818bc34ec5057f319d54036b6c640752cc1617c024a17515d1a6b2f945c2f48a3ab3d09ca0b7dd68ab9d097078d292cd4267e9c39f089a70faea351378c85563b11c8802bf44c383eccc0cf20cd39e55a9d31df4c766ee487eed4f528174e4425baab412ab2fd44400f1dab73046827567402f6ece195a73495139455b44ee4ead4bb1db3594b2a94b929fa51367179f0f4882adc00722dea6c6edb0798d3452a7fd60d858643ed8c2598c8297bf18227220efe2f948148a1851bbb515c72a47ce34cbbeec655133b0106781de0c9aa059f8f41f3200b19833148090c41870e1c465c528b9b73c1c2798a3a57b5c2c0cfe276de28b9f0b90027552b7e6375c085d35a0691f6ac7a7768c39351b2a4eabb54b8e0dba3486d2b597131b1f0b3553ab68cff9c15a9dec3adc83b0327b5764a645b3bbd7c77b2ce294f6a755cf4a278e473d7c1692b91a74e75d083a9b5d828596cb8218364a6175132eb4b782fe61202581d2b906ec926dcee4a2cd2302de6ec9354785ea52d5bd5900bda21ea652849adab4030243b676debdc60af83126d32d91c2d34a85341c20682e6d233ab41b8f02f154e6a05e4e9b897c2b319c990c52e3a859123b533d932bbdf76c276c527c2e4b21ceb4d8cd8aa8bb1b56dac6d90260d1b8db10c036bbaa54063abace4ba8ea2241c3da3f77980ddaa92bd2e7628c7629ab617f54c2527174b05a6ae8a8236da3229af186acd0293fea689c65e7716ccb0eb61a892b5e548eeca2475a55ec7d3d32658c78357533c329d62a2b5eda28a6cb492c93f3758e35524f9ac128236578e11276e742c286468aca330a42cf661ab98b783ebbd58643cafff27cf7b71c4685a678db575669c5f1543c3e0735af70bef07a975ec4a819b769132cbcc6379f1637c36f3278f7c7debe2cb1f7c7eadd434c8feb73fdd3bfaf4956223c0f1fcb4fec587792193fd4fee3cc31edc2956278e5f1fdd7cfc59566c1fbd39fc19d8d14999a138ee42707492b171f5c0afa848c877af9e78c7cb22f570ec3f77fb789951c882be4940930cf4f0d1db6fdc5f16528fe3ddaf0eee2fb324e3d8fb1e057942cd851ffef1fb8fc5fcd920f8af3f2e66c9fcffb84b7ff865b7ce875708c9ff60d8f137aa5a1fa900d00700001001010020742877c36a520b152b1337ea1ecd37b0c98ad07289c32fec392e7eebab9f0ac71f7bc8c718cfa75317b2e15702372a9222c4616783ee7b3f0ec6358f8c328eea00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232201a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b72410000d00700001001010020058e23368b919493d6ac61d27f66b829a53893e88ddde857d3b82d913960960d22fa36f397752b98c295e3b31927f740127c0a99e76f8bfeea88f44466b8fbfd00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea990000d0070000100101001f43fe868e263d8134cf705aa85e26ce78ebb058edd558865fa3d240f5cb9e50c2389e9c8276eac800b7233a552045b2e79124c97e5156a0649849cc7f5d09eee600005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f0000d0070000100101001f29e82b08ccf15e2187f29fea11ee3f4974f41b51e45b19f353348d8848b86fb71cadd88630456b7a1c60803c7b402487d41fbf18f0b0a13b4cca1f740447938300005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff5260000d0070000100101002047a8b784c3765b5c63ac52e3d8461b80bc2d3e3f62434f8accb277d9f2487cfd3c0728fcd26b5119a11288e5db46bc5b547877e220971609d1cef8cba443340800005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322068dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a2974280000d007000010010100203e701fbafd4149bc95b55a6bfc3b78246f5c2668ccc05ed4059a36ceb38f140b31e3b69e15f2579571e5bde39e034947271599c200e540b3949112bef163074c00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c430000d0070000100101001f0cc7352e60f4f8476783d6d1b48766a111c56fee2c1a552e76a75c92bc17de172f994ffc854c09717c904054819ca7a17379ddecaf531c439b35337ba099b81300005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232208ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4050000d0070000100101002040965063a83be2d53b36c8d7e0775f503c2caa1407e586314562aace52c272fe60659e196413a6c9db4168470bcabb9a5851121c10c7b665f363f6cd4d1e4bda00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232202652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed250000d0070000100101002074ea7468b2a031c4cd53bf10ec3ac66b0c4b5c8779e045f1ef8d9c7b116be649217ff340107d0163397b99918ee2ce822b66cd6fce7b385af97a04671136e2ee00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d0000d007000010010100204dfb21ca5140582379bc026792c16b4cf97827143a4a9cd99ae70b3e6016cd6316bcbb9f1cb1233f12a0bbcd9debafa64724d0459b5c8d3cb67ceddfb2e3962500005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d670000d0070000100101002033446a3a94ade71dff3edb786259679487ab701bbc147490b1d4159fecf545fa22fee0698db16bf616465e5cebb985bfc4d9ed1ec4a55e38997dd4b4bbc427eb00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232204fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c20000d0070000100101001f3f67edd35bf731a07f40c638e8812112cd7d1baa39ec7dac4a1b2f0c83ac8bd53689b56dba69a7386e3860a6f8976695ac0bc2b5dacae91080f1d54df2dac0c000005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b44767070000d0070000100101001f1e030564013603d54f9e983b63cd940f8ff09ae038b14813f4021bb0c09ebb640d90cb4f8d57be2809f492a51737b671a5f549d4efa8e7efdaeaa9663c09d1ad00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450710000d007000010010100205cea642eecf05568ce8c5564e63349eea3b816108914ba2ab5efffbb8ea467265f0b6d474f03ed02a3bf529fd6e55a595cbf8dd1adf4311cb9c51e862f8a535400005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232205443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b40000d0070000100101001f4556076cc86e0840bf69664f1ef8fcd4d91abda313d08e7840d24ba45cb429cf12b7d3a1f64250c19d1b975e7b107853beff70ebfc4c27c44f825dc05cdc9cd600005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e990000d0070000100101001f354d903ad0f2c6cc9d9a377d681ffaa00475d1e559e48074b4c8cce3111d5c172903b2f179ad4d736dda4e7d1b6a859baeab9dde5e5e495ce09733ec4650634400005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb400000d0070000100101001f1766fa716a828da244c9ce52919b7a19acb38dbd110d1bb0039bb2477c17e4465dceecb8330ed5ee9de1330930dfcfa1a5e8149ce8536a82c0093642adf7328200005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed3232206bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc0000d00700001001010020488923db1c78fa430a3a9eab75f4ee467c7b9a3d3b4eb3bd08e183c82ef79b9102a4d2a7d1ec79c96b404911ae1b10f579bd82a660011c1ca2b872b30ef7dcac00005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322035c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b0000d0070000100101001f61ee60b366c2f3623012648000835e6089f9e9594a113acad200ae8a87bd05274acede23160e2e187d9921ea2ff6f37e3bd10ffd624ffceb511455c42f1c9ee200005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322063320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a0000d0070000100101001f184aad2b65730f7485957642fa1688c66e8ece7827ee2e8e01f8bc904cedd8ec5462c12a1e3c6cd41f4a15a350ec8575bb05e9597f4316ff73a4e1066aeab3d500005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed323220fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb40000d0070000100101002041c996b52c4bdbbc4fbdaf707dd01e74c46c51ce2c8e10e174e12502cb6be3f23e2d44e8e8802e970bc5ccfc4d056e400c92a56667183c37e0f79fbe77540a0000005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322009e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc160000d0070000100101001f559c038cf4880a42f0e9fe85898105f1fe00e13f9d332448a6dfc2012ae6f3ee2f868de75894443c82b89a2d1ed3ea14ed8da702d92e4e4c633a40d3dfb5e59400005206e10b5e02005132b41600000000010000000000ea30550000002a9bed3232010000000000ea305500000000a8ed32322018b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d6390000001 DMLOG START_BLOCK 4 DMLOG FEATURE_OP ACTIVATE 1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241 {"feature_digest":"1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"f3c3d91c4603cde2397268bfed4e662465293aab10cd9416db0d442b8cec2949","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"ONLY_LINK_TO_EXISTING_PERMISSION"}]} DMLOG FEATURE_OP ACTIVATE ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99 {"feature_digest":"ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"9908b3f8413c8474ab2a6be149d3f4f6d0421d37886033f27d4759c47a26d944","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"REPLACE_DEFERRED"}]} @@ -160,28 +160,28 @@ DMLOG FEATURE_OP ACTIVATE 35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569 DMLOG FEATURE_OP ACTIVATE 63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a {"feature_digest":"63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"c0cce5bcd8ea19a28d9e12eafda65ebe6d0e0177e280d4f20c7ad66dcd9e011b","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"BLS_PRIMITIVES2"}]} DMLOG FEATURE_OP ACTIVATE fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb4 {"feature_digest":"fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb4","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"440c3efaaab212c387ce967c574dc813851cf8332d041beb418dfaf55facd5a9","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"DISABLE_DEFERRED_TRXS_STAGE_1"}]} DMLOG FEATURE_OP ACTIVATE 09e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc16 {"feature_digest":"09e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc16","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"a857eeb932774c511a40efb30346ec01bfb7796916b54c3c69fe7e5fb70d5cba","dependencies":["fce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb4"],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"DISABLE_DEFERRED_TRXS_STAGE_2"}]} -DMLOG FEATURE_OP ACTIVATE 8cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7 {"feature_digest":"8cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"bc726a24928ea2d71ba294b70c5c9efc515c1542139bcf9e42f8bc174f2e72ff","dependencies":[],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"INSTANT_FINALITY"}]} +DMLOG FEATURE_OP ACTIVATE 18b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d6390 {"feature_digest":"18b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d6390","subjective_restrictions":{"enabled":true,"preactivation_required":true,"earliest_allowed_activation_time":"1970-01-01T00:00:00.000"},"description_digest":"bd496b9e85ce61dcddeee4576ea185add87844238da992a9ee6df2a2bdb357c2","dependencies":["299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707","63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a","68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428","c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071"],"protocol_feature_type":"builtin","specification":[{"name":"builtin_feature_codename","value":"INSTANT_FINALITY"}]} DMLOG CREATION_OP ROOT 0 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304003,"value_ex":57599,"consumed":1},"cpu_usage":{"last_ordinal":1262304003,"value_ex":279534,"consumed":101},"ram_usage":180802} -DMLOG TRX_OP CREATE onblock 5d4ece78f69e0de92cfe8d938361ab91671cca2213a7a6b9137a44431a19fd61 0000000000000000000000000000010000000000ea305500000000221acfa4010000000000ea305500000000a8ed323274023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e82d8cdf5a48c796389dd8078c999af1b8542b7e1d56784775146ab9963566974d9426f419e11a481547c9e05fe24a17d138a7fcdcf5ff599a09e03630dec0c799000000000000000000 -DMLOG APPLIED_TRANSACTION 4 5d4ece78f69e0de92cfe8d938361ab91671cca2213a7a6b9137a44431a19fd6104000000033b3d4b0100000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba01006400000000000000000000000000000000000000000001010000010000000000ea3055726496fe3dfa6d508103599b7b80e51d333346f2f8f458fa0a1998e3c0feb5cc1b000000000000001b00000000000000010000000000ea30551b0000000000000001010000000000ea30550000000000ea305500000000221acfa4010000000000ea305500000000a8ed323274023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e82d8cdf5a48c796389dd8078c999af1b8542b7e1d56784775146ab9963566974d9426f419e11a481547c9e05fe24a17d138a7fcdcf5ff599a09e03630dec0c799000000000000000000000000000000005d4ece78f69e0de92cfe8d938361ab91671cca2213a7a6b9137a44431a19fd6104000000033b3d4b0100000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba0000000000000000 +DMLOG TRX_OP CREATE onblock c07a5b477b20eff04cb92a9c03a0d27ce7f972cdfd8f8a0fd3feb47b5e657600 0000000000000000000000000000010000000000ea305500000000221acfa4010000000000ea305500000000a8ed323274023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e80f70f21e77b7c902392950756201912a2d1f719663cae19edcb4cc1b12fe7bdd82aeb196b752844f91a8052ae8f5e5ff87c0af0c6f0b7b2ebf387fc81062e95f000000000000000000 +DMLOG APPLIED_TRANSACTION 4 c07a5b477b20eff04cb92a9c03a0d27ce7f972cdfd8f8a0fd3feb47b5e65760004000000033b3d4b01000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b01006400000000000000000000000000000000000000000001010000010000000000ea305508e89aec91f1c856b4422cfa0de8a86078a690825cb5dbf3e51276c24be13d591b000000000000001b00000000000000010000000000ea30551b0000000000000001010000000000ea30550000000000ea305500000000221acfa4010000000000ea305500000000a8ed323274023b3d4b0000000000ea305500000000000213588be25132b4167ced6df22b5439e376d5a20284190bb94a43e3e80f70f21e77b7c902392950756201912a2d1f719663cae19edcb4cc1b12fe7bdd82aeb196b752844f91a8052ae8f5e5ff87c0af0c6f0b7b2ebf387fc81062e95f00000000000000000000000000000000c07a5b477b20eff04cb92a9c03a0d27ce7f972cdfd8f8a0fd3feb47b5e65760004000000033b3d4b01000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG RAM_OP 0 eosio code update setcode eosio 452902 272100 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304003,"value_ex":154127,"consumed":16681},"cpu_usage":{"last_ordinal":1262304003,"value_ex":291109,"consumed":2101},"ram_usage":452902} -DMLOG APPLIED_TRANSACTION 4 380ac745a7633db01757d663500c5edbbe8c722c3b185e9806e0d2e3e81cb4f404000000033b3d4b0100000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba0100d0070000a510000000000000000028410000000000000001010000010000000000ea3055f0d4bd6bf1b62dc0158b37a63d486b34ba1162c7a1e1b612d8d51c675d91e53a1c000000000000001c00000000000000010000000000ea30551c0000000000000002010000000000ea30550000000000ea305500000040258ab2c2010000000000ea305500000000a8ed3232c8df020000000000ea30550000bbdf020061736d0100000001d8012060000060027f7f0060037f7f7f0060037f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f017f60077f7f7f7f7f7f7f017f60047e7e7e7e017f6000017e60047f7e7e7f0060057f7f7f7f7f017f60027f7f017f60027f7f017e60057f7f7f7f7f0060067e7e7e7e7f7f017f60017e0060027e7f0060047e7e7e7e0060037e7f7f017e60017f0060017f017f6000017f60027f7e0060047f7e7f7f0060037e7e7e0060087f7f7f7f7f7f7f7f0060077f7f7f7f7f7f7f0060017d017d60067f7f7f7f7f7f0060037f7e7f0060047f7f7f7f0060027e7e000280072c03656e760561626f7274000003656e760c656f73696f5f617373657274000103656e76066d656d736574000303656e76076d656d6d6f7665000303656e76066d656d637079000303656e76087072696e74735f6c000103656e760a626c735f66705f6d6f64000403656e760a626c735f67325f6d6170000403656e760a626c735f67325f616464000503656e760b626c735f70616972696e67000603656e760b64625f66696e645f693634000703656e761063757272656e745f7265636569766572000803656e760d6173736572745f736861323536000203656e760b6173736572745f73686131000203656e760d6173736572745f736861353132000203656e76106173736572745f726970656d64313630000203656e7606736861323536000203656e76095f5f6173686c746933000903656e760473686131000203656e7606736861353132000203656e7609726970656d64313630000203656e760b7265636f7665725f6b6579000a03656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000103656e76206765745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000b03656e76167365745f70726f706f7365645f70726f647563657273000c03656e760c63757272656e745f74696d65000803656e76146765745f6163746976655f70726f647563657273000b03656e76126173736572745f7265636f7665725f6b6579000d03656e760c64625f73746f72655f693634000e03656e760c726571756972655f61757468000f03656e760e7365745f66696e616c697a657273000103656e760e7365745f70726976696c65676564001003656e76137365745f7265736f757263655f6c696d697473001103656e76197365745f70726f706f7365645f70726f6475636572735f6578001203656e761370726561637469766174655f66656174757265001303656e76067072696e7473001303656e761469735f666561747572655f616374697661746564001403656e7610616374696f6e5f646174615f73697a65001503656e7610726561645f616374696f6e5f64617461000b03656e7611656f73696f5f6173736572745f636f6465001603656e7614656f73696f5f6173736572745f6d657373616765000203656e760a64625f6765745f693634000303656e760d64625f7570646174655f693634001703656e76087072696e746865780001037a79001814140b1300141313131303030b0b130b0a191a01030b0104030301130f130b02021b14020013001300130013001300131c1313021d0b020b1e01010201020101010113011f1f1f1f1f1f1f0b011f1f1f1f1f0b01011f0b1f0b1f1f1f0b0b0b0b000b0b0101010b010101010101020b010b020202020b010405017001131305030100010616037f014180c0000b7f0041a2d8000b7f0041a2d8000b070901056170706c79002d0924010041010b12535557595b5d910192019301950196019701980199019a019f01a001a1010ac1be0279100010321052105410561058105a105c0bf903002000104a102c20002001510440428080f9d4a98499dc9a7f200251044020002001107205428080add68d959ba955200251044020002001107305428080add68d95abd1ca0020025104402000200110740542808080e8b2edc0d38b7f200251044020002001107505428080add68db8baf1542002510440200020011076054280f8a6d4d2a8a1d3c1002002510440200020011077054280808080d4c4a2d942200251044020002001107805428080808080f798d942200251044020002001107b054280808080aefadeeaa47f200251044020002001107c054280808080b6f7d6d942200251044020002001107d05428080b8f6a4979ad942200251044020002001107e0542808080c093fad6d942200251044020002001107f0542f0aadf8bcde9add942200251044020002001108301054280808096cdebd4d942200251044020002001108501054280808080daac9bd6ba7f2002510440200020011087010542808080d0b2b3bb9932200251044020002001108801054290a9d9d9dd8c99d6ba7f200251044020002001108901052000428080808080c0ba98d500520440410042808080d9d3b3ed82ef0010270b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b05428080808080c0ba98d50020015104404280808080aefadeeaa47f2002510440410042818080d9d3b3ed82ef0010270b0b0b410010370bb40101037f200021010240024002402000410371450d00024020002d00000d00200020006b0f0b200041016a210103402001410371450d0120012d00002102200141016a220321012002450d020c000b0b2001417c6a21010340200141046a22012802002202417f73200241fffdfb776a7141808182847871450d000b0240200241ff01710d00200120006b0f0b034020012d00012102200141016a2203210120020d000c020b0b2003417f6a21030b200320006b0b7201037f024020000d0041000f0b4100410028028c40200041107622016a220236028c404100410028028440220320006a410f6a4170712200360284400240200241107420004b0d004100200241016a36028c40200141016a21010b024020014000417f470d0041004190c00010010b20030b8a0101037f0240200120006c22010d0041000f0b4100410028028c40200141107622026a220336028c404100410028028440220020016a410f6a4170712204360284400240200341107420044b0d004100200341016a36028c40200241016a21020b024020024000417f470d0041004190c00010010b024020000d0041000f0b20004100200110021a20000b02000b3601017f230041106b2200410036020c4100200028020c280200410f6a417071220036028040410020003602844041003f0036028c400b3301027f2000410120001b2101024003402001102f22000d01410021004100280280412202450d0120021100000c000b0b20000b0600200010310b0900200041013602000b0900200041003602000b02000ba10101037f4184c10010350240410028028c4122030d004194c100210341004194c10036028c410b0240024041002802904122044120470d0002404184024101103022030d00417f21050c020b410021042003410028028c413602004100200336028c4141004100360290410b410021054100200441016a36029041200320044102746a22034184016a2001360200200341046a20003602000b4184c100103620050b4901037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200420056b21030b20030bf90101027f0240200041ffc1d72f4b0d0020012000103b0f0b200020004180c2d72f6e22024180c2d72f6c6b210302400240200041ff93ebdc034b0d002001200241306a3a0000410121000c010b410221002001200241017441a0c3006a410210041a0b200120006a220020034190ce006e220141ffff037141e4006e220241017441a0c3006a410210041a200041026a2001200241e4006c6b41017441feff037141a0c3006a410210041a200041046a200320014190ce006c6b220141ffff037141e4006e220341017441a0c3006a410210041a200041066a2001200341e4006c6b41017441feff037141a0c3006a410210041a200041086a0bda0301027f02402001418fce004b0d000240200141e3004b0d000240200141094b0d002000200141306a3a0000200041016a0f0b2000200141017441a0c3006a410210041a200041026a0f0b200141ffff0371220241e4006e21030240200141e7074b0d002000200341306a3a0000200041016a200241e4007041017441a0c3006a410210041a200041036a0f0b2000200341017441a0c3006a410210041a200041026a2001200341e4006c6b41017441feff037141a0c3006a410210041a200041046a0f0b20014190ce006e210302400240200141bf843d4b0d0002402001419f8d064b0d002000200341306a3a0000410121020c020b410221022000200341017441a0c3006a410210041a0c010b0240200141fface2044b0d002000200341ffff037141e4006e220241306a3a0000200041016a2003200241e4006c6b41017441feff037141a0c3006a410210041a410321020c010b2000200141c0843d6e41017441a0c3006a410210041a200041026a200341e4007041017441a0c3006a410210041a410421020b200020026a2200200120034190ce006c6b220141ffff037141e4006e220341017441a0c3006a410210041a200041026a2001200341e4006c6b41017441feff037141a0c3006a410210041a200041046a0b05001000000bbb0101037f20004200370200200041086a22024100360200024020012d00004101710d00200020012902003702002002200141086a28020036020020000f0b02402001280204220241704f0d00200128020821030240024002402002410b490d00200241106a4170712204103321012000200236020420002004410172360200200020013602080c010b200020024101743a0000200041016a21012002450d010b20012003200210041a0b200120026a41003a000020000f0b1000000bc50101047f20004200370200200041086a41003602000240200128020420012d00002205410176200541017122061b22052002490d00200520026b2205200320052003491b220341704f0d00200128020821070240024002402003410b490d00200341106a4170712208103321052000200336020420002008410172360200200020053602080c010b200020034101743a0000200041016a21052003450d010b20052007200141016a20061b20026a200310041a0b200520036a41003a000020000f0b1000000bf80101037f0240416e20016b2002490d000240024020002d0000410171450d00200028020821080c010b200041016a21080b416f21090240200141e6ffffff074b0d00410b21092001410174220a200220016a22022002200a491b2202410b490d00200241106a41707121090b20091033210202402004450d0020022008200410041a0b02402006450d00200220046a2007200610041a0b0240200320056b220320046b2207450d00200220046a20066a200820046a20056a200710041a0b02402001410a460d00200810340b200020023602082000200320066a220436020420002009410172360200200220046a41003a00000f0b1000000bcc0101037f0240416f20016b2002490d000240024020002d0000410171450d00200028020821070c010b200041016a21070b416f21080240200141e6ffffff074b0d00410b210820014101742209200220016a220220022009491b2202410b490d00200241106a41707121080b20081033210202402004450d0020022007200410041a0b0240200320056b20046b2203450d00200220046a20066a200720046a20056a200310041a0b02402001410a460d00200710340b20002002360208200020084101723602000f0b1000000bd80201077f0240200141704f0d000240024020002d00002202410171450d0020002802002202417e71417f6a2103200028020421040c010b20024101762104410a21030b410a2105024020042001200420014b1b2201410b490d00200141106a417071417f6a21050b024020052003460d00024002402005410a470d0041012103200041016a210620002802082107410021080c010b200541016a103321060240200520034b0d002006450d020b024020002d00002202410171450d002000280208210741012103410121080c010b41012108200041016a2107410021030b024002402002410171450d00200028020421010c010b200241fe017141017621010b0240200141016a22022001490d0020062007200210041a0b02402003450d00200710340b02402008450d0020002006360208200020043602042000200541016a4101723602000f0b200020044101743a00000b0f0b1000000bc80101037f0240024020002d000022034101712204450d002000280200417e71417f6a2105200028020421030c010b20034101762103410a21050b02400240200520036b2002490d002002450d01024002402004450d00200028020821050c010b200041016a21050b200520036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200520026a41003a000020000f0b20002005200320026a20056b20032003410020022001103f0b20000bce0101047f2001102e21020240024020002d000022034101712204450d002000280200417e71417f6a2105200028020421030c010b20034101762103410a21050b02400240200520036b2002490d002002450d01024002402004450d00200028020821050c010b200041016a21050b200520036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200520026a41003a000020000f0b20002005200320026a20056b20032003410020022001103f0b20000ba70101037f0240024020002d0000220241017122030d0020024101762102410a21040c010b2000280200417e71417f6a2104200028020421020b024002400240024020022004470d002000200441012004200441004100104020002d0000410171450d010c020b20030d010b2000200241017441026a3a0000200041016a21000c010b2000200241016a360204200028020821000b200020026a220041003a0001200020013a00000b960201047f0240024020002d000022044101712205450d00200028020421040c010b200441017621040b024020042001490d00410a210602402005450d002000280200417e71417f6a21060b02400240200620046b2003490d002003450d01024002402005450d00200028020821060c010b200041016a21060b0240200420016b2207450d00200620016a220520036a2005200710031a200220036a2002200620046a20024b1b2002200520024d1b21020b200620016a2002200310031a200420036a21040240024020002d0000410171450d00200020043602040c010b200020044101743a00000b200620046a41003a000020000f0b20002006200420036a20066b20042001410020032002103f0b20000f0b1000000b0e002000200120022002102e10450bc20101047f0240024020002d000022034101712204450d00200028020421050c010b200341017621050b024020052001490d0002402002450d00024002402004450d00200028020821060c010b200041016a21060b0240200520016b22042004200220042002491b22026b2204450d00200620016a2201200120026a200410031a20002d000021030b200520026b2102024002402003410171450d00200020023602040c010b200020024101743a00000b200620026a41003a00000b20000f0b1000000bc70101047f230041106b220224002001200241056a103a2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b200441106a4170712205103321012000200436020420002005410172360200200020013602080b0240200241056a2003460d00200241056a21000340200120002d00003a0000200141016a21012003200041016a2200470d000b0b200141003a0000200241106a24000f0b1000000b05001000000b0a00410020003703e8440b4e01017f230041e0006b220124002001200141d8006a3602082001200141106a3602042001200141106a36020020012000104c1a200141106a200128020420012802006b1016200141e0006a24000ba20801027f02402000280208200028020422026b41074a0d00410041f0c4001001200028020421020b20022001410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141346a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141c0006a21030240200028020820026b41014a0d00410041f0c4001001200028020421020b20022003410210041a2000200028020441026a2202360204200141c2006a21010240200028020820026b41014a0d00410041f0c4001001200028020421020b20022001410210041a2000200028020441026a36020420000bfa0103017f027e017f230041306b2203240020012002200341106a1010420021044110210141002102420021050340200341106a20026a21060240024020014102490d002005420886200420063100008422044238888421052001417f6a2101200442088621040c010b024020014101460d00410041a9c00010010b200020053703082000200420063100008437030041102101200041106a210042002104420021050b200241016a22024120470d000b024020014110460d00024020014102490d00200320042005200141037441786a1011200341086a2903002105200329030021040b20002004370300200020053703080b200341306a24000bfa0103017f027e017f230041306b2203240020012002200341106a1014420021044110210141002102420021050340200341106a20026a21060240024020014102490d002005420886200420063100008422044238888421052001417f6a2101200442088621040c010b024020014101460d00410041a9c00010010b200020053703082000200420063100008437030041102101200041106a210042002104420021050b200241016a22024114470d000b024020014110460d00024020014102490d00200320042005200141037441786a1011200341086a2903002105200329030021040b20002004370300200020053703080b200341306a24000ba50101047f230041106b210102402000bc220241177641ff017141817f6a220341164a0d000240024020034100480d0041ffffff032003762204200271450d0220012000430000807b9238020c200441002002417f4a1b20026a418080807c2003757121020c010b20012000430000807b923802080240200241004e0d0041808080807821020c010b41808080fc032002200241ffffffff07711b21020b2002be21000b20000bd60e01067f02400240200041d3014b0d004130210141b0c500210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200228020021020c010b02402000417c4f0d002000200041d2016e220541d2016c22066b21004130210141f0c600210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200241f0c6006b41027521000340200041027441f0c6006a28020020066a210241142103024003402002200341b0c5006a28020022016e22042001490d042002200420016c460d01200341046a220341bc01470d000b41d30121010340200220016e22032001490d042002200320016c460d0120022001410a6a22036e22042003490d042002200420036c460d0120022001410c6a22046e2206200341026a2203490d042002200620046c460d012002200141106a22046e2206200341046a2203490d042002200620046c460d012002200141126a22046e2206200341026a2203490d042002200620046c460d012002200141166a22046e2206200341046a2203490d042002200620046c460d0120022001411c6a22046e2206200341066a2203490d042002200620046c460d0120022001411e6a22046e2206200341026a2203490d042002200620046c460d012002200141246a22046e2206200341066a2203490d042002200620046c460d012002200141286a22046e2206200341046a2203490d042002200620046c460d0120022001412a6a22046e2206200341026a2203490d042002200620046c460d0120022001412e6a22046e2206200341046a2203490d042002200620046c460d012002200141346a22046e2206200341066a2203490d042002200620046c460d0120022001413a6a22046e2206200341066a2203490d042002200620046c460d0120022001413c6a22046e2206200341026a2203490d042002200620046c460d012002200141c2006a22046e2206200341066a2203490d042002200620046c460d012002200141c6006a22046e2206200341046a2203490d042002200620046c460d012002200141c8006a22046e2206200341026a2203490d042002200620046c460d012002200141ce006a22046e2206200341066a2203490d042002200620046c460d012002200141d2006a22046e2206200341046a2203490d042002200620046c460d012002200141d8006a22046e2206200341066a2203490d042002200620046c460d012002200141e0006a22046e2206200341086a2203490d042002200620046c460d012002200141e4006a22046e2206200341046a2203490d042002200620046c460d012002200141e6006a22046e2206200341026a2203490d042002200620046c460d012002200141ea006a22046e2206200341046a2203490d042002200620046c460d012002200141ec006a22046e2206200341026a2203490d042002200620046c460d012002200141f0006a22046e2206200341046a2203490d042002200620046c460d012002200141f8006a22046e2206200341086a2203490d042002200620046c460d012002200141fe006a22046e2206200341066a2203490d042002200620046c460d01200220014182016a22046e2206200341046a2203490d042002200620046c460d01200220014188016a22046e2206200341066a2203490d042002200620046c460d0120022001418a016a22046e2206200341026a2203490d042002200620046c460d0120022001418e016a22046e2206200341046a2203490d042002200620046c460d01200220014194016a22046e2206200341066a2203490d042002200620046c460d01200220014196016a22046e2206200341026a2203490d042002200620046c460d0120022001419c016a22046e2206200341066a2203490d042002200620046c460d012002200141a2016a22046e2206200341066a2203490d042002200620046c460d012002200141a6016a22046e2206200341046a2203490d042002200620046c460d012002200141a8016a22046e2206200341026a2203490d042002200620046c460d012002200141ac016a22046e2206200341046a2203490d042002200620046c460d012002200141b2016a22046e2206200341066a2203490d042002200620046c460d012002200141b4016a22046e2206200341026a2203490d042002200620046c460d012002200141ba016a22046e2206200341066a2203490d042002200620046c460d012002200141be016a22046e2206200341046a2203490d042002200620046c460d012002200141c0016a22046e2206200341026a2203490d042002200620046c460d012002200141c4016a22046e2206200341046a2203490d042002200620046c460d012002200141c6016a22046e2206200341026a2203490d042002200620046c460d012002200141d0016a22046e22062003410a6a2201490d04200141026a21012002200620046c470d000b0b4100200041016a2202200241304622021b2100200520026a220541d2016c21060c000b0b1000000b20020bb70701067f230041206b220324000240024002400240200128020422040d0020004100360208200042003702000c010b02402002450d00200341186a410036020020034200370310200441704f0d0220012802002102024002402004410b490d00200441106a417071220510332101200320043602142003200541017236021020032001360218200341106a21060c010b200320044101743a0010200341106a4101722101200341106a21060b20012002200410041a200120046a41003a00002003280218200641016a220720032d0010220541017122041b22012003280214200541017620041b22046a2102024002402004450d00034020012d0000410a460d01200141016a21012004417f6a22040d000c020b0b024020012002460d00200141016a22042002460d000340024020042d00002205410a460d00200120053a0000200141016a21010b2002200441016a2204470d000b20032d001021050b200121020b024002402005410171450d002003280218220120032802146a21040c010b2006200541fe01714101766a41016a2104200721010b200341106a200220016b200420026b10471a2003200328021420032d00102201410176200141017122011b36020c20032003280218200720011b36020820032003290308370300200020034100105120032d0010410171450d01200328021810340c010b2003410036021820034200370310200341106a200441027641036c104120012802002107410021010340200141016a20044f0d030240200720016a220241016a2d000041b0c8006a2d0000220541c000470d00410041d5c00010010b024020022d000041b0c8006a2d0000220641c000470d00410041d5c00010010b200341106a200641027420054104764103717241187441187510440240200141026a20044f0d000240200241026a2d0000220841526a2206410f4b0d0020060e1001000000000000000000000000000001010b0240200841b0c8006a2d0000220641c000470d00410041d5c00010010b200341106a2006410276410f712005410474724118744118751044200141036a20044f0d000240200241036a2d0000220541526a2202410f4b0d0020020e1001000000000000000000000000000001010b200641067421020240200541b0c8006a2d0000220541c000470d00410041d5c00010010b200341106a200520026a41187441187510440b200141046a22012004490d000b20002003290310370200200041086a200341106a41086a2802003602000b200341206a24000f0b200341106a103c000b410041b0ca0010011000000bb30101037f0240024041002d00d84a4101710d00410042003702cc4a410041003602d44a41f6c000102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602d04a410020014101723602cc4a410020023602d44a0c010b410020004101743a00cc4a41cdca0021022000450d010b200241f6c000200010041a0b200220006a41003a0000410141004180c00010381a410041013602d84a0b0f0b41ccca00103c000b1900024041002d00cc4a410171450d0041002802d44a10340b0bb30101037f0240024041002d00e84a4101710d00410042003702dc4a410041003602e44a419bc500102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602e04a410020014101723602dc4a410020023602e44a0c010b410020004101743a00dc4a41ddca0021022000450d010b2002419bc500200010041a0b200220006a41003a0000410241004180c00010381a410041013602e84a0b0f0b41dcca00103c000b1900024041002d00dc4a410171450d0041002802e44a10340b0bb30101037f0240024041002d00f84a4101710d00410042003702ec4a410041003602f44a41fcca00102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602f04a410020014101723602ec4a410020023602f44a0c010b410020004101743a00ec4a41edca0021022000450d010b200241fcca00200010041a0b200220006a41003a0000410341004180c00010381a410041013602f84a0b0f0b41ecca00103c000b1900024041002d00ec4a410171450d0041002802f44a10340b0bb30101037f0240024041002d00b44b4101710d00410042003702a84b410041003602b04b41b8cb00102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602ac4b410020014101723602a84b410020023602b04b0c010b410020004101743a00a84b41a9cb0021022000450d010b200241b8cb00200010041a0b200220006a41003a0000410441004180c00010381a410041013602b44b0b0f0b41a8cb00103c000b1900024041002d00a84b410171450d0041002802b04b10340b0b8f0101037f230041e0006b22002400024041002d00f04b4101710d00200041f4cb0041e00010042101410042003702e44b410041003602ec4b410041e000103322023602e44b410020023602e84b4100200241e0006a3602ec4b2002200141e00010041a410041002802e84b41e0006a3602e84b410541004180c00010381a410041013602f04b0b200041e0006a24000b1e01017f024041002802e44b2201450d00410020013602e84b200110340b0b7601027f024041002d00e04c4101710d00410041c004103322003602d44c410020003602d84c4100200041c0046a3602dc4c410021010340200020016a41003a0000200141016a220141c004470d000b200041013a00004100200020016a3602d84c410641004180c00010381a410041013602e04c0b0b1e01017f024041002802d44c2201450d00410020013602d84c200110340b0be317012f7f23004180036b22062400024020014100480d002001411f6a220741ff3f4b0d00200541ff014a0d0020074105762108200641f8026a4200370300200641f0026a4200370300200641e8026a4200370300200641e0026a4200370300200641d8026a4200370300200641d0026a4200370300200642003703c802200642003703c002200620053a00bf0241002109200641003a00be02200620013a00bd0220062001410876220a3a00bc0220064188026a42abb38ffc91a3b3f0db0037030020064180026a42ffa4b988c591da829b7f370300200641f8016a42f2e6bbe3a3a7fda7a57f370300200642e7cca7d0d6d0ebb3bb7f3703f001200642003703e801200641003602e0014101210b4100210703402006200741016a3602e001200641a0016a20076a20093a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b0240200b41c000460d00200641c0026a200b6a2d00002109200b41016a210b0c010b0b02402003450d0003402006200741016a3602e001200641a0016a20076a20022d00003a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b200241016a21022003417f6a22030d000b0b2006200741016a3602e001200641a0016a20076a200a3a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b2006200741016a3602e001200641a0016a20076a20013a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b2006200741016a3602e001200641a0016a20076a41003a0000024020062802e001220741c000470d00200641a0016a105f200641003602e001200620062903e8014280047c3703e801410021070b02402005450d002004210b2005210903402006200741016a3602e001200641a0016a20076a200b2d00003a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b200b41016a210b2009417f6a22090d000b0b2006200741016a3602e001200641a0016a20076a20053a0000024020062802e00141c000470d00200641a0016a105f200641003602e001200620062903e8014280047c3703e8010b200641a0016a1060200620062802f00122074118763a009002200620062802f401220b4118763a009402200620062802f801220a4118763a009802200620062802fc01220c4118763a009c022006200628028002220d4118763a00a0022006200628028402220e4118763a00a40220062006280288022202411876220f3a00a8022006200628028c0222034118763a00ac02200620034110763a00ad02200620024110763a00a9022006200e41107622103a00a5022006200d41107622113a00a1022006200c41107622123a009d022006200a41107622133a0099022006200b41107622143a0095022006200741107622093a009102200620034108763a00ae02200620024108763a00aa022006200e41087622153a00a6022006200d41087622163a00a2022006200c41087622173a009e022006200a41087622183a009a022006200b41087622193a00960220062007410876221a3a009202200620033a00af02200620023a00ab022006200e3a00a7022006200c3a009f022006200a3a009b022006200b3a009702200620073a0093022006200d3a00a302200641f0006a41206a41003a0000200641f0006a41186a4200370300200641f0006a41106a420037030020064200370378200642003703702008450d00200641f0006a410172210220062d00bf02211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f4100213041002131410021324100213341002134410121030340200620312007733a007320062032201a733a0072200620332009733a00712006203420062d0090027322093a00702006202d200b733a00772006202e2019733a00762006202f2014733a00752006203020062d009402733a007420062029200a733a007b2006202a2018733a007a2006202b2013733a00792006202c20062d009802733a007820062025200c733a007f200620262017733a007e200620272012733a007d2006202820062d009c02733a007c20062021200d733a008301200620222016733a008201200620232011733a0081012006201c200f733a0088012006201d200e733a0087012006201e2015733a0086012006201f2010733a0085012006202420062d00a002733a0080012006202020062d00a402733a008401200620062d00890120062d00a902733a008901200620062d008a0120062d00aa02733a008a01200620062d008b0120062d00ab02733a008b01200620033a009001200620062d008c0120062d00ac02733a008c01200620062d008d0120062d00ad02733a008d01200620062d008e0120062d00ae02733a008e01200620062d008f0120062d00af02733a008f01200642abb38ffc91a3b3f0db00370368200642ffa4b988c591da829b7f370360200642f2e6bbe3a3a7fda7a57f370358200642e7cca7d0d6d0ebb3bb7f3703502006420037034841002107200641003602404100210b03402006200741016a360240200620076a20093a000002402006280240220741c000470d002006105f4100210720064100360240200620062903484280047c3703480b0240200b4120460d002002200b6a2d00002109200b41016a210b0c010b0b02402005450d002004210b2005210903402006200741016a360240200620076a200b2d00003a000002402006280240220741c000470d002006105f4100210720064100360240200620062903484280047c3703480b200b41016a210b2009417f6a22090d000b0b2006200741016a360240200620076a201b3a00000240200628024041c000470d002006105f20064100360240200620062903484280047c3703480b200610602006200628025022074118763a007020062006280254220b4118763a00742006200628025822094118763a00782006200628025c220a4118763a007c20062006280260220c4118763a00800120062006280264220d4118763a00840120062006280268220e4118763a0088012006200628026c220f4118763a008c012006200f4110763a008d012006200e4110763a0089012006200d4110763a0085012006200c4110763a0081012006200a4110763a007d200620094110763a00792006200b4110763a0075200620074110763a00712006200f4108763a008e012006200e4108763a008a012006200d4108763a0086012006200c4108763a0082012006200a4108763a007e200620094108763a007a2006200b4108763a0076200620074108763a00722006200f3a008f012006200e3a008b012006200d3a0087012006200a3a007f200620093a007b2006200b3a0077200620073a00732006200c3a0083012003410574220720006a41606a200641f0006a200120076b2207411f7520077141206a10041a20032008460d01200341016a210320062d008801211c20062d00a802210f20062d008701211d20062d00a702210e20062d008601211e20062d00a602211520062d008501211f20062d00a502211020062d008401212020062d008301212120062d00a302210d20062d008201212220062d00a202211620062d008101212320062d00a102211120062d008001212420062d007f212520062d009f02210c20062d007e212620062d009e02211720062d007d212720062d009d02211220062d007c212820062d007b212920062d009b02210a20062d007a212a20062d009a02211820062d0079212b20062d009902211320062d0078212c20062d0077212d20062d009702210b20062d0076212e20062d009602211920062d0075212f20062d009502211420062d0074213020062d0073213120062d009302210720062d0072213220062d009202211a20062d0071213320062d009102210920062d007021340c000b0b20064180036a24000ba80401187f23004180026b2201240041002102410021030340200120026a2000200341ff017122046a28000022034118742003410874418080fc07717220034108764180fe037120034118767272360200200441046a2103200241046a220241c000470d000b41002102200128020021040340200120026a220341c0006a2004200341246a2802006a200341386a2802002204410d772004410a76732004410f77736a200341046a2802002203410e772003410376732003411977736a36020020032104200241046a220241c001470d000b41002104200041dc006a28020022052106200041ec006a28020022072108200041e8006a2802002209210a200041e4006a280200220b210c200041e0006a280200220d210e200041d8006a280200220f2110200041d4006a28020022112112200028025022132114034020102215201222167220142202712015201671722002411e772002411377732002410a77736a200441e8d0006a280200200120046a2802006a200a2217200e2203417f7371200c2218200371726a2003411a772003411577732003410777736a20086a220e6a2114200e20066a210e20152106201721082018210a2003210c2016211020022112200441046a2204418002470d000b2000200720176a36026c2000200920186a3602682000200b20036a3602642000200d200e6a3602602000200520156a36025c2000200f20166a3602582000201120026a3602542000201320146a36025020014180026a24000be80102027f027e2000200028024022016a22024180013a000002402001ad220342017c423842c00020014138491b22045a0d00200241016a21012003427f8520047c21030340200141003a0000200141016a21012003427f7c22034200520d000b0b0240200028024022014138490d002000105f20004100413810021a200028024021010b200020002903482001410374ad7c22033c003f20002003370348200020034208883c003e200020034210883c003d200020034218883c003c200020034220883c003b200020034228883c003a200020034230883c0039200020034238883c00382000105f0bb90801027f230041a0066b22032400200341a0046a418002200028020020002802042001280208200141016a20012d0000220041017122041b2001280204200041017620041b105e413f2101200341c0016a210003402000200341a0046a20016a2d00003a0000200041016a21002001417f6a2201417f470d000b200341e0036a41386a200341c0016a41386a290300370300200341e0036a41306a200341c0016a41306a290300370300200341e0036a41286a200341c0016a41286a290300370300200341e0036a41206a200341c0016a41206a290300370300200341e0036a41186a200341c0016a41186a290300370300200341e0036a41106a200341c0016a41106a290300370300200341e0036a41086a200341c0016a41086a290300370300200320032903c0013703e003200341e0036a41c00020034180036a413010061a41ff002101200341c0016a210003402000200341a0046a20016a2d00003a0000200041016a21002001417f6a2201413f470d000b200341e0036a41386a200341c0016a41386a290300370300200341e0036a41306a200341c0016a41306a290300370300200341e0036a41286a200341c0016a41286a290300370300200341e0036a41206a200341c0016a41206a290300370300200341e0036a41186a200341c0016a41186a290300370300200341e0036a41106a200341c0016a41106a290300370300200341e0036a41086a200341c0016a41086a290300370300200320032903c0013703e003200341e0036a41c00020034180036a41306a2204413010061a20034180036a41e000200341c0016a41c00110071a200341df056a2101410021000340200320006a20012d00003a00002001417f6a2101200041016a220041c000470d000b200341e0036a41386a200341386a290300370300200341e0036a41306a200341306a290300370300200341e0036a41286a200341286a290300370300200341e0036a41206a200341206a290300370300200341e0036a41186a200341186a290300370300200341e0036a41106a200341106a290300370300200341e0036a41086a200341086a290300370300200320032903003703e003200341e0036a41c00020034180036a413010061a2003419f066a2101410021000340200320006a20012d00003a00002001417f6a2101200041016a220041c000470d000b200341e0036a41386a200341386a290300370300200341e0036a41306a200341306a290300370300200341e0036a41286a200341286a290300370300200341e0036a41206a200341206a290300370300200341e0036a41186a200341186a290300370300200341e0036a41106a200341106a290300370300200341e0036a41086a200341086a290300370300200320032903003703e003200341e0036a41c0002004413010061a20034180036a41e000200341c00110071a200341c0016a41c001200341c001200241c00110081a200341a0066a24000b970503017f017e047f230041f0006b22032400200341206a4100360200200342003703182003427f37031020032000290300220437030820032004370300024002402004200442808080809aecb4ee312001100a22004100480d00024020032000106322002802302003460d0041004180d50010010b2003200236023020032000200341306a10640c010b02402004100b510d00410041cad50010010b41c000103322004200370310200041286a22054200370300200041206a22064200370300200041186a220742003703002000200336023020002001370300200341306a20022802002208200228020420086b104d2005200341306a41186a2903003703002006200341306a41106a29030037030020072003290338370300200020032903303703102003200341306a41286a3602682003200341306a360260200341306a2000410810041a2003200341306a410872360264200341e0006a200041106a10651a2000200329030842808080809aecb4ee31200120002903002204200341306a4128101c2205360234024020042003290310540d002003427e200442017c2004427d561b3703100b200320003602602003200029030022043703302003200536022c02400240200328021c220220032802204f0d00200220053602102002200437030820034100360260200220003602002003200241186a36021c0c010b200341186a200341e0006a200341306a2003412c6a10660b20032802602100200341003602602000450d00200010340b024020032802182205450d0002400240200328021c22002005470d00200521000c010b0340200041686a220028020021022000410036020002402002450d00200210340b20052000470d000b200328021821000b2003200536021c200010340b200341f0006a24000b840603097f027e017f230041e0006b220221032002240002400240200028021822042000411c6a2802002205460d0002400340200541786a2802002001460d012004200541686a2205470d000c020b0b20042005460d00200541686a28020021060c010b024002400240024020014100410010292205417f4a0d00410041b3d50010010c010b2005418104490d010b2005102f2107410121080c010b20022005410f6a4170716b22072400410021080b20012007200510291a41c0001033220642003703102006420037030020062000360230200641186a4200370300200641206a4200370300200641286a42003703000240200541074b0d0041004199d70010010b20062007410810041a200741086a21040240200541786a411f4b0d0041004199d70010010b200041186a2109200641106a210a200341c0006a2004412010041a4200210b41102105200341206a2102410021044200210c0340200341c0006a20046a210d0240024020054102490d00200c420886200b200d31000084220b42388884210c2005417f6a2105200b420886210b0c010b024020054101460d00410041f6d70010010b2002200c3703082002200b200d3100008437030041102105200241106a21024200210b4200210c0b200441016a22044120470d000b024020054110460d00024020054102490d00200341086a200b200c200541037441786a1011200341106a290300210c2003290308210b0b2002200b3703002002200c3703080b200a2003290320370300200a41086a2003290328370300200a41186a200341206a41186a290300370300200a41106a200341206a41106a290300370300200620013602342003200636022020032006290300220b3703402003200136021c02400240200028021c2205200041206a2802004f0d00200520013602102005200b37030820034100360220200520063602002000200541186a36021c0c010b2009200341206a200341c0006a2003411c6a10660b02402008450d00200710310b20032802202105200341003602202005450d00200510340b200341e0006a240020060b980203027f017e017f230041206b2203210420032400024020012802302000460d00410041fdd50010010b0240100b2000290300510d00410041abd60010010b200129030021052004200228020022022802002206200228020420066b104d200141286a200441186a290300370300200141206a200441106a290300370300200141186a200429030837030020012004290300370310200141106a2102024020052001290300510d00410041ded60010010b200341506a220324002004200341286a3602082004200336020020032001410810041a2004200341086a3602042004200210651a2001280234420020034128102a024020052000290310540d002000427e200542017c2005427d561b3703100b200441206a24000bd20303017f027e017f230041206b220224002002200141186a29030022033c00172002200141086a29030022044220883c0003200220044228883c0002200220044230883c0001200220044238883c0000200220034220883c001320022003a722054108763a0016200220054110763a0015200220054118763a001420022004a722053a0007200220054108763a0006200220054110763a0005200220054118763a0004200220012903002204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370308200220012903102204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370318200220034230883c0011200220034228883c0012200220034238883c001002402000280208200028020422016b411f4a0d00410041bbd4001001200028020421010b20012002412010041a2000200028020441206a360204200241206a240020000b9a0301057f0240024002402000280204200028020022046b41186d220541016a220641abd5aad5004f0d0041aad5aad500210702400240200028020820046b41186d220441d4aad52a4b0d0020062004410174220720072006491b22070d0041002107410021040c010b200741186c103321040b20012802002106200141003602002004200541186c22086a2201200328020036021020012002290300370308200120063602002004200741186c6a2105200141186a21062000280204220220002802002207460d01200420086a41686a21010340200241686a220428020021032004410036020020012003360200200141086a200241706a2202290300370300200141106a200241086a280200360200200141686a21012004210220072004470d000b200141186a210120002802042107200028020021040c020b20001049000b200721040b200020053602082000200636020420002001360200024020072004460d000340200741686a220728020021012007410036020002402001450d00200110340b20042007470d000b0b02402004450d00200410340b0bb91806047f017e0c7f017e017f027d230041800c6b220224002000290300101d02402001410c6a2802002200200128020822036b41306d41818004490d00410041e4cc00100120012802082103200128020c21000b024020002003470d0041004195cd00100120012802082103200128020c21000b200241f0026a4100360200200242003703e802200220012903003703e002200241e0026a41086a2204200020036b41306d1068200241d0026a41086a4100360200200242003703d00202400240024041b4cd00102e220041704f0d000240024002402000410b490d00200041106a417071220510332103200220003602d402200220054101723602d002200220033602d8020c010b200220004101743a00d002200241d0026a41017221032000450d010b200341b4cd00200010041a0b200320006a41003a0000200241c8026a4100360200200242003703c002024041bccd00102e220041704f0d000240024002402000410b490d00200041106a417071220510332103200220003602c402200220054101723602c002200220033602c8020c010b200220004101743a00c002200241c0026a41017221032000450d010b200341bccd00200010041a0b200320006a41003a0000200241808080fc033602b80242002106200242003703b002200242003703a80220012802082203200128020c2207460d03200241c0076a41c0016a2108200241c00a6a41e0006a2109200241a8026a41086a210a200241c0026a410172210b200241f8026a410172210c200241d0026a410172210d200241f8026a410172210e420021060340024020032d0000410171450d002003280204418102490d00410041c4cd0010010b200241f8026a200341186a220f410020022802d40220022d00d002220041017620004101711b200f103e1a0240024020022802fc0220022d00f80222004101762210200041017122051b221120022802d40220022d00d0022200410176200041017122001b470d0020022802d802200d20001b2100024020050d00200e21052011450d02034020052d000020002d0000470d02200041016a2100200541016a21052010417f6a22100d000c030b0b2011450d01200228028003200e20051b200020111039450d010b410041f8cd0010010b024020022d00f802410171450d0020022802800310340b200241f8026a200341246a2212410020022802c40220022d00c002220041017620004101711b2012103e1a0240024020022802fc0220022d00f80222004101762210200041017122051b221120022802c40220022d00c0022200410176200041017122001b470d0020022802c802200b20001b2100024020050d00200c21052011450d02034020052d000020002d0000470d02200041016a2100200541016a21052010417f6a22100d000c030b0b2011450d01200228028003200c20051b200020111039450d010b4100419cce0010010b024020022d00f802410171450d0020022802800310340b0240200329031022132006427f85580d00410041d4ce001001200329031021130b02400240200f2d00002200410171450d002003411c6a2802002100200341206a28020021050c010b20004101762100200f41016a21050b200241c8016a2005200010692002200241c8016a3602c007200241f8026a200241c0076a410410041a20022802f8024195d3c7de056c22004118762000734195d3c7de056c41d4cc9efa06732200410d762000734195d3c7de056c2200410f76200073211002400240024020022802ac022205450d000240024020056941014b220f0d0020102005417f6a7121110c010b2010211120102005490d00201020057021110b20022802a80220114102746a2802002200450d000240200f0d002005417f6a2114034020002802002200450d0202402000280204220f2010460d00200f2014712011470d030b200041086a200241c8016a41e00010390d000c030b0b034020002802002200450d0102402000280204220f2010460d000240200f2005490d00200f200570210f0b200f2011470d020b200041086a200241c8016a41e0001039450d020c000b0b41e8001033220041086a200241c8016a41e00010041a200041003602002000201036020420022a02b802211520022802b40241016ab32116024002402005450d0020152005b39420165d4101730d010b2005410174200541034920052005417f6a714100477272210f024002402016201595104f2215430000804f5d201543000000006071450d002015a921110c010b410021110b4102210502402011200f200f2011491b220f4101460d000240200f200f417f6a710d00200f21050c010b200f105021050b02400240200520022802ac02220f4d0d00200241a8026a2005106a0c010b2005200f4f0d00200f41034921140240024020022802b402b320022a02b80295104f2215430000804f5d201543000000006071450d002015a921110c010b410021110b0240024020140d00200f6941014b0d0020114102490d01410141202011417f6a676b7421110c010b2011105021110b2011200520052011491b2205200f4f0d00200241a8026a2005106a0b024020022802ac0222052005417f6a220f710d00200f20107121110c010b0240201020054f0d00201021110c010b201020057021110b02400240024020022802a80220114102746a220f28020022100d00200020022802b002360200200220003602b002200f200a36020020002802002210450d02201028020421100240024020052005417f6a220f710d002010200f7121100c010b20102005490d00201020057021100b20022802a80220104102746a21100c010b200020102802003602000b201020003602000b200220022802b40241016a3602b4020c010b410041fcce0010010b0240024020122d00002200410171450d00200341286a28020021002003412c6a28020021050c010b20004101762100201241016a21050b200241086a20052000106b200241c00a6a410041c00110021a200241c0076a410041800310021a200241c00a6a41002802e44b220041002802e84b20006b10041a200241c0076a200241086a41c00110041a2009200241c8016a41e00010041a200241e0003602bc072002200241c8016a3602b807200220022903b807370300200241a8cb0020081061200241c00a6a41c001200241c0076a4180034102200241f8026a41c00410091a0240200241f8026a41002802d44c220041002802d84c20006b1039450d0041004191cf0010010b41e00010332200200241c8016a41e00010041a200241f8026a2003103d1a2002200041e0006a2205360298032002200536029403200220003602900320022003290310370388030240024020022802ec02220020022802f0024f0d00200020022903f8023702002000411c6a22054200370200200041086a200241f8026a41086a22102802003602002000410036021820052002280294033602002000200228029003360218200041206a200228029803360200201041003602002000200229038803370310200242003703f802200241003602940320024100360290032002410036029803200220022802ec0241286a3602ec020c010b2004200241f8026a106c2002280290032200450d002002200036029403200010340b024020022d00f802410171450d0020022802800310340b201320067c2106200341306a22032007460d030c000b0b200241c0026a103c000b200241d0026a103c000b200642018821060b024020012903002006560d00410041accf0010010b024020022802e802220020022802ec022203460d00034002402000411c6a280200200041186a2802006b41e000460d004100419fd40010010b2003200041286a2200470d000b0b200241f8026a200241e0026a106d20022802f802220020022802fc0220006b101e024020022802f8022200450d00200220003602fc02200010340b024020022802b0022200450d00034020002802002103200010342003210020030d000b0b20022802a8022100200241003602a80202402000450d00200010340b024020022d00c002410171450d0020022802c80210340b024020022d00d002410171450d0020022802d80210340b024020022802e8022205450d000240024020022802ec0222002005470d00200521000c010b03400240200041706a2802002203450d00200041746a2003360200200310340b200041586a21030240200041586a2d0000410171450d00200041606a28020010340b2003210020052003470d000b20022802e80221000b200220053602ec02200010340b200241800c6a24000bc403010b7f02402000280208200028020022026b41286d20014f0d00024002400240200141e7cc99334f0d0020002802042103200141286c22011033220420016a21052004200320026b41286d220641286c6a21072000280204220820002802002201460d01200120086b2109410021030340200720036a220241586a220a200820036a220141586a220b290200370200200a41086a200b41086a280200360200200241746a220a4200370200200241706a220c4100360200200a200141746a280200360200200c200141706a220a280200360200200241686a200141686a290300370300200241786a200141786a2202280200360200200141606a4100360200200b4200370200200a4200370200200241003602002009200341586a2203470d000b2004200641286c6a20036a210220002802042101200028020021030c020b1000000b20072102200121030b200020053602082000200736020420002002360200024020012003460d0003400240200141706a2802002202450d00200141746a2002360200200210340b200141586a21020240200141586a2d0000410171450d00200141606a28020010340b2002210120032002470d000b0b2003450d00200310340b0bd10902047f027e230041c0016b22032400024041002802d04a220441002d00cc4a22054101762206200541017122051b2002490d00410041e8d200100141002d00cc4a220541017621062005410171210541002802d04a21040b0240200141002802d44a41cdca0020051b2004200620051b1039450d0041004188d30010010b2003200241002802d04a41002d00cc4a220541017620054101711b22056b3602142003200120056a36021020032003290310370308200341b0016a200341086a41001051200341f0006a20032802b40120032d00b001220541017620054101711b2201104820034180016a41086a200341f0006a410041c1d3001046220541086a22022802003602002002410036020020032005290200370380012005420037020020034190016a41086a20034180016a41cfd3001043220541086a220228020036020020024100360200200320052902003703900120054200370200200341e0006a41e0001048200341a0016a41086a20034190016a2003280268200341e0006a41017220032d0060220541017122021b2003280264200541017620021b1042220541086a220228020036020020024100360200200320052902003703a00120054200370200200341386a41086a200341a0016a41eed3001043220541086a2202280200360200200241003602002003200529020037033820054200370200200341d0006a41041048200341106a41086a200341386a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1042220541086a22022802003602002002410036020020032005290200370310200542003702000240200141e400460d0041002003280218200341106a41017220032d0010220541017122011b2003280214200541017620011b10280b024020032d0010410171450d00200328021810340b024020032d0050410171450d00200328025810340b024020032d0038410171450d00200328024010340b024020032d00a001410171450d0020032802a80110340b024020032d0060410171450d00200328026810340b024020032d009001410171450d0020032802980110340b024020032d008001410171450d0020032802880110340b024020032d0070410171450d00200328027810340b0240024020032d00b0012201410171450d0020032802b801220520032802b4016a21010c010b200341b0016a410172220520014101766a21010b02402001417c6a220120056b2202450d0020002005200210031a0b200341106a200041e000104e2003200329031822074220883c003b200320074228883c003a200320074230883c0039200320074238883c00382003200341106a41186a29030022084220883c004b200320084228883c004a200320084230883c0049200320084238883c004820032007a722053a003f200320054108763a003e200320054110763a003d200320054118763a003c200320032903102207423886200742288642808080808080c0ff0083842007421886428080808080e03f8320074208864280808080f01f838484200742088842808080f80f832007421888428080fc07838420074228884280fe0383200742388884848437034002402001200341386a41041039450d00410041fbd30010010b024020032d00b001410171450d0020032802b80110340b200341c0016a24000baa0501077f02400240024002402001450d0020014180808080044f0d01200141027410332102200028020021032000200236020002402003450d00200310340b2000200136020441002103200121020340200028020020036a4100360200200341046a21032002417f6a22020d000b20002802082202450d03200041086a21032002280204210402400240200169220541014b0d0020042001417f6a7121040c010b20042001490d00200420017021040b200028020020044102746a200336020020022802002203450d03200541014b0d022001417f6a2106034002400240200328020420067122052004470d00200321020c010b0240024002402000280200200541027422076a2201280200450d002003210520032802002201450d0220032105200341086a2208200141086a41e00010390d02200321050c010b2001200236020020032102200521040c020b0340200528020022052802002201450d012008200141086a41e0001039450d000b0b200220052802003602002005200028020020076a280200280200360200200028020020076a28020020033602000b200228020022030d000c040b0b200028020021032000410036020002402003450d00200310340b200041003602040c020b1000000b03400240200328020422052001490d00200520017021050b0240024020052004470d00200321020c010b02402000280200200541027422066a22082802000d002008200236020020032102200521040c010b20032105024020032802002208450d0020032105200341086a2207200841086a41e00010390d00200321050340200528020022052802002208450d012007200841086a41e0001039450d000b0b200220052802003602002005200028020020066a280200280200360200200028020020066a28020020033602000b200228020022030d000b0b0bd10902047f027e230041c0016b22032400024041002802e04a220441002d00dc4a22054101762206200541017122051b2002490d00410041e8d200100141002d00dc4a220541017621062005410171210541002802e04a21040b0240200141002802e44a41ddca0020051b2004200620051b1039450d0041004188d30010010b2003200241002802e04a41002d00dc4a220541017620054101711b22056b3602142003200120056a36021020032003290310370308200341b0016a200341086a41001051200341f0006a20032802b40120032d00b001220541017620054101711b2201104820034180016a41086a200341f0006a410041c1d3001046220541086a22022802003602002002410036020020032005290200370380012005420037020020034190016a41086a20034180016a41cfd3001043220541086a220228020036020020024100360200200320052902003703900120054200370200200341e0006a41c0011048200341a0016a41086a20034190016a2003280268200341e0006a41017220032d0060220541017122021b2003280264200541017620021b1042220541086a220228020036020020024100360200200320052902003703a00120054200370200200341386a41086a200341a0016a41eed3001043220541086a2202280200360200200241003602002003200529020037033820054200370200200341d0006a41041048200341106a41086a200341386a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1042220541086a22022802003602002002410036020020032005290200370310200542003702000240200141c401460d0041002003280218200341106a41017220032d0010220541017122011b2003280214200541017620011b10280b024020032d0010410171450d00200328021810340b024020032d0050410171450d00200328025810340b024020032d0038410171450d00200328024010340b024020032d00a001410171450d0020032802a80110340b024020032d0060410171450d00200328026810340b024020032d009001410171450d0020032802980110340b024020032d008001410171450d0020032802880110340b024020032d0070410171450d00200328027810340b0240024020032d00b0012201410171450d0020032802b801220520032802b4016a21010c010b200341b0016a410172220520014101766a21010b02402001417c6a220120056b2202450d0020002005200210031a0b200341106a200041c001104e2003200329031822074220883c003b200320074228883c003a200320074230883c0039200320074238883c00382003200341106a41186a29030022084220883c004b200320084228883c004a200320084230883c0049200320084238883c004820032007a722053a003f200320054108763a003e200320054110763a003d200320054118763a003c200320032903102207423886200742288642808080808080c0ff0083842007421886428080808080e03f8320074208864280808080f01f838484200742088842808080f80f832007421888428080fc07838420074228884280fe0383200742388884848437034002402001200341386a41041039450d00410041fbd30010010b024020032d00b001410171450d0020032802b80110340b200341c0016a24000be60403047f027e067f0240024002402000280204200028020022026b41286d220341016a220441e7cc99334f0d0041e6cc9933210502400240200028020820026b41286d220241b2e6cc194b0d0020042002410174220520052004491b22050d0041002105410021020c010b200541286c103321020b2001411c6a2204290200210620044200370200200129020021072001420037020020012802182104200141003602182002200341286c6a22082007370200200141086a22032802002109200341003602002008200129031037031020082004360218200841086a20093602002008411c6a20063702002002200541286c6a210a200841286a210b2000280204220c20002802002201460d012001200c6b210d410021020340200820026a220541586a2204200c20026a220141586a2203290200370200200441086a200341086a280200360200200541746a22044200370200200541706a220941003602002004200141746a2802003602002009200141706a2204280200360200200541686a200141686a290300370300200541786a200141786a2205280200360200200141606a4100360200200342003702002004420037020020054100360200200d200241586a2202470d000b200820026a210820002802042101200028020021020c020b20001049000b200121020b2000200a3602082000200b36020420002008360200024020012002460d0003400240200141706a2802002205450d00200141746a2005360200200510340b200141586a21050240200141586a2d0000410171450d00200141606a28020010340b2005210120022005470d000b0b02402002450d00200210340b0be40203057f017e047f230041106b22022400200041003602082000420037020041082103200141086a21042001410c6a2802002205200128020822066b41286dad21070340200341016a2103200742078822074200520d000b0240024020062005460d00034020062802042208ad420020062d00002209410171220a1b2107200341086a210b0340200b41016a210b200742078822074200520d000b2006280218220320082009410176200a1b6b2006411c6a28020022096b2108200920036bad210703402008417f6a2108200742078822074200520d000b200b20086b2103200641286a22062005470d000b4100210341002106200b2008460d01200b20086b21030b20002003107a20002802042103200028020021060b2002200636020420022006360200200220033602080240200320066b41074a0d00410041bbd40010010b20062001410810041a2002200641086a36020420022004108a011a200241106a24000bd30203047f017e017f230041106b220224004100210320004100360208200042003702002002410036020020012802042204200128020022056b410575ad21060340200341016a2103200642078822064200520d000b2002200336020002400240024020052004460d0003402002200341086a3602002003410c6a2103200541186a2802002207ad21060340200341016a2103200642078822064200520d000b20022003417c6a3602002007417f460d022002200336020020022005410c6a108d011a20022802002103200541206a22052004470d000b20002802002105200028020421070c020b41002105410021070c010b108e01000b024002402003200720056b22074d0d002000200320076b107a200028020021050c010b200320074f0d002000200520036a3602040b20022005360204200220053602002002200028020436020820022001108f011a200241106a24000baf0302017f027e230041206b220224002000290300101d2002200141186a29030022033c00172002200141086a29030022044220883c0003200220044228883c0002200220044230883c0001200220044238883c0000200220034220883c001320022003a722004108763a0016200220004110763a0015200220004118763a001420022004a722003a0007200220004108763a0006200220004110763a0005200220004118763a0004200220012903002204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370308200220012903102204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370318200220034230883c0011200220034228883c0012200220034238883c00102002102241a8d00010232001107041c3d0001023200241206a24000b9c0303017f027e017f230041206b220124002001200041186a29030022023c00172001200041086a29030022034220883c0003200120034228883c0002200120034230883c0001200120034238883c0000200120024220883c001320012002a722044108763a0016200120044110763a0015200120044118763a001420012003a722043a0007200120044108763a0006200120044110763a0005200120044118763a0004200120002903002203423886200342288642808080808080c0ff0083842003421886428080808080e03f8320034208864280808080f01f838484200342088842808080f80f832003421888428080fc07838420034228884280fe03832003423888848484370308200120002903102203423886200342288642808080808080c0ff0083842003421886428080808080e03f8320034208864280808080f01f838484200342088842808080f80f832003421888428080fc07838420034228884280fe03832003423888848484370318200120024230883c0011200120024228883c0012200120024238883c001020014120102b200141206a24000ba70303017f027e017f230041206b220224002002200141186a29030022033c00172002200141086a29030022044220883c0003200220044228883c0002200220044230883c0001200220044238883c0000200220034220883c001320022003a722054108763a0016200220054110763a0015200220054118763a001420022004a722053a0007200220054108763a0006200220054110763a0005200220054118763a0004200220012903002204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370308200220012903102204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370318200220034230883c0011200220034228883c0012200220034238883c00100240200210240d00410041c5d00010010b200241206a24000bb90101047f230041106b2202210320022400024002400240102522040d002003420037030841002102200341086a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370308200341086a2105200441074b0d010b41004199d70010010b20052002410810041a20034200370300200241086a2102024020044178714108470d0041004199d70010010b20032002410810041a200341106a24000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000bc90201047f230041306b220221032002240002400240102522040d00410021020c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b20032002360224200320023602202003200220046a2205360228200342003703180240200441074b0d0041004199d700100120032802282105200328022421020b200341186a2002410810041a2003200241086a2202360224024020052002470d0041004199d700100120032802282105200328022421020b200341176a2002410110041a2003200241016a2202360224024020052002470d0041004199d7001001200328022421020b200341166a2002410110041a2003200241016a3602242003410036021020034200370308200341206a200341086a10791a024020032802082202450d002003200236020c200210340b200341306a24000bff0103017f017e047f2000280204210242002103410021040340024020022000280208490d00410041c3d7001001200028020421020b20022d000021052000200241016a22063602042003200541ff0071200441ff0171220274ad842103200241076a2104200621022005418001710d000b0240024020012802042205200128020022026b22072003a722044f0d002001200420076b107a2000280204210620012802042105200128020021020c010b200720044d0d002001200220046a22053602040b0240200028020820066b200520026b22054f0d0041004199d7001001200028020421060b20022006200510041a2000200028020420056a36020420000b980201057f02400240024020002802082202200028020422036b2001490d000340200341003a00002000200028020441016a22033602042001417f6a22010d000c020b0b2003200028020022046b220520016a2206417f4c0d0141ffffffff07210302400240200220046b220241feffffff034b0d0020062002410174220320032006491b22030d0041002103410021020c010b2003103321020b200220036a2106200220056a220421030340200341003a0000200341016a21032001417f6a22010d000b20042000280204200028020022016b22026b2104024020024101480d0020042001200210041a200028020021010b2000200636020820002003360204200020043602002001450d00200110340b0f0b20001049000bb20202037f017e23004180016b220221032002240002400240102522040d00410021020c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b20032002360254200320023602502003200220046a360258200342003703480240200441074b0d0041004199d7001001200328025421020b200341c8006a2002410810041a2003200241086a3602542003410036024020034200370338200341d0006a200341386a10791a200341086a41086a200341d0006a41086a2802002202360200200341306a2002360200200320032903502205370308200320013703202003200037031820032005370328200341186a2003290348200341386a1062024020032802382202450d002003200236023c200210340b20034180016a24000b4c01037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b410041fbcf001001200324000bcf0102047f017e230041106b2202210320022400024002400240102522040d002003420037030841002102200341086a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370308200341086a2105200441074b0d010b41004199d70010010b20052002410810041a200241086a2102024020044108470d0041004199d70010010b200341076a2002410110041a2003290308210620032d000721042000101d20062004410047101f200341106a24000baa0202047f047e230041206b2202210320022400024002400240102522040d002003420037031841002102200341186a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370318200341186a2105200441074b0d010b41004199d70010010b20052002410810041a200241086a21050240200441787122044108470d0041004199d70010010b200341106a2005410810041a200241106a2105024020044110470d0041004199d70010010b200341086a2005410810041a200241186a2102024020044118470d0041004199d70010010b20032002410810041a200329030021062003290308210720032903102108200329031821092000101d20092008200720061020200341206a24000ba203010b7f230041306b220221032002240041002104024010252205450d00024002402005418004490d002005102f21040c010b20022005410f6a4170716b220424000b2004200510261a0b20032004360214200320043602102003200420056a3602182003410036020820034200370300200341106a20031080011a2000101d200341206a2003106e420120032802202204200328022420046b10211a024020032802202204450d0020032004360224200410340b024020032802002206450d0002400240200328020422072006470d00200621040c010b03402007220441606a21070240200441786a2208280200417f460d002004416c6a2209280200220a450d00200a21050240200441706a220b2802002204200a460d000340200441486a21050240200441786a2202280200220c417f460d00200341206a200441486a200c41027441c8d7006a2802001101000b2002417f36020020052104200a2005470d000b200928020021050b200b200a360200200510340b2008417f36020020072006470d000b200328020021040b20032006360204200410340b200341306a24000bd20303027f017e097f230041106b220224002000280204210342002104410021050340024020032000280208490d00410041c3d7001001200028020421030b20032d000021062000200341016a22033602042004200641ff0071200541ff0171220574ad842104200541076a2105200321032006418001710d000b0240024020012802042207200128020022056b41057522062004a722034f0d002001200320066b108101200128020421070c010b200620034d0d000240200520034105746a22082007460d0003402007220341606a21070240200341786a2209280200417f460d002003416c6a220a280200220b450d00200b21060240200341706a220c2802002203200b460d000340200341486a21060240200341786a2205280200220d417f460d00200241086a200341486a200d41027441c8d7006a2802001101000b2005417f36020020062103200b2006470d000b200a28020021060b200c200b360200200610340b2009417f36020020072008470d000b0b20012008360204200821070b0240200128020022032007460d0003402002410236020420022000360200200220033602082002200341086a36020c200241086a2002108201200341206a22032007470d000b0b200241106a240020000b9f06030a7f017e037f230041106b220224000240024020002802082203200028020422046b4105752001490d000340200441186a2203420037030020044200370300200441106a4200370300200441086a4200370300200341003602002000200028020441206a22043602042001417f6a22010d000c020b0b02400240024002402004200028020022056b410575220620016a220741808080c0004f0d0041ffffff3f210402400240200320056b220341057541feffff1f4b0d00024020072003410475220420042007491b22040d0041002104410021030c020b200441808080c0004f0d030b2004410574103321030b200320044105746a2108200320064105746a22092104034020044200370300200441186a4200370300200441106a4200370300200441086a4200370300200441206a21042001417f6a22010d000b2000280204220a20002802002206460d022006200a6b210b410021050340200920056a220141786a2206417f360200200a20056a220341606a290300210c200141686a220741003a0000200141606a200c3703000240200341786a280200220d417f460d00200141706a220e42003702002001416c6a220f4100360200200e200341706a280200360200200f2003416c6a220e280200360200200141746a200341746a22012802003602002007200341686a2802003602002006200d36020020014100360200200e42003702000b200b200541606a2205470d000b200920056a2109200028020421062000280200210d0c030b20001049000b1000000b2006210d0b20002008360208200020043602042000200936020002402006200d460d0003402006220441606a21060240200441786a2207280200417f460d002004416c6a220e2802002200450d00200021010240200441706a220f28020022042000460d000340200441486a21010240200441786a22032802002205417f460d00200241086a200441486a200541027441c8d7006a2802001101000b2003417f3602002001210420002001470d000b200e28020021010b200f2000360200200110340b2007417f3602002006200d470d000b0b200d450d00200d10340b200241106a24000bcb0102037f017e20002802002102024020012802002203280208200328020422046b41074b0d0041004199d7001001200328020421040b20022004410810041a2003200328020441086a3602042000280204210220012802002201280204210342002105410021040340024020032001280208490d00410041c3d7001001200128020421030b20032d000021002001200341016a22033602042005200041ff0071200441ff0171220474ad842105200441076a2104200321032000418001710d000b200120022005a7109b010bb50302047f017e23004180016b220221032002240041002104024010252205450d00024002402005418004490d002005102f21040c010b20022005410f6a4170716b220424000b2004200510261a0b20032004360254200320043602502003200420056a360258200341c8006a410036020020034200370340200342003703380240200541074b0d0041004199d7001001200328025421040b200341386a2004410810041a2003200441086a360254200341d0006a200341386a41086a1084011a200341086a41086a200341d0006a41086a2802002204360200200341306a2004360200200320032903502206370308200320013703202003200037031820032006370328200341186a200341386a1067024020032802402202450d0002400240200328024422042002470d00200221040c010b03400240200441746a2d0000410171450d002004417c6a28020010340b0240200441686a2d0000410171450d00200441706a28020010340b200441506a21050240200441506a2d0000410171450d00200441586a28020010340b2005210420022005470d000b200328024021040b20032002360244200410340b20034180016a24000ba70303017f017e037f2000280204210242002103410021040340024020022000280208490d00410041c3d7001001200028020421020b20022d000021052000200241016a22023602042003200541ff0071200441ff0171220474ad842103200441076a2104200221022005418001710d000b0240024020012802042204200128020022066b41306d22052003a722024f0d002001200220056b10a401200128020421040c010b200520024d0d0002402006200241306c6a22052004460d0003400240200441746a2d0000410171450d002004417c6a28020010340b0240200441686a2d0000410171450d00200441706a28020010340b200441506a21020240200441506a2d0000410171450d00200441586a28020010340b2002210420052002470d000b0b20012005360204200521040b0240200128020022022004460d00034002402000200210a3012205280208200528020422016b41074b0d0041004199d7001001200528020421010b200241106a2001410810041a2005200528020441086a3602042005200241186a10a301200241246a10a3011a200241306a22022004470d000b0b20000b8a0101037f230041e0006b220221032002240002400240102522040d00410021020c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b20032002360254200320023602502003200220046a360258200341d0006a200341086a1086011a2000101d200341086a104b200341e0006a24000ba20801027f02402000280208200028020422026b41074b0d0041004199d7001001200028020421020b20012002410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141346a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141c0006a21030240200028020820026b41014b0d0041004199d7001001200028020421020b20032002410210041a2000200028020441026a2202360204200141c2006a21010240200028020820026b41014b0d0041004199d7001001200028020421020b20012002410210041a2000200028020441026a36020420000b940101047f230041106b2202210320022400024002400240102522040d002003420037030841002102200341086a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370308200341086a2105200441074b0d010b41004199d70010010b20052002410810041a2003290308101d200341106a24000b8c0405047f017e037f017e017f230041f0006b220221032002240002400240102522040d00410021050c010b024002402004418004490d002004102f21050c010b20022004410f6a4170716b220524000b2005200410261a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004199d70010010b200520046a2107200341d0006a2005412010041a200541206a2108200341306a2109410021044200210a0340200341d0006a20046a210b0240024020024102490d00200a4208862006200b31000084220642388884210a2002417f6a2102200642088621060c010b024020024101460d00410041f6d70010010b2009200a37030820092006200b3100008437030041102102200941106a2109420021064200210a0b200441016a22044120470d000b024020024110460d00024020024102490d0020032006200a200241037441786a1011200341086a290300210a200329030021060b200920063703002009200a3703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a2903003703002003200329033837031820032003290330370310200341d0006a41186a2007360200200341e4006a2008360200200320053602602003200137035820032000370350200341d0006a200341106a106f200341f0006a24000bc80303047f027e017f230041f0006b220221032002240002400240102522040d00410021050c010b024002402004418004490d002004102f21050c010b20022004410f6a4170716b220524000b2005200410261a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004199d70010010b200341d0006a2005412010041a200341306a210541002104420021070340200341d0006a20046a21080240024020024102490d002007420886200620083100008422064238888421072002417f6a2102200642088621060c010b024020024101460d00410041f6d70010010b200520073703082005200620083100008437030041102102200541106a210542002106420021070b200441016a22044120470d000b024020024110460d00024020024102490d00200320062007200241037441786a1011200341086a2903002107200329030021060b20052006370300200520073703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a29030037030020032003290338370318200320032903303703102002200341106a1071200341f0006a24000b850203017f017e037f230041106b22022400200128020420012802006b41286dad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b02402001280200220520012802042201460d000340024020002005108b012204280208200428020422066b41074a0d00410041bbd4001001200428020421060b2006200541106a410810041a2004200428020441086a3602042004200541186a108c011a200541286a22052001470d000b0b200241106a240020000bfd0103027f017e027f230041106b22022400200128020420012d0000220341017620034101711bad21042000280204210303402004a721052002200442078822044200522206410774200541ff0071723a000f0240200028020820036b41004a0d00410041bbd4001001200028020421030b20032002410f6a410110041a2000200028020441016a220336020420060d000b0240200128020420012d00002205410176200541017122061b2205450d002001280208200141016a20061b21060240200028020820036b20054e0d00410041bbd4001001200028020421030b20032006200510041a2000200028020420056a3602040b200241106a240020000bd20103017f017e037f230041106b22022400200128020420012802006bad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b0240200028020820046b2001280204200128020022066b22054e0d00410041bbd4001001200028020421040b20042006200510041a2000200028020420056a360204200241106a240020000bd60103037f017e017f230041106b2202240020012802042203200128020022046b41386dad2105200028020021010340200141016a2101200542078822054200520d000b200020013602000240024020042003460d00034020042802302206ad21050340200141016a2101200542078822054200520d000b20002001360200200220003602002006417f460d0220022002360208200241086a2004200641027441e8d4006a2802001101002000200028020041026a2201360200200441386a22042003470d000b0b200241106a240020000f0b108e01000b05001000000bff0103017f017e037f230041106b22022400200128020420012802006b410575ad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b02402001280200220520012802042206460d0003400240200028020820046b41074a0d00410041bbd4001001200028020421040b20042005410810041a2000200028020441086a3602042000200541086a1090011a200541206a22052006460d01200028020421040c000b0b200241106a240020000bdf0103027f017e027f230041106b22022400200028020421032001350210210403402004a721052002200442078822044200522206410774200541ff0071723a000f0240200028020820036b41004a0d00410041bbd4001001200028020421030b20032002410f6a410110041a2000200028020441016a220336020420060d000b02402001280210417f460d00200141046a21050240200028020820036b41034a0d00410041bbd4001001200028020421030b20032001410410041a2000200028020441046a360204200020051094011a200241106a240020000f0b108e01000b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041216a3602000b7602017f017e20002802002802002202200228020041226a2200360200200141286a350200420020012d00244101711b21030340200041016a2100200342078822034200520d000b200220003602000240200128022820012d0024220141017620014101711b2201450d002002200120006a3602000b0b9a0303017f017e047f230041106b22022400200128020420012802006b41386dad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b024002402001280200220720012802042201460d0003402007350230210303402003a721052002200342078822034200522206410774200541ff0071723a000e0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410e6a410110041a2000200028020441016a220436020420060d000b2002200036020020072802302204417f460d0220022002360208200241086a2007200441027441f4d4006a280200110100200741346a210502402000280208200028020422046b41014a0d00410041bbd4001001200028020421040b20042005410210041a2000200028020441026a2204360204200741386a22072001470d000b0b200241106a240020000f0b108e01000b6401037f200028020028020022002802042102410021030340200120036a21040240200028020820026b41004a0d00410041bbd4001001200028020421020b20022004410110041a2000200028020441016a2202360204200341016a22034121470d000b0b6401037f200028020028020022002802042102410021030340200120036a21040240200028020820026b41004a0d00410041bbd4001001200028020421020b20022004410110041a2000200028020441016a2202360204200341016a22034121470d000b0bab0101037f200028020028020022002802042102410021030340200120036a21040240200028020820026b41004a0d00410041bbd4001001200028020421020b20022004410110041a2000200028020441016a2202360204200341016a22034121470d000b200141216a21030240200028020820026b41004a0d00410041bbd4001001200028020421020b20022003410110041a2000200028020441016a3602042000200141246a108b011a0b02000b02000b1a00024020012d0024410171450d002001412c6a28020010340b0baf0201047f230041206b220324000240024020020d00200341146a41003602002003420037020c200341086a410472210402402000280208200028020422026b41034b0d0041004199d7001001200028020421020b200341086a2002410410041a2000200028020441046a36020420002004109c011a02402001280210417f460d0020012802042205450d00200521020240200141086a28020022002005460d000340200041486a21020240200041786a22042802002206417f460d00200341186a200041486a200641027441c8d7006a2802001101000b2004417f3602002002210020052002470d000b200128020421020b20012005360208200210340b2001200329030837020020014100360210200141086a20032903103702000c010b410041e0d70010010b200341206a24000b890303027f017e047f230041106b220224002000280204210342002104410021050340024020032000280208490d00410041c3d7001001200028020421030b20032d000021062000200341016a22033602042004200641ff0071200541ff0171220574ad842104200541076a2105200321032006418001710d000b0240024020012802042205200128020022076b41386d22062004a722034f0d002001200320066b109d01200128020421050c010b200620034d0d0002402007200341386c6a22082005460d000340200541486a21030240200541786a22062802002207417f460d00200241086a200541486a200741027441c8d7006a2802001101000b2006417f3602002003210520082003470d000b0b20012008360204200821050b0240200128020022032005460d00034020002003109e011a02402000280208200028020422066b41014b0d0041004199d7001001200028020421060b200341346a2006410210041a2000200028020441026a360204200341386a22032005470d000b0b200241106a240020000ba105010c7f230041106b2202240002400240024020002802082203200028020422046b41386d2001490d000340200441306a2203420037020020044200370200200441286a4200370200200441186a4200370200200441106a4200370200200441086a4200370200200441206a4200370200200341003602002000200028020441386a22043602042001417f6a22010d000c020b0b2004200028020022056b41386d220620016a220741a592c9244f0d0141a492c924210402400240200320056b41386d22034191c9a4124b0d0020072003410174220420042007491b22040d0041002104410021030c010b200441386c103321030b2003200441386c6a21082003200641386c6a22092104034020044200370200200441286a4200370200200441186a4200370200200441106a4200370200200441086a4200370200200441206a4200370200200441306a4200370200200441386a21042001417f6a22010d000b024002402000280204220a20002802002205470d002000200836020820002004360204200020093602000c010b2005200a6b210b410021010340200920016a220341786a2206417f360200200341486a220741003a00000240200a20016a220541786a220c280200220d417f460d00200241086a2007200541486a200d41027441d4d7006a2802001102002006200c2802003602000b2003417c6a2005417c6a2f01003b0100200b200141486a2201470d000b200020083602082000280204210320002004360204200028020021052000200920016a36020020032005460d000340200341486a21040240200341786a22012802002200417f460d002002200341486a200041027441c8d7006a2802001101000b2001417f3602002004210320052004470d000b0b2005450d00200510340b200241106a24000f0b20001049000be00203027f017e037f230041306b220224002000280204210342002104410021050340024020032000280208490d00410041c3d7001001200028020421030b20032d000021062000200341016a22073602042004200641ff0071200541ff0171220374ad842104200341076a2105200721032006418001710d000b024002402004a722030d00410021030340200220036a2106024020002802082007470d0041004199d7001001200028020421070b20062007410110041a2000200028020441016a2207360204200341016a22034121470d000b024020012802302203417f460d00200241286a2001200341027441c8d7006a2802001101000b2001200229030037000020014100360230200141206a200241206a2d00003a0000200141186a200241186a290300370000200141106a200241106a290300370000200141086a200241086a2903003700000c010b20002001200310a2010b200241306a240020000b4c0020012002290000370000200141206a200241206a2d00003a0000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700000b4c0020012002290000370000200141206a200241206a2d00003a0000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700000b7801017f20012002290200370200200141206a200241206a2f01003b0100200141186a200241186a290200370200200141106a200241106a290200370200200141086a200241086a2902003702002001412c6a2002412c6a22032802003602002001200229022437022420024200370224200341003602000be80401037f230041c0006b22032400024002402002417f6a220241014b0d000240024020020e020001000b20002802042102410021040340200341086a20046a2105024020002802082002470d0041004199d7001001200028020421020b20052002410110041a2000200028020441016a2202360204200441016a22044121470d000b024020012802302200417f460d00200341386a2001200041027441c8d7006a2802001101000b2001200329030837000020014101360230200141206a200341086a41206a2d00003a0000200141186a200341086a41186a290300370000200141106a200341086a41106a290300370000200141086a200341086a41086a2903003700000c020b200341346a41003602002003420037022c20002802042102410021040340200341086a20046a2105024020002802082002470d0041004199d7001001200028020421020b20052002410110041a2000200028020441016a2202360204200441016a22044121470d000b200341296a2104024020002802082002470d0041004199d7001001200028020421020b20042002410110041a2000200028020441016a36020420002003412c6a220210a3011a024020012802302200417f460d00200341386a2001200041027441c8d7006a2802001101000b200120032903083702002001410236023020012002290200370224200141206a200341086a41206a2f01003b0100200141186a200341086a41186a290300370200200141106a200341086a41106a290300370200200141086a200341086a41086a2903003702002001412c6a200241086a2802003602000c010b410041e0d70010010b200341c0006a24000ba00301057f230041206b2202240020024100360218200242003703102000200241106a10791a0240024002402002280214200228021022036b2204450d00200241086a410036020020024200370300200441704f0d02024002402004410a4b0d00200220044101743a0000200241017221050c010b200441106a4170712206103321052002200436020420022006410172360200200220053602080b0340200520032d00003a0000200541016a2105200341016a21032004417f6a22040d000b200541003a00000240024020012d00004101710d00200141003b01000c010b200128020841003a00002001410036020420012d0000410171450d0020012802081034200141003602000b20012002290300370200200141086a200241086a2802003602000c010b0240024020012d00004101710d00200141003b01000c010b200128020841003a00002001410036020420012d0000410171450d0020012802081034200141003602000b20014100360208200142003702000b024020022802102205450d0020022005360214200510340b200241206a240020000f0b2002103c000bd80501097f0240024020002802082202200028020422036b41306d2001490d000340200341086a22024200370300200342003703002003420037021820034200370310200341286a4200370200200341206a4200370200200241003602002000200028020441306a22033602042001417f6a22010d000c020b0b0240024002402003200028020022046b41306d220520016a220641d6aad52a4f0d0041d5aad52a210302400240200220046b41306d220241a9d5aa154b0d0020062002410174220320032006491b22030d0041002103410021020c010b200341306c103321020b2002200341306c6a21072002200541306c6a22082103034020034200370300200341286a4200370200200341206a4200370200200341186a4200370200200341106a4200370300200341086a4200370300200341306a21032001417f6a22010d000b2000280204220920002802002201460d01200120096b210a410021020340200820026a220441506a2206200920026a220141506a2205290200370200200641086a200541086a280200360200200441606a200141606a290300370300200141586a410036020020054200370200200441686a220641086a200141686a220541086a28020036020020062005290200370200200141706a410036020020054200370200200441746a220541086a200141746a220441086a280200360200200520042902003702002001417c6a410036020020044200370200200a200241506a2202470d000b200820026a210820002802042101200028020021020c020b20001049000b200121020b200020073602082000200336020420002008360200024020012002460d0003400240200141746a2d0000410171450d002001417c6a28020010340b0240200141686a2d0000410171450d00200141706a28020010340b200141506a21030240200141506a2d0000410171450d00200141586a28020010340b2003210120022003470d000b0b2002450d00200210340b0b0bbc1606004190c0000b766661696c656420746f20616c6c6f6361746520706167657300756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f7200656e636f756e7465726564206e6f6e2d62617365363420636861726163746572005055425f424c535f000000000000000000418dc3000b9e0200000000000000000000000000000000000000303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900000000000000006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e64005349475f424c535f00000000000000000041abc5000ba605000000000000000000020000000300000005000000070000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d000000710000007f00000083000000890000008b00000095000000970000009d000000a3000000a7000000ad000000b3000000b5000000bf000000c1000000c5000000c7000000d3000000010000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d00000071000000790000007f00000083000000890000008b0000008f00000095000000970000009d000000a3000000a7000000a9000000ad000000b3000000b5000000bb000000bf000000c1000000c5000000c7000000d1000000404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e403e403f3435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f10111213141516171819404040403f401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404077726f6e6720656e636f64656420737472696e672073697a6500000000000000000041d1ca000b810800000000000000000000000000000000000000000000000000000000000000000000000000000000000000424c535f5349475f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e554c5f0000000000000000000000000000000000424c535f504f505f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f504f505f0000000000000000000000000000000000bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117cac239b9d6dc54ad1b75cb0eba386f4e3642accad5b95566c907b51def6a8167f2212ecfc8767daaa845d555681d4d11000000000000000000000000000000006e756d626572206f662066696e616c697a657273206578636565647320746865206d6178696d756d20616c6c6f7765640072657175697265206174206c65617374206f6e652066696e616c697a6572005055425f424c53005349475f424c530046696e616c697a6572206465736372697074696f6e2067726561746572207468616e206d617820616c6c6f7765642073697a65007075626c6963206b65792073686f75642073746172742077697468205055425f424c530070726f6f66206f6620706f7373657373696f6e207369676e61747572652073686f756c642073746172742077697468205349475f424c530073756d206f662077656967687473206361757365732075696e7436345f74206f766572666c6f77006475706c6963617465207075626c6963206b65790070726f6f66206f6620706f7373657373696f6e206661696c65640066696e616c697a657220706f6c696379207468726573686f6c64206d7573742062652067726561746572207468616e2068616c66206f66207468652073756d206f6620746865207765696768747300746865206f6e6572726f7220616374696f6e2063616e6e6f742062652063616c6c6564206469726563746c79006665617475726520646967657374206163746976617465643a20000a0070726f746f636f6c2066656174757265206973206e6f74206163746976617465640000982f8a4291443771cffbc0b5a5dbb5e95bc25639f111f159a4823f92d55e1cab98aa07d8015b8312be853124c37d0c55745dbe72feb1de80a706dc9b74f19bc1c1699be48647beefc69dc10fcca10c246f2ce92daa84744adca9b05cda88f97652513e986dc631a8c82703b0c77f59bff30be0c64791a7d55163ca0667292914850ab72738211b2efc6d2c4d130d385354730a65bb0a6a762ec9c281852c7292a1e8bfa24b661aa8708b4bc2a3516cc719e892d1240699d685350ef470a06a1016c1a419086c371e4c774827b5bcb034b30c1c394aaad84e4fca9c5bf36f2e68ee828f746f63a57814780041d2d2000bd005c8840802c78cfaffbe90eb6c50a4f7a3f9bef27871c6656e636f64656420626173653634206b657920697320746f6f2073686f72740062617365363420656e636f6465642074797065206d75737420626567696e2066726f6d20636f72726573706f6e64696e6720707265666978006465636f6465642073697a65200020646f65736e2774206d61746368207374727563747572652073697a652000202b20636865636b73756d2000636865636b73756d206f662073747275637475726520646f65736e2774206d61746368007075626c6963206b65792068617320612077726f6e672073697a65006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e640000000700000008000000090000000a0000000b0000000c0000006f626a6563742070617373656420746f206974657261746f725f746f206973206e6f7420696e206d756c74695f696e646578006572726f722072656164696e67206974657261746f720063616e6e6f7420637265617465206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e7472616374006f626a6563742070617373656420746f206d6f64696679206973206e6f7420696e206d756c74695f696e6465780063616e6e6f74206d6f64696679206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e747261637400757064617465722063616e6e6f74206368616e6765207072696d617279206b6579207768656e206d6f64696679696e6720616e206f626a656374006461746173747265616d20617474656d7074656420746f207265616420706173742074686520656e640067657400000d0000000e0000000f000000100000001100000012000000696e76616c69642076617269616e7420696e64657800756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04282c000000000000000000000000380ac745a7633db01757d663500c5edbbe8c722c3b185e9806e0d2e3e81cb4f404000000033b3d4b0100000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba010000000000ea3055e42604000000000000000000000000 +DMLOG APPLIED_TRANSACTION 4 1f5db111b030c2b86ec1d0f7de9234cbb55e88518781e1cf20919489cd2457b804000000033b3d4b01000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b0100d0070000a510000000000000000028410000000000000001010000010000000000ea3055f0d4bd6bf1b62dc0158b37a63d486b34ba1162c7a1e1b612d8d51c675d91e53a1c000000000000001c00000000000000010000000000ea30551c0000000000000002010000000000ea30550000000000ea305500000040258ab2c2010000000000ea305500000000a8ed3232c8df020000000000ea30550000bbdf020061736d0100000001d8012060000060027f7f0060037f7f7f0060037f7f7f017f60047f7f7f7f017f60067f7f7f7f7f7f017f60077f7f7f7f7f7f7f017f60047e7e7e7e017f6000017e60047f7e7e7f0060057f7f7f7f7f017f60027f7f017f60027f7f017e60057f7f7f7f7f0060067e7e7e7e7f7f017f60017e0060027e7f0060047e7e7e7e0060037e7f7f017e60017f0060017f017f6000017f60027f7e0060047f7e7f7f0060037e7e7e0060087f7f7f7f7f7f7f7f0060077f7f7f7f7f7f7f0060017d017d60067f7f7f7f7f7f0060037f7e7f0060047f7f7f7f0060027e7e000280072c03656e760561626f7274000003656e760c656f73696f5f617373657274000103656e76066d656d736574000303656e76076d656d6d6f7665000303656e76066d656d637079000303656e76087072696e74735f6c000103656e760a626c735f66705f6d6f64000403656e760a626c735f67325f6d6170000403656e760a626c735f67325f616464000503656e760b626c735f70616972696e67000603656e760b64625f66696e645f693634000703656e761063757272656e745f7265636569766572000803656e760d6173736572745f736861323536000203656e760b6173736572745f73686131000203656e760d6173736572745f736861353132000203656e76106173736572745f726970656d64313630000203656e7606736861323536000203656e76095f5f6173686c746933000903656e760473686131000203656e7606736861353132000203656e7609726970656d64313630000203656e760b7265636f7665725f6b6579000a03656e76207365745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000103656e76206765745f626c6f636b636861696e5f706172616d65746572735f7061636b6564000b03656e76167365745f70726f706f7365645f70726f647563657273000c03656e760c63757272656e745f74696d65000803656e76146765745f6163746976655f70726f647563657273000b03656e76126173736572745f7265636f7665725f6b6579000d03656e760c64625f73746f72655f693634000e03656e760c726571756972655f61757468000f03656e760e7365745f66696e616c697a657273000103656e760e7365745f70726976696c65676564001003656e76137365745f7265736f757263655f6c696d697473001103656e76197365745f70726f706f7365645f70726f6475636572735f6578001203656e761370726561637469766174655f66656174757265001303656e76067072696e7473001303656e761469735f666561747572655f616374697661746564001403656e7610616374696f6e5f646174615f73697a65001503656e7610726561645f616374696f6e5f64617461000b03656e7611656f73696f5f6173736572745f636f6465001603656e7614656f73696f5f6173736572745f6d657373616765000203656e760a64625f6765745f693634000303656e760d64625f7570646174655f693634001703656e76087072696e746865780001037a79001814140b1300141313131303030b0b130b0a191a01030b0104030301130f130b02021b14020013001300130013001300131c1313021d0b020b1e01010201020101010113011f1f1f1f1f1f1f0b011f1f1f1f1f0b01011f0b1f0b1f1f1f0b0b0b0b000b0b0101010b010101010101020b010b020202020b010405017001131305030100010616037f014180c0000b7f0041a2d8000b7f0041a2d8000b070901056170706c79002d0924010041010b12535557595b5d910192019301950196019701980199019a019f01a001a1010ac1be0279100010321052105410561058105a105c0bf903002000104a102c20002001510440428080f9d4a98499dc9a7f200251044020002001107205428080add68d959ba955200251044020002001107305428080add68d95abd1ca0020025104402000200110740542808080e8b2edc0d38b7f200251044020002001107505428080add68db8baf1542002510440200020011076054280f8a6d4d2a8a1d3c1002002510440200020011077054280808080d4c4a2d942200251044020002001107805428080808080f798d942200251044020002001107b054280808080aefadeeaa47f200251044020002001107c054280808080b6f7d6d942200251044020002001107d05428080b8f6a4979ad942200251044020002001107e0542808080c093fad6d942200251044020002001107f0542f0aadf8bcde9add942200251044020002001108301054280808096cdebd4d942200251044020002001108501054280808080daac9bd6ba7f2002510440200020011087010542808080d0b2b3bb9932200251044020002001108801054290a9d9d9dd8c99d6ba7f200251044020002001108901052000428080808080c0ba98d500520440410042808080d9d3b3ed82ef0010270b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b05428080808080c0ba98d50020015104404280808080aefadeeaa47f2002510440410042818080d9d3b3ed82ef0010270b0b0b410010370bb40101037f200021010240024002402000410371450d00024020002d00000d00200020006b0f0b200041016a210103402001410371450d0120012d00002102200141016a220321012002450d020c000b0b2001417c6a21010340200141046a22012802002202417f73200241fffdfb776a7141808182847871450d000b0240200241ff01710d00200120006b0f0b034020012d00012102200141016a2203210120020d000c020b0b2003417f6a21030b200320006b0b7201037f024020000d0041000f0b4100410028028c40200041107622016a220236028c404100410028028440220320006a410f6a4170712200360284400240200241107420004b0d004100200241016a36028c40200141016a21010b024020014000417f470d0041004190c00010010b20030b8a0101037f0240200120006c22010d0041000f0b4100410028028c40200141107622026a220336028c404100410028028440220020016a410f6a4170712204360284400240200341107420044b0d004100200341016a36028c40200241016a21020b024020024000417f470d0041004190c00010010b024020000d0041000f0b20004100200110021a20000b02000b3601017f230041106b2200410036020c4100200028020c280200410f6a417071220036028040410020003602844041003f0036028c400b3301027f2000410120001b2101024003402001102f22000d01410021004100280280412202450d0120021100000c000b0b20000b0600200010310b0900200041013602000b0900200041003602000b02000ba10101037f4184c10010350240410028028c4122030d004194c100210341004194c10036028c410b0240024041002802904122044120470d0002404184024101103022030d00417f21050c020b410021042003410028028c413602004100200336028c4141004100360290410b410021054100200441016a36029041200320044102746a22034184016a2001360200200341046a20003602000b4184c100103620050b4901037f4100210302402002450d000240034020002d0000220420012d00002205470d01200141016a2101200041016a21002002417f6a22020d000c020b0b200420056b21030b20030bf90101027f0240200041ffc1d72f4b0d0020012000103b0f0b200020004180c2d72f6e22024180c2d72f6c6b210302400240200041ff93ebdc034b0d002001200241306a3a0000410121000c010b410221002001200241017441a0c3006a410210041a0b200120006a220020034190ce006e220141ffff037141e4006e220241017441a0c3006a410210041a200041026a2001200241e4006c6b41017441feff037141a0c3006a410210041a200041046a200320014190ce006c6b220141ffff037141e4006e220341017441a0c3006a410210041a200041066a2001200341e4006c6b41017441feff037141a0c3006a410210041a200041086a0bda0301027f02402001418fce004b0d000240200141e3004b0d000240200141094b0d002000200141306a3a0000200041016a0f0b2000200141017441a0c3006a410210041a200041026a0f0b200141ffff0371220241e4006e21030240200141e7074b0d002000200341306a3a0000200041016a200241e4007041017441a0c3006a410210041a200041036a0f0b2000200341017441a0c3006a410210041a200041026a2001200341e4006c6b41017441feff037141a0c3006a410210041a200041046a0f0b20014190ce006e210302400240200141bf843d4b0d0002402001419f8d064b0d002000200341306a3a0000410121020c020b410221022000200341017441a0c3006a410210041a0c010b0240200141fface2044b0d002000200341ffff037141e4006e220241306a3a0000200041016a2003200241e4006c6b41017441feff037141a0c3006a410210041a410321020c010b2000200141c0843d6e41017441a0c3006a410210041a200041026a200341e4007041017441a0c3006a410210041a410421020b200020026a2200200120034190ce006c6b220141ffff037141e4006e220341017441a0c3006a410210041a200041026a2001200341e4006c6b41017441feff037141a0c3006a410210041a200041046a0b05001000000bbb0101037f20004200370200200041086a22024100360200024020012d00004101710d00200020012902003702002002200141086a28020036020020000f0b02402001280204220241704f0d00200128020821030240024002402002410b490d00200241106a4170712204103321012000200236020420002004410172360200200020013602080c010b200020024101743a0000200041016a21012002450d010b20012003200210041a0b200120026a41003a000020000f0b1000000bc50101047f20004200370200200041086a41003602000240200128020420012d00002205410176200541017122061b22052002490d00200520026b2205200320052003491b220341704f0d00200128020821070240024002402003410b490d00200341106a4170712208103321052000200336020420002008410172360200200020053602080c010b200020034101743a0000200041016a21052003450d010b20052007200141016a20061b20026a200310041a0b200520036a41003a000020000f0b1000000bf80101037f0240416e20016b2002490d000240024020002d0000410171450d00200028020821080c010b200041016a21080b416f21090240200141e6ffffff074b0d00410b21092001410174220a200220016a22022002200a491b2202410b490d00200241106a41707121090b20091033210202402004450d0020022008200410041a0b02402006450d00200220046a2007200610041a0b0240200320056b220320046b2207450d00200220046a20066a200820046a20056a200710041a0b02402001410a460d00200810340b200020023602082000200320066a220436020420002009410172360200200220046a41003a00000f0b1000000bcc0101037f0240416f20016b2002490d000240024020002d0000410171450d00200028020821070c010b200041016a21070b416f21080240200141e6ffffff074b0d00410b210820014101742209200220016a220220022009491b2202410b490d00200241106a41707121080b20081033210202402004450d0020022007200410041a0b0240200320056b20046b2203450d00200220046a20066a200720046a20056a200310041a0b02402001410a460d00200710340b20002002360208200020084101723602000f0b1000000bd80201077f0240200141704f0d000240024020002d00002202410171450d0020002802002202417e71417f6a2103200028020421040c010b20024101762104410a21030b410a2105024020042001200420014b1b2201410b490d00200141106a417071417f6a21050b024020052003460d00024002402005410a470d0041012103200041016a210620002802082107410021080c010b200541016a103321060240200520034b0d002006450d020b024020002d00002202410171450d002000280208210741012103410121080c010b41012108200041016a2107410021030b024002402002410171450d00200028020421010c010b200241fe017141017621010b0240200141016a22022001490d0020062007200210041a0b02402003450d00200710340b02402008450d0020002006360208200020043602042000200541016a4101723602000f0b200020044101743a00000b0f0b1000000bc80101037f0240024020002d000022034101712204450d002000280200417e71417f6a2105200028020421030c010b20034101762103410a21050b02400240200520036b2002490d002002450d01024002402004450d00200028020821050c010b200041016a21050b200520036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200520026a41003a000020000f0b20002005200320026a20056b20032003410020022001103f0b20000bce0101047f2001102e21020240024020002d000022034101712204450d002000280200417e71417f6a2105200028020421030c010b20034101762103410a21050b02400240200520036b2002490d002002450d01024002402004450d00200028020821050c010b200041016a21050b200520036a2001200210041a200320026a21020240024020002d0000410171450d00200020023602040c010b200020024101743a00000b200520026a41003a000020000f0b20002005200320026a20056b20032003410020022001103f0b20000ba70101037f0240024020002d0000220241017122030d0020024101762102410a21040c010b2000280200417e71417f6a2104200028020421020b024002400240024020022004470d002000200441012004200441004100104020002d0000410171450d010c020b20030d010b2000200241017441026a3a0000200041016a21000c010b2000200241016a360204200028020821000b200020026a220041003a0001200020013a00000b960201047f0240024020002d000022044101712205450d00200028020421040c010b200441017621040b024020042001490d00410a210602402005450d002000280200417e71417f6a21060b02400240200620046b2003490d002003450d01024002402005450d00200028020821060c010b200041016a21060b0240200420016b2207450d00200620016a220520036a2005200710031a200220036a2002200620046a20024b1b2002200520024d1b21020b200620016a2002200310031a200420036a21040240024020002d0000410171450d00200020043602040c010b200020044101743a00000b200620046a41003a000020000f0b20002006200420036a20066b20042001410020032002103f0b20000f0b1000000b0e002000200120022002102e10450bc20101047f0240024020002d000022034101712204450d00200028020421050c010b200341017621050b024020052001490d0002402002450d00024002402004450d00200028020821060c010b200041016a21060b0240200520016b22042004200220042002491b22026b2204450d00200620016a2201200120026a200410031a20002d000021030b200520026b2102024002402003410171450d00200020023602040c010b200020024101743a00000b200620026a41003a00000b20000f0b1000000bc70101047f230041106b220224002001200241056a103a2103200041086a41003602002000420037020002402003200241056a6b220441704f0d00024002402004410a4b0d00200020044101743a0000200041016a21010c010b200441106a4170712205103321012000200436020420002005410172360200200020013602080b0240200241056a2003460d00200241056a21000340200120002d00003a0000200141016a21012003200041016a2200470d000b0b200141003a0000200241106a24000f0b1000000b05001000000b0a00410020003703e8440b4e01017f230041e0006b220124002001200141d8006a3602082001200141106a3602042001200141106a36020020012000104c1a200141106a200128020420012802006b1016200141e0006a24000ba20801027f02402000280208200028020422026b41074a0d00410041f0c4001001200028020421020b20022001410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141346a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034a0d00410041f0c4001001200028020421020b20022003410410041a2000200028020441046a2202360204200141c0006a21030240200028020820026b41014a0d00410041f0c4001001200028020421020b20022003410210041a2000200028020441026a2202360204200141c2006a21010240200028020820026b41014a0d00410041f0c4001001200028020421020b20022001410210041a2000200028020441026a36020420000bfa0103017f027e017f230041306b2203240020012002200341106a1010420021044110210141002102420021050340200341106a20026a21060240024020014102490d002005420886200420063100008422044238888421052001417f6a2101200442088621040c010b024020014101460d00410041a9c00010010b200020053703082000200420063100008437030041102101200041106a210042002104420021050b200241016a22024120470d000b024020014110460d00024020014102490d00200320042005200141037441786a1011200341086a2903002105200329030021040b20002004370300200020053703080b200341306a24000bfa0103017f027e017f230041306b2203240020012002200341106a1014420021044110210141002102420021050340200341106a20026a21060240024020014102490d002005420886200420063100008422044238888421052001417f6a2101200442088621040c010b024020014101460d00410041a9c00010010b200020053703082000200420063100008437030041102101200041106a210042002104420021050b200241016a22024114470d000b024020014110460d00024020014102490d00200320042005200141037441786a1011200341086a2903002105200329030021040b20002004370300200020053703080b200341306a24000ba50101047f230041106b210102402000bc220241177641ff017141817f6a220341164a0d000240024020034100480d0041ffffff032003762204200271450d0220012000430000807b9238020c200441002002417f4a1b20026a418080807c2003757121020c010b20012000430000807b923802080240200241004e0d0041808080807821020c010b41808080fc032002200241ffffffff07711b21020b2002be21000b20000bd60e01067f02400240200041d3014b0d004130210141b0c500210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200228020021020c010b02402000417c4f0d002000200041d2016e220541d2016c22066b21004130210141f0c600210203402002200141017622034102746a220441046a2002200428020020004922041b210220012003417f736a200320041b22010d000b200241f0c6006b41027521000340200041027441f0c6006a28020020066a210241142103024003402002200341b0c5006a28020022016e22042001490d042002200420016c460d01200341046a220341bc01470d000b41d30121010340200220016e22032001490d042002200320016c460d0120022001410a6a22036e22042003490d042002200420036c460d0120022001410c6a22046e2206200341026a2203490d042002200620046c460d012002200141106a22046e2206200341046a2203490d042002200620046c460d012002200141126a22046e2206200341026a2203490d042002200620046c460d012002200141166a22046e2206200341046a2203490d042002200620046c460d0120022001411c6a22046e2206200341066a2203490d042002200620046c460d0120022001411e6a22046e2206200341026a2203490d042002200620046c460d012002200141246a22046e2206200341066a2203490d042002200620046c460d012002200141286a22046e2206200341046a2203490d042002200620046c460d0120022001412a6a22046e2206200341026a2203490d042002200620046c460d0120022001412e6a22046e2206200341046a2203490d042002200620046c460d012002200141346a22046e2206200341066a2203490d042002200620046c460d0120022001413a6a22046e2206200341066a2203490d042002200620046c460d0120022001413c6a22046e2206200341026a2203490d042002200620046c460d012002200141c2006a22046e2206200341066a2203490d042002200620046c460d012002200141c6006a22046e2206200341046a2203490d042002200620046c460d012002200141c8006a22046e2206200341026a2203490d042002200620046c460d012002200141ce006a22046e2206200341066a2203490d042002200620046c460d012002200141d2006a22046e2206200341046a2203490d042002200620046c460d012002200141d8006a22046e2206200341066a2203490d042002200620046c460d012002200141e0006a22046e2206200341086a2203490d042002200620046c460d012002200141e4006a22046e2206200341046a2203490d042002200620046c460d012002200141e6006a22046e2206200341026a2203490d042002200620046c460d012002200141ea006a22046e2206200341046a2203490d042002200620046c460d012002200141ec006a22046e2206200341026a2203490d042002200620046c460d012002200141f0006a22046e2206200341046a2203490d042002200620046c460d012002200141f8006a22046e2206200341086a2203490d042002200620046c460d012002200141fe006a22046e2206200341066a2203490d042002200620046c460d01200220014182016a22046e2206200341046a2203490d042002200620046c460d01200220014188016a22046e2206200341066a2203490d042002200620046c460d0120022001418a016a22046e2206200341026a2203490d042002200620046c460d0120022001418e016a22046e2206200341046a2203490d042002200620046c460d01200220014194016a22046e2206200341066a2203490d042002200620046c460d01200220014196016a22046e2206200341026a2203490d042002200620046c460d0120022001419c016a22046e2206200341066a2203490d042002200620046c460d012002200141a2016a22046e2206200341066a2203490d042002200620046c460d012002200141a6016a22046e2206200341046a2203490d042002200620046c460d012002200141a8016a22046e2206200341026a2203490d042002200620046c460d012002200141ac016a22046e2206200341046a2203490d042002200620046c460d012002200141b2016a22046e2206200341066a2203490d042002200620046c460d012002200141b4016a22046e2206200341026a2203490d042002200620046c460d012002200141ba016a22046e2206200341066a2203490d042002200620046c460d012002200141be016a22046e2206200341046a2203490d042002200620046c460d012002200141c0016a22046e2206200341026a2203490d042002200620046c460d012002200141c4016a22046e2206200341046a2203490d042002200620046c460d012002200141c6016a22046e2206200341026a2203490d042002200620046c460d012002200141d0016a22046e22062003410a6a2201490d04200141026a21012002200620046c470d000b0b4100200041016a2202200241304622021b2100200520026a220541d2016c21060c000b0b1000000b20020bb70701067f230041206b220324000240024002400240200128020422040d0020004100360208200042003702000c010b02402002450d00200341186a410036020020034200370310200441704f0d0220012802002102024002402004410b490d00200441106a417071220510332101200320043602142003200541017236021020032001360218200341106a21060c010b200320044101743a0010200341106a4101722101200341106a21060b20012002200410041a200120046a41003a00002003280218200641016a220720032d0010220541017122041b22012003280214200541017620041b22046a2102024002402004450d00034020012d0000410a460d01200141016a21012004417f6a22040d000c020b0b024020012002460d00200141016a22042002460d000340024020042d00002205410a460d00200120053a0000200141016a21010b2002200441016a2204470d000b20032d001021050b200121020b024002402005410171450d002003280218220120032802146a21040c010b2006200541fe01714101766a41016a2104200721010b200341106a200220016b200420026b10471a2003200328021420032d00102201410176200141017122011b36020c20032003280218200720011b36020820032003290308370300200020034100105120032d0010410171450d01200328021810340c010b2003410036021820034200370310200341106a200441027641036c104120012802002107410021010340200141016a20044f0d030240200720016a220241016a2d000041b0c8006a2d0000220541c000470d00410041d5c00010010b024020022d000041b0c8006a2d0000220641c000470d00410041d5c00010010b200341106a200641027420054104764103717241187441187510440240200141026a20044f0d000240200241026a2d0000220841526a2206410f4b0d0020060e1001000000000000000000000000000001010b0240200841b0c8006a2d0000220641c000470d00410041d5c00010010b200341106a2006410276410f712005410474724118744118751044200141036a20044f0d000240200241036a2d0000220541526a2202410f4b0d0020020e1001000000000000000000000000000001010b200641067421020240200541b0c8006a2d0000220541c000470d00410041d5c00010010b200341106a200520026a41187441187510440b200141046a22012004490d000b20002003290310370200200041086a200341106a41086a2802003602000b200341206a24000f0b200341106a103c000b410041b0ca0010011000000bb30101037f0240024041002d00d84a4101710d00410042003702cc4a410041003602d44a41f6c000102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602d04a410020014101723602cc4a410020023602d44a0c010b410020004101743a00cc4a41cdca0021022000450d010b200241f6c000200010041a0b200220006a41003a0000410141004180c00010381a410041013602d84a0b0f0b41ccca00103c000b1900024041002d00cc4a410171450d0041002802d44a10340b0bb30101037f0240024041002d00e84a4101710d00410042003702dc4a410041003602e44a419bc500102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602e04a410020014101723602dc4a410020023602e44a0c010b410020004101743a00dc4a41ddca0021022000450d010b2002419bc500200010041a0b200220006a41003a0000410241004180c00010381a410041013602e84a0b0f0b41dcca00103c000b1900024041002d00dc4a410171450d0041002802e44a10340b0bb30101037f0240024041002d00f84a4101710d00410042003702ec4a410041003602f44a41fcca00102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602f04a410020014101723602ec4a410020023602f44a0c010b410020004101743a00ec4a41edca0021022000450d010b200241fcca00200010041a0b200220006a41003a0000410341004180c00010381a410041013602f84a0b0f0b41ecca00103c000b1900024041002d00ec4a410171450d0041002802f44a10340b0bb30101037f0240024041002d00b44b4101710d00410042003702a84b410041003602b04b41b8cb00102e220041704f0d010240024002402000410b490d00200041106a417071220110332102410020003602ac4b410020014101723602a84b410020023602b04b0c010b410020004101743a00a84b41a9cb0021022000450d010b200241b8cb00200010041a0b200220006a41003a0000410441004180c00010381a410041013602b44b0b0f0b41a8cb00103c000b1900024041002d00a84b410171450d0041002802b04b10340b0b8f0101037f230041e0006b22002400024041002d00f04b4101710d00200041f4cb0041e00010042101410042003702e44b410041003602ec4b410041e000103322023602e44b410020023602e84b4100200241e0006a3602ec4b2002200141e00010041a410041002802e84b41e0006a3602e84b410541004180c00010381a410041013602f04b0b200041e0006a24000b1e01017f024041002802e44b2201450d00410020013602e84b200110340b0b7601027f024041002d00e04c4101710d00410041c004103322003602d44c410020003602d84c4100200041c0046a3602dc4c410021010340200020016a41003a0000200141016a220141c004470d000b200041013a00004100200020016a3602d84c410641004180c00010381a410041013602e04c0b0b1e01017f024041002802d44c2201450d00410020013602d84c200110340b0be317012f7f23004180036b22062400024020014100480d002001411f6a220741ff3f4b0d00200541ff014a0d0020074105762108200641f8026a4200370300200641f0026a4200370300200641e8026a4200370300200641e0026a4200370300200641d8026a4200370300200641d0026a4200370300200642003703c802200642003703c002200620053a00bf0241002109200641003a00be02200620013a00bd0220062001410876220a3a00bc0220064188026a42abb38ffc91a3b3f0db0037030020064180026a42ffa4b988c591da829b7f370300200641f8016a42f2e6bbe3a3a7fda7a57f370300200642e7cca7d0d6d0ebb3bb7f3703f001200642003703e801200641003602e0014101210b4100210703402006200741016a3602e001200641a0016a20076a20093a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b0240200b41c000460d00200641c0026a200b6a2d00002109200b41016a210b0c010b0b02402003450d0003402006200741016a3602e001200641a0016a20076a20022d00003a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b200241016a21022003417f6a22030d000b0b2006200741016a3602e001200641a0016a20076a200a3a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b2006200741016a3602e001200641a0016a20076a20013a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b2006200741016a3602e001200641a0016a20076a41003a0000024020062802e001220741c000470d00200641a0016a105f200641003602e001200620062903e8014280047c3703e801410021070b02402005450d002004210b2005210903402006200741016a3602e001200641a0016a20076a200b2d00003a0000024020062802e001220741c000470d00200641a0016a105f41002107200641003602e001200620062903e8014280047c3703e8010b200b41016a210b2009417f6a22090d000b0b2006200741016a3602e001200641a0016a20076a20053a0000024020062802e00141c000470d00200641a0016a105f200641003602e001200620062903e8014280047c3703e8010b200641a0016a1060200620062802f00122074118763a009002200620062802f401220b4118763a009402200620062802f801220a4118763a009802200620062802fc01220c4118763a009c022006200628028002220d4118763a00a0022006200628028402220e4118763a00a40220062006280288022202411876220f3a00a8022006200628028c0222034118763a00ac02200620034110763a00ad02200620024110763a00a9022006200e41107622103a00a5022006200d41107622113a00a1022006200c41107622123a009d022006200a41107622133a0099022006200b41107622143a0095022006200741107622093a009102200620034108763a00ae02200620024108763a00aa022006200e41087622153a00a6022006200d41087622163a00a2022006200c41087622173a009e022006200a41087622183a009a022006200b41087622193a00960220062007410876221a3a009202200620033a00af02200620023a00ab022006200e3a00a7022006200c3a009f022006200a3a009b022006200b3a009702200620073a0093022006200d3a00a302200641f0006a41206a41003a0000200641f0006a41186a4200370300200641f0006a41106a420037030020064200370378200642003703702008450d00200641f0006a410172210220062d00bf02211b4100211c4100211d4100211e4100211f410021204100212141002122410021234100212441002125410021264100212741002128410021294100212a4100212b4100212c4100212d4100212e4100212f4100213041002131410021324100213341002134410121030340200620312007733a007320062032201a733a0072200620332009733a00712006203420062d0090027322093a00702006202d200b733a00772006202e2019733a00762006202f2014733a00752006203020062d009402733a007420062029200a733a007b2006202a2018733a007a2006202b2013733a00792006202c20062d009802733a007820062025200c733a007f200620262017733a007e200620272012733a007d2006202820062d009c02733a007c20062021200d733a008301200620222016733a008201200620232011733a0081012006201c200f733a0088012006201d200e733a0087012006201e2015733a0086012006201f2010733a0085012006202420062d00a002733a0080012006202020062d00a402733a008401200620062d00890120062d00a902733a008901200620062d008a0120062d00aa02733a008a01200620062d008b0120062d00ab02733a008b01200620033a009001200620062d008c0120062d00ac02733a008c01200620062d008d0120062d00ad02733a008d01200620062d008e0120062d00ae02733a008e01200620062d008f0120062d00af02733a008f01200642abb38ffc91a3b3f0db00370368200642ffa4b988c591da829b7f370360200642f2e6bbe3a3a7fda7a57f370358200642e7cca7d0d6d0ebb3bb7f3703502006420037034841002107200641003602404100210b03402006200741016a360240200620076a20093a000002402006280240220741c000470d002006105f4100210720064100360240200620062903484280047c3703480b0240200b4120460d002002200b6a2d00002109200b41016a210b0c010b0b02402005450d002004210b2005210903402006200741016a360240200620076a200b2d00003a000002402006280240220741c000470d002006105f4100210720064100360240200620062903484280047c3703480b200b41016a210b2009417f6a22090d000b0b2006200741016a360240200620076a201b3a00000240200628024041c000470d002006105f20064100360240200620062903484280047c3703480b200610602006200628025022074118763a007020062006280254220b4118763a00742006200628025822094118763a00782006200628025c220a4118763a007c20062006280260220c4118763a00800120062006280264220d4118763a00840120062006280268220e4118763a0088012006200628026c220f4118763a008c012006200f4110763a008d012006200e4110763a0089012006200d4110763a0085012006200c4110763a0081012006200a4110763a007d200620094110763a00792006200b4110763a0075200620074110763a00712006200f4108763a008e012006200e4108763a008a012006200d4108763a0086012006200c4108763a0082012006200a4108763a007e200620094108763a007a2006200b4108763a0076200620074108763a00722006200f3a008f012006200e3a008b012006200d3a0087012006200a3a007f200620093a007b2006200b3a0077200620073a00732006200c3a0083012003410574220720006a41606a200641f0006a200120076b2207411f7520077141206a10041a20032008460d01200341016a210320062d008801211c20062d00a802210f20062d008701211d20062d00a702210e20062d008601211e20062d00a602211520062d008501211f20062d00a502211020062d008401212020062d008301212120062d00a302210d20062d008201212220062d00a202211620062d008101212320062d00a102211120062d008001212420062d007f212520062d009f02210c20062d007e212620062d009e02211720062d007d212720062d009d02211220062d007c212820062d007b212920062d009b02210a20062d007a212a20062d009a02211820062d0079212b20062d009902211320062d0078212c20062d0077212d20062d009702210b20062d0076212e20062d009602211920062d0075212f20062d009502211420062d0074213020062d0073213120062d009302210720062d0072213220062d009202211a20062d0071213320062d009102210920062d007021340c000b0b20064180036a24000ba80401187f23004180026b2201240041002102410021030340200120026a2000200341ff017122046a28000022034118742003410874418080fc07717220034108764180fe037120034118767272360200200441046a2103200241046a220241c000470d000b41002102200128020021040340200120026a220341c0006a2004200341246a2802006a200341386a2802002204410d772004410a76732004410f77736a200341046a2802002203410e772003410376732003411977736a36020020032104200241046a220241c001470d000b41002104200041dc006a28020022052106200041ec006a28020022072108200041e8006a2802002209210a200041e4006a280200220b210c200041e0006a280200220d210e200041d8006a280200220f2110200041d4006a28020022112112200028025022132114034020102215201222167220142202712015201671722002411e772002411377732002410a77736a200441e8d0006a280200200120046a2802006a200a2217200e2203417f7371200c2218200371726a2003411a772003411577732003410777736a20086a220e6a2114200e20066a210e20152106201721082018210a2003210c2016211020022112200441046a2204418002470d000b2000200720176a36026c2000200920186a3602682000200b20036a3602642000200d200e6a3602602000200520156a36025c2000200f20166a3602582000201120026a3602542000201320146a36025020014180026a24000be80102027f027e2000200028024022016a22024180013a000002402001ad220342017c423842c00020014138491b22045a0d00200241016a21012003427f8520047c21030340200141003a0000200141016a21012003427f7c22034200520d000b0b0240200028024022014138490d002000105f20004100413810021a200028024021010b200020002903482001410374ad7c22033c003f20002003370348200020034208883c003e200020034210883c003d200020034218883c003c200020034220883c003b200020034228883c003a200020034230883c0039200020034238883c00382000105f0bb90801027f230041a0066b22032400200341a0046a418002200028020020002802042001280208200141016a20012d0000220041017122041b2001280204200041017620041b105e413f2101200341c0016a210003402000200341a0046a20016a2d00003a0000200041016a21002001417f6a2201417f470d000b200341e0036a41386a200341c0016a41386a290300370300200341e0036a41306a200341c0016a41306a290300370300200341e0036a41286a200341c0016a41286a290300370300200341e0036a41206a200341c0016a41206a290300370300200341e0036a41186a200341c0016a41186a290300370300200341e0036a41106a200341c0016a41106a290300370300200341e0036a41086a200341c0016a41086a290300370300200320032903c0013703e003200341e0036a41c00020034180036a413010061a41ff002101200341c0016a210003402000200341a0046a20016a2d00003a0000200041016a21002001417f6a2201413f470d000b200341e0036a41386a200341c0016a41386a290300370300200341e0036a41306a200341c0016a41306a290300370300200341e0036a41286a200341c0016a41286a290300370300200341e0036a41206a200341c0016a41206a290300370300200341e0036a41186a200341c0016a41186a290300370300200341e0036a41106a200341c0016a41106a290300370300200341e0036a41086a200341c0016a41086a290300370300200320032903c0013703e003200341e0036a41c00020034180036a41306a2204413010061a20034180036a41e000200341c0016a41c00110071a200341df056a2101410021000340200320006a20012d00003a00002001417f6a2101200041016a220041c000470d000b200341e0036a41386a200341386a290300370300200341e0036a41306a200341306a290300370300200341e0036a41286a200341286a290300370300200341e0036a41206a200341206a290300370300200341e0036a41186a200341186a290300370300200341e0036a41106a200341106a290300370300200341e0036a41086a200341086a290300370300200320032903003703e003200341e0036a41c00020034180036a413010061a2003419f066a2101410021000340200320006a20012d00003a00002001417f6a2101200041016a220041c000470d000b200341e0036a41386a200341386a290300370300200341e0036a41306a200341306a290300370300200341e0036a41286a200341286a290300370300200341e0036a41206a200341206a290300370300200341e0036a41186a200341186a290300370300200341e0036a41106a200341106a290300370300200341e0036a41086a200341086a290300370300200320032903003703e003200341e0036a41c0002004413010061a20034180036a41e000200341c00110071a200341c0016a41c001200341c001200241c00110081a200341a0066a24000b970503017f017e047f230041f0006b22032400200341206a4100360200200342003703182003427f37031020032000290300220437030820032004370300024002402004200442808080809aecb4ee312001100a22004100480d00024020032000106322002802302003460d0041004180d50010010b2003200236023020032000200341306a10640c010b02402004100b510d00410041cad50010010b41c000103322004200370310200041286a22054200370300200041206a22064200370300200041186a220742003703002000200336023020002001370300200341306a20022802002208200228020420086b104d2005200341306a41186a2903003703002006200341306a41106a29030037030020072003290338370300200020032903303703102003200341306a41286a3602682003200341306a360260200341306a2000410810041a2003200341306a410872360264200341e0006a200041106a10651a2000200329030842808080809aecb4ee31200120002903002204200341306a4128101c2205360234024020042003290310540d002003427e200442017c2004427d561b3703100b200320003602602003200029030022043703302003200536022c02400240200328021c220220032802204f0d00200220053602102002200437030820034100360260200220003602002003200241186a36021c0c010b200341186a200341e0006a200341306a2003412c6a10660b20032802602100200341003602602000450d00200010340b024020032802182205450d0002400240200328021c22002005470d00200521000c010b0340200041686a220028020021022000410036020002402002450d00200210340b20052000470d000b200328021821000b2003200536021c200010340b200341f0006a24000b840603097f027e017f230041e0006b220221032002240002400240200028021822042000411c6a2802002205460d0002400340200541786a2802002001460d012004200541686a2205470d000c020b0b20042005460d00200541686a28020021060c010b024002400240024020014100410010292205417f4a0d00410041b3d50010010c010b2005418104490d010b2005102f2107410121080c010b20022005410f6a4170716b22072400410021080b20012007200510291a41c0001033220642003703102006420037030020062000360230200641186a4200370300200641206a4200370300200641286a42003703000240200541074b0d0041004199d70010010b20062007410810041a200741086a21040240200541786a411f4b0d0041004199d70010010b200041186a2109200641106a210a200341c0006a2004412010041a4200210b41102105200341206a2102410021044200210c0340200341c0006a20046a210d0240024020054102490d00200c420886200b200d31000084220b42388884210c2005417f6a2105200b420886210b0c010b024020054101460d00410041f6d70010010b2002200c3703082002200b200d3100008437030041102105200241106a21024200210b4200210c0b200441016a22044120470d000b024020054110460d00024020054102490d00200341086a200b200c200541037441786a1011200341106a290300210c2003290308210b0b2002200b3703002002200c3703080b200a2003290320370300200a41086a2003290328370300200a41186a200341206a41186a290300370300200a41106a200341206a41106a290300370300200620013602342003200636022020032006290300220b3703402003200136021c02400240200028021c2205200041206a2802004f0d00200520013602102005200b37030820034100360220200520063602002000200541186a36021c0c010b2009200341206a200341c0006a2003411c6a10660b02402008450d00200710310b20032802202105200341003602202005450d00200510340b200341e0006a240020060b980203027f017e017f230041206b2203210420032400024020012802302000460d00410041fdd50010010b0240100b2000290300510d00410041abd60010010b200129030021052004200228020022022802002206200228020420066b104d200141286a200441186a290300370300200141206a200441106a290300370300200141186a200429030837030020012004290300370310200141106a2102024020052001290300510d00410041ded60010010b200341506a220324002004200341286a3602082004200336020020032001410810041a2004200341086a3602042004200210651a2001280234420020034128102a024020052000290310540d002000427e200542017c2005427d561b3703100b200441206a24000bd20303017f027e017f230041206b220224002002200141186a29030022033c00172002200141086a29030022044220883c0003200220044228883c0002200220044230883c0001200220044238883c0000200220034220883c001320022003a722054108763a0016200220054110763a0015200220054118763a001420022004a722053a0007200220054108763a0006200220054110763a0005200220054118763a0004200220012903002204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370308200220012903102204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370318200220034230883c0011200220034228883c0012200220034238883c001002402000280208200028020422016b411f4a0d00410041bbd4001001200028020421010b20012002412010041a2000200028020441206a360204200241206a240020000b9a0301057f0240024002402000280204200028020022046b41186d220541016a220641abd5aad5004f0d0041aad5aad500210702400240200028020820046b41186d220441d4aad52a4b0d0020062004410174220720072006491b22070d0041002107410021040c010b200741186c103321040b20012802002106200141003602002004200541186c22086a2201200328020036021020012002290300370308200120063602002004200741186c6a2105200141186a21062000280204220220002802002207460d01200420086a41686a21010340200241686a220428020021032004410036020020012003360200200141086a200241706a2202290300370300200141106a200241086a280200360200200141686a21012004210220072004470d000b200141186a210120002802042107200028020021040c020b20001049000b200721040b200020053602082000200636020420002001360200024020072004460d000340200741686a220728020021012007410036020002402001450d00200110340b20042007470d000b0b02402004450d00200410340b0bb91806047f017e0c7f017e017f027d230041800c6b220224002000290300101d02402001410c6a2802002200200128020822036b41306d41818004490d00410041e4cc00100120012802082103200128020c21000b024020002003470d0041004195cd00100120012802082103200128020c21000b200241f0026a4100360200200242003703e802200220012903003703e002200241e0026a41086a2204200020036b41306d1068200241d0026a41086a4100360200200242003703d00202400240024041b4cd00102e220041704f0d000240024002402000410b490d00200041106a417071220510332103200220003602d402200220054101723602d002200220033602d8020c010b200220004101743a00d002200241d0026a41017221032000450d010b200341b4cd00200010041a0b200320006a41003a0000200241c8026a4100360200200242003703c002024041bccd00102e220041704f0d000240024002402000410b490d00200041106a417071220510332103200220003602c402200220054101723602c002200220033602c8020c010b200220004101743a00c002200241c0026a41017221032000450d010b200341bccd00200010041a0b200320006a41003a0000200241808080fc033602b80242002106200242003703b002200242003703a80220012802082203200128020c2207460d03200241c0076a41c0016a2108200241c00a6a41e0006a2109200241a8026a41086a210a200241c0026a410172210b200241f8026a410172210c200241d0026a410172210d200241f8026a410172210e420021060340024020032d0000410171450d002003280204418102490d00410041c4cd0010010b200241f8026a200341186a220f410020022802d40220022d00d002220041017620004101711b200f103e1a0240024020022802fc0220022d00f80222004101762210200041017122051b221120022802d40220022d00d0022200410176200041017122001b470d0020022802d802200d20001b2100024020050d00200e21052011450d02034020052d000020002d0000470d02200041016a2100200541016a21052010417f6a22100d000c030b0b2011450d01200228028003200e20051b200020111039450d010b410041f8cd0010010b024020022d00f802410171450d0020022802800310340b200241f8026a200341246a2212410020022802c40220022d00c002220041017620004101711b2012103e1a0240024020022802fc0220022d00f80222004101762210200041017122051b221120022802c40220022d00c0022200410176200041017122001b470d0020022802c802200b20001b2100024020050d00200c21052011450d02034020052d000020002d0000470d02200041016a2100200541016a21052010417f6a22100d000c030b0b2011450d01200228028003200c20051b200020111039450d010b4100419cce0010010b024020022d00f802410171450d0020022802800310340b0240200329031022132006427f85580d00410041d4ce001001200329031021130b02400240200f2d00002200410171450d002003411c6a2802002100200341206a28020021050c010b20004101762100200f41016a21050b200241c8016a2005200010692002200241c8016a3602c007200241f8026a200241c0076a410410041a20022802f8024195d3c7de056c22004118762000734195d3c7de056c41d4cc9efa06732200410d762000734195d3c7de056c2200410f76200073211002400240024020022802ac022205450d000240024020056941014b220f0d0020102005417f6a7121110c010b2010211120102005490d00201020057021110b20022802a80220114102746a2802002200450d000240200f0d002005417f6a2114034020002802002200450d0202402000280204220f2010460d00200f2014712011470d030b200041086a200241c8016a41e00010390d000c030b0b034020002802002200450d0102402000280204220f2010460d000240200f2005490d00200f200570210f0b200f2011470d020b200041086a200241c8016a41e0001039450d020c000b0b41e8001033220041086a200241c8016a41e00010041a200041003602002000201036020420022a02b802211520022802b40241016ab32116024002402005450d0020152005b39420165d4101730d010b2005410174200541034920052005417f6a714100477272210f024002402016201595104f2215430000804f5d201543000000006071450d002015a921110c010b410021110b4102210502402011200f200f2011491b220f4101460d000240200f200f417f6a710d00200f21050c010b200f105021050b02400240200520022802ac02220f4d0d00200241a8026a2005106a0c010b2005200f4f0d00200f41034921140240024020022802b402b320022a02b80295104f2215430000804f5d201543000000006071450d002015a921110c010b410021110b0240024020140d00200f6941014b0d0020114102490d01410141202011417f6a676b7421110c010b2011105021110b2011200520052011491b2205200f4f0d00200241a8026a2005106a0b024020022802ac0222052005417f6a220f710d00200f20107121110c010b0240201020054f0d00201021110c010b201020057021110b02400240024020022802a80220114102746a220f28020022100d00200020022802b002360200200220003602b002200f200a36020020002802002210450d02201028020421100240024020052005417f6a220f710d002010200f7121100c010b20102005490d00201020057021100b20022802a80220104102746a21100c010b200020102802003602000b201020003602000b200220022802b40241016a3602b4020c010b410041fcce0010010b0240024020122d00002200410171450d00200341286a28020021002003412c6a28020021050c010b20004101762100201241016a21050b200241086a20052000106b200241c00a6a410041c00110021a200241c0076a410041800310021a200241c00a6a41002802e44b220041002802e84b20006b10041a200241c0076a200241086a41c00110041a2009200241c8016a41e00010041a200241e0003602bc072002200241c8016a3602b807200220022903b807370300200241a8cb0020081061200241c00a6a41c001200241c0076a4180034102200241f8026a41c00410091a0240200241f8026a41002802d44c220041002802d84c20006b1039450d0041004191cf0010010b41e00010332200200241c8016a41e00010041a200241f8026a2003103d1a2002200041e0006a2205360298032002200536029403200220003602900320022003290310370388030240024020022802ec02220020022802f0024f0d00200020022903f8023702002000411c6a22054200370200200041086a200241f8026a41086a22102802003602002000410036021820052002280294033602002000200228029003360218200041206a200228029803360200201041003602002000200229038803370310200242003703f802200241003602940320024100360290032002410036029803200220022802ec0241286a3602ec020c010b2004200241f8026a106c2002280290032200450d002002200036029403200010340b024020022d00f802410171450d0020022802800310340b201320067c2106200341306a22032007460d030c000b0b200241c0026a103c000b200241d0026a103c000b200642018821060b024020012903002006560d00410041accf0010010b024020022802e802220020022802ec022203460d00034002402000411c6a280200200041186a2802006b41e000460d004100419fd40010010b2003200041286a2200470d000b0b200241f8026a200241e0026a106d20022802f802220020022802fc0220006b101e024020022802f8022200450d00200220003602fc02200010340b024020022802b0022200450d00034020002802002103200010342003210020030d000b0b20022802a8022100200241003602a80202402000450d00200010340b024020022d00c002410171450d0020022802c80210340b024020022d00d002410171450d0020022802d80210340b024020022802e8022205450d000240024020022802ec0222002005470d00200521000c010b03400240200041706a2802002203450d00200041746a2003360200200310340b200041586a21030240200041586a2d0000410171450d00200041606a28020010340b2003210020052003470d000b20022802e80221000b200220053602ec02200010340b200241800c6a24000bc403010b7f02402000280208200028020022026b41286d20014f0d00024002400240200141e7cc99334f0d0020002802042103200141286c22011033220420016a21052004200320026b41286d220641286c6a21072000280204220820002802002201460d01200120086b2109410021030340200720036a220241586a220a200820036a220141586a220b290200370200200a41086a200b41086a280200360200200241746a220a4200370200200241706a220c4100360200200a200141746a280200360200200c200141706a220a280200360200200241686a200141686a290300370300200241786a200141786a2202280200360200200141606a4100360200200b4200370200200a4200370200200241003602002009200341586a2203470d000b2004200641286c6a20036a210220002802042101200028020021030c020b1000000b20072102200121030b200020053602082000200736020420002002360200024020012003460d0003400240200141706a2802002202450d00200141746a2002360200200210340b200141586a21020240200141586a2d0000410171450d00200141606a28020010340b2002210120032002470d000b0b2003450d00200310340b0bd10902047f027e230041c0016b22032400024041002802d04a220441002d00cc4a22054101762206200541017122051b2002490d00410041e8d200100141002d00cc4a220541017621062005410171210541002802d04a21040b0240200141002802d44a41cdca0020051b2004200620051b1039450d0041004188d30010010b2003200241002802d04a41002d00cc4a220541017620054101711b22056b3602142003200120056a36021020032003290310370308200341b0016a200341086a41001051200341f0006a20032802b40120032d00b001220541017620054101711b2201104820034180016a41086a200341f0006a410041c1d3001046220541086a22022802003602002002410036020020032005290200370380012005420037020020034190016a41086a20034180016a41cfd3001043220541086a220228020036020020024100360200200320052902003703900120054200370200200341e0006a41e0001048200341a0016a41086a20034190016a2003280268200341e0006a41017220032d0060220541017122021b2003280264200541017620021b1042220541086a220228020036020020024100360200200320052902003703a00120054200370200200341386a41086a200341a0016a41eed3001043220541086a2202280200360200200241003602002003200529020037033820054200370200200341d0006a41041048200341106a41086a200341386a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1042220541086a22022802003602002002410036020020032005290200370310200542003702000240200141e400460d0041002003280218200341106a41017220032d0010220541017122011b2003280214200541017620011b10280b024020032d0010410171450d00200328021810340b024020032d0050410171450d00200328025810340b024020032d0038410171450d00200328024010340b024020032d00a001410171450d0020032802a80110340b024020032d0060410171450d00200328026810340b024020032d009001410171450d0020032802980110340b024020032d008001410171450d0020032802880110340b024020032d0070410171450d00200328027810340b0240024020032d00b0012201410171450d0020032802b801220520032802b4016a21010c010b200341b0016a410172220520014101766a21010b02402001417c6a220120056b2202450d0020002005200210031a0b200341106a200041e000104e2003200329031822074220883c003b200320074228883c003a200320074230883c0039200320074238883c00382003200341106a41186a29030022084220883c004b200320084228883c004a200320084230883c0049200320084238883c004820032007a722053a003f200320054108763a003e200320054110763a003d200320054118763a003c200320032903102207423886200742288642808080808080c0ff0083842007421886428080808080e03f8320074208864280808080f01f838484200742088842808080f80f832007421888428080fc07838420074228884280fe0383200742388884848437034002402001200341386a41041039450d00410041fbd30010010b024020032d00b001410171450d0020032802b80110340b200341c0016a24000baa0501077f02400240024002402001450d0020014180808080044f0d01200141027410332102200028020021032000200236020002402003450d00200310340b2000200136020441002103200121020340200028020020036a4100360200200341046a21032002417f6a22020d000b20002802082202450d03200041086a21032002280204210402400240200169220541014b0d0020042001417f6a7121040c010b20042001490d00200420017021040b200028020020044102746a200336020020022802002203450d03200541014b0d022001417f6a2106034002400240200328020420067122052004470d00200321020c010b0240024002402000280200200541027422076a2201280200450d002003210520032802002201450d0220032105200341086a2208200141086a41e00010390d02200321050c010b2001200236020020032102200521040c020b0340200528020022052802002201450d012008200141086a41e0001039450d000b0b200220052802003602002005200028020020076a280200280200360200200028020020076a28020020033602000b200228020022030d000c040b0b200028020021032000410036020002402003450d00200310340b200041003602040c020b1000000b03400240200328020422052001490d00200520017021050b0240024020052004470d00200321020c010b02402000280200200541027422066a22082802000d002008200236020020032102200521040c010b20032105024020032802002208450d0020032105200341086a2207200841086a41e00010390d00200321050340200528020022052802002208450d012007200841086a41e0001039450d000b0b200220052802003602002005200028020020066a280200280200360200200028020020066a28020020033602000b200228020022030d000b0b0bd10902047f027e230041c0016b22032400024041002802e04a220441002d00dc4a22054101762206200541017122051b2002490d00410041e8d200100141002d00dc4a220541017621062005410171210541002802e04a21040b0240200141002802e44a41ddca0020051b2004200620051b1039450d0041004188d30010010b2003200241002802e04a41002d00dc4a220541017620054101711b22056b3602142003200120056a36021020032003290310370308200341b0016a200341086a41001051200341f0006a20032802b40120032d00b001220541017620054101711b2201104820034180016a41086a200341f0006a410041c1d3001046220541086a22022802003602002002410036020020032005290200370380012005420037020020034190016a41086a20034180016a41cfd3001043220541086a220228020036020020024100360200200320052902003703900120054200370200200341e0006a41c0011048200341a0016a41086a20034190016a2003280268200341e0006a41017220032d0060220541017122021b2003280264200541017620021b1042220541086a220228020036020020024100360200200320052902003703a00120054200370200200341386a41086a200341a0016a41eed3001043220541086a2202280200360200200241003602002003200529020037033820054200370200200341d0006a41041048200341106a41086a200341386a2003280258200341d0006a41017220032d0050220541017122021b2003280254200541017620021b1042220541086a22022802003602002002410036020020032005290200370310200542003702000240200141c401460d0041002003280218200341106a41017220032d0010220541017122011b2003280214200541017620011b10280b024020032d0010410171450d00200328021810340b024020032d0050410171450d00200328025810340b024020032d0038410171450d00200328024010340b024020032d00a001410171450d0020032802a80110340b024020032d0060410171450d00200328026810340b024020032d009001410171450d0020032802980110340b024020032d008001410171450d0020032802880110340b024020032d0070410171450d00200328027810340b0240024020032d00b0012201410171450d0020032802b801220520032802b4016a21010c010b200341b0016a410172220520014101766a21010b02402001417c6a220120056b2202450d0020002005200210031a0b200341106a200041c001104e2003200329031822074220883c003b200320074228883c003a200320074230883c0039200320074238883c00382003200341106a41186a29030022084220883c004b200320084228883c004a200320084230883c0049200320084238883c004820032007a722053a003f200320054108763a003e200320054110763a003d200320054118763a003c200320032903102207423886200742288642808080808080c0ff0083842007421886428080808080e03f8320074208864280808080f01f838484200742088842808080f80f832007421888428080fc07838420074228884280fe0383200742388884848437034002402001200341386a41041039450d00410041fbd30010010b024020032d00b001410171450d0020032802b80110340b200341c0016a24000be60403047f027e067f0240024002402000280204200028020022026b41286d220341016a220441e7cc99334f0d0041e6cc9933210502400240200028020820026b41286d220241b2e6cc194b0d0020042002410174220520052004491b22050d0041002105410021020c010b200541286c103321020b2001411c6a2204290200210620044200370200200129020021072001420037020020012802182104200141003602182002200341286c6a22082007370200200141086a22032802002109200341003602002008200129031037031020082004360218200841086a20093602002008411c6a20063702002002200541286c6a210a200841286a210b2000280204220c20002802002201460d012001200c6b210d410021020340200820026a220541586a2204200c20026a220141586a2203290200370200200441086a200341086a280200360200200541746a22044200370200200541706a220941003602002004200141746a2802003602002009200141706a2204280200360200200541686a200141686a290300370300200541786a200141786a2205280200360200200141606a4100360200200342003702002004420037020020054100360200200d200241586a2202470d000b200820026a210820002802042101200028020021020c020b20001049000b200121020b2000200a3602082000200b36020420002008360200024020012002460d0003400240200141706a2802002205450d00200141746a2005360200200510340b200141586a21050240200141586a2d0000410171450d00200141606a28020010340b2005210120022005470d000b0b02402002450d00200210340b0be40203057f017e047f230041106b22022400200041003602082000420037020041082103200141086a21042001410c6a2802002205200128020822066b41286dad21070340200341016a2103200742078822074200520d000b0240024020062005460d00034020062802042208ad420020062d00002209410171220a1b2107200341086a210b0340200b41016a210b200742078822074200520d000b2006280218220320082009410176200a1b6b2006411c6a28020022096b2108200920036bad210703402008417f6a2108200742078822074200520d000b200b20086b2103200641286a22062005470d000b4100210341002106200b2008460d01200b20086b21030b20002003107a20002802042103200028020021060b2002200636020420022006360200200220033602080240200320066b41074a0d00410041bbd40010010b20062001410810041a2002200641086a36020420022004108a011a200241106a24000bd30203047f017e017f230041106b220224004100210320004100360208200042003702002002410036020020012802042204200128020022056b410575ad21060340200341016a2103200642078822064200520d000b2002200336020002400240024020052004460d0003402002200341086a3602002003410c6a2103200541186a2802002207ad21060340200341016a2103200642078822064200520d000b20022003417c6a3602002007417f460d022002200336020020022005410c6a108d011a20022802002103200541206a22052004470d000b20002802002105200028020421070c020b41002105410021070c010b108e01000b024002402003200720056b22074d0d002000200320076b107a200028020021050c010b200320074f0d002000200520036a3602040b20022005360204200220053602002002200028020436020820022001108f011a200241106a24000baf0302017f027e230041206b220224002000290300101d2002200141186a29030022033c00172002200141086a29030022044220883c0003200220044228883c0002200220044230883c0001200220044238883c0000200220034220883c001320022003a722004108763a0016200220004110763a0015200220004118763a001420022004a722003a0007200220004108763a0006200220004110763a0005200220004118763a0004200220012903002204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370308200220012903102204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370318200220034230883c0011200220034228883c0012200220034238883c00102002102241a8d00010232001107041c3d0001023200241206a24000b9c0303017f027e017f230041206b220124002001200041186a29030022023c00172001200041086a29030022034220883c0003200120034228883c0002200120034230883c0001200120034238883c0000200120024220883c001320012002a722044108763a0016200120044110763a0015200120044118763a001420012003a722043a0007200120044108763a0006200120044110763a0005200120044118763a0004200120002903002203423886200342288642808080808080c0ff0083842003421886428080808080e03f8320034208864280808080f01f838484200342088842808080f80f832003421888428080fc07838420034228884280fe03832003423888848484370308200120002903102203423886200342288642808080808080c0ff0083842003421886428080808080e03f8320034208864280808080f01f838484200342088842808080f80f832003421888428080fc07838420034228884280fe03832003423888848484370318200120024230883c0011200120024228883c0012200120024238883c001020014120102b200141206a24000ba70303017f027e017f230041206b220224002002200141186a29030022033c00172002200141086a29030022044220883c0003200220044228883c0002200220044230883c0001200220044238883c0000200220034220883c001320022003a722054108763a0016200220054110763a0015200220054118763a001420022004a722053a0007200220054108763a0006200220054110763a0005200220054118763a0004200220012903002204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370308200220012903102204423886200442288642808080808080c0ff0083842004421886428080808080e03f8320044208864280808080f01f838484200442088842808080f80f832004421888428080fc07838420044228884280fe03832004423888848484370318200220034230883c0011200220034228883c0012200220034238883c00100240200210240d00410041c5d00010010b200241206a24000bb90101047f230041106b2202210320022400024002400240102522040d002003420037030841002102200341086a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370308200341086a2105200441074b0d010b41004199d70010010b20052002410810041a20034200370300200241086a2102024020044178714108470d0041004199d70010010b20032002410810041a200341106a24000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000b4401037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b200324000bc90201047f230041306b220221032002240002400240102522040d00410021020c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b20032002360224200320023602202003200220046a2205360228200342003703180240200441074b0d0041004199d700100120032802282105200328022421020b200341186a2002410810041a2003200241086a2202360224024020052002470d0041004199d700100120032802282105200328022421020b200341176a2002410110041a2003200241016a2202360224024020052002470d0041004199d7001001200328022421020b200341166a2002410110041a2003200241016a3602242003410036021020034200370308200341206a200341086a10791a024020032802082202450d002003200236020c200210340b200341306a24000bff0103017f017e047f2000280204210242002103410021040340024020022000280208490d00410041c3d7001001200028020421020b20022d000021052000200241016a22063602042003200541ff0071200441ff0171220274ad842103200241076a2104200621022005418001710d000b0240024020012802042205200128020022026b22072003a722044f0d002001200420076b107a2000280204210620012802042105200128020021020c010b200720044d0d002001200220046a22053602040b0240200028020820066b200520026b22054f0d0041004199d7001001200028020421060b20022006200510041a2000200028020420056a36020420000b980201057f02400240024020002802082202200028020422036b2001490d000340200341003a00002000200028020441016a22033602042001417f6a22010d000c020b0b2003200028020022046b220520016a2206417f4c0d0141ffffffff07210302400240200220046b220241feffffff034b0d0020062002410174220320032006491b22030d0041002103410021020c010b2003103321020b200220036a2106200220056a220421030340200341003a0000200341016a21032001417f6a22010d000b20042000280204200028020022016b22026b2104024020024101480d0020042001200210041a200028020021010b2000200636020820002003360204200020043602002001450d00200110340b0f0b20001049000bb20202037f017e23004180016b220221032002240002400240102522040d00410021020c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b20032002360254200320023602502003200220046a360258200342003703480240200441074b0d0041004199d7001001200328025421020b200341c8006a2002410810041a2003200241086a3602542003410036024020034200370338200341d0006a200341386a10791a200341086a41086a200341d0006a41086a2802002202360200200341306a2002360200200320032903502205370308200320013703202003200037031820032005370328200341186a2003290348200341386a1062024020032802382202450d002003200236023c200210340b20034180016a24000b4c01037f230022022103024010252204450d00024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b410041fbcf001001200324000bcf0102047f017e230041106b2202210320022400024002400240102522040d002003420037030841002102200341086a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370308200341086a2105200441074b0d010b41004199d70010010b20052002410810041a200241086a2102024020044108470d0041004199d70010010b200341076a2002410110041a2003290308210620032d000721042000101d20062004410047101f200341106a24000baa0202047f047e230041206b2202210320022400024002400240102522040d002003420037031841002102200341186a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370318200341186a2105200441074b0d010b41004199d70010010b20052002410810041a200241086a21050240200441787122044108470d0041004199d70010010b200341106a2005410810041a200241106a2105024020044110470d0041004199d70010010b200341086a2005410810041a200241186a2102024020044118470d0041004199d70010010b20032002410810041a200329030021062003290308210720032903102108200329031821092000101d20092008200720061020200341206a24000ba203010b7f230041306b220221032002240041002104024010252205450d00024002402005418004490d002005102f21040c010b20022005410f6a4170716b220424000b2004200510261a0b20032004360214200320043602102003200420056a3602182003410036020820034200370300200341106a20031080011a2000101d200341206a2003106e420120032802202204200328022420046b10211a024020032802202204450d0020032004360224200410340b024020032802002206450d0002400240200328020422072006470d00200621040c010b03402007220441606a21070240200441786a2208280200417f460d002004416c6a2209280200220a450d00200a21050240200441706a220b2802002204200a460d000340200441486a21050240200441786a2202280200220c417f460d00200341206a200441486a200c41027441c8d7006a2802001101000b2002417f36020020052104200a2005470d000b200928020021050b200b200a360200200510340b2008417f36020020072006470d000b200328020021040b20032006360204200410340b200341306a24000bd20303027f017e097f230041106b220224002000280204210342002104410021050340024020032000280208490d00410041c3d7001001200028020421030b20032d000021062000200341016a22033602042004200641ff0071200541ff0171220574ad842104200541076a2105200321032006418001710d000b0240024020012802042207200128020022056b41057522062004a722034f0d002001200320066b108101200128020421070c010b200620034d0d000240200520034105746a22082007460d0003402007220341606a21070240200341786a2209280200417f460d002003416c6a220a280200220b450d00200b21060240200341706a220c2802002203200b460d000340200341486a21060240200341786a2205280200220d417f460d00200241086a200341486a200d41027441c8d7006a2802001101000b2005417f36020020062103200b2006470d000b200a28020021060b200c200b360200200610340b2009417f36020020072008470d000b0b20012008360204200821070b0240200128020022032007460d0003402002410236020420022000360200200220033602082002200341086a36020c200241086a2002108201200341206a22032007470d000b0b200241106a240020000b9f06030a7f017e037f230041106b220224000240024020002802082203200028020422046b4105752001490d000340200441186a2203420037030020044200370300200441106a4200370300200441086a4200370300200341003602002000200028020441206a22043602042001417f6a22010d000c020b0b02400240024002402004200028020022056b410575220620016a220741808080c0004f0d0041ffffff3f210402400240200320056b220341057541feffff1f4b0d00024020072003410475220420042007491b22040d0041002104410021030c020b200441808080c0004f0d030b2004410574103321030b200320044105746a2108200320064105746a22092104034020044200370300200441186a4200370300200441106a4200370300200441086a4200370300200441206a21042001417f6a22010d000b2000280204220a20002802002206460d022006200a6b210b410021050340200920056a220141786a2206417f360200200a20056a220341606a290300210c200141686a220741003a0000200141606a200c3703000240200341786a280200220d417f460d00200141706a220e42003702002001416c6a220f4100360200200e200341706a280200360200200f2003416c6a220e280200360200200141746a200341746a22012802003602002007200341686a2802003602002006200d36020020014100360200200e42003702000b200b200541606a2205470d000b200920056a2109200028020421062000280200210d0c030b20001049000b1000000b2006210d0b20002008360208200020043602042000200936020002402006200d460d0003402006220441606a21060240200441786a2207280200417f460d002004416c6a220e2802002200450d00200021010240200441706a220f28020022042000460d000340200441486a21010240200441786a22032802002205417f460d00200241086a200441486a200541027441c8d7006a2802001101000b2003417f3602002001210420002001470d000b200e28020021010b200f2000360200200110340b2007417f3602002006200d470d000b0b200d450d00200d10340b200241106a24000bcb0102037f017e20002802002102024020012802002203280208200328020422046b41074b0d0041004199d7001001200328020421040b20022004410810041a2003200328020441086a3602042000280204210220012802002201280204210342002105410021040340024020032001280208490d00410041c3d7001001200128020421030b20032d000021002001200341016a22033602042005200041ff0071200441ff0171220474ad842105200441076a2104200321032000418001710d000b200120022005a7109b010bb50302047f017e23004180016b220221032002240041002104024010252205450d00024002402005418004490d002005102f21040c010b20022005410f6a4170716b220424000b2004200510261a0b20032004360254200320043602502003200420056a360258200341c8006a410036020020034200370340200342003703380240200541074b0d0041004199d7001001200328025421040b200341386a2004410810041a2003200441086a360254200341d0006a200341386a41086a1084011a200341086a41086a200341d0006a41086a2802002204360200200341306a2004360200200320032903502206370308200320013703202003200037031820032006370328200341186a200341386a1067024020032802402202450d0002400240200328024422042002470d00200221040c010b03400240200441746a2d0000410171450d002004417c6a28020010340b0240200441686a2d0000410171450d00200441706a28020010340b200441506a21050240200441506a2d0000410171450d00200441586a28020010340b2005210420022005470d000b200328024021040b20032002360244200410340b20034180016a24000ba70303017f017e037f2000280204210242002103410021040340024020022000280208490d00410041c3d7001001200028020421020b20022d000021052000200241016a22023602042003200541ff0071200441ff0171220474ad842103200441076a2104200221022005418001710d000b0240024020012802042204200128020022066b41306d22052003a722024f0d002001200220056b10a401200128020421040c010b200520024d0d0002402006200241306c6a22052004460d0003400240200441746a2d0000410171450d002004417c6a28020010340b0240200441686a2d0000410171450d00200441706a28020010340b200441506a21020240200441506a2d0000410171450d00200441586a28020010340b2002210420052002470d000b0b20012005360204200521040b0240200128020022022004460d00034002402000200210a3012205280208200528020422016b41074b0d0041004199d7001001200528020421010b200241106a2001410810041a2005200528020441086a3602042005200241186a10a301200241246a10a3011a200241306a22022004470d000b0b20000b8a0101037f230041e0006b220221032002240002400240102522040d00410021020c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a0b20032002360254200320023602502003200220046a360258200341d0006a200341086a1086011a2000101d200341086a104b200341e0006a24000ba20801027f02402000280208200028020422026b41074b0d0041004199d7001001200028020421020b20012002410810041a2000200028020441086a2202360204200141086a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001410c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141106a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141146a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141186a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001411c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141206a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141246a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141286a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001412c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141306a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141346a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141386a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a22023602042001413c6a21030240200028020820026b41034b0d0041004199d7001001200028020421020b20032002410410041a2000200028020441046a2202360204200141c0006a21030240200028020820026b41014b0d0041004199d7001001200028020421020b20032002410210041a2000200028020441026a2202360204200141c2006a21010240200028020820026b41014b0d0041004199d7001001200028020421020b20012002410210041a2000200028020441026a36020420000b940101047f230041106b2202210320022400024002400240102522040d002003420037030841002102200341086a21050c010b024002402004418004490d002004102f21020c010b20022004410f6a4170716b220224000b2002200410261a20034200370308200341086a2105200441074b0d010b41004199d70010010b20052002410810041a2003290308101d200341106a24000b8c0405047f017e037f017e017f230041f0006b220221032002240002400240102522040d00410021050c010b024002402004418004490d002004102f21050c010b20022004410f6a4170716b220524000b2005200410261a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004199d70010010b200520046a2107200341d0006a2005412010041a200541206a2108200341306a2109410021044200210a0340200341d0006a20046a210b0240024020024102490d00200a4208862006200b31000084220642388884210a2002417f6a2102200642088621060c010b024020024101460d00410041f6d70010010b2009200a37030820092006200b3100008437030041102102200941106a2109420021064200210a0b200441016a22044120470d000b024020024110460d00024020024102490d0020032006200a200241037441786a1011200341086a290300210a200329030021060b200920063703002009200a3703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a2903003703002003200329033837031820032003290330370310200341d0006a41186a2007360200200341e4006a2008360200200320053602602003200137035820032000370350200341d0006a200341106a106f200341f0006a24000bc80303047f027e017f230041f0006b220221032002240002400240102522040d00410021050c010b024002402004418004490d002004102f21050c010b20022004410f6a4170716b220524000b2005200410261a0b42002106200341286a420037030041102102200341106a41106a4200370300200342003703182003420037031002402004411f4b0d0041004199d70010010b200341d0006a2005412010041a200341306a210541002104420021070340200341d0006a20046a21080240024020024102490d002007420886200620083100008422064238888421072002417f6a2102200642088621060c010b024020024101460d00410041f6d70010010b200520073703082005200620083100008437030041102102200541106a210542002106420021070b200441016a22044120470d000b024020024110460d00024020024102490d00200320062007200241037441786a1011200341086a2903002107200329030021060b20052006370300200520073703080b200341106a41186a200341306a41186a290300370300200341106a41106a200341306a41106a29030037030020032003290338370318200320032903303703102002200341106a1071200341f0006a24000b850203017f017e037f230041106b22022400200128020420012802006b41286dad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b02402001280200220520012802042201460d000340024020002005108b012204280208200428020422066b41074a0d00410041bbd4001001200428020421060b2006200541106a410810041a2004200428020441086a3602042004200541186a108c011a200541286a22052001470d000b0b200241106a240020000bfd0103027f017e027f230041106b22022400200128020420012d0000220341017620034101711bad21042000280204210303402004a721052002200442078822044200522206410774200541ff0071723a000f0240200028020820036b41004a0d00410041bbd4001001200028020421030b20032002410f6a410110041a2000200028020441016a220336020420060d000b0240200128020420012d00002205410176200541017122061b2205450d002001280208200141016a20061b21060240200028020820036b20054e0d00410041bbd4001001200028020421030b20032006200510041a2000200028020420056a3602040b200241106a240020000bd20103017f017e037f230041106b22022400200128020420012802006bad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b0240200028020820046b2001280204200128020022066b22054e0d00410041bbd4001001200028020421040b20042006200510041a2000200028020420056a360204200241106a240020000bd60103037f017e017f230041106b2202240020012802042203200128020022046b41386dad2105200028020021010340200141016a2101200542078822054200520d000b200020013602000240024020042003460d00034020042802302206ad21050340200141016a2101200542078822054200520d000b20002001360200200220003602002006417f460d0220022002360208200241086a2004200641027441e8d4006a2802001101002000200028020041026a2201360200200441386a22042003470d000b0b200241106a240020000f0b108e01000b05001000000bff0103017f017e037f230041106b22022400200128020420012802006b410575ad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b02402001280200220520012802042206460d0003400240200028020820046b41074a0d00410041bbd4001001200028020421040b20042005410810041a2000200028020441086a3602042000200541086a1090011a200541206a22052006460d01200028020421040c000b0b200241106a240020000bdf0103027f017e027f230041106b22022400200028020421032001350210210403402004a721052002200442078822044200522206410774200541ff0071723a000f0240200028020820036b41004a0d00410041bbd4001001200028020421030b20032002410f6a410110041a2000200028020441016a220336020420060d000b02402001280210417f460d00200141046a21050240200028020820036b41034a0d00410041bbd4001001200028020421030b20032001410410041a2000200028020441046a360204200020051094011a200241106a240020000f0b108e01000b170020002802002802002200200028020041216a3602000b170020002802002802002200200028020041216a3602000b7602017f017e20002802002802002202200228020041226a2200360200200141286a350200420020012d00244101711b21030340200041016a2100200342078822034200520d000b200220003602000240200128022820012d0024220141017620014101711b2201450d002002200120006a3602000b0b9a0303017f017e047f230041106b22022400200128020420012802006b41386dad21032000280204210403402003a721052002200342078822034200522206410774200541ff0071723a000f0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410f6a410110041a2000200028020441016a220436020420060d000b024002402001280200220720012802042201460d0003402007350230210303402003a721052002200342078822034200522206410774200541ff0071723a000e0240200028020820046b41004a0d00410041bbd4001001200028020421040b20042002410e6a410110041a2000200028020441016a220436020420060d000b2002200036020020072802302204417f460d0220022002360208200241086a2007200441027441f4d4006a280200110100200741346a210502402000280208200028020422046b41014a0d00410041bbd4001001200028020421040b20042005410210041a2000200028020441026a2204360204200741386a22072001470d000b0b200241106a240020000f0b108e01000b6401037f200028020028020022002802042102410021030340200120036a21040240200028020820026b41004a0d00410041bbd4001001200028020421020b20022004410110041a2000200028020441016a2202360204200341016a22034121470d000b0b6401037f200028020028020022002802042102410021030340200120036a21040240200028020820026b41004a0d00410041bbd4001001200028020421020b20022004410110041a2000200028020441016a2202360204200341016a22034121470d000b0bab0101037f200028020028020022002802042102410021030340200120036a21040240200028020820026b41004a0d00410041bbd4001001200028020421020b20022004410110041a2000200028020441016a2202360204200341016a22034121470d000b200141216a21030240200028020820026b41004a0d00410041bbd4001001200028020421020b20022003410110041a2000200028020441016a3602042000200141246a108b011a0b02000b02000b1a00024020012d0024410171450d002001412c6a28020010340b0baf0201047f230041206b220324000240024020020d00200341146a41003602002003420037020c200341086a410472210402402000280208200028020422026b41034b0d0041004199d7001001200028020421020b200341086a2002410410041a2000200028020441046a36020420002004109c011a02402001280210417f460d0020012802042205450d00200521020240200141086a28020022002005460d000340200041486a21020240200041786a22042802002206417f460d00200341186a200041486a200641027441c8d7006a2802001101000b2004417f3602002002210020052002470d000b200128020421020b20012005360208200210340b2001200329030837020020014100360210200141086a20032903103702000c010b410041e0d70010010b200341206a24000b890303027f017e047f230041106b220224002000280204210342002104410021050340024020032000280208490d00410041c3d7001001200028020421030b20032d000021062000200341016a22033602042004200641ff0071200541ff0171220574ad842104200541076a2105200321032006418001710d000b0240024020012802042205200128020022076b41386d22062004a722034f0d002001200320066b109d01200128020421050c010b200620034d0d0002402007200341386c6a22082005460d000340200541486a21030240200541786a22062802002207417f460d00200241086a200541486a200741027441c8d7006a2802001101000b2006417f3602002003210520082003470d000b0b20012008360204200821050b0240200128020022032005460d00034020002003109e011a02402000280208200028020422066b41014b0d0041004199d7001001200028020421060b200341346a2006410210041a2000200028020441026a360204200341386a22032005470d000b0b200241106a240020000ba105010c7f230041106b2202240002400240024020002802082203200028020422046b41386d2001490d000340200441306a2203420037020020044200370200200441286a4200370200200441186a4200370200200441106a4200370200200441086a4200370200200441206a4200370200200341003602002000200028020441386a22043602042001417f6a22010d000c020b0b2004200028020022056b41386d220620016a220741a592c9244f0d0141a492c924210402400240200320056b41386d22034191c9a4124b0d0020072003410174220420042007491b22040d0041002104410021030c010b200441386c103321030b2003200441386c6a21082003200641386c6a22092104034020044200370200200441286a4200370200200441186a4200370200200441106a4200370200200441086a4200370200200441206a4200370200200441306a4200370200200441386a21042001417f6a22010d000b024002402000280204220a20002802002205470d002000200836020820002004360204200020093602000c010b2005200a6b210b410021010340200920016a220341786a2206417f360200200341486a220741003a00000240200a20016a220541786a220c280200220d417f460d00200241086a2007200541486a200d41027441d4d7006a2802001102002006200c2802003602000b2003417c6a2005417c6a2f01003b0100200b200141486a2201470d000b200020083602082000280204210320002004360204200028020021052000200920016a36020020032005460d000340200341486a21040240200341786a22012802002200417f460d002002200341486a200041027441c8d7006a2802001101000b2001417f3602002004210320052004470d000b0b2005450d00200510340b200241106a24000f0b20001049000be00203027f017e037f230041306b220224002000280204210342002104410021050340024020032000280208490d00410041c3d7001001200028020421030b20032d000021062000200341016a22073602042004200641ff0071200541ff0171220374ad842104200341076a2105200721032006418001710d000b024002402004a722030d00410021030340200220036a2106024020002802082007470d0041004199d7001001200028020421070b20062007410110041a2000200028020441016a2207360204200341016a22034121470d000b024020012802302203417f460d00200241286a2001200341027441c8d7006a2802001101000b2001200229030037000020014100360230200141206a200241206a2d00003a0000200141186a200241186a290300370000200141106a200241106a290300370000200141086a200241086a2903003700000c010b20002001200310a2010b200241306a240020000b4c0020012002290000370000200141206a200241206a2d00003a0000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700000b4c0020012002290000370000200141206a200241206a2d00003a0000200141186a200241186a290000370000200141106a200241106a290000370000200141086a200241086a2900003700000b7801017f20012002290200370200200141206a200241206a2f01003b0100200141186a200241186a290200370200200141106a200241106a290200370200200141086a200241086a2902003702002001412c6a2002412c6a22032802003602002001200229022437022420024200370224200341003602000be80401037f230041c0006b22032400024002402002417f6a220241014b0d000240024020020e020001000b20002802042102410021040340200341086a20046a2105024020002802082002470d0041004199d7001001200028020421020b20052002410110041a2000200028020441016a2202360204200441016a22044121470d000b024020012802302200417f460d00200341386a2001200041027441c8d7006a2802001101000b2001200329030837000020014101360230200141206a200341086a41206a2d00003a0000200141186a200341086a41186a290300370000200141106a200341086a41106a290300370000200141086a200341086a41086a2903003700000c020b200341346a41003602002003420037022c20002802042102410021040340200341086a20046a2105024020002802082002470d0041004199d7001001200028020421020b20052002410110041a2000200028020441016a2202360204200441016a22044121470d000b200341296a2104024020002802082002470d0041004199d7001001200028020421020b20042002410110041a2000200028020441016a36020420002003412c6a220210a3011a024020012802302200417f460d00200341386a2001200041027441c8d7006a2802001101000b200120032903083702002001410236023020012002290200370224200141206a200341086a41206a2f01003b0100200141186a200341086a41186a290300370200200141106a200341086a41106a290300370200200141086a200341086a41086a2903003702002001412c6a200241086a2802003602000c010b410041e0d70010010b200341c0006a24000ba00301057f230041206b2202240020024100360218200242003703102000200241106a10791a0240024002402002280214200228021022036b2204450d00200241086a410036020020024200370300200441704f0d02024002402004410a4b0d00200220044101743a0000200241017221050c010b200441106a4170712206103321052002200436020420022006410172360200200220053602080b0340200520032d00003a0000200541016a2105200341016a21032004417f6a22040d000b200541003a00000240024020012d00004101710d00200141003b01000c010b200128020841003a00002001410036020420012d0000410171450d0020012802081034200141003602000b20012002290300370200200141086a200241086a2802003602000c010b0240024020012d00004101710d00200141003b01000c010b200128020841003a00002001410036020420012d0000410171450d0020012802081034200141003602000b20014100360208200142003702000b024020022802102205450d0020022005360214200510340b200241206a240020000f0b2002103c000bd80501097f0240024020002802082202200028020422036b41306d2001490d000340200341086a22024200370300200342003703002003420037021820034200370310200341286a4200370200200341206a4200370200200241003602002000200028020441306a22033602042001417f6a22010d000c020b0b0240024002402003200028020022046b41306d220520016a220641d6aad52a4f0d0041d5aad52a210302400240200220046b41306d220241a9d5aa154b0d0020062002410174220320032006491b22030d0041002103410021020c010b200341306c103321020b2002200341306c6a21072002200541306c6a22082103034020034200370300200341286a4200370200200341206a4200370200200341186a4200370200200341106a4200370300200341086a4200370300200341306a21032001417f6a22010d000b2000280204220920002802002201460d01200120096b210a410021020340200820026a220441506a2206200920026a220141506a2205290200370200200641086a200541086a280200360200200441606a200141606a290300370300200141586a410036020020054200370200200441686a220641086a200141686a220541086a28020036020020062005290200370200200141706a410036020020054200370200200441746a220541086a200141746a220441086a280200360200200520042902003702002001417c6a410036020020044200370200200a200241506a2202470d000b200820026a210820002802042101200028020021020c020b20001049000b200121020b200020073602082000200336020420002008360200024020012002460d0003400240200141746a2d0000410171450d002001417c6a28020010340b0240200141686a2d0000410171450d00200141706a28020010340b200141506a21030240200141506a2d0000410171450d00200141586a28020010340b2003210120022003470d000b0b2002450d00200210340b0b0bbc1606004190c0000b766661696c656420746f20616c6c6f6361746520706167657300756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f7200656e636f756e7465726564206e6f6e2d62617365363420636861726163746572005055425f424c535f000000000000000000418dc3000b9e0200000000000000000000000000000000000000303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900000000000000006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e64005349475f424c535f00000000000000000041abc5000ba605000000000000000000020000000300000005000000070000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d000000710000007f00000083000000890000008b00000095000000970000009d000000a3000000a7000000ad000000b3000000b5000000bf000000c1000000c5000000c7000000d3000000010000000b0000000d0000001100000013000000170000001d0000001f00000025000000290000002b0000002f000000350000003b0000003d0000004300000047000000490000004f00000053000000590000006100000065000000670000006b0000006d00000071000000790000007f00000083000000890000008b0000008f00000095000000970000009d000000a3000000a7000000a9000000ad000000b3000000b5000000bb000000bf000000c1000000c5000000c7000000d1000000404040404040404040404040404040404040404040404040404040404040404040404040404040404040403e403e403f3435363738393a3b3c3d40404040404040000102030405060708090a0b0c0d0e0f10111213141516171819404040403f401a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404077726f6e6720656e636f64656420737472696e672073697a6500000000000000000041d1ca000b810800000000000000000000000000000000000000000000000000000000000000000000000000000000000000424c535f5349475f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f4e554c5f0000000000000000000000000000000000424c535f504f505f424c53313233383147325f584d443a5348412d3235365f535357555f524f5f504f505f0000000000000000000000000000000000bbc622db0af03afbef1a7af93fe8556c58ac1b173f3a4ea105b974974f8c68c30faca94f8c63952694d79731a7d3f117cac239b9d6dc54ad1b75cb0eba386f4e3642accad5b95566c907b51def6a8167f2212ecfc8767daaa845d555681d4d11000000000000000000000000000000006e756d626572206f662066696e616c697a657273206578636565647320746865206d6178696d756d20616c6c6f7765640072657175697265206174206c65617374206f6e652066696e616c697a6572005055425f424c53005349475f424c530046696e616c697a6572206465736372697074696f6e2067726561746572207468616e206d617820616c6c6f7765642073697a65007075626c6963206b65792073686f75642073746172742077697468205055425f424c530070726f6f66206f6620706f7373657373696f6e207369676e61747572652073686f756c642073746172742077697468205349475f424c530073756d206f662077656967687473206361757365732075696e7436345f74206f766572666c6f77006475706c6963617465207075626c6963206b65790070726f6f66206f6620706f7373657373696f6e206661696c65640066696e616c697a657220706f6c696379207468726573686f6c64206d7573742062652067726561746572207468616e2068616c66206f66207468652073756d206f6620746865207765696768747300746865206f6e6572726f7220616374696f6e2063616e6e6f742062652063616c6c6564206469726563746c79006665617475726520646967657374206163746976617465643a20000a0070726f746f636f6c2066656174757265206973206e6f74206163746976617465640000982f8a4291443771cffbc0b5a5dbb5e95bc25639f111f159a4823f92d55e1cab98aa07d8015b8312be853124c37d0c55745dbe72feb1de80a706dc9b74f19bc1c1699be48647beefc69dc10fcca10c246f2ce92daa84744adca9b05cda88f97652513e986dc631a8c82703b0c77f59bff30be0c64791a7d55163ca0667292914850ab72738211b2efc6d2c4d130d385354730a65bb0a6a762ec9c281852c7292a1e8bfa24b661aa8708b4bc2a3516cc719e892d1240699d685350ef470a06a1016c1a419086c371e4c774827b5bcb034b30c1c394aaad84e4fca9c5bf36f2e68ee828f746f63a57814780041d2d2000bd005c8840802c78cfaffbe90eb6c50a4f7a3f9bef27871c6656e636f64656420626173653634206b657920697320746f6f2073686f72740062617365363420656e636f6465642074797065206d75737420626567696e2066726f6d20636f72726573706f6e64696e6720707265666978006465636f6465642073697a65200020646f65736e2774206d61746368207374727563747572652073697a652000202b20636865636b73756d2000636865636b73756d206f662073747275637475726520646f65736e2774206d61746368007075626c6963206b65792068617320612077726f6e672073697a65006461746173747265616d20617474656d7074656420746f20777269746520706173742074686520656e640000000700000008000000090000000a0000000b0000000c0000006f626a6563742070617373656420746f206974657261746f725f746f206973206e6f7420696e206d756c74695f696e646578006572726f722072656164696e67206974657261746f720063616e6e6f7420637265617465206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e7472616374006f626a6563742070617373656420746f206d6f64696679206973206e6f7420696e206d756c74695f696e6465780063616e6e6f74206d6f64696679206f626a6563747320696e207461626c65206f6620616e6f7468657220636f6e747261637400757064617465722063616e6e6f74206368616e6765207072696d617279206b6579207768656e206d6f64696679696e6720616e206f626a656374006461746173747265616d20617474656d7074656420746f207265616420706173742074686520656e640067657400000d0000000e0000000f000000100000001100000012000000696e76616c69642076617269616e7420696e64657800756e6578706563746564206572726f7220696e2066697865645f627974657320636f6e7374727563746f72000041000b04282c0000000000000000000000001f5db111b030c2b86ec1d0f7de9234cbb55e88518781e1cf20919489cd2457b804000000033b3d4b01000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b010000000000ea3055e42604000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG RAM_OP 0 eosio abi update setabi eosio 453263 361 DMLOG DB_OP UPD 0 eosio:eosio eosio eosio abihash eosio 0000000000ea3055d7abd75d188060de8a01ab2672d1cc2cd768fddc56203181b43685cc11f5ce46:0000000000ea3055d2303fb7b300acbce6134a774ccdbe88c2bea499aaca2a8a9d9664ba5f2c7f1c DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304003,"value_ex":160609,"consumed":17801},"cpu_usage":{"last_ordinal":1262304003,"value_ex":302684,"consumed":4101},"ram_usage":453263} -DMLOG APPLIED_TRANSACTION 4 82716fa2e8aba5088d0051632c9b2b79cee395da8b671197e476ca75bf1ceaaa04000000033b3d4b0100000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba0100d00700008c01000000000000000060040000000000000001010000010000000000ea3055c843ae0bfe7bfb9d664537bcb46ba4ffa14d4a4238f7c9b9e0183ffb6959b3441d000000000000001d00000000000000010000000000ea30551d0000000000000002020000000000ea30550000000000ea305500000000b863b2c2010000000000ea305500000000a8ed3232f3130000000000ea3055e9130e656f73696f3a3a6162692f312e320117626c6f636b5f7369676e696e675f617574686f726974792276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f76301c086162695f686173680002056f776e6572046e616d6504686173680b636865636b73756d32353608616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d1a626c6f636b5f7369676e696e675f617574686f726974795f76300002097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431360b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f69640b636865636b73756d3235360a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d651366696e616c697a65725f617574686f7269747900040b6465736372697074696f6e06737472696e67067765696768740675696e7436340a7075626c69635f6b657906737472696e6703706f7006737472696e671066696e616c697a65725f706f6c6963790002097468726573686f6c640675696e7436340a66696e616c697a6572731566696e616c697a65725f617574686f726974795b5d0a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f747278056279746573107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431361270726f64756365725f617574686f7269747900020d70726f64756365725f6e616d65046e616d6509617574686f7269747917626c6f636b5f7369676e696e675f617574686f726974790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730c73657466696e616c697a657200011066696e616c697a65725f706f6c6963791066696e616c697a65725f706f6c69637909736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380873657470726f64730001087363686564756c651470726f64756365725f617574686f726974795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f726974790b776169745f776569676874000208776169745f7365630675696e743332067765696768740675696e743136110000002a9bed32320861637469766174650000bc892a4585a6410b63616e63656c64656c6179000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400000000e0d27bd5a4076f6e6572726f7200905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f64650070d577d14cb7b2c20c73657466696e616c697a6572000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a757064617465617574680001000000a061d3dc31036936340000086162695f68617368000000012276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f7630011a626c6f636b5f7369676e696e675f617574686f726974795f7630000000000000000000000082716fa2e8aba5088d0051632c9b2b79cee395da8b671197e476ca75bf1ceaaa04000000033b3d4b0100000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba010000000000ea3055690100000000000000000000000000 +DMLOG APPLIED_TRANSACTION 4 8da953b51a2c5b2ecf7e2f1d4bc2c929f2d92e83090e48e78f46ee3143a8015c04000000033b3d4b01000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b0100d00700008c01000000000000000060040000000000000001010000010000000000ea3055c843ae0bfe7bfb9d664537bcb46ba4ffa14d4a4238f7c9b9e0183ffb6959b3441d000000000000001d00000000000000010000000000ea30551d0000000000000002020000000000ea30550000000000ea305500000000b863b2c2010000000000ea305500000000a8ed3232f3130000000000ea3055e9130e656f73696f3a3a6162692f312e320117626c6f636b5f7369676e696e675f617574686f726974792276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f76301c086162695f686173680002056f776e6572046e616d6504686173680b636865636b73756d32353608616374697661746500010e666561747572655f6469676573740b636865636b73756d32353609617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d1a626c6f636b5f7369676e696e675f617574686f726974795f76300002097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d15626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e7431360b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f69640b636865636b73756d3235360a64656c657465617574680002076163636f756e74046e616d650a7065726d697373696f6e046e616d651366696e616c697a65725f617574686f7269747900040b6465736372697074696f6e06737472696e67067765696768740675696e7436340a7075626c69635f6b657906737472696e6703706f7006737472696e671066696e616c697a65725f706f6c6963790002097468726573686f6c640675696e7436340a66696e616c697a6572731566696e616c697a65725f617574686f726974795b5d0a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740675696e743136086c696e6b617574680004076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650b726571756972656d656e74046e616d650a6e65776163636f756e7400040763726561746f72046e616d65046e616d65046e616d65056f776e657209617574686f726974790661637469766509617574686f72697479076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f747278056279746573107065726d697373696f6e5f6c6576656c0002056163746f72046e616d650a7065726d697373696f6e046e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740675696e7431361270726f64756365725f617574686f7269747900020d70726f64756365725f6e616d65046e616d6509617574686f7269747917626c6f636b5f7369676e696e675f617574686f726974790c72657161637469766174656400010e666561747572655f6469676573740b636865636b73756d323536077265716175746800010466726f6d046e616d65067365746162690002076163636f756e74046e616d65036162690562797465730a736574616c696d6974730004076163636f756e74046e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e74363407736574636f64650004076163636f756e74046e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f64650562797465730c73657466696e616c697a657200011066696e616c697a65725f706f6c6963791066696e616c697a65725f706f6c69637909736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727307736574707269760002076163636f756e74046e616d650769735f707269760575696e74380873657470726f64730001087363686564756c651470726f64756365725f617574686f726974795b5d0a756e6c696e6b617574680003076163636f756e74046e616d6504636f6465046e616d650474797065046e616d650a757064617465617574680004076163636f756e74046e616d650a7065726d697373696f6e046e616d6506706172656e74046e616d65046175746809617574686f726974790b776169745f776569676874000208776169745f7365630675696e743332067765696768740675696e743136110000002a9bed32320861637469766174650000bc892a4585a6410b63616e63656c64656c6179000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b617574680000409e9a2264b89a0a6e65776163636f756e7400000000e0d27bd5a4076f6e6572726f7200905436db6564acba0c72657161637469766174656400000000a0656dacba07726571617574680000000000b863b2c206736574616269000000ce4eba68b2c20a736574616c696d6974730000000040258ab2c207736574636f64650070d577d14cb7b2c20c73657466696e616c697a6572000000c0d25c53b3c209736574706172616d730000000060bb5bb3c207736574707269760000000038d15bb3c20873657470726f6473000040cbdac0e9e2d40a756e6c696e6b61757468000040cbdaa86c52d50a757064617465617574680001000000a061d3dc31036936340000086162695f68617368000000012276617269616e745f626c6f636b5f7369676e696e675f617574686f726974795f7630011a626c6f636b5f7369676e696e675f617574686f726974795f763000000000000000000000008da953b51a2c5b2ecf7e2f1d4bc2c929f2d92e83090e48e78f46ee3143a8015c04000000033b3d4b01000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b010000000000ea3055690100000000000000000000000000 DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":3,"value_ex":82933334,"consumed":9952},"average_block_cpu_usage":{"last_ordinal":3,"value_ex":401659723,"consumed":48101},"pending_net_usage":17800,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1050675,"virtual_cpu_limit":200400} DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":4,"value_ex":230575556,"consumed":17883},"average_block_cpu_usage":{"last_ordinal":4,"value_ex":432479225,"consumed":4499},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1051726,"virtual_cpu_limit":200600} -DMLOG ACCEPTED_BLOCK 4 04000000040000000300000000000000010000000000ea3055000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add80100030000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb2d5b1b639d6ae94fcdd0536b224644931573d1ccb2a0c548613cd1feea18888b0f87ad8b5169aafcab7e8eb69d0ceea2aaf352570f2271f3f0b32d56c69033f40300000000000000010000000000ea305504000000010000000000ea305503000000000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add801000000000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba033b3d4b0000000000ea305500000000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb21729c7835698f124c8be1f086f7e6001e73e9c3554da1bf5cab4c4b3860ae83b8bdd3e98936ab78d42df8f5b434eda1ee1a725329b68ccbc00d433e080116930000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc168cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7002052096236d23a2f907bea206d91251b18f98eff6c1bfb3acdc8a0d7a1578fca146b6bb6825b1aae9852dce7197c2919c833a423ac79339e1357c9d46cbec943de0000000029807708239aa7de914d3ed61e9009ab2280bfbc50f1d9769f27f8341ef261980000000000011709e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc160ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b72412652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b447670735c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c25443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b463320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a2974286bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4058cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1dfce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb40001033b3d4b0000000000ea305500000000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb21729c7835698f124c8be1f086f7e6001e73e9c3554da1bf5cab4c4b3860ae83b8bdd3e98936ab78d42df8f5b434eda1ee1a725329b68ccbc00d433e080116930000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc168cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7002052096236d23a2f907bea206d91251b18f98eff6c1bfb3acdc8a0d7a1578fca146b6bb6825b1aae9852dce7197c2919c833a423ac79339e1357c9d46cbec943de0200d0070000a5100101002007b4601e1e0103d3bf16298ebb6907bb9074ffcd1efb95d3342eb82dc86e056a2a15ea47d496b7f8fd88eab6146003c28b587e42f26248c351fcfc40ca1333060100fd810178daed7d0b7c5d5595f7d9e771ef4d4ed29cbe4353e0dc6b94145b48d2344d234a4f475a6881561e0e8e3a69682e6d6ed23c6e6ed2564b13a03015510b82bc7cf0d296d7c827f88d0a1f06544444ad50b03a8cf6fb869fd31971ac33fe6650d17eebbfd63ee79e9ba44d31eaf8cd67da73cf3efbecc75a6bafbdf6da6bafbd4ff27fbb7f6d19f957df7499417f0a3fc6bfd45f4cbfcbdf78ede79e8c47187b7fdad8f8f48fcc62d4a3f4d03eb01989d401e5af378cf5e6f0b0b1de1a0e7fd5f07a7b58ee89e1611d4a0e47417b07fdd1dd503b28e18e1d94cd09df99d1ef0e1d69ac4f203dc7ab1d5419d2731154db0e4ea828460d7389c84b2fa858868653a574d514918c42ea727579081ec0e652e5c1a44ce64872a195ed1972da2fedcd170c03e18a6cef40676f5bfbc04096a214a2129bb39b07b205c3c243921e36f70e65e509af36f46d9387545fbeb3a730d0d62dd9ca2fed1e68bbacaf6d736f876147111b1bdb36b7f79546b47774180e225c44f4b57752391b8d04c7745cda7659674f475b67739391448cb761309fcff614daf2d90dd9cea16cde4821ba52206e1bd8d4deb8a4d930397331ae416262a99634344a9ca7e3f29d7dd9cd1d0dcdf5129d889754d64614d9d45de85c6c94e1d92e169988975536a61097802462e5dbbab2db8c72c4f844c9b64bbb7b37746dd8d4ded943d8e6db37670bd93c10dfd095ed10e2f91b274be622d91c94d697efedeb1dc87620d031b881d21815dc9421a50a9d9bb342a55928b67d4381e8164bcd45cd08c91083b8928ba1261828f4e6b3dc06d3382a9fed1feca498f6c1c226a30a51d30009b5547b77e7fb50a68a22892b863abbb31b09660f91331199cf0ef40ee63764dbba3b377716068ce97873c2c4d8b465b71a3338675f3ecbc0b717b26d9765db0b83f9ac31931b41584f1e66750e846fdbc2e41dc62c696b7aeeed69eb682fb4b70d10a4c66c8ea6723bda62ef8424d3e37da16d436f47d698c31594c46fce0e0cb46fcc4a839713b14063908a3b4525450cf6750062c4cd2d76944d8496b2deb7cda89e35cb9d69cc9a497f96e5ba33ddf213e629cb55b665a99955335dd3ac99651a338bffe6cf9c699ee89aee494a99f48ffe66aa93e5cf55faa64e76e91f85e8cf70e959e1a23fd35554a24937db517d6ae64cc752864accb1865530326ab8c34670d781e8962c534e7b5f5ff736635159ad3202e5ceb8f0e2bf7cd7bbdf7bbdba417d54dda43ea66e56b7a85bd56dea53ea0e75a72a7fe271739b67788dde05de45de3bbd4bbcbff2dee3fed2327cc35bed2df40d5fbdc35ebe6264e497fbefdd79eb4bb70dfb263d23dacb3b14fde08b1fbae9f67b2f2ec60e84b1f77ff719a3185d40f4c8a1cffd74f4f90fc6ca18d4a9bff0a59f5f548c1da2d8573fb3ffb9bd773eff44ac8c2d5cc6c8feafdef5fd15c5d8ad123bf29fb7c463df2fb17ffbab1ffecb3db1fab64bf4fffccf17e3892f47ec17fee39e9b6f8bc7eee0b4a31ffd5549da6167c5e1fb7ef4c16ffdf383f1d8ab1427fed8b77eb23f1e7db5448ffce081db5ffc520c8cbf91f87d9f7bf8d15b1b8bd1bb287af7bddffffe3f5c776b49f20f28c73704cbd12fddf2827181bd3ce0e7ef3ffff04faffc99e19de28efb7362e9c3362ca107957045690981e12d751f51ca1af68db43297e39f6f0456ff599506428b0ca392f8c237baaa5c8a57b9b4b296fb8a13285fd1ebb4498f2a97b1d2ca37cfaa342b889529667b98d2ce65549d6964cc6078c0378323bff9f5965c7f3072c5953bb7a212976aa158d54fd528ae06b91619aaa4dc4aa3c2a462ad603897b6e84e09dd3c010d102b8dc0a8224402a3cebc0ec07b4319ca6736d393c4ee5c9ea11cb9a02a17f4f5678c668ae05abd826fac41760aab1cd273956905a0d47223185e85b7c1ee51c35354ab7bad923a09d0ee8c1a53b142c526015c52316115566ceb8a2d546c4bc556583120489b4c8db1151791f4914579e63c9fe866b8cd4a0dbf81f0edca507cb359412fa9d20aa27611d591e58845cd8171a681aadcc5ca1c465bfa460d9a1cf4f64ecf18952a30d20cf6489031d1bce674c3e0e634dc048443835b66206333d5cd210321fa7f27e812ec7cc2f09698cb991c41c622906f7cc2485b01dfa9e6c00577e1f5ee206307fe2ab058b09330f7ea39f970daa16626286ca20b9742e58348c81c7075bb03bc7728d266caed0e8819ecc02c10dd839d2ae70338ca6de77c068e816af61df71c4048d080c0ccdb967077c6662ece38abc0cfdcfac2e7608a616223cd7ab6ef7431ebb9bf2401cd8c171c79e27ba7af11bef5de82d6a1b89127bf777a0f313beedd5da84f927ef4272f5992d60cea73ad06d591362a941b9869895485e08eaf10939a9e3dcf4591b90c10d9fd6da327a3822347acfee0650325c71352c9668eb3bf6c7477e1d56f9130fe9e28611162544e7757bc206b6c410914641dbda054cefd8125a8abe023df46cfe1e03f46a1b2352c2b9420c86464aaa8f13057414600960c40efe17651c13f25a5042b5602e3d637b6044b4ab626a486752c6a70cda0aa6e1b157c79e75b430c3ef5a1440904d4482658d2246934b6b60a1113c19107fe8f1d668a35530c03eba8ed135854be121a8dee7c6bcf04e858e3d00f6c121494c5048728e19149da7672b2b88ee11986fba80c052b8ca5a6c16d4e98a023992c94099b7e69e20526a7808c4ee548e0a0d7918042b23ad3a64c7d6bc1ec75664ac8ccf2d63da712bdca1369e82d4657f3494edb3e77e73c17821e9c129a80d74322cae8a2d033889cba8f98b9c0e004552e80ff9a527609f011e80493eee6811af2e9a73f93a8c938be0988e8d645618b02d6393544bc22ec490dbb25b05b1af614c1eef82c98007b2a82dd8960b7e2b053c10cbbe32759c6f8891a1f4dcb68d0cb52345e955126e8f1551743283244c87f56250bf9545aea41e92937e84d97312ffef8c89123e843819b2ee36e9729471b512bd2ad9c902b6d847499eb97112e2665b651b2e9a77c1b5051444222487e24fd848e231a75d1586a776592d15b921b29dc1d4aa893a9a07c25bd4e794daeb4700a14a194180341b1324d3114c0b80be6cf6acc7b8f897932c23c09cc5363314f09e66545cccbc6639e72fd5429e6c9087360091cad388e498da3558a63b20447cd0982cd015325455a82a1225420c24364f0b0a39fb51a3cda691bb85182a1b41d94d378433f0e402466a76b4d0df5724643091ac8e9001a62a295ba0e272887f6a050248894d054a3d18f7986b83f47982724172417b5346b1e63a143262a862e64c44d931d03a9ab3b7594da4e2b01feb7aa1f0868f1c84da0007382686886243e4bd38ec2292ec04f0809358700ca9098221ed09d5ca1ecd3c22721c816fab31d925413d411982cc064011e0bb414a8096fe12f96291c6547383b117b39d2392168202649eee4c030635892255889c042b6986802369c196c6541b501677a6742affa368b2ce59d162bf8ff657cf694b60cd803aa9db0b449104bc945b46c41cb7445d282a57c7b15c3416d4e4c6f43f1f362202a1a907dab32029006b748d01a11dc396623e06f84632510c088a380d2c74c227c11501b803a1127339436774357ba1f1197a0e74e33a66112d206099218347e609408dbc089da2011b5414297a7256802228a1b85c606cf9a47d853d84469745b43c304687f5e0d467ca4c57b24230d996837beedeca8edc21ec345c5db2ec199fd4417c080764ddc80b693ae358d8760aac6f44ef3ce729f5425642ae14c5b588b99510b21c5325b6bd8255c3886020e28408d8bd626ce25f1dc25e53241148fed248f0953d40bc51ba3b4e656eb58ac9a08593542e9ebc041e64966ad28db4ece6b65f9a87504ad34b0ecc75b02a628b44912af091932a68f088b8842e06865a628bc62ca8c4c713174ace49ee0109f5a3c8924d4509e9e7688bcce18c4fd3c85e67718af6a3522a2a295634a642cb50ebddd3d5f2680070dd2fe1833151c307290a38a4708401386649a72ee3c7ed41a113171973787620e1a54897b574acf6cea2089598feb0a92ab792a7af8ab34150dfbaae87dac3a7214eb895c19855897e72228b735716e9aa0c572db51ee8a29e5f6a6947bd69472574f29f7fc29e5f6a794bb764ab9eba6947be19472d74f2977d39472b74c29f71953ca3d6a94665747cb6ec6b29b51f62729bb9a3cbb1a939d459bfb2b65a9617307cb9d7a529145a0f2ccc8f35618a4b67a6918924c0a3b161bbb72d033127ab22d33ae15a96b48ee271a0c6367c65ed1b26b27a9370a83298df8f48ec75fd11e57326cf78a058e722eb5584994bc4b2d03d5c1e6473215b5a35656a031718585498af156ea093e576fc19a03236621d89af3a6138ca9dc02cbc0340d379b87cfa596a1eb73d91a507b6cdc67fd89e13eebf78cfba7a3415478e731aa63ee100cb7c115c330becd59ad874bd207cf26c0693e46bae1100df2260dd626469fbf308c91f7dfd0625640a983796d35a6c1c1c8c8c876df1aec1753482c5d8a074ee37c2a0d86ecad9c00c1d72c2828a8e248b29f7523f371d6f3dc17a7a984d65782e715e683f5d4240f7d8d1ac55ace4cad860858d80bd1a3a07ed461a03e2763d7c0e20c13f3002c36760d0cbc5430bde67ab9c8ed6bc51a1e3ca77a320efd7667125d69a9e4f053bf7b25c8dc159883ac1818941311b0abd0cc93d4e659e8ee5cb4055cf0224300b05a2a2a94ea5e59a9d8ee49153fa6d0f8843f9be0a9c21e9ab3eba4964e0a28cb29314ab1c252ace8550581de934940865022794f8a63f4de8bdedb13be9f3149fe3993e49f1fbd4f4cf8fea449caaf9d247fdd24f59f3a49f9a74d92bf6992fa5b27797fc624f5930c3f76014f199340f8b4314915df9eac8ae726abe2c064251c2c26484d98e0e5c9aaf8f16458fccb6425bc32590987272be1d5c9b0f8ed6474b8524d52c52e354909d7aa49b0f8f06455dc3859151f9bac8a8f4f56c25d9325f8cc6440ee9d0c8607262be17393c1f0c864557c69b2121e9f0c86d1c9aaf8ea64253c355909fb8a0948cab3ec270580ade89c8ee798814c6561220dea5766cc9a341bc37332b2d1949dd260c6e99beedf25695ca5e1df67b527b2d5b0b1dfaed46b81293d8d96d1124600aabe5acfb02d7a65793ecfab4d9e7aead9bc2d16cdd2a9b485a9f42c5862792aed61dc6a36ab59a5125b82a5a7e39e58e5551eb9f82daf0cb0311756536dfbb0ea287702d8267d6b91e16578110003305ecdf27961801eedd024066b84a5573dca571617076dac0adab22ac84bc1e6ca4a99c243d559894cc82d8b0d6c2256be539ce543b3b639319a804181d6a6b4058cd726987004af862d27e6a804bd13d36a0e25d97e32cdd617e898b09753ed5dde2a98f5182146129a082aeecfa89a66d2bb2ca143d2c7630a8f0bac94687ba4b679efe05c6265e3945e9358780ca6bdb420d7481382a1c0eaf6026949588465b95fd1bbb595989d24d9fa4e11a0e04334dc0849460d59db7e215cdb36e3ef1363de4b6d09d288087b9baaeccf07d585a07ad07bbbe8b45c1ddb9c288c1252c105392aa68a0ddbd33c71228cfe1457999abcbea1a0aa1f5516a2faa034c76ab3343e170049aecd9ca8362a2b51e06506e7a844904ad9c6aaeb72b5e3846f9f53c9f64b6a272f5cd512860f97dd90db6713914c44ce30e092f0d0335430faeec3a141363016190756f3025ec0ddf4d9d5b2a4be7f75f01f04c66919035db3e803c2bdd2d0bd5261ad443c09f6ad0e9899a95ba208d8e0f6af8662ced2847a24c57eeb19f88518bce865a278dfe0b52e136e18062fac52e523546dcbbc803d0a0eac76abdce059029b1038c110789f5d2dbd01ce00fb577b4d6e293a87e2e8bca4d179797570fbd75e073a078be8bca4d179b9041d8afd871274a8f871e89863d039c4e8bc548ace4b31745e1e8fceab71745ed1e8fc6275f0da33af039dc345745ed1e8fca2041d8afd69093a54fc3874ac31e8bccae8bc528ace2b31747e311e9d47d6c4d0d9bb46d079684df0856fbe0e741e5813a1832280ce436be2e850ecbddf8ca343c58f43c71e83ce236b80cede6f96a0b3774d119d87d6009d8f001d6d5f356a75b2c36bf42278f08b6fe2956763ce0f1c5fd638be823bbd580c83cbcb1aea437c87c68b045afbc5623ed7476ff90ddd9d31b01e5e03bbb918684f526a583c685e5e93510c2b86c5436b7c057887d87c0b200f9eab691f8cda04077af9b942d0037ca768aaeda573b5d86627a5c8144da3c6a88c4e0400c8c786ec1ce74d8c81eee0b96e0caafde7c6a03a70ae40f58f73d5e9a0e288d59549d48a29021602ba9d4ca37170e44c084f2738023b949f0c9ca1748aa4e6ab660ee30d09f1e0703178a8183c580c1e2806f74541dc9e36e53e0aad8746e12f135ba5cb281921fb38e208bfffc5f7203594296f351ea38760179571ffc31f79edfabb1f3efcf7badc118a3b72cf17777dedfa1f5c79fbb0c4bdaa722bfeedc78ffee3dd7b7eb3e7d312b7e29f9eddb3efc57d3f79f8517a3eaca4f6430a3512b188ba69f82f252dac17257995ea205ede41c36632e79711b5b1945447b144191e25e4add7866c61319439b1808a5d31626f47f118d35c4abe92938fd2a0e862a0214c5da80a2e759870d1f528359bb214f13b55ae7dd7d83b0f8b7dae3b6115e5bf73f91395a67e9fa505c7c2fd6825a116375ce5b3d3aeefa4cb8e425d772ad49526f4cb40ddb2a352d789957f7cf0bb3ac17abca8330f03aceaa15663b72911bf501997236ed411afaa4c3947dca2235e53990a8ef8b88e183133951c71878ed86966a671c43d3a629749da52f550a68a24b78ebacecc589ce60144900e43c107113439782f82d3e05be9b51a9fc643251ea6b71a77e2a1020f335a8d4fe0a11c0f335b8d5bf1e0e26156ab7193c904a307ea5ed74b1d292af86fa50e04ef933a4804cc6e353e2375d0c39c56e32ea9831ee6b61a9f943ae8a1bad5b84deaa087135a8d8f491df430afd5b881eb68353ecb15b41af773e9adc61e2eabd5f81417d36adcce25b41a3773e656e3a35c71ab713764d0611abb7c2d94e5a9ba280fe9c98b8bb9ad72eb13570a494013222a671189bc740d31d87cba4ea4eb24ba4ea6cba72b4d5786ae37d0554bd71be97a135da7d05547d702ba4ea5ebcd742da46b115da7d1753a5df57435d0d548d762ba9ae029c2ecdfe027075a8d010a35faf32894a7d062bf8c42fd146a024cbbcd0134461f3d2ff25d7ab38542a7f92750688842a7fbb3283448a17aa4bed1a4a7023d2df0cb29f47e0a9dea5753e87d147ab33f9342db28b410696f415a2287ff46bf8242c3147a933f97423b28748a3f83429753a80e693f8eb4dbe929ed5752e82af4908c3f87825722f8067f3a05af4070be5f45c15d089ee84fa3e0df2078923f9b82d72078b2ef51f06a046b51f41d287a048f3e1eefc1e34eee818b8c0f28fcde8ba80fe8a86b39ea3e445daba33ec851f7230a41f0d36efdea3a7ef5005e5da7a33ec4510f22ea433aeac31cf5b788fab08efa08477d165108968c719be8393ebe91542819db2e1933b6ad13963bbb28bb480348bb3101c8a1f898b6bc28f7e2326fb908a6b3452e9d2d6399cf4be5130f634711b8babe12597b9c551e43c6ea526b8a45160b3c4a618950a4aed312b54f1e2fd2f2b4208f9764caf871ab3cbe470bd7edf2b85e8b5666227aeed09275a77edea405eb2efddc9da9e267e6882a969ccc09d338c88c56c94166d20a0e326f9773109da28c43dbb4e8940e98e4503f970949f961a525a5e6d44a0e5ea3b494d45da79c833bb84c84dea745a574ef24872016aa8411211c99c92b75cf2a979e5b269ddd15f99014a152c13dd50a9c422609057f7d4e049eaffc641711fce4413fd94fa2533c9c52b22ca2e06047bcbf4ba5e7e3bed74c57e1fe372a7d22ee7bccf434dcaf51e99370ff8c999e8dfbd52a7d32ee9f36d31eee3b559a3bf4552a9dc6fd6e335d89fb952a9dc1fd2e333d07f72b54fa0db8df69a6a7e33ea2d22c1786d36fc4ed5366ba02f71de937e1f649333d17f7cbd3a7e0f609333d03f7ed691653ef4f2fc0ed76335d8efbfbd2a7e2769b99aec67d5bfacdb8dd6aa667e2be35cd62704b7a116e379bc4d4741f4a9f86dbc7ccf409b80fa64fc7ed26333d0bf7429ac5ec40ba01b78f9ae8258b8c7cba11b71bccf43cdcfbd38b71bbde84fabcc8e84b37f1ce00528c2dcc4cf6daaa9a957c935d51b0080a274176732175947da3616fcbd5b1175175018370211819792dd99fe7013918f9add50f7be1509e7d67b0729686370ed6bda5cf4175d6a6435b974c658d52db63c3402d0c22308eb4f0fa981d546e81ebced000fd566dc17a1b15853756306d0b3d58f4c60a4ea0376c9e4cdb515d4ad765d304e825596d73e04689b5023c24d911f2903c9451b31858a8c0834bedca93353c54124f195804c14315319011ec9787e9d4c006e4c3ccf42c42c4cbccf66764e6e4fd5919b3df9fedcf219298c1495be867e6166c9a2907f87670689fac09c2aac9b89667e6fad332584decf72b32d5bed59f079af380deec2d402f899ca95c665a8eda7a1a5613a7f9b30997b9844235416e11c0730834b01cbb18d8d48432f7f393fe5c224d37dc75fd6a0a6da290eb5b14eaa050a53f8d42ebd919703685de43a12a7f0e852ea1d0741f0e03175168a63f8b42eb6886455328e29443caa459ea0ef12b58ce3b758211adcdab0733d60ab57d45cb8a514c0f5bcea9c9d87f25de83ec20b562f86adfde2e6c1594b84ead18de4e598d0b20bbc5b5818aa602305127418d99700bef9ba117695e4d374864f33af88394f30ce34cf028896fdc56a4769d61bc8d431e85decaa16a0a9dc1219f426fe1501d855a39544fa1651c6aa1500b2a75bf08772aea137724c457c00aeeb0734405761e64af0a763217a3297ba71b629316ef2c432cd2de5f0767b2697b5489df982ec867c36ad1f3917d0808e761b12b0707ad1cf504c947810516ab8b125f1fc6d797c6d785f175a5f17e18ef97c65787f1d5a5f15e18ef95c6a7c2f854140fcbe6a85a6a1db4749a51241e01905e625e70c4783db89ff9df0677744410403f1f3474e651e52511f92327c7ae26200af6b631ff4887180eb730113b89d88c5364226a4c448989a830110526c27e22cc4bb1368ed6e014fc54e2bf136a1335a334a13427077c0c3a5e0ab1772420246f762c35ac76b0c7cd6123141f7e7c290deb31c3bc1e035146e31dbc832cf6dd91f52bdfe6ed9fb7bdf2c8bf36f8ca2b8703f4d995e2e36a781b322480ead9251526bd17641d0296ca7abc67d2791db292677bee3b38d9339c8cd0824d5156830cb8523832173508c24c220c57e732491dc646997a18118572d43270abc9a470b3fd5497771e3cca29be48f3843c47f44e82b62dbab40556bd60ce69ea786c92078c485c8121fea93a492a8f41cbc2c8cc56662f3b4fca49c569a409a94bf5e6679c66b3894989e5978bb02ab7620791556da79fcbdf594330f05e54ae346a05d08f322e1467a83a737ec6c4cd5fcb331a078b99a62fad157056d39756252ec0303b5f96dc98050f1ac2c4f4b330e75de6a2a0f56923cc69b017b4eca2e005432774bce67a6968c64cc561b778762cda9443b3b3b93cdc1bc5cbb42676b138beee525412bca9188df95c3e5578982dd03b135659e80207b3b80915ad566f6e010418b7e68bcab4526fb37482ada2b64017b7e991a00060e1beca956cfedd8434bcb45b5c5d66d7ff051927181617c587c17fb287e50afb1cde51e59dce9b5478670b515736bed23c8075d0149682939468c13c61da8430ade6d104084fba6fccb4e247a13a09f1c21d6f2c32825bbfc7bd84673060ae24bc9d6d53300c4e2e4904fe674bb397839a255a6ae053b615344d0e3c38dcc171176a323cf72ad85f9053e5d2957a29983df62ae030e8fa95ec30e8b2c36005bde32d212e1c065de9a54ee830f81f0281e95780c9cc30af380c3aec51ce2e8a2eaa75f56a74e42ce9840e83ba7ac8372a0255167d06b95b1218e841691775b9a09a54e9fae578e123a69c45e402ab4e1eaa45d616bb79b988553fd6d313583c68c276b166d3c70dfd8a8a5f2e3e00f3435ea3eec91287d8662defe253e85a0e20d15dcba7a784de9857ec5a655c9f26b645cc4afd2adc8594f41a98ff7d6e1e2902f18ef4015e85f113ee2da665927856a14704362cd7ea8d8624e7a4197ef3822c70938c806810097aff8bdc364a5c2e6d9183fc931061988030847f1ab54b4425b878b38344f44c84b4f5d2bd4288d99a3de04dd95d11d5f8c317f512f3ba1c0f23368f8058fdb721960dde1dccec6c735bc3cd97e08284246c9a568003eabc53b954438b4183c4a00331e84462d0e64568f739abe822ebcb7e0b93c14523929a3d576f196559c99a345c396dd6a44d0e419366ff0dd6a4915d34ee9908ed215900e3c11ceeeb304dcce6102c1fb3908912b41a498e43ba4494ce89d2c1554649fd2dd7a0ea6be4d88491d123c6553b29a25a471c3cf32af6c8e5a7c3275fb5132f53bbf0f86a155e5523fc5a9233d551f8b7d6550cf6ce9d3ba5e75135de1fb89a6a261088369d4320e40c0e817c5ec96e0ed5159c2c82f4d1fd91af37bbdc9a2c99425f6f9f99c0e416f50df7364b39c3e14a6d9d6cab22ea7505d59be145036f8bfb5fb8ef05f4c2e03e0464dbac542cc9ec60ff7d2f9cca2e19ecb693496253294def920087dd47d8c7251954777b8be185ccb37caccbf1d88851a3ba3b93ca894b8c819e4e5033df63b34b4212217b8edda9abf5be473b23d3ad4c52069f548e061a718bc53004bfdc343c890cd920c31d02fc49affb68661af53738d914773a2b2ec4b7d3bc6b94074dae529334c9551246d8a6ed9d436f93e258edc816c784ec125232005309ec3544d0134449e4a4412bdaba0cf1837554a0b74a4f6f79a7948dc5d52f56276c9244152c8dcccb6181a9906e0799e39dc8a368058fc7b2a539637505f59b832b46e059429cf0f2b3e004d9a88d5b459a4701eaf5e2a172d3b7c6bf87bfb2a975519317384ddda748f78533d94113aa3174019fabf33651e43e8e8ce5da670a53058f7c2bf2083026f608805398258ad27e937b323c02f621484d76c094d15f3c0210cb95a93cb678b15b80853ab45b8015ba0550b2a74bd018258082c75e0f305f2d0233aa8179ba0418c46241b61498c72604861ddb9bcd2f606c4e08440f9972df6beac6e3260033435b1c4de678669c42b81cd30ba81c66b097294d6a4754359aec55095614a953598c9d863ad973cd2a6e27b4200cae308551befa2dd12a9083d5d34c153c1aeab8411611d5336cb040de1abfca7bdb3cd9cc5967bec6ef5f95f7198f53649c9accf48933678c1a28adf4ee80e957e28c125646286a1af5ece96755c2c7de5984b93ffdacaa34431b80233bed3d98023cd22e2dd24ba6f3312675e688e54ff39d1a18a6bc65680442e8d56f151dd05e0df731735af4b610cfda5c6686e0f9550675b404cf19c78be7f8cc453c9f868a16c3b3624a78568cc5f3e3df3e069e68700c523349271ebefa126ee9fdc8c0d1e999e29458151aa7c4a593f5fbb4cc48110a77180f515c95de684c7d4bc1a7cdf03a79afc6d3584c194d6aba0aefb28b26414250ddf4fcd77fe874531dd5449d01fd18ec7ff693bf4a0c506c652c961eabf098f6c20dc375e6036671eae374066a4da68a20f5584dee4f4f077c5e7a3a22ce91f8bef474dedb411d6b3a366ab08094338faa783a42ea354cb3867e61eab12f53e5433df6abfc59fdfef45595962b2e798c203c7a96498bc4b2aad2aca841c0a80218552edda920735c41fa2ca5e010cfb64bdef1991db26fd5f778ac3e95c4467a36307a04c6d287d3738a3b9067fbcec337fa73de1ba8814ad9ff0f674aeb1c6a1da64f60accae7d3559c618e3ffb266f6d6636b6e0ac7daf8fbb61ace7769f7d2f139286eae9381005c7124c27d8097a1ac7ab78f2c1b855a14ca0277c51e5ad2b6e5397a6aa3a8f6dba7bb183dccbf17cceaf820e5f4550a567858dfa88f9b020763c1071a6592803cd4ff7e998bea88054670a0ee7367615840fa6133cd4f6d3813d83aeeb8ee0718b2cc5f4c9543136be278c446f897f90c3d38c25dc5464c690a73255e0004f362ad7990f9972e205bce04c2aafbcd9d4674078d81fe54173f0349d8af57a7e557fdad3f544cceb85cceba122796fa008f108f5e4f023743ccd10cd74635205af697140f5cc28edd67551b75e38ae5bcf88ba754a7a75971e730c58aecc79ba47c3cb4b3fe11dfba9690737dfe8e2ee8e745c0c32524459095bc343aed97c2c5994195fe0f002eb0b499e61c26bcf4f79edba0ab19d51cd235660eae16cd4f6cae6b18f2e9ec42d8d8138702e8058c61e6ac1f5df615b16fbe919636060d1efbd751e0fe3d8a4428adb2d96586f6ed443ff6edcd92dd7da65854dff8a99e1b63e6cca463182fb5553fc76e78b992cf4e115e04849f2c2d373c4c99afbc88d96f46d0aeeb6108b792e9e6ee1175ed8f7a9f85d16667eac24bc0a02180261a021c49d2167e078e2f70a2b28b640e0754b252cfc04b11badd0a434e1c04823c5f6b458e7481d8126c20b81ac6ac09d52d40b0e2556a85db2dd1fbaa19f782713fe81ef84e311b185a617d1cd0a5de7b5fd882d28d8a04e0d2013ea4fedd7464ab639ea6df2e178422aa7b7590613299286636aec93a41e444608e28d4610bd92df68799d66dc7d0bbd408a472fe3b3c028e35e1e056236371ed28b047ada8ca2f7c5a20f98516d8762e354c82e25363ac6bf4f9629b9a2a090d3d3743e6826b8446ffda540ecdc87603db2b09182f77058abf4dec54326ebeb60dc57046d289a1598aa7fd5526e7cb7bf81ddfe759b7d55547c55f04fcfdeba786d78dc032c0575dd70cfc5d6c31c1b302c9f73d11cb08ea65e4919e974796cf0537eaa2b5da6178393be85f5be4b7299723f85b042d8d5a749b1b1c82d4eb34c423e532e9d86e76315c2f8e50447214c5481f37528599467538ee7677aea66065bf1bc35c7561699bcadd74abf2b4547357024cc43049350d0f6192f1cb661eae9b2e6139adbf1d6982456a4713e4534bb4bcaecced4f3373f626ca51b962daec0c09711018d023ab0e9469534ac2a36acc9bb624ce17ae60d7084fbdd32d31e3677bc017258efcd81a8dbb79ae6dcec41cf475e651272e815a9865a9d3ff41c75a6588ab4a4c0d17ac82de79e2871bc873b3fb44a1b4eb435a100ddf57cb86620596285715134b276c91e1ee53b39d9c323f212e6b987942c9dc8ae1376e0a0e9c6230af38f8754bc14e59d8de513a5575be0db66044f50e52b610c2ab6ab6e3fcb77c04ed608d52a0d6b05bbc3cc28e53b94f52f8e9975772c2b497f0c0b00e18eb094dd8a81dda45fab3c805e2f3b8acc1abcea90fd44668db7e29835dd11aba945978e6afe7552185b8a19f71950a5cf0eb785705100e212fd4ee05b1787efa2e384cfd3b5302fbc2c7258b610e94d57b1bd54aa26b6934ad57875aecc26bdd88e263de320688a919744912dc5c8e551e41daa18bb5745d1eb8bb19ba2c8ddb1b4b714d38ec4a27715a3fb8ab15b3952a289fb62e9bfa0703c0f38531ff9c2ac4b98671cdee71d9e161a6c876dcae992decdfbe83c6b9ededac3db01ce17feafce24b507018d9eda830021f12040483c082c21b1584e539c650d1c9a38cb6a0e21cb391c4296b39199ed9f67f2be39d83fdfc621d83fdfca21d83fcfd0fd90e068b90620941a26932586c964a9613219334c266386c96464984c8686c9e522fcc0d67628327efdbc1efa99cc71228b7d7d546160bacfe173d3c23148e42060b0d7f2363cb380fd21d1781d4ada48268a69cdc690837d757a68e753f6c2c341d9b1484ef7e4d3a8526836390f08aff80828a9bd13cc8df984cdebcffdfa682839d18c6e7d6cd9ab638725331cab4d3d7ef3f6c535d8eec8074559cbc3b53992a4248ce5a02b4b1f2f10da4c31fb340b99a49c9bcb48a599050d6cae30e5097d36c5964a997472b41c9f608a3b138df96c8184158197e37401341e17f39d254a0ea7403647004862d009f5d228827173357234cdb55d376a84d05c196b0444d97a98b442bc337246145628fa8ad3c2123ac468902024e901470996a2857ec83350264b2a2212c892f453115938ba840229502096e42814488ca54062020ab8471d7e0feae1f7a54987df9726187e0fc687df9779fbd964c3efc1d5b1c2fe9b0dbfa3eacfc32f6f0afff3f0fbbb0ebfc4427f1e7e8f73f8fdb16d41a425c62ff9c94ccf127f013d330c7e4c7788e2d8815294c80c3ef7e3674f90711347f3c196e6dbb0b6f1829f13c8a13a44933a2cf899ae3ef36501affad9d2b770ca304d29957e825b8a2d2b82bcea8999190d82c9a57acd2e83c1205d260bf71832148b3b0fc7d3220b64be5fc6afa82e3f2107183b3c71a5e9288e327365fe5a51327fade84a570672b64f4a4e47b8046b5b1508f3fcd5d2f3573bf4070bc712cc5f352e0e26a965e16a666cfe5a26f3573bca533a7f75a2f9ab336efe6a49d1510d1c89451d82499c78016f3a553273358bab924ace912e9779abab0f330ee7ade6d879ab13cd5b1d86349ab73ac79ab73a7ce684132e5d46ee46eecba6e5843e6efa68c6925324025e7164179b680dd39165b00478ec41de46a97dfb932b92bbe06e76013bb1f09e0c475655136c9078708501b775839a806465790db1151a8a37ace8cd1ff12290ab3a435d1b27150ff9e5355d7e42bb359575114189c9baa4fe1434bb54696617260f8b7d8830f26b6f72624b626d57b6244812ded9efbd2fb4ae70fb24a08df00ab129cbdabcaa9862b7bd44741ce3a3fbb52b92f6ddc09631f1ddc0c917d7aa79fae048f779d3b2435715a17210296c21a5c361474ef3e0a577521e0267f041e8acd1f609a098d0283250a199c80957b04ded418261114739b2db0dafbe1fb32412dec8930c865756ea5554e9991539ef436a9e9cc185c2fc9c569ab5e2a9cfc44dca570320547036b4f761a599c082f3575726799e1ccfee27bb84d8dab64d116bf56801af765b1bca6cb9b1b5908a079d70beed478a44fdac652ad1fafcf862fbefd9d5c5885c5d8cc8d5c588bbba18e2ea6244ae2e46e4ea62fcffe7ea42522513ecdd67786fa0c6ea0bbec2217162713f5eea962487a51abaad4cb495e2c91f379d6e2ba5abe003db745b295d191ffca7db8a427b683c94b6c2f930d25608495b2934a68db6429cb45598ce89d2d9a1ffa905225a6389689510d12a25a21523a21523a21511d12ab61557e3fd81aba96602495b21246d8590b4950a7cefcdecd746adb3e7cf4e637f6a4e63a657cbe3ccd7f669af0f6ea82fc64e522e3afed26ce18d7c0814fba5a77893160fae8eb66b1087b3bb118d4ca7a7b57b8c1d7aea5221fcecbd699e2e4067a624c935e2c2a07d6ae1bb2a5edd2bb46d3f2546733bd8da1fa456c5fd6fad28ad88ecb7f3511e005bc08d4ea83e3ed05c3878feb990090af986293c515fc213c2118111d9b65e47a130f5d4ca0dfebff800031660ebf4be072e2bee918d294c9d98c86aa1d1b2ef7cd8facc243888a5561c10561d2bdf5ce453613e758c7c3ac39c311918f080dd13235ef6654ee06d9b27f6aa94cc5119bf0a59fdd167ac1e517ad7873e857785288db625c7e2637a25d6a3af7cafe4a85eec9176f4b1f719561da12c1d31fa8950d87569161edcc916cf2474e9046c68c108ce87718b87b839a2f6995d381f8d862bfe040a7c0ebb42fd34c109d38e3ebb8ddd357dfb3cf9a6916e23db0da781892efd5d95b531c24939ace0d2f421723865fb140e17bec52cf1344d89f3a69db1bad86ac81aa46cfb124755c55fdbb2f5f6aff02361a17f2a708273eaf0b9954ace8ad59ffc31f1710f33f82d8ea8159f549ea25ad0b0f10118665c2b9ca25a323fc5c1fc691e1a68b2c68b991a16add48630c0385c9c322baaa88bf7085015678bc958bebec06a28bb6de80f5fe88fc9d8ac89875e9f557aaef639d3b48835e0dfa97eaf1ded22b9add31d0dbb379973cf9eb09b5d246cffb431a6837139b2199e73b788ed8bed0fc4f8626ae4c9312c62295906957942bd5e0665abc8ba8c23db98d4520b7d5ff639e124e23abd2506bb36b9d44ba537b5c47ad319616f1a6143c6b953146fb0987c8711a7c8ef28d39606f8af1efc62a3de98212f4816c51136662460e849621b33cd4de0786dacf24e0e07c4fb4c42c80ee7304743a85a2354fdbb2254ad334f8690a387f1cc78ac70365e98d20b537a6312a56289aa43fa541f4525c0ee8b84d028298e8e29b60da6cb98546534efc7378f7c7db49e7b175c254ac6388865a654d1ed5053053b92ec31bb91ec5a160b8eee76fa684b5b8cf222feaaa5ffa442dd86d1b6bc119a7402241946bc9e15dc0d7d6c52a34188e49897d6c38a2fdfcfe0626bd9393c5c1e49c43685d924de137c7c050309970ca2f8fa1c5cf6417f5970c1441ce6acee5ca60c2594a364fd252218ab5c16b07eb9ccfaede0eca8fdc4949da990122cd9b77276ceafc099d64f7f8ff7af4f57ec2534cc4624e2ce723191f8653c3187f9a43cb22fa5249900cd5b73f88c724b2c24766cf07ccee23d39657173129b55f860763e905db63e4e348a5a7c12279842e4b90c2bf0fec028eaf028ea6014c54684247fd08b0d3c6347d164cc789249606661c9400adb8d778592213429c7795ae7c93e2b3ecc822d997a1f40c60a5bc40245cba216b1d022e57cd0005ac4e5efd158ec19c34b52bebb528f9267e7f43b6d38cc544a09a648616a91cab12de208a9138498abc95dae0d5215300ee2c893263e23455a24a5bf53028ba1eda7e4302c2570684cccc014738a5134644546a20a01c6f4ae54cc28c816fa7479b2f3e45309ab9cdad42ab6695135900f66611b8a33186a07d83295d11dc8d6b7e8a4245867c3bea5fde7f46e17f92a595c8988569ff5301e36288e8fc552f4286f7621fde14cbd4e2c1f46a344d02a4e96cf09c2c4680ff2576e9238c98087695e968609d60ecbb11076b0a66dc9a9b6c40c9047c45e608b323eeb22c2a63a7774bc804bda8e69224ca172412101db5ac22fefe213e8b0285a0655864dcb0969d3724480f764739fe2fd28e1390beb73d8dc6768a68ab1149bafa7691b3d18b44ac83b8d39531badab8477a745366c2c95c33cae740c88b5294c9df02b259514c465432e380445460b0b8215e25a345356a62a2b2cad2db16756225de98a3d3bf659b132b16e5305da3a2cd22f114aaf64a9f49b16fa85cbd77145fa5589f43362d24f85f959e03ab1bec6d2cf19dbd72c21b84af33e2046689ad607aba4b3f0924c527749bf523a462520a914273e1ec4bfa9582dd496fda8ff4101b774ef18abc2d9695b46ec707fb47cbf477f2ecbd607ac6454283b9d6806c29b4f4a64a78acb4ef91665283bb137b33803b1213b590700835a6c8016d9c99307678f77bb723f6f852a564cc79dea407b91dcd64503ed25a2bfc676d2873aebb8adbea2f162b8c1926e44313b5278431517d3bb9d6a6235d78ed45c3ba6e626265273134535171aee4619b29767ccd800fe769c32cd1b47f400ce9c5788adbdd8c176bdf6c2af3695bcea0b9765ec605d3868af2b49714971e1c60e176e180c197749a0bf3d1c7745cd66eb1d84f45466ade6f859ab2db356cd33e684b356bd5891c026332c14efc9986bf584d4e9f2eed11c6acb160353c65bccf6eabb7925213aadfb7725a0792c029ad016428f4d252b0b8ef6ece0095011002c89ddad3052a7e089c25b354b38d1d15b354dfe789770a2c3b1baef3aacf7522174afc57d1e7f6838235fd3e36f385f1b3bcef60f3c83d43d83bac53591024b0f6bc23dd447f9d4d89ab1b6025336a71edfa7c626cacd07481dd7a7c65e5f6e6f4ab9674d2977f59472cf9f526e7f4ab96ba794bb6e4ab9174e2977fd9472374d2977cb94729f31a5dce33e3576b4ecc7f9a9b1a3f5f0893e3576e39fca6ac3022bc5128c55aeeb6cc7e6e14e2faa1f3e8a349d101c670c384e2d7f5c95a529effab5c27347022f2d5f168bf4fce8d41f388671b9a5278e38383924a965af231bfab1648eb904f8b74c9f3452ce13c47d72d248f8155f3eeaa31c278d247c974f1a49f04923e5ec278b936471d248427fd963cc4923657e39085916e60dc12f83982c035ea876dc49236678d288197e9a8ca627f8b2c2984f93956b830d2a4a8012529f1b7a688d393948136dccf941963e3fa85a42727e10ab6954405274b497892629ed7f2767fa281c7ccafad9ba6850f3725e6f741eced3163b4bfd697142090b70db3bbaed93f1b64fc5db3e296d9f8ab57df278dadef193687b27cc1b02ecb0a94eb77df2b8da3e3941db27a3b677a4eda5bea9b7bdfe6c5f7fd492579b5a8d8d7d2936fa482abb1b859fe8060df7e0201d6a81e42e3e769066d0c98268aff956a32a76f88531eec00d5b36df51bbab98d053da0a91d09fed8bbc9d6cb8a1855aa2e37d50c1552c852fcad99931fe401c095a2598fce1a92e76514be4733472de750aa2010777c9e4336672f98d62339a398e0cfaf3bf43fcf5dd9a07c30f376321c4166ad8a0867d746a581351c392e1633c35ac526a680822c7e44ca2463ba4454728266a781eafebf29df327ac6b8295a718facfa96370c11f970574f662fdd4dc99f1487159132da74538bda82cabd4054cf8ca925209c216e26e47af48e9aff8a4e11a4da839da4d2b3cae448e43d3a68f3ab33e9378908d4947cf139aff12a17b97c95640368ef0977d8243fb43cb88afbfac0dcf4a3904b605ae9656299356898b977c0ef9c8b15a8c7dd8feabfa6d22eab7bacce4c4653a63e637e137a469c2b45bcd0bddde12701bd41f272fe9b13f1adf63c3dd9a4b4c4fac877f840eea85d6405bec0a6189d6c425aa310aa746dabb31f2b28bda79ae30859c61c3ec9186bfe051e3874c15dac4649a8d25892093cb68d3635d6e8969ac3020506a21cb5886e9c33522ce10d7c4f0109e3ab38e93173fa855c35f3af1f9bba65cab7b9b553cb3713c23b6fc710790901593f121c44f2e31eb65e9fa98d54f3b9eeaa71dbdfab0c727211fecf1dd3ec97ba5825f14bb7d125324a7c41e60471f261edf5fc64c36b8e224444572ec78a659a84389794a9885e71dd1f1d4969ce1174e51c6236cea6fb695622b162bee08419a2bfda35472bffa23d4421c9e2e9df71da5286b4c51fa602b58a03ea8e6b9d42de8ff3cee42d2d9c4397ca13691b99fd5ce43c5cf0afa26af73cd8abbb8578861d5ce17b10b4d46134f67e5808589048ced7d5ccd2b1558ecfdc287fce90dd8297d5c9676203760e0e79dff30f0db3c1087cb71d5397e2dc358dcc06f8be5de942f2a0a4da3e92e6f14976ddff201be70adc393b3c7f4c7dee4bc8e83a14ecf2bd11f90554efbbf749553fb0a2521d5c6af727e425b5d9d92554e4c4c5b78bf8626ab03b25afaf0cc4c820b8cad9be035f5e93164d50b55d8eb970ab5826801d2892d40866de75bde27b9c18b5c9398c80c9100859bb821c75922608c47916334e53b1d5551ba30397e69b265737169b25e96268b1b366c99e199d1b29e192deb99d1b29e29cb7ae166b3f8c265cb040b97b1054b6e1b5eb0fcf40ddfa85d5ba9827be81e5baf440a2bb8fe1bf7cc8013141a4815265cadc486576abce20a2535a45ea144931657287f27a4409930d452b27e196d3f0ad730f9a88c8996f4c4c0afd73615af6db2342bae6d62cd5b2f6652a1e578cd8c573176713c29acc7cbe3fb35ebf11a5c45f17b8bdbc19fdb73a72be32d0a67e22b14aef4b1f9029dded1a181d49b15182c6d6088add4dbe14a3d33af5e7f346599de18db0594e083d29dd0b65f3ca354b833f41a3b28e7945aa1efcad4a44572bcb4b0445a58222d9263a505248338d3c9e6905c7182965c35b60b26f547574ac7a6e4d8b1499fb28aaf1e489bd5e578e1712c99e47448434bd67a3943157eccd169e2ec252aa603233ae3d12b3ea7e49c2279961396a822ef2e5e86a91721702e2f362d307496a355618ca9c21853053fff7e0bdbaad4301767ea95795d9c66da6271e1fbb0b8f0392c2e7c5e88e785b2c42da76552d9b54bcd5a3e7d28747c35dc43b62c338d1ab1419d37dbb3dc95e769a6a1b483821c81cc7d21c576a9480f34574d30b83ba18bdb18fd451b984a7824729b69c9f1068f713cc2a3af7c4622e211d6354ac9ce51a59cc251a5cca2577f35bf9832a2c4d498857f2874a9a80571cd6fa272ec71e588f4c4615f192c3ece7b7d446396e0d3e2431eab2d215f9ccd62e433c793cf1c4fbe22bf857b29c7e842a36cb2bb0307d3c6f68ce89da1fa607ae666f6ba0e8f5b9a851f2f637589ab9c597a1ca9a1bf4dad4db5e5fc495ffd91695ea5ce8b4a137ea83a41e321cfaaf55e3d3e05541ff19ee26317587e22b33eb2517b0a875f90863f8b8c47a6fece347f5894e415518ecf72a0d60cdd6f8c666d020b95687ae73569179948dcc53b6e44b8df4bf9e29c285b71f561569ea8cd8cf0ac70f8f1f5b48bf4db330cf780a3ca862770e70eea37173dbab1a21b336cebde12fbde745da4fe843a8359a208d54fe006ae5b3d7206170701f6077ff1be174e85fbd60b748f7984238519dcfbc27db38fc3273ca8ef8edcc2e14d9096ed43f02b48c90c3b74351b0fbc15294656d1a41f734eab2f752767929595ec482eeb4a97c77724c3058194bd32d9914c61474bed84f68b0d1dabe0ecc4be5cd1c1c697e82ee0842ad8269028257b9033b1ac09df898682beb1990a9294fdbae0c11bed80f6ed28d3769d492b8a58e959f7baf629274bfce427daa75c28d9821cf3e250255e1caae8c5016af12c44957871a8a21787c5fb97430b64b47bd97d6c4ec208768f1aeed065ed9dddd90ebfd0ebb77777f76e682f64fdbef68dd90163b027bbb52fbba1402fb3f97c6fdeefecf12febdc9aed68bb745b213be06fe8ed1928e40737147af346b66743ef604f219ba7c43dbd3d8b2e6d1fc83637f91b36b5e7dba984bcb1eee2156d2bcebdb02dfab878f0a1af18ee274d63fc5f7d7d7d437d63fde2faa6fa25f5cdf54beb5bea9735d437343434362c6e686a58d2d0dcb0b4a1a56159637d63436363e3e2c6a6c6258dcd8d4b1b5b1a972dae5fdcb0b871f1e2c54d8b972c6e5ebc7471cbe2654df54d0d4d8d4d8b9b9a9a963435372d6d6a695ab6a47e49c392c6258b97342d59b2a479c9d2252d4b9635d737373437362f6e6e6a5ed2dcdcbcb4b9a579d9d2faa50d4b1b972e5edab474c9d2e6a54b97b62c5dd652dfd2d0d2d8b2b8a5a965494b73cbd296969665cb08c46554fd322a7a19655b4651213e1ded85762254b67db3df5e286437f71584dc5bf29d4ceb81825fd894f5b33d1dc685e7ac1a43a5fbbf66b89f71a267d0cba20b3149ba5cba2ae99a4ed74cbae6d275225d27d3f546ba489b32de4cd7e9742da1eb2d74bd952e1c43ba8aae73e85a4bd78574bd8bae76bab2746da4ab8baecd74f5d3354cd755747d80ae0fd275135d37d3f509baeea66b0f5d0fd2f5305d9fa7ebcb743d41d7d7e8fa3a5dcfe373f27f4478b74d00f3478e02f7bd63607f7402f8bf4bd7f2e3ff7b1bfd3bb36949f3d29665ad6f39e3ad3ad650a6653b8964aaacdcada89c56e54d9f3173d6ec3973ab4fc0db3397cfab997fe24927fbe9cc1b6adff8a653ea169cfae6858b4e3bbdbea171f1f23f85bf2df9de9e8d3e7a7a0731307174273d0e74be2f5be4d6ef3e63b857a48ce3ff03b36ba627345b1a5635b65d72dedb5b2f3c3b58d4b8a4b9edc20bfff2e2b60bd6b69d7ff1b96d13e65db776dd647991645cde479fcafc7df9e1d65fff6cdefb7e79e6a18bbb2f79a066ee99ade7dfe97cb170f3daeb367da5ea817bd75eb7e1a637ddf8bd9b1bf63cfff3b9cf3cb9ec8b2fbe74d1833583df9cf6a596def39b573cf0cc0b5fbcf8b26f243f7fe2cf72576cfcb7f469df797ae8f2fbf69ef5c2c59b4e3c6ffad8fa7a06375f9acdfbbd979104ed69ef26a2e507fcecd60dd96cc700f7fecded5b3b370f6e6619bc25db61e4b3fd839df92c490cbf3b0b11d1db932de60dc56928308c95e11bbf233bb021dfd957e8ecedf13792d021e14b15b4f7a086b07469b5bec14bbb3b37f85dd96dfec0a6de4134697bbee06fe92c6cf2c3f2fbf2bd0433fdefeb1d18c80e0ca0d481ce8d3ded8541020ed9ba4bf285f00c102a946b4bb673e3a6020d15ed8394db1fecec293437b5113243d9fc65048ad131d84730f09813413361a5324a191105e81d25df46a8e5b3040641b17990a87469b614e94deddd5c1248ac614250c365204c84e5d18dc62954b4a1bda7a7970bda40d4225a7550336c28746f332ecb0ad61d9d343a1638fd10d5d4d1ea1be580b9d0bba1b7db0f53750ef828274a6518b79c7eed8aebdfbeb4ff3bbf1efdfca7fffef3fffcee27dfb9ece7d37ffeae7bae3cf38617fe7afefdb7dc973ca0de7dd58cc7af6ea8fdcae5151717defb78feb7ffe387237b122fdd5ef8f9ed4f3cd179fbcbd7ac7afc674f7de289aa67efaca8ed5df8cf8beedb5958fdd2bd0fbde707bb7e3974c13bde76cbe6a71af63e7d8af5d0d787dff5e57f770f3eb5eafa3d2fbc63c333898d0b16ccbabafcef4e6949d79cf6dae685e7cdac6cb9f0a281f2eca3e5b9a1d3bef1e415572fccdf70e7a12fdfb5e6b2797bfb3eb8e6c9bbdfd1fdf5130eddf0dddac4ad2f5ebd64da2ffaeec879739eb8e78454f7d293cedd72f6299f7feca1a6872be62f5b7ddf81f3d73ef3f177ff7bef699bfef5ca8f10093ebd75d6562378ee39c3dde73cbd33657efdba5f1d797cf74fbad7ddf39f77fff2f17fdbdaff542841b48e00fe2362157a7bc14ff982a1e3c364856d7dd9b071374205c9f76e26dd234fedded7dbd30121d497cf9262627464b56822062115aba3373bd0734a8118bfb061932faa0a73adbc7e336927d90d5de00a230a117f1413961410ef2e9bda07fc765fe42177a5d731c4cbb80d19594657b91e132be8eabd34478c86d403929bf2e6db49bb6a4358d889f0df3cd85de86cebece9c86e358473a95e264398ded03cbc817b822fe50e206fa1fdd2ee2c906ca7f79ba893900e57808636bef2cdbd1d9d976d3b4abdba029de6b82a18ecebe06e19c246bd73239126dfb9b93dbf8da9ba6553b64717096ca8f74ac147a52ef02e25eec66c41f48b697455d1e5695d63065d9d3d43243b3afca1f67c677b0f70022aaf47cba549946bd72da4b2fe2f60f360b000d00700008c010101001f780fd201cefd9151354036328a17a2bb9d5930c45555c9e80fb17a59d5ab72bf28134ab543bf6be24b3bedf03a7c44ffe90cfb72503f2595b321f1fa13c81ec00100b00878da8d563d8c1b45141efffbeccbe992e3382e421441504482e49c609d521d050d4214fc544758c63bcfde917767979959fb0c3505d05007094508418aab2e05d14111b945424ae01aa000ba2051d150f26677bd3f76cedc14f6ee7b6fdebc9fef7d3b8d3fdaef5688fcf7f93ec155323fe4afab6f9bbf7bf6d1b420b8f377a7f3cfc64cf268630d7cc5fd1b37688f5fd979b153daeab9be3db4141f082e06160db5e34bae27974654722ab4758ade1a5d7dba894e2c872a87946bfe5880ac0aea41d548dab603f650855ee7a56e93da9a8fa806525aeb03d5a1048bf101289db75a495d93ea8a762428c777593de4425feb54873051abf8638d810f1cbd7f139dda7e28b4da0e407a5c6152c27261046e6a521b53aed539f39bca2e9e9e0e299fe1d8cd68bfed502eac804a4c578354e4fc86470f925209d056a8e8002227ddeb17359503d0f35a2bb07572ccb6d9ac2515ca540af328bab8d679a647156e00b9d46a3df3ed028ce924913f6bfb42c381b6fa124ce55554b85c2422f4ce6aca4024a6b98ced202c0452cc38d52ecb78dec5b687055e66f0d4bc0797f741732f2d19833e48090c8d0e2c3808b8a491dd980be68f13abcd792f0cdcb46e4f1a25172e1760256ac53f981db0b5a86510682752ef74a3f264f0caabda361536b8d151a4bc16bfcdd0b83e0fe7ba899fb3fca8b4702be2ce98937223198468f65ad9eee87da3cf0575316869e5c6abcd40d9920726e8bad212cfaec7004f20db0ac29ecb6d0b919fe82b811f248feb99cfc047abc9c2e0a083d4466d3e2684fd9bad6ca848b9822ff92373b1ec749b589a61946ab5906ad5f619c44f7a12c44f6d09ef875c8207b37a089c8378136eb725b28f9fb054fa135357463ff588ae2013347cd44b5f629e0a04c344386b44c175769b28d10662b5de44835ae81e3223ba4bce9cefced629d445ca39cb454014ca7321903e0bed4283cbe752619a6596ce698cbf8ac59b31355b4ad50d63693a52aaf6a5ef45feeb0a347e0ee6f05841515c9996d1bbdc43469e6be40ab2a815d9d462ec18b689734c0466f6f38206fa32dd9f73541f790609355398dd95913742f461d5e2f7082e7128abb83d0525292de07941806dd711d92b52aac70f8fff0e98c002c947735568706519711c493332f2193a6b2aac2a0b5d7862b18b3823a148b15ff95fecb7c280d18414aa4b49c1a4301b90aab1cfb0d1ce7d2c49b919bd29b013ca2b22ef3c5e292e7f8ed78becfb4ebefff8f22b1f7dfd7281e1c8de0fbfdc39fcf2d53c6be17a6158f9e6d36cb8c9de17b72eb17bb7f2138bebf7871f9e7c950ee0676f757f0576785c842aaedbe01d1ea7b09c5d84669824e4c7d78f9da3691e83b8f69efbe4689a622938193f78eddba369111d84dc7ff8ce9b77a73908e07aefbbfdbbd3b4d9b8761fa0206bac49f9fea33f7fce77302a83fbc649be4fe6a6769bfef4db4e8577af1392dda7f05677860b5869d96d86fc072150af820001 +DMLOG ACCEPTED_BLOCK 4 04000000040000000300000000000000010000000000ea3055000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add801000300000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c2d5b1b639d6ae94fcdd0536b224644931573d1ccb2a0c548613cd1feea18888b220cd08b8b04e606d8bece507e2cf86239f534f1f75f7d231de54a83ef11f5270300000000000000010000000000ea305504000000010000000000ea305503000000000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add8010000000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b033b3d4b0000000000ea3055000000000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c098ab5b4fa3ae6d0e17739b6e5fbcb7f54e605eb094b2e7c5f523734661c791b46b69a63382c85627f8fafa15bb601dda980ba3edcad5043ab2f6d7610f278310000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc1618b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d63900020163e67fdaf8cc1d45374d696b46c0cc44b2b9a45eaacf726ec78eba55faf2e6d2ad4a24d5fbc0fd07c0dca3637b0f29efa2d0a345fcae866f02861b9c8dcd9170000000029807708239aa7de914d3ed61e9009ab2280bfbc50f1d9769f27f8341ef261980000000000011709e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc160ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd18b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d63901a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b72412652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b447670735c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c25443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b463320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a2974286bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1dfce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb40001033b3d4b0000000000ea3055000000000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c098ab5b4fa3ae6d0e17739b6e5fbcb7f54e605eb094b2e7c5f523734661c791b46b69a63382c85627f8fafa15bb601dda980ba3edcad5043ab2f6d7610f278310000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc1618b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d63900020163e67fdaf8cc1d45374d696b46c0cc44b2b9a45eaacf726ec78eba55faf2e6d2ad4a24d5fbc0fd07c0dca3637b0f29efa2d0a345fcae866f02861b9c8dcd9170200d0070000a5100101001f69076f2aa780105fc742ccd9527398f328419cb1ca99e1545a39285a640abed50d26f4989f29bae9a87bd0ab1e82f3810164b94ad25ba4ada6bc031b922ae1f70100fe810178daed7d0b7c5d5595f7d9e771ef4d4ed29c3e094d8173af51526c2149d3348d283d1d69a1055a7938383ed2d05cdadca479dcdca42d962640612aa2160479f9e0a52daf914ff01b153e0ca888885aa1607518edf70d3fa733e25867fccda032f45bffb5f639f7dc246d8a51c76f3ed39e7bf6d9673fd65a7bedb5d75e7bed7d92ffdbfd80650cbffe811906fd29fc18ff5c7f11fd2e7bf3b55f78321e61ecf97963e3d33f318b518fd243fbc0262452fb95bfce30d699c3c3c63a6b38fc55c3ebec61b92786877528391c05ededf44777436da784dbb75336277c6746bfdb75a4b12e81f41cafb6536548cf45506ddb39a1a21835cc25222fbda062191a4e95d2555344320aa9cbd5e52178009b4b950793329923c90556b667c869bfa4375f300c842bb2bd039dbd6ded0303598a52884a6cca6e1ac8160c0b0f497ad8d43b949527bc5adfb7551e527df9ce9ec2405bb7642bbfa47ba0edd2beb64dbd1d861d456c686cdbd4de571ad1ded16138887011d1d7de49e56c30121cd37149dba59d3d1d6d9dcd4d461231defac17c3edb5368cb67d7673b87b2792385e84a81b86d60637be3e266c3e4ccc5b8068989a55adcd028719e8ecb77f66537753434d74b74225e52591b51646377a17391518667bb5864225e56d998425c029288956febca6e35ca11e31325db2ee9ee5ddfb57e637b670f619b6fdf942d64f3407c7d57b64388e76f982c998b6473505a5fbeb7af7720db8140c7e07a4a6354705386942a746eca0a9566a1d8f6f505a25b2c3517352324430ce24a2e869a60a0d09bcf721b4ce3a87cb67fb09362da070b1b8d2a444d0324d452eddd9d97a14c154512570c7576673710cc1e226722329f1de81dccafcfb675776eea2c0c18d3f1e6f889b169cb6e316670cebe7c96816f2f64db2ecdb61706f35963263782b09e3cccea1c08dfb685c93b8c59d2d6f4dcdbd3d6d15e686f1b20488dd91c4de576b4c5de0949a6c7fb42dbfade8eac31872b2889df941d1868df9095062f276281c62015778a4a8a18eceb00c4883baed85136125acaba6cab513d6b963bd3983593fe2ccb7567bae5c7cf5596ab6ccb5233ab66baa65933cb346616ffcd9b39d33cc135dd139532e91ffdcd5427c99fabf44d9de4d23f0ad19fe1d2b3c2457fa6aba844936eb6a3fad4cc998ea50c9598630dab6064d470878de0aefdd12d59a69cf6bebeeeadc6c2b25a6504ca9d71c1457ff99ef7beff7a7583fab8ba497d42ddac6e51b7aadbd467d41dea4e55fec4e3e656cff01abdf3bd0bbd777b177b7fe5bdcffdb565f886b7ca5be01bbe7a97bd6cf9c8c8aff7ddbbe3d6976e1bf64d7a46b4977728fac1173f72d3edf75e548c1d0863effffe334631ba80e891835ff8f9e8f31f8e9531a8537fe92bbfbcb0183b44b1af7e6edf737bee7cfe8958199bb98c917d5fbfeb87cb8bb15b2476e43f6e89c77e5062ffe6373ffee77b62f56d93e8fff91f2fc6135f8ed82ffdfb3d37df168fddce69473ffe9b92b4c3cef243f7fde4c3dff9a707e3b157294efc89effc6c5f3cfa6a891ef9d103b7bff89518187f2df17bbff0f0a3b73616a37752f4ae7b7ff8c3bfbfeed692e41f528e6f0896a35fb9e505e37c7b59c0cf3f7cfee19f5ff90bc33bd91df7e7c4d2876d58420f2ae18ad21202c35be23ea29435ec1b69652ec33fdf08acfe332b0d84161a4625f1856f7455b914af7269652df3152750bea2d769931e552e63a5956f9e596956102b53ccb630a59dcba83ad3c898c1f0806f0687fff3b79b73fdc1c81557eed8824a5caa8562553f55a3b81ae45a68a892722b8d0a938ab582e15cdaa23b2574f3043440ac3402a38a10098c3af33a00ef0d65289fd94c4f12bb63598672e482aa5cd0d79f319a29826bf50abeb11ad929ac7248cf55a6158052cb8c607825de06bb460d4f51adeeb54aea2440bb336a4cc50a159b047049c5845558b1ad2bb650b12d155b61c580206d3235c6565c44d24716e599737da29be1362b35fc26c2b72b43f1cd6605bda44a2b88da4554479621163507c61906aa72172973186de91b356872d0db3b2d6354aac04833d82341c644f39ad30d839bd37013100e0d6e99818ccd5437870c84e8ff9da04bb0e309c35b6c2e637204198b40bef109236d057ca79a0317dc85d7bb828c1df82bc162c10ec2dcabe7e4c369879a99a0b0892e5c0a950f222173c0d5ed0af0dea1489b29b72b2066b003b340740f76a89c0fe028b79df3193806aad977dcb30121410302336f5bc2dd199bb938e3ac043f73eb0b9f832986898d34ebd9bed3c5ace7fe9a0434335e70f8891f9cb65af8d67b1b5a87e2469efcc1693dc4ecb87777a13e49faf19fbd64495a33a8cfb51a5447daa8506e60a6255215823bbe464c6a7af65c1745e6324064d7778d9e8c0a0e1fb6fa83970d941c4f48259b39cefeb2d1dd8557af2361fc3d51c222c4a89ceeae7841d6d8821228c83a7241a99cfb234b5057c1c7be8b9ec3c17f884265ab5956284190c9c85451e361ae828c002c1980dec3eda2827f4c4a0956ac04c6ad6f6c0996946c4d480deb68d4e09a4155dd362af8ea8eb787187ce623891208a8914cb0a449d2686c6d15222682c30ffc1f3bcc146ba61806d611db27b0a87c25341addf1f69e09d0b1c6a11fd82428288b090e51c22393b4ede464711dc3330cf751190a961b4b4c83db9c3041473259281336fdd2c4f34d4e01199dca91c041af2301856475a64d99fad680d9ebcc949099e5ad7b76257a9527d2d05b84aee6939cb67deece792e043d38253401af874494d145a1671039751f317381c109aa5c00ff0da5ec12e023d00926ddcd0335e4d34f7f265193717c1310d1ad8bc21605acb36b887845d8931a764b60b734ec2982ddf1593001f65404bb13c16ec561a7821976c74fb28cf113353e9a96d1a097a568bc2aa34cd0e3ab2e8650648890ffcc4a16f2a9b4d483d2536ed09b2e635efce9e1c387d18702375dc6dd2e538e36a256a45b392157da08e932d72f235c4cca6ca364d34ff936a0a288844490fc48fa091d4734eaa2b1d4eeca24a3b7243752b83b9450275341f90a7a9df29a5c69e11428422931068262659a6228807117cc9fd598f71e15f36484791298a7c6629e12cccb8a98978dc73ce5faa952cc9311e6c012385a711c931a47ab14c764098e9a13049bfda64a8ab4044345a8408487c8e0617b3f6b3578b4d33670a30443693b28a7f1867e1c8048cc4ed7ea1aeae58c86123490d30134c4442b741d4e500eed41a1481029a1a946a31ff30c717f8e304f482e482e6a69d63cc642874c540c5dc8889b263b06525777ea28b59d5602fcebaa1f0868f1c84da0007382686886243e53d38ec2292ec04f0809358700ca9098221ed09d5ca1ecd3c22721c816fab31d925413d411982cc064011e0bb414a8096fe12f96291c6547383b117b39d2392168202649eee4c030635892255889c042b6986802369c196c6541b501677a6740affa2e8b2ce59d1a2bf8ff657c7697b60cd803aa9db0b449104bc945b46c41cb7445d282a57c7b25c3416d4e4c6f43f1f362202a1a907dab32029006b748d01a11dc396623e06f84632510c088a380d2274c227c11501b803a1127339436774357ba1f1197a0e74e33a66112d206099218347e609408dbc089da2011b5414297a7256802228a1b85c606cf9a4bd853d84469745b4dc304687f6e0d467ca4c57b24230d996837beedeca8edc21ec345c5db2ec199fd4417c080764ddc80b693ae358d8760aac6f44ef5ce749f5425642ae14c5b588b99510b21c5325b6bd8255c3886020e28408d8bd626ce25f1dc25e53241148fed248f0953d40bc51ba3b4e656eb68ac9a08593542e99bc041e64966ad28db4ece6b65f9a87504ad34b0ecc75b02a628b44912af0e1932a68f088b8842e06865a628bc62ca8c4c713174ace09ee0109f5a3c8924d4509e9e7688bcce18c4fd3c85e67718af6a3522a2a295634a642cb10ebed33d4f2680070cd2fe183315ec377290a38a4708401386649a72ce5c7ed41a113171973787620e1854897b574acf6cea2089598feb0a92ab782a7ae8eb34150dfbaae87dac3a7214eb895c19855897e72228b735716e9aa0c572db51ee8a29e5f6a6947bd69472574f29f7bc29e5f6a794bb764ab9eba6947bc19472d74f2977d39472b74c29f7e953ca3d6a94665747ca6ec6b29b51f62729bb9a3cbb1a939d459bfb1b65a961733bcb9d7a529145a0f2ccc8f3961ba4b67a6918924c0a3b161bbb72d033127ab22d33aee5a96b48ee271a0c6347c65edeb27307a9370a83298df8f48ec75fd11e57306cf78a058e722eb1584994bc4b2c03d5c1e6473215b5a35656a031718585498af156e8093e576fc19a03236621d892f3a6138ca9dc7ccbc0340d379b87cf2596a1eb73d91a507b74dc67fd89e13eebf78cfb67a3415478e731aae3b821186e832b86617c9bb34a0f97a40f9e4580d37c8c74c3211ae44d1aac4d8c3e7f6118231fbca1c5ac805207f3da2a4c83839191916dbe35d82fa69058ba140f9cc679541a0cd95b380182af59505050c5e1643feb46e6e3ace7b92f4e5309adaf04cf2bcc07eba9491efa06358ab58c995a0d11b0b017a24741fda8c3407d76c6ae81c51926e601586cec1a1878a9607acdf57291dbd688353c784ef5641cfaedce24bad252c9a1a77ef74a90b92b30075931302827226057a19927a9cdb3d0ddb9680bb8e045860060b5545428d5bda252b1dd932a7e4ca1f1097f36c153853d3467d7492d9d1450965362946285a558d1ab0a02bd2793800ca144f29e14c7e8bd17bdb7277c3f6392fc7326c93f2f7a9f98f0fd8993945f3b49feba49ea3f6592f24f9d247fd324f5b74ef2fef449ea27197ef4029e322681f06963922abe3b5915cf4d56c5fec94a38504c909a30c1cb9355f1d3c9b0f8e7c94a7865b2120e4d56c2ab9361f1fa6474b8524d52c54e354909d7aa49b0f8e86455dc3859159f98ac8a4f4e56c25d9325f8dc6440ee990c8607262be10b93c1f0c864557c65b2121e9f0c86d1c9aaf8fa64253c3559097b8b0948cab3ec270580ade89c8ee798814c6561220dea5764cc9a341bc37332b2d1949dd260c6e99beedf26695ca5e1df67b527b2d5b0b1dfaed46b81293d8d96d1124600aabe5acfb02d7a65793ecfab4d9e7aead9bc2d16cdd2a9b485a9f42c5862792aed61dc6a36ab59a5125b82a5a7e39e58e5551eb9f82daf0cb0311756536dfbb0ea287702d8267d6ba1e16578110003305ecdf27961801eedd024066b84a5573dca571417076dac0adab22ac84bc1e68a4a99c243d559814cc82d8b0d6c2256be539ce543b3b639319a804181d6a6b4058cd726987004af862d27e6a804bd13d36a0e25d97e32cdd617e898b09753ed5dde4a98f5182146129a082aeecfa89a66d2bb2ca143d2c7630a8ff3ad94687ba4b679efe25c6265e3945e9358780ca6bdb420d7481382a1c0eaf6026949588465b95fd1bb3595989d24d9fa4e11a0e04334dc0849460d59db7e215cdb36e3ef1363de4b6d09d288087b9baaeccf07d585a07ad07ba7e8b45c1ddb9c288c1252c1f9392aa68a0ddbd33c71228cfe1457999abcbea1a0aa1f5516a2faa034c76ab3343ee70349aecd9ca8362a2b51e06506e78844904ad9c6aaeb72b5e3846f9f5dc9f64b6a272f5cd512860f97dd90db6713914c444e37e092f0d0335430faeec3a1413630161afb57f1025ec0ddf4d955b2a4be6f55f0ef04c6a919035db3e803c2bdd2d0bd5261ad443c09f6ae0a9899a95ba208d8e0f6ad8262ced2847a24c57ee719f88518bce865a278dfe0b52e136e18062fac52e523546dcbdc803d0af6af72abdce059029b1038de10789f5d25bd01ce00fb56794d6e293a07e3e8bca4d179795570fb37de003a078ae8bca4d179b9041d8afdfb1274a8f871e89863d039c8e8bc548ace4b31745e1e8fceab71745ed1e8fc6a55f0da336f009d4345745ed1e8fcaa041d8afd79093a54fc3874ac31e8bccae8bc528ace2b31747e351e9d4756c7d0d9b35ad0796875f0a56fbf01741e581da1832280ce43abe3e850ecbddf8ea343c58f43c71e83ce23ab81ce9e6f97a0b36775119d8756039d8f011d6d5f356a75b243abf52278f0ab6fe3956763ce0f1c5fd638be823bbd580483cbcb1aea837c87c68b045afbc5623ed7476ff90ddd9d31b01e5a0dbbb918684f546a583c685e5e9d510c2b86c583ab7d057887d87c0b200f9ca3691f8cda04077af93942d0fd7ca768aaeda573b4d86627a5c8144da3c6a88c4e0400c8c786ec1ce74d8c81eec0396e0caa7de7c4a0da7f8e40f50fc7a9d340c511ab2b93a81553042c04743b8946e3e0f019109e4e701876283f193843e91449cd57cd1cc61b12e2c1a162f0603178a018dc5f0cee8d82b83d6dca7d145a0f8dc25f25b64a97513242f671c4117eff8bef416a2853de6a3c460fc14e2ae3fe873ff6daf5773f7ce8ef74b9231477f89e2feffcc6f53fbaf2f661897b55e596ffeb4f1ffd87bb77ffe7eecf4adcf27f7c76f7de17f7feece147e9f99092da0f2ad448c422eaa6e1bf94b4b05e94e455aa037879070d9bc99c5f46d4c652521dc51265789490b75e1bb285c550e6c47c2a76f988bd0dc5634c7329f90a4e3e4a83a28b81863075a12ab8d461c245d723d46cca52c4ef54b9f65d63ef3c2cf6b9ee845594ffcee54f549afa7d96161c0df72395845adc7095cf4ebbbe932e3b0275dda950579ad02f0375cb8e485d2756feb1c1efea04ebf0a2ce3c04b0aa875a8d5da644fc4a655c8eb85147bcaa32e51c718b8e784d652a38e2933a62c4cc5472c41d3a62879999c611f7e8889d26694bd543992a92dc3aea3a3363719a0710413a0c051f44d0e4e0bd084e836fa5d76a7c160f957898de6adc89870a3ccc68353e8587723ccc6c356ec5838b8759adc64d26138c1ea87b5d2f75a4a8e0bf913a10bc4fea201130bbd5f89cd4410f735a8dbba40e7a38aed5f8b4d4410fd5adc66d52073d1cdf6a7c42eaa087b9adc60d5c47abf179aea0d5b89f4b6f35767359adc667b89856e3762ea1d5b89933b71a1fe78a5b8dbb21830ed1d8e56ba12c4fd54579484f5e5ccc6d915b9fb85248029a1051390b49e4a56b88c1e6d175025d27d275125d3e5d69ba3274bd89ae5abade4cd75be83a99ae3abae6d3750a5d6fa56b015d0be93a95aed3e8aaa7ab81ae46ba16d1d5044f1166ff063f39d06a0c50a8d19f4ba13c8516f96514eaa7501360da650ea031fae879a1efd29bcd143ad53f9e4243143acd9f45a1410ad523f58d263d15e869be5f4ea10f52e814bf9a429751e8adfe4c0a6da5d002a4bd0569891cfe9bfd0a0a0d53e82dfe7114da4ea193fd1914ba9c427548fb49a4dd464f69bf924257a18764fc3914bc12c137f9d329780582f3fc2a0aee44f0047f1a05ff1ac113fdd914bc06c1937c8f825723588ba2ef40d12378f4f1780f1e77700f5c687c48e1f75e447d48475dcb51f721ea5a1df5618eba1f5108829f76e957d7f1ab07f0ea3a1df5118e7a10511fd1511fe5a8bf41d44775d4c738eaf38842b0648cdb48cff1f18da442c9d876f198b16dadb0dc5945d9451a40da8d09400ec5c7b46545b9179779cb44309d2572e92c19cb7c5e2a9f78183b82c0d5f595c8da63acf2283256975a532cb258e0110a4b842275ad96a87df278a196a70579bc3853c68f5be4f17d5ab86e93c7755ab43213d1738796ac3bf4f3462d5877eae7ee4c153f334754b1e4644e98c64166b44a0e329356709079bb9c83e814651cdaaa45a774c02487fab94c48ca8f2a2d2935a75672f01aa5a5a4ee3ae51cdcce652274991695d2bd931c8258a8124684706426afd43dab5c7a6e99747657e44352844a05f7542b700a992414fc75391178bef2935d44f09306fd643f894ef1704ac9b28882831df1fe4e959e87fb1e335d85fb5fabf409b8ef36d3d370bf46a54fc4fd73667a36ee57abf449b87fd64c7bb8ef5069eed057a9741af7bbcd7425ee57aa7406f7bbccf41cdcaf50e937e17ea7999e8efb884ab35c184ebf19b7cf98e90adcb7a7df82dba7cdf471b85f9e3e19b74f99e919b86f4bb398fa607a3e6eb79be972dc2f4b9f82db6d66ba1af7ade9b7e276ab999e89fb96348bc1cde985b8dd6c1253d37d287d2a6e9f30d3c7e33e983e0db79bccf42cdc0b6916b303e906dc3e6ea2972c34f2e946dc6e30d37371ef4f2fc2ed7a13eaf342a32fddc43b034831b63033d963ab6a56f24d7645c122289c04d9cd85d451f68d86bd2d57c75e44d5050cc2856064e4b5647f9e07e460e475ab1ff6c2a13cfbce60e52c0d6f1cac7b4b9f83eaac4d87b62e99ca1aa5b6c786815a1844601c69e1f5313ba8dc0cd79da101faadda8cf5362a0a6fac60da667ab0e88d151c4f6fd83c99b6a3ba94aecba609d04bb2dae6c08d126b057848b223e4417928a36631b050810797da95276b78a8249e32b00882872a622023d8270fd3a9810dc88799e95984889799edcfc8ccc9fbb33266bf3fdb9f432431831337d3cfcccdd834530ef0ede0e05e5913845593712dcf1ce74fcb6035b1dfafc854fb567f1e68ce057ab33703bd2472a6729969396aeb69584d9ce6cf265c8e2314aa09728b009e43a081e5d8c5c0a62694b99f9ff48f23d274c35dd7afa6d0460ab9be45a10e0a55fad328b48e9d016753e87d14aaf2e750e8620a4df7e13070218566fab328b49666583485224e39a84c9aa56e17bf8265bc532718d1dabc7a30632d57db96b72c1fc5f4b0e5ec9a8cfd57e23dc80e52cb87aff6ed6dc2564189ebd4f2e16d94d5381fb25b5c1ba8682a00137512d49809b7f0be197a91e6d574834436af833f48394f37ce008f92f8c66d796ae7e9c63b38e451e8ed1caaa6d0e91cf229f4360ed551a89543f5145acaa1160ab5a052f7cb70a7a23e7147427c05ace00e3b475460e741f6aa602773319ab277ba213669f1ce32c422ed7d2038834ddba34afcc674413e1b568b9e8fec4340380f8b5d393860e5a827483e0accb7585d94f8fa30bebe34be2e8caf2b8df7c378bf34be3a8caf2e8df7c278af343e15c6a7a278583647d512eb80a5d38c22f10880f4127383c3c61bc1fd8cff36b8a3238200faf980a1338f2a2f89c89f383976350151b0b78df9473ac470b88589d849c4669c22135163224a4c448589283011f613615e8ab571a406a7e06712ff9d509ba819a509a53939e063d0f15288bd23012179b363a961b59d3d6e0e19a1f8f0e34b69588f19e6f51888321aefe01d64b1ef8eac5ff9366fffbced9547fea5c1575e391ca0cfaa141f57c35b9f210154cf2ea930e9bd20eb10b054d6e33d93ceeb90953cdb73dfc5c99ee16484166c8ab21a64c095c291b9a84110661261b83a9749ea3036cad4c3882894a396815b4d26859beda7babc73e1514ef1459a27e439a27712b46dd1a5cdb7ea05734e53c763933c6044e20a0cf14fd54952790c5a164666b6327bd9b9524e2a4e234d485daa372fe3349b4d4c4a2cbf5c8855b9e5db89ac6a1bfd5cfeee1a8281f7a272a5512b807e9471813843d599f332266efe1a9ed13858cc347d69ad80b39abeb42a710186d979b2e4c62c78c01026a69f0539ef521705ad4b1b614e83bda06517052f183aa1e335d74b4333662a0ebbc5b363d1c61c9a9dcde5e1de285ea635b18bc5f17597a292e04dc568cce3f2a9c2436c81de91b0ca42173898c54da868b57a730b20c0b8354f54a6157a9ba5136c11b505bab84d8f0405000bf755ae60f3ef46a4e1a5dde2ea32bbfecfcf38c1b0b8283e0cfe933d2c57d867f38e2aef34dea4c23b5b88bab2f195e601ac83a6b0149ca444f3e70ad3268469358f264078d27d63a6153f0ad5498817ee78639111dcfa03ee253c83017325e1ed6c9b826170524922f03f5b9abd1cd42cd152039fb22da76972e0c1e10e8ebb5093e1b957c1fe829c2a97aed44bc1ecb157018741d7af648741971d062be81d6f0971e130e84a2f754287c17f17084cbf024c668679c561d0618f7276517451adab57a3236749277418d4d543be5111a8b2e833c8dd92c0400f4abba8cb05d5a44ad72fc70b1f31e52c22e75b75f2502db2b6d8cdcb45acfab19e9ec0e24113b68b359b3e6ee85754fc32f1019817f21a754f9638c4366b78179f42d7720089ee5a3e3d25f4c6bc62d72ae3fa34b12d6256ea57e12ea4a4d7c0fcef73f348118877a40ff02a8c9f706f312d93c4b30a3d22b061b9566f34243927cdf09f2fc80237c908880691a0f7bfc86da3c4e5d21639c83f091186090843f8a751bb4454828b373b4844cf44485b2fdd2b8498add903de94dd15518d3f7e512f31afcdf13062f30888d57f1b62d9e0ddc1ccce36b735dc7c092e4848c2a6693938a0ce3b854b35b41834480c3a10834e24066d5e84769fb38a2eb2beecb730195c3422a9d9c7e92da32c2b5993862ba7cd9ab4c92168d2ecbfc19a34b28bc63d13a1dd240b603c98c37d1da689d91c82e563163251825623c971489788d239513ab8ca28a9bfe51a547d8d1c9b30327ad8b86a074554eb8803675cc51eb9fc74e8a4ab76e0656a271e5fadc2ab6a845f4b72a63a0abf6e5dc560efd8b1437a1e55e3fd81aba966028168d3390442cee010c8e795ece6505dc14922481fdd17f97ab3cbadc99229f4f5f699094c6e51df706fb394331caed4d6c9b62aa25e5750bd095e34f0b6b8ff85fb5e402f0cee4340b6cd4ac592cc0ef6ddf7c229ec92c16e3b99243695d2f42e0970d87d847d5c924175b7b7085ec83ccbc7ba1c8f8d1835aabb33a99cb8c418e8e90435f33d36bb242411b2e7d89dba5aef7bb43332ddca2465f049e568a011b7580c43f0cb4dc393c8900d32dc21c09ff4ba8f66a6517f83934d71a7b3e2427c3bcdbb4679d0e42a3549935c2561846ddaded9f436298ed58e6c714cc82e2125033095c05e43043d4194444e1ab4a2adcb103f5847057a2bf5f496774ad9585cfd7275c2264954c1d2c8bc1c16980ae9769039de093c8a56f0782c5b9a33565750bf29b862049e25c4092f3f0b4e908ddab855a47914a05e2f1e2a377d67fc7bf82b9b5a17357981d3d47d8a745f38931d30a11a4317f0b93a6f2345eee5c858aebda63055f0c877228f0063628f00388559a228ed33b927c323602f82d464fb4d19fdc52300b15c99ca638b17bb0558a843bb0558a15b00257bba048d51022878ec8d00f3f52230a31a98a74b80412c16644b81796c4260d8b1bdd9fc12c6e68440f49029f73da66e3c6e023033b4c5d1648e67c62984cb31bd80ca61067b98d2a4764455a3c95e956045913a95c5d869a8933dd7ace276420bc2e00a5318e5ebdf11ad0239583dcd54c1a3a18e1b6421513dc3060be4adf1abbc77cc95cd9c75e66bfcfe55799ff13845c6a9c94c9f3873c6a881d24aeff69b7e25ce28616584a2a651cf9e7e66257cec9d8598fbd3cfca4a33b40138b2d3de8329c023edd222bd643a1f6352678e58fe34dfa98161ca5b8a4620845efd4ed101edd5701f33a7456f0bf1accd6566089e5f6750474bf09c71ac788ecf5cc4f369a868313c2ba68467c5583c3ff9dda3e08906c720359374e2e1ab2fe696de870c1c9d9e294e8955a1714a5c3a59bf4fcb8c14a17087f110c555e98dc6d4b7147cda0caf93f76a3c8dc594d1a4a6abf02ebb68122404d54dcf7ff3c74e37d5514dd419d08fc1be673ffd9bc400c556c662e9b10a8f692fdc305c673e6016a73e4e67a05667aa08528fd5e4fef474c0e7a5a723e26c89ef4b4fe7bd1dd4b1a663a3060b4839f3a88aa723a45ec3346be817a61efb32553ed463bfca9fd5ef4f5f5969b9e292c708c2a367a9b4482cab2acd8a1a048c2a8051e5d29d0a32c715a4cf520a0ef26cbbe41d9fd921fb567d8fc7ea53486ca46703a347602c7d383da7b80379b6ef3c7ca33fe7fd811aa894fdff70a6b4cea6d661fa04c6ca7c3e5dc519e6f8b36ff2d66466630bce9af7fbb81bc63a6ef7d9f7322169a89e8e0351702cc174829da0a771bc8a271f8c5b15ca047ac21755dedae2367569aaaa73d9a6bb073bc8bd1ccfe7fc2ae8f05504557a56d8a88f980f0b62c70211679a8532d0fc749f8ee98b0a4875a6e0706e435741f8603ac1436d3f1dd833e8baee081eb7c8524c9f4c1563e37bc248f496f807393ccd58c24d45660c792a53050ef064a3729df99029275ec00bcea4f2ca9b4d7d068487fd511e34074fd3a958afe757f5a73d5d4fc4bc5ec8bc1e2a92f7068a108f504f0e3f42c7d30cd14c372655f09a160754cf8cd26e5d1775eb05e3baf58ca85ba7a45777e931c780e5ca9cab7b34bcbcf413deb19f9a7670f38d2eeeee48c7c52023459495b0353ce49acdc7924599f1250ecfb7be94e41926bcf6fc94d7aeab10db19d53c6205a61ece466daf6c2efbe8e249dcd21888fde70088a5eca1165cff3db665b19f9e31060616fddedbe7f2308e4d2aa4b8dd6289f5e6463df4efc29ddd72ad9d56d8f4af98196eeb43a66c1423b85f35c56f779e98c9421f5e018e94242f3c3d479cacb98fdc6849dfa6e02e0bb198e7e2e9167ee1857d9f8adf6961e6c74ac2ab20802110061a42dc1972068e277eafb082620b045eb754c2c24f10bbd10a4d4a130e8c34526c4b8b758ed4116822bc10c8aa06dc2945bde05062b9da29dbfda11bfa897733e11ff85e381e115b687a11ddacd0755edb8fd882820dead40032a1fecc3e6da4649ba3de261f8e27a4727a9b643091226938a6c63e51ea41648420de6804d12bf98d96d769c6ddb7d00ba478f4323e0b8c32eee151206673e321bd48a0a7cd287a6f2c7abf19d57630364e85ec5262a363fcfb6499922b0a0a393d4de78366828bf5d65f0ac4ce7d08d6210b1b29780f87b552ef5d3c68b2be0ec67d45d086a25981a9fad72de5c677fb1bd8ed5fb7c95745c55705fff8ecad8bd684c73dc05250d70df75c6c3dccb101c3f23917cd01eb68ea9594914e97c7063fe5a7bad2657a3138e95b58efbb389729f753082b845d7d9a141b8bdce234cb24e433e5d269783e56218c5f4e7014c24415385f8792457936e6787ea6a76e66b005cf5b726c6591c9db3aadf4bb5274540347c23c443009056d9ff1c2611ba69e2e6b3ea1b91d6f8d4962451ae75344b3bba4ccee4c3d7ff323c656ba61d9e20a0c7c1911d028a0039b6e5449c3aa62c39abc2bc614ae67de0047b8df2f33ed6173fb9b2087f5de1c88babdab68cecd1ef47ce4552621875e916aa8d5f983cf51678aa5484b0a1cad87dc72ee8912c77bb8f343abb4e1445b130ad09dcf876b06922556181745236b97ece151be93933d3c222f619e7b48c9d289ec3a61070e9a6e3ca230ff7848c54b51de59583e517ab505be6d46f00455be02c6a062bbeaf6b37c07ec648d50add2b056b02bcc8c52be4759ffe2a85977c5b292f4c7b00010ee084bd9a518d88dfab5ca03e875b2a3c8acc1ab0ed94f64d678cb8f5ad31db19a5a74e9a8e65f2685b1a59871af0155faac705b081705202ed6ef04beb571f82e3c46f83c5d0bf3c2cb2287650b91de7415db4ba56a623ba9548d57e7ca6cd28bed68d2330e82a618797114d9528c5c1645dea18ab17b5414bdae18bb318adc154b7b4b31ed482c7a6731baaf18bb8523259ab82f96fe4b0ac7f38033f5912fccba8479c6e17ddee169a1c136d8a69c2ee9ddbc8fceb3e6eaad3dbc1de03ce1ffea4c527b10d0e8a93d0810120f0284c483c012128be534c55956c3a189b3ace210b29ccd2164390b99d9fe7906ef9b83fdf31d1c82fdf3ed1c82fdf374dd0f098e966b0042a961325962984c961a269331c3643266984c4686c96468985c26c20f6c6d8722e3b7cfeba19fc91c27b2d8d7471506a6fb1c3e372d1c83440e02067b0d6fc3330bd81f128dd7a1a48d64a298d66c0c39d857a787763e652f3c1c941d8be4744f3e8d2a856693f380f08a8f8092da3bc1dc984fd8bcfedcaf8f869213cde8d6c796bd3a765832c3b1dad4e3376f5f5c8ded8e7c5094b52c5c9b23494ac2580ebab2f4f102a1cd14b34fb39049cab9b98c549a59d0c0e60a539ed067536ca994492747cbf109a6b833d198cf1648581178394e1740e37131df99a2e4700a6473048024069d502f8d221837572347d35cdb75a34608cd95b1464094ad87492bc43b2367446185a2af382d2ca1438c060942921e709460295ae8873c0365b2a42222812c493f159185a34b2890020562498e4081c4580a2426a0807bc4e1f7801e7e5f9a74f87d6982e1f7407cf87d99b79f4d36fc1e58152becbfd9f03baafe3cfcf2a6f03f0fbfbfebf04b2cf4e7e1f71887df9fda16445a62fc929fccf42cf117d033c3e0a77487288e1d284589cce00b3f7df678193771341f6c69be0d6b1b2ff839811caa4334a9c3829fe9ea335fe6f3aa9f2d7d0ba70cd39452e927b8a5d8b222c8ab9e9899d120985ca2d7ec32180cd265b2708f2143b1b8f3703c2db240e6fb65fc8aeaf2137280b1c313579a8ee2283357e6af1525f3d78aae74652067fba4e474848bb1b6558130cf5f2d3d7fb5437fb0702cc1fc55e3e260925a16ae66c6e6af65327fb5a33ca5f357279abf3ae3e6af96141dd5c09158d42198c48917f0a653253357b3b82aa9e41ce97299b7bafa30e370de6a8e9db73ad1bcd56148a379ab73b479abc3674e38e1d265e46ee4be6c5a4ee8e3a68f662c394522e0154776b189d6301d59064b80c71ee46d94dab73fb93cb913ee66e7b3130befc970645535c1068907971b705b37a809485696d7105ba1a178c38adefc112f02b9aa33d4b57152f1905f5ed3e527b45b535917119498ac4bea4f41b34b95667661f2b0d8870823bff62627b624d676654b8224e19dfdde65a17585db27016d8457884d59d6e655c514bbed25a2e3181fdda75d91b4ef06b68c89ef064ebeb856cdd50747bacf9b961dbaaa08958348610b291d0e3b729a072fbd93f21038830f42678db64f00c5844691810acd444eb8826d6a0f120c8b38ca91dd6e78f5fda82591f0469e6430bca252afa24acfacc8791f5173e50c2e14e6e7b4d2ac154f7d266e52be1a00a182b3a1bd8f2acd04169cbfba32c973e578763fd925c4d6b66d8a58a3470b78b5dbda5066cb8dad85543ce884f36d3f5624eae72d5389d6e7c717db7fcfae2e46e4ea6244ae2e46dcd5c510571723727531225717e3ff3f5717922a9960cf5ec37b1335565ff0350e89138bfbc952b724392cd5d06d65a2ad144ffeb8e9745b295d051fd8a6db4ae9caf8e03fdd5614da4de3a1b415ce8791b64248da4aa1316db415e2a4adc2744e94ce0efd4f2d10d11a4b44ab8488562911ad1811ad1811ad888856b1adb81aef0f5c4d351348da0a21692b84a4ad54e07b6f65bf366a9ddd7f761afb53731a33bd5a1e67beb1577b7d70437d39769272d1f197660b6fe643a0d82f3dc59bb4787075b45d83389cdd8d68643a2daddd63ecd053970ae167ef2d7375013a332549ae161706ed530bdf55f1ea5eae6dfb29319adbc196fe20b532ee7f6b45694564bf938ff200d8026e7442f5b181e6c2c1f3cf854c50c8b74ce189fa129e108e088cc8b6f5060a85a9a7566ef0ffc50718b0005ba7f73d7059718f6c4c61eac444560b8d967de7c3d66726c1412cb5e280b0f268f98e433e15e65347c9a733cc199381010fd83d31e2655fe604ded6b962af4ac91c95f1ab90d51f7dc6ea61a5777de85378978bd2685b722c3ea657623dfada0f4a8eeac51e69471f7b9f61d511cad261a39f08855d9766e1c11d6cf14c42974ec086168ce07c18b778889b236a9fd985f3d168b8e24fa0c0e7b02bd44f139c30ede8b3dbd85dd3b7cf956f1ae936b2dd701a98e8d2df555913239c94c30a2e4d1f228753b64fe170e15bcc124fd394386fda19ab8bad86ac41cab62f715455fcb52d5b6fff0a3f1216faa7022738a70e9f53a9e4ac58fdc91f131ff73083d77144adf8a4f214d582868d0fc030e35ae114d592f9290ee64ff3d04093355eccd4b068a5368401c6e1e2945951455dbc4780aa384b4cc6f2f5055643d96d437ff8427f4cc6664d3cf4faacd273b52f98a645ac01ff4ef57bed6817ca6dadee68d8bdc99c7bd684ddec4261fba78d311d8ccb91cdf09cbb456c5f6c7f20c61753234f8e61114bc932a8cc13eaf532285b45d6661cd9c6a49658e8fbb2cf092711d7e92d31d8b5c9a55e22bda925d69b4e0f7bd3081b32ce99a27883c5e47b8c38457e4f99b634c07ff5e0171bf5c60c7941b2288eb0312301434f12db98696e02c76b63a577523820de671242763887391242d51aa1eadf15a16a9d7932841c3d8c67c66385b3f1c2945e98d21b9328154b541dd2a7fa082a01765f2484464971744cb16d305dc6a42aa3793fbe79e4eba3f5dcbbe02a5132c6412c33a58a6e879a2ad891648fd98d64d7b2587074b7d3475bda629417f1572dfd2715ea368cb6e58dd0a41320c930e2f52ce76ee863931a0d4224c7bcb41e567cf97e06175bcbcee1e1f24822b629cc26f19ee0e32b1848b86410c5d7e5e0b20ffacb820b26e2306775e7326528a11c25eb2f11c158e5b280f5cb65d66f076745ed27a6ec4c859460c9be95b3727e05ceb47efa07bc7f7dba622fa16136221177968b89c42fe38939cc27e5917d2925c90468de9ac367945b6221b16383e77316efc9298b9b93d8acc207b3f381ecb2f571a251d4e29338c11422cf655881f707465187475107a328362224f9835e6ce0193b8a2663c6934c02330b4b0652d86ebc2b940ca14939ced33a57f659f161166cc9d4fb003256d82216285a16b588851629e78306d0222e7f8fc662cf185e92f2dd157a943c2ba7df69c361a6524a30450a538b548e6d1147489d20c45c4dee726d90aa807110479e34f11929d22229fd9d12580c6d3f258761298143636206a698538ca2212b3212550830a677a5624641b6d0a7cb939d279f4958e5d4a656b14d8baa817c300bdb509cc1503bc096a98cee40b6be452725c13a1bf62ded3fa777bbc857c9e24a44b4faac87f1b041717c2c96a24779b30be90f67e87562f9301a25825671927c4e1026467b90bf7293c449063c4cf3b2344cb076588e85b083356d4b4eb52566803c22f6025b94f159171136d5b923e3055cd2764c13610a950b0a09d8d6127e79179f408745d132a8326c5a4e489b962302bc279bfb14ef4709cf595897c3e63e4333558ca5d87c3d4ddbe8c1a05542de69cc99da685d25bc3b2db26163a91ce671a56340ac8d61ea845f29a9a4202e1b72c12128325a5810ac10d7a299b232555961696d893db312e94a57ecd9b1cf8a9589759b2ad0d661917e89507a254ba5dfb4d02f5cbe8e2bd2af4aa49f11937e2acccf02d789f535967eced8be6609c1559af7013142d3b43e58259d85976492ba4bfa95d2312a0149a538f1f120fe6dc56aa1b6ec47fd0f0ab8a57bc75815ce4edb326287fba3e5fb3dfa7359b63e6025a342d9e9443310de7c52223b555c76cab72843d989bd99c519880dd9c93a0018d46203b4c84e9e3c38bbbddb95fb452b54b1623aee5407da0be5b6361a682f16fd35b6933ed459c76df5158d17c30d9674238ad991c21baab898deed5013abb976a4e6da31353731919a9b28aab9d07037c890bd2c63c606f077e29469de38a20770e6bc426cedc50eb6e9b5177eb5b1e4555fb82c63076bc3417b6d498a8b8b0b3776b870c360c8b84b02fd9de1b82b6a365bef20a4a7326b35c7cf5a6d99b56a9e31279cb5eac58a04369961a17877c65ca327a44e97778fe6505bb6189832de62b657dfcd2b09d169ddbf2b01cda311d084b6107a6c2a595970b467074f808a006049ec6e85913a054f14deaa59c2898edeaa69f2c7bb84131d8ed57dd761bd970aa17b2dee73f943c319f99a1e7fc3f9dad871b67fe019a4ee19d42dae8914587a581deea13ec2a7c6568fb51598b239f5d83e3536516e3e40ea983e35f6c6727b53ca3d6b4ab9aba7947bde9472fb53ca5d3ba5dc7553cabd604ab9eba794bb694ab95ba694fbf429e51ef7a9b123653fc64f8d1da9874ff4a9b11bff54561be65b299660ac725d673b360f777a51fdd011a4e984e03863c0716af9e3aa2c4d79d7af159e3b127869f9b258a4e747a7fec0318ccb2d3d71c4c1c921492d7b1dd9d08f2573cc25c0bf65faa491729e20ee959346c2aff8f2511fe5386924e1bb7cd248824f1a29673f599c248b934612facb1e634e1a29f3cb41c8b2306f087e19c46419f042b5e34e1a31c39346ccf0d364343dc19715c67c9aac5c1b6c5051029490fadcd0436bccc9419a6863ce0fb2f4f941d51292f383584da30292a2a3bd4c344969ff3b39d347e1e053d6cfd646839a97f37aa3f3709eb6d859ea4f8b134a5880dbded16d9f8cb77d2adef64969fb54aced93c7d2f68e9f44db3b61de1060874d75baed93c7d4f6c909da3e19b5bd236d2ff54dbdedf567fbfaa396bcdad46a6cec4bb1d14752d9dd28fc443768b81b07e9500b2477f2b18334834e16447bcdb71a55b1c32f8c71076ed8b2f98eda5dc5849ed2568884fe6c5fe4ed64c30d2dd4121defc30aae62297c51cece8cf107e248d02ac1e40f4f75b18b5a229fa391f3ae53100d38b84b269f3193cb7f2a36a399e3c8a03fff3bc45fdfad7930fc703316426ca1860d6ad847a6863511352c193ec653c32aa5868620724cce246ab4435a748462a286e7f1ba2edf396fc2ba2658798aa1ff9c3a0a17fc715940672fd64fcd9d198f149735d1725a84d38bcab24a5dc084af2c2995206c21ee76f48a94fe8a4f1aaed1849aa3ddb4c2e34ae438346dfaa833eb338907d99874e43ca1f92f11ba77996c0564e3087fd92738b82fb48cf8facbdaf0ac9443605be06a6995326995b878c9e7900f1fadc5d887edbfaadf26a27eabcb4c4e5ca633667e137e439a264cbbd4dcd0ed2d01b741fd71f2921efb93f13d36dcadb9d8f4c47af847e8a05e680db4c5ae1096684d5ca21aa3706aa4bd1b232fbba89d8f13a690336c983dd2f0173c62fc90a9429b984cb3b124116472196d7aaccb2d368de506044a2d6419cb307db846c419e29a181ec25367d671f2e207b56af84b273e7fd7946b756fb38a67368e67c4963fee0012b262323e84f8c9c566bd2c5d1fb5fa69c752fdb423571ff6f824e4833dbedb2779af54f0ab62b74f628ae494d803ece8c3c4e3fbcb98c906579c84a8488e1dcf340b7528314f09b3f0bc233a9eda9233fcc229ca78844dfdcdb6526cc562c51d214873a57f944aee577f845a88c3d3a5f3be2314658d294a1f6c050bd487d55c97ba05fd9fcb5d483a9b38872fd02632f7f3da79a8f85941dfe475ae597117f70a31acdaf92276a1c968e2e9ac1cb0309180b1bd4faab9a5028bbd5ff8903fbd013ba58fcbd20ee4060cfcbcf31f067e9b07e27039ae3ac7af65188b1bf86db1dc9bf24545a16934dde58de2b2ed5b3ec017ae757872f698fed89b9cd77120d4e97925fa43b2ca69ff97ae726a5fa124a4daf855ce4f69abab53b2ca8989690befd7d0647540564b1f9e99497081b17513bca63e3d86ac7aa10a7bfd52a156102d403ab105c8b0ed7ccbfb343778916b1213992112a0701337e4384b048cf128728ca67ca7a32a4a1726c72f4db66c2a2e4dd6cbd26471c3862d333c335ad633a3653d335ad63365592fdc6c165fb86c9960e132b660c96dc30b969fbde15bb56b2a55700fdd63eb95486105d77feb9e1970824203a9c284ab95d8f04a8d575ca1a486d42b9468d2e20ae5ef84142813865a4ad62fa3ed47e11a261f9531d1929e18f8f5daa6e2b54d9666c5b54dac79ebc54c2ab41caf99f12ac62e8e2785f578797c9f663d5e83ab287e6f711bf8735bee3465bc4de14c7c85c2953e365fa0d33b3a34907ab30283a50d0cb1957a3b5ca967e6d5eb8fa62cd31b63bb80127c50ba13daf68b67940a77865e6307e49c522bf45d999ab4488e971696480b4ba44572acb4806410673ad91c922b4ed0922bc776c1a4fee84ae9d8941c3b36e95356f1d50369b3ba1c2f3c8e25939c0e6968c95a2f67a8c28f393a4d9cbd44c5746044673c7ac5e7949c5324cf72c21255e4ddc5cb30f52204cee1c5a6f986ce72a42a8c31551863aae0e7df6f615b941ae6e24cbd32af8bd34c5b2c2e7c1f16173e87c585cf0bf0bc4096b8e5b44c2abb768959cba70f858eaf867bd09665a6512336a8f3667b96bbf23ccd34947650902390b92fa4d82e15e981e6ca0906772774711ba3bf680353098f446e332d39dee0318e4778f495cf48443cc2ba4629d939aa945338aa9459f4eaafe617534694981ab3e00f852e15353faef94d548e3dae1c919e38ec2b83c5c7b96f8c68cc127c5a7cc863b525e48bb3598c7ce678f299e3c957e4b7702fe5185d68944d7677e060dad89e11bd33541f4ccfdccc5ed7e1714bb3f0e365ac2e7195334b8f2335f4b7a9b5a9b69c3fe9ab3f32cdabd4795169c20f5527683ce459b5deabc7a780ea23de537cec02cb4f64d647366a4fe1f00bd2f06791f1c8d4df99e60f8b92bc22caf1590ed49aa1fb8dd1ac4d60a1124defbc26ed221389bb78c78d08f77b295f9c13652bae3eccca13b599119e150e3fbe9e76917e7bbae1ee7754d9f004eedc41fda6a24737567463866ddd5b62df9bae8bd49f5067304b14a1fa09dcc075ab47cee0e220c0fee02fdef7c22970df7a81ee318f70a430837b5fb86ff631f88407f5dd915b38bc09d2b27d087e0529996187ae66e381b722c5c82a9af463ce69f5a5eee44cb2b2921dc9655de9f2f88e64b82090b257263b9229ec68a99dd07eb1a163159c9dd8972b3ad8f862dd059c5005db0812a5640f72269635e13bd150d03736534192b25f173c78a31dd0be1d65daa6336945112b3d6bdfd03ee564899ffc44fb940b255b90635e1caac48b4315bd38402d9e85a8122f0e55f4e2b078ff7268818c762fbb8fcd4918c1ae51c31dbab4bdb33bdbe1177afdf6eeeedef5ed85acdfd7be213b600cf664b7f465d717e865369fefcdfb9d3dfea59d5bb21d6d976c2d6407fcf5bd3d0385fce0fa426fdec8f6acef1dec2964f394b8a7b767e125ed03d9e6267ffdc6f67c3b959037d65eb4bc6df93917b4451f170f3ef235c3fdb4698cffabafaf6fa86fac5f54df54bfb8beb97e497d4bfdd286fa868686c686450d4d0d8b1b9a1b9634b4342c6dac6f6c686c6c5cd4d8d4b8b8b1b97149634be3d245f58b1a16352e5ab4a869d1e245cd8b962c6a59b4b4a9bea9a1a9b169515353d3e2a6e6a6254d2d4d4b17d72f6e58dcb878d1e2a6c58b17372f5eb2b865f1d2e6fae686e6c6e645cd4dcd8b9b9b9b9734b7342f5d52bfa46149e392454b9a962c5ed2bc64c99296254b5bea5b1a5a1a5b16b534b52c6e696e59d2d2d2b2742981b894aa5f4a452fa56c4b292ac4a7a3bdd04e84cab66ff2db0b85eca6be82907b73be93693d50f00b1bb37eb6a7c3b8e0ec9563a874ff370cf7734ef40c7a5974212649974b57255dd3e99a49d771749d40d74974bd992ed2a68cb7d2751a5d8be97a1b5d6fa70bc790aea4eb6cbad6d075015defa1ab9dae2c5d1be8eaa26b135dfd740dd375155d1fa2ebc374dd44d7cd747d8aaebbe9da4dd783743d4cd717e9fa2a5d4fd0f50dbabe49d7f3f89cfc1f11dead13c0fcb123c07def18d81f9d00feefd3b5ecd8ffde41ffce685adcbca46569ebdb4e7fbb8e359469d94e22992a2b772b2aa75579d367cc9c357bce71d5c7e3ed19cbe6d6cc3be1c493fc74e64db56f7ecbc975f34f79eb8285a79e56dfd0b868d99fc2dfe67c6fcf061f3dbd83189838ba931e073a2fcb16b9f5fbcf18ee1529e3d8ffc0ec9ae909cd9686958d6d179ffbced60bce0a16362e6e6ebbe082bfbca8edfc356de75d744edb8479d7ae593b595e241997f7d1a7327f577ea8f5b7bf987bd9afcf387851f7c50fd41c7746eb79773a5f2edcbce6ba8d5fab7ae0de35d7adbfe92d37fee0e686ddcffff2b8679e5cfae5175fbaf0c19ac16f4ffb4a4bef79cdcb1f78e6852f5f74e9b7925f3ce117b92b36fc6bfad4ef3d3d74f97d7bce7ce1a28d279c3b7d6c7d3d839b2ec9e6fdde4b4982f6b47713d1f2037e76cbfa6cb663807bffa6f62d9d9b0637b10cde9ced30f2d9fec1ce7c962486df9d8588e8edc916f386e2341418c68af08ddf911d589fefec2b74f6f6f81b48e890f0a50ada7b504358bab45adfe025dd9debfdaeec567f6063ef209ab43d5ff037771636fa61f97df95e8299fef7f50e0c64070650ea40e7869ef6c22001876cdd25f94278060815cab539dbb9616381868af641caed0f76f6149a9bda0899a16cfe5202c5e818ec231878cc89a099b05219a58c8802f48e926f25d4f2590283a0d8344854ba245b8af4c6f66e2e0924d63021a8e1321026c2f2e846e3142a5adfded3d3cb05ad276a11ad3aa819d617bab71a976605eb8e4e1a1d0b9c7e886aea68f58d72c05ce85ddfdbed87a93a077c9413a5328c5b4ebb76f9f5ef5cd2ffbddf8e7ef1b37ff7c57f7aef93ef5efacbe9bf7ccf3d579e71c30b1f9877ff2df725f7abf75e35e3f1ab1b6abf7679c54585f73f9e7ffd7ffc786477e2a5db0bbfbcfd89273a6f7ff99a958fffe2a94f3d51f5ec9d15b5bd0bfe69e17d3b0aab5ebaf7a1f7fd68e7af87ce7fd73b6ed9f454c39ea74fb61efae6f07bbefa6fee81a7565ebffb8577ad7f26b161fefc595797ffedc92de99a535fdbb4e0dc99952d175c38509e7db43c3774eab79ebce2ea05f91bee3cf8d5bb565f3a774fdf87573f79f7bbbabf79fcc11bbe5f9bb8f5c5ab174ffb55df1d396fce13f71c9fea5e72e2399bcf3af98b8f3dd4f470c5bca5abeedb7fde9a673ef9de7feb3d75e3bf5cf93122c167b7ccda6204cf3d67b87b9da777a4cc6f5ef79bc38feffa59f7da7bfee3ee5f3ffeaf5bfa9f0a2588d611c07f44ac426f2ff8295f30747c98acb0b52f1b36ee06a820f9de4da47be4a9ddfb7a7b3a2084faf259524c8c8eac164dc420a46275f466077a4e2e10e317d66ff4455561ae95d76f25ed24bbbe0b5c614421e28f62c29202e2dd6563fb80dfee8b3ce4aef406867819b72123cbe82ad76362055dbd97e488d1907a407253de7c3b69576d080b3b11fe9b06bb0b9d6d9d3d1dd92d86702ed5cb6408d31b9a87d7734ff0a5dc01e42db45fd29d0592edf47e237512d2e10ad0d0c657bea9b7a3f3d2ad47a85757a0d31c5305837d1ddc2d43d8a8776e20d2e43b37b5e7b73255376fccf6e822810df55e29f888d405dea5c4dd902d887e318dae2aba3cad6bcca0abb367886447873fd49eef6cef014e40e58d68b9348972edba0554d6ff05317960a700d00700008c010101002054ef1d43bf08fa5fc98e2abd54d4b861ba92e2e6e1a8aa4376b5bd177ca49fad081e3efbd969cfed9a0d7de17c2de54b7cbb57c06c74563cebbe8583baaf0d630100b10878da8d563d8c1b45141efffbeccbe992e3382e4214413491809c13ac53aaa3a04188829fea4896f1ceb33df2eeec32336b9fa1a0a2001aea20a108214871d5a5203a2822b74848095c03144017242a7ac49bddf5fe39676e0a7bf7bd376fdecff7be9dc61fed9b15f2e1bf372f105c25f343febaf2b6f9bb671fcd72823b7f773aff6ccc258f36d6c053dcbb7e9df6f88b3b2f744a5b3dc7b34796e203c1c5c0a2811e7a92ebe9a531959c0a6d9da2b7c6579e6ea2136b48d590946bde4480ac0aea42d548daf610ec910adcce4bdd26b5351f530da4b4d607aa030916e303503a6bb592b826d5153d94a0869ec3ea0117fa6aa73a82a95ac51f6b027c30d4fb37d0a9ed0542ab6d1fa4cb1526252c07c6e02426b509e55a9d33bf89ece2e9e990f2198edd0cf7db43ca85e55389e96a908a9cdf70e9415c2a01da0a141d40e8a47beda2a67200baa8b57c5bc7c76c9bcd5a52a14ca5308fbc8bab9d677a54e106904badd653df0ec0844e63f9b3b627341c68ab2fc1545e8585cb442202f7aca60c446c9ac9d8f6835c20f98c13edb28c8b2eb65d2cf03283a78a1e1cde07cddda4640cfa202530343ab0e0c0e7928676132e983789ad368b5e183849dd9e344a2e1c2ec08ad58abf3f3f606b51cbc0d7c350bdd30dcb93c22bab6adb54d8e0844791f25af43647e37a11ce75133f67d95169e156c49d3127e5463c08e1ecb5d2dde1fb469f0bea60d0d2ca8c579b81b225f74dd075a5259e5d8f001e43b6e5073d87db16223fd6577ccf8f1fd7539fbe8756d385c14107898dda7c4c08fb375ae9509172055fb2476662d9e936b134a330d56a2ed5aaed31889ef4d48f9eda12de0bb80417e6f5103807d126dc6e4b641f2f66a9e427a2ae947eea215d412a6878a8979ec43c1508868970d60883ebec3651a20dc46abda906b5d03d644674179f59ecced629d445ca19cb4540e4ca73c1971e0bec5c83cbe7126192659ace698cbf8ac59b33355b4ad50d63693a52aaf6a5e786feeb0a347e0e0a78aca028aa4ccbe81dee2223171ab9822c6a8536b5083b866da21c638199fdaca081be4cf70b8eea63d720a1660ab3bb3276c7883eac5af41ec2250a6515b727a024a5053c2f08b0ed3a247b454af5e8e1f1df0113982ff9b850850657961147913443238fa1b3a6c2aab2c0812716bb8833128804fb95ffc57e2bf0198d49a1ba94144c0af301a91afb141bedccc792949be19b023ba6bc3cf2cee395e2f2e778bd48bfefe4fb8f2fbff2d1d72fe7188eecfdf0cb9dc32f5fcdb216aee747956f3e4d879bec7d71eb12bb772b3bb1b87e7ff8c1c957c9007ef656f7576087c779a8e2ba0deee17102cbf945688e49427e7cfd787834cb6210d7de739f1ccd122cf9279307af7d7b34cba38390fb0fdf79f3ee2c03015cef7eb77f7796341bd7ee0314a48d3529df7ff4e7cfd90e866570de38c9f6c9dcd46ed39f7edba9f0ee3542d2fb14deeace70012b2dbbcd90ff00c6a7af790001 DMLOG START_BLOCK 5 DMLOG CREATION_OP ROOT 0 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304004,"value_ex":160608,"consumed":1},"cpu_usage":{"last_ordinal":1262304004,"value_ex":303261,"consumed":101},"ram_usage":453263} -DMLOG TRX_OP CREATE onblock ccca63b91fdf98ac45750450e147b8adac98a522cef1782a0a2846f14b14392e 0000000000000000000000000000010000000000ea305500000000221acfa4010000000000ea305500000000a8ed3232b906033b3d4b0000000000ea305500000000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb21729c7835698f124c8be1f086f7e6001e73e9c3554da1bf5cab4c4b3860ae83b8bdd3e98936ab78d42df8f5b434eda1ee1a725329b68ccbc00d433e080116930000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc168cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7000000 -DMLOG APPLIED_TRANSACTION 5 ccca63b91fdf98ac45750450e147b8adac98a522cef1782a0a2846f14b14392e05000000043b3d4b0100000005100709f04201061fb35b591491e4e468bc346507245fefca90b6fb6801006400000000000000000000000000000000000000000001010000010000000000ea3055ecd434384b24b30d46e92fbe8b8e82bc31fa195d392ae87f62ce4d7e09e0b77d1e000000000000001e00000000000000010000000000ea30551e0000000000000002020000000000ea30550000000000ea305500000000221acfa4010000000000ea305500000000a8ed3232b906033b3d4b0000000000ea305500000000000314fa060372f82666849e4d15e6726a494024fe2c682ff988d87f7acb21729c7835698f124c8be1f086f7e6001e73e9c3554da1bf5cab4c4b3860ae83b8bdd3e98936ab78d42df8f5b434eda1ee1a725329b68ccbc00d433e080116930000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc168cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb700000000000000000000ccca63b91fdf98ac45750450e147b8adac98a522cef1782a0a2846f14b14392e05000000043b3d4b0100000005100709f04201061fb35b591491e4e468bc346507245fefca90b6fb680000000000000000 +DMLOG TRX_OP CREATE onblock f1dbd4cfc0d4ec8e8270b5ec9a485c57f1630f8796b6c381f256fa5dfd93a78e 0000000000000000000000000000010000000000ea305500000000221acfa4010000000000ea305500000000a8ed3232b906033b3d4b0000000000ea3055000000000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c098ab5b4fa3ae6d0e17739b6e5fbcb7f54e605eb094b2e7c5f523734661c791b46b69a63382c85627f8fafa15bb601dda980ba3edcad5043ab2f6d7610f278310000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc1618b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d6390000000 +DMLOG APPLIED_TRANSACTION 5 f1dbd4cfc0d4ec8e8270b5ec9a485c57f1630f8796b6c381f256fa5dfd93a78e05000000043b3d4b0100000005061c1447694382f67c35c70ed92deadb9350a3f72f9cb9fa5542702b01006400000000000000000000000000000000000000000001010000010000000000ea3055dc3c8d65ab4eda07d51bc1ce776cc85ec8b90c0739fdc4a0a4f3483c7054e54f1e000000000000001e00000000000000010000000000ea30551e0000000000000002020000000000ea30550000000000ea305500000000221acfa4010000000000ea305500000000a8ed3232b906033b3d4b0000000000ea3055000000000003c7b6f0c37ffe5e12561dcbf5632e864d5d34c363c41e4c941ff2405c098ab5b4fa3ae6d0e17739b6e5fbcb7f54e605eb094b2e7c5f523734661c791b46b69a63382c85627f8fafa15bb601dda980ba3edcad5043ab2f6d7610f278310000000000010000c105161a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea994a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0fe0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff52668dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c438ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4052652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead450715443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b4bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb406bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc35c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b63320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011afce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb409e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc1618b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d639000000000000000000000f1dbd4cfc0d4ec8e8270b5ec9a485c57f1630f8796b6c381f256fa5dfd93a78e05000000043b3d4b0100000005061c1447694382f67c35c70ed92deadb9350a3f72f9cb9fa5542702b0000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 9 {"usage_id":8,"parent":0,"owner":"alice","name":"owner","last_updated":"2020-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"EOS6JvuLaCqV8qHbSqUBVRPMo9N7V3vgE8YqHmweG568YmTDJ3opq","weight":1}],"accounts":[{"permission":{"actor":"alice","permission":"eosio.code"},"weight":1}],"waits":[]}} DMLOG PERM_OP INS 0 10 {"usage_id":9,"parent":9,"owner":"alice","name":"active","last_updated":"2020-01-01T00:00:02.000","auth":{"threshold":1,"keys":[{"key":"EOS8d5yGFrYpdXW1SUmaavRZKm5X7Bp9jK634JABCYPciwTkm7Wv2","weight":1}],"accounts":[{"permission":{"actor":"alice","permission":"eosio.code"},"weight":1}],"waits":[]}} @@ -189,12 +189,12 @@ DMLOG RLIMIT_OP ACCOUNT_LIMITS INS {"owner":"alice","net_weight":-1,"cpu_weight" DMLOG RLIMIT_OP ACCOUNT_USAGE INS {"owner":"alice","net_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"cpu_usage":{"last_ordinal":0,"value_ex":0,"consumed":0},"ram_usage":0} DMLOG RAM_OP 0 alice account add newaccount alice 2788 2788 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"eosio","net_usage":{"last_ordinal":1262304004,"value_ex":161951,"consumed":233},"cpu_usage":{"last_ordinal":1262304004,"value_ex":314836,"consumed":2101},"ram_usage":453263} -DMLOG APPLIED_TRANSACTION 5 c162625ca92aed6c1f8c71a128ff6da042ee5dddde6e3b19c5086f5652c8157f05000000043b3d4b0100000005100709f04201061fb35b591491e4e468bc346507245fefca90b6fb680100d00700001d0000000000000000e8000000000000000001010000010000000000ea30554895e298f1f3e56596649fb49ff53d0f76174ef57ef7c50f28152765cef1f97f1f000000000000001f00000000000000010000000000ea30551f0000000000000002020000000000ea30550000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed32328a010000000000ea30550000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401ea305501000001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401ea305501000000000000000000000000c162625ca92aed6c1f8c71a128ff6da042ee5dddde6e3b19c5086f5652c8157f05000000043b3d4b0100000005100709f04201061fb35b591491e4e468bc346507245fefca90b6fb68010000000000855c34e40a00000000000000000000000000 +DMLOG APPLIED_TRANSACTION 5 4828bee2f6d5d9082fb08eec89af59167db84510b1cdc2fb188d943ba32220cf05000000043b3d4b0100000005061c1447694382f67c35c70ed92deadb9350a3f72f9cb9fa5542702b0100d00700001d0000000000000000e8000000000000000001010000010000000000ea30554895e298f1f3e56596649fb49ff53d0f76174ef57ef7c50f28152765cef1f97f1f000000000000001f00000000000000010000000000ea30551f0000000000000002020000000000ea30550000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed32328a010000000000ea30550000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401ea305501000001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401ea3055010000000000000000000000004828bee2f6d5d9082fb08eec89af59167db84510b1cdc2fb188d943ba32220cf05000000043b3d4b0100000005061c1447694382f67c35c70ed92deadb9350a3f72f9cb9fa5542702b010000000000855c34e40a00000000000000000000000000 DMLOG CREATION_OP ROOT 0 DMLOG PERM_OP INS 0 11 {"usage_id":10,"parent":10,"owner":"alice","name":"test1","last_updated":"2020-01-01T00:00:02.000","auth":{"threshold":1,"keys":[],"accounts":[{"permission":{"actor":"eosio","permission":"active"},"weight":1}],"waits":[]}} DMLOG RAM_OP 0 11 auth add updateauth_create alice 3108 320 DMLOG RLIMIT_OP ACCOUNT_USAGE UPD {"owner":"alice","net_usage":{"last_ordinal":1262304004,"value_ex":834,"consumed":144},"cpu_usage":{"last_ordinal":1262304004,"value_ex":11575,"consumed":2000},"ram_usage":3108} -DMLOG APPLIED_TRANSACTION 5 8b63a515f370b80071c5e36e40dd95ea5f4f4432e0b365ce8417926e725ba44f05000000043b3d4b0100000005100709f04201061fb35b591491e4e468bc346507245fefca90b6fb680100d007000012000000000000000090000000000000000001010000010000000000ea3055f3d881d2f7fbf2f7cb6081aff84e7aca1dd3914a0948ef4fc9422e734e8d4d5720000000000000002000000000000000010000000000855c34010000000000000002020000000000ea30550000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000ea305500000000a8ed3232010000000000000000000000008b63a515f370b80071c5e36e40dd95ea5f4f4432e0b365ce8417926e725ba44f05000000043b3d4b0100000005100709f04201061fb35b591491e4e468bc346507245fefca90b6fb68010000000000855c34400100000000000000000000000000 +DMLOG APPLIED_TRANSACTION 5 a5da917661cfe1fd15ea07da73e09f9e2675f29e3609394b8fb57b522694022005000000043b3d4b0100000005061c1447694382f67c35c70ed92deadb9350a3f72f9cb9fa5542702b0100d007000012000000000000000090000000000000000001010000010000000000ea3055f3d881d2f7fbf2f7cb6081aff84e7aca1dd3914a0948ef4fc9422e734e8d4d5720000000000000002000000000000000010000000000855c34010000000000000002020000000000ea30550000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000ea305500000000a8ed323201000000000000000000000000a5da917661cfe1fd15ea07da73e09f9e2675f29e3609394b8fb57b522694022005000000043b3d4b0100000005061c1447694382f67c35c70ed92deadb9350a3f72f9cb9fa5542702b010000000000855c34400100000000000000000000000000 DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":4,"value_ex":230575556,"consumed":17883},"average_block_cpu_usage":{"last_ordinal":4,"value_ex":432479225,"consumed":4499},"pending_net_usage":376,"pending_cpu_usage":4100,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1051726,"virtual_cpu_limit":200600} DMLOG RLIMIT_OP STATE UPD {"average_block_net_usage":{"last_ordinal":5,"value_ex":231787427,"consumed":605},"average_block_cpu_usage":{"last_ordinal":5,"value_ex":463041898,"consumed":4529},"pending_net_usage":0,"pending_cpu_usage":0,"total_net_weight":0,"total_cpu_weight":0,"total_ram_bytes":0,"virtual_net_limit":1052778,"virtual_cpu_limit":200800} -DMLOG ACCEPTED_BLOCK 5 05000000050000000400000000000000010000000000ea3055000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add80100011d1e67b0d77626c361a04b47edd0f754b32f182ea99c71dcf2cd354de66635aa0400000000000000010000000000ea305505000000010000000000ea305504000000000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add801000000000005100709f04201061fb35b591491e4e468bc346507245fefca90b6fb68043b3d4b0000000000ea3055000000000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba53d626c28615c0fae3e8b8d9df697b30ca0daaaa076f51542911e3f613fc162685bb1fb5bf8c32945ffcf9bb3f19736f6bd158b11ad33fc7523be07796e127cf000000000000001f02daf738645b2a8f506b26e825a57cb5bfcc3b6095a6f318a2b2d24149c9970c3201414e9b0f6f5be1a083d32fc7846e72cd216a3a72a71e4180603a28bc5b0f0000000029807708239aa7de914d3ed61e9009ab2280bfbc50f1d9769f27f8341ef261980000000000011709e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc160ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b72412652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b447670735c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c25443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b463320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a2974286bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a4058cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1dfce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb40001043b3d4b0000000000ea3055000000000004643e817cad43f8ecb61f9c4bfe0238eaf2b8df6f76e2e24866ebbcba53d626c28615c0fae3e8b8d9df697b30ca0daaaa076f51542911e3f613fc162685bb1fb5bf8c32945ffcf9bb3f19736f6bd158b11ad33fc7523be07796e127cf000000000000001f02daf738645b2a8f506b26e825a57cb5bfcc3b6095a6f318a2b2d24149c9970c3201414e9b0f6f5be1a083d32fc7846e72cd216a3a72a71e4180603a28bc5b0f0200d00700001d010100202a3732319217d40dd86a639d03d9e9d4817fe766affeeb7a4fde21afdfd4e1c12aad15ec9199c06343af61b51a479172de9d7d2d294e7bc73039d8318a1964570000bd0107e10b5e0400ad43f8ec00000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed32328a010000000000ea30550000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401ea305501000001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401ea30550100000000d0070000120101001f225b3395f6daaf942dbfab54659c85ce5b58cf8eb60832232b33d368a264b8114c7426f801838b1bd9529c149cc598fcadcbfe11c49648b74dc066bab4fb315200006307e10b5e0400ad43f8ec00000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000ea305500000000a8ed3232010000000001 +DMLOG ACCEPTED_BLOCK 5 05000000050000000400000000000000010000000000ea3055000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add8010001ac65c5394281653b4b4ef83ce55bbc235296a3d4d53d227b6cf7023f92543b620400000000000000010000000000ea305505000000010000000000ea305504000000000100000001000240e54a7b27e042b80a810153bec1dd166eef95fa69f6c9886ae283363bc2add801000000000005061c1447694382f67c35c70ed92deadb9350a3f72f9cb9fa5542702b043b3d4b0000000000ea30550000000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b6a6382d7021a0b4267ccfb7b44da5e2fbd57fb1ea60ee71bd3b9f8b416837762b3d88bf26dff797ee7ac7d53958e15db3fe5e9a6091984126007e376fb8440fb000000000000001f0e193512b825eabbd33482ea2e83d27dc93cac16e065f9ba8ceae6e2813d6d0a4b43ea89522b5dae8f7f88e614d14209418c28a6afc19282cdf1f9cf94d39c250000000029807708239aa7de914d3ed61e9009ab2280bfbc50f1d9769f27f8341ef261980000000000011709e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc160ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd18b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d63901a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b72412652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b447670735c2186cc36f7bb4aeaf4487b36e57039ccf45a9136aa856a5d569ecca55ef2b4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d674fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c25443fcf88330c586bc0e5f3dee10e7f63c76c00249c87fe4fbf7f38c082006b463320dd4a58212e4d32d1f58926b73ca33a247326c2a5e9fd39268d2384e011a68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a2974286bcb40a24e49c26d0a60513b6aeb8551d264e4717f306b81a37a5afb3b47cedc8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43bcd2a26394b36614fd4894241d3c451ab0f6fd110958c3423073621a70826e99c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071d528b9f6e9693f45ed277af93474fd473ce7d831dae2180cca35d907bd10cb40e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1dfce57d2331667353a0eac6b4209b67b843a7262a848af0a49a6e2fa9f6584eb40001043b3d4b0000000000ea30550000000000041fa25bbe71dbc993529c7492969157cd6769334517fb381c2518038b6a6382d7021a0b4267ccfb7b44da5e2fbd57fb1ea60ee71bd3b9f8b416837762b3d88bf26dff797ee7ac7d53958e15db3fe5e9a6091984126007e376fb8440fb000000000000001f0e193512b825eabbd33482ea2e83d27dc93cac16e065f9ba8ceae6e2813d6d0a4b43ea89522b5dae8f7f88e614d14209418c28a6afc19282cdf1f9cf94d39c250200d00700001d01010020438dac40a541d483f964d534967669f59a9b256256fb9e659517014be363a16863863aef6ed65590301e5cb107d8ef3341cb27a0019825dbd40475a565fcc6f70000bd0107e10b5e040071dbc99300000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed32328a010000000000ea30550000000000855c3401000000010002bb30f6894f29bb6fca635b1df728ad77e48fdd6123ce5e4455b0f71e072e7df80100010000000000855c3400804a1401ea305501000001000000010003ebcf44b45a71d4f225768f602d1e2e2b25ef779ee9897fe744bf1a16e85423d50100010000000000855c3400804a1401ea30550100000000d007000012010100206b469b0116de366510ae560294198f79cabb08ac61f4a9b754e59f750bee02bb13347317613e627ca4ed9d9da4095887739f470e2240752c1856890c7d334d9200006307e10b5e040071dbc99300000000010000000000ea30550040cbdaa86c52d5010000000000855c3400000000a8ed3232310000000000855c34000000008090b1ca00000000a8ed32320100000000010000000000ea305500000000a8ed3232010000000001 From 28d7cbf81016a9ebf7acb083a64103dbd2b1a80d Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Sat, 16 Mar 2024 10:05:24 -0400 Subject: [PATCH 15/22] Fix `plugin_test` (was missing `action_return_value` dependent feature) --- unittests/test_utils.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/unittests/test_utils.hpp b/unittests/test_utils.hpp index 693ce20aec..be389d5af8 100644 --- a/unittests/test_utils.hpp +++ b/unittests/test_utils.hpp @@ -149,6 +149,7 @@ void activate_protocol_features_set_bios_contract(appbase::scoped_app& app, chai builtin_protocol_feature_t::webauthn_key, builtin_protocol_feature_t::wtmsig_block_signatures, builtin_protocol_feature_t::bls_primitives, + builtin_protocol_feature_t::action_return_value, builtin_protocol_feature_t::instant_finality}; for (const auto t : pfs) { auto feature_digest = pfm.get_builtin_digest(t); From a9058bda3701dd1e1709020b08f0f09ec84df2e4 Mon Sep 17 00:00:00 2001 From: greg7mdp Date: Sat, 16 Mar 2024 14:00:55 -0400 Subject: [PATCH 16/22] Remove leftover comment. --- unittests/protocol_feature_tests.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/unittests/protocol_feature_tests.cpp b/unittests/protocol_feature_tests.cpp index 2ac5a37a48..a0b2e96c40 100644 --- a/unittests/protocol_feature_tests.cpp +++ b/unittests/protocol_feature_tests.cpp @@ -1074,8 +1074,6 @@ BOOST_AUTO_TEST_CASE( get_sender_test ) { try { BOOST_AUTO_TEST_CASE( protocol_activatation_works_after_transition_to_savanna ) { try { validating_tester c({}, {}, setup_policy::preactivate_feature_and_new_bios ); - // needed for bios contract - // const auto& dwk = pfm.get_builtin_digest(builtin_protocol_feature_t::webauthn_key); c.preactivate_savanna_protocol_features(); c.produce_block(); From 4f8a5c487c8ea4b6fbb472fbef85be260a335a57 Mon Sep 17 00:00:00 2001 From: Guillaume Babin-Tremblay Date: Sun, 17 Mar 2024 14:46:22 +0000 Subject: [PATCH 17/22] Renamed if_ibc to svnn_ibc, fixed issues --- .../{if_ibc_tests.cpp => svnn_ibc_tests.cpp} | 19 ++-- unittests/test-contracts/CMakeLists.txt | 2 +- .../{if_ibc => svnn_ibc}/CMakeLists.txt | 2 +- .../{if_ibc => svnn_ibc}/bitset.hpp | 12 +-- .../if_ibc.abi => svnn_ibc/svnn_ibc.abi} | 0 .../if_ibc.cpp => svnn_ibc/svnn_ibc.cpp} | 85 +++++------------- .../if_ibc.hpp => svnn_ibc/svnn_ibc.hpp} | 83 +---------------- .../if_ibc.wasm => svnn_ibc/svnn_ibc.wasm} | Bin unittests/test_contracts.hpp.in | 2 +- 9 files changed, 36 insertions(+), 169 deletions(-) rename unittests/{if_ibc_tests.cpp => svnn_ibc_tests.cpp} (93%) rename unittests/test-contracts/{if_ibc => svnn_ibc}/CMakeLists.txt (92%) rename unittests/test-contracts/{if_ibc => svnn_ibc}/bitset.hpp (75%) rename unittests/test-contracts/{if_ibc/if_ibc.abi => svnn_ibc/svnn_ibc.abi} (100%) rename unittests/test-contracts/{if_ibc/if_ibc.cpp => svnn_ibc/svnn_ibc.cpp} (80%) rename unittests/test-contracts/{if_ibc/if_ibc.hpp => svnn_ibc/svnn_ibc.hpp} (92%) rename unittests/test-contracts/{if_ibc/if_ibc.wasm => svnn_ibc/svnn_ibc.wasm} (100%) diff --git a/unittests/if_ibc_tests.cpp b/unittests/svnn_ibc_tests.cpp similarity index 93% rename from unittests/if_ibc_tests.cpp rename to unittests/svnn_ibc_tests.cpp index e795941909..f1d1fe998a 100644 --- a/unittests/if_ibc_tests.cpp +++ b/unittests/svnn_ibc_tests.cpp @@ -1,4 +1,3 @@ -// From fork tests #include #include #include @@ -17,12 +16,11 @@ using namespace eosio::chain; using namespace eosio::testing; -// From params_test #include using mvo = mutable_variant_object; -BOOST_AUTO_TEST_SUITE(if_ibc) +BOOST_AUTO_TEST_SUITE(svnn_ibc) // Extending the default chain tester // ( libraries/testing/include/eosio/testing/tester.hpp ) @@ -32,14 +30,13 @@ class ibc_tester : public tester { // This is mostly for creating accounts and loading contracts. void setup(){ - // load bridge contract create_account( _bridge ); - set_code( _bridge, eosio::testing::test_contracts::if_ibc_wasm()); - set_abi( _bridge, eosio::testing::test_contracts::if_ibc_abi()); - + set_code( _bridge, eosio::testing::test_contracts::svnn_ibc_wasm()); + set_abi( _bridge, eosio::testing::test_contracts::svnn_ibc_abi()); } + //set a finalizer policy void set_policy(){ auto cr = push_action( _bridge, "setfpolicy"_n, _bridge, mutable_variant_object() ("from_block_num", 1) @@ -69,12 +66,11 @@ class ibc_tester : public tester { ("public_key", "08c9bd408bac02747e493d918e4b3e6bd1a2ffaf9bfca4f2e79dd22e12556bf46e911f25613c24d9f6403996c5246c19ef94aff48094868425eda1e46bcd059c59f3b060521be797f5cc2e6debe2180efa12c0814618a38836a64c3d7440740f") })) ) - ); } + //verify a proof void check_proof(){ - auto cr = push_action( _bridge, "checkproof"_n, _bridge, mutable_variant_object() ("proof", mutable_variant_object() ("finality_proof", mutable_variant_object() @@ -120,14 +116,10 @@ class ibc_tester : public tester { ("direction", 1) ("hash", "401526ba03ec4a955c83cda131dacd3e89becaad2cf04107170e436dd90a553f") })) - ) ) - ); - } - }; BOOST_AUTO_TEST_CASE( first_test ) try { @@ -137,7 +129,6 @@ BOOST_AUTO_TEST_CASE( first_test ) try { chain_a.setup(); chain_a.set_policy(); - chain_a.check_proof(); } FC_LOG_AND_RETHROW() diff --git a/unittests/test-contracts/CMakeLists.txt b/unittests/test-contracts/CMakeLists.txt index 1296344f30..accc16bf7b 100644 --- a/unittests/test-contracts/CMakeLists.txt +++ b/unittests/test-contracts/CMakeLists.txt @@ -45,4 +45,4 @@ add_subdirectory( crypto_primitives_test ) add_subdirectory( bls_primitives_test ) add_subdirectory( get_block_num_test ) add_subdirectory( nested_container_multi_index ) -add_subdirectory( if_ibc ) +add_subdirectory( svnn_ibc ) diff --git a/unittests/test-contracts/if_ibc/CMakeLists.txt b/unittests/test-contracts/svnn_ibc/CMakeLists.txt similarity index 92% rename from unittests/test-contracts/if_ibc/CMakeLists.txt rename to unittests/test-contracts/svnn_ibc/CMakeLists.txt index 427c77aa9f..31dfbd568d 100644 --- a/unittests/test-contracts/if_ibc/CMakeLists.txt +++ b/unittests/test-contracts/svnn_ibc/CMakeLists.txt @@ -1,4 +1,4 @@ -set( IBC_CONTRACT "if_ibc" ) +set( IBC_CONTRACT "svnn_ibc" ) if( EOSIO_COMPILE_TEST_CONTRACTS ) add_contract( ${IBC_CONTRACT} ${IBC_CONTRACT} ${IBC_CONTRACT}.cpp ) diff --git a/unittests/test-contracts/if_ibc/bitset.hpp b/unittests/test-contracts/svnn_ibc/bitset.hpp similarity index 75% rename from unittests/test-contracts/if_ibc/bitset.hpp rename to unittests/test-contracts/svnn_ibc/bitset.hpp index e91cf55a50..ba237ab76b 100644 --- a/unittests/test-contracts/if_ibc/bitset.hpp +++ b/unittests/test-contracts/svnn_ibc/bitset.hpp @@ -3,14 +3,10 @@ using namespace eosio; class bitset { public: bitset(size_t size) - : num_bits(size), data(new uint64_t[(size + 63) / 64]()) {} + : num_bits(size), data((size + 63) / 64) {} - bitset(size_t size, uint64_t* _data) - : num_bits(size), data(_data) {} - - ~bitset() { - delete[] data; - } + bitset(size_t size, const std::vector& raw_bitset) + : num_bits(size), data(raw_bitset) {} // Set a bit to 1 void set(size_t index) { @@ -37,7 +33,7 @@ class bitset { private: size_t num_bits; - uint64_t* data; + std::vector data; // Check if the index is within bounds void check_bounds(size_t index) const { diff --git a/unittests/test-contracts/if_ibc/if_ibc.abi b/unittests/test-contracts/svnn_ibc/svnn_ibc.abi similarity index 100% rename from unittests/test-contracts/if_ibc/if_ibc.abi rename to unittests/test-contracts/svnn_ibc/svnn_ibc.abi diff --git a/unittests/test-contracts/if_ibc/if_ibc.cpp b/unittests/test-contracts/svnn_ibc/svnn_ibc.cpp similarity index 80% rename from unittests/test-contracts/if_ibc/if_ibc.cpp rename to unittests/test-contracts/svnn_ibc/svnn_ibc.cpp index ae54aaee71..a5ec47f869 100644 --- a/unittests/test-contracts/if_ibc/if_ibc.cpp +++ b/unittests/test-contracts/svnn_ibc/svnn_ibc.cpp @@ -1,8 +1,7 @@ -#include "if_ibc.hpp" - +#include "svnn_ibc.hpp" //add two numbers from the g1 group (aggregation) -std::vector if_ibc::_g1add(const std::vector& op1, const std::vector& op2) { +std::vector svnn_ibc::_g1add(const std::vector& op1, const std::vector& op2) { check(op1.size() == std::tuple_size::value, "wrong op1 size passed"); check(op2.size() == std::tuple_size::value, "wrong op2 size passed"); bls_g1 r; @@ -11,12 +10,9 @@ std::vector if_ibc::_g1add(const std::vector& op1, const std::vector return v; } -void if_ibc::_maybe_set_finalizer_policy(const fpolicy& policy, const uint32_t from_block_num){ - +void svnn_ibc::_maybe_set_finalizer_policy(const fpolicy& policy, const uint32_t from_block_num){ policies_table _policies_table(get_self(), get_self().value); - auto itr = _policies_table.rbegin(); - //if the new policy is more recent than the most recent we are aware of, we record the new one if (itr==_policies_table.rend() || itr->generation < policy.generation){ @@ -28,66 +24,50 @@ void if_ibc::_maybe_set_finalizer_policy(const fpolicy& policy, const uint32_t f sfp.last_block_num = from_block_num; }); } - - if_ibc::storedpolicy spolicy; - + svnn_ibc::storedpolicy spolicy; spolicy.generation = policy.generation; spolicy.fthreshold = policy.fthreshold; spolicy.finalizers = policy.finalizers; - + //policy is in force until a newer policy is proven spolicy.last_block_num = std::numeric_limits::max(); - //set cache expiry spolicy.cache_expiry = add_time(current_time_point(), POLICY_CACHE_EXPIRY); - _policies_table.emplace( get_self(), [&]( auto& p ) { p = spolicy; }); - - } - } //adds the newly proven root if necessary -void if_ibc::_maybe_add_proven_root(const uint32_t block_num, const checksum256& finality_mroot){ - +void svnn_ibc::_maybe_add_proven_root(const uint32_t block_num, const checksum256& finality_mroot){ proofs_table _proofs_table(get_self(), get_self().value); - auto block_num_index = _proofs_table.get_index<"blocknum"_n>(); auto merkle_index = _proofs_table.get_index<"merkleroot"_n>(); - auto last_itr = block_num_index.rbegin(); //if first proven root or newer than the last proven root, we store it if (last_itr == block_num_index.rend() || last_itr->block_num& pk, const std::vector& sig, std::vector& msg){ +//verify that a signature over a given message has been generated with the private key matching the public key +void svnn_ibc::_verify(const std::vector& pk, const std::vector& sig, std::vector& msg){ check(pk.size() == std::tuple_size::value, "wrong pk size passed"); check(sig.size() == std::tuple_size::value, "wrong sig size passed"); bls_g1 g1_points[2]; @@ -106,7 +86,8 @@ void if_ibc::_verify(const std::vector& pk, const std::vector& sig, check(0 == memcmp(r.data(), eosio::detail::GT_ONE.data(), sizeof(bls_gt)), "bls signature verify failed"); } -void if_ibc::_check_qc(const quorum_certificate& qc, const checksum256& finality_digest, const uint64_t finalizer_policy_generation){ +//verify that the quorum certificate over the finality digest is valid +void svnn_ibc::_check_qc(const quorum_certificate& qc, const checksum256& finality_digest, const uint64_t finalizer_policy_generation){ policies_table _policies_table(get_self(), get_self().value); check(_policies_table.begin() != _policies_table.end(), "must set a finalizer policy before checking proofs"); @@ -119,7 +100,7 @@ void if_ibc::_check_qc(const quorum_certificate& qc, const checksum256& finality auto fa_end_itr = target_policy.finalizers.end(); size_t finalizer_count = std::distance(fa_itr, fa_end_itr); std::vector bitset_data(qc.finalizers); - bitset b(finalizer_count, bitset_data.data()); + bitset b(finalizer_count, bitset_data); bool first = true; @@ -144,48 +125,35 @@ void if_ibc::_check_qc(const quorum_certificate& qc, const checksum256& finality //verify that we have enough vote weight to meet the quorum threshold of the target policy check(weight>=target_policy.fthreshold, "insufficient signatures to reach quorum"); - std::array data = finality_digest.extract_as_byte_array(); std::vector v_data(data.begin(), data.end()); - //verify signature validity _verify(agg_pub_key, qc.signature, v_data); - - } -void if_ibc::_check_target_block_proof_of_inclusion(const proof_of_inclusion& proof, const std::optional reference_root){ +void svnn_ibc::_check_target_block_proof_of_inclusion(const proof_of_inclusion& proof, const std::optional reference_root){ //verify that the proof of inclusion is over a target block - check(std::holds_alternative(proof.target), "must supply proof of inclusion over block data"); + check(std::holds_alternative(proof.target), "must supply proof of inclusion over block data"); //resolve the proof to its merkle root checksum256 finality_mroot = proof.root(); - if (reference_root.has_value()){ check(reference_root.value() == finality_mroot, "cannot link proof to proven merkle root"); } else { - proofs_table _proofs_table(get_self(), get_self().value); - auto merkle_index = _proofs_table.get_index<"merkleroot"_n>(); - auto itr = merkle_index.find(finality_mroot); check(itr!= merkle_index.end(), "cannot link proof to proven merkle root"); - } - - block_data target_block = std::get(proof.target); - + block_data target_block = std::get(proof.target); if (target_block.finality_data.active_finalizer_policy.has_value()){ _maybe_set_finalizer_policy(target_block.finality_data.active_finalizer_policy.value(), target_block.dynamic_data.block_num); } - } -void if_ibc::_check_finality_proof(const finality_proof& finality_proof, const proof_of_inclusion& target_block_proof_of_inclusion){ - +void svnn_ibc::_check_finality_proof(const finality_proof& finality_proof, const proof_of_inclusion& target_block_proof_of_inclusion){ //temporarilly disabled : skip qc verification //if QC is valid, it means that we have reaced finality on the block referenced by the finality_mroot //_check_qc(finality_proof.qc, finality_proof.qc_block.finality_digest(), finality_proof.qc_block.finalizer_policy_generation); @@ -194,14 +162,13 @@ void if_ibc::_check_finality_proof(const finality_proof& finality_proof, const p _check_target_block_proof_of_inclusion(target_block_proof_of_inclusion, finality_proof.qc_block.finality_mroot); //if proof of inclusion was successful, the target block and its dynamic data have been validated as final and correct - block_data target_block = std::get(target_block_proof_of_inclusion.target); + block_data target_block = std::get(target_block_proof_of_inclusion.target); //if the finality_mroot we just proven is more recent than the last root we have stored, store it _maybe_add_proven_root(target_block.dynamic_data.block_num, finality_proof.qc_block.finality_mroot); - } -ACTION if_ibc::setfpolicy(const fpolicy& policy, const uint32_t from_block_num){ +ACTION svnn_ibc::setfpolicy(const fpolicy& policy, const uint32_t from_block_num){ //can only be called with account authority require_auth(get_self()); @@ -212,10 +179,9 @@ ACTION if_ibc::setfpolicy(const fpolicy& policy, const uint32_t from_block_num){ check(_policies_table.begin() == _policies_table.end(), "can only set finalizer policy manually for initialization"); _maybe_set_finalizer_policy(policy, from_block_num); - } -ACTION if_ibc::checkproof(const proof& proof){ +ACTION svnn_ibc::checkproof(const proof& proof){ //if we have a finality proof, we execute the "heavy" code path if (proof.finality_proof.has_value()){ @@ -225,28 +191,19 @@ ACTION if_ibc::checkproof(const proof& proof){ //if we only have a proof of inclusion of the target block, we execute the "light" code path _check_target_block_proof_of_inclusion(proof.target_block_proof_of_inclusion, std::nullopt); } - } //temporary : reset the state -ACTION if_ibc::clear(){ - +ACTION svnn_ibc::clear(){ require_auth(get_self()); - proofs_table _proofs_table(get_self(), get_self().value); policies_table _policies_table(get_self(), get_self().value); - auto fp_itr = _proofs_table.begin(); - while (fp_itr!= _proofs_table.end()){ fp_itr = _proofs_table.erase(fp_itr); } - auto p_itr = _policies_table.begin(); - while (p_itr!= _policies_table.end()){ p_itr = _policies_table.erase(p_itr); } - - } \ No newline at end of file diff --git a/unittests/test-contracts/if_ibc/if_ibc.hpp b/unittests/test-contracts/svnn_ibc/svnn_ibc.hpp similarity index 92% rename from unittests/test-contracts/if_ibc/if_ibc.hpp rename to unittests/test-contracts/svnn_ibc/svnn_ibc.hpp index 2c70cf5c15..f7e394ee6a 100644 --- a/unittests/test-contracts/if_ibc/if_ibc.hpp +++ b/unittests/test-contracts/svnn_ibc/svnn_ibc.hpp @@ -11,7 +11,7 @@ using namespace eosio; -CONTRACT if_ibc : public contract { +CONTRACT svnn_ibc : public contract { public: using contract::contract; @@ -21,27 +21,9 @@ CONTRACT if_ibc : public contract { const uint32_t POLICY_CACHE_EXPIRY = 600; //10 minutes for testing const uint32_t PROOF_CACHE_EXPIRY = 600; //10 minutes for testing - //Compute the next power of 2 for a given number - static uint64_t next_power_of_2(uint64_t value) { - value -= 1; - value |= value >> 1; - value |= value >> 2; - value |= value >> 4; - value |= value >> 8; - value |= value >> 16; - value |= value >> 32; - value += 1; return value; - } - - static uint64_t clz_power_of_2(uint64_t v) { - return 64 - (__builtin_clzll(v)+1); - } - - //Compute the maximum number of layers of a merkle tree for a given number of leaves static uint64_t calculate_max_depth(uint64_t node_count) { if (node_count == 0) return 0; - auto implied_count = next_power_of_2(node_count); - return clz_power_of_2(implied_count) + 1; + return std::llround(std::log2(node_count)) + 2; } static uint32_t reverse_bytes(const uint32_t input){ @@ -80,53 +62,39 @@ CONTRACT if_ibc : public contract { for (uint64_t i = 0; i < layers_depth; i++) { if (c_last_node_index % 2) c_last_node_index+=1; - bool isLeft = c_index % 2 == 0 ? 0 : 1; uint64_t pairIndex = isLeft ? c_index - 1 : c_index == last_node_index - 1 && i < layers_depth - 1 ? c_index : c_index + 1; - c_last_node_index/=2; if (pairIndex < last_node_index) proof.push_back(isLeft); - c_index = c_index / 2; - } - return proof; - } */ struct merkle_branch { - uint8_t direction; checksum256 hash; - }; //compute the merkle root of target node and vector of merkle branches static checksum256 _compute_root(const std::vector proof_nodes, const checksum256& target){ - checksum256 hash = target; - for (int i = 0 ; i < proof_nodes.size() ; i++){ const checksum256 node = proof_nodes[i].hash; std::array arr = node.extract_as_byte_array(); - if (proof_nodes[i].direction == 0){ hash = hash_pair(std::make_pair(hash, node)); } else { hash = hash_pair(std::make_pair(node, hash)); } - } - return hash; - } struct quorum_certificate { @@ -204,42 +172,28 @@ CONTRACT if_ibc : public contract { std::vector returnvalue; checksum256 digest() const { - checksum256 hashes[2]; - const r_action_base* base = this; - const auto action_input_size = pack_size(data); const auto return_value_size = pack_size(returnvalue); - const auto rhs_size = action_input_size + return_value_size; - const auto serialized_base = pack(*base); const auto serialized_data = pack(data); const auto serialized_output = pack(returnvalue); - hashes[0] = sha256(serialized_base.data(), serialized_base.size()); - std::vector data_digest(action_input_size); std::vector output_digest(return_value_size); - std::vector h1_result(rhs_size); std::copy (serialized_data.cbegin(), serialized_data.cend(), h1_result.begin()); std::copy (serialized_output.cbegin(), serialized_output.cend(), h1_result.begin() + action_input_size); - hashes[1] = sha256(reinterpret_cast(h1_result.data()), rhs_size); - std::array arr1 = hashes[0].extract_as_byte_array(); std::array arr2 = hashes[1].extract_as_byte_array(); - std::array result; std::copy (arr1.cbegin(), arr1.cend(), result.begin()); std::copy (arr2.cbegin(), arr2.cend(), result.begin() + 32); - checksum256 final_hash = sha256(reinterpret_cast(result.data()), 64); - return final_hash; - } EOSLIB_SERIALIZE( r_action, (account)(name)(authorization)(data)(returnvalue)) @@ -279,25 +233,17 @@ CONTRACT if_ibc : public contract { std::optional action_mroot; checksum256 get_action_mroot() const { - if (action_mroot.has_value()) return action_mroot.value(); else { - check(action_proofs.size()>0, "must have at least one action proof"); - checksum256 root = checksum256(); - for (auto ap : action_proofs){ if (root == checksum256()) root = ap.root(); else check(ap.root() == root, "all action proofs must resolve to the same merkle root"); } - return root; - } - }; - }; struct block_finality_data { @@ -326,7 +272,6 @@ CONTRACT if_ibc : public contract { std::vector serialized_policy = pack(active_finalizer_policy.value()); checksum256 policy_digest = sha256(serialized_policy.data(), serialized_policy.size()); checksum256 base_fpolicy_digest = hash_pair( std::make_pair( policy_digest, witness_hash) ); - return base_fpolicy_digest; } else { @@ -336,23 +281,16 @@ CONTRACT if_ibc : public contract { //returns hash of major_version + minor_version + finalizer_policy_generation + resolve_witness() + finality_mroot checksum256 finality_digest() const { - std::array result; - memcpy(&result[0], (uint8_t *)&major_version, 4); memcpy(&result[4], (uint8_t *)&minor_version, 4); memcpy(&result[8], (uint8_t *)&finalizer_policy_generation, 4); - std::array arr1 = finality_mroot.extract_as_byte_array(); std::array arr2 = resolve_witness().extract_as_byte_array(); - std::copy (arr1.cbegin(), arr1.cend(), result.begin() + 12); std::copy (arr2.cbegin(), arr2.cend(), result.begin() + 44); - checksum256 hash = sha256(reinterpret_cast(result.data()), 76); - return hash; - }; }; @@ -367,29 +305,19 @@ CONTRACT if_ibc : public contract { //returns hash of finality_digest() and dynamic_data_digest() checksum256 digest() const { - checksum256 finality_digest = finality_data.finality_digest(); - checksum256 action_mroot = dynamic_data.get_action_mroot(); - std::array result; - memcpy(&result[0], (uint8_t *)&finality_data.major_version, 4); memcpy(&result[4], (uint8_t *)&finality_data.minor_version, 4); memcpy(&result[8], (uint8_t *)&dynamic_data.block_num, 4); - std::array arr1 = finality_digest.extract_as_byte_array(); std::array arr2 = action_mroot.extract_as_byte_array(); - std::copy (arr1.cbegin(), arr1.cend(), result.begin() + 12); std::copy (arr2.cbegin(), arr2.cend(), result.begin() + 44); - - auto hash = sha256(reinterpret_cast(result.data()), 76); - + checksum256 hash = sha256(reinterpret_cast(result.data()), 76); return hash; - }; - }; struct action_data { @@ -426,15 +354,10 @@ CONTRACT if_ibc : public contract { //returns the merkle root obtained by hashing target.digest() with merkle_branches checksum256 root() const { - auto call_digest = [](const auto& var) -> checksum256 { return var.digest(); }; - checksum256 digest = std::visit(call_digest, target); - checksum256 root = _compute_root(merkle_branches, digest); - return root; - }; }; diff --git a/unittests/test-contracts/if_ibc/if_ibc.wasm b/unittests/test-contracts/svnn_ibc/svnn_ibc.wasm similarity index 100% rename from unittests/test-contracts/if_ibc/if_ibc.wasm rename to unittests/test-contracts/svnn_ibc/svnn_ibc.wasm diff --git a/unittests/test_contracts.hpp.in b/unittests/test_contracts.hpp.in index eb9279ff7a..ae110b75ca 100644 --- a/unittests/test_contracts.hpp.in +++ b/unittests/test_contracts.hpp.in @@ -50,7 +50,7 @@ namespace eosio { MAKE_READ_WASM_ABI(bls_primitives_test, bls_primitives_test, test-contracts) MAKE_READ_WASM_ABI(get_block_num_test, get_block_num_test, test-contracts) MAKE_READ_WASM_ABI(nested_container_multi_index, nested_container_multi_index, test-contracts) - MAKE_READ_WASM_ABI(if_ibc, if_ibc, test-contracts) + MAKE_READ_WASM_ABI(svnn_ibc, svnn_ibc, test-contracts) }; } /// eosio::testing From 98c08c3b58eabb81f2358aab5c479c0b0682c214 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Mon, 18 Mar 2024 10:16:24 -0500 Subject: [PATCH 18/22] Fix merge issue --- plugins/net_plugin/net_plugin.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/net_plugin/net_plugin.cpp b/plugins/net_plugin/net_plugin.cpp index 747363528f..299d46e10a 100644 --- a/plugins/net_plugin/net_plugin.cpp +++ b/plugins/net_plugin/net_plugin.cpp @@ -4005,8 +4005,8 @@ namespace eosio { ("t", exclude_peer ? "received" : "our")("bn", block_header::num_from_id(msg.block_id))("id", msg.block_id.str().substr(8,16)) ("v", msg.strong ? "strong" : "weak")("k", msg.finalizer_key.to_string().substr(8,16))); - dispatcher->strand.post( [this, exclude_peer, msg{std::move(send_buffer)}]() mutable { - dispatcher->bcast_vote_msg( exclude_peer, std::move(msg) ); + dispatcher.strand.post( [this, exclude_peer, msg{std::move(send_buffer)}]() mutable { + dispatcher.bcast_vote_msg( exclude_peer, std::move(msg) ); }); } From beed4266f82c223816de6b27d3f39953942a847f Mon Sep 17 00:00:00 2001 From: Eric Passmore Date: Tue, 19 Mar 2024 09:42:18 -0700 Subject: [PATCH 19/22] update savanna protocol activation --- tutorials/bios-boot-tutorial/bios-boot-tutorial.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/bios-boot-tutorial/bios-boot-tutorial.py b/tutorials/bios-boot-tutorial/bios-boot-tutorial.py index 7bcb9a3f4b..8822546307 100755 --- a/tutorials/bios-boot-tutorial/bios-boot-tutorial.py +++ b/tutorials/bios-boot-tutorial/bios-boot-tutorial.py @@ -357,7 +357,8 @@ def stepSetSystemContract(): # THIS DEPENDS ON DISABLE_DEFERRED_TRXS_STAGE_1 retry(args.cleos + 'push action eosio activate \'["09e86cb0accf8d81c9e85d34bea4b925ae936626d00c984e4691186891f5bc16"]\' -p eosio@active') # INSTANT_FINALITY - retry(args.cleos + 'push action eosio activate \'["8cb6dd1e5607208331eb5983141e159c75a597413887e80e8a9a4b715a507eb7"]\' -p eosio@active') + # Depends on WTMSIG_BLOCK_SIGNATURES , BLS_PRIMITIVES2 , DISALLOW_EMPTY_PRODUCER_SCHEDULE , ACTION_RETURN_VALUE + retry(args.cleos + 'push action eosio activate \'["18b790108f5e277cf7141dc626a98f7edeb776912278e4cd14a50b763d1d6390"]\' -p eosio@active') sleep(1) # install eosio.system latest version From d53d4313d553ac6ea5c64bbbe4c0508bfd728281 Mon Sep 17 00:00:00 2001 From: Kevin Heifner Date: Tue, 19 Mar 2024 13:47:15 -0500 Subject: [PATCH 20/22] Delay on error to give time for node to launch --- tests/p2p_sync_throttle_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/p2p_sync_throttle_test.py b/tests/p2p_sync_throttle_test.py index 2968e48014..40b312e3ad 100755 --- a/tests/p2p_sync_throttle_test.py +++ b/tests/p2p_sync_throttle_test.py @@ -136,6 +136,7 @@ def extractPrometheusMetric(connID: str, metric: str, text: str): if len(response) < 100: # tolerate HTTPError as well (method returns only the exception code) errorLimit -= 1 + time.sleep(0.5) continue connPorts = prometheusHostPortPattern.findall(response) Print(connPorts) @@ -180,6 +181,7 @@ def extractPrometheusMetric(connID: str, metric: str, text: str): if len(connPorts) < 2: # wait for sending node to be connected errorLimit -= 1 + time.sleep(0.5) continue Print('Throttled Node Start State') throttledNodePortMap = {port: id for id, port in connPorts if port != '0'} From d19c3f09a2d2ce269e2be4f46e0cf411fa8282e8 Mon Sep 17 00:00:00 2001 From: Guillaume Babin-Tremblay Date: Wed, 20 Mar 2024 12:22:06 +0000 Subject: [PATCH 21/22] Added cleaner log base 2 function + integrity check in bitset constructor --- unittests/test-contracts/svnn_ibc/bitset.hpp | 7 ++++++- unittests/test-contracts/svnn_ibc/svnn_ibc.hpp | 10 ++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/unittests/test-contracts/svnn_ibc/bitset.hpp b/unittests/test-contracts/svnn_ibc/bitset.hpp index ba237ab76b..eea00387b2 100644 --- a/unittests/test-contracts/svnn_ibc/bitset.hpp +++ b/unittests/test-contracts/svnn_ibc/bitset.hpp @@ -1,3 +1,5 @@ +#include + using namespace eosio; class bitset { @@ -6,7 +8,10 @@ class bitset { : num_bits(size), data((size + 63) / 64) {} bitset(size_t size, const std::vector& raw_bitset) - : num_bits(size), data(raw_bitset) {} + : num_bits(size), data(raw_bitset) { + check(raw_bitset.size() == (size + 63) / 64, "invalid raw bitset size"); + + } // Set a bit to 1 void set(size_t index) { diff --git a/unittests/test-contracts/svnn_ibc/svnn_ibc.hpp b/unittests/test-contracts/svnn_ibc/svnn_ibc.hpp index f7e394ee6a..6ac6d8597b 100644 --- a/unittests/test-contracts/svnn_ibc/svnn_ibc.hpp +++ b/unittests/test-contracts/svnn_ibc/svnn_ibc.hpp @@ -21,11 +21,13 @@ CONTRACT svnn_ibc : public contract { const uint32_t POLICY_CACHE_EXPIRY = 600; //10 minutes for testing const uint32_t PROOF_CACHE_EXPIRY = 600; //10 minutes for testing - static uint64_t calculate_max_depth(uint64_t node_count) { - if (node_count == 0) return 0; - return std::llround(std::log2(node_count)) + 2; + //Compute the maximum number of layers of a merkle tree for a given number of leaves + uint64_t calculate_max_depth(uint64_t node_count) { + if(node_count <= 1) + return node_count; + return 64 - __builtin_clzll(2 << (64 - 1 - __builtin_clzll ((node_count - 1)))); } - + static uint32_t reverse_bytes(const uint32_t input){ uint32_t output = (input>>24 & 0xff)|(input>>8 & 0xff00)|(input<<8 & 0xff0000)|(input<<24 & 0xff000000); return output; From 5804b24a23cf447e8fe012ee04f6fc83d209a7bc Mon Sep 17 00:00:00 2001 From: Guillaume Babin-Tremblay Date: Wed, 20 Mar 2024 12:22:34 +0000 Subject: [PATCH 22/22] Added cleaner log base 2 function + integrity check in bitset constructor --- unittests/test-contracts/svnn_ibc/bitset.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/unittests/test-contracts/svnn_ibc/bitset.hpp b/unittests/test-contracts/svnn_ibc/bitset.hpp index eea00387b2..711e089fad 100644 --- a/unittests/test-contracts/svnn_ibc/bitset.hpp +++ b/unittests/test-contracts/svnn_ibc/bitset.hpp @@ -1,5 +1,3 @@ -#include - using namespace eosio; class bitset {